summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-02-22 18:23:26 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-02-22 18:23:26 +0000
commitae364d9bed0589bf1a22cd5f530c563462379e3e (patch)
treee32727e2664e7ce68d0d30270afa040320ae35a1
downloadtderadio-ae364d9b.tar.gz
tderadio-ae364d9b.zip
Added old KDE3 version of kradio
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/kradio@1094417 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
-rw-r--r--Makefile.am22
-rw-r--r--Makefile.am.in21
-rw-r--r--Makefile.cvs25
-rw-r--r--Makefile.i18n25
-rw-r--r--aclocal.m4985
-rw-r--r--config.h.in441
-rw-r--r--configure.files3
-rw-r--r--configure.in434
-rw-r--r--configure.in.in27
-rw-r--r--kradio3/AUTHORS4
-rw-r--r--kradio3/COPYING280
-rw-r--r--kradio3/ChangeLog536
-rw-r--r--kradio3/INSTALL180
-rw-r--r--kradio3/Mainpage.dox6
-rw-r--r--kradio3/Makefile.am7
-rw-r--r--kradio3/README72
-rw-r--r--kradio3/REQUIREMENTS8
-rw-r--r--kradio3/TODO84
-rw-r--r--kradio3/TODO.kdetestscripts95
-rw-r--r--kradio3/configure.in.in210
-rw-r--r--kradio3/convert-presets/Makefile.am31
-rw-r--r--kradio3/convert-presets/convert-presets.cpp192
-rw-r--r--kradio3/convert-presets/po/Makefile654
-rw-r--r--kradio3/convert-presets/po/Makefile.am2
-rw-r--r--kradio3/convert-presets/po/de.po539
-rw-r--r--kradio3/dot-lircrc.example221
-rw-r--r--kradio3/icons/Makefile.am2
-rw-r--r--kradio3/icons/hi16-action-kradio_muteoff.pngbin0 -> 947 bytes
-rw-r--r--kradio3/icons/hi16-action-kradio_muteon.pngbin0 -> 1003 bytes
-rw-r--r--kradio3/icons/hi16-action-kradio_plugins.pngbin0 -> 923 bytes
-rw-r--r--kradio3/icons/hi16-app-kradio.pngbin0 -> 947 bytes
-rw-r--r--kradio3/icons/hi22-action-kradio_hide.pngbin0 -> 218 bytes
-rw-r--r--kradio3/icons/hi22-action-kradio_muteoff.pngbin0 -> 1373 bytes
-rw-r--r--kradio3/icons/hi22-action-kradio_muteon.pngbin0 -> 1318 bytes
-rw-r--r--kradio3/icons/hi22-action-kradio_plugins.pngbin0 -> 1151 bytes
-rw-r--r--kradio3/icons/hi22-action-kradio_show.pngbin0 -> 207 bytes
-rw-r--r--kradio3/icons/hi22-app-kradio.pngbin0 -> 1450 bytes
-rw-r--r--kradio3/icons/hi24-app-kradio.pngbin0 -> 1662 bytes
-rw-r--r--kradio3/icons/hi32-action-kradio_plugins.pngbin0 -> 1770 bytes
-rw-r--r--kradio3/icons/hi32-app-kradio.pngbin0 -> 2556 bytes
-rw-r--r--kradio3/icons/hi48-action-kradio_plugins.pngbin0 -> 2850 bytes
-rw-r--r--kradio3/icons/hi48-app-kradio.pngbin0 -> 4693 bytes
-rw-r--r--kradio3/icons/hi64-app-kradio.pngbin0 -> 6914 bytes
-rw-r--r--kradio3/icons/lo16-app-kradio.pngbin0 -> 947 bytes
-rw-r--r--kradio3/icons/lo22-app-kradio.pngbin0 -> 1450 bytes
-rw-r--r--kradio3/icons/lo24-app-kradio.pngbin0 -> 1662 bytes
-rw-r--r--kradio3/icons/lo32-app-kradio.pngbin0 -> 2556 bytes
-rw-r--r--kradio3/icons/lo48-app-kradio.pngbin0 -> 4693 bytes
-rw-r--r--kradio3/icons/lo64-app-kradio.pngbin0 -> 6914 bytes
-rw-r--r--kradio3/kradio-mandrake.spec67
-rw-r--r--kradio3/kradio-suse.spec67
-rw-r--r--kradio3/kradio.lsm14
-rw-r--r--kradio3/kradio.spec67
-rw-r--r--kradio3/plugins/Makefile.am4
-rw-r--r--kradio3/plugins/alsa-sound/Makefile.am20
-rw-r--r--kradio3/plugins/alsa-sound/alsa-config-mixer-setting.cpp67
-rw-r--r--kradio3/plugins/alsa-sound/alsa-config-mixer-setting.h45
-rw-r--r--kradio3/plugins/alsa-sound/alsa-mixer-element-ui.ui270
-rw-r--r--kradio3/plugins/alsa-sound/alsa-mixer-element.cpp139
-rw-r--r--kradio3/plugins/alsa-sound/alsa-mixer-element.h62
-rw-r--r--kradio3/plugins/alsa-sound/alsa-sound-configuration-ui.ui323
-rw-r--r--kradio3/plugins/alsa-sound/alsa-sound-configuration.cpp353
-rw-r--r--kradio3/plugins/alsa-sound/alsa-sound-configuration.h83
-rw-r--r--kradio3/plugins/alsa-sound/alsa-sound.cpp1562
-rw-r--r--kradio3/plugins/alsa-sound/alsa-sound.h296
-rw-r--r--kradio3/plugins/alsa-sound/icons/Makefile.am2
-rw-r--r--kradio3/plugins/alsa-sound/icons/hi16-action-kradio_alsa.pngbin0 -> 391 bytes
-rw-r--r--kradio3/plugins/alsa-sound/icons/hi16-action-kradio_alsa2.pngbin0 -> 602 bytes
-rw-r--r--kradio3/plugins/alsa-sound/icons/hi22-action-kradio_alsa.pngbin0 -> 463 bytes
-rw-r--r--kradio3/plugins/alsa-sound/icons/hi22-action-kradio_alsa2.pngbin0 -> 917 bytes
-rw-r--r--kradio3/plugins/alsa-sound/icons/hi32-action-kradio_alsa.pngbin0 -> 606 bytes
-rw-r--r--kradio3/plugins/alsa-sound/icons/hi32-action-kradio_alsa2.pngbin0 -> 1362 bytes
-rw-r--r--kradio3/plugins/alsa-sound/icons/hi48-action-kradio_alsa.pngbin0 -> 904 bytes
-rw-r--r--kradio3/plugins/alsa-sound/icons/hi48-action-kradio_alsa2.pngbin0 -> 1979 bytes
-rw-r--r--kradio3/plugins/alsa-sound/icons/hi64-action-kradio_alsa.pngbin0 -> 1279 bytes
-rw-r--r--kradio3/plugins/alsa-sound/icons/hi64-action-kradio_alsa2.pngbin0 -> 2631 bytes
-rw-r--r--kradio3/plugins/alsa-sound/icons/kradio_alsa.pngbin0 -> 3321 bytes
-rw-r--r--kradio3/plugins/alsa-sound/icons/kradio_alsa2.pngbin0 -> 2388 bytes
-rw-r--r--kradio3/plugins/alsa-sound/po/Makefile.am3
-rw-r--r--kradio3/plugins/alsa-sound/po/de.po289
-rw-r--r--kradio3/plugins/alsa-sound/po/ru.po288
-rw-r--r--kradio3/plugins/gui-docking-menu/Makefile.am18
-rw-r--r--kradio3/plugins/gui-docking-menu/docking-configuration.cpp114
-rw-r--r--kradio3/plugins/gui-docking-menu/docking-configuration.h54
-rw-r--r--kradio3/plugins/gui-docking-menu/docking.cpp674
-rw-r--r--kradio3/plugins/gui-docking-menu/docking.h189
-rw-r--r--kradio3/plugins/gui-docking-menu/po/Makefile.am2
-rw-r--r--kradio3/plugins/gui-docking-menu/po/de.po117
-rw-r--r--kradio3/plugins/gui-docking-menu/po/ru.po117
-rw-r--r--kradio3/plugins/gui-error-log/Makefile.am17
-rw-r--r--kradio3/plugins/gui-error-log/errorlog.cpp263
-rw-r--r--kradio3/plugins/gui-error-log/errorlog.h89
-rw-r--r--kradio3/plugins/gui-error-log/po/Makefile.am2
-rw-r--r--kradio3/plugins/gui-error-log/po/de.po69
-rw-r--r--kradio3/plugins/gui-error-log/po/ru.po71
-rw-r--r--kradio3/plugins/gui-quickbar/Makefile.am18
-rw-r--r--kradio3/plugins/gui-quickbar/buttonflowlayout.cpp232
-rw-r--r--kradio3/plugins/gui-quickbar/buttonflowlayout.h60
-rw-r--r--kradio3/plugins/gui-quickbar/po/Makefile.am2
-rw-r--r--kradio3/plugins/gui-quickbar/po/de.po53
-rw-r--r--kradio3/plugins/gui-quickbar/po/ru.po55
-rw-r--r--kradio3/plugins/gui-quickbar/quickbar-configuration.cpp35
-rw-r--r--kradio3/plugins/gui-quickbar/quickbar-configuration.h36
-rw-r--r--kradio3/plugins/gui-quickbar/quickbar.cpp424
-rw-r--r--kradio3/plugins/gui-quickbar/quickbar.h138
-rw-r--r--kradio3/plugins/gui-standard-display/Makefile.am22
-rw-r--r--kradio3/plugins/gui-standard-display/displaycfg.cpp145
-rw-r--r--kradio3/plugins/gui-standard-display/displaycfg.h72
-rw-r--r--kradio3/plugins/gui-standard-display/displaycfg_interfaces.cpp69
-rw-r--r--kradio3/plugins/gui-standard-display/displaycfg_interfaces.h82
-rw-r--r--kradio3/plugins/gui-standard-display/po/Makefile.am2
-rw-r--r--kradio3/plugins/gui-standard-display/po/de.po212
-rw-r--r--kradio3/plugins/gui-standard-display/po/ru.po213
-rw-r--r--kradio3/plugins/gui-standard-display/radioview-configuration.cpp116
-rw-r--r--kradio3/plugins/gui-standard-display/radioview-configuration.h61
-rw-r--r--kradio3/plugins/gui-standard-display/radioview.cpp807
-rw-r--r--kradio3/plugins/gui-standard-display/radioview.h207
-rw-r--r--kradio3/plugins/gui-standard-display/radioview_element.cpp34
-rw-r--r--kradio3/plugins/gui-standard-display/radioview_element.h66
-rw-r--r--kradio3/plugins/gui-standard-display/radioview_frequencyradio.cpp443
-rw-r--r--kradio3/plugins/gui-standard-display/radioview_frequencyradio.h108
-rw-r--r--kradio3/plugins/gui-standard-display/radioview_frequencyseeker.cpp250
-rw-r--r--kradio3/plugins/gui-standard-display/radioview_frequencyseeker.h78
-rw-r--r--kradio3/plugins/gui-standard-display/radioview_seekinterface.ui167
-rw-r--r--kradio3/plugins/gui-standard-display/radioview_seekinterface.ui.h21
-rw-r--r--kradio3/plugins/gui-standard-display/radioview_volume.cpp141
-rw-r--r--kradio3/plugins/gui-standard-display/radioview_volume.h75
-rw-r--r--kradio3/plugins/lirc/Makefile.am28
-rw-r--r--kradio3/plugins/lirc/default-dot-lircrc6
-rw-r--r--kradio3/plugins/lirc/lirc-configuration-ui.ui110
-rw-r--r--kradio3/plugins/lirc/lirc-configuration.cpp193
-rw-r--r--kradio3/plugins/lirc/lirc-configuration.h60
-rw-r--r--kradio3/plugins/lirc/lircsupport.cpp553
-rw-r--r--kradio3/plugins/lirc/lircsupport.h159
-rw-r--r--kradio3/plugins/lirc/listviewitem_lirc.cpp51
-rw-r--r--kradio3/plugins/lirc/listviewitem_lirc.h51
-rw-r--r--kradio3/plugins/lirc/po/Makefile.am2
-rw-r--r--kradio3/plugins/lirc/po/de.po213
-rw-r--r--kradio3/plugins/lirc/po/ru.po209
-rw-r--r--kradio3/plugins/oss-sound/Makefile.am18
-rw-r--r--kradio3/plugins/oss-sound/icons/Makefile.am2
-rw-r--r--kradio3/plugins/oss-sound/icons/hi16-action-kradio_oss.pngbin0 -> 1042 bytes
-rw-r--r--kradio3/plugins/oss-sound/icons/hi32-action-kradio_oss.pngbin0 -> 2206 bytes
-rw-r--r--kradio3/plugins/oss-sound/icons/hi48-action-kradio_oss.pngbin0 -> 3702 bytes
-rw-r--r--kradio3/plugins/oss-sound/oss-sound-configuration-ui.ui132
-rw-r--r--kradio3/plugins/oss-sound/oss-sound-configuration.cpp86
-rw-r--r--kradio3/plugins/oss-sound/oss-sound-configuration.h51
-rw-r--r--kradio3/plugins/oss-sound/oss-sound.cpp991
-rw-r--r--kradio3/plugins/oss-sound/oss-sound.h224
-rw-r--r--kradio3/plugins/oss-sound/po/Makefile.am2
-rw-r--r--kradio3/plugins/oss-sound/po/de.po200
-rw-r--r--kradio3/plugins/oss-sound/po/ru.po193
-rw-r--r--kradio3/plugins/radio/Makefile.am18
-rw-r--r--kradio3/plugins/radio/po/Makefile.am2
-rw-r--r--kradio3/plugins/radio/po/de.po185
-rw-r--r--kradio3/plugins/radio/po/ru.po185
-rw-r--r--kradio3/plugins/radio/radio-configuration-ui.ui774
-rw-r--r--kradio3/plugins/radio/radio-configuration.cpp592
-rw-r--r--kradio3/plugins/radio/radio-configuration.h106
-rw-r--r--kradio3/plugins/radio/radio.cpp497
-rw-r--r--kradio3/plugins/radio/radio.h167
-rw-r--r--kradio3/plugins/recording/Makefile.am22
-rw-r--r--kradio3/plugins/recording/encoder.cpp172
-rw-r--r--kradio3/plugins/recording/encoder.h101
-rw-r--r--kradio3/plugins/recording/encoder_mp3.cpp214
-rw-r--r--kradio3/plugins/recording/encoder_mp3.h56
-rw-r--r--kradio3/plugins/recording/encoder_ogg.cpp250
-rw-r--r--kradio3/plugins/recording/encoder_ogg.h55
-rw-r--r--kradio3/plugins/recording/encoder_pcm.cpp78
-rw-r--r--kradio3/plugins/recording/encoder_pcm.h46
-rw-r--r--kradio3/plugins/recording/icons/Makefile.am2
-rw-r--r--kradio3/plugins/recording/icons/hi16-action-kradio_record.pngbin0 -> 480 bytes
-rw-r--r--kradio3/plugins/recording/icons/hi16-app-kradio_plus_rec.pngbin0 -> 931 bytes
-rw-r--r--kradio3/plugins/recording/icons/hi22-action-kradio_record.pngbin0 -> 714 bytes
-rw-r--r--kradio3/plugins/recording/icons/hi22-app-kradio_plus_rec.pngbin0 -> 1486 bytes
-rw-r--r--kradio3/plugins/recording/icons/hi256-action-kradio_record.pngbin0 -> 8662 bytes
-rw-r--r--kradio3/plugins/recording/icons/hi32-action-kradio_record.pngbin0 -> 1052 bytes
-rw-r--r--kradio3/plugins/recording/icons/hi32-app-kradio_plus_rec.pngbin0 -> 2491 bytes
-rw-r--r--kradio3/plugins/recording/icons/hi48-action-kradio_record.pngbin0 -> 1719 bytes
-rw-r--r--kradio3/plugins/recording/icons/hi48-app-kradio_plus_rec.pngbin0 -> 4633 bytes
-rw-r--r--kradio3/plugins/recording/icons/hi64-action-kradio_record.pngbin0 -> 2281 bytes
-rw-r--r--kradio3/plugins/recording/icons/hi64-app-kradio_plus_rec.pngbin0 -> 6695 bytes
-rw-r--r--kradio3/plugins/recording/po/Makefile.am2
-rw-r--r--kradio3/plugins/recording/po/de.po435
-rw-r--r--kradio3/plugins/recording/po/ru.po432
-rw-r--r--kradio3/plugins/recording/reccfg_interfaces.cpp151
-rw-r--r--kradio3/plugins/recording/reccfg_interfaces.h102
-rw-r--r--kradio3/plugins/recording/recording-config.cpp215
-rw-r--r--kradio3/plugins/recording/recording-config.h73
-rw-r--r--kradio3/plugins/recording/recording-configuration-ui.ui731
-rw-r--r--kradio3/plugins/recording/recording-configuration.cpp414
-rw-r--r--kradio3/plugins/recording/recording-configuration.h126
-rw-r--r--kradio3/plugins/recording/recording-datamonitor.cpp278
-rw-r--r--kradio3/plugins/recording/recording-datamonitor.h66
-rw-r--r--kradio3/plugins/recording/recording-monitor.cpp402
-rw-r--r--kradio3/plugins/recording/recording-monitor.h124
-rw-r--r--kradio3/plugins/recording/recording.cpp736
-rw-r--r--kradio3/plugins/recording/recording.h148
-rw-r--r--kradio3/plugins/recording/soundstreamevent.h87
-rw-r--r--kradio3/plugins/soundserver/Makefile.am18
-rw-r--r--kradio3/plugins/soundserver/po/Makefile.am2
-rw-r--r--kradio3/plugins/soundserver/po/de.po29
-rw-r--r--kradio3/plugins/soundserver/po/ru.po29
-rw-r--r--kradio3/plugins/soundserver/soundserver.cpp74
-rw-r--r--kradio3/plugins/soundserver/soundserver.h54
-rw-r--r--kradio3/plugins/streaming/Makefile.am18
-rw-r--r--kradio3/plugins/streaming/icons/Makefile.am2
-rw-r--r--kradio3/plugins/streaming/icons/hi16-action-kradio_streaming.pngbin0 -> 667 bytes
-rw-r--r--kradio3/plugins/streaming/icons/hi22-action-kradio_streaming.pngbin0 -> 952 bytes
-rw-r--r--kradio3/plugins/streaming/icons/hi32-action-kradio_streaming.pngbin0 -> 1413 bytes
-rw-r--r--kradio3/plugins/streaming/icons/hi48-action-kradio_streaming.pngbin0 -> 2157 bytes
-rw-r--r--kradio3/plugins/streaming/icons/hi64-action-kradio_streaming.pngbin0 -> 2890 bytes
-rw-r--r--kradio3/plugins/streaming/po/Makefile.am2
-rw-r--r--kradio3/plugins/streaming/po/de.po226
-rw-r--r--kradio3/plugins/streaming/po/ru.po228
-rw-r--r--kradio3/plugins/streaming/streaming-configuration-ui.ui777
-rw-r--r--kradio3/plugins/streaming/streaming-configuration.cpp567
-rw-r--r--kradio3/plugins/streaming/streaming-configuration.h97
-rw-r--r--kradio3/plugins/streaming/streaming-job.cpp279
-rw-r--r--kradio3/plugins/streaming/streaming-job.h100
-rw-r--r--kradio3/plugins/streaming/streaming.cpp526
-rw-r--r--kradio3/plugins/streaming/streaming.h145
-rw-r--r--kradio3/plugins/timecontrol/Makefile.am17
-rw-r--r--kradio3/plugins/timecontrol/icons/Makefile.am2
-rw-r--r--kradio3/plugins/timecontrol/icons/hi16-action-kradio_kalarm.pngbin0 -> 496 bytes
-rw-r--r--kradio3/plugins/timecontrol/icons/hi16-action-kradio_zzz.pngbin0 -> 347 bytes
-rw-r--r--kradio3/plugins/timecontrol/icons/hi22-action-kradio_kalarm.pngbin0 -> 830 bytes
-rw-r--r--kradio3/plugins/timecontrol/icons/hi22-action-kradio_zzz.pngbin0 -> 865 bytes
-rw-r--r--kradio3/plugins/timecontrol/icons/hi32-action-kradio_kalarm.pngbin0 -> 1515 bytes
-rw-r--r--kradio3/plugins/timecontrol/icons/hi32-action-kradio_zzz.pngbin0 -> 1476 bytes
-rw-r--r--kradio3/plugins/timecontrol/icons/hi330-action-kradio_zzz.pngbin0 -> 17712 bytes
-rw-r--r--kradio3/plugins/timecontrol/icons/hi48-action-kradio_kalarm.pngbin0 -> 1989 bytes
-rw-r--r--kradio3/plugins/timecontrol/icons/hi48-action-kradio_zzz.pngbin0 -> 2347 bytes
-rw-r--r--kradio3/plugins/timecontrol/po/Makefile.am2
-rw-r--r--kradio3/plugins/timecontrol/po/de.po129
-rw-r--r--kradio3/plugins/timecontrol/po/ru.po129
-rw-r--r--kradio3/plugins/timecontrol/timecontrol-configuration-ui.ui452
-rw-r--r--kradio3/plugins/timecontrol/timecontrol-configuration.cpp425
-rw-r--r--kradio3/plugins/timecontrol/timecontrol-configuration.h90
-rw-r--r--kradio3/plugins/timecontrol/timecontrol.cpp301
-rw-r--r--kradio3/plugins/timecontrol/timecontrol.h95
-rw-r--r--kradio3/plugins/timeshifter/Makefile.am18
-rw-r--r--kradio3/plugins/timeshifter/icons/Makefile.am2
-rw-r--r--kradio3/plugins/timeshifter/icons/hi16-action-kradio_pause.pngbin0 -> 850 bytes
-rw-r--r--kradio3/plugins/timeshifter/icons/hi16-app-kradio_plus_pause.pngbin0 -> 991 bytes
-rw-r--r--kradio3/plugins/timeshifter/icons/hi22-action-kradio_pause.pngbin0 -> 1190 bytes
-rw-r--r--kradio3/plugins/timeshifter/icons/hi22-app-kradio_plus_pause.pngbin0 -> 1584 bytes
-rw-r--r--kradio3/plugins/timeshifter/icons/hi32-action-kradio_pause.pngbin0 -> 1504 bytes
-rw-r--r--kradio3/plugins/timeshifter/icons/hi32-app-kradio_plus_pause.pngbin0 -> 2748 bytes
-rw-r--r--kradio3/plugins/timeshifter/icons/hi48-app-kradio_plus_pause.pngbin0 -> 4947 bytes
-rw-r--r--kradio3/plugins/timeshifter/icons/hi64-app-kradio_plus_pause.pngbin0 -> 6935 bytes
-rw-r--r--kradio3/plugins/timeshifter/po/Makefile.am3
-rw-r--r--kradio3/plugins/timeshifter/po/de.po91
-rw-r--r--kradio3/plugins/timeshifter/po/ru.po91
-rw-r--r--kradio3/plugins/timeshifter/timeshifter-configuration-ui.ui225
-rw-r--r--kradio3/plugins/timeshifter/timeshifter-configuration.cpp203
-rw-r--r--kradio3/plugins/timeshifter/timeshifter-configuration.h83
-rw-r--r--kradio3/plugins/timeshifter/timeshifter.cpp455
-rw-r--r--kradio3/plugins/timeshifter/timeshifter.h120
-rw-r--r--kradio3/plugins/v4lradio/Makefile.am18
-rw-r--r--kradio3/plugins/v4lradio/linux/videodev.h432
-rw-r--r--kradio3/plugins/v4lradio/linux/videodev2.h940
-rw-r--r--kradio3/plugins/v4lradio/po/Makefile.am3
-rw-r--r--kradio3/plugins/v4lradio/po/de.po362
-rw-r--r--kradio3/plugins/v4lradio/po/ru.po362
-rw-r--r--kradio3/plugins/v4lradio/v4lcfg_interfaces.cpp193
-rw-r--r--kradio3/plugins/v4lradio/v4lcfg_interfaces.h151
-rw-r--r--kradio3/plugins/v4lradio/v4lradio-configuration-ui.ui966
-rw-r--r--kradio3/plugins/v4lradio/v4lradio-configuration.cpp648
-rw-r--r--kradio3/plugins/v4lradio/v4lradio-configuration.h147
-rw-r--r--kradio3/plugins/v4lradio/v4lradio.cpp1621
-rw-r--r--kradio3/plugins/v4lradio/v4lradio.h265
-rw-r--r--kradio3/presets/Makefile.am1
-rw-r--r--kradio3/presets/argentina/Makefile.am10
-rw-r--r--kradio3/presets/argentina/buenos-aires.krp159
-rw-r--r--kradio3/presets/australia/Makefile.am18
-rw-r--r--kradio3/presets/australia/brisbane-antenna-2.krp140
-rw-r--r--kradio3/presets/australia/brisbane-antenna.krp62
-rw-r--r--kradio3/presets/australia/brisbane.krp61
-rw-r--r--kradio3/presets/australia/sydney.krp105
-rw-r--r--kradio3/presets/australia/sydney2.krp117
-rw-r--r--kradio3/presets/austria/Makefile.am30
-rw-r--r--kradio3/presets/austria/breitenfurt-cable.krp206
-rw-r--r--kradio3/presets/austria/gablitz-cable.krp206
-rw-r--r--kradio3/presets/austria/graz-cable.krp266
-rw-r--r--kradio3/presets/austria/kaltenleutgeben-cable.krp206
-rw-r--r--kradio3/presets/austria/laab-wald-cable.krp206
-rw-r--r--kradio3/presets/austria/linz-cable.krp190
-rw-r--r--kradio3/presets/austria/mauerbach-cable.krp206
-rw-r--r--kradio3/presets/austria/purkersdorf-cable.krp206
-rw-r--r--kradio3/presets/austria/vienna-antenna.krp62
-rw-r--r--kradio3/presets/austria/vienna-cable1.krp294
-rw-r--r--kradio3/presets/austria/vienna-cable2.krp323
-rw-r--r--kradio3/presets/belgium/Makefile.am14
-rw-r--r--kradio3/presets/belgium/buellingen-antenna.krp190
-rw-r--r--kradio3/presets/belgium/ieper-cable.krp198
-rw-r--r--kradio3/presets/belgium/limburg-cable.krp222
-rw-r--r--kradio3/presets/brazil/Makefile.am14
-rw-r--r--kradio3/presets/brazil/brasilia.krp255
-rw-r--r--kradio3/presets/brazil/rio-de-janeiro.krp159
-rw-r--r--kradio3/presets/brazil/sao-paulo.krp230
-rw-r--r--kradio3/presets/bulgaria/Makefile.am12
-rw-r--r--kradio3/presets/bulgaria/sofia.krp259
-rw-r--r--kradio3/presets/bulgaria/stara-zagora.krp159
-rw-r--r--kradio3/presets/canada/Makefile.am10
-rw-r--r--kradio3/presets/canada/montreal-antenna.krp189
-rw-r--r--kradio3/presets/catalonia/Makefile.am14
-rw-r--r--kradio3/presets/catalonia/barcelona.krp119
-rw-r--r--kradio3/presets/catalonia/barcelona2.krp418
-rw-r--r--kradio3/presets/catalonia/sabadell-antenna.krp365
-rw-r--r--kradio3/presets/czechia/Makefile.am16
-rw-r--r--kradio3/presets/czechia/ostrava-antena.krp94
-rw-r--r--kradio3/presets/czechia/plzen-antenna.krp117
-rw-r--r--kradio3/presets/czechia/plzen-cable.krp190
-rw-r--r--kradio3/presets/czechia/prague-antenna.krp134
-rw-r--r--kradio3/presets/england/Makefile.am18
-rw-r--r--kradio3/presets/england/buckinghamshire/Makefile.am10
-rw-r--r--kradio3/presets/england/buckinghamshire/milton_keynes.krp70
-rw-r--r--kradio3/presets/england/exeter-antenna.krp79
-rw-r--r--kradio3/presets/england/leeds-antenna.krp102
-rw-r--r--kradio3/presets/england/london.krp171
-rw-r--r--kradio3/presets/england/newcastle-upon-tyne.krp62
-rw-r--r--kradio3/presets/england/sheffield.krp94
-rw-r--r--kradio3/presets/finland/Makefile.am10
-rw-r--r--kradio3/presets/finland/helsinki-cable.krp185
-rw-r--r--kradio3/presets/france/Makefile.am18
-rw-r--r--kradio3/presets/france/angers.krp62
-rw-r--r--kradio3/presets/france/lille-antenna.krp286
-rw-r--r--kradio3/presets/france/paris-antenna.2.krp520
-rw-r--r--kradio3/presets/france/paris-antenna.krp462
-rw-r--r--kradio3/presets/france/rennes.krp223
-rw-r--r--kradio3/presets/germany/Makefile.am244
-rw-r--r--kradio3/presets/germany/aachen-antenna.krp262
-rw-r--r--kradio3/presets/germany/aachen-cable-2.krp303
-rw-r--r--kradio3/presets/germany/aachen-cable-3.krp303
-rw-r--r--kradio3/presets/germany/aachen-cable.krp302
-rw-r--r--kradio3/presets/germany/aichach-cable.krp318
-rw-r--r--kradio3/presets/germany/aschaffenburg-cable.krp286
-rw-r--r--kradio3/presets/germany/augsburg-cable.krp338
-rw-r--r--kradio3/presets/germany/berlin-adlershof-antenna.krp221
-rw-r--r--kradio3/presets/germany/berlin-antenna.2.krp168
-rw-r--r--kradio3/presets/germany/berlin-antenna.krp231
-rw-r--r--kradio3/presets/germany/berlin-cable.2.krp270
-rw-r--r--kradio3/presets/germany/berlin-cable.krp323
-rw-r--r--kradio3/presets/germany/bielefeld-cable.krp230
-rw-r--r--kradio3/presets/germany/bochum-cable.krp238
-rw-r--r--kradio3/presets/germany/bonn-antenna.krp77
-rw-r--r--kradio3/presets/germany/bottenhorn-antenna.krp70
-rw-r--r--kradio3/presets/germany/braunschweig-cable.krp270
-rw-r--r--kradio3/presets/germany/braunschweig2-cable.krp306
-rw-r--r--kradio3/presets/germany/bremen-cable.krp278
-rw-r--r--kradio3/presets/germany/bremerhaven-antenna.krp246
-rw-r--r--kradio3/presets/germany/bruchkoebel-cable.krp286
-rw-r--r--kradio3/presets/germany/chemnitz-cable.krp198
-rw-r--r--kradio3/presets/germany/cologne-cable-2.krp142
-rw-r--r--kradio3/presets/germany/cologne-cable.krp311
-rw-r--r--kradio3/presets/germany/cologne.krp295
-rw-r--r--kradio3/presets/germany/dortmund-cable-2.krp246
-rw-r--r--kradio3/presets/germany/dortmund-cable.krp222
-rw-r--r--kradio3/presets/germany/dresden-cable.krp226
-rw-r--r--kradio3/presets/germany/duesseldorf-cable.krp239
-rw-r--r--kradio3/presets/germany/duesseldorf.krp246
-rw-r--r--kradio3/presets/germany/emsdetten-cable.krp238
-rw-r--r--kradio3/presets/germany/erfurt-cable.2.krp307
-rw-r--r--kradio3/presets/germany/erfurt-cable.krp337
-rw-r--r--kradio3/presets/germany/erlangen-cable-2.krp311
-rw-r--r--kradio3/presets/germany/erlangen-cable.krp349
-rw-r--r--kradio3/presets/germany/erlensee-cable.krp286
-rw-r--r--kradio3/presets/germany/erwitte-lippstadt.krp279
-rw-r--r--kradio3/presets/germany/essen-cable.krp206
-rw-r--r--kradio3/presets/germany/fischbachau-cable.krp242
-rw-r--r--kradio3/presets/germany/freiburg-cable.krp254
-rw-r--r--kradio3/presets/germany/gelsenkirchen-cable.krp246
-rw-r--r--kradio3/presets/germany/gerolsbach-cable.krp86
-rw-r--r--kradio3/presets/germany/hamburg-antenna.krp150
-rw-r--r--kradio3/presets/germany/hamburg-cable-2.krp110
-rw-r--r--kradio3/presets/germany/hamburg-cable-3.krp302
-rw-r--r--kradio3/presets/germany/hamburg-cable.alternative.krp294
-rw-r--r--kradio3/presets/germany/hamburg-cable.krp318
-rw-r--r--kradio3/presets/germany/hamburg-cable1.krp318
-rw-r--r--kradio3/presets/germany/hamburg-cable2.krp278
-rw-r--r--kradio3/presets/germany/hamburg-cable3.krp294
-rw-r--r--kradio3/presets/germany/hamburg-cable4.krp286
-rw-r--r--kradio3/presets/germany/hamburg-cable5.krp302
-rw-r--r--kradio3/presets/germany/hanau-cable.krp286
-rw-r--r--kradio3/presets/germany/hannover-antenna.krp206
-rw-r--r--kradio3/presets/germany/hannover-cable.2.krp302
-rw-r--r--kradio3/presets/germany/hannover-cable.krp301
-rw-r--r--kradio3/presets/germany/heidelberg-cable.krp222
-rw-r--r--kradio3/presets/germany/herzogenrath-cable.krp246
-rw-r--r--kradio3/presets/germany/hilden-cable.krp229
-rw-r--r--kradio3/presets/germany/ingolstadt-cable.krp349
-rw-r--r--kradio3/presets/germany/juelich-cable.krp246
-rw-r--r--kradio3/presets/germany/karlsruhe-cable.krp332
-rw-r--r--kradio3/presets/germany/karlsruhe-noerdlicher-landkreis-cable.krp331
-rw-r--r--kradio3/presets/germany/kiel-antenna.krp118
-rw-r--r--kradio3/presets/germany/kirchzarten-cable.krp270
-rw-r--r--kradio3/presets/germany/klingenthal-antenna.krp97
-rw-r--r--kradio3/presets/germany/koeln-antenne.krp305
-rw-r--r--kradio3/presets/germany/koeln-cable.2.krp278
-rw-r--r--kradio3/presets/germany/koeln-cable.krp289
-rw-r--r--kradio3/presets/germany/koeln-loevenich-cable.krp150
-rw-r--r--kradio3/presets/germany/langenfeld-cable.krp229
-rw-r--r--kradio3/presets/germany/langenselbold-cable.krp286
-rw-r--r--kradio3/presets/germany/leer-ostfriesland-cable.krp325
-rw-r--r--kradio3/presets/germany/leichlingen-cable.krp229
-rw-r--r--kradio3/presets/germany/leipzig-cable.2.krp214
-rw-r--r--kradio3/presets/germany/leipzig-cable.krp271
-rw-r--r--kradio3/presets/germany/lennestadt-cable.krp222
-rw-r--r--kradio3/presets/germany/leverkusen-cable.krp229
-rw-r--r--kradio3/presets/germany/ludwigsburg-antenna.krp125
-rw-r--r--kradio3/presets/germany/luedenscheid-cable.krp206
-rw-r--r--kradio3/presets/germany/maintal-cable.krp286
-rw-r--r--kradio3/presets/germany/mainz-cable.krp313
-rw-r--r--kradio3/presets/germany/mannheim-cable.krp248
-rw-r--r--kradio3/presets/germany/meerbusch-struemp-cable.krp246
-rw-r--r--kradio3/presets/germany/moenchengladback-cable.krp246
-rw-r--r--kradio3/presets/germany/monheim-cable.krp229
-rw-r--r--kradio3/presets/germany/muenchen-2.krp294
-rw-r--r--kradio3/presets/germany/muenchen-antenna.krp150
-rw-r--r--kradio3/presets/germany/muenchen-cable-2.krp319
-rw-r--r--kradio3/presets/germany/muenchen-cable.krp318
-rw-r--r--kradio3/presets/germany/muenchen-forstenried-antenna.krp230
-rw-r--r--kradio3/presets/germany/muenchen.krp134
-rw-r--r--kradio3/presets/germany/muenster-cable.krp224
-rw-r--r--kradio3/presets/germany/muenster.krp262
-rw-r--r--kradio3/presets/germany/muensterland-antenna.krp91
-rw-r--r--kradio3/presets/germany/neuberg-cable.krp286
-rw-r--r--kradio3/presets/germany/neuoetting.krp239
-rw-r--r--kradio3/presets/germany/nuernberg-cable-2.krp361
-rw-r--r--kradio3/presets/germany/nuernberg-cable.krp366
-rw-r--r--kradio3/presets/germany/oldenburg-cable.krp278
-rw-r--r--kradio3/presets/germany/olpe-antenna.krp47
-rw-r--r--kradio3/presets/germany/owen-cable.krp268
-rw-r--r--kradio3/presets/germany/pfaffenhofen-ilm-cable.krp288
-rw-r--r--kradio3/presets/germany/rheine-mesum-antenna.krp102
-rw-r--r--kradio3/presets/germany/rodenbach-cable.krp286
-rw-r--r--kradio3/presets/germany/saarbruecken-antenna.krp49
-rw-r--r--kradio3/presets/germany/schifferstadt-cable.krp246
-rw-r--r--kradio3/presets/germany/schwerte-cable.krp222
-rw-r--r--kradio3/presets/germany/st.georgen-cable.krp206
-rw-r--r--kradio3/presets/germany/stuttgart-cable-2.krp230
-rw-r--r--kradio3/presets/germany/stuttgart-cable.krp262
-rw-r--r--kradio3/presets/germany/tuebingen-cable.krp270
-rw-r--r--kradio3/presets/germany/ulm-cable.2.krp222
-rw-r--r--kradio3/presets/germany/ulm-cable.krp231
-rw-r--r--kradio3/presets/germany/weilheim-iOB.krp174
-rw-r--r--kradio3/presets/germany/weingarten-cable.krp342
-rw-r--r--kradio3/presets/germany/weinstadt-beutelsbach-cable.krp278
-rw-r--r--kradio3/presets/germany/wernigerode-antenna.krp58
-rw-r--r--kradio3/presets/germany/worfelden-cable.krp133
-rw-r--r--kradio3/presets/hungary/Makefile.am14
-rw-r--r--kradio3/presets/hungary/budapest-antenna.2.krp246
-rw-r--r--kradio3/presets/hungary/budapest-antenna.krp86
-rw-r--r--kradio3/presets/hungary/budapest.krp166
-rw-r--r--kradio3/presets/iceland/Makefile.am10
-rw-r--r--kradio3/presets/iceland/reykjavik-antenna.krp151
-rw-r--r--kradio3/presets/ireland/Makefile.am10
-rw-r--r--kradio3/presets/ireland/dublin.krp127
-rw-r--r--kradio3/presets/italy/Makefile.am14
-rw-r--r--kradio3/presets/italy/bologna.krp38
-rw-r--r--kradio3/presets/italy/rovato.krp358
-rw-r--r--kradio3/presets/italy/torino-antenna.krp110
-rw-r--r--kradio3/presets/lithuania/Makefile.am12
-rw-r--r--kradio3/presets/lithuania/kaunas-antenna.krp199
-rw-r--r--kradio3/presets/lithuania/panevezys.krp171
-rw-r--r--kradio3/presets/luxemburg/Makefile.am10
-rw-r--r--kradio3/presets/luxemburg/walferdange.krp110
-rw-r--r--kradio3/presets/netherlands/Makefile.am30
-rw-r--r--kradio3/presets/netherlands/alphen-aan-den-rijn-cable.krp306
-rw-r--r--kradio3/presets/netherlands/amersfoort-cable.krp315
-rw-r--r--kradio3/presets/netherlands/amsterdam-cable-2.krp367
-rw-r--r--kradio3/presets/netherlands/amsterdam-cable.krp326
-rw-r--r--kradio3/presets/netherlands/arnhem-cable.krp318
-rw-r--r--kradio3/presets/netherlands/enschede-cable.krp372
-rw-r--r--kradio3/presets/netherlands/groningen.krp182
-rw-r--r--kradio3/presets/netherlands/ijhorst.krp254
-rw-r--r--kradio3/presets/netherlands/rotterdam-cable.krp302
-rw-r--r--kradio3/presets/netherlands/tegelen-cable.krp326
-rw-r--r--kradio3/presets/netherlands/the-hague-antenna.krp174
-rw-r--r--kradio3/presets/new-zealand/Makefile.am10
-rw-r--r--kradio3/presets/new-zealand/auckland-antenna.krp134
-rw-r--r--kradio3/presets/norway/Makefile.am10
-rw-r--r--kradio3/presets/norway/oslo.krp103
-rw-r--r--kradio3/presets/poland/Makefile.am30
-rw-r--r--kradio3/presets/poland/bialystock-antenna.krp138
-rw-r--r--kradio3/presets/poland/elblang-antenna-fm.krp94
-rw-r--r--kradio3/presets/poland/katowice.krp102
-rw-r--r--kradio3/presets/poland/krakow-antenna.krp182
-rw-r--r--kradio3/presets/poland/torun-cable.krp142
-rw-r--r--kradio3/presets/poland/warsaw-antenna.2.krp206
-rw-r--r--kradio3/presets/poland/warsaw-antenna.krp213
-rw-r--r--kradio3/presets/poland/warsaw-cable2.krp267
-rw-r--r--kradio3/presets/poland/warsaw-upc_cable.krp205
-rw-r--r--kradio3/presets/poland/warsaw-ursynow.krp92
-rw-r--r--kradio3/presets/poland/warsaw.krp237
-rw-r--r--kradio3/presets/portugal/Makefile.am10
-rw-r--r--kradio3/presets/portugal/lisboa-antenna.krp310
-rw-r--r--kradio3/presets/romania/Makefile.am18
-rw-r--r--kradio3/presets/romania/brasov-2.krp126
-rw-r--r--kradio3/presets/romania/brasov.krp103
-rw-r--r--kradio3/presets/romania/bucharest.krp86
-rw-r--r--kradio3/presets/romania/bucuresti.krp126
-rw-r--r--kradio3/presets/romania/craiova.krp54
-rw-r--r--kradio3/presets/russia/Makefile.am12
-rw-r--r--kradio3/presets/russia/moscow.krp141
-rw-r--r--kradio3/presets/russia/saint-petersburg-antenna.krp286
-rw-r--r--kradio3/presets/slovakia/Makefile.am10
-rw-r--r--kradio3/presets/slovakia/kosice.krp142
-rw-r--r--kradio3/presets/south-africa/Makefile.am10
-rw-r--r--kradio3/presets/south-africa/johannesburg.krp162
-rw-r--r--kradio3/presets/spain/Makefile.am26
-rw-r--r--kradio3/presets/spain/barcelona.krp119
-rw-r--r--kradio3/presets/spain/barcelona2.krp418
-rw-r--r--kradio3/presets/spain/bilbao.krp23
-rw-r--r--kradio3/presets/spain/lugo.krp140
-rw-r--r--kradio3/presets/spain/madrid-2.krp254
-rw-r--r--kradio3/presets/spain/madrid.krp352
-rw-r--r--kradio3/presets/spain/malaga.krp378
-rw-r--r--kradio3/presets/spain/mieres-del-camino.krp305
-rw-r--r--kradio3/presets/spain/sevilla.krp174
-rw-r--r--kradio3/presets/sweden/Makefile.am18
-rw-r--r--kradio3/presets/sweden/gothenburg.krp110
-rw-r--r--kradio3/presets/sweden/oestersunds-kommun.krp67
-rw-r--r--kradio3/presets/sweden/stockholm.2.krp350
-rw-r--r--kradio3/presets/sweden/stockholm.krp134
-rw-r--r--kradio3/presets/sweden/vaxholm.krp137
-rw-r--r--kradio3/presets/switzerland/Makefile.am14
-rw-r--r--kradio3/presets/switzerland/diepoldsau-cable.krp319
-rw-r--r--kradio3/presets/switzerland/egg-cable.krp375
-rw-r--r--kradio3/presets/switzerland/stansstad-cable.krp326
-rw-r--r--kradio3/presets/switzerland/wrenlos-cable.krp374
-rw-r--r--kradio3/presets/turkey/Makefile.am10
-rw-r--r--kradio3/presets/turkey/adapazari-antenna.krp222
-rwxr-xr-xkradio3/presets/update-makefile-dot-am.sh63
-rw-r--r--kradio3/presets/uruguay/Makefile.am10
-rw-r--r--kradio3/presets/uruguay/montevideo.krp166
-rw-r--r--kradio3/presets/usa/Alabama.krp838
-rw-r--r--kradio3/presets/usa/Alabama_am.krp294
-rw-r--r--kradio3/presets/usa/Alabama_fm.krp559
-rw-r--r--kradio3/presets/usa/Alaska.krp366
-rw-r--r--kradio3/presets/usa/Alaska_am.krp142
-rw-r--r--kradio3/presets/usa/Alaska_fm.krp238
-rw-r--r--kradio3/presets/usa/Alberta.krp142
-rw-r--r--kradio3/presets/usa/Alberta_am.krp30
-rw-r--r--kradio3/presets/usa/Alberta_fm.krp126
-rw-r--r--kradio3/presets/usa/Ann Arbor (Michigan).krp334
-rw-r--r--kradio3/presets/usa/Arizona.krp702
-rw-r--r--kradio3/presets/usa/Arizona_am.krp294
-rw-r--r--kradio3/presets/usa/Arizona_fm.krp422
-rw-r--r--kradio3/presets/usa/Arkansas.krp614
-rw-r--r--kradio3/presets/usa/Arkansas_am.krp174
-rw-r--r--kradio3/presets/usa/Arkansas_fm.krp454
-rw-r--r--kradio3/presets/usa/Austin.krp214
-rw-r--r--kradio3/presets/usa/British Columbia.krp294
-rw-r--r--kradio3/presets/usa/British Columbia_am.krp118
-rw-r--r--kradio3/presets/usa/British Columbia_fm.krp190
-rw-r--r--kradio3/presets/usa/California.krp1486
-rw-r--r--kradio3/presets/usa/California_am.krp710
-rw-r--r--kradio3/presets/usa/California_fm.krp790
-rw-r--r--kradio3/presets/usa/Chicago-antenna.krp190
-rw-r--r--kradio3/presets/usa/Colorado.krp750
-rw-r--r--kradio3/presets/usa/Colorado_am.krp294
-rw-r--r--kradio3/presets/usa/Colorado_fm.krp470
-rw-r--r--kradio3/presets/usa/Connecticut.krp430
-rw-r--r--kradio3/presets/usa/Connecticut_am.krp166
-rw-r--r--kradio3/presets/usa/Connecticut_fm.krp278
-rw-r--r--kradio3/presets/usa/Dallas.krp70
-rw-r--r--kradio3/presets/usa/Delaware.krp110
-rw-r--r--kradio3/presets/usa/Delaware_am.krp54
-rw-r--r--kradio3/presets/usa/Delaware_fm.krp70
-rw-r--r--kradio3/presets/usa/District of Columbia.krp326
-rw-r--r--kradio3/presets/usa/District of Columbia_am.krp174
-rw-r--r--kradio3/presets/usa/District of Columbia_fm.krp166
-rw-r--r--kradio3/presets/usa/Florida.krp1246
-rw-r--r--kradio3/presets/usa/Florida_am.krp574
-rw-r--r--kradio3/presets/usa/Florida_fm.krp686
-rw-r--r--kradio3/presets/usa/Guam.krp54
-rw-r--r--kradio3/presets/usa/Guam_am.krp22
-rw-r--r--kradio3/presets/usa/Guam_fm.krp46
-rw-r--r--kradio3/presets/usa/Hawaii.krp270
-rw-r--r--kradio3/presets/usa/Hawaii_am.krp102
-rw-r--r--kradio3/presets/usa/Hawaii_fm.krp182
-rw-r--r--kradio3/presets/usa/Idaho.krp398
-rw-r--r--kradio3/presets/usa/Idaho_am.krp158
-rw-r--r--kradio3/presets/usa/Idaho_fm.krp254
-rw-r--r--kradio3/presets/usa/Illinois.krp998
-rw-r--r--kradio3/presets/usa/Illinois_am.krp382
-rw-r--r--kradio3/presets/usa/Illinois_fm.krp630
-rw-r--r--kradio3/presets/usa/Indiana.krp854
-rw-r--r--kradio3/presets/usa/Indiana_am.krp278
-rw-r--r--kradio3/presets/usa/Indiana_fm.krp590
-rw-r--r--kradio3/presets/usa/Iowa.krp750
-rw-r--r--kradio3/presets/usa/Iowa_am.krp246
-rw-r--r--kradio3/presets/usa/Iowa_fm.krp518
-rw-r--r--kradio3/presets/usa/Kansas.krp550
-rw-r--r--kradio3/presets/usa/Kansas_am.krp174
-rw-r--r--kradio3/presets/usa/Kansas_fm.krp390
-rw-r--r--kradio3/presets/usa/Kentucky.krp622
-rw-r--r--kradio3/presets/usa/Kentucky_am.krp190
-rw-r--r--kradio3/presets/usa/Kentucky_fm.krp446
-rw-r--r--kradio3/presets/usa/Louisiana.krp758
-rw-r--r--kradio3/presets/usa/Louisiana_am.krp246
-rw-r--r--kradio3/presets/usa/Louisiana_fm.krp526
-rw-r--r--kradio3/presets/usa/Maine.krp254
-rw-r--r--kradio3/presets/usa/Maine_am.krp54
-rw-r--r--kradio3/presets/usa/Maine_fm.krp214
-rw-r--r--kradio3/presets/usa/Makefile.am390
-rw-r--r--kradio3/presets/usa/Manitoba.krp118
-rw-r--r--kradio3/presets/usa/Manitoba_am.krp54
-rw-r--r--kradio3/presets/usa/Manitoba_fm.krp78
-rw-r--r--kradio3/presets/usa/Maryland.krp454
-rw-r--r--kradio3/presets/usa/Maryland_am.krp158
-rw-r--r--kradio3/presets/usa/Maryland_fm.krp310
-rw-r--r--kradio3/presets/usa/Massachusetts.krp718
-rw-r--r--kradio3/presets/usa/Massachusetts_am.krp286
-rw-r--r--kradio3/presets/usa/Massachusetts_fm.krp446
-rw-r--r--kradio3/presets/usa/Michigan.krp1014
-rw-r--r--kradio3/presets/usa/Michigan_am.krp374
-rw-r--r--kradio3/presets/usa/Michigan_fm.krp654
-rw-r--r--kradio3/presets/usa/Minnesota.krp782
-rw-r--r--kradio3/presets/usa/Minnesota_am.krp294
-rw-r--r--kradio3/presets/usa/Minnesota_fm.krp502
-rw-r--r--kradio3/presets/usa/Mississippi.krp598
-rw-r--r--kradio3/presets/usa/Mississippi_am.krp142
-rw-r--r--kradio3/presets/usa/Mississippi_fm.krp470
-rw-r--r--kradio3/presets/usa/Missouri.krp1086
-rw-r--r--kradio3/presets/usa/Missouri_am.krp438
-rw-r--r--kradio3/presets/usa/Missouri_fm.krp662
-rw-r--r--kradio3/presets/usa/Montana.krp478
-rw-r--r--kradio3/presets/usa/Montana_am.krp190
-rw-r--r--kradio3/presets/usa/Montana_fm.krp302
-rw-r--r--kradio3/presets/usa/Nebraska.krp630
-rw-r--r--kradio3/presets/usa/Nebraska_am.krp214
-rw-r--r--kradio3/presets/usa/Nebraska_fm.krp430
-rw-r--r--kradio3/presets/usa/Nevada.krp406
-rw-r--r--kradio3/presets/usa/Nevada_am.krp134
-rw-r--r--kradio3/presets/usa/Nevada_fm.krp286
-rw-r--r--kradio3/presets/usa/New Brunswick.krp62
-rw-r--r--kradio3/presets/usa/New Brunswick_am.krp22
-rw-r--r--kradio3/presets/usa/New Brunswick_fm.krp54
-rw-r--r--kradio3/presets/usa/New Hampshire.krp302
-rw-r--r--kradio3/presets/usa/New Hampshire_am.krp102
-rw-r--r--kradio3/presets/usa/New Hampshire_fm.krp214
-rw-r--r--kradio3/presets/usa/New Jersey.krp334
-rw-r--r--kradio3/presets/usa/New Jersey_am.krp102
-rw-r--r--kradio3/presets/usa/New Jersey_fm.krp246
-rw-r--r--kradio3/presets/usa/New Mexico.krp478
-rw-r--r--kradio3/presets/usa/New Mexico_am.krp158
-rw-r--r--kradio3/presets/usa/New Mexico_fm.krp334
-rw-r--r--kradio3/presets/usa/New York.krp1214
-rw-r--r--kradio3/presets/usa/New York_am.krp502
-rw-r--r--kradio3/presets/usa/New York_fm.krp726
-rw-r--r--kradio3/presets/usa/Newfoundland.krp22
-rw-r--r--kradio3/presets/usa/Newfoundland_am.krp14
-rw-r--r--kradio3/presets/usa/Newfoundland_fm.krp22
-rw-r--r--kradio3/presets/usa/North Carolina.krp862
-rw-r--r--kradio3/presets/usa/North Carolina_am.krp350
-rw-r--r--kradio3/presets/usa/North Carolina_fm.krp526
-rw-r--r--kradio3/presets/usa/North Dakota.krp286
-rw-r--r--kradio3/presets/usa/North Dakota_am.krp102
-rw-r--r--kradio3/presets/usa/North Dakota_fm.krp198
-rw-r--r--kradio3/presets/usa/Nova Scotia.krp38
-rw-r--r--kradio3/presets/usa/Nova Scotia_am.krp22
-rw-r--r--kradio3/presets/usa/Nova Scotia_fm.krp30
-rw-r--r--kradio3/presets/usa/Ohio.krp1118
-rw-r--r--kradio3/presets/usa/Ohio_am.krp446
-rw-r--r--kradio3/presets/usa/Ohio_fm.krp686
-rw-r--r--kradio3/presets/usa/Oklahoma.krp646
-rw-r--r--kradio3/presets/usa/Oklahoma_am.krp206
-rw-r--r--kradio3/presets/usa/Oklahoma_fm.krp454
-rw-r--r--kradio3/presets/usa/Ontario.krp622
-rw-r--r--kradio3/presets/usa/Ontario_am.krp222
-rw-r--r--kradio3/presets/usa/Ontario_fm.krp414
-rw-r--r--kradio3/presets/usa/Oregon.krp894
-rw-r--r--kradio3/presets/usa/Oregon_am.krp406
-rw-r--r--kradio3/presets/usa/Oregon_fm.krp502
-rw-r--r--kradio3/presets/usa/Pennsylvania.krp1102
-rw-r--r--kradio3/presets/usa/Pennsylvania_am.krp430
-rw-r--r--kradio3/presets/usa/Pennsylvania_fm.krp686
-rw-r--r--kradio3/presets/usa/Quebec.krp110
-rw-r--r--kradio3/presets/usa/Quebec_am.krp30
-rw-r--r--kradio3/presets/usa/Quebec_fm.krp94
-rw-r--r--kradio3/presets/usa/Rhode Island.krp198
-rw-r--r--kradio3/presets/usa/Rhode Island_am.krp86
-rw-r--r--kradio3/presets/usa/Rhode Island_fm.krp126
-rw-r--r--kradio3/presets/usa/Saint Paul (Minneapolis).krp22
-rw-r--r--kradio3/presets/usa/Salina (Kansas)_fm.krp102
-rw-r--r--kradio3/presets/usa/Saskatchewan.krp110
-rw-r--r--kradio3/presets/usa/Saskatchewan_am.krp70
-rw-r--r--kradio3/presets/usa/Saskatchewan_fm.krp54
-rw-r--r--kradio3/presets/usa/South Carolina.krp534
-rw-r--r--kradio3/presets/usa/South Carolina_am.krp150
-rw-r--r--kradio3/presets/usa/South Carolina_fm.krp398
-rw-r--r--kradio3/presets/usa/South Dakota.krp342
-rw-r--r--kradio3/presets/usa/South Dakota_am.krp126
-rw-r--r--kradio3/presets/usa/South Dakota_fm.krp230
-rw-r--r--kradio3/presets/usa/Tennessee.krp838
-rw-r--r--kradio3/presets/usa/Tennessee_am.krp374
-rw-r--r--kradio3/presets/usa/Tennessee_fm.krp478
-rw-r--r--kradio3/presets/usa/Texas.krp1366
-rw-r--r--kradio3/presets/usa/Texas_am.krp654
-rw-r--r--kradio3/presets/usa/Texas_fm.krp726
-rw-r--r--kradio3/presets/usa/Utah.krp414
-rw-r--r--kradio3/presets/usa/Utah_am.krp190
-rw-r--r--kradio3/presets/usa/Utah_fm.krp238
-rw-r--r--kradio3/presets/usa/Vermont.krp342
-rw-r--r--kradio3/presets/usa/Vermont_am.krp102
-rw-r--r--kradio3/presets/usa/Vermont_fm.krp254
-rw-r--r--kradio3/presets/usa/Virginia.krp902
-rw-r--r--kradio3/presets/usa/Virginia_am.krp358
-rw-r--r--kradio3/presets/usa/Virginia_fm.krp558
-rw-r--r--kradio3/presets/usa/Washington.krp990
-rw-r--r--kradio3/presets/usa/Washington_am.krp430
-rw-r--r--kradio3/presets/usa/Washington_fm.krp574
-rw-r--r--kradio3/presets/usa/West Virginia.krp526
-rw-r--r--kradio3/presets/usa/West Virginia_am.krp158
-rw-r--r--kradio3/presets/usa/West Virginia_fm.krp382
-rw-r--r--kradio3/presets/usa/Wisconsin.krp910
-rw-r--r--kradio3/presets/usa/Wisconsin_am.krp350
-rw-r--r--kradio3/presets/usa/Wisconsin_fm.krp574
-rw-r--r--kradio3/presets/usa/Wyoming.krp286
-rw-r--r--kradio3/presets/usa/Wyoming_am.krp110
-rw-r--r--kradio3/presets/usa/Wyoming_fm.krp190
-rw-r--r--kradio3/presets/usa/college-park,GA.krp215
-rw-r--r--kradio3/presets/usa/houston.krp110
-rw-r--r--kradio3/presets/usa/los-angeles-antenna.krp351
-rw-r--r--kradio3/presets/usa/oregon-portland-antenna.2.krp166
-rw-r--r--kradio3/presets/usa/oregon-portland-antenna.krp214
-rw-r--r--kradio3/src/Makefile.am104
-rw-r--r--kradio3/src/aboutwidget.cpp611
-rw-r--r--kradio3/src/alarm.cpp82
-rw-r--r--kradio3/src/debug-profiler.cpp138
-rw-r--r--kradio3/src/errorlog-interfaces.cpp111
-rw-r--r--kradio3/src/fileringbuffer.cpp252
-rw-r--r--kradio3/src/frequencyradiostation.cpp200
-rw-r--r--kradio3/src/frequencyseekhelper.cpp142
-rw-r--r--kradio3/src/include/aboutwidget.h147
-rw-r--r--kradio3/src/include/alarm.h104
-rw-r--r--kradio3/src/include/debug-profiler.h112
-rw-r--r--kradio3/src/include/errorlog-interfaces.h64
-rw-r--r--kradio3/src/include/fileringbuffer.h71
-rw-r--r--kradio3/src/include/frequencyradiostation.h83
-rw-r--r--kradio3/src/include/frequencyseekhelper.h77
-rw-r--r--kradio3/src/include/gui_list_helper.h174
-rw-r--r--kradio3/src/include/interfaces.h714
-rw-r--r--kradio3/src/include/internetradiostation.h75
-rw-r--r--kradio3/src/include/kradioapp.h120
-rw-r--r--kradio3/src/include/kradioversion.h23
-rw-r--r--kradio3/src/include/multibuffer.h65
-rw-r--r--kradio3/src/include/plugin_configuration_dialog.h74
-rw-r--r--kradio3/src/include/pluginmanager-configuration.h60
-rw-r--r--kradio3/src/include/pluginmanager.h147
-rw-r--r--kradio3/src/include/plugins.h192
-rw-r--r--kradio3/src/include/radio_interfaces.h117
-rw-r--r--kradio3/src/include/radiodevice_interfaces.h353
-rw-r--r--kradio3/src/include/radiodevicepool_interfaces.h75
-rw-r--r--kradio3/src/include/radiostation-config.h79
-rw-r--r--kradio3/src/include/radiostation-listview.h83
-rw-r--r--kradio3/src/include/radiostation.h164
-rw-r--r--kradio3/src/include/ringbuffer.h58
-rw-r--r--kradio3/src/include/seekhelper.h83
-rw-r--r--kradio3/src/include/sound_metadata.h50
-rw-r--r--kradio3/src/include/soundformat.h75
-rw-r--r--kradio3/src/include/soundstreamclient_interfaces.h372
-rw-r--r--kradio3/src/include/soundstreamid.h63
-rw-r--r--kradio3/src/include/standardscandialog.h100
-rw-r--r--kradio3/src/include/station-drag-object.h39
-rw-r--r--kradio3/src/include/stationlist.h159
-rw-r--r--kradio3/src/include/stationlistmetadata.h55
-rw-r--r--kradio3/src/include/stationlistxmlhandler.h85
-rw-r--r--kradio3/src/include/stationselection_interfaces.h67
-rw-r--r--kradio3/src/include/stationselector.h99
-rw-r--r--kradio3/src/include/timecontrol_interfaces.h106
-rw-r--r--kradio3/src/include/utils.h47
-rw-r--r--kradio3/src/include/widgetplugins.h75
-rw-r--r--kradio3/src/internetradiostation.cpp176
-rw-r--r--kradio3/src/kradio.desktop13
-rw-r--r--kradio3/src/kradioapp.cpp370
-rw-r--r--kradio3/src/main.cpp73
-rw-r--r--kradio3/src/multibuffer.cpp131
-rw-r--r--kradio3/src/plugin_configuration_dialog.cpp103
-rw-r--r--kradio3/src/pluginmanager-configuration-ui.ui396
-rw-r--r--kradio3/src/pluginmanager-configuration.cpp171
-rw-r--r--kradio3/src/pluginmanager.cpp538
-rw-r--r--kradio3/src/plugins.cpp84
-rw-r--r--kradio3/src/po/Makefile.am2
-rw-r--r--kradio3/src/po/de.po552
-rw-r--r--kradio3/src/po/es.po1333
-rw-r--r--kradio3/src/po/pl.po1290
-rw-r--r--kradio3/src/po/ru.po547
-rw-r--r--kradio3/src/radio_interfaces.cpp96
-rw-r--r--kradio3/src/radiodevice_interfaces.cpp330
-rw-r--r--kradio3/src/radiodevicepool_interfaces.cpp65
-rw-r--r--kradio3/src/radiostation-config.cpp102
-rw-r--r--kradio3/src/radiostation-listview.cpp259
-rw-r--r--kradio3/src/radiostation.cpp216
-rw-r--r--kradio3/src/ringbuffer.cpp173
-rw-r--r--kradio3/src/seekhelper.cpp134
-rw-r--r--kradio3/src/soundformat.cpp270
-rw-r--r--kradio3/src/soundstreamclient_interfaces.cpp426
-rw-r--r--kradio3/src/soundstreamid.cpp70
-rw-r--r--kradio3/src/standardscandialog-ui.ui136
-rw-r--r--kradio3/src/standardscandialog.cpp183
-rw-r--r--kradio3/src/station-drag-object.cpp93
-rw-r--r--kradio3/src/stationlist.cpp494
-rw-r--r--kradio3/src/stationlistxmlhandler.cpp230
-rw-r--r--kradio3/src/stationselection_interfaces.cpp47
-rw-r--r--kradio3/src/stationselector-ui.ui173
-rw-r--r--kradio3/src/stationselector.cpp321
-rw-r--r--kradio3/src/timecontrol_interfaces.cpp104
-rw-r--r--kradio3/src/utils.cpp69
-rw-r--r--kradio3/src/widgetplugins.cpp235
-rw-r--r--stamp-h.in0
-rw-r--r--subdirs1
815 files changed, 180606 insertions, 0 deletions
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 0000000..ace0790
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,22 @@
+## (C) 1997 Stephan Kulow
+
+AUTOMAKE_OPTIONS = foreign
+DISTCLEANFILES = inst-apps
+
+install-data-local:
+ @echo ""
+ @echo ""
+ @echo "*************** Important *************************"
+ @echo ""
+ @echo "This module contains unreleased software."
+ @echo ""
+ @echo "The software may compile and work, but it may just"
+ @echo "as well neither compile nor work."
+ @echo ""
+ @echo "****************************************************"
+ @echo ""
+
+include admin/deps.am
+
+
+SUBDIRS=$(TOPSUBDIRS)
diff --git a/Makefile.am.in b/Makefile.am.in
new file mode 100644
index 0000000..27cc96a
--- /dev/null
+++ b/Makefile.am.in
@@ -0,0 +1,21 @@
+## (C) 1997 Stephan Kulow
+
+AUTOMAKE_OPTIONS = foreign
+DISTCLEANFILES = inst-apps
+
+install-data-local:
+ @echo ""
+ @echo ""
+ @echo "*************** Important *************************"
+ @echo ""
+ @echo "This module contains unreleased software."
+ @echo ""
+ @echo "The software may compile and work, but it may just"
+ @echo "as well neither compile nor work."
+ @echo ""
+ @echo "****************************************************"
+ @echo ""
+
+include admin/deps.am
+
+
diff --git a/Makefile.cvs b/Makefile.cvs
new file mode 100644
index 0000000..ed52443
--- /dev/null
+++ b/Makefile.cvs
@@ -0,0 +1,25 @@
+
+all:
+ @echo "This Makefile is only for the CVS repository"
+ @echo "This will be deleted before making the distribution"
+ @echo ""
+ @if test ! -d admin; then \
+ echo "Please recheckout this module!" ;\
+ echo "for cvs: use checkout once and after that update again" ;\
+ echo "for cvsup: checkout kde-common from cvsup and" ;\
+ echo " link kde-common/admin to ./admin" ;\
+ exit 1 ;\
+ fi
+# $(MAKE) -f admin/Makefile.common extract-messages
+# $(MAKE) -f admin/Makefile.common package-messages
+# $(MAKE) -C kradio3/src/po -f ../../../admin/Makefile.common PACKAGE="kradio" POFILES="*.po" package-merge
+# @for po in kradio3/plugins/*/po ; do \
+# echo $$po ; \
+# $(MAKE) -C $$po -f ../../../../admin/Makefile.common \
+# PACKAGE=`grep PACKAGE $$po/Makefile.am | sed "s/^.*= *//"` \
+# POFILES="*.po" \
+# package-merge ; \
+# done
+ $(MAKE) -f admin/Makefile.common cvs
+
+.SILENT:
diff --git a/Makefile.i18n b/Makefile.i18n
new file mode 100644
index 0000000..8c9349b
--- /dev/null
+++ b/Makefile.i18n
@@ -0,0 +1,25 @@
+
+all:
+ @echo "This Makefile is only for the CVS repository"
+ @echo "This will be deleted before making the distribution"
+ @echo ""
+ @if test ! -d admin; then \
+ echo "Please recheckout this module!" ;\
+ echo "for cvs: use checkout once and after that update again" ;\
+ echo "for cvsup: checkout kde-common from cvsup and" ;\
+ echo " link kde-common/admin to ./admin" ;\
+ exit 1 ;\
+ fi
+ $(MAKE) -f admin/Makefile.common extract-messages
+ $(MAKE) -f admin/Makefile.common package-messages
+ $(MAKE) -C kradio3/src/po -f ../../../admin/Makefile.common PACKAGE="kradio" POFILES="*.po" package-merge
+ @for po in kradio3/plugins/*/po ; do \
+ echo $$po ; \
+ $(MAKE) -C $$po -f ../../../../admin/Makefile.common \
+ PACKAGE=`grep PACKAGE $$po/Makefile.am | sed "s/^.*= *//"` \
+ POFILES="*.po" \
+ package-merge ; \
+ done
+ $(MAKE) -f admin/Makefile.common cvs
+
+.SILENT:
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644
index 0000000..cd6aff5
--- /dev/null
+++ b/aclocal.m4
@@ -0,0 +1,985 @@
+# generated automatically by aclocal 1.11 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.64],,
+[m4_warning([this file was generated for autoconf 2.64.
+You have another version of autoconf. It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically `autoreconf'.])])
+
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.11'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version. Point them to the right macro.
+m4_if([$1], [1.11], [],
+ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too. Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.11])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory. The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run. This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+# fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+# fails if $ac_aux_dir is absolute,
+# fails when called from a subdirectory in a VPATH build with
+# a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir. In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
+# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+# MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH. The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 9
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 10
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery. Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
+ [$1], CXX, [depcc="$CXX" am_compiler_list=],
+ [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+ [$1], UPC, [depcc="$UPC" am_compiler_list=],
+ [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
+ [depcc="$$1" am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+ [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_$1_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+ fi
+ am__universal=false
+ m4_case([$1], [CC],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac],
+ [CXX],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac])
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_$1_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+])
+
+# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+#serial 5
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+ # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`AS_DIRNAME("$mf")`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`AS_DIRNAME(["$file"])`
+ AS_MKDIR_P([$dirpart/$fdir])
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled. FIXME. This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 8
+
+# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
+AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
+
+# Do all the work for Automake. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 16
+
+# This macro actually does too much. Some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out. PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition. After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.62])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES(CC)],
+ [define([AC_PROG_CC],
+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES(CXX)],
+ [define([AC_PROG_CXX],
+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+ [_AM_DEPENDENCIES(OBJC)],
+ [define([AC_PROG_OBJC],
+ defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+ [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+])
+
+dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated. The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+AC_SUBST(install_sh)])
+
+# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot. For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_PROG_LEX
+# -----------
+# Autoconf leaves LEX=: if lex or flex can't be found. Change that to a
+# "missing" invocation, for better error output.
+AC_DEFUN([AM_PROG_LEX],
+[AC_PREREQ(2.50)dnl
+AC_REQUIRE([AM_MISSING_HAS_RUN])dnl
+AC_REQUIRE([AC_PROG_LEX])dnl
+if test "$LEX" = :; then
+ LEX=${am_missing_run}flex
+fi])
+
+# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 6
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check for `mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+ [[\\/$]]* | ?:[[\\/]]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME. Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[[\\\"\#\$\&\'\`$am_lf]]*)
+ AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+ *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
+ AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+alias in your environment])
+ fi
+
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries. This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+# tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+# $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+ [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+ [m4_case([$1], [ustar],, [pax],,
+ [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([acinclude.m4])
diff --git a/config.h.in b/config.h.in
new file mode 100644
index 0000000..f4be3d9
--- /dev/null
+++ b/config.h.in
@@ -0,0 +1,441 @@
+/* config.h.in. Generated from configure.in by autoheader. */
+
+/* Define this if ALSA library is available and should be used */
+#undef HAVE_ALSA
+
+/* Define to 1 if you have the <Carbon/Carbon.h> header file. */
+#undef HAVE_CARBON_CARBON_H
+
+/* Define if you have the CoreAudio API */
+#undef HAVE_COREAUDIO
+
+/* Define to 1 if you have the <crt_externs.h> header file. */
+#undef HAVE_CRT_EXTERNS_H
+
+/* Defines if your system has the crypt function */
+#undef HAVE_CRYPT
+
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_DIRENT_H
+
+/* Define if you have dlfcn */
+#undef HAVE_DLFCN
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the <dl.h> header file. */
+#undef HAVE_DL_H
+
+/* Define to 1 if you have the `fabsl' function. */
+#undef HAVE_FABSL
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#undef HAVE_FCNTL_H
+
+/* Define to 1 if you have the `flock' function. */
+#undef HAVE_FLOCK
+
+/* Define to 1 if you have the <fnmatch.h> header file. */
+#undef HAVE_FNMATCH_H
+
+/* Define if you have getdomainname */
+#undef HAVE_GETDOMAINNAME
+
+/* Define if you have the getdomainname prototype */
+#undef HAVE_GETDOMAINNAME_PROTO
+
+/* Define if you have gethostname */
+#undef HAVE_GETHOSTNAME
+
+/* Define if you have the gethostname prototype */
+#undef HAVE_GETHOSTNAME_PROTO
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define this if lame mp3 encoder library is available and should be used */
+#undef HAVE_LAME
+
+/* Define to 1 if you have the `asound' library (-lasound). */
+#undef HAVE_LIBASOUND
+
+/* Define if you have libjpeg */
+#undef HAVE_LIBJPEG
+
+/* Define to 1 if you have the `lirc_client' library (-llirc_client). */
+#undef HAVE_LIBLIRC_CLIENT
+
+/* Define to 1 if you have the `mp3lame' library (-lmp3lame). */
+#undef HAVE_LIBMP3LAME
+
+/* Define to 1 if you have the `ogg' library (-logg). */
+#undef HAVE_LIBOGG
+
+/* Define if you have libpng */
+#undef HAVE_LIBPNG
+
+/* Define if you have a working libpthread (will enable threaded code) */
+#undef HAVE_LIBPTHREAD
+
+/* Define to 1 if you have the `sndfile' library (-lsndfile). */
+#undef HAVE_LIBSNDFILE
+
+/* Define to 1 if you have the `vorbisenc' library (-lvorbisenc). */
+#undef HAVE_LIBVORBISENC
+
+/* Define if you have libz */
+#undef HAVE_LIBZ
+
+/* Define to 1 if you have the <linux/tcp.h> header file. */
+#undef HAVE_LINUX_TCP_H
+
+/* Define this if lirc client library is available and should be used */
+#undef HAVE_LIRC
+
+/* Define to 1 if the type `long double' works and has more range or precision
+ than `double'. */
+#undef HAVE_LONG_DOUBLE
+
+/* Define to 1 if the type `long double' works and has more range or precision
+ than `double'. */
+#undef HAVE_LONG_DOUBLE_WIDER
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+#undef HAVE_NDIR_H
+
+/* Define if your system needs _NSGetEnviron to set up the environment */
+#undef HAVE_NSGETENVIRON
+
+/* Define this if OGG/Vorbis encoder library is available and should be used
+ */
+#undef HAVE_OGG
+
+/* Define to 1 if you have the <paths.h> header file. */
+#undef HAVE_PATHS_H
+
+/* Define if you have res_init */
+#undef HAVE_RES_INIT
+
+/* Define if you have the res_init prototype */
+#undef HAVE_RES_INIT_PROTO
+
+/* Define to 1 if you have the `re_comp' function. */
+#undef HAVE_RE_COMP
+
+/* Define if you have setenv */
+#undef HAVE_SETENV
+
+/* Define if you have the setenv prototype */
+#undef HAVE_SETENV_PROTO
+
+/* Define if you have a STL implementation by SGI */
+#undef HAVE_SGI_STL
+
+/* Define if you have shload */
+#undef HAVE_SHLOAD
+
+/* Define to 1 if you have the <sndfile.h> header file. */
+#undef HAVE_SNDFILE_H
+
+/* Define to 1 if you have the `snprintf' function. */
+#undef HAVE_SNPRINTF
+
+/* Define to 1 if you have the `socket' function. */
+#undef HAVE_SOCKET
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the `strdup' function. */
+#undef HAVE_STRDUP
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define if you have strlcat */
+#undef HAVE_STRLCAT
+
+/* Define if you have the strlcat prototype */
+#undef HAVE_STRLCAT_PROTO
+
+/* Define if you have strlcpy */
+#undef HAVE_STRLCPY
+
+/* Define if you have the strlcpy prototype */
+#undef HAVE_STRLCPY_PROTO
+
+/* Define to 1 if you have the <sysent.h> header file. */
+#undef HAVE_SYSENT_H
+
+/* Define to 1 if you have the <sys/bitypes.h> header file. */
+#undef HAVE_SYS_BITYPES_H
+
+/* Define to 1 if you have the <sys/cdefs.h> header file. */
+#undef HAVE_SYS_CDEFS_H
+
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_SYS_DIR_H
+
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_SYS_NDIR_H
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_H
+
+/* Define to 1 if you have the <sys/proc.h> header file. */
+#undef HAVE_SYS_PROC_H
+
+/* Define to 1 if you have the <sys/soundcard.h> header file. */
+#undef HAVE_SYS_SOUNDCARD_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#undef HAVE_SYS_TIME_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define if you have unsetenv */
+#undef HAVE_UNSETENV
+
+/* Define if you have the unsetenv prototype */
+#undef HAVE_UNSETENV_PROTO
+
+/* Define to 1 if you have the <utmp.h> header file. */
+#undef HAVE_UTMP_H
+
+/* Define if you have V4L2 support */
+#undef HAVE_V4L2
+
+/* Define to 1 if you have the `vsnprintf' function. */
+#undef HAVE_VSNPRINTF
+
+/* Suffix for lib directories */
+#undef KDELIBSUFF
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
+#undef LT_OBJDIR
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* The size of `char *', as computed by sizeof. */
+#undef SIZEOF_CHAR_P
+
+/* The size of `int', as computed by sizeof. */
+#undef SIZEOF_INT
+
+/* The size of `long', as computed by sizeof. */
+#undef SIZEOF_LONG
+
+/* The size of `short', as computed by sizeof. */
+#undef SIZEOF_SHORT
+
+/* The size of `size_t', as computed by sizeof. */
+#undef SIZEOF_SIZE_T
+
+/* The size of `unsigned long', as computed by sizeof. */
+#undef SIZEOF_UNSIGNED_LONG
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#undef TIME_WITH_SYS_TIME
+
+/* Version number of package */
+#undef VERSION
+
+/* Defined if compiling without arts */
+#undef WITHOUT_ARTS
+
+/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
+ `char[]'. */
+#undef YYTEXT_POINTER
+
+/*
+ * jpeg.h needs HAVE_BOOLEAN, when the system uses boolean in system
+ * headers and I'm too lazy to write a configure test as long as only
+ * unixware is related
+ */
+#ifdef _UNIXWARE
+#define HAVE_BOOLEAN
+#endif
+
+
+
+/*
+ * AIX defines FD_SET in terms of bzero, but fails to include <strings.h>
+ * that defines bzero.
+ */
+
+#if defined(_AIX)
+#include <strings.h>
+#endif
+
+
+
+#if defined(HAVE_NSGETENVIRON) && defined(HAVE_CRT_EXTERNS_H)
+# include <sys/time.h>
+# include <crt_externs.h>
+# define environ (*_NSGetEnviron())
+#endif
+
+
+
+#if !defined(HAVE_GETDOMAINNAME_PROTO)
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <sys/types.h>
+ int getdomainname (char *, size_t);
+#ifdef __cplusplus
+}
+#endif
+#endif
+
+
+
+#if !defined(HAVE_GETHOSTNAME_PROTO)
+#ifdef __cplusplus
+extern "C" {
+#endif
+int gethostname (char *, unsigned int);
+#ifdef __cplusplus
+}
+#endif
+#endif
+
+
+
+#if !defined(HAVE_RES_INIT_PROTO)
+#ifdef __cplusplus
+extern "C" {
+#endif
+int res_init(void);
+#ifdef __cplusplus
+}
+#endif
+#endif
+
+
+
+#if !defined(HAVE_SETENV_PROTO)
+#ifdef __cplusplus
+extern "C" {
+#endif
+int setenv (const char *, const char *, int);
+#ifdef __cplusplus
+}
+#endif
+#endif
+
+
+
+#if !defined(HAVE_STRLCAT_PROTO)
+#ifdef __cplusplus
+extern "C" {
+#endif
+unsigned long strlcat(char*, const char*, unsigned long);
+#ifdef __cplusplus
+}
+#endif
+#endif
+
+
+
+#if !defined(HAVE_STRLCPY_PROTO)
+#ifdef __cplusplus
+extern "C" {
+#endif
+unsigned long strlcpy(char*, const char*, unsigned long);
+#ifdef __cplusplus
+}
+#endif
+#endif
+
+
+
+#if !defined(HAVE_UNSETENV_PROTO)
+#ifdef __cplusplus
+extern "C" {
+#endif
+void unsetenv (const char *);
+#ifdef __cplusplus
+}
+#endif
+#endif
+
+
+
+/*
+ * On HP-UX, the declaration of vsnprintf() is needed every time !
+ */
+
+#if !defined(HAVE_VSNPRINTF) || defined(hpux)
+#if __STDC__
+#include <stdarg.h>
+#include <stdlib.h>
+#else
+#include <varargs.h>
+#endif
+#ifdef __cplusplus
+extern "C"
+#endif
+int vsnprintf(char *str, size_t n, char const *fmt, va_list ap);
+#ifdef __cplusplus
+extern "C"
+#endif
+int snprintf(char *str, size_t n, char const *fmt, ...);
+#endif
+
+
+
+#if defined(__SVR4) && !defined(__svr4__)
+#define __svr4__ 1
+#endif
+
+
+/* type to use in place of socklen_t if not defined */
+#undef kde_socklen_t
+
+/* type to use in place of socklen_t if not defined (deprecated, use
+ kde_socklen_t) */
+#undef ksize_t
diff --git a/configure.files b/configure.files
new file mode 100644
index 0000000..0b41701
--- /dev/null
+++ b/configure.files
@@ -0,0 +1,3 @@
+./admin/configure.in.min
+configure.in.in
+./kradio3/configure.in.in
diff --git a/configure.in b/configure.in
new file mode 100644
index 0000000..0216ec3
--- /dev/null
+++ b/configure.in
@@ -0,0 +1,434 @@
+dnl =======================================================
+dnl FILE: ./admin/configure.in.min
+dnl =======================================================
+
+dnl This file is part of the KDE libraries/packages
+dnl Copyright (C) 2001 Stephan Kulow (coolo@kde.org)
+
+dnl This file is free software; you can redistribute it and/or
+dnl modify it under the terms of the GNU Library General Public
+dnl License as published by the Free Software Foundation; either
+dnl version 2 of the License, or (at your option) any later version.
+
+dnl This library is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+dnl Library General Public License for more details.
+
+dnl You should have received a copy of the GNU Library General Public License
+dnl along with this library; see the file COPYING.LIB. If not, write to
+dnl the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+dnl Boston, MA 02110-1301, USA.
+
+# Original Author was Kalle@kde.org
+# I lifted it in some mater. (Stephan Kulow)
+# I used much code from Janos Farkas
+
+dnl Process this file with autoconf to produce a configure script.
+
+AC_INIT(acinclude.m4) dnl a source file from your sub dir
+
+dnl This is so we can use kde-common
+AC_CONFIG_AUX_DIR(admin)
+
+dnl This ksh/zsh feature conflicts with `cd blah ; pwd`
+unset CDPATH
+
+dnl Checking host/target/build systems, for make, install etc.
+AC_CANONICAL_SYSTEM
+dnl Perform program name transformation
+AC_ARG_PROGRAM
+
+dnl Automake doc recommends to do this only here. (Janos)
+AM_INIT_AUTOMAKE(kradio-0.1.1.1~20061112, "3.5.5") dnl searches for some needed programs
+
+KDE_SET_PREFIX
+
+dnl generate the config header
+AM_CONFIG_HEADER(config.h) dnl at the distribution this done
+
+dnl Checks for programs.
+AC_PROG_CC
+AC_PROG_CXX
+AC_CHECK_COMPILERS
+AC_ENABLE_SHARED(yes)
+AC_ENABLE_STATIC(no)
+KDE_PROG_LIBTOOL
+
+dnl for NLS support. Call them in this order!
+dnl WITH_NLS is for the po files
+AM_KDE_WITH_NLS
+
+KDE_USE_QT(3.3)
+AC_PATH_KDE
+dnl =======================================================
+dnl FILE: configure.in.in
+dnl =======================================================
+
+#MIN_CONFIG(3.3)
+# Define a symbol, to know that we're compiling WITH kde. (for apps that
+# can compile without KDE, optionally)
+AM_CONDITIONAL(KDE_INSTALLED, test "$have_kde" = "yes")
+
+dnl Checks for header files.
+AC_HEADER_DIRENT
+AC_HEADER_STDC
+AC_CHECK_HEADERS(fcntl.h sys/time.h sys/stat.h stdint.h)
+AC_CHECK_HEADERS(sys/cdefs.h fnmatch.h sysent.h strings.h paths.h)
+AC_CHECK_HEADERS(utmp.h sys/param.h linux/tcp.h sys/proc.h)
+
+dnl Checks for typedefs, structures, and compiler characteristics.
+AC_HEADER_TIME
+
+AC_C_LONG_DOUBLE
+
+dnl Checks for library functions.
+KDE_CHECK_DLOPEN
+AC_CHECK_FUNCS(socket fabsl strdup vsnprintf re_comp flock)
+AC_CHECK_SETENV
+AC_CHECK_UNSETENV
+AC_CHECK_GETDOMAINNAME
+AC_CHECK_GETHOSTNAME
+AM_PROG_LEX
+LFLAGS="-o${LEX_OUTPUT_ROOT}.c"
+AC_SUBST(LFLAGS)
+dnl =======================================================
+dnl FILE: ./kradio3/configure.in.in
+dnl =======================================================
+
+#MIN_CONFIG(3.2)
+
+
+CXXFLAGS="$CXXFLAGS $KDE_DEFAULT_CXXFLAGS"
+
+dnl --------------------------------------------------------------------
+dnl Check for LIRC client support
+
+PLUGIN_LIRC=
+LIB_LIRC=
+
+AC_ARG_ENABLE(lirc, AC_HELP_STRING([--enable-lirc], [enable use of LIRC if found, default = true]))
+if test -z "$enable_lirc" -o "$enable_lirc" = "yes"; then
+
+ have_lirc=yes
+ KDE_CHECK_LIB(lirc_client,lirc_init,,have_lirc=no)
+ if test "$have_lirc" = "yes"; then
+ KDE_CHECK_HEADER(lirc/lirc_client.h,,have_lirc=no)
+ fi
+
+ AC_MSG_CHECKING([for lirc support])
+
+ if test "$have_lirc" = "yes"; then
+ AC_DEFINE(HAVE_LIRC, 1, [Define this if lirc client library is available and should be used])
+ LIB_LIRC="-llirc_client"
+ PLUGIN_LIRC=lirc
+ AC_MSG_RESULT([enabled])
+ else
+ AC_MSG_RESULT([disabled])
+ fi
+
+
+else
+
+ AC_MSG_CHECKING([for lirc support])
+ AC_MSG_RESULT([disabled])
+
+fi
+
+AC_SUBST(LIB_LIRC)
+AC_SUBST(PLUGIN_LIRC)
+
+
+dnl ---------------------------------------------------------------------
+dnl V4L2
+
+
+AC_ARG_ENABLE(v4l2, AC_HELP_STRING([--enable-v4l2], [enable use of V4L2 if found, default = true]))
+if test -z "$enable_v4l2" -o "$enable_v4l2" = "yes"; then
+
+ AC_MSG_CHECKING([for v4l2 support])
+ AC_DEFINE_UNQUOTED(HAVE_V4L2, 1, [Define if you have V4L2 support])
+ AC_MSG_RESULT([v4l2 support enabled])
+
+else
+
+ AC_MSG_CHECKING([for v4l2 support])
+ AC_MSG_RESULT([disabled])
+
+fi
+
+dnl ---------------------------------------------------------------------
+dnl LibSndFile
+
+AC_CHECK_LIB(sndfile, sf_open, [], AC_MSG_ERROR([libsndfile not found]))
+AC_CHECK_HEADERS([sndfile.h], [], AC_MSG_ERROR([libsndfile header not found]))
+AC_CHECK_HEADERS([sys/soundcard.h], [], AC_MSG_ERROR([sys/soundcard.h not found]))
+
+dnl ---------------------------------------------------------------------
+dnl LibLame
+
+LIB_LAME=
+
+AC_ARG_ENABLE(lame, AC_HELP_STRING([--enable-lame], [enable use of lame if found, default = true]))
+if test -z "$enable_lame" -o "$enable_lame" = "yes"; then
+
+
+ have_lame=yes
+ KDE_CHECK_LIB(mp3lame,lame_init,,have_lame=no)
+ if test "$have_lame" = "yes"; then
+ KDE_CHECK_HEADER(lame/lame.h,,have_lame=no)
+ fi
+
+ AC_MSG_CHECKING([for lame support])
+
+ if test "$have_lame" = "yes"; then
+ AC_DEFINE(HAVE_LAME, 1, [Define this if lame mp3 encoder library is available and should be used])
+ LIB_LAME="-lmp3lame"
+ AC_MSG_RESULT([enabled])
+ else
+ AC_MSG_RESULT([disabled])
+ fi
+
+else
+
+ AC_MSG_CHECKING([for lame support])
+ AC_MSG_RESULT([disabled])
+
+fi
+
+AC_SUBST(LIB_LAME)
+
+
+dnl ---------------------------------------------------------------------
+dnl Ogg/Vorbis support
+
+LIB_OGG=
+
+AC_ARG_ENABLE(ogg, AC_HELP_STRING([--enable-ogg], [enable use of Ogg/Vorbis if found, default = true]))
+if test -z "$enable_ogg" -o "$enable_ogg" = "yes"; then
+
+
+ have_ogg=yes
+ KDE_CHECK_LIB(vorbisenc,vorbis_encode_init,,have_ogg=no)
+ if test "$have_ogg" = "yes"; then
+ KDE_CHECK_HEADER(vorbis/vorbisenc.h,,have_ogg=no)
+ fi
+ if test "$have_ogg" = "yes"; then
+ KDE_CHECK_LIB(ogg,ogg_stream_packetin,,have_ogg=no)
+ fi
+ if test "$have_ogg" = "yes"; then
+ KDE_CHECK_HEADER(ogg/ogg.h,,have_ogg=no)
+ fi
+
+ AC_MSG_CHECKING([for ogg/vorbis support])
+
+ if test "$have_ogg" = "yes"; then
+ AC_DEFINE(HAVE_OGG, 1, [Define this if OGG/Vorbis encoder library is available and should be used])
+ LIB_OGG="-logg -lvorbisenc"
+ AC_MSG_RESULT([enabled])
+ else
+ AC_MSG_RESULT([disabled])
+ fi
+
+else
+
+ AC_MSG_CHECKING([for ogg/vorbis support])
+ AC_MSG_RESULT([disabled])
+
+fi
+
+AC_SUBST(LIB_OGG)
+
+dnl ---------------------------------------------------------------------
+dnl ALSA support
+
+LIB_ALSA=
+PLUGIN_ALSA=
+
+AC_ARG_ENABLE(alsa, AC_HELP_STRING([--enable-alsa], [enable use of ALSA if found, default = true]))
+if test -z "$enable_alsa" -o "$enable_alsa" = "yes"; then
+
+
+ have_alsa=yes
+ KDE_CHECK_LIB(asound,snd_card_next,,have_alsa=no)
+ if test "$have_alsa" = "yes"; then
+ KDE_CHECK_HEADER(alsa/asoundlib.h,,have_alsa=no)
+ fi
+
+ AC_MSG_CHECKING([for ALSA support])
+
+ if test "$have_alsa" = "yes"; then
+ AC_DEFINE(HAVE_ALSA, 1, [Define this if ALSA library is available and should be used])
+ LIB_ALSA="-lasound"
+ PLUGIN_ALSA=alsa-sound
+ AC_MSG_RESULT([enabled])
+ else
+ AC_MSG_RESULT([disabled])
+ fi
+
+else
+
+ AC_MSG_CHECKING([for alsa support])
+ AC_MSG_RESULT([disabled])
+
+fi
+
+AC_SUBST(LIB_ALSA)
+AC_SUBST(PLUGIN_ALSA)
+
+
+dnl ---------------------------------------------------------------------
+dnl OSS Plugin
+
+PLUGIN_OSS=
+
+AC_ARG_ENABLE(oss, AC_HELP_STRING([--enable-oss], [compile OSS plugin, default = true]))
+if test -z "$enable_oss" -o "$enable_oss" = "yes"; then
+
+ PLUGIN_OSS=oss-sound
+ AC_MSG_CHECKING([for OSS support])
+ AC_MSG_RESULT([enabled])
+else
+
+ AC_MSG_CHECKING([for OSS support])
+ AC_MSG_RESULT([disabled])
+
+fi
+
+AC_SUBST(PLUGIN_OSS)
+
+
+dnl ---------------------------------------------------------------------------
+
+AC_SUBST(libkradiodir, '$(libdir)/kradio/plugins')
+
+
+dnl ----------------------------------------------------------------------
+dnl apidox
+KDE_INIT_DOXYGEN([The KRadio API Reference], [Version $VERSION])
+KDE_CREATE_SUBDIRSLIST
+AM_CONDITIONAL(kradio3_SUBDIR_included, test "x$kradio3_SUBDIR_included" = xyes)
+AC_CONFIG_FILES([ Makefile ])
+AC_CONFIG_FILES([ kradio3/Makefile ])
+AC_CONFIG_FILES([ kradio3/convert-presets/Makefile ])
+AC_CONFIG_FILES([ kradio3/convert-presets/po/Makefile ])
+AC_CONFIG_FILES([ kradio3/icons/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/alsa-sound/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/alsa-sound/icons/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/alsa-sound/po/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/gui-docking-menu/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/gui-docking-menu/po/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/gui-error-log/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/gui-error-log/po/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/gui-quickbar/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/gui-quickbar/po/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/gui-standard-display/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/gui-standard-display/po/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/lirc/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/lirc/po/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/oss-sound/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/oss-sound/icons/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/oss-sound/po/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/radio/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/radio/po/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/recording/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/recording/icons/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/recording/po/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/soundserver/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/soundserver/po/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/streaming/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/streaming/icons/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/streaming/po/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/timecontrol/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/timecontrol/icons/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/timecontrol/po/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/timeshifter/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/timeshifter/icons/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/timeshifter/po/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/v4lradio/Makefile ])
+AC_CONFIG_FILES([ kradio3/plugins/v4lradio/po/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/argentina/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/australia/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/austria/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/belgium/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/brazil/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/bulgaria/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/canada/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/catalonia/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/czechia/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/england/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/england/buckinghamshire/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/finland/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/france/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/germany/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/hungary/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/iceland/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/ireland/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/italy/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/lithuania/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/luxemburg/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/netherlands/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/new-zealand/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/norway/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/poland/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/portugal/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/romania/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/russia/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/slovakia/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/south-africa/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/spain/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/sweden/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/switzerland/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/turkey/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/uruguay/Makefile ])
+AC_CONFIG_FILES([ kradio3/presets/usa/Makefile ])
+AC_CONFIG_FILES([ kradio3/src/Makefile ])
+AC_CONFIG_FILES([ kradio3/src/po/Makefile ])
+AC_OUTPUT
+# Check if KDE_SET_PREFIX was called, and --prefix was passed to configure
+if test -n "$kde_libs_prefix" -a -n "$given_prefix"; then
+ # And if so, warn when they don't match
+ if test "$kde_libs_prefix" != "$given_prefix"; then
+ # And if kde doesn't know about the prefix yet
+ echo ":"`kde-config --path exe`":" | grep ":$given_prefix/bin/:" 2>&1 >/dev/null
+ if test $? -ne 0; then
+ echo ""
+ echo "Warning: you chose to install this package in $given_prefix,"
+ echo "but KDE was found in $kde_libs_prefix."
+ echo "For this to work, you will need to tell KDE about the new prefix, by ensuring"
+ echo "that KDEDIRS contains it, e.g. export KDEDIRS=$given_prefix:$kde_libs_prefix"
+ echo "Then restart KDE."
+ echo ""
+ fi
+ fi
+fi
+
+if test x$GXX = "xyes" -a x$kde_have_gcc_visibility = "xyes" -a x$kde_cv_val_qt_gcc_visibility_patched = "xno"; then
+ echo ""
+ echo "Your GCC supports symbol visibility, but the patch for Qt supporting visibility"
+ echo "was not included. Therefore, GCC symbol visibility support remains disabled."
+ echo ""
+ echo "For better performance, consider including the Qt visibility supporting patch"
+ echo "located at:"
+ echo ""
+ echo "http://bugs.kde.org/show_bug.cgi?id=109386"
+ echo ""
+ echo "and recompile all of Qt and KDE. Note, this is entirely optional and"
+ echo "everything will continue to work just fine without it."
+ echo ""
+fi
+
+if test "$all_tests" = "bad"; then
+ if test ! "$cache_file" = "/dev/null"; then
+ echo ""
+ echo "Please remove the file $cache_file after changing your setup"
+ echo "so that configure will find the changes next time."
+ echo ""
+ fi
+else
+ echo ""
+ echo "Good - your configure finished. Start make now"
+ echo ""
+fi
diff --git a/configure.in.in b/configure.in.in
new file mode 100644
index 0000000..49e3383
--- /dev/null
+++ b/configure.in.in
@@ -0,0 +1,27 @@
+#MIN_CONFIG(3.3)
+# Define a symbol, to know that we're compiling WITH kde. (for apps that
+# can compile without KDE, optionally)
+AM_CONDITIONAL(KDE_INSTALLED, test "$have_kde" = "yes")
+
+dnl Checks for header files.
+AC_HEADER_DIRENT
+AC_HEADER_STDC
+AC_CHECK_HEADERS(fcntl.h sys/time.h sys/stat.h stdint.h)
+AC_CHECK_HEADERS(sys/cdefs.h fnmatch.h sysent.h strings.h paths.h)
+AC_CHECK_HEADERS(utmp.h sys/param.h linux/tcp.h sys/proc.h)
+
+dnl Checks for typedefs, structures, and compiler characteristics.
+AC_HEADER_TIME
+
+AC_C_LONG_DOUBLE
+
+dnl Checks for library functions.
+KDE_CHECK_DLOPEN
+AC_CHECK_FUNCS(socket fabsl strdup vsnprintf re_comp flock)
+AC_CHECK_SETENV
+AC_CHECK_UNSETENV
+AC_CHECK_GETDOMAINNAME
+AC_CHECK_GETHOSTNAME
+AM_PROG_LEX
+LFLAGS="-o${LEX_OUTPUT_ROOT}.c"
+AC_SUBST(LFLAGS)
diff --git a/kradio3/AUTHORS b/kradio3/AUTHORS
new file mode 100644
index 0000000..bde5668
--- /dev/null
+++ b/kradio3/AUTHORS
@@ -0,0 +1,4 @@
+Ernst Martin Witte <witte@kawo1.rwth-aachen.de>
+Marcus Camen <mcamen@mcamen.de>
+Klas Kalass <klas.kalass@gmx.de>
+Frank Schwanz <schwanz@fh-brandenburg.de>
diff --git a/kradio3/COPYING b/kradio3/COPYING
new file mode 100644
index 0000000..c7aea18
--- /dev/null
+++ b/kradio3/COPYING
@@ -0,0 +1,280 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
diff --git a/kradio3/ChangeLog b/kradio3/ChangeLog
new file mode 100644
index 0000000..a880f60
--- /dev/null
+++ b/kradio3/ChangeLog
@@ -0,0 +1,536 @@
+2006-11-12
+
+ emw - lirc output to stderr in case kde redirects other logs not to
+ console but to some log file. users had been irritated before.
+ - don't write preset file if <= 1 presets in list and issue warning.
+ very rare non-reproducible corruption of preset files has been
+ reported.
+ - insert information in sound stream file name attribute if no real
+ file is behind that stream (i.e. everything except real recording)
+ - fixed libvorbisenc typo in configure.in.in
+
+
+
+2006-11-11
+
+ emw - switched kradio repository to SVN
+ - changed directory structure for kradio3/src
+
+2006-11-10
+
+ emw - fixed further hideall/showall bugs
+ - added russian translation, thanks to Alexey.Kouznetsov
+ - fixed problems with min frequency < 87 MHz
+
+2006-11-07
+
+ emw - fixed a lot in configure.in.in: Made alsa, oss, mp3lame,
+ ogg/vorbis and lirc configurable
+ - translation number fixes
+ - i18n fixes
+ - fixed quite a lot hideall/showall bugs
+
+2006-11-05
+
+ emw - adjusted translation structures for to be ready for plugin
+ structure
+ - adjusted icons files and dir structure for plugin structure
+ - updated german translation
+
+2006-10-29
+
+ emw - fixed build system for src directory and inside libs
+ - fixed plugin loading error message if lirc is not available
+ - fixed $libdir issues for SuSE 10.1/x86_64
+ - fixed alsa segfault if no mixer is present
+
+2006-09-20
+
+ emw - fixed lirc bug: broken pipes caused 100% CPU load
+ - made plugin-loading-progress-bar configurable in plugin config
+ page
+ - if #instances was stored with an invalid value (< 1 | > 10)
+ this value will now automatically fixed
+ - check #libraries for good range (>= 6) otherwise load all
+ available libraries
+ - fixed bullshit in RawStationList that prevented correct
+ functioning of insert/append/replace/... no idea why anything
+ ever worked
+ - fixed totally mad behavior of station setup dialog
+ - 48kHz support
+ - fixed handling in recording in case mp3/ogg is not available
+ - fixed notifyPlayback/CaptureChannelsChanged in streaming.cpp
+
+2006-09-19
+
+ emw - fixed initialization problem of playback device combobox in
+ alsa configuration dialog
+ - fixed disappearance of alsa capture mixer settings after
+ change
+ - introduced dirty-flag in configuration dialogs in order to
+ reduce unnecessary delays on click of cancel/ok
+ - fixed wrong warning if station icon load was canceled in
+ configuration dialog
+ - fixed excessive station icon growth in configuration dialog
+ e.g. when station name was typed
+ - fixed enabling/disabling of up/down buttons in station list
+ configuration dialog
+ - added recording indicator for kradio icon, e.g. used in
+ docking menu
+
+2006-09-18
+
+ emw - streaming device configuration dialog
+ - additions to noti(ce|fy)SoundStreamData interface:
+ size_t &consumed_size added for feedback
+
+2006-09-17
+
+ emw - added new plugin: basic streaming device, e.g. for /dev/video24
+
+2006-09-03
+
+ emw - fixed ":" problem in recording file names e.g. on fat file
+ systems. Thanks to Ignacio Feijoo for the Patch.
+ - fixed v4l config balance problem ?? at least not reproducible
+ any more
+
+2005-12-02
+
+ emw - fixed typo in configure.in.in that resulted in wrong
+ installation directory for plugins
+
+2005-11-28
+
+ emw - fixed typo in include hint in kradio3/src/libkradio-gui/stationselector-ui.ui
+
+
+2005-11-27
+
+ emw - fixed alsa-config-dialog-toooooo-big problem with QScrollView
+ - added memory profiling feature to profiler
+ - reduced memory consumption by removing lots of about config
+ pages (GPL Tab requires about 1MB per instance!)
+ - fixed missing libprefix in configure.in.in
+
+2005-08-28 (1.0beta3b)
+
+ emw - more saveState fixes
+ - split config pages of alsa,recording, v4l into several tab
+ pages
+ - initial drag&drop support in station selectors, quickbar,
+ docking
+ - v4l power off behavior (mute, volume=0) is now configurable,
+ some cards need mute/volume, some others don't
+
+2005-08-23
+
+ emw - FIX: modifications of stations failed. Was a faulty != / ==
+ operator in StationList class.
+ - FIX: saveState was not called if kradio was closed by kde
+ session exit
+ - FIX: use current time for new alarms
+ - FIX: reduced caption length for config dialog, error log
+ - FIX: reduced icon-item names in config dialog
+
+2005-08-21 (1.0beta3)
+
+ emw - little SuSE 9.2 compilation fix
+ - one more buffer handling fix that resulted in clicks during
+ recording
+ - pre-recording & recording now works completely also for
+ timeshifted signals
+ - made behaviour of LeftMouseClick on TraySymbol configurable
+ - ALSA mixer setup fix
+
+2005-08-20
+
+ emw - quite a bunch of serious buffer handling fixes that lead to
+ unusable recordings/delayed playback/etc.
+ - added multibuffer class (was originally part of encoder thread
+ internal buffer handling)
+ - initialization order fixes
+ - recording encoder split into class tree (before, pcm,ogg,mp3
+ was mixed within a single class)
+ - ALSA initialization fixes
+ - mixer channel handling fix in ALSA plugin
+ - more intuitive recording monitor default stream selection
+ - static logging functions
+
+ - pre-recording - Never be upset anymore about pressing the
+ recording button too late!
+
+ - active playback implementation (capture from radio pcm device,
+ playback on your soundcard)
+
+2005-08-17
+
+ emw - adjusted SoundStreamClient interface for SoundFormat queries
+ - v4lradio is ready for active playback (capturing from some
+ device, playback on pcm)
+ - improved ALSA buffer handling (separate HW and SW buffer
+ settings)
+
+2005-08-15
+
+ emw - enhanced ALSA configuration dialog by individually selectable
+ capture mixer presets
+ - consider lirc repeat counts
+ - provide logging outside of classes
+
+2005-08-14
+
+ emw - big lirc fix, lirc was not working for some time due to makefile
+ changes
+ - lirc configuration improvements
+ - little bit lirc auto setup (default-dot-lirc)
+ - little bit v4l device autodetection
+ - no message box if stations.krp is not readable on first start
+ - reduced default alsa buffer size. Resulted in internal alsa assertion failures
+
+2005-08-12 (1.0beta2)
+
+ emw - fix for --enable-final
+ - partial fix for renamed icon kradio-zzz.png to kradio_zzz.png
+ - small GUI improvements for pause and sleep buttons
+
+2005-08-09
+
+ mcamen - fix srcdir != builddir
+ - more Makefile.am cleanups
+
+2005-07-29
+
+ mcamen - do not install libkradio-interfaces; use a convinience
+ lib instead
+
+2005-07-28
+
+ mcamen - resorted src/Makefile.am to make the linker happy
+ - use unversioned libs for the plugins
+ - link all plugins with libkradio.la
+ - rename dev_urandom in radio-stations/radiostation.cpp
+ (namespace pollution, --enable-final fix)
+
+2005-05-28
+ emw - profiling support - we need to improve startup time
+ needs to be commented out for release
+ - big mixer channel handling fix
+ - inconsistencies in restoreState process fixed
+ - added releasePlayback/Capture as complementary function to
+ preparePlayback/Capture
+ - alsa event handler fix
+ - gui margin/spacing reduced
+
+2005-05-26
+
+ mcamen - added apidox Makefile target
+ - RadioConfiguration::slotSelectPixmap():
+ get rid of hardcoded list of supported image formats;
+ enable image preview in file KFileDialog
+
+ emw - added ALSA-Plugin
+ - removed debug logging in recorder
+ - fixed missing volume=0/mute in timeshifter
+
+2005-05-22 (1.0beta1)
+
+ emw - fixed amd64 pointer arithmetic problem in
+ recording/encoder.cpp
+ - fixed recording configuration combox index problem if
+ mp3 support is missing
+ - fixed typo in Radio::noticeAlarm that prevented
+ scheduled recording
+ - auto power-on if recording starts
+
+ mcamen - centralize version definition via src/kradioversion.h
+
+2005-05-21
+
+ mcamen - added XDG Categories entry to .desktop file
+ - replaced deprecated Terminal line in .desktop file
+ ("0" vs. "false")
+ - removed deprecated MiniIcon line in .desktop file
+ - fix #include syntax in main.cpp (<...> vs. "...")
+ - require KDE 3.2 in configure.in.in
+ - added preset for Tuebingen (cable)
+
+ emw - fixes of wrong location for soundstreamclient interconnect
+ handling. The bug resulted in failed interconnects and segfaults
+ due to non-released interconnects
+ - fixed problem with notification about soundstreamid creation (v4lradio)
+ - fixed ampersand handling of station names in gui-docking-menu
+ - renamed libraries in src, now we have a consistent prefix:
+ libkradio-*
+ - consistency fixes for some plugins: member function
+ name(), call of inherited notice(dis)connected
+ - config->sync() call to KRadioApp::saveState
+ - removed deprecated and unused -configuration.ui files for
+ QuickBar and Docking Menu
+ - configuration page for LIRC
+
+0.3.0 cvs revive
+
+ emw - major rework on sound backend
+ - plugins as dynamic libraries
+ - timeshifter plugin
+ - ogg/vorbis recording
+
+ mcamen - got rid auf the outdated KDevelop buildsystem
+ - got rid of the admin dir
+ - renamed kradio subdir to src
+ - renamed and moved some icons to src/icons according to the
+ freedeskto.org (fdo) icon theme specification
+ - rewrote Makefiles.am files to take adavantage of the KDE CVS
+ build system
+ - added proper moc #include statements to a lot of files
+
+0.3.0 alpha 3
+
+ emw - kde 3.0 & include file fixes
+ - segfault fix that occured after station scan
+ - polish translation
+ - mp3 recording
+ - fix for recording configuration save/restore
+ - alarms configurable for weekdays
+ - no more unnecessary redraws in recording monitor
+ - improved behavior of quickbar: poweron/off
+ automatically if necessary
+ - only redraw necessary parts in recording monitor
+ - split kapplication & pluginmanager
+ - enable multiple "instances":
+ We have now a (very simple) method to play more
+ than one radio source at once: Set the configuration
+ variable in kradiorc "instances" to the required value.
+ - cleanup IErrorLog usage
+ - use threading for recording/encoding
+ - fix several annoyances in configuration dialog, such as
+ a reasonable minimum size of that dialog
+ - recording buffer management is now configurable
+ - preset file storage location is now configurable
+ - finally managed to fix segfaults that occurred when calling
+ virtual methods in destructors of template classes
+ (application exit and scan-dialog closing), see
+ http://gcc.gnu.org/bugzilla/show_bug.cgi?id=4861
+ - add button for sleep countdown to display plugin
+ - open /dev/dsp is no more blocking
+ - set correct PCM_ENABLE_INPUT flag when starting recording
+ - recording: replaced QSocketNotifier by polling/nonblocking
+ IO with QTimer. Some sound drivers do not support select()
+ - fixed nebulous recording error logging/reporting
+ - fix of kradio.pot generation
+ - Use KListView for radio stations instead of KListBox
+ - removed dependency to deprecated qlist.h (Thanks to G.Runf for the hint)
+
+ Rafael Rodriguez
+
+ - spanish translation
+
+0.3.0 alpha 2
+
+ emw Compilation & Compatibility
+
+ - kde3.0 compatibility fixes
+ - replace round -> rint
+ - correct missing video_dev forward declaration
+
+ V4L/V4L2
+
+ - v4l2 support, usable for older and bleeding edge
+ releases of V4L2
+ - v4l configuration improvements: device volume controls
+ in v4l configuration page
+ - respect device volume control min/max values
+ - fixed device-volume-set2zero-problem after mute/unmute
+ (radio cards do reset volume controls on mute)
+
+ Recording
+
+ - recording
+ - select recording source and igain automatically
+ - recording monitor
+ - recording doesn't restore monitoring state on startup,
+ kradio might be blocked if another app uses /dev/dsp
+
+ GUI
+
+ - store-preset-file button in station configuration page
+ - move widget geometry saving/restoring to class
+ WidgetPluginBase
+ - finally fixed the nasty positioning/sticky problem when
+ window is restored
+ - fixed "changes-ignored"-problem in preset-about page
+ - sensefull names/descriptions for plugins
+ - upper case in show/hide docking menu entries
+ - fix pixmap/text usage on quickbar buttons
+ - font selector for display
+ - choosable inactive text color
+ - error loggin plugin
+ - recording button: +menu for recording/monitoring
+ - symbol for station search button
+ - about dialog
+
+ Preset File Format
+
+ - encoding detection for preset files (Locale->UTF8)
+ - convert preset files to new format
+ - converter: add xml-encoding-line
+
+ Other
+
+ - translation preparation
+ - german translation
+ - credits in about dialog
+ - remove dependency on kalarm
+ - use special mail-adress for preset files
+ - country/city in preset file mail
+ - debianization
+
+ Klas Kalass
+
+ - some more include file fixes
+
+ Will Stephenson
+
+ - radio-configuration.cpp: fix for pixmap selection dialog
+
+ Andreas Pour
+
+ - fix for math and STL issues
+
+
+0.3.0 alpha 1
+
+ Update Information:
+
+ Due to the new station list format you will have to rebuild your
+ station selections for the quickbar and the docking menu. The
+ stations should be read without problems. As soon as you quit
+ kradio and the configuration files are written, any versions 0.2.x
+ will not be able to read the station list and configuration files.
+
+ BACKUP YOUR CONFIGURATION FILES!
+
+ emw - major rewrite (interfaces, plugins, ...)
+ - AM/FM readyness
+ - display redesign
+ - new station list format
+
+0.2.8 (beta)
+
+ emw - setupdialog: fix cancel button behaviour
+ - configurable scanStep for station search
+ - made frequency setting independent from device quantisation
+ - min/max Frequency config in kHz (before in MHz)
+ - display Frequency in kHz if < 10 MHz
+ - fix min/max settings in station configuration page
+ - quickbar fixes (wrong use of button IDs vs. station IDs)
+ - redesign kradio gui. new class kradiodisplay
+ - make kradio AM-ready (hopefully)
+
+0.2.7a (beta)
+
+ emw - fix missing xml quotings
+ - fix for disabled alarm volume
+ - use frequency instead of (changable) stationID for alarms
+ - implement a "contribute preset file to kradio project" function via KDE standard mail client
+
+0.2.7 (beta)
+
+ emw - added pseudo lirc key "QUIT"
+ - fixed some more quickbar bugs
+ - make "good signal" level configurable, sometimes autoscan did not find all stations
+ - fix ugly setup dialog layout frame problem
+ - fix "alarm-enable is unset on restart" - problem
+ - setupdialog: use kdialogbase to get usual kde like configuration dialog
+ - setupdialog: make it non-modal
+ - setupdialog: "about" tab for station preset lists
+ - setupdialog: fix update of station info after preset load
+ - setupdialog: use current volume for alarm volume of new alarm
+ - setupdialog: fix tab order
+
+ kalass - fix min/max typo
+ - add germany/hamburg-antenna preset file
+
+
+0.2.6 (beta)
+
+ emw - activate station in setupdialog by freq, not stationId
+ - add "unknown station" to kradio->cbStations
+ - fix alarm inconsistencies
+ - make alarm management independent from radiobase: new class TimeControl
+ - make xml-config independent from radiobase: kradioapp is now responsible for it
+ - remove alarm configuration from xml file, put to standard kde/kradio config file (downward compatibility kept)
+ - sleep countdown function, countdown stopped by poweron/off, accessible via lirc/docking menu
+ - make kradioapp responsible for lircHelper
+ - make use of <KDEDIR>/share/apps/kradio/presets possible
+ - include first station preset file in dist (germany/aachen-cable.krp, still a bit incomplete;)
+
+ kalass - fixed config autosave bug
+
+ Release notes:
+ * ~/.kradiorc is still read for compatibility, but only if ~/<dot-kdedir>/share/data/kradio/stations.krp does not exist/contain valid data
+ * alarms are now in ~/<dot-kdedir>/share/config/kradiorc, ~/.kradiorc is read for compatibility
+
+ * I'd like to provide ready-to-use-kradio preset files within the dist.
+ I'd be pleased if you like to contribute your personal preset file to this project.
+
+0.2.5 (alpha)
+
+ emw: - configuration dialog part 3: alarms
+ - frequency range override
+ - improve alarms by station/volume preset
+ - only selected stations in docking menu
+ - restore power/frequency after station scan
+ - activate stations in setup by double-click/<return>
+ - fix volume preset
+
+0.2.4 (alpha)
+
+ emw: - qt 3.0.x compatibility fixes
+ - quickbar/buttonflowlayout fixes
+ - configuration dialog (part 2)
+ - radiobase poweron/off fixes
+
+0.2.3 (alpha)
+
+ emw: - added configuration dialog (part 1)
+ - added station scan
+ - improve station/alarm list handling
+
+0.2.2 (alpha)
+
+ emw: - small fixes concerning window restoring
+ - gcc 3.2 ready
+ - further fixes in stereo/signal quality display
+
+ kalass - kde3 port
+ - quickbar makes use of buttonflowlayout
+ - fixes to conform with kde styleguide
+ - make kradio/docking/quickbar independent
+ - many other improvements, see CVS
+
+ rizsanyi: - added lirc option RADIO (which turns kradio on)
+ - further small fixes
+
+0.2.1 emw: - added alarm clock functions
+ - line in volume monitoring
+ - About-Dialog
+ - new icon
+
+0.2.0 emw: - docking menu, correct hide/show behaviour
+ - lirc support
+ - save/restore current window state (sticky vs Desktop) && position
+
+0.1.3 emw: - change GUI a bit
+ - add Power On/Off functions (=> kradio may still run while watching tv)
+ - simplify "class Radio"
+
+0.1.2 frank: - fixed float/integer conversion on set frequence (stationbutton)
+ - seek will end on all over frequence change button
+ - balance set included in volumesetting
+
+0.1.1 frank: - changed Frequence Range to 87.00 (min) and 109.00 (max)
+ - tray for panel added
+
+0.1 frank: - initial Release
diff --git a/kradio3/INSTALL b/kradio3/INSTALL
new file mode 100644
index 0000000..3065273
--- /dev/null
+++ b/kradio3/INSTALL
@@ -0,0 +1,180 @@
+Note on automake/autoconf versions
+==================================
+
+KRadio should build with automake >= 1.6.1 and autoconf 2.5*
+
+If you have such a version but configure/make complains it needs e.g.
+automake 1.7.x you should try to run
+
+ make -f Makefile.dist
+
+before you run ./configure.
+
+
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 4. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/kradio3/Mainpage.dox b/kradio3/Mainpage.dox
new file mode 100644
index 0000000..7858485
--- /dev/null
+++ b/kradio3/Mainpage.dox
@@ -0,0 +1,6 @@
+/**
+ * @mainpage KRadio API Reference
+ *
+ * <a href="hierarchy.html">Class Hierarchy</a>
+ */
+
diff --git a/kradio3/Makefile.am b/kradio3/Makefile.am
new file mode 100644
index 0000000..5c064de
--- /dev/null
+++ b/kradio3/Makefile.am
@@ -0,0 +1,7 @@
+SUBDIRS = src plugins presets convert-presets icons
+
+EXTRA_DIST = kradio.kdevprj AUTHORS COPYING ChangeLog INSTALL README TODO kradio.lsm kradio.spec
+
+
+# apidox
+include ../admin/Doxyfile.am
diff --git a/kradio3/README b/kradio3/README
new file mode 100644
index 0000000..be92fcc
--- /dev/null
+++ b/kradio3/README
@@ -0,0 +1,72 @@
+This is a comfortable radio application for KDE 3.x.
+You can get the latest version from
+
+ http://sourceforge.net/projects/kradio/
+
+------------------
+Mailing Lists
+------------------
+
+ http://lists.sourceforge.net/lists/listinfo/kradio-user
+ http://lists.sourceforge.net/lists/listinfo/kradio-devel
+ http://lists.sourceforge.net/lists/listinfo/kradio-announce
+
+------------------
+Compile CVS tree
+------------------
+
+First checkout kradio from CVS
+
+ mkdir kradio-cvs
+ cd kradio-cvs
+ # next follow instructions on http://sourceforge.net/cvs/?group_id=45668
+ cd kradio
+
+and compile it
+
+ make -f Makefile.dist
+ ./configure
+ make
+ make install
+
+-------------------
+Configuration files
+-------------------
+
+gui, alarms, etc.:
+ <dot-kdedir>/share/config/kradiorc
+
+stations (xml-format):
+ <dot-kdedir>/share/apps/kradio/stations.krp
+
+systemwide presets (xml-format):
+ <kdedir>/share/apps/kradio/presets/<country>/<city>-<media>.krp
+
+
+------------------
+lirc support
+------------------
+
+lirc support is realized by the lirc_client lib. It should be detected
+automatically by ./configure. This library is used to translate the
+remote control key names to names used by kradio, and may additionally
+be used for state management (tv, etc). An example for an apropriate
+.lircrc file can be found in ./kradio/dot-lircrc.example.
+
+Names used by kradio:
+
+ TV powerOff, give tv program a chance
+ 0..9 numerical station selection
+ CH+ frequency increment
+ CH- frequency decrement
+ VOL+ volume increment
+ VOL- volume decrement
+ CH-SEARCH beachward station search
+ CH+SEARCH forward statino search
+ POWER power kradio on/off
+ RADIO power kradio on
+ SLEEP enable sleep countdown
+ NEXT next station in list
+ PREV prev station in list
+ QUIT quit kradio application
+
diff --git a/kradio3/REQUIREMENTS b/kradio3/REQUIREMENTS
new file mode 100644
index 0000000..68b6da8
--- /dev/null
+++ b/kradio3/REQUIREMENTS
@@ -0,0 +1,8 @@
+* KDE >= 3.2
+* automake >= 1.6.1
+* autoconf 2.5*
+* v4l or v4l2 enabled kernel
+* libsndfile (development package or header for compilation, library for execution)
+* libmp3lame (for mp3 encoding)
+* oss support (mixer, dsp/pcm)
+* radio card ;)
diff --git a/kradio3/TODO b/kradio3/TODO
new file mode 100644
index 0000000..de94432
--- /dev/null
+++ b/kradio3/TODO
@@ -0,0 +1,84 @@
+=========
+
+ * support for 65MHz
+
+ * double click options for tray icon: select window to open
+ * remove time/size from recording monitor when recording is not running
+ * fix status display for recording monitor
+
+
+ * speed up kradio start
+ * inet-stream-out plugin
+ * make file operations compliant with non-ascii-charsets (e.g. cyrillic)
+ * tooltips in config dialog
+ * option for display window type (entry in taskbar or toolbar window)
+ * background pixmap for display
+ * internet radio streams
+ * automatic station icon scaling
+ * remote-kradio: run v4l plugin on remote machine, transfer data to
+ local machine
+ * client-server concept: run kradio in background, make client gui individual
+ application
+
+ * RDS support
+ * Hotkey support
+ * FAQ
+ - devices (radio, mixer, dsp)
+ - mixer settings for recording
+ - artsd
+
+ * tooltips complete?
+
+ * --done-- Bugfix: Window on other desktops remain hidden when hideall is selected
+ * --done-- make ALSA support conditional/configurable in configure script
+ * --dropped-not-used-by-kradio-- check for libflac in configure
+ * --done-- 48kHz-Support
+ * --done-- translations
+ * --done-- prepare for translation: check for missing i18n translations?
+ * 48kHz support // DONE
+ * support for PVR radio cards, (/dev/video24...) // DONE
+ * streaming basic plugin, lateron extendable for internet radio // DONE
+ * indicators in docking icon for recording // DONE
+ * fix station editor dialog // DONE
+ * fix hang/high cpu load when licq is restarted (broken pipe?) // DONE
+ * define final single/doubleclick tray icon behaviour // DONE (configurable now)
+ * warnings if permissions are not set correctly // DONE
+ * GUI improvements for pause function // DONE
+ * use size_t instead of unsigned ints for all sizes!!! (was reason for
+ problems in pointer arithmetic on amd64) // DONE
+ * gui-errormessages // DONE
+ * if first run => less error messages, ask user for configuration,
+ station scan, etc... // DONE
+ * alsa support // DONE
+
+
+
+FUTURE
+======
+ * mediacontrol applet integration
+ * dcop interface
+ * compile with -DQT_NO_ASCII_CAST (see src/Makefile.am)
+ (necessary for Qt4)
+ * just grep for FIXME and TODO...
+
+
+
+USABILITY, STYLE-GUIDE
+======================
+ When implementing these keep in mind to only use KDE API <= 3.2.
+ * SystemTray button should show / hide the main window on left click // DONE (configurable)
+ * /tmp/kradio* should use offical KDE tmpdir instead // really necessary? it is configurable
+ * more use of KStdGuiItem
+ * sort out the KDE hicolor / crystal / SVG icon mess
+ * Buildsystem: manpage generation
+ * Buildsystem: apidocs
+ * KDE uses l10n instead of i18n now
+ * Autohell: configure checks for dependency libs, pkg-config
+
+
+DISTRIBUTION
+============
+ * Get svn2dist (used for kdeextragear) to work with KRadio. This will
+ give us nice kradio.src.gz tarballs.
+ * apps.kde.org ?!?!
+ * dot.kde.org ????
diff --git a/kradio3/TODO.kdetestscripts b/kradio3/TODO.kdetestscripts
new file mode 100644
index 0000000..7aed2da
--- /dev/null
+++ b/kradio3/TODO.kdetestscripts
@@ -0,0 +1,95 @@
+This is part of the output of running playground/base/kdetestscripts. See
+http://www.icefox.net/kde/tests/report.html for more info.
+
+Marcus <mcamen@mcamen.de>
+
+
+
+
+
+
+Running script constqstring.
+71: IF_QUERY ( QColor queryDisplayActiveColor() )
+Missing const in : ./plugins/gui-standard-display/displaycfg_interfaces.h
+
+
+
+
+
+
+Running script copyright.
+No Copyright found in: ./plugins/v4lradio/linux/videodev.h
+
+
+
+
+
+
+Running script listend.
+ for (QMapConstIterator it = m_PluginLibraries.begin(); it != m_PluginLibraries.end(); ++it, ++idx) {
+ for (QValueListIterator it=libs.begin(); it != libs.end(); ++it)
+ for (QMapConstIterator it = libinfo.plugins.begin(); it != libinfo.plugins.end(); ++it) {
+ for (QMapConstIterator it_classes = info.plugins.begin(); it_classes != info.plugins.end(); ++it_classes) {
+./src/libkradio/kradioapp.cpp
+---
+ for (QMapConstIterator it = libs.begin(); it != libs.end(); ++it) {
+ for (QMapConstIterator it = classes.begin(); it != classes.end(); ++it) {
+./src/libkradio/pluginmanager-configuration.cpp
+---
+ for (QStringList::iterator sit = properties.begin(); sit != properties.end(); ++sit) {
+./src/libkradio/stationlist.cpp
+---
+ for(it = translatorList.begin(); it != translatorList.end(); ++it) {
+./src/libkradio-gui/aboutwidget.cpp
+---
+ for (; it != m_EncodingThreads.end(); ++it) {
+ for (QMapConstIterator it = m_RawStreams2EncodedStreams.begin(); it != m_RawStreams2EncodedStreams.end(); ++it) {
+./plugins/recording/recording.cpp
+---
+ for (QMapConstIterator it = tmp.begin(); it != tmp.end(); ++it) {
+ for (QMapIterator it = m_SoundStreamID2idx.begin(); it != m_SoundStreamID2idx.end(); ++it) {
+./plugins/recording/recording-monitor.cpp
+---
+ for (QValueListConstIterator it = m_PassivePlaybackStreams.begin(); it != m_PassivePlaybackStreams.end(); ++it)
+./plugins/oss-sound/oss-sound.cpp
+---
+ for (ciAlarmVector i = m_alarms.begin(); i != m_alarms.end(); ++i) {
+ for (ciAlarmVector i = m_alarms.begin(); i != m_alarms.end(); ++i, ++idx) {
+./plugins/timecontrol/timecontrol.cpp
+---
+ for (ciAlarmVector i = alarms.begin(); i != alarms.end(); ++i, ++k) {
+./plugins/timecontrol/timecontrol-configuration.cpp
+---
+ for (QStringList::const_iterator it = m_stationIDs.begin(); it != m_stationIDs.end(); ++it, ++i) {
+ for (QStringList::iterator it = m_stationIDs.begin(); it != m_stationIDs.end(); ++it, ++k) {
+ for (QStringList::const_iterator it = m_stationIDs.begin(); it != m_stationIDs.end(); ++it, ++k) {
+ for (QStringList::iterator it = m_stationIDs.begin(); it != m_stationIDs.end(); ++it, ++buttonID) {
+./plugins/gui-quickbar/quickbar.cpp
+---
+ for (QStringList::const_iterator it = m_stationIDs.begin(); it != m_stationIDs.end(); ++it, ++i) {
+ for (QStringList::iterator it = m_stationIDs.begin(); it != m_stationIDs.end(); ++it) {
+ for (; iit != m_stationMenuIDs.end(); ++iit, ++sit) {
+ for (; iit != m_stationMenuIDs.end(); ++iit, ++sit) {
+ for (QMapIterator it = streams.begin(); it != streams.end(); ++it) {
+./plugins/gui-docking-menu/docking.cpp
+---
+
+
+
+
+
+
+Running script returnbracket.
+
+224: if( page == 0 ) { return(0); }
+251: return( page );
+258: if( page == 0 ) { return(0); }
+271: return( page );
+282: return( 0 );
+300: return( container );
+312: return( 0 );
+332: return( container );
+341: return( 0 );
+348: return( page );
+369: return( container );
+Possible warning in: ./src/libkradio-gui/aboutwidget.cpp \ No newline at end of file
diff --git a/kradio3/configure.in.in b/kradio3/configure.in.in
new file mode 100644
index 0000000..8ac8637
--- /dev/null
+++ b/kradio3/configure.in.in
@@ -0,0 +1,210 @@
+#MIN_CONFIG(3.2)
+
+
+CXXFLAGS="$CXXFLAGS $KDE_DEFAULT_CXXFLAGS"
+
+dnl --------------------------------------------------------------------
+dnl Check for LIRC client support
+
+PLUGIN_LIRC=
+LIB_LIRC=
+
+AC_ARG_ENABLE(lirc, AC_HELP_STRING([--enable-lirc], [enable use of LIRC if found, default = true]))
+if test -z "$enable_lirc" -o "$enable_lirc" = "yes"; then
+
+ have_lirc=yes
+ KDE_CHECK_LIB(lirc_client,lirc_init,,have_lirc=no)
+ if test "$have_lirc" = "yes"; then
+ KDE_CHECK_HEADER(lirc/lirc_client.h,,have_lirc=no)
+ fi
+
+ AC_MSG_CHECKING([for lirc support])
+
+ if test "$have_lirc" = "yes"; then
+ AC_DEFINE(HAVE_LIRC, 1, [Define this if lirc client library is available and should be used])
+ LIB_LIRC="-llirc_client"
+ PLUGIN_LIRC=lirc
+ AC_MSG_RESULT([enabled])
+ else
+ AC_MSG_RESULT([disabled])
+ fi
+
+
+else
+
+ AC_MSG_CHECKING([for lirc support])
+ AC_MSG_RESULT([disabled])
+
+fi
+
+AC_SUBST(LIB_LIRC)
+AC_SUBST(PLUGIN_LIRC)
+
+
+dnl ---------------------------------------------------------------------
+dnl V4L2
+
+
+AC_ARG_ENABLE(v4l2, AC_HELP_STRING([--enable-v4l2], [enable use of V4L2 if found, default = true]))
+if test -z "$enable_v4l2" -o "$enable_v4l2" = "yes"; then
+
+ AC_MSG_CHECKING([for v4l2 support])
+ AC_DEFINE_UNQUOTED(HAVE_V4L2, 1, [Define if you have V4L2 support])
+ AC_MSG_RESULT([v4l2 support enabled])
+
+else
+
+ AC_MSG_CHECKING([for v4l2 support])
+ AC_MSG_RESULT([disabled])
+
+fi
+
+dnl ---------------------------------------------------------------------
+dnl LibSndFile
+
+AC_CHECK_LIB(sndfile, sf_open, [], AC_MSG_ERROR([libsndfile not found]))
+AC_CHECK_HEADERS([sndfile.h], [], AC_MSG_ERROR([libsndfile header not found]))
+AC_CHECK_HEADERS([sys/soundcard.h], [], AC_MSG_ERROR([sys/soundcard.h not found]))
+
+dnl ---------------------------------------------------------------------
+dnl LibLame
+
+LIB_LAME=
+
+AC_ARG_ENABLE(lame, AC_HELP_STRING([--enable-lame], [enable use of lame if found, default = true]))
+if test -z "$enable_lame" -o "$enable_lame" = "yes"; then
+
+
+ have_lame=yes
+ KDE_CHECK_LIB(mp3lame,lame_init,,have_lame=no)
+ if test "$have_lame" = "yes"; then
+ KDE_CHECK_HEADER(lame/lame.h,,have_lame=no)
+ fi
+
+ AC_MSG_CHECKING([for lame support])
+
+ if test "$have_lame" = "yes"; then
+ AC_DEFINE(HAVE_LAME, 1, [Define this if lame mp3 encoder library is available and should be used])
+ LIB_LAME="-lmp3lame"
+ AC_MSG_RESULT([enabled])
+ else
+ AC_MSG_RESULT([disabled])
+ fi
+
+else
+
+ AC_MSG_CHECKING([for lame support])
+ AC_MSG_RESULT([disabled])
+
+fi
+
+AC_SUBST(LIB_LAME)
+
+
+dnl ---------------------------------------------------------------------
+dnl Ogg/Vorbis support
+
+LIB_OGG=
+
+AC_ARG_ENABLE(ogg, AC_HELP_STRING([--enable-ogg], [enable use of Ogg/Vorbis if found, default = true]))
+if test -z "$enable_ogg" -o "$enable_ogg" = "yes"; then
+
+
+ have_ogg=yes
+ KDE_CHECK_LIB(vorbisenc,vorbis_encode_init,,have_ogg=no)
+ if test "$have_ogg" = "yes"; then
+ KDE_CHECK_HEADER(vorbis/vorbisenc.h,,have_ogg=no)
+ fi
+ if test "$have_ogg" = "yes"; then
+ KDE_CHECK_LIB(ogg,ogg_stream_packetin,,have_ogg=no)
+ fi
+ if test "$have_ogg" = "yes"; then
+ KDE_CHECK_HEADER(ogg/ogg.h,,have_ogg=no)
+ fi
+
+ AC_MSG_CHECKING([for ogg/vorbis support])
+
+ if test "$have_ogg" = "yes"; then
+ AC_DEFINE(HAVE_OGG, 1, [Define this if OGG/Vorbis encoder library is available and should be used])
+ LIB_OGG="-logg -lvorbisenc"
+ AC_MSG_RESULT([enabled])
+ else
+ AC_MSG_RESULT([disabled])
+ fi
+
+else
+
+ AC_MSG_CHECKING([for ogg/vorbis support])
+ AC_MSG_RESULT([disabled])
+
+fi
+
+AC_SUBST(LIB_OGG)
+
+dnl ---------------------------------------------------------------------
+dnl ALSA support
+
+LIB_ALSA=
+PLUGIN_ALSA=
+
+AC_ARG_ENABLE(alsa, AC_HELP_STRING([--enable-alsa], [enable use of ALSA if found, default = true]))
+if test -z "$enable_alsa" -o "$enable_alsa" = "yes"; then
+
+
+ have_alsa=yes
+ KDE_CHECK_LIB(asound,snd_card_next,,have_alsa=no)
+ if test "$have_alsa" = "yes"; then
+ KDE_CHECK_HEADER(alsa/asoundlib.h,,have_alsa=no)
+ fi
+
+ AC_MSG_CHECKING([for ALSA support])
+
+ if test "$have_alsa" = "yes"; then
+ AC_DEFINE(HAVE_ALSA, 1, [Define this if ALSA library is available and should be used])
+ LIB_ALSA="-lasound"
+ PLUGIN_ALSA=alsa-sound
+ AC_MSG_RESULT([enabled])
+ else
+ AC_MSG_RESULT([disabled])
+ fi
+
+else
+
+ AC_MSG_CHECKING([for alsa support])
+ AC_MSG_RESULT([disabled])
+
+fi
+
+AC_SUBST(LIB_ALSA)
+AC_SUBST(PLUGIN_ALSA)
+
+
+dnl ---------------------------------------------------------------------
+dnl OSS Plugin
+
+PLUGIN_OSS=
+
+AC_ARG_ENABLE(oss, AC_HELP_STRING([--enable-oss], [compile OSS plugin, default = true]))
+if test -z "$enable_oss" -o "$enable_oss" = "yes"; then
+
+ PLUGIN_OSS=oss-sound
+ AC_MSG_CHECKING([for OSS support])
+ AC_MSG_RESULT([enabled])
+else
+
+ AC_MSG_CHECKING([for OSS support])
+ AC_MSG_RESULT([disabled])
+
+fi
+
+AC_SUBST(PLUGIN_OSS)
+
+
+dnl ---------------------------------------------------------------------------
+
+AC_SUBST(libkradiodir, '$(libdir)/kradio/plugins')
+
+
+dnl ----------------------------------------------------------------------
+dnl apidox
+KDE_INIT_DOXYGEN([The KRadio API Reference], [Version $VERSION])
diff --git a/kradio3/convert-presets/Makefile.am b/kradio3/convert-presets/Makefile.am
new file mode 100644
index 0000000..9d369d1
--- /dev/null
+++ b/kradio3/convert-presets/Makefile.am
@@ -0,0 +1,31 @@
+subdirs = po .
+
+bin_PROGRAMS = convert-presets
+
+convert_presets_SOURCES = convert-presets.cpp
+convert_presets_LDADD = $(LIB_KFILE) $(LIB_KDEUI) $(LIB_KDECORE)
+
+
+# this 10 paths are KDE specific. Use them:
+# kde_htmldir Where your docs should go to. (contains lang subdirs)
+# kde_appsdir Where your application file (.kdelnk) should go to.
+# kde_icondir Where your icon should go to.
+# kde_minidir Where your mini icon should go to.
+# kde_datadir Where you install application data. (Use a subdir)
+# kde_locale Where translation files should go to.(contains lang subdirs)
+# kde_cgidir Where cgi-bin executables should go to.
+# kde_confdir Where config files should go to.
+# kde_mimedir Where mimetypes should go to.
+# kde_toolbardir Where general toolbar icons should go to.
+# kde_wallpaperdir Where general wallpapers should go to.
+
+# set the include path for X, qt and KDE
+INCLUDES= $(all_includes)
+
+METASOURCES = AUTO
+
+# the library search path.
+convert_presets_LDFLAGS = $(all_libraries) $(KDE_RPATH)
+
+messages: rc.cpp
+ $(XGETTEXT) *.cpp -o po/kradio-convert-presets.pot
diff --git a/kradio3/convert-presets/convert-presets.cpp b/kradio3/convert-presets/convert-presets.cpp
new file mode 100644
index 0000000..3ba733c
--- /dev/null
+++ b/kradio3/convert-presets/convert-presets.cpp
@@ -0,0 +1,192 @@
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <kapplication.h>
+#include <qstring.h>
+#include <qtextstream.h>
+#include <qfile.h>
+#include <klocale.h>
+#include <kdebug.h>
+#include <kaboutdata.h>
+#include <kcmdlineargs.h>
+#include <qregexp.h>
+#include <time.h>
+#include <sys/fcntl.h>
+#include <unistd.h>
+
+#define dev_urandom "/dev/urandom"
+
+QString createStationID()
+{
+ const int buffersize = 32;
+ unsigned char buffer[buffersize];
+
+ QString stime, srandom = "";
+ stime.setNum(time(NULL));
+
+ int fd = open (dev_urandom, O_RDONLY);
+ read(fd, buffer, buffersize);
+ close(fd);
+ for (int i = 0; i < buffersize; ++i)
+ srandom += QString().sprintf("%02X", (unsigned int)buffer[i]);
+
+// kdDebug() << i18n("generated StationID: ") << stime << srandom << endl;
+
+ return stime + srandom;
+}
+
+
+
+
+bool convertFile(const QString &file)
+{
+ ////////////////////////////////////////////////////////////////////////
+ // read input
+ ////////////////////////////////////////////////////////////////////////
+
+ QFile presetFile (file);
+
+ if (! presetFile.open(IO_ReadOnly)) {
+ kdDebug() << "convertFile: "
+ << i18n("error opening preset file")
+ << " " << file << " "
+ << i18n("for reading") << endl;
+ return false;
+ }
+
+ QString xmlData;
+
+ // make sure that qtextstream is gone when we close presetFile
+ {
+ QTextStream ins(&presetFile);
+ ins.setEncoding(QTextStream::Locale);
+ xmlData = ins.read();
+ }
+
+ if (xmlData.find("<format>", 0, false) >= 0) {
+ kdDebug() << "file " << file << " already in new format" << endl;
+ // but add <?xml line at beginning if missing
+
+ {
+ presetFile.reset();
+ QTextStream ins(&presetFile);
+ ins.setEncoding(QTextStream::UnicodeUTF8);
+ xmlData = ins.read();
+ }
+
+ if (xmlData.find("<?xml", 0, false) < 0) {
+ xmlData = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xmlData;
+ }
+
+ } else {
+
+ ////////////////////////////////////////////////////////////////////////
+ // convert file
+ ////////////////////////////////////////////////////////////////////////
+
+ QRegExp qselect("<quickselect>.*</quickselect>");
+ QRegExp docking("<dockingmenu>.*</dockingmenu>");
+ QRegExp station("<station>(.*)</station>");
+ QRegExp stationlist("<stationlist>");
+ QRegExp emptyLines("\\n\\s*\\n");
+
+ #define stationIDElement "stationID"
+
+ qselect.setMinimal(true);
+ docking.setMinimal(true);
+ station.setMinimal(true);
+
+ xmlData = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xmlData;
+ xmlData.replace(stationlist, "<stationlist>\n\t\t<format>kradio-1.0</format>");
+ xmlData.replace(qselect, "");
+ xmlData.replace(docking, "");
+ xmlData.replace(station, "<FrequencyRadioStation>\n"
+ "\t\t\t<" stationIDElement "></" stationIDElement ">"
+ "\\1</FrequencyRadioStation>"
+ );
+
+ int p = 0;
+ int f = 0;
+ while ( (f = xmlData.find("<" stationIDElement "></" stationIDElement ">", p) ) >= 0) {
+ xmlData.insert(f + 2 + QString(stationIDElement).length(), createStationID());
+ }
+
+ xmlData.replace(emptyLines, "\n");
+ }
+
+ presetFile.close();
+
+
+ ////////////////////////////////////////////////////////////////////////
+ // write output
+ ////////////////////////////////////////////////////////////////////////
+
+ if (! presetFile.open(IO_WriteOnly)) {
+ kdDebug() << "convertFile: "
+ << i18n("error opening preset file")
+ << " " << file << " "
+ << i18n("for writing") << endl;
+ return false;
+ }
+
+ QTextStream outs(&presetFile);
+ outs.setEncoding(QTextStream::UnicodeUTF8);
+
+ outs << xmlData;
+
+ if (presetFile.status() != IO_Ok) {
+ kdDebug() << "StationList::writeXML: "
+ << i18n("error writing preset file")
+ << " " << file
+ << " (" << presetFile.state() << ")"
+ << endl;
+ return false;
+ }
+
+ return true;
+}
+
+
+static const char *description = "convert-presets";
+
+static KCmdLineOptions options[] =
+{
+ { "q", I18N_NOOP("be quiet"), 0},
+ { "+[preset files]", I18N_NOOP("preset file to convert"), 0 },
+ KCmdLineLastOption
+};
+
+int main(int argc, char *argv[])
+{
+ KAboutData aboutData("convert-presets", I18N_NOOP("convert-presets"),
+ VERSION, description, KAboutData::License_GPL,
+ "(c) 2003-2005 Martin Witte",
+ 0,
+ "http://sourceforge.net/projects/kradio",
+ 0);
+ aboutData.addAuthor("Martin Witte", "", "witte@kawo1.rwth-aachen.de");
+
+ KCmdLineArgs::init( argc, argv, &aboutData );
+ KCmdLineArgs::addCmdLineOptions( options ); // Add our own options.
+
+ KApplication a (false, false);
+
+ KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
+
+ for (int i = 0; i < args->count(); ++i) {
+ const char *x = args->arg(i);
+ if (! convertFile(x)) {
+ return -1;
+ } else {
+ if (! args->isSet("q"))
+ kdDebug() << x << ": ok" << endl;
+ }
+ }
+ if (args->count() == 0) {
+ kdDebug() << "no input" << endl;
+ return -1;
+ }
+
+ return 0;
+}
diff --git a/kradio3/convert-presets/po/Makefile b/kradio3/convert-presets/po/Makefile
new file mode 100644
index 0000000..b36affd
--- /dev/null
+++ b/kradio3/convert-presets/po/Makefile
@@ -0,0 +1,654 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# KDE tags expanded automatically by am_edit - $Revision: 483858 $
+# kradio3/convert-presets/po/Makefile. Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+pkgdatadir = $(datadir)/kradio-0.1.1.1~20061112
+pkgincludedir = $(includedir)/kradio-0.1.1.1~20061112
+pkglibdir = $(libdir)/kradio-0.1.1.1~20061112
+pkglibexecdir = $(libexecdir)/kradio-0.1.1.1~20061112
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = x86_64-pc-linux-gnu
+host_triplet = x86_64-pc-linux-gnu
+target_triplet = x86_64-pc-linux-gnu
+subdir = kradio3/convert-presets/po
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/admin/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+#>+ 1
+#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST)
+#>+ 1
+DISTFILES = $(GMOFILES) $(POFILES) $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST)
+ACLOCAL = ${SHELL} /home/pusling/src/kradio-0.1.1.1~20061112/admin/missing --run aclocal-1.11
+AMTAR = ${SHELL} /home/pusling/src/kradio-0.1.1.1~20061112/admin/missing --run tar
+AR = ar
+ARTSCCONFIG = /usr/bin/artsc-config
+AUTOCONF = $(SHELL) $(top_srcdir)/admin/cvs.sh configure || touch configure
+AUTODIRS =
+AUTOHEADER = ${SHELL} /home/pusling/src/kradio-0.1.1.1~20061112/admin/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/pusling/src/kradio-0.1.1.1~20061112/admin/missing --run automake-1.11
+AWK = gawk
+CC = x86_64-linux-gnu-gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -std=iso9899:1990 -W -Wall -Wchar-subscripts -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -DNDEBUG -O2 -Wall -g -O2 -Wformat-security -Wmissing-format-attribute
+CONF_FILES = $(top_srcdir)/./admin/configure.in.min $(top_srcdir)/configure.in.in $(top_srcdir)/./kradio3/configure.in.in
+CPP = x86_64-linux-gnu-gcc -E
+CPPFLAGS = -DQT_THREAD_SUPPORT -D_REENTRANT
+CXX = x86_64-linux-gnu-g++
+CXXCPP = x86_64-linux-gnu-g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -Wno-long-long -Wundef -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -Wchar-subscripts -Wall -W -Wpointer-arith -DNDEBUG -DNO_DEBUG -O2 -g -O2 -Wformat-security -Wmissing-format-attribute -Wno-non-virtual-dtor -fno-exceptions -fno-check-new -fno-common -DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION
+CYGPATH_W = echo
+DCOPIDL = /usr/bin/dcopidl
+DCOPIDL2CPP = /usr/bin/dcopidl2cpp
+DCOPIDLNG = /usr/bin/dcopidlng
+DCOP_DEPENDENCIES = $(DCOPIDL) $(DCOPIDLNG)
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+DOXYGEN = /usr/bin/doxygen
+DOXYGEN_PROJECT_NAME = The KRadio API Reference
+DOXYGEN_PROJECT_NUMBER = Version 3.5.5
+DSYMUTIL =
+DUMPBIN =
+ECHO_C =
+ECHO_N = -n
+ECHO_T =
+EGREP = /bin/grep -E
+ENABLE_PERMISSIVE_FLAG = -fpermissive
+EXEEXT =
+FGREP = /bin/grep -F
+FRAMEWORK_COREAUDIO =
+GMSGFMT = /usr/bin/msgfmt
+GREP = /bin/grep
+HAVE_GCC_VISIBILITY = 0
+INSTALL = /usr/bin/install -c -p
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL} $(INSTALL_STRIP_FLAG)
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+KCFG_DEPENDENCIES = $(KCONFIG_COMPILER)
+KCONFIG_COMPILER = /usr/bin/kconfig_compiler
+KDECONFIG = /usr/bin/kde-config
+KDE_CHECK_PLUGIN = $(KDE_PLUGIN) -rpath $(libdir)
+KDE_EXTRA_RPATH =
+KDE_HAS_DOXYGEN = yes
+KDE_HAVE_DOT = YES
+KDE_INCLUDES = -I/usr/include/kde
+KDE_LDFLAGS = -L/usr/lib
+KDE_MT_LDFLAGS =
+KDE_MT_LIBS = -lpthread
+KDE_NO_UNDEFINED = -Wl,--no-undefined -Wl,--allow-shlib-undefined
+KDE_PLUGIN = -avoid-version -module -no-undefined $(KDE_NO_UNDEFINED) $(KDE_RPATH) $(KDE_MT_LDFLAGS)
+KDE_RPATH =
+KDE_USE_CLOSURE_FALSE =
+KDE_USE_CLOSURE_TRUE = #
+KDE_USE_FINAL_FALSE =
+KDE_USE_FINAL_TRUE = #
+KDE_USE_FPIE = -fPIE
+KDE_USE_NMCHECK_FALSE =
+KDE_USE_NMCHECK_TRUE = #
+KDE_USE_PIE = -pie
+KDE_XSL_STYLESHEET = /usr/share/apps/ksgmltools2/customization/kde-chunk.xsl
+LD = /usr/bin/ld -m elf_x86_64
+LDFLAGS =
+LDFLAGS_AS_NEEDED =
+LDFLAGS_NEW_DTAGS =
+LEX = ${SHELL} /home/pusling/src/kradio-0.1.1.1~20061112/admin/missing --run flex
+LEXLIB =
+LEX_OUTPUT_ROOT =
+LFLAGS = -o.c
+LIBCOMPAT =
+LIBCRYPT = -lcrypt
+LIBDL = -ldl
+LIBJPEG = -ljpeg
+LIBOBJS =
+LIBPNG = -lpng -lz -lm
+LIBPTHREAD = -lpthread
+LIBRESOLV = -lresolv
+LIBS = -lsndfile
+LIBSM = -lSM -lICE
+LIBSOCKET =
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LIBUCB =
+LIBUTIL = -lutil
+LIBZ = -lz
+LIB_ALSA = -lasound
+LIB_KAB = -lkab
+LIB_KABC = -lkabc
+LIB_KDECORE = -lkdecore
+LIB_KDED =
+LIB_KDEPIM = -lkdepim
+LIB_KDEPRINT = -lkdeprint
+LIB_KDEUI = -lkdeui
+LIB_KDNSSD = -lkdnssd
+LIB_KFILE = -lkio
+LIB_KFM =
+LIB_KHTML = -lkhtml
+LIB_KIMPROXY = -lkimproxy
+LIB_KIO = -lkio
+LIB_KJS = -lkjs
+LIB_KNEWSTUFF = -lknewstuff
+LIB_KPARTS = -lkparts
+LIB_KSPELL = -lkspell
+LIB_KSYCOCA = -lkio
+LIB_KUNITTEST = -lkunittest
+LIB_KUTILS = -lkutils
+LIB_LAME =
+LIB_LIRC = -llirc_client
+LIB_OGG = -logg -lvorbisenc
+LIB_POLL =
+LIB_QPE =
+LIB_QT = -lqt-mt $(LIBZ) $(LIBPNG) -lXext $(LIB_X11) $(LIBSM) -lpthread
+LIB_SMB = -lsmb
+LIB_X11 = -lX11 $(LIBSOCKET)
+LIB_XEXT = -lXext
+LIB_XRENDER =
+LIPO =
+LN_S = ln -s
+LTLIBOBJS =
+MAKEINFO = ${SHELL} /home/pusling/src/kradio-0.1.1.1~20061112/admin/missing --run makeinfo
+MAKEKDEWIDGETS = /usr/bin/makekdewidgets
+MCOPIDL = /usr/bin/mcopidl
+MEINPROC = /usr/bin/meinproc
+MKDIR_P = /bin/mkdir -p
+MOC = /usr/share/qt3/bin/moc
+MSGFMT = /usr/bin/msgfmt
+NM = /usr/bin/nm -B
+NMEDIT =
+NOOPT_CFLAGS = -O0
+NOOPT_CXXFLAGS = -O0
+OBJDUMP = objdump
+OBJEXT = o
+OTOOL =
+OTOOL64 =
+PACKAGE = kradio-convert-presets
+PACKAGE_BUGREPORT =
+PACKAGE_NAME =
+PACKAGE_STRING =
+PACKAGE_TARNAME =
+PACKAGE_URL =
+PACKAGE_VERSION =
+PATH_SEPARATOR = :
+PERL = /usr/bin/perl
+PLUGIN_ALSA = alsa-sound
+PLUGIN_LIRC = lirc
+PLUGIN_OSS = oss-sound
+QTDOCDIR = /usr/share/qt3/doc/html
+QTE_NORTTI =
+QT_INCLUDES = -I/usr/include/qt3
+QT_LDFLAGS = -L/usr/share/qt3/lib
+RANLIB = ranlib
+SED = /bin/sed
+SET_MAKE =
+SHELL = /bin/bash
+STRIP = strip
+TOPSUBDIRS = kradio3
+UIC = /usr/share/qt3/bin/uic -L $(kde_widgetdir) -nounload
+UIC_TR = tr2i18n
+USER_INCLUDES =
+USER_LDFLAGS =
+USE_EXCEPTIONS = -fexceptions
+USE_RTTI =
+USE_THREADS =
+VERSION = 3.5.5
+WOVERLOADED_VIRTUAL =
+XGETTEXT = /usr/bin/xgettext
+XMKMF =
+XMLLINT = /usr/bin/xmllint
+X_EXTRA_LIBS =
+X_INCLUDES = -I.
+X_LDFLAGS = -L/usr/lib
+X_PRE_LIBS =
+X_RPATH =
+abs_builddir = /home/pusling/src/kradio-0.1.1.1~20061112/kradio3/convert-presets/po
+abs_srcdir = /home/pusling/src/kradio-0.1.1.1~20061112/kradio3/convert-presets/po
+abs_top_builddir = /home/pusling/src/kradio-0.1.1.1~20061112
+abs_top_srcdir = /home/pusling/src/kradio-0.1.1.1~20061112
+ac_ct_CC =
+ac_ct_CXX =
+ac_ct_DUMPBIN =
+all_includes = -I/usr/include/kde -I/usr/include/qt3 -I.
+all_libraries = -L/usr/share/qt3/lib -L/usr/lib
+am__include = include
+am__leading_dot = .
+am__quote =
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-pc-linux-gnu
+build_alias = x86_64-linux-gnu
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = pc
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-pc-linux-gnu
+host_alias = x86_64-linux-gnu
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = pc
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${prefix}/share/info
+install_sh = ${SHELL} /home/pusling/src/kradio-0.1.1.1~20061112/admin/install-sh
+kde_appsdir = ${datadir}/applnk
+kde_bindir = ${exec_prefix}/bin
+kde_confdir = ${datadir}/config
+kde_datadir = ${datadir}/apps
+kde_htmldir = /usr/share/doc/kde/HTML
+kde_icondir = ${datadir}/icons
+kde_includes = /usr/include/kde
+kde_kcfgdir = ${datadir}/config.kcfg
+kde_libraries = /usr/lib
+kde_libs_htmldir = /usr/share/doc/kde/HTML
+kde_libs_prefix = /usr
+kde_locale = ${datadir}/locale
+kde_mimedir = ${datadir}/mimelnk
+kde_moduledir = ${libdir}/kde3
+kde_qtver = 3
+kde_servicesdir = ${datadir}/services
+kde_servicetypesdir = ${datadir}/servicetypes
+kde_sounddir = ${datadir}/sounds
+kde_styledir = ${libdir}/kde3/plugins/styles
+kde_templatesdir = ${datadir}/templates
+kde_wallpaperdir = ${datadir}/wallpapers
+kde_widgetdir = /usr/lib/kde3/plugins/designer
+kdeinitdir = $(kde_moduledir)
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+libkradiodir = $(libdir)/kradio/plugins
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+lt_ECHO = echo
+mandir = ${prefix}/share/man
+mkdir_p = /bin/mkdir -p
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr
+program_transform_name = s,x,x,
+psdir = ${docdir}
+qt_includes = /usr/include/qt3
+qt_libraries = /usr/share/qt3/lib
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target = x86_64-pc-linux-gnu
+target_alias =
+target_cpu = x86_64
+target_os = linux-gnu
+target_vendor = pc
+top_build_prefix = ../../../
+top_builddir = ../../..
+top_srcdir = ../../..
+x_includes = .
+x_libraries = /usr/lib
+xdg_appsdir = ${datadir}/applications/kde
+xdg_directorydir = ${datadir}/desktop-directories
+xdg_menudir = ${sysconfdir}/xdg/menus
+#>- POFILES = AUTO
+#>+ 2
+POFILES = de.po
+GMOFILES = de.gmo
+#>- all: all-am
+#>+ 1
+all: all-nls docs-am all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+#>- @for dep in $?; do \
+#>- case '$(am__configure_deps)' in \
+#>- *$$dep*) \
+#>- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+#>- && { if test -f $@; then exit 0; else break; fi; }; \
+#>- exit 1;; \
+#>- esac; \
+#>- done; \
+#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu kradio3/convert-presets/po/Makefile'; \
+#>- $(am__cd) $(top_srcdir) && \
+#>- $(AUTOMAKE) --gnu kradio3/convert-presets/po/Makefile
+#>+ 12
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu kradio3/convert-presets/po/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu kradio3/convert-presets/po/Makefile
+ cd $(top_srcdir) && perl admin/am_edit kradio3/convert-presets/po/Makefile.in
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+#>- distdir: $(DISTFILES)
+#>+ 1
+distdir: distdir-nls $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+#>- uninstall: uninstall-am
+#>+ 1
+uninstall: uninstall-nls uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+#>- clean: clean-am
+#>+ 1
+clean: kde-rpo-clean clean-am
+
+#>- clean-am: clean-generic clean-libtool mostlyclean-am
+#>+ 1
+clean-am: clean-bcheck clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+#>- install-data-am:
+#>+ 1
+install-data-am: install-nls
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+#>- maintainer-clean: maintainer-clean-am
+#>+ 1
+maintainer-clean: clean-nls maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ distclean distclean-generic distclean-libtool distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
+
+#>+ 2
+KDE_DIST=Makefile.in de.po Makefile.am
+
+#>+ 4
+de.gmo: de.po
+ rm -f de.gmo; $(GMSGFMT) -o de.gmo $(srcdir)/de.po
+ test ! -f de.gmo || touch de.gmo
+
+#>+ 3
+clean-nls:
+ -rm -f de.gmo
+
+#>+ 10
+install-nls:
+ @for base in de ; do \
+ echo $(INSTALL_DATA) $$base.gmo $(DESTDIR)$(kde_locale)/$$base/LC_MESSAGES/$(PACKAGE).mo ;\
+ $(mkinstalldirs) $(DESTDIR)$(kde_locale)/$$base/LC_MESSAGES ; \
+ if test -f $$base.gmo; then $(INSTALL_DATA) $$base.gmo $(DESTDIR)$(kde_locale)/$$base/LC_MESSAGES/$(PACKAGE).mo ;\
+ elif test -f $(srcdir)/$$base.gmo; then $(INSTALL_DATA) $(srcdir)/$$base.gmo $(DESTDIR)$(kde_locale)/$$base/LC_MESSAGES/$(PACKAGE).mo ;\
+ fi ;\
+ done
+
+
+#>+ 3
+uninstall-nls:
+ rm -f $(DESTDIR)$(kde_locale)/de/LC_MESSAGES/$(PACKAGE).mo
+
+#>+ 2
+all-nls: $(GMOFILES)
+
+#>+ 8
+distdir-nls:$(GMOFILES)
+ for file in $(POFILES); do \
+ cp $(srcdir)/$$file $(distdir); \
+ done
+ for file in $(GMOFILES); do \
+ cp $(srcdir)/$$file $(distdir); \
+ done
+
+#>+ 4
+merge:
+ $(MAKE) -f $(top_srcdir)/admin/Makefile.common package-merge POFILES="${POFILES}" PACKAGE=${PACKAGE}
+
+
+#>+ 2
+docs-am:
+
+#>+ 15
+force-reedit:
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu kradio3/convert-presets/po/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu kradio3/convert-presets/po/Makefile
+ cd $(top_srcdir) && perl admin/am_edit kradio3/convert-presets/po/Makefile.in
+
+
+#>+ 21
+clean-bcheck:
+ rm -f *.bchecktest.cc *.bchecktest.cc.class a.out
+
+bcheck: bcheck-am
+
+bcheck-am:
+ @for i in ; do \
+ if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \
+ echo "int main() {return 0;}" > $$i.bchecktest.cc ; \
+ echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \
+ echo "$$i"; \
+ if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \
+ rm -f $$i.bchecktest.cc; exit 1; \
+ fi ; \
+ echo "" >> $$i.bchecktest.cc.class; \
+ perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \
+ rm -f a.out; \
+ fi ; \
+ done
+
+
+#>+ 3
+final:
+ $(MAKE) all-am
+
+#>+ 3
+final-install:
+ $(MAKE) install-am
+
+#>+ 3
+no-final:
+ $(MAKE) all-am
+
+#>+ 3
+no-final-install:
+ $(MAKE) install-am
+
+#>+ 3
+kde-rpo-clean:
+ -rm -f *.rpo
+
+#>+ 3
+nmcheck:
+nmcheck-am: nmcheck
diff --git a/kradio3/convert-presets/po/Makefile.am b/kradio3/convert-presets/po/Makefile.am
new file mode 100644
index 0000000..a2d8133
--- /dev/null
+++ b/kradio3/convert-presets/po/Makefile.am
@@ -0,0 +1,2 @@
+POFILES = AUTO
+PACKAGE = kradio-convert-presets
diff --git a/kradio3/convert-presets/po/de.po b/kradio3/convert-presets/po/de.po
new file mode 100644
index 0000000..190b6f0
--- /dev/null
+++ b/kradio3/convert-presets/po/de.po
@@ -0,0 +1,539 @@
+# translation of de.po to
+# This file is put in the public domain.
+#
+# Ernst Martin Witte <witte@kawo1.rwth-aachen.de>, 2006.
+# Ernst Martin Witte <emw@nocabal.de>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-06 00:27+0100\n"
+"PO-Revision-Date: 2006-11-05 23:47+0100\n"
+"Last-Translator: Ernst Martin Witte <emw@nocabal.de>\n"
+"Language-Team: <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. i18n: file libkradio/pluginmanager-configuration-ui.ui line 16
+#: rc.cpp:3 libkradio/pluginmanager-configuration-ui.cpp:170
+#, no-c-format
+msgid "PluginManagerConfigurationUI"
+msgstr "PluginManagerConfigurationUI"
+
+#. i18n: file libkradio/pluginmanager-configuration-ui.ui line 30
+#: rc.cpp:6 libkradio/pluginmanager-configuration-ui.cpp:171
+#, no-c-format
+msgid "Show Progress Bar during Startup for Plugin Initiali&zation"
+msgstr "Fortschrittsbalken bei der Initialisierung der Plugins anzeigen"
+
+#. i18n: file libkradio/pluginmanager-configuration-ui.ui line 33
+#: rc.cpp:9 libkradio/pluginmanager-configuration-ui.cpp:172
+#, no-c-format
+msgid "Alt+Z"
+msgstr "Alt+Z"
+
+#. i18n: file libkradio/pluginmanager-configuration-ui.ui line 78
+#. i18n: file libkradio/pluginmanager-configuration-ui.ui line 229
+#: rc.cpp:13 rc.cpp:34 libkradio/pluginmanager-configuration-ui.cpp:63
+#: libkradio/pluginmanager-configuration-ui.cpp:104
+#: libkradio/pluginmanager-configuration-ui.cpp:174
+#: libkradio/pluginmanager-configuration-ui.cpp:183
+#, no-c-format
+msgid "Plugin Class"
+msgstr "Plugin Klasse"
+
+#. i18n: file libkradio/pluginmanager-configuration-ui.ui line 89
+#: rc.cpp:16 libkradio/pluginmanager-configuration-ui.cpp:64
+#: libkradio/pluginmanager-configuration-ui.cpp:175
+#: libkradio/pluginmanager-configuration.cpp:144
+#, no-c-format
+msgid "Instance Name"
+msgstr "Name der Instanz"
+
+#. i18n: file libkradio/pluginmanager-configuration-ui.ui line 100
+#. i18n: file libkradio/pluginmanager-configuration-ui.ui line 240
+#: rc.cpp:19 rc.cpp:37 libkradio/pluginmanager-configuration-ui.cpp:65
+#: libkradio/pluginmanager-configuration-ui.cpp:105
+#: libkradio/pluginmanager-configuration-ui.cpp:176
+#: libkradio/pluginmanager-configuration-ui.cpp:184
+#: libkradio-gui/radiostation-listview.cpp:36
+#, no-c-format
+msgid "Description"
+msgstr "Beschreibung"
+
+#. i18n: file libkradio/pluginmanager-configuration-ui.ui line 116
+#: rc.cpp:22 libkradio/pluginmanager-configuration-ui.cpp:177
+#, no-c-format
+msgid "list of running plugins"
+msgstr "Liste der laufenden Plugins"
+
+#. i18n: file libkradio/pluginmanager-configuration-ui.ui line 153
+#: rc.cpp:26 libkradio/pluginmanager-configuration-ui.cpp:179
+#, no-c-format
+msgid "remove/stop a selected plugin instance"
+msgstr "Anhalten/Entfernen der ausgewählten Plugin-Instanz"
+
+#. i18n: file libkradio/pluginmanager-configuration-ui.ui line 223
+#: rc.cpp:31 libkradio/pluginmanager-configuration-ui.cpp:182
+#, no-c-format
+msgid "create a new instance of selected plugin class"
+msgstr "Erzeugen einer neuen Instanz der ausgewählten Pluginklasse"
+
+#. i18n: file libkradio/pluginmanager-configuration-ui.ui line 256
+#: rc.cpp:40 libkradio/pluginmanager-configuration-ui.cpp:185
+#, no-c-format
+msgid "list of available plugin classes"
+msgstr "Liste der Verfügbaren Plugin-Klassen"
+
+#. i18n: file libkradio/pluginmanager-configuration-ui.ui line 297
+#: rc.cpp:44 libkradio/pluginmanager-configuration-ui.cpp:187
+#, no-c-format
+msgid "select a plugin library"
+msgstr "Auswahl einer Plugin-Bibliothek"
+
+#. i18n: file libkradio/pluginmanager-configuration-ui.ui line 317
+#: rc.cpp:48 libkradio/pluginmanager-configuration-ui.cpp:189
+#, no-c-format
+msgid "unload a plugin library"
+msgstr "Entfernen einer Plugin-Bibliothek"
+
+#. i18n: file libkradio/pluginmanager-configuration-ui.ui line 337
+#: rc.cpp:52 libkradio/pluginmanager-configuration-ui.cpp:191
+#, no-c-format
+msgid "load a selected plugin library"
+msgstr "Laden der ausgewählten Plugin-Bibliothek"
+
+#. i18n: file libkradio/pluginmanager-configuration-ui.ui line 353
+#: rc.cpp:55 libkradio/pluginmanager-configuration-ui.cpp:192
+#, no-c-format
+msgid "list of loaded plugin libraries"
+msgstr "Liste der geladenen Plugin-Bibliotheken"
+
+#. i18n: file libkradio-gui/standardscandialog-ui.ui line 16
+#: rc.cpp:58 libkradio-gui/standardscandialog-ui.cpp:86
+#, no-c-format
+msgid "Stations search in progress ..."
+msgstr "Sendersuchlauf läuft ..."
+
+#. i18n: file libkradio-gui/standardscandialog-ui.ui line 104
+#: rc.cpp:64 libkradio-gui/standardscandialog-ui.cpp:88
+#, no-c-format
+msgid "remaining time"
+msgstr "verbleibende Zeit"
+
+#. i18n: file libkradio-gui/standardscandialog-ui.ui line 120
+#: rc.cpp:67 libkradio-gui/standardscandialog-ui.cpp:89
+#, no-c-format
+msgid "<p align=\"right\">nothing here</p>"
+msgstr "<p align=\"right\">hier ist nix</p>"
+
+#. i18n: file libkradio-gui/stationselector-ui.ui line 16
+#: rc.cpp:70 libkradio-gui/stationselector-ui.cpp:90
+#, no-c-format
+msgid "StationSelectorUI"
+msgstr "StationSelectorUI"
+
+#. i18n: file libkradio-gui/stationselector-ui.ui line 30
+#: rc.cpp:73 libkradio-gui/stationselector-ui.cpp:91
+#, no-c-format
+msgid "Selected Stations"
+msgstr "Ausgewählte Sender"
+
+#. i18n: file libkradio-gui/stationselector-ui.ui line 119
+#: rc.cpp:78 libkradio-gui/stationselector-ui.cpp:94
+#, no-c-format
+msgid "Available Stations"
+msgstr "Verfügbare Sender"
+
+#: interfaces/errorlog-interfaces.cpp:43 interfaces/errorlog-interfaces.cpp:78
+msgid "%1 Error: %2\n"
+msgstr "%1 Fehler: %2\n"
+
+#: interfaces/errorlog-interfaces.cpp:52 interfaces/errorlog-interfaces.cpp:87
+msgid "%1 Warning: %2\n"
+msgstr "%1 Warnung: %2\n"
+
+#: interfaces/errorlog-interfaces.cpp:61 interfaces/errorlog-interfaces.cpp:96
+msgid "%1 Information: %2\n"
+msgstr "%1 Information: %2\n"
+
+#: interfaces/errorlog-interfaces.cpp:70
+#: interfaces/errorlog-interfaces.cpp:105
+msgid "%1 Debug: %2\n"
+msgstr "%1 Debug: %2\n"
+
+#: libkradio/fileringbuffer.cpp:34 libkradio/fileringbuffer.cpp:67
+msgid "cannot open buffer file %1"
+msgstr "kann die Puffer-Datei %1 nicht öffnen"
+
+#: libkradio/fileringbuffer.cpp:92
+msgid "FileRingbuffer::resize: Writing to tmpfile %1 failed. "
+msgstr ""
+"FileRingbuffer::resize: Schreiben in die temporäre Datei %1 schlug fehl. "
+
+#: libkradio/fileringbuffer.cpp:98
+msgid "FileRingbuffer::resize: Opening tmpfile %1 failed. "
+msgstr ""
+"FileRingbuffer::resize: Das Öffnen der temporären Datei %1 schlug fehl. "
+
+#: libkradio/fileringbuffer.cpp:126 libkradio/fileringbuffer.cpp:144
+msgid "FileRingBuffer::addData: failed writing data to file %1."
+msgstr "FileRingBuffer::addData: Das Schreiben in die Datei %1 schlug fehl."
+
+#: libkradio/fileringbuffer.cpp:167
+msgid "FileRingBuffer::takeData: failed reading data to file %1."
+msgstr "FileRingBuffer::takeData: Das Lesen aus der Datei %1 schlug fehl."
+
+#: libkradio/kradioapp.cpp:44
+msgid ""
+"KRadio - The Radio Application for KDE<P>With KRadio you can listen to radio "
+"broadcasts with the help of your V4L/V4L2 compatible radio card.<P>The "
+"KRadio Project contains a station preset data database. To complete this "
+"database you are encouraged to contribute your station preset file to the "
+"project. Just send it to one of the authors. <P>If you like to contribute "
+"your ideas, your own plugins or translations, don't hesitate to contact one "
+"of the authors.<P>"
+msgstr ""
+"KRadio - Das Radio-Programm für KDE<P>Mit KRadio und einer Radiokarte, die "
+"vom Video-Für-Linux Treiber des Linux-Kernels unterstützt wird, können Sie "
+"am PC Radiosendungen hören.<P> Das KRadio-Projekt baut eine weltweite "
+"Senderdatenbank auf. Seien Sie ermutigt, Ihre eigenen Sendereinstellungen "
+"dem KRadio-Projekt beizusteuern. Schicken Sie ihre Sendereinstellungen "
+"einfach an einen der Autoren. <P> Wenn Sie mit Ihren Ideen, eigenen Plugins "
+"oder Übersetzungen zum KRadio-Projekt beitragen wollen, zögern Sie nicht, "
+"sich mit einem der Autoren in Verbindung zu setzen.<P>"
+
+#: libkradio/kradioapp.cpp:66
+msgid ""
+"Preset Database, Remote Control Support, Alarms, Rewrite for KRadio 0.3.0, "
+"Misc"
+msgstr ""
+"Sender-Datenbank, Unterstützung für Fernsteuerungen, Wecker, Überarbeitung "
+"zu KRadio 0.3.0, Verschiedenes"
+
+#: libkradio/kradioapp.cpp:67 main.cpp:43
+msgid "Buildsystem, Standards Conformance, Cleanups"
+msgstr "Buildsystem, Standardkonformität, Aufräumarbeiten "
+
+#: libkradio/kradioapp.cpp:69 main.cpp:45
+msgid "idea, first basic application"
+msgstr "Idee, allererste Anwendung"
+
+#: libkradio/kradioapp.cpp:71
+msgid "Many People around the World ... "
+msgstr "Viele Leute rund um die Welt ..."
+
+#: libkradio/kradioapp.cpp:72
+msgid ""
+"... which contributed station preset files \n"
+"and tested early and unstable snapshots of KRadio \n"
+"with much patience"
+msgstr ""
+"... die Senderauswahl-Dateien beigesteuert und frühe und instabile Snapshots "
+"von KRadio mit viel Geduld getestet haben. "
+
+#: libkradio/kradioapp.cpp:106
+msgid "Library %1: Plugin Entry Point is missing\n"
+msgstr "Bibliothek %1: Eintrittspunkt wurde nicht gefunden\n"
+
+#: libkradio/kradioapp.cpp:108 libkradio/kradioapp.cpp:119
+msgid "Plugin Library Load Error"
+msgstr "Das Laden der Bibliothek schlug fehl"
+
+#: libkradio/kradioapp.cpp:116
+msgid ""
+"Library %1: \n"
+"%2"
+msgstr ""
+"Bibliothek %1: \n"
+"%2"
+
+#: libkradio/kradioapp.cpp:143
+msgid "saveState"
+msgstr "saveState"
+
+#: libkradio/kradioapp.cpp:221
+msgid "Instance"
+msgstr "Instanz"
+
+#: libkradio/kradioapp.cpp:242
+msgid "KRadio Configuration"
+msgstr "KRadio-Konfiguration "
+
+#: libkradio/kradioapp.cpp:243
+msgid "About KRadio Components"
+msgstr "Über die KRadio-Komponenten "
+
+#: libkradio/kradioapp.cpp:271
+msgid "Error: Loading Library %1 failed: %2"
+msgstr "Fehler: Das Laden der Bibliothek %1 schlug fehl: %2"
+
+#: libkradio/kradioapp.cpp:322
+msgid "Error: Creation of instance \"%1\" of class %2 falied."
+msgstr "Fehler: Das erzeugen der Instanz \"%1\" der Klasse %2 schlug fehl."
+
+#: libkradio/kradioapp.cpp:328
+msgid "Error: Cannot create instance \"%1\" of unknown class %2."
+msgstr ""
+"Fehler: Kann die Instanz \"%1\" der unbekannten Klasse %2 nicht erzeugen."
+
+#: libkradio/multibuffer.cpp:89
+msgid "Buffer Overflow. "
+msgstr "Puffer Überlauf."
+
+#: libkradio/plugin_configuration_dialog.cpp:29
+msgid "Configuration Dialog"
+msgstr "Konfigurationsdialog"
+
+#: libkradio/pluginmanager-configuration.cpp:143
+msgid "Enter Plugin Instance Name"
+msgstr "Name der Plugin-Instanz eingeben"
+
+#: libkradio/pluginmanager.cpp:123
+msgid "Hide %1"
+msgstr "Verstecke %1"
+
+#: libkradio/pluginmanager.cpp:123
+msgid "Show %1"
+msgstr "%1 anzeigen"
+
+#: libkradio/pluginmanager.cpp:350
+msgid "Plugins"
+msgstr "Pluginss"
+
+#: libkradio/pluginmanager.cpp:351
+msgid "Plugin Library Configuration"
+msgstr "Konfiguration der Plugin-Bibliotheken"
+
+#: libkradio/pluginmanager.cpp:446
+msgid "Starting Plugins"
+msgstr "Starten der Plugins"
+
+#: libkradio/pluginmanager.cpp:459 libkradio/pluginmanager.cpp:476
+msgid "Creating Plugin %1"
+msgstr "Erzeuge Plugin %1"
+
+#: libkradio/pluginmanager.cpp:490
+msgid "Initializing Plugin %1"
+msgstr "Starten des Plugins %1"
+
+#: libkradio/stationlist.cpp:255
+msgid "Contains merged Data"
+msgstr "Enthält zusammengefügte Einträge"
+
+#: libkradio/stationlist.cpp:315
+msgid ""
+"Probably an old station preset file was read.\n"
+"You have to rebuild your station selections for the quickbar and the docking "
+"menu."
+msgstr ""
+"Wahrscheinlich wurde eine alte Senderdatei gelesen.\n"
+"Sie müssen ihre Senderauswahlen für das Kurzwahlfenster und das "
+"Kontrollleistenmenü neu erstellen."
+
+#: libkradio/stationlist.cpp:325
+msgid "parsing failed"
+msgstr "Das Parsen schlug fehl"
+
+#: libkradio/stationlist.cpp:329
+msgid ""
+"Parsing the station preset file failed.\n"
+"See console output for more details."
+msgstr ""
+"Das Parsen der Senderdatei schlug fehl.\n"
+"Mehr informationen gibts in der Ausgabe auf der Konsole."
+
+#: libkradio/stationlist.cpp:343 libkradio/stationlist.cpp:349
+msgid "error downloading preset file %1"
+msgstr "Fehler beim Download der Senderdatei %1"
+
+#: libkradio/stationlist.cpp:345
+msgid "Download of the station preset file at %1 failed."
+msgstr "Der Download der Senderdatei %1 schlug fehl."
+
+#: libkradio/stationlist.cpp:355
+msgid "temporary file: "
+msgstr "temporäre Datei: "
+
+#: libkradio/stationlist.cpp:361
+msgid "error opening preset file %1"
+msgstr "Fehler beim Öffnen der Senderdatei %1"
+
+#: libkradio/stationlist.cpp:364
+msgid "Opening of the station preset file at %1 failed."
+msgstr "Das Öffnen der Senderdatei %1 schluf fehl."
+
+#: libkradio/stationlist.cpp:383
+msgid "Old Preset File Format detected"
+msgstr "Altes Senderdateiformat erkannt"
+
+#: libkradio/stationlist.cpp:461
+msgid "error writing to tempfile %1"
+msgstr "Fehler beim schreiben in die temporäre Datei %1"
+
+#: libkradio/stationlist.cpp:464
+msgid "Writing station preset file %1 failed."
+msgstr "Das Schreiben der Senderdatei %1 schlug fehl."
+
+#: libkradio/stationlist.cpp:476
+msgid "error uploading preset file %1"
+msgstr "Fehler: Das Speichern der Senderlistendatei %1 schlug fehl"
+
+#: libkradio/stationlist.cpp:480
+msgid "Upload of station preset file to %1 failed."
+msgstr "Der Upload der Senderdatei %1 schlug fehl."
+
+#: libkradio/stationlistxmlhandler.cpp:64
+msgid "misplaced element %1"
+msgstr "unerwartetes Element %1"
+
+#: libkradio/stationlistxmlhandler.cpp:116
+msgid "unknown or unexpected element %1"
+msgstr "unbekanntes oder unerwartetes Element %1"
+
+#: libkradio/stationlistxmlhandler.cpp:145
+msgid "expected element %1, but found %2"
+msgstr "erwartetes Element: %1, gefundenes: %2"
+
+#: libkradio/stationlistxmlhandler.cpp:149
+msgid "unexpected element %1"
+msgstr "unerwartetes Element %1"
+
+#: libkradio/stationlistxmlhandler.cpp:157
+msgid "invalid data for element %1"
+msgstr "ingültige Daten im Element %1"
+
+#: libkradio/stationlistxmlhandler.cpp:172
+msgid "found a station list with unknown format %1"
+msgstr "Die Senderdatei enthält das unbekannte Format %1"
+
+#: libkradio/stationlistxmlhandler.cpp:212
+msgid "unknown property %1 for class %2"
+msgstr "Die Eigenschaft %1 ist der Klasse %2 unbekannt"
+
+#: libkradio/stationlistxmlhandler.cpp:219
+msgid "characters ignored for element %1"
+msgstr "Einige Zeichen des Elements %1 wurden ignoriert"
+
+#: libkradio-gui/aboutwidget.cpp:282
+msgid "Invalid layout"
+msgstr "Ungültiges Layout"
+
+#: libkradio-gui/aboutwidget.cpp:451
+msgid "%1 %2 (Using KDE %3)"
+msgstr "%1 %2 (KDE %3)"
+
+#: libkradio-gui/aboutwidget.cpp:454
+msgid "%1 %2, %3"
+msgstr "%1 %2, %3"
+
+#: libkradio-gui/aboutwidget.cpp:527
+msgid "A&uthor"
+msgstr "A&utor"
+
+#: libkradio-gui/aboutwidget.cpp:527
+msgid "A&uthors"
+msgstr "A&utoren"
+
+#: libkradio-gui/aboutwidget.cpp:541
+msgid "&Thanks To"
+msgstr "&Dank an"
+
+#: libkradio-gui/aboutwidget.cpp:554
+msgid "T&ranslation"
+msgstr "Ü&bersetzungen"
+
+#: libkradio-gui/aboutwidget.cpp:571
+msgid "&License Agreement"
+msgstr "&Lizenzen"
+
+#: libkradio-gui/aboutwidget.cpp:585
+msgid "Image missing"
+msgstr "Bilddatei fehlt"
+
+#: libkradio-gui/radiostation-listview.cpp:33
+msgid "No."
+msgstr "Nr."
+
+#: libkradio-gui/radiostation-listview.cpp:34
+msgid "Icon"
+msgstr "Symbol "
+
+#: libkradio-gui/radiostation-listview.cpp:35
+msgid "Station"
+msgstr "Sender"
+
+#: libkradio-gui/radiostation-listview.cpp:234
+msgid "contentsDragEnterEvent accepted"
+msgstr "contentsDragEnterEvent angenommen"
+
+#: libkradio-gui/radiostation-listview.cpp:236
+msgid "contentsDragEnterEvent rejected"
+msgstr "contentsDragEnterEvent abgelehnt"
+
+#: libkradio-gui/standardscandialog.cpp:118
+msgid "new station "
+msgstr "Neuer Sender "
+
+#: libkradio-gui/standardscandialog.cpp:142
+msgid "&Done"
+msgstr "&Fertig"
+
+#: libkradio-gui/standardscandialog.cpp:160
+msgid "<p align=\"right\">%1</p>"
+msgstr "<p align=\"right\">%1</p>"
+
+#: libkradio-gui/standardscandialog.cpp:162
+#: libkradio-gui/standardscandialog.cpp:165 radio-stations/radiostation.h:150
+#: radio-stations/radiostation.h:151
+msgid "unknown"
+msgstr "unbekannt"
+
+#: libkradio-gui/station-drag-object.cpp:69
+msgid "canDecode = true"
+msgstr "canDecode = true"
+
+#: radio-stations/frequencyradiostation.cpp:118
+#: radio-stations/internetradiostation.cpp:118
+msgid "%1, %2"
+msgstr "%1, %2"
+
+#: radio-stations/frequencyradiostation.cpp:132
+msgid "%1 MHz"
+msgstr "%1 MHz"
+
+#: radio-stations/frequencyradiostation.cpp:134
+msgid "%1 kHz"
+msgstr "%1 kHz"
+
+#: radio-stations/radiostation-config.cpp:45
+msgid "I don't know how to edit this station"
+msgstr "Keine Ahnung, wie dieser Sender bearbeitet werden soll"
+
+#: radio-stations/radiostation-config.cpp:68
+msgid "Frequency:"
+msgstr "Frequenz:"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Ernst Martin Witte"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "emw@nocabal.de"
+
+#: main.cpp:36
+msgid "KRadio"
+msgstr "KRadio"
+
+#: main.cpp:42
+msgid "rewrite for 0.3.0, recording, lirc support, alarms, misc"
+msgstr ""
+"Überarbeitung für 0.3.0, Aufnahmefunktion, LIRC-Unterstützung, Wecker, "
+"Verschiedenes"
diff --git a/kradio3/dot-lircrc.example b/kradio3/dot-lircrc.example
new file mode 100644
index 0000000..d071fee
--- /dev/null
+++ b/kradio3/dot-lircrc.example
@@ -0,0 +1,221 @@
+begin
+ flags = startup_mode
+ mode = TV-off
+end
+
+
+begin TV-off
+
+ begin
+ button = RESERVED
+ repeat = 0
+ prog = irexec
+ config = if xset q | grep "DPMS is Enabled" > /dev/null ; then xset -dpms; else xset dpms force off; fi
+ end
+
+ begin
+ prog = kradio
+ config = eventmap
+ end
+
+ begin
+ button = TV
+ repeat = 0
+ prog = irexec
+ config = xset -dpms && sleep 1 && tvtime &
+ end
+
+ begin
+ button = TV
+ mode = TV-on
+ flags = quit
+ end
+
+end TV-off
+
+
+
+begin TV-on
+
+
+# The following defines most of the common buttons found on a remote and
+# what commads they would map to inside tvtime.
+
+begin
+ prog = irexec
+ button = SOURCE
+ config = tvtime-command TOGGLE_INPUT
+end
+
+#begin
+# prog = irexec
+# button = DISPLAY
+# config = tvtime-command DISPLAY_INFO
+# repeat = 1
+#end
+
+begin
+ prog = irexec
+ button = FULL_SCREEN
+ config = tvtime-command TOGGLE_FULLSCREEN
+end
+
+#begin
+# prog = irexec
+# button = CC
+# config = tvtime-command TOGGLE_CC
+#end
+
+begin
+ prog = irexec
+ button = MUTE
+ config = tvtime-command TOGGLE_MUTE
+end
+
+# Menu navigation.
+begin
+ prog = irexec
+ button = CH+
+ config = tvtime-command UP
+ repeat = 0
+end
+begin
+ prog = irexec
+ button = CH-
+ config = tvtime-command DOWN
+ repeat = 0
+end
+begin
+ prog = irexec
+ button = VOL+
+ config = tvtime-command RIGHT
+ config = tvtime-command RIGHT
+ repeat = 1
+end
+
+begin
+ prog = irexec
+ button = VOL-
+ config = tvtime-command LEFT
+ config = tvtime-command LEFT
+ repeat = 1
+end
+
+#begin
+# prog = irexec
+# button = RECALL
+# config = tvtime-command CHANNEL_JUMP
+# repeat = 1
+#end
+
+begin
+ prog = irexec
+ button = 1
+ config = tvtime-command CHANNEL_1
+end
+begin
+ prog = irexec
+ button = 2
+ config = tvtime-command CHANNEL_2
+end
+begin
+ prog = irexec
+ button = 3
+ config = tvtime-command CHANNEL_3
+end
+begin
+ prog = irexec
+ button = 4
+ config = tvtime-command CHANNEL_4
+end
+begin
+ prog = irexec
+ button = 5
+ config = tvtime-command CHANNEL_5
+end
+begin
+ prog = irexec
+ button = 6
+ config = tvtime-command CHANNEL_6
+end
+begin
+ prog = irexec
+ button = 7
+ config = tvtime-command CHANNEL_7
+end
+begin
+ prog = irexec
+ button = 8
+ config = tvtime-command CHANNEL_8
+end
+begin
+ prog = irexec
+ button = 9
+ config = tvtime-command CHANNEL_9
+end
+begin
+ prog = irexec
+ button = 0
+ config = tvtime-command CHANNEL_0
+end
+
+#begin
+# prog = irexec
+# button = ENTER
+# config = tvtime-command ENTER
+#end
+
+
+ begin
+ prog = irexec
+ button = RESERVED
+ config = tvtime-command QUIT
+ end
+
+ begin
+ prog = irexec
+ button = MINIMIZE
+ config = tvtime-command QUIT
+ end
+
+ begin
+ prog = irexec
+ button = RADIO
+ config = tvtime-command QUIT
+ end
+
+ begin
+ prog = irexec
+ button = TV
+ config = tvtime-command QUIT
+ end
+
+ begin
+ button = RESERVED
+ mode = TV-off
+ flags = quit
+ end
+
+ begin
+ button = TV
+ mode = TV-off
+ flags = quit
+ end
+
+
+ begin
+ button = MINIMIZE
+ mode = TV-off
+ flags = quit
+ end
+
+
+ begin
+ button = RADIO
+ mode = TV-off
+ flags = quit
+ end
+
+
+end TV-on
+
diff --git a/kradio3/icons/Makefile.am b/kradio3/icons/Makefile.am
new file mode 100644
index 0000000..b3f2583
--- /dev/null
+++ b/kradio3/icons/Makefile.am
@@ -0,0 +1,2 @@
+icons_ICON = AUTO
+iconsdir = $(kde_datadir)/kradio/icons
diff --git a/kradio3/icons/hi16-action-kradio_muteoff.png b/kradio3/icons/hi16-action-kradio_muteoff.png
new file mode 100644
index 0000000..5fb01b4
--- /dev/null
+++ b/kradio3/icons/hi16-action-kradio_muteoff.png
Binary files differ
diff --git a/kradio3/icons/hi16-action-kradio_muteon.png b/kradio3/icons/hi16-action-kradio_muteon.png
new file mode 100644
index 0000000..87dd12f
--- /dev/null
+++ b/kradio3/icons/hi16-action-kradio_muteon.png
Binary files differ
diff --git a/kradio3/icons/hi16-action-kradio_plugins.png b/kradio3/icons/hi16-action-kradio_plugins.png
new file mode 100644
index 0000000..5e6b67b
--- /dev/null
+++ b/kradio3/icons/hi16-action-kradio_plugins.png
Binary files differ
diff --git a/kradio3/icons/hi16-app-kradio.png b/kradio3/icons/hi16-app-kradio.png
new file mode 100644
index 0000000..2a3a5f0
--- /dev/null
+++ b/kradio3/icons/hi16-app-kradio.png
Binary files differ
diff --git a/kradio3/icons/hi22-action-kradio_hide.png b/kradio3/icons/hi22-action-kradio_hide.png
new file mode 100644
index 0000000..35fd417
--- /dev/null
+++ b/kradio3/icons/hi22-action-kradio_hide.png
Binary files differ
diff --git a/kradio3/icons/hi22-action-kradio_muteoff.png b/kradio3/icons/hi22-action-kradio_muteoff.png
new file mode 100644
index 0000000..1cb782a
--- /dev/null
+++ b/kradio3/icons/hi22-action-kradio_muteoff.png
Binary files differ
diff --git a/kradio3/icons/hi22-action-kradio_muteon.png b/kradio3/icons/hi22-action-kradio_muteon.png
new file mode 100644
index 0000000..61412b4
--- /dev/null
+++ b/kradio3/icons/hi22-action-kradio_muteon.png
Binary files differ
diff --git a/kradio3/icons/hi22-action-kradio_plugins.png b/kradio3/icons/hi22-action-kradio_plugins.png
new file mode 100644
index 0000000..02c64a2
--- /dev/null
+++ b/kradio3/icons/hi22-action-kradio_plugins.png
Binary files differ
diff --git a/kradio3/icons/hi22-action-kradio_show.png b/kradio3/icons/hi22-action-kradio_show.png
new file mode 100644
index 0000000..5bc81f2
--- /dev/null
+++ b/kradio3/icons/hi22-action-kradio_show.png
Binary files differ
diff --git a/kradio3/icons/hi22-app-kradio.png b/kradio3/icons/hi22-app-kradio.png
new file mode 100644
index 0000000..03d0013
--- /dev/null
+++ b/kradio3/icons/hi22-app-kradio.png
Binary files differ
diff --git a/kradio3/icons/hi24-app-kradio.png b/kradio3/icons/hi24-app-kradio.png
new file mode 100644
index 0000000..fb1360e
--- /dev/null
+++ b/kradio3/icons/hi24-app-kradio.png
Binary files differ
diff --git a/kradio3/icons/hi32-action-kradio_plugins.png b/kradio3/icons/hi32-action-kradio_plugins.png
new file mode 100644
index 0000000..745504f
--- /dev/null
+++ b/kradio3/icons/hi32-action-kradio_plugins.png
Binary files differ
diff --git a/kradio3/icons/hi32-app-kradio.png b/kradio3/icons/hi32-app-kradio.png
new file mode 100644
index 0000000..fdd994f
--- /dev/null
+++ b/kradio3/icons/hi32-app-kradio.png
Binary files differ
diff --git a/kradio3/icons/hi48-action-kradio_plugins.png b/kradio3/icons/hi48-action-kradio_plugins.png
new file mode 100644
index 0000000..aaf5473
--- /dev/null
+++ b/kradio3/icons/hi48-action-kradio_plugins.png
Binary files differ
diff --git a/kradio3/icons/hi48-app-kradio.png b/kradio3/icons/hi48-app-kradio.png
new file mode 100644
index 0000000..9c349fc
--- /dev/null
+++ b/kradio3/icons/hi48-app-kradio.png
Binary files differ
diff --git a/kradio3/icons/hi64-app-kradio.png b/kradio3/icons/hi64-app-kradio.png
new file mode 100644
index 0000000..fd1d6b2
--- /dev/null
+++ b/kradio3/icons/hi64-app-kradio.png
Binary files differ
diff --git a/kradio3/icons/lo16-app-kradio.png b/kradio3/icons/lo16-app-kradio.png
new file mode 100644
index 0000000..2a3a5f0
--- /dev/null
+++ b/kradio3/icons/lo16-app-kradio.png
Binary files differ
diff --git a/kradio3/icons/lo22-app-kradio.png b/kradio3/icons/lo22-app-kradio.png
new file mode 100644
index 0000000..03d0013
--- /dev/null
+++ b/kradio3/icons/lo22-app-kradio.png
Binary files differ
diff --git a/kradio3/icons/lo24-app-kradio.png b/kradio3/icons/lo24-app-kradio.png
new file mode 100644
index 0000000..fb1360e
--- /dev/null
+++ b/kradio3/icons/lo24-app-kradio.png
Binary files differ
diff --git a/kradio3/icons/lo32-app-kradio.png b/kradio3/icons/lo32-app-kradio.png
new file mode 100644
index 0000000..fdd994f
--- /dev/null
+++ b/kradio3/icons/lo32-app-kradio.png
Binary files differ
diff --git a/kradio3/icons/lo48-app-kradio.png b/kradio3/icons/lo48-app-kradio.png
new file mode 100644
index 0000000..9c349fc
--- /dev/null
+++ b/kradio3/icons/lo48-app-kradio.png
Binary files differ
diff --git a/kradio3/icons/lo64-app-kradio.png b/kradio3/icons/lo64-app-kradio.png
new file mode 100644
index 0000000..fd1d6b2
--- /dev/null
+++ b/kradio3/icons/lo64-app-kradio.png
Binary files differ
diff --git a/kradio3/kradio-mandrake.spec b/kradio3/kradio-mandrake.spec
new file mode 100644
index 0000000..8663084
--- /dev/null
+++ b/kradio3/kradio-mandrake.spec
@@ -0,0 +1,67 @@
+#
+# spec file for package kradio
+#
+
+Name: kradio
+License: GPL
+Summary: V4L/V4L2-Radio Application for KDE
+Version: snapshot_2006_11_12_r497
+Release: 1.mandrake
+Vendor: Martin Witte <witte@kawo1.rwth-aachen.de>
+Packager: Martin Witte <witte@kawo1.rwth-aachen.de>
+Url: http://sourceforge.net/projects/kradio
+Group: kde3
+Source: kradio-%version.tar.gz
+BuildRoot: %{_tmppath}/%{name}-%{version}-buildroot
+
+%description
+Comfortable V4L/V4L2-Radio Application for KDE
+
+KRadio is a comfortable radio application for KDE with support for
+V4L and V4L2 radio cards drivers.
+
+KRadio currently provides:
+
+* V4L/V4L2 Radio support
+* Remote Control support (LIRC)
+* Alarms, Sleep Countdown
+* Several GUI Controls (Docking Menu, Station Quickbar, Radio Display)
+* Timeshifter Capability
+* Recording Capabilities (mp3, ogg/vorbis, wav, ...)
+* Extendable Plugin Architecture
+
+This Package also includes a growing collection of station preset
+files for many cities around the world contributed by KRadio Users.
+
+As KRadio is based on an extendable plugin architecture, contributions
+of new plugins (e.g. Internet Radio Streams, new cool GUIs) are welcome.
+
+Authors:
+--------
+ Ernst Martin Witte <witte@kawo1.rwth-aachen.de>
+ Marcus Camen <mcamen@mcamen.de>
+ Klas Kalass <klas.kalass@gmx.de>
+ Frank Schwanz <schwanz@fh-brandenburg.de>
+
+%prep
+%setup -q
+. /etc/opt/kde3/common_options
+update_admin --no-final
+
+%build
+. /etc/opt/kde3/common_options
+./configure $configkde --without-gl --libdir=$kde_libdir
+
+make
+
+%install
+. /etc/opt/kde3/common_options
+make DESTDIR=$RPM_BUILD_ROOT $INSTALL_TARGET
+
+%files
+%defattr(-,root,root)
+/opt/kde3/bin
+/opt/kde3/share/appl*/*/*.desktop
+/opt/kde3/lib*/kradio
+/opt/kde3/share/apps/kradio
+/opt/kde3/share/locale
diff --git a/kradio3/kradio-suse.spec b/kradio3/kradio-suse.spec
new file mode 100644
index 0000000..e8ec5c8
--- /dev/null
+++ b/kradio3/kradio-suse.spec
@@ -0,0 +1,67 @@
+#
+# spec file for package kradio
+#
+
+Name: kradio
+License: GPL
+Summary: V4L/V4L2-Radio Application for KDE
+Version: snapshot_2006_11_12_r497
+Release: 1.suse
+Vendor: Martin Witte <witte@kawo1.rwth-aachen.de>
+Packager: Martin Witte <witte@kawo1.rwth-aachen.de>
+Url: http://sourceforge.net/projects/kradio
+Group: kde3
+Source: kradio-%version.tar.gz
+BuildRoot: %{_tmppath}/%{name}-%{version}-buildroot
+
+%description
+Comfortable V4L/V4L2-Radio Application for KDE
+
+KRadio is a comfortable radio application for KDE with support for
+V4L and V4L2 radio cards drivers.
+
+KRadio currently provides:
+
+* V4L/V4L2 Radio support
+* Remote Control support (LIRC)
+* Alarms, Sleep Countdown
+* Several GUI Controls (Docking Menu, Station Quickbar, Radio Display)
+* Timeshifter Capability
+* Recording Capabilities (mp3, ogg/vorbis, wav, ...)
+* Extendable Plugin Architecture
+
+This Package also includes a growing collection of station preset
+files for many cities around the world contributed by KRadio Users.
+
+As KRadio is based on an extendable plugin architecture, contributions
+of new plugins (e.g. Internet Radio Streams, new cool GUIs) are welcome.
+
+Authors:
+--------
+ Ernst Martin Witte <witte@kawo1.rwth-aachen.de>
+ Marcus Camen <mcamen@mcamen.de>
+ Klas Kalass <klas.kalass@gmx.de>
+ Frank Schwanz <schwanz@fh-brandenburg.de>
+
+%prep
+%setup -q
+. /etc/opt/kde3/common_options
+update_admin --no-final
+
+%build
+. /etc/opt/kde3/common_options
+./configure $configkde --without-gl --libdir=$kde_libdir
+
+make
+
+%install
+. /etc/opt/kde3/common_options
+make DESTDIR=$RPM_BUILD_ROOT $INSTALL_TARGET
+
+%files
+%defattr(-,root,root)
+/opt/kde3/bin
+/opt/kde3/share/appl*/*/*.desktop
+/opt/kde3/lib*/kradio
+/opt/kde3/share/apps/kradio
+/opt/kde3/share/locale
diff --git a/kradio3/kradio.lsm b/kradio3/kradio.lsm
new file mode 100644
index 0000000..0bfe6d2
--- /dev/null
+++ b/kradio3/kradio.lsm
@@ -0,0 +1,14 @@
+Begin3
+Title: kradio
+Version: snapshot_2006_11_12_r497
+Entered-date:
+Description: Komfortable Radio Application for KDE >= 3.2
+Keywords: radio v4l v4l2 video4linux kde lirc recording
+Author: Martin Witte <witte@kawo1.rwth-aachen.de>
+Maintained-by: Martin Witte <witte@kawo1.rwth-aachen.de>
+Primary-site:
+Home-page: http://sourceforge.net/projects/kradio/
+Original-site:
+Platforms: Linux and other Unices
+Copying-policy: GNU Public License
+End
diff --git a/kradio3/kradio.spec b/kradio3/kradio.spec
new file mode 100644
index 0000000..8a0654b
--- /dev/null
+++ b/kradio3/kradio.spec
@@ -0,0 +1,67 @@
+#
+# spec file for package kradio
+#
+
+Name: kradio
+License: GPL
+Summary: V4L/V4L2-Radio Application for KDE
+Version: snapshot_2006_11_12_r497
+Release: <place release here, e.g. suse/mandrake>
+Vendor: Martin Witte <witte@kawo1.rwth-aachen.de>
+Packager: Martin Witte <witte@kawo1.rwth-aachen.de>
+Url: http://sourceforge.net/projects/kradio
+Group: kde3
+Source: kradio-%version.tar.gz
+BuildRoot: %{_tmppath}/%{name}-%{version}-buildroot
+
+%description
+Comfortable V4L/V4L2-Radio Application for KDE
+
+KRadio is a comfortable radio application for KDE with support for
+V4L and V4L2 radio cards drivers.
+
+KRadio currently provides:
+
+* V4L/V4L2 Radio support
+* Remote Control support (LIRC)
+* Alarms, Sleep Countdown
+* Several GUI Controls (Docking Menu, Station Quickbar, Radio Display)
+* Timeshifter Capability
+* Recording Capabilities (mp3, ogg/vorbis, wav, ...)
+* Extendable Plugin Architecture
+
+This Package also includes a growing collection of station preset
+files for many cities around the world contributed by KRadio Users.
+
+As KRadio is based on an extendable plugin architecture, contributions
+of new plugins (e.g. Internet Radio Streams, new cool GUIs) are welcome.
+
+Authors:
+--------
+ Ernst Martin Witte <witte@kawo1.rwth-aachen.de>
+ Marcus Camen <mcamen@mcamen.de>
+ Klas Kalass <klas.kalass@gmx.de>
+ Frank Schwanz <schwanz@fh-brandenburg.de>
+
+%prep
+%setup -q
+. /etc/opt/kde3/common_options
+update_admin --no-final
+
+%build
+. /etc/opt/kde3/common_options
+./configure $configkde --without-gl --libdir=$kde_libdir
+
+make
+
+%install
+. /etc/opt/kde3/common_options
+make DESTDIR=$RPM_BUILD_ROOT $INSTALL_TARGET
+
+%files
+%defattr(-,root,root)
+/opt/kde3/bin
+/opt/kde3/share/appl*/*/*.desktop
+/opt/kde3/lib*/kradio
+/opt/kde3/share/apps/kradio
+/opt/kde3/share/locale
diff --git a/kradio3/plugins/Makefile.am b/kradio3/plugins/Makefile.am
new file mode 100644
index 0000000..3e9e46f
--- /dev/null
+++ b/kradio3/plugins/Makefile.am
@@ -0,0 +1,4 @@
+INCLUDES =
+METASOURCES = AUTO
+SUBDIRS = gui-docking-menu gui-error-log gui-quickbar gui-standard-display $(PLUGIN_LIRC) \
+ radio timecontrol v4lradio $(PLUGIN_OSS) soundserver recording timeshifter $(PLUGIN_ALSA) streaming
diff --git a/kradio3/plugins/alsa-sound/Makefile.am b/kradio3/plugins/alsa-sound/Makefile.am
new file mode 100644
index 0000000..a00e32c
--- /dev/null
+++ b/kradio3/plugins/alsa-sound/Makefile.am
@@ -0,0 +1,20 @@
+SUBDIRS = po icons .
+
+INCLUDES = $(all_includes)
+METASOURCES = AUTO
+
+libkradio_LTLIBRARIES = libalsa-sound.la
+libalsa_sound_la_LDFLAGS = -module -avoid-version $(KDE_RPATH) $(all_libraries)
+noinst_HEADERS = alsa-sound.h alsa-sound-configuration.h alsa-mixer-element.h \
+ alsa-config-mixer-setting.h
+libalsa_sound_la_SOURCES = alsa-sound.cpp alsa-sound-configuration-ui.ui \
+ alsa-sound-configuration.cpp alsa-mixer-element-ui.ui alsa-mixer-element.cpp \
+ alsa-config-mixer-setting.cpp
+libalsa_sound_la_LIBADD = $(LIB_ALSA)
+
+#messages: rc.cpp
+# $(XGETTEXT) *.cpp *.h -o po/kradio-alsa-sound.pot
+
+messages: rc.cpp
+ $(EXTRACTRC) *.rc *.ui >> rc.cpp
+ $(XGETTEXT) rc.cpp *.h *.cpp -o po/kradio-alsa-sound.pot
diff --git a/kradio3/plugins/alsa-sound/alsa-config-mixer-setting.cpp b/kradio3/plugins/alsa-sound/alsa-config-mixer-setting.cpp
new file mode 100644
index 0000000..873b29e
--- /dev/null
+++ b/kradio3/plugins/alsa-sound/alsa-config-mixer-setting.cpp
@@ -0,0 +1,67 @@
+/***************************************************************************
+ alsa-config-mixer-setting.cpp - description
+ -------------------
+ begin : Mon Aug 15 2005
+ copyright : (C) 2005 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "alsa-config-mixer-setting.h"
+
+#include <kconfig.h>
+
+AlsaConfigMixerSetting::AlsaConfigMixerSetting()
+ : m_card(-1),
+ m_name(QString::null),
+ m_use(false),
+ m_active(false),
+ m_volume(-1)
+{
+}
+
+AlsaConfigMixerSetting::AlsaConfigMixerSetting(KConfig *c, const QString &prefix)
+{
+ m_card = c->readNumEntry (prefix+"card", -1);
+ m_name = c->readEntry (prefix+"name", QString::null);
+ m_use = c->readBoolEntry (prefix+"use", false);
+ m_active = c->readBoolEntry (prefix+"active", false);
+ m_volume = c->readDoubleNumEntry(prefix+"volume", 0);
+}
+
+AlsaConfigMixerSetting::AlsaConfigMixerSetting(int card, const QString &name, bool use, bool active, float volume)
+ : m_card(card),
+ m_name(name),
+ m_use(use),
+ m_active(active),
+ m_volume(volume)
+{
+}
+
+AlsaConfigMixerSetting::~AlsaConfigMixerSetting()
+{
+}
+
+QString AlsaConfigMixerSetting::getIDString(int card, const QString &name)
+{
+ return QString::number(card) + "-" + name;
+}
+
+void AlsaConfigMixerSetting::saveState(KConfig *c, const QString &prefix) const
+{
+ c->writeEntry(prefix+"card", m_card);
+ c->writeEntry(prefix+"name", m_name);
+ c->writeEntry(prefix+"use", m_use);
+ c->writeEntry(prefix+"active", m_active);
+ c->writeEntry(prefix+"volume", m_volume);
+}
+
+
diff --git a/kradio3/plugins/alsa-sound/alsa-config-mixer-setting.h b/kradio3/plugins/alsa-sound/alsa-config-mixer-setting.h
new file mode 100644
index 0000000..a9f5d88
--- /dev/null
+++ b/kradio3/plugins/alsa-sound/alsa-config-mixer-setting.h
@@ -0,0 +1,45 @@
+/***************************************************************************
+ alsa-config-mixer-setting.h - description
+ -------------------
+ begin : Mon Aug 15 2005
+ copyright : (C) 2005 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef __KRADIO_ALSA_CONFIG_MIXER_SETTING_H
+#define __KRADIO_ALSA_CONFIG_MIXER_SETTING_H
+
+#include <qstring.h>
+
+class KConfig;
+
+class AlsaConfigMixerSetting
+{
+public:
+ AlsaConfigMixerSetting();
+ AlsaConfigMixerSetting(KConfig *c, const QString &prefix);
+ AlsaConfigMixerSetting(int card, const QString &name, bool use, bool active, float volume);
+ ~AlsaConfigMixerSetting();
+
+ QString getIDString() const { return getIDString(m_card, m_name); }
+ static QString getIDString(int card, const QString &m_name);
+
+ void saveState(KConfig *c, const QString &prefix) const;
+
+ int m_card;
+ QString m_name;
+ bool m_use;
+ bool m_active;
+ float m_volume;
+};
+
+#endif
diff --git a/kradio3/plugins/alsa-sound/alsa-mixer-element-ui.ui b/kradio3/plugins/alsa-sound/alsa-mixer-element-ui.ui
new file mode 100644
index 0000000..e2c170d
--- /dev/null
+++ b/kradio3/plugins/alsa-sound/alsa-mixer-element-ui.ui
@@ -0,0 +1,270 @@
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
+<class>AlsaMixerElementUI</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>AlsaMixerElementUI</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>124</width>
+ <height>153</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Form1</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout16</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <spacer>
+ <property name="name">
+ <cstring>spacer1</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>16</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <spacer>
+ <property name="name">
+ <cstring>spacer23</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>1</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QSlider">
+ <property name="name">
+ <cstring>m_sliderVolume</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="maxValue">
+ <number>100</number>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer23_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>1</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ <spacer>
+ <property name="name">
+ <cstring>spacer1_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout7</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <spacer>
+ <property name="name">
+ <cstring>spacer3_3</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>11</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="KIntSpinBox">
+ <property name="name">
+ <cstring>m_spinboxVolume</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="maxValue">
+ <number>100</number>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer3_4</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>11</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout5</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <spacer>
+ <property name="name">
+ <cstring>spacer3</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>16</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout4</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>m_checkboxActive</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>O&amp;n</string>
+ </property>
+ <property name="accel">
+ <string>Alt+N</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>m_checkboxOverride</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Use</string>
+ </property>
+ <property name="accel">
+ <string>Alt+U</string>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer3_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>16</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>m_labelMixerElementName</cstring>
+ </property>
+ <property name="enabled">
+ <bool>true</bool>
+ </property>
+ <property name="text">
+ <string>MixerName</string>
+ </property>
+ <property name="alignment">
+ <set>AlignCenter</set>
+ </property>
+ </widget>
+ </vbox>
+</widget>
+<customwidgets>
+</customwidgets>
+<layoutdefaults spacing="6" margin="2"/>
+<includehints>
+ <includehint>knuminput.h</includehint>
+</includehints>
+</UI>
diff --git a/kradio3/plugins/alsa-sound/alsa-mixer-element.cpp b/kradio3/plugins/alsa-sound/alsa-mixer-element.cpp
new file mode 100644
index 0000000..1fbc75a
--- /dev/null
+++ b/kradio3/plugins/alsa-sound/alsa-mixer-element.cpp
@@ -0,0 +1,139 @@
+/***************************************************************************
+ alsa-mixer-element.cpp - description
+ -------------------
+ begin : Mon Aug 15 2005
+ copyright : (C) 2005 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "alsa-mixer-element.h"
+
+#include <knuminput.h>
+#include <qslider.h>
+#include <qlabel.h>
+#include <qcheckbox.h>
+
+#include <math.h>
+
+QAlsaMixerElement::QAlsaMixerElement(QWidget *parent, const QString &label, bool has_switch, bool has_volume)
+ : AlsaMixerElementUI(parent),
+ m_HasVolume(has_volume),
+ m_HasSwitch(has_switch),
+ m_dirty(false),
+ m_ignore_updates(false)
+{
+ setLabel(label);
+ setVolume(0);
+
+ QObject::connect(m_spinboxVolume, SIGNAL(valueChanged(int)),
+ this, SLOT (slotSpinboxValueChanged(int)));
+ QObject::connect(m_sliderVolume, SIGNAL(valueChanged(int)),
+ this, SLOT (slotSliderValueChanged(int)));
+
+ if (m_HasVolume) {
+ QObject::connect(m_checkboxOverride, SIGNAL(toggled(bool)),
+ m_spinboxVolume, SLOT (setEnabled(bool)));
+ QObject::connect(m_checkboxOverride, SIGNAL(toggled(bool)),
+ m_sliderVolume, SLOT (setEnabled(bool)));
+ } else {
+ m_spinboxVolume->hide();
+ m_sliderVolume->hide();
+ }
+ if (m_HasSwitch) {
+ QObject::connect(m_checkboxOverride, SIGNAL(toggled(bool)),
+ m_checkboxActive, SLOT (setEnabled(bool)));
+ } else {
+ //m_checkboxActive->hide();
+ m_checkboxActive->setEnabled(false);
+ m_checkboxActive->setChecked(true);
+ }
+
+ connect(m_checkboxOverride, SIGNAL(toggled(bool)), this, SLOT(slotSetDirty()));
+ connect(m_checkboxActive, SIGNAL(toggled(bool)), this, SLOT(slotSetDirty()));
+ connect(m_spinboxVolume, SIGNAL(valueChanged(int)), this, SLOT(slotSetDirty()));
+ connect(m_sliderVolume, SIGNAL(valueChanged(int)), this, SLOT(slotSetDirty()));
+}
+
+
+QAlsaMixerElement::~QAlsaMixerElement()
+{
+}
+
+float QAlsaMixerElement::getVolume() const
+{
+ return ((float)m_spinboxVolume->value())/100.0;
+}
+
+bool QAlsaMixerElement::getActive() const
+{
+ return m_checkboxActive->isChecked();
+}
+
+bool QAlsaMixerElement::getOverride() const
+{
+ return m_checkboxOverride->isChecked();
+}
+
+void QAlsaMixerElement::setLabel(const QString &label)
+{
+ m_labelMixerElementName->setText(label);
+}
+
+void QAlsaMixerElement::setOverride(bool ov)
+{
+ m_ignore_updates = true;
+ m_checkboxOverride->setChecked(ov);
+ m_ignore_updates = false;
+}
+
+void QAlsaMixerElement::setActive(bool active)
+{
+ m_ignore_updates = true;
+ m_checkboxActive->setChecked(active);
+ m_ignore_updates = false;
+}
+
+void QAlsaMixerElement::setVolume(float vol)
+{
+ m_ignore_updates = true;
+ int v = (int)rint(vol*100 + 0.5);
+ m_sliderVolume->setValue(100 - v);
+ m_spinboxVolume->setValue(v);
+ m_ignore_updates = false;
+}
+
+void QAlsaMixerElement::slotSpinboxValueChanged(int v)
+{
+ m_sliderVolume->setValue(100-v);
+}
+
+void QAlsaMixerElement::slotSliderValueChanged(int v)
+{
+ m_spinboxVolume->setValue(100-v);
+}
+
+
+void QAlsaMixerElement::slotSetDirty()
+{
+ if (!m_dirty && !m_ignore_updates) {
+ m_dirty = true;
+ emit sigDirty();
+ }
+}
+
+
+void QAlsaMixerElement::slotResetDirty()
+{
+ m_dirty = false;
+}
+
+#include "alsa-mixer-element.moc"
diff --git a/kradio3/plugins/alsa-sound/alsa-mixer-element.h b/kradio3/plugins/alsa-sound/alsa-mixer-element.h
new file mode 100644
index 0000000..149e0b9
--- /dev/null
+++ b/kradio3/plugins/alsa-sound/alsa-mixer-element.h
@@ -0,0 +1,62 @@
+/***************************************************************************
+ alsa-mixer-element.h - description
+ -------------------
+ begin : Mon Aug 15 2005
+ copyright : (C) 2005 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef __KRADIO_ALSA_MIXER_ELEMENT_H
+#define __KRADIO_ALSA_MIXER_ELEMENT_H
+
+#include "alsa-mixer-element-ui.h"
+
+class QAlsaMixerElement : public AlsaMixerElementUI
+{
+Q_OBJECT
+public:
+ QAlsaMixerElement(QWidget *parent, const QString &label, bool has_switch, bool has_volume);
+ ~QAlsaMixerElement();
+
+
+ float getVolume() const;
+ bool getActive() const;
+ bool getOverride() const;
+
+ bool isDirty() const { return m_dirty; }
+
+public slots:
+
+ void setLabel(const QString &label);
+ void setOverride(bool ov);
+ void setActive(bool active);
+ void setVolume(float vol);
+ void slotResetDirty();
+ void slotSetDirty();
+
+protected slots:
+ void slotSpinboxValueChanged(int v);
+ void slotSliderValueChanged(int v);
+
+signals:
+
+ void sigDirty();
+
+protected:
+
+ bool m_HasVolume;
+ bool m_HasSwitch;
+ bool m_dirty;
+ bool m_ignore_updates;
+};
+
+#endif
diff --git a/kradio3/plugins/alsa-sound/alsa-sound-configuration-ui.ui b/kradio3/plugins/alsa-sound/alsa-sound-configuration-ui.ui
new file mode 100644
index 0000000..d1d2105
--- /dev/null
+++ b/kradio3/plugins/alsa-sound/alsa-sound-configuration-ui.ui
@@ -0,0 +1,323 @@
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
+<class>AlsaSoundConfigurationUI</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>AlsaSoundConfigurationUI</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>475</width>
+ <height>260</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>AlsaSoundConfigurationUI</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <widget class="QTabWidget" row="0" column="0">
+ <property name="name">
+ <cstring>kTabWidget8</cstring>
+ </property>
+ <widget class="QWidget">
+ <property name="name">
+ <cstring>TabPage</cstring>
+ </property>
+ <attribute name="title">
+ <string>Devices</string>
+ </attribute>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <spacer row="1" column="0">
+ <property name="name">
+ <cstring>spacer114</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>5</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QLayoutWidget" row="0" column="0">
+ <property name="name">
+ <cstring>layout58</cstring>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel" row="2" column="0">
+ <property name="name">
+ <cstring>textLabel2</cstring>
+ </property>
+ <property name="text">
+ <string>PCM Capture Card</string>
+ </property>
+ </widget>
+ <widget class="KComboBox" row="2" column="1">
+ <property name="name">
+ <cstring>m_comboCaptureCard</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>3</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <widget class="QLabel" row="4" column="0">
+ <property name="name">
+ <cstring>textLabel2_2_2</cstring>
+ </property>
+ <property name="text">
+ <string>Hardware Buffer Size</string>
+ </property>
+ </widget>
+ <widget class="KComboBox" row="3" column="1">
+ <property name="name">
+ <cstring>m_comboCaptureDevice</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>3</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <widget class="KIntSpinBox" row="5" column="1">
+ <property name="name">
+ <cstring>editBufferSize</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>3</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="suffix">
+ <string> kB</string>
+ </property>
+ <property name="maxValue">
+ <number>1024</number>
+ </property>
+ <property name="minValue">
+ <number>1</number>
+ </property>
+ </widget>
+ <widget class="KIntSpinBox" row="4" column="1">
+ <property name="name">
+ <cstring>editHWBufferSize</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>3</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="suffix">
+ <string> kB</string>
+ </property>
+ <property name="maxValue">
+ <number>1024</number>
+ </property>
+ <property name="minValue">
+ <number>1</number>
+ </property>
+ </widget>
+ <widget class="KComboBox" row="0" column="1">
+ <property name="name">
+ <cstring>m_comboPlaybackCard</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>3</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <widget class="QLabel" row="5" column="0">
+ <property name="name">
+ <cstring>textLabel2_2_2_2</cstring>
+ </property>
+ <property name="text">
+ <string>Buffer Size</string>
+ </property>
+ </widget>
+ <widget class="KComboBox" row="1" column="1">
+ <property name="name">
+ <cstring>m_comboPlaybackDevice</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>3</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <widget class="QLabel" row="1" column="0">
+ <property name="name">
+ <cstring>textLabel2_3</cstring>
+ </property>
+ <property name="text">
+ <string>PCM Playback Device</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="3" column="0">
+ <property name="name">
+ <cstring>textLabel2_4</cstring>
+ </property>
+ <property name="text">
+ <string>PCM Capture Device</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="0" column="0">
+ <property name="name">
+ <cstring>textLabel2</cstring>
+ </property>
+ <property name="text">
+ <string>PCM Playback Card</string>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ </grid>
+ </widget>
+ <widget class="QWidget">
+ <property name="name">
+ <cstring>TabPage</cstring>
+ </property>
+ <attribute name="title">
+ <string>E&amp;xtended Options</string>
+ </attribute>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <widget class="QCheckBox" row="0" column="0">
+ <property name="name">
+ <cstring>chkDisablePlayback</cstring>
+ </property>
+ <property name="text">
+ <string>Disable Pla&amp;yback</string>
+ </property>
+ <property name="accel">
+ <string>Alt+Y</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox" row="1" column="0">
+ <property name="name">
+ <cstring>chkDisableCapture</cstring>
+ </property>
+ <property name="text">
+ <string>Disa&amp;ble Capture</string>
+ </property>
+ <property name="accel">
+ <string>Alt+B</string>
+ </property>
+ </widget>
+ <spacer row="2" column="0">
+ <property name="name">
+ <cstring>spacer113</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </grid>
+ </widget>
+ <widget class="QWidget">
+ <property name="name">
+ <cstring>TabPage</cstring>
+ </property>
+ <attribute name="title">
+ <string>Capture Mixer Settings</string>
+ </attribute>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <widget class="QGroupBox" row="0" column="0">
+ <property name="name">
+ <cstring>m_groupMixer</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>5</hsizetype>
+ <vsizetype>7</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="frameShape">
+ <enum>NoFrame</enum>
+ </property>
+ <property name="lineWidth">
+ <number>0</number>
+ </property>
+ <property name="title">
+ <string></string>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ </widget>
+ </grid>
+</widget>
+<customwidgets>
+</customwidgets>
+<layoutdefaults spacing="6" margin="0"/>
+<includehints>
+ <includehint>kcombobox.h</includehint>
+ <includehint>kcombobox.h</includehint>
+ <includehint>knuminput.h</includehint>
+ <includehint>knuminput.h</includehint>
+ <includehint>kcombobox.h</includehint>
+ <includehint>kcombobox.h</includehint>
+</includehints>
+</UI>
diff --git a/kradio3/plugins/alsa-sound/alsa-sound-configuration.cpp b/kradio3/plugins/alsa-sound/alsa-sound-configuration.cpp
new file mode 100644
index 0000000..f4914f2
--- /dev/null
+++ b/kradio3/plugins/alsa-sound/alsa-sound-configuration.cpp
@@ -0,0 +1,353 @@
+/***************************************************************************
+ alsa-sound-configuration.cpp - description
+ -------------------
+ begin : Thu Sep 30 2004
+ copyright : (C) 2004 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include <qcheckbox.h>
+#include <qgroupbox.h>
+#include <qlayout.h>
+#include <qscrollview.h>
+
+#include <kurlrequester.h>
+#include <knuminput.h>
+#include <klineedit.h>
+#include <kcombobox.h>
+#include <ktabwidget.h>
+#include <klocale.h>
+
+#include "alsa-mixer-element.h"
+#include "alsa-sound-configuration.h"
+#include "alsa-sound.h"
+
+
+AlsaSoundConfiguration::AlsaSoundConfiguration (QWidget *parent, AlsaSoundDevice *dev)
+ : AlsaSoundConfigurationUI(parent),
+ m_SoundDevice (dev),
+ m_groupMixerLayout(NULL),
+ m_groupMixerScrollView(NULL),
+ m_groupMixerSubFrame(NULL),
+ m_dirty(true),
+ m_ignore_updates(false)
+{
+ QObject::connect(m_comboPlaybackCard, SIGNAL(activated(int)), this, SLOT(slotSetDirty()));
+ QObject::connect(m_comboCaptureCard, SIGNAL(activated(int)), this, SLOT(slotSetDirty()));
+ QObject::connect(m_comboPlaybackDevice, SIGNAL(activated(int)), this, SLOT(slotSetDirty()));
+ QObject::connect(m_comboCaptureDevice, SIGNAL(activated(int)), this, SLOT(slotSetDirty()));
+ QObject::connect(editHWBufferSize, SIGNAL(valueChanged(int)), this, SLOT(slotSetDirty()));
+ QObject::connect(editBufferSize, SIGNAL(valueChanged(int)), this, SLOT(slotSetDirty()));
+ QObject::connect(chkDisablePlayback, SIGNAL(toggled(bool)), this, SLOT(slotSetDirty()));
+ QObject::connect(chkDisableCapture, SIGNAL(toggled(bool)), this, SLOT(slotSetDirty()));
+
+ QObject::connect(m_comboPlaybackCard, SIGNAL(activated(const QString &)),
+ this, SLOT(slotPlaybackCardSelected(const QString &)));
+ QObject::connect(m_comboCaptureCard, SIGNAL(activated(const QString &)),
+ this, SLOT(slotCaptureCardSelected(const QString &)));
+
+ m_groupMixer->setColumnLayout(0, Qt::Horizontal );
+
+ QHBoxLayout *tmp_layout = new QHBoxLayout( m_groupMixer->layout() );
+
+ m_groupMixerScrollView = new QScrollView (m_groupMixer);
+ m_groupMixerScrollView->setFrameShape(QFrame::NoFrame);
+ m_groupMixerScrollView->setFrameShadow(QFrame::Plain);
+ m_groupMixerScrollView->enableClipper(true);
+ m_groupMixerScrollView->setResizePolicy(QScrollView::AutoOneFit);
+ //m_groupMixerScrollView->setHScrollBarMode(QScrollView::AlwaysOn);
+
+ tmp_layout->addWidget(m_groupMixerScrollView);
+
+
+ int card = -1;
+ int ret = 0;
+ int idx_playback = 0;
+ int idx_capture = 0;
+ while ((ret = snd_card_next(&card)) == 0) {
+ char *name = NULL;
+ if (card >= 0 && snd_card_get_longname(card, &name) == 0) {
+ if (name) {
+ m_name2card[name] = card;
+ m_card2name[card] = name;
+ if (listSoundDevices(NULL, NULL, NULL, NULL, card, SND_PCM_STREAM_PLAYBACK)) {
+ m_comboPlaybackCard->insertItem(name);
+ m_playbackCard2idx[card] = idx_playback++;
+ }
+ if (listSoundDevices(NULL, NULL, NULL, NULL, card, SND_PCM_STREAM_CAPTURE)) {
+ m_comboCaptureCard->insertItem(name);
+ m_captureCard2idx[card] = idx_capture++;
+ }
+ }
+ } else {
+ break;
+ }
+ }
+
+ slotCancel();
+}
+
+
+AlsaSoundConfiguration::~AlsaSoundConfiguration ()
+{
+}
+
+
+void AlsaSoundConfiguration::slotPlaybackCardSelected(const QString &cardname)
+{
+ if (!m_name2card.contains(cardname))
+ return;
+
+ listSoundDevices(m_comboPlaybackDevice, &m_playbackDeviceName2dev, &m_dev2playbackDeviceName, &m_playbackDevice2idx, m_name2card[cardname], SND_PCM_STREAM_PLAYBACK);
+}
+
+
+void AlsaSoundConfiguration::slotCaptureCardSelected(const QString &cardname)
+{
+ if (!m_name2card.contains(cardname))
+ return;
+
+ saveCaptureMixerSettings();
+
+ listSoundDevices(m_comboCaptureDevice, &m_captureDeviceName2dev, &m_dev2captureDeviceName, &m_captureDevice2idx, m_name2card[cardname], SND_PCM_STREAM_CAPTURE);
+
+ m_currentCaptureCard = m_name2card[cardname];
+
+ QStringList vol_list, sw_list, all_list;
+ QMap<QString, AlsaMixerElement> vol_ch2id, sw_ch2id;
+ AlsaSoundDevice::getCaptureMixerChannels(m_name2card[cardname], NULL, vol_list, vol_ch2id, sw_list, sw_ch2id, &all_list);
+
+ for (QMapIterator<QString, QAlsaMixerElement*> it = m_MixerElements.begin(); it != m_MixerElements.end(); ++it) {
+ delete *it;
+ }
+ m_MixerElements.clear();
+
+ if (m_groupMixerSubFrame)
+ delete m_groupMixerSubFrame;
+
+ m_groupMixerSubFrame = new QFrame(m_groupMixerScrollView->viewport());
+ m_groupMixerSubFrame->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
+ m_groupMixerScrollView->addChild(m_groupMixerSubFrame);
+
+ int rows = 1;
+ int cols = (all_list.count()+rows-1)/rows;
+ m_groupMixerLayout = new QGridLayout( m_groupMixerSubFrame, rows, cols, 0, 0 );
+ m_groupMixerLayout->setAlignment( Qt::AlignBottom );
+
+ int idx = 0;
+ for (QValueListConstIterator<QString> it = all_list.begin(); it != all_list.end(); ++it, ++idx) {
+ QAlsaMixerElement *e = new QAlsaMixerElement(m_groupMixerSubFrame, *it,
+ sw_list.contains(*it), vol_list.contains(*it));
+ QObject::connect(e, SIGNAL(sigDirty()), this, SLOT(slotSetDirty()));
+ m_groupMixerLayout->addWidget(e, idx > cols, idx % cols);
+ e->show();
+ m_MixerElements.insert(*it, e);
+ }
+ restoreCaptureMixerSettings();
+ m_groupMixerSubFrame->show();
+}
+
+void AlsaSoundConfiguration::saveCaptureMixerSettings()
+{
+ for (QMapIterator<QString, QAlsaMixerElement*> it = m_MixerElements.begin(); it != m_MixerElements.end(); ++it) {
+ const QString &name = it.key();
+ int card = m_currentCaptureCard;
+ QString id = AlsaConfigMixerSetting::getIDString(card, name);
+ QAlsaMixerElement *e = *it;
+ float vol = e->getVolume();
+ bool use = e->getOverride();
+ bool active = e->getActive();
+ e->slotResetDirty();
+ m_MixerSettings[id] = AlsaConfigMixerSetting(card,name,use,active,vol);
+ }
+}
+
+void AlsaSoundConfiguration::restoreCaptureMixerSettings()
+{
+ for (QMapIterator<QString, QAlsaMixerElement*> it = m_MixerElements.begin(); it != m_MixerElements.end(); ++it) {
+ const QString &name = it.key();
+ int card = m_currentCaptureCard;
+ QString id = AlsaConfigMixerSetting::getIDString(card, name);
+ QAlsaMixerElement *e = *it;
+
+ if (m_MixerSettings.contains(id)) {
+ const AlsaConfigMixerSetting &s = m_MixerSettings[id];
+ e->setVolume(s.m_volume);
+ e->setOverride(s.m_use);
+ e->setActive(s.m_active);
+ e->slotResetDirty();
+ } else {
+ if (name == "ADC") {
+ e->setOverride(true);
+ e->setActive(true);
+ e->setVolume(1.0);
+ }
+ else if (name == "Digital") {
+ e->setOverride(true);
+ e->setActive(true);
+ e->setVolume(1.0);
+ }
+ else if (name == "Wave") {
+ e->setOverride(true);
+ e->setActive(false);
+ e->setVolume(0);
+ }
+ else if (name == "Capture") {
+ e->setOverride(true);
+ e->setActive(true);
+ e->setVolume(0.01);
+ }
+ e->slotSetDirty();
+ }
+ }
+}
+
+int AlsaSoundConfiguration::listSoundDevices(KComboBox *combobox, QMap<QString, int> *devname2dev, QMap<int, QString> *dev2devname, QMap<int, int> *dev2idx, int card, snd_pcm_stream_t stream)
+{
+ snd_ctl_t *handle = NULL;
+ int dev = -1;
+ snd_ctl_card_info_t *info = NULL;
+ snd_pcm_info_t *pcminfo = NULL;
+
+ snd_ctl_card_info_alloca(&info);
+ snd_pcm_info_alloca (&pcminfo);
+
+ QString ctlname = "hw:"+QString::number(card);
+
+ if (combobox)
+ combobox->clear();
+ if (devname2dev)
+ devname2dev->clear();
+ if (dev2devname)
+ dev2devname->clear();
+ if (dev2idx)
+ dev2idx->clear();
+
+ int count = 0;
+
+ if (snd_ctl_open (&handle, ctlname.ascii(), 0) == 0) {
+ if (snd_ctl_card_info(handle, info) == 0) {
+
+ dev = -1;
+ while (1) {
+ if (snd_ctl_pcm_next_device(handle, &dev) < 0) {
+ //logError("snd_ctl_pcm_next_device");
+ }
+ if (dev < 0)
+ break;
+ snd_pcm_info_set_device(pcminfo, dev);
+ snd_pcm_info_set_subdevice(pcminfo, 0);
+ snd_pcm_info_set_stream(pcminfo, stream);
+ int err = 0;
+ if ((err = snd_ctl_pcm_info(handle, pcminfo)) < 0) {
+ if (err != -ENOENT) {
+ //logError(QString("control digital audio info (%1): %2").arg(card).arg(snd_strerror(err)));
+ }
+ continue;
+ }
+ const char *dev_name = snd_pcm_info_get_name(pcminfo);
+ QString devname = i18n("context-card-plus-device-number", "%1 device %2").arg(dev_name).arg(dev);
+ if (combobox)
+ combobox->insertItem(devname);
+ if (devname2dev)
+ (*devname2dev)[devname] = dev;
+ if (dev2devname)
+ (*dev2devname)[dev] = devname;
+ if (dev2idx)
+ (*dev2idx)[dev] = count;
+ ++count;
+ }
+ }
+ snd_ctl_close(handle);
+ }
+ return count;
+}
+
+void AlsaSoundConfiguration::slotOK()
+{
+ if (!m_dirty)
+ return;
+
+ if (m_SoundDevice) {
+ m_SoundDevice->setHWBufferSize ( editHWBufferSize ->value() * 1024);
+ m_SoundDevice->setBufferSize ( editBufferSize ->value() * 1024);
+ m_SoundDevice->enablePlayback (!chkDisablePlayback->isChecked());
+ m_SoundDevice->enableCapture (!chkDisableCapture ->isChecked());
+
+ int card = m_name2card[m_comboPlaybackCard->currentText()];
+ int device = m_playbackDeviceName2dev[m_comboPlaybackDevice->currentText()];
+ m_SoundDevice->setPlaybackDevice( card, device);
+ card = m_name2card[m_comboCaptureCard->currentText()];
+ device = m_captureDeviceName2dev[m_comboCaptureDevice->currentText()];
+ m_SoundDevice->setCaptureDevice ( card, device);
+
+ saveCaptureMixerSettings();
+ m_SoundDevice->setCaptureMixerSettings(m_MixerSettings);
+ }
+ m_dirty = false;
+}
+
+
+void AlsaSoundConfiguration::slotCancel()
+{
+ if (!m_dirty)
+ return;
+ m_ignore_updates = true;
+
+ int card = m_SoundDevice ? m_SoundDevice->getPlaybackCard() : 0;
+ int dev = m_SoundDevice ? m_SoundDevice->getPlaybackDevice() : 0;
+ m_comboPlaybackCard ->setCurrentItem(m_playbackCard2idx[card]);
+ slotPlaybackCardSelected(m_comboPlaybackCard->currentText());
+ m_comboPlaybackDevice->setCurrentItem(m_playbackDevice2idx[dev]);
+
+ card = m_SoundDevice ? m_SoundDevice->getCaptureCard() : 0;
+ dev = m_SoundDevice ? m_SoundDevice->getCaptureDevice() : 0;
+ m_comboCaptureCard ->setCurrentItem(m_captureCard2idx[card]);
+ slotCaptureCardSelected(m_comboCaptureCard->currentText());
+ m_comboCaptureDevice->setCurrentItem(m_captureDevice2idx[dev]);
+
+ //IErrorLogClient::staticLogDebug(QString("capture: card = %1(%2), dev = %3").arg(card).arg(m_captureCard2idx[card]).arg(dev));
+
+ editHWBufferSize ->setValue (m_SoundDevice ? m_SoundDevice->getHWBufferSize()/1024 : 4);
+ editBufferSize ->setValue (m_SoundDevice ? m_SoundDevice->getBufferSize()/1024 : 4);
+ chkDisablePlayback->setChecked(m_SoundDevice ? !m_SoundDevice->isPlaybackEnabled() : false);
+ chkDisableCapture ->setChecked(m_SoundDevice ? !m_SoundDevice->isCaptureEnabled() : false);
+
+ //IErrorLogClient::staticLogDebug(QString("capture: card = %1").arg(m_comboCaptureCard->currentText()));
+
+
+ if (m_SoundDevice)
+ m_MixerSettings = m_SoundDevice->getCaptureMixerSettings();
+ else
+ m_MixerSettings.clear();
+ restoreCaptureMixerSettings();
+
+ m_ignore_updates = false;
+ m_dirty = false;
+}
+
+
+void AlsaSoundConfiguration::slotUpdateConfig()
+{
+ slotSetDirty();
+ slotCancel();
+}
+
+void AlsaSoundConfiguration::slotSetDirty()
+{
+ if (!m_dirty && !m_ignore_updates) {
+ m_dirty = true;
+ //emit sigDirty();
+ }
+}
+
+#include "alsa-sound-configuration.moc"
diff --git a/kradio3/plugins/alsa-sound/alsa-sound-configuration.h b/kradio3/plugins/alsa-sound/alsa-sound-configuration.h
new file mode 100644
index 0000000..0dd361a
--- /dev/null
+++ b/kradio3/plugins/alsa-sound/alsa-sound-configuration.h
@@ -0,0 +1,83 @@
+/***************************************************************************
+ alsa-sound-configuration.h - description
+ -------------------
+ begin : Thu Sep 30 2004
+ copyright : (C) 2004 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_ALSA_SOUND_CONFIGURATION_H
+#define KRADIO_ALSA_SOUND_CONFIGURATION_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "alsa-sound-configuration-ui.h"
+#include "alsa-sound.h"
+#include "alsa-config-mixer-setting.h"
+
+class QHBoxLayout;
+class QGridLayout;
+class QAlsaMixerElement;
+class QScrollView;
+class QFrame;
+
+class AlsaSoundConfiguration : public AlsaSoundConfigurationUI
+{
+Q_OBJECT
+public :
+ AlsaSoundConfiguration (QWidget *parent, AlsaSoundDevice *);
+ ~AlsaSoundConfiguration ();
+
+protected slots:
+
+ void slotOK();
+ void slotCancel();
+
+ void slotSetDirty();
+
+ void slotUpdateConfig();
+
+ void slotPlaybackCardSelected(const QString &cardname);
+ void slotCaptureCardSelected(const QString &cardname);
+
+protected:
+ int listSoundDevices(KComboBox *combobox, QMap<QString, int> *devname2dev, QMap<int, QString> *dev2devname, QMap<int, int> *dev2idx, int card, snd_pcm_stream_t stream);
+ void saveCaptureMixerSettings();
+ void restoreCaptureMixerSettings();
+
+ AlsaSoundDevice *m_SoundDevice;
+ int m_currentCaptureCard;
+ QMap<QString, int> m_name2card,
+ m_name2capturedevice,
+ m_playbackDeviceName2dev,
+ m_captureDeviceName2dev;
+ QMap<int, QString> m_card2name,
+ m_dev2playbackDeviceName,
+ m_dev2captureDeviceName;
+ QMap<int, int> m_captureCard2idx,
+ m_captureDevice2idx,
+ m_playbackCard2idx,
+ m_playbackDevice2idx;
+ QGridLayout *m_groupMixerLayout;
+ QScrollView *m_groupMixerScrollView;
+ QFrame *m_groupMixerSubFrame;
+ QMap<QString, QAlsaMixerElement*> m_MixerElements;
+
+ QMap<QString, AlsaConfigMixerSetting> m_MixerSettings;
+
+ bool m_dirty;
+ bool m_ignore_updates;
+};
+
+#endif
diff --git a/kradio3/plugins/alsa-sound/alsa-sound.cpp b/kradio3/plugins/alsa-sound/alsa-sound.cpp
new file mode 100644
index 0000000..d67d5c8
--- /dev/null
+++ b/kradio3/plugins/alsa-sound/alsa-sound.cpp
@@ -0,0 +1,1562 @@
+/***************************************************************************
+ alsa-sound.cpp - description
+ -------------------
+ begin : Thu May 26 2005
+ copyright : (C) 2005 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include <klocale.h>
+#include <kaboutdata.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/ioctl.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <math.h>
+#include <errno.h>
+
+#include <sys/soundcard.h>
+#include <alsa/asoundlib.h>
+
+#include "alsa-sound.h"
+#include "alsa-sound-configuration.h"
+// #include "capture-thread.h"
+#include "../../src/include/aboutwidget.h"
+#include "../../src/include/utils.h"
+
+///////////////////////////////////////////////////////////////////////
+//// plugin library functions
+
+PLUGIN_LIBRARY_FUNCTIONS(AlsaSoundDevice, "kradio-alsa-sound", i18n("Advanced Linux Sound Architecture (ALSA) Support"));
+
+/////////////////////////////////////////////////////////////////////////////
+
+struct _lrvol { unsigned char l, r; short dummy; };
+
+AlsaSoundDevice::AlsaSoundDevice(const QString &name)
+ : QObject(NULL, NULL),
+ PluginBase(name, i18n("KRadio ALSA Sound Plugin")),
+ m_hPlayback(NULL),
+ m_hCapture(NULL),
+ m_hPlaybackMixer(NULL),
+ m_hCaptureMixer(NULL),
+ m_PlaybackFormat(),
+ m_CaptureFormat(),
+ m_PlaybackCard(-1),
+ m_PlaybackDevice(-1),
+ m_CaptureCard(-1),
+ m_CaptureDevice(-1),
+ m_PlaybackLatency(50),
+ m_CaptureLatency(50),
+ m_PassivePlaybackStreams(),
+ m_PlaybackStreamID(),
+ m_CaptureStreamID(),
+ m_HWBufferSize(2048),
+ m_BufferSize(16384),
+ m_PlaybackBuffer(m_BufferSize),
+ m_CaptureBuffer(m_BufferSize),
+ m_CaptureRequestCounter(0),
+ m_CapturePos(0),
+ m_CaptureStartTime(0),
+// m_PlaybackSkipCount(0),
+ m_CaptureSkipCount(0),
+ m_EnablePlayback(true),
+ m_EnableCapture(true)//,
+// m_captureThread(NULL)
+{
+ QObject::connect(&m_PlaybackPollingTimer, SIGNAL(timeout()), this, SLOT(slotPollPlayback()));
+ QObject::connect(&m_CapturePollingTimer, SIGNAL(timeout()), this, SLOT(slotPollCapture()));
+}
+
+
+AlsaSoundDevice::~AlsaSoundDevice()
+{
+ stopCapture(m_CaptureStreamID);
+ stopPlayback(m_PlaybackStreamID);
+ closePlaybackDevice();
+ closeCaptureDevice();
+ closePlaybackMixerDevice();
+ closeCaptureMixerDevice();
+}
+
+
+bool AlsaSoundDevice::connectI(Interface *i)
+{
+ bool a = PluginBase::connectI(i);
+ bool b = ISoundStreamClient::connectI(i);
+ return a || b;
+}
+
+
+bool AlsaSoundDevice::disconnectI(Interface *i)
+{
+ bool a = PluginBase::disconnectI(i);
+ bool b = ISoundStreamClient::disconnectI(i);
+ return a || b;
+}
+
+void AlsaSoundDevice::noticeConnectedI (ISoundStreamServer *s, bool pointer_valid)
+{
+ ISoundStreamClient::noticeConnectedI(s, pointer_valid);
+ if (s && pointer_valid) {
+ s->register4_sendReleasePlayback(this);
+ s->register4_sendReleaseCapture(this);
+ s->register4_sendPlaybackVolume(this);
+ s->register4_sendMute(this);
+ s->register4_sendUnmute(this);
+ s->register4_sendCaptureVolume(this);
+ s->register4_queryPlaybackVolume(this);
+ s->register4_queryCaptureVolume(this);
+ s->register4_sendStartPlayback(this);
+ s->register4_sendPausePlayback(this);
+ s->register4_sendStopPlayback(this);
+ s->register4_queryIsPlaybackRunning(this);
+ s->register4_sendStartCaptureWithFormat(this);
+ s->register4_sendStopCapture(this);
+ s->register4_queryIsCaptureRunning(this);
+ s->register4_notifySoundStreamClosed(this);
+ s->register4_notifySoundStreamRedirected(this);
+ s->register4_notifySoundStreamData(this);
+ }
+}
+
+// PluginBase
+
+void AlsaSoundDevice::saveState (KConfig *c) const
+{
+ c->setGroup(QString("alsa-sound-") + PluginBase::name());
+
+ c->writeEntry("playback-card", m_PlaybackCard);
+ c->writeEntry("playback-device", m_PlaybackDevice);
+ c->writeEntry("capture-card", m_CaptureCard);
+ c->writeEntry("capture-device", m_CaptureDevice);
+ c->writeEntry("enable-playback", m_EnablePlayback);
+ c->writeEntry("enable-capture", m_EnableCapture);
+ c->writeEntry("hwbuffer-size", m_HWBufferSize);
+ c->writeEntry("buffer-size", m_BufferSize);
+ c->writeEntry("soundstreamclient-id", m_SoundStreamClientID);
+
+ c->writeEntry("mixer-settings", m_CaptureMixerSettings.count());
+ int i = 0;
+ for (QMapConstIterator<QString, AlsaConfigMixerSetting> it = m_CaptureMixerSettings.begin(); it != m_CaptureMixerSettings.end(); ++it, ++i) {
+
+ QString prefix = QString("mixer-setting-%1-").arg(i);
+ (*it).saveState(c, prefix);
+ }
+
+}
+
+
+void AlsaSoundDevice::restoreState (KConfig *c)
+{
+ c->setGroup(QString("alsa-sound-") + PluginBase::name());
+
+ m_EnablePlayback = c->readBoolEntry("enable-playback", true);
+ m_EnableCapture = c->readBoolEntry("enable-capture", true);
+ m_HWBufferSize = c->readNumEntry ("hwbuffer-size", 2048);
+ m_BufferSize = c->readNumEntry ("buffer-size", 16384);
+ int card = c->readNumEntry ("playback-card", 0);
+ int dev = c->readNumEntry ("playback-device", 0);
+ setPlaybackDevice(card, dev);
+ card = c->readNumEntry ("capture-card", 0);
+ dev = c->readNumEntry ("capture-device", 0);
+ setCaptureDevice(card, dev);
+
+ m_PlaybackBuffer.resize(m_BufferSize);
+ m_CaptureBuffer.resize(m_BufferSize);
+
+ setSoundStreamClientID(c->readEntry("soundstreamclient-id", getSoundStreamClientID()));
+
+ int n = c->readNumEntry("mixer-settings", 0);
+ for (int i = 0; i < n; ++i) {
+ QString prefix = QString("mixer-setting-%1-").arg(i);
+ AlsaConfigMixerSetting s(c, prefix);
+ m_CaptureMixerSettings.insert(s.getIDString(), s);
+ }
+
+ emit sigUpdateConfig();
+}
+
+
+ConfigPageInfo AlsaSoundDevice::createConfigurationPage()
+{
+ AlsaSoundConfiguration *conf = new AlsaSoundConfiguration(NULL, this);
+ QObject::connect(this, SIGNAL(sigUpdateConfig()), conf, SLOT(slotUpdateConfig()));
+ return ConfigPageInfo (conf,
+ i18n("ALSA Sound"),
+ i18n("ALSA Sound Device Options"),
+ "kradio_alsa2");
+}
+
+
+AboutPageInfo AlsaSoundDevice::createAboutPage()
+{
+/* KAboutData aboutData("kradio",
+ NULL,
+ NULL,
+ I18N_NOOP("ALSA Sound Plugin for KRadio"),
+ KAboutData::License_GPL,
+ "(c) 2005 Martin Witte",
+ 0,
+ "http://sourceforge.net/projects/kradio",
+ 0);
+ aboutData.addAuthor("Martin Witte", "", "witte@kawo1.rwth-aachen.de");
+
+ return AboutPageInfo(
+ new KRadioAboutWidget(aboutData, KRadioAboutWidget::AbtTabbed),
+ i18n("ALSA Sound"),
+ i18n("ALSA Sound"),
+ "kradio_alsa_sound"
+ );
+*/
+ return AboutPageInfo();
+}
+
+
+
+bool AlsaSoundDevice::preparePlayback(SoundStreamID id, const QString &channel, bool active_mode, bool start_immediately)
+{
+ if (id.isValid()) {
+ m_PlaybackStreams.insert(id, SoundStreamConfig(channel, active_mode));
+ if (start_immediately)
+ startPlayback(id);
+ return true;
+ // FIXME: what to do if stream is already playing?
+ }
+ return false;
+}
+
+bool AlsaSoundDevice::prepareCapture(SoundStreamID id, const QString &channel)
+{
+ if (id.isValid()) {
+ m_CaptureStreams.insert(id, SoundStreamConfig(channel));
+ return true;
+ // FIXME: what to do if stream is already playing?
+ }
+ return false;
+}
+
+bool AlsaSoundDevice::releasePlayback(SoundStreamID id)
+{
+ if (id.isValid() && m_PlaybackStreams.contains(id)) {
+ if (m_PlaybackStreamID == id || m_PassivePlaybackStreams.contains(id)) {
+ stopPlayback(id);
+ }
+ m_PlaybackStreams.remove(id);
+ return true;
+ }
+ return false;
+}
+
+bool AlsaSoundDevice::releaseCapture(SoundStreamID id)
+{
+ if (id.isValid() && m_CaptureStreams.contains(id)) {
+ if (m_CaptureStreamID == id) {
+ stopCapture(id);
+ }
+ m_CaptureStreams.remove(id);
+ return true;
+ }
+ return false;
+}
+
+bool AlsaSoundDevice::supportsPlayback() const
+{
+ return m_EnablePlayback;
+}
+
+
+bool AlsaSoundDevice::supportsCapture() const
+{
+ return m_EnableCapture;
+}
+
+
+bool AlsaSoundDevice::startPlayback(SoundStreamID id)
+{
+ if (id.isValid() && m_PlaybackStreams.contains(id) && m_EnablePlayback) {
+
+ SoundStreamConfig &cfg = m_PlaybackStreams[id];
+
+ bool ok = false;
+ if (cfg.m_ActiveMode) {
+ if (!m_PlaybackStreamID.isValid()) {
+ m_PlaybackStreamID = id;
+ ok = true;
+ }
+ } else {
+ if (!m_PassivePlaybackStreams.contains(id))
+ m_PassivePlaybackStreams.append(id);
+ ok = true;
+ }
+
+ if (ok) {
+ openPlaybackMixerDevice();
+ if (cfg.m_Volume >= 0 && writePlaybackMixerVolume(cfg.m_Channel, cfg.m_Volume, cfg.m_Muted)) {
+ notifyPlaybackVolumeChanged(id, cfg.m_Volume);
+ notifyMuted(id, cfg.m_Volume);
+ }
+ m_PlaybackPollingTimer.start(m_PlaybackLatency);
+ }
+
+ // error handling?
+ return true;
+ } else {
+ return false;
+ }
+}
+
+
+bool AlsaSoundDevice::pausePlayback(SoundStreamID /*id*/)
+{
+ //return stopPlayback(id);
+ return false;
+}
+
+
+bool AlsaSoundDevice::stopPlayback(SoundStreamID id)
+{
+ if (id.isValid() && m_PlaybackStreams.contains(id)) {
+
+ SoundStreamConfig &cfg = m_PlaybackStreams[id];
+
+ if (!cfg.m_ActiveMode) {
+ if (m_PassivePlaybackStreams.contains(id)) {
+/* float tmp = 0;
+ writePlaybackMixerVolume(cfg.m_Channel, tmp, true);*/
+ m_PassivePlaybackStreams.remove(id);
+ }
+ } else if (m_PlaybackStreamID == id) {
+ m_PlaybackStreamID = SoundStreamID::InvalidID;
+ m_PlaybackBuffer.clear();
+ closePlaybackDevice();
+ }
+
+ closePlaybackMixerDevice();
+ return true;
+ } else {
+ return false;
+ }
+}
+
+bool AlsaSoundDevice::isPlaybackRunning(SoundStreamID id, bool &b) const
+{
+ if (id.isValid() && m_PlaybackStreamID == id || m_PassivePlaybackStreams.contains(id)) {
+ b = true;
+ return true;
+ } else {
+ return false;
+ }
+}
+
+bool AlsaSoundDevice::startCaptureWithFormat(SoundStreamID id,
+ const SoundFormat &proposed_format,
+ SoundFormat &real_format,
+ bool force_format)
+{
+ if (m_CaptureStreams.contains(id) && m_EnableCapture) {
+
+ if (m_CaptureStreamID != id) {
+ m_CapturePos = 0;
+ m_CaptureStartTime = time(NULL);
+ }
+
+ if (m_CaptureStreamID != id || (force_format && proposed_format != m_CaptureFormat)) {
+
+ m_CaptureStreamID = id;
+ SoundStreamConfig &cfg = m_CaptureStreams[id];
+
+ openCaptureMixerDevice();
+ selectCaptureChannel(cfg.m_Channel);
+ if (cfg.m_Volume >= 0 && writeCaptureMixerVolume(cfg.m_Channel, cfg.m_Volume)) {
+ notifyCaptureVolumeChanged(m_CaptureStreamID, cfg.m_Volume);
+ }
+
+ openCaptureDevice(proposed_format);
+
+ // FIXME: error handling?
+ }
+
+ real_format = m_CaptureFormat;
+ m_CaptureRequestCounter++;
+
+// m_captureThread = new AlsaCaptureThread(this, m_hCapture, m_CaptureFormat, 5, m_BufferSize);
+// m_captureThread->start();
+
+ slotPollCapture();
+
+ return true;
+ } else {
+ return false;
+ }
+}
+
+
+bool AlsaSoundDevice::stopCapture(SoundStreamID id)
+{
+ if (id.isValid() && m_CaptureStreamID == id) {
+
+ if (--m_CaptureRequestCounter == 0) {
+
+// m_captureThread->setDone();
+// if (!m_captureThread->wait(4000)) { //wait at maximum 4 seconds
+// logError("AlsaPlugin: capture thread did not terminate. Killing it.");
+// m_captureThread->terminate();
+// m_captureThread->wait();
+// }
+
+ slotPollCapture();
+
+// if (m_captureThread->error()) {
+// logError(i18n("ALSA Plugin, device plughw:%1,%2: %3").arg(m_CaptureCard)
+// .arg(m_CaptureDevice)
+// .arg(i18n("unknown error")));
+// }
+//
+// delete m_captureThread;
+// m_captureThread = NULL;
+
+ m_CaptureStreamID = SoundStreamID::InvalidID;
+ m_CaptureBuffer.clear();
+
+ closeCaptureMixerDevice();
+ closeCaptureDevice();
+ }
+ return true;
+ } else {
+ return false;
+ }
+}
+
+
+bool AlsaSoundDevice::isCaptureRunning(SoundStreamID id, bool &b, SoundFormat &sf) const
+{
+ if (id.isValid() && m_CaptureStreamID == id) {
+ b = true;
+ sf = m_CaptureFormat;
+ return true;
+ } else {
+ return false;
+ }
+}
+
+
+bool AlsaSoundDevice::noticeSoundStreamClosed(SoundStreamID id)
+{
+ bool found = false;
+ if (m_PlaybackStreamID == id || m_PassivePlaybackStreams.contains(id)) {
+ stopPlayback(id);
+ found = true;
+ }
+ if (m_CaptureStreamID == id) {
+ stopCapture(id);
+ found = true;
+ }
+ m_PlaybackStreams.remove(id);
+ m_CaptureStreams.remove(id);
+ return found;
+}
+
+
+bool AlsaSoundDevice::noticeSoundStreamRedirected(SoundStreamID oldID, SoundStreamID newID)
+{
+ bool found = false;
+ if (m_PlaybackStreams.contains(oldID)) {
+ m_PlaybackStreams.insert(newID, m_PlaybackStreams[oldID]);
+ if (newID != oldID)
+ m_PlaybackStreams.remove(oldID);
+ found = true;
+ }
+ if (m_CaptureStreams.contains(oldID)) {
+ m_CaptureStreams.insert(newID, m_CaptureStreams[oldID]);
+ if (newID != oldID)
+ m_CaptureStreams.remove(oldID);
+ found = true;
+ }
+
+ if (m_PlaybackStreamID == oldID)
+ m_PlaybackStreamID = newID;
+ if (m_CaptureStreamID == oldID)
+ m_CaptureStreamID = newID;
+ if (m_PassivePlaybackStreams.contains(oldID)) {
+ m_PassivePlaybackStreams.remove(oldID);
+ m_PassivePlaybackStreams.append(newID);
+ }
+ return found;
+}
+
+
+bool AlsaSoundDevice::noticeSoundStreamData(SoundStreamID id,
+ const SoundFormat &format,
+ const char *data, size_t size, size_t &consumed_size,
+ const SoundMetaData &/*md*/
+ )
+{
+ if (!id.isValid() || id != m_PlaybackStreamID)
+ return false;
+
+ if (!m_hPlayback) {
+ openPlaybackDevice(format);
+ } else if (format != m_PlaybackFormat) {
+ // flush playback buffer
+ size_t buffersize = 0;
+ char *buffer = m_PlaybackBuffer.getData(buffersize);
+
+ snd_pcm_writei(m_hPlayback, buffer, buffersize / m_PlaybackFormat.sampleSize());
+
+ // if not all could be written, it must be discarded
+ m_PlaybackBuffer.clear();
+ closePlaybackDevice();
+ openPlaybackDevice(format);
+ // error handling ?
+ }
+
+ size_t n = m_PlaybackBuffer.addData(data, size);
+ consumed_size = (consumed_size == SIZE_T_DONT_CARE) ? n : min (consumed_size, n);
+/* if (n < size) {
+ m_PlaybackSkipCount += size - n;
+ } else if (m_PlaybackSkipCount > 0) {
+ logWarning(i18n("plughw:%1,%2: Playback buffer overflow. Skipped %3 bytes").arg(m_PlaybackCard).arg(m_PlaybackDevice).arg(QString::number(m_PlaybackSkipCount)));
+ m_PlaybackSkipCount = 0;
+ }
+ return m_PlaybackSkipCount == 0;*/
+ return true;
+}
+
+
+
+void AlsaSoundDevice::slotPollPlayback()
+{
+ if (m_PlaybackStreamID.isValid()) {
+
+ if (m_PlaybackBuffer.getFillSize() > 0 && m_hPlayback) {
+
+ size_t buffersize = 0;
+ int frameSize = m_CaptureFormat.frameSize();
+ char *buffer = m_PlaybackBuffer.getData(buffersize);
+ int framesWritten = snd_pcm_writei(m_hPlayback, buffer, buffersize / frameSize);
+ int bytesWritten = framesWritten * frameSize;
+
+ if (framesWritten > 0) {
+ m_PlaybackBuffer.removeData(bytesWritten);
+ } else if (framesWritten == 0) {
+ logError(i18n("ALSA Plugin: cannot write data for device plughw:%1,%2").arg(m_PlaybackCard).arg(m_PlaybackDevice));
+ } else if (framesWritten == -EAGAIN) {
+ // do nothing
+ } else {
+ snd_pcm_prepare(m_hPlayback);
+ logWarning(i18n("ALSA Plugin: buffer underrun for device plughw:%1,%2").arg(m_PlaybackCard).arg(m_PlaybackDevice));
+ }
+ }
+
+ if (m_PlaybackBuffer.getFreeSize() > m_PlaybackBuffer.getSize() / 3) {
+ notifyReadyForPlaybackData(m_PlaybackStreamID, m_PlaybackBuffer.getFreeSize());
+ }
+
+ checkMixerVolume(m_PlaybackStreamID);
+ }
+
+ QValueListConstIterator<SoundStreamID> end = m_PassivePlaybackStreams.end();
+ for (QValueListConstIterator<SoundStreamID> it = m_PassivePlaybackStreams.begin(); it != end; ++it)
+ checkMixerVolume(*it);
+}
+
+
+void AlsaSoundDevice::slotPollCapture()
+{
+ if (m_CaptureStreamID.isValid() && m_hCapture) {
+
+// while (m_captureThread && m_captureThread->getAvailableReadBuffers()) {
+// QString dev = QString("alsa://plughw:%1,%2").arg(m_CaptureCard).arg(m_CaptureDevice);
+// size_t size = 0;
+// char *buffer = m_captureThread->getReadBuffer(size);
+// time_t cur_time = time(NULL);
+// notifySoundStreamData(m_CaptureStreamID, m_CaptureFormat, buffer, size, SoundMetaData(m_CapturePos, cur_time - m_CaptureStartTime, cur_time, dev));
+// m_CapturePos += size;
+// }
+
+ size_t bufferSize = 0;
+ char *buffer = m_CaptureBuffer.getFreeSpace(bufferSize);
+
+ if (bufferSize) {
+
+ size_t frameSize = m_CaptureFormat.frameSize();
+ int framesRead = snd_pcm_readi(m_hCapture, buffer, bufferSize / frameSize);
+ size_t bytesRead = framesRead > 0 ? framesRead * frameSize : 0;
+
+// //BEGIN DEBUG
+// static unsigned int debug_val = 0;
+// short *debug_buf = (short*)buffer;
+// for (int i = 0; i < bytesRead / 2 / sizeof(short); ++i) {
+// debug_buf[2*i] = debug_val >> 10;
+// debug_buf[2*i+1] = debug_val >> 10;
+// ++debug_val;
+// }
+// //END DEBUG
+
+ if (framesRead > 0) {
+ m_CaptureBuffer.removeFreeSpace(bytesRead);
+ } else if (framesRead == 0) {
+ snd_pcm_prepare(m_hCapture);
+ logError(i18n("ALSA Plugin: cannot read data from device plughw:%1,%2").arg(m_CaptureCard).arg(m_CaptureDevice));
+ } else if (framesRead == -EAGAIN) {
+ // do nothing
+ } else {
+ snd_pcm_prepare(m_hCapture);
+ logWarning(i18n("ALSA Plugin: buffer overrun for device plughw:%1,%2 (buffersize=%3, buffer=%4)").arg(m_CaptureCard).arg(m_CaptureDevice).arg(bufferSize).arg((long long unsigned)buffer));
+ }
+
+ QString dev = QString("alsa://plughw:%1,%2").arg(m_CaptureCard).arg(m_CaptureDevice);
+ while (m_CaptureBuffer.getFillSize() > m_CaptureBuffer.getSize() / 3) {
+ size_t size = 0;
+ buffer = m_CaptureBuffer.getData(size);
+ time_t cur_time = time(NULL);
+ size_t consumed_size = SIZE_T_DONT_CARE;
+
+ notifySoundStreamData(m_CaptureStreamID, m_CaptureFormat, buffer, size, consumed_size, SoundMetaData(m_CapturePos, cur_time - m_CaptureStartTime, cur_time, i18n("internal stream, not stored (%1)").arg(dev)));
+
+ if (consumed_size == SIZE_T_DONT_CARE)
+ consumed_size = size;
+ m_CaptureBuffer.removeData(consumed_size);
+ m_CapturePos += consumed_size;
+ if (consumed_size < size)
+ break;
+ }
+ }
+ }
+ if (m_CaptureStreamID.isValid())
+ checkMixerVolume(m_CaptureStreamID);
+}
+
+
+bool AlsaSoundDevice::openPlaybackDevice(const SoundFormat &format, bool reopen)
+{
+ if (m_PlaybackCard < 0 || m_PlaybackDevice < 0)
+ return false;
+
+ if (m_hPlayback) {
+
+ if (reopen) {
+
+ closePlaybackDevice ( /* force = */ true);
+
+ } else {
+
+ if (format != m_PlaybackFormat)
+ return false;
+
+ return true;
+ }
+ } else {
+ if (reopen) // FIXME: emw: please check if this makes sense !?!?
+ return true;
+ }
+
+ m_PlaybackFormat = format;
+
+ QString dev = QString("plughw:%1,%2").arg(m_PlaybackCard).arg(m_PlaybackDevice);
+ bool error = !openAlsaDevice(m_hPlayback, m_PlaybackFormat, dev.ascii(), SND_PCM_STREAM_PLAYBACK, SND_PCM_NONBLOCK, m_PlaybackLatency);
+
+ if (!error) {
+ m_PlaybackPollingTimer.start(m_PlaybackLatency);
+ } else {
+ closePlaybackDevice();
+ }
+
+// m_PlaybackSkipCount = 0;
+
+ return !error;
+}
+
+
+bool AlsaSoundDevice::openCaptureDevice(const SoundFormat &format, bool reopen)
+{
+ if (m_PlaybackCard < 0 || m_PlaybackDevice < 0)
+ return false;
+
+ if (m_hCapture) {
+
+ if (reopen) {
+
+ closeCaptureDevice ( /* force = */ true);
+
+ } else {
+
+ if (format != m_CaptureFormat)
+ return false;
+
+ return true;
+ }
+ } else {
+ if (reopen) // FIXME: emw: please check if this makes sense !?!?
+ return true;
+ }
+
+ m_CaptureFormat = format;
+
+ QString dev = QString("plughw:%1,%2").arg(m_CaptureCard).arg(m_CaptureDevice);
+// bool error = !openAlsaDevice(m_hCapture, m_CaptureFormat, dev.ascii(), SND_PCM_STREAM_CAPTURE, /*flags = block*/0, m_CaptureLatency);
+ bool error = !openAlsaDevice(m_hCapture, m_CaptureFormat, dev.ascii(), SND_PCM_STREAM_CAPTURE, SND_PCM_NONBLOCK, m_CaptureLatency);
+
+ if (!error) {
+ m_CapturePollingTimer.start(m_CaptureLatency);
+ } else {
+ closeCaptureDevice();
+ }
+
+ m_CaptureSkipCount = 0;
+
+ return !error;
+}
+
+
+bool AlsaSoundDevice::openAlsaDevice(snd_pcm_t *&alsa_handle, SoundFormat &format, const char *pcm_name, snd_pcm_stream_t stream, int flags, unsigned &latency)
+{
+ bool error = false;
+ int dir = 0;
+
+ snd_pcm_hw_params_t *hwparams = NULL;
+
+ snd_pcm_hw_params_alloca(&hwparams);
+
+
+ /* OPEN */
+
+ if (!error && snd_pcm_open(&alsa_handle, pcm_name, stream, flags) < 0) {
+ logError(i18n("ALSA Plugin: Error opening PCM device %1").arg(pcm_name));
+ error = true;
+ }
+
+ if (!error && snd_pcm_hw_params_any(alsa_handle, hwparams) < 0) {
+ logError(i18n("ALSA Plugin: Can not configure PCM device %1").arg(pcm_name));
+ error = true;
+ }
+
+ /* interleaved access type */
+
+ if (!error && snd_pcm_hw_params_set_access(alsa_handle, hwparams, SND_PCM_ACCESS_RW_INTERLEAVED) < 0) {
+ logError(i18n("ALSA Plugin: Error setting access for %1").arg(pcm_name));
+ error = true;
+ }
+
+ /* sample format */
+ snd_pcm_format_t sample_format = snd_pcm_build_linear_format(format.m_SampleBits,
+ format.m_SampleBits,
+ !format.m_IsSigned,
+ format.m_Endianess == BIG_ENDIAN);
+ if (!error && snd_pcm_hw_params_set_format(alsa_handle, hwparams, sample_format) < 0) {
+ logError(i18n("ALSA Plugin: Error setting sample format for %1").arg(pcm_name));
+ error = true;
+ }
+
+ /* channels */
+ if (!error && snd_pcm_hw_params_set_channels(alsa_handle, hwparams, format.m_Channels) < 0) {
+ logError(i18n("ALSA Plugin: Error setting channels for %1").arg(pcm_name));
+ error = true;
+ }
+
+ /* sample rate */
+ int rate = format.m_SampleRate;
+ if (!error && snd_pcm_hw_params_set_rate_near(alsa_handle, hwparams, &format.m_SampleRate, &dir) < 0) {
+ logError(i18n("ALSA Plugin: Error setting rate for %1").arg(pcm_name));
+ error = true;
+ }
+ if (!error && format.m_SampleRate != format.m_SampleRate) {
+ logWarning(i18n("ALSA Plugin: The rate %1 Hz is not supported by your hardware %2. Using %3 Hz instead").arg(rate).arg(pcm_name).arg(format.m_SampleRate));
+ }
+
+
+ snd_pcm_uframes_t period_size = m_HWBufferSize / format.frameSize();
+ if (!error && snd_pcm_hw_params_set_period_size_near(alsa_handle, hwparams, &period_size, &dir) < 0) {
+ logError(i18n("ALSA Plugin: Error setting period size for %1").arg(pcm_name));
+ error = true;
+ }
+
+// size_t buffersize_frames = m_HWBufferSize / format.frameSize();
+// int periods = 4;
+// //int period_size = m_BufferSize / periods;
+//
+// /* fragments */
+// if (!error && snd_pcm_hw_params_set_periods(alsa_handle, hwparams, periods, 0) < 0) {
+// logError(i18n("ALSA Plugin: Error setting periods for %1").arg(pcm_name));
+// error = true;
+// }
+
+// /* Set buffer size (in frames). */
+//
+// snd_pcm_uframes_t exact_buffersize_frames = buffersize_frames;
+// if (!error && snd_pcm_hw_params_set_buffer_size_near(alsa_handle, hwparams, &exact_buffersize_frames) < 0) {
+// exact_buffersize_frames = 4096;
+// if (!error && snd_pcm_hw_params_set_buffer_size_near(alsa_handle, hwparams, &exact_buffersize_frames) < 0) {
+// logError(i18n("ALSA Plugin: Error setting buffersize for %1").arg(pcm_name));
+// error = true;
+// }
+// }
+
+// size_t exact_buffersize = exact_buffersize_frames * format.frameSize();
+// if (!error && m_HWBufferSize != exact_buffersize) {
+// logWarning(i18n("ALSA Plugin: Hardware %1 does not support buffer size of %2. Using buffer size of %3 instead.").arg(pcm_name).arg(m_HWBufferSize).arg(exact_buffersize));
+// size_t tmp = (((m_HWBufferSize - 1) / exact_buffersize) + 1) * exact_buffersize;
+// setHWBufferSize(tmp);
+// logInfo(i18n("ALSA Plugin: adjusted buffer size for %1 to %2 bytes").arg(pcm_name).arg(QString::number(tmp)));
+// }
+
+ /* set all params */
+
+ if (!error && snd_pcm_hw_params(alsa_handle, hwparams) < 0) {
+ logError(i18n("ALSA Plugin: Error setting HW params"));
+ error = true;
+ }
+
+ if (!error && snd_pcm_hw_params_get_period_size(hwparams, &period_size, &dir) < 0) {
+ logError(i18n("ALSA Plugin: Error getting period size for %1").arg(pcm_name));
+ error = true;
+ }
+
+// latency = (exact_buffersize_frames * 1000) / format.m_SampleRate / periods; /* in milli seconds */
+ latency = (period_size * format.frameSize() * 1000) / format.m_SampleRate; /* in milli seconds */
+
+ if (!error) {
+ snd_pcm_prepare(alsa_handle);
+ }
+
+ return !error;
+}
+
+
+bool AlsaSoundDevice::closePlaybackDevice(bool force)
+{
+ if (!m_PlaybackStreamID.isValid() || force) {
+
+ if (!m_hPlaybackMixer)
+ m_PlaybackPollingTimer.stop();
+
+ if (m_hPlayback) {
+ snd_pcm_drop(m_hPlayback);
+ snd_pcm_close(m_hPlayback);
+ }
+
+ m_hPlayback = NULL;
+
+ m_PlaybackBuffer.clear();
+ return true;
+ }
+ return false;
+}
+
+
+bool AlsaSoundDevice::closeCaptureDevice(bool force)
+{
+ if (!m_CaptureStreamID.isValid() || force) {
+
+ if (!m_hCaptureMixer)
+ m_CapturePollingTimer.stop();
+
+ if (m_hCapture) {
+ snd_pcm_drop(m_hCapture);
+ snd_pcm_close(m_hCapture);
+ }
+
+ m_hCapture = NULL;
+
+ m_CaptureBuffer.clear();
+ return true;
+ }
+ return false;
+}
+
+
+bool AlsaSoundDevice::openPlaybackMixerDevice(bool reopen)
+{
+ return openMixerDevice(m_hPlaybackMixer, m_PlaybackCard, reopen, &m_PlaybackPollingTimer, m_PlaybackLatency);
+}
+
+
+bool AlsaSoundDevice::openCaptureMixerDevice(bool reopen)
+{
+// logDebug("AlsaSoundDevice::openCaptureMixerDevice: card == " + QString::number(m_CaptureCard));
+ return openMixerDevice(m_hCaptureMixer, m_CaptureCard, reopen, &m_CapturePollingTimer, m_CaptureLatency);
+}
+
+
+bool AlsaSoundDevice::closePlaybackMixerDevice(bool force)
+{
+ return closeMixerDevice(m_hPlaybackMixer, m_PlaybackCard, m_PlaybackStreamID, m_hPlayback, force, &m_PlaybackPollingTimer);
+}
+
+bool AlsaSoundDevice::closeCaptureMixerDevice(bool force)
+{
+ return closeMixerDevice(m_hCaptureMixer, m_CaptureCard, m_CaptureStreamID, m_hCapture, force, &m_CapturePollingTimer);
+}
+
+
+static int mixer_dummy_callback(snd_mixer_t *, unsigned int /*mask*/, snd_mixer_elem_t */*elem*/)
+{
+ return 0;
+}
+
+bool AlsaSoundDevice::openMixerDevice(snd_mixer_t *&mixer_handle, int card, bool reopen, QTimer *timer, int timer_latency)
+{
+ if (reopen) {
+ if (mixer_handle >= 0)
+ closeMixerDevice(mixer_handle, card, SoundStreamID::InvalidID, NULL, /* force = */ true, timer);
+ else
+ return true;
+ }
+
+ if (!mixer_handle) {
+ bool error = false;
+ if (snd_mixer_open (&mixer_handle, 0) < 0) {
+ staticLogError(i18n("ALSA Plugin: Error opening mixer"));
+ error = true;
+ }
+ QString cardid = "hw:" + QString::number(card);
+ bool attached = false;
+ if (!error) {
+ if (snd_mixer_attach (mixer_handle, cardid.ascii()) < 0) {
+ staticLogError(i18n("ALSA Plugin: ERROR: snd_mixer_attach for card %1").arg(card));
+ error = true;
+ } else {
+ attached = true;
+ }
+ }
+ if (!error && snd_mixer_selem_register(mixer_handle, NULL, NULL) < 0) {
+ staticLogError(i18n("ALSA Plugin: Error: snd_mixer_selem_register for card %1").arg(card));
+ error = true;
+ }
+ if (!error && snd_mixer_load (mixer_handle) < 0) {
+ staticLogError(i18n("ALSA Plugin: Error: snd_mixer_load for card %1").arg(card));
+ error = true;
+ }
+ if (mixer_handle) {
+ snd_mixer_set_callback (mixer_handle, mixer_dummy_callback);
+ }
+
+ if (error) {
+ if (attached) {
+ snd_mixer_detach(mixer_handle, cardid.ascii());
+ }
+ snd_mixer_close(mixer_handle);
+ mixer_handle = NULL;
+ }
+ }
+
+ if (mixer_handle && timer) {
+ timer->start(timer_latency);
+ }
+ return mixer_handle != NULL;
+}
+
+
+bool AlsaSoundDevice::closeMixerDevice(snd_mixer_t *&mixer_handle, int card, SoundStreamID id, snd_pcm_t *pcm_handle, bool force, QTimer *timer)
+{
+ if (!id.isValid() || force) {
+
+ if (!pcm_handle && timer)
+ timer->stop();
+
+ if (mixer_handle) {
+ QString cardid = "hw:" + QString::number(card);
+ snd_mixer_free(mixer_handle);
+ snd_mixer_detach(mixer_handle, cardid.ascii());
+ snd_mixer_close (mixer_handle);
+ }
+ mixer_handle = NULL;
+ }
+ return mixer_handle == NULL;
+}
+
+void AlsaSoundDevice::getPlaybackMixerChannels(
+ int card,
+ snd_mixer_t *__mixer_handle,
+ QStringList &retval, QMap<QString, AlsaMixerElement> &ch2id)
+{
+ retval.clear();
+ ch2id.clear();
+
+ snd_mixer_t *mixer_handle = __mixer_handle/*m_hPlaybackMixer*/;
+ bool use_tmp_handle = false;
+
+ if (!mixer_handle) {
+ openMixerDevice(mixer_handle, card/*m_PlaybackCard*/, false, NULL, 0);
+ use_tmp_handle = true;
+ }
+
+ if (mixer_handle) {
+ snd_mixer_elem_t *elem = NULL;
+
+ for (elem = snd_mixer_first_elem(mixer_handle); elem; elem = snd_mixer_elem_next(elem)) {
+ AlsaMixerElement sid;
+ if (!snd_mixer_selem_is_active(elem))
+ continue;
+ snd_mixer_selem_get_id(elem, sid);
+ QString name = snd_mixer_selem_id_get_name(sid);
+ int idx = snd_mixer_selem_id_get_index(sid);
+ if (idx)
+ name = i18n("context-mixername-number", "%1 %2").arg(name).arg(idx);
+ if (snd_mixer_selem_has_playback_volume(elem)) {
+ ch2id[name] = sid;
+ retval.append(name);
+ }
+ }
+ }
+
+ if (use_tmp_handle && mixer_handle) {
+ closeMixerDevice(mixer_handle, card /*m_PlaybackCard*/, SoundStreamID::InvalidID, NULL, true, NULL);
+ }
+}
+
+void AlsaSoundDevice::getCaptureMixerChannels(
+ int card,
+ snd_mixer_t *__mixer_handle,
+ QStringList &vol_list, QMap<QString, AlsaMixerElement> &vol_ch2id,
+ QStringList &sw_list, QMap<QString, AlsaMixerElement> &sw_ch2id,
+ QStringList *all_list
+)
+{
+ vol_list.clear();
+ sw_list.clear();
+ if (all_list) all_list->clear();
+ vol_ch2id.clear();
+ sw_ch2id.clear();
+
+ snd_mixer_t *mixer_handle = __mixer_handle /*m_hCaptureMixer*/;
+ bool use_tmp_handle = false;
+
+ if (!mixer_handle) {
+// staticLogDebug("AlsaSoundDevice::getCaptureMixerChannels: card == " + QString::number(card/*m_CaptureCard*/));
+ openMixerDevice(mixer_handle, card /*m_CaptureCard*/, false, NULL, 0);
+ use_tmp_handle = true;
+ }
+
+ if (mixer_handle) {
+ snd_mixer_elem_t *elem = NULL;
+
+ for (elem = snd_mixer_first_elem(mixer_handle); elem; elem = snd_mixer_elem_next(elem)) {
+ AlsaMixerElement sid;
+ if (!snd_mixer_selem_is_active(elem))
+ continue;
+ snd_mixer_selem_get_id(elem, sid);
+ QString name = snd_mixer_selem_id_get_name(sid);
+ int idx = snd_mixer_selem_id_get_index(sid);
+ if (idx)
+ name = i18n("context-mixerelement-name-number", "%1 %2").arg(name).arg(idx);
+
+ bool add2all = false;
+ if (snd_mixer_selem_has_capture_switch(elem)) {
+ sw_ch2id[name] = sid;
+ sw_list.append(name);
+ add2all = true;
+ }
+ if (snd_mixer_selem_has_capture_volume(elem)) {
+ vol_ch2id[name] = sid;
+ vol_list.append(name);
+ add2all = true;
+ }
+ if (add2all && all_list) {
+ all_list->append(name);
+ }
+ }
+ }
+
+ if (use_tmp_handle && mixer_handle) {
+ closeMixerDevice(mixer_handle, card /*m_CaptureCard*/, SoundStreamID::InvalidID, NULL, true, NULL);
+ }
+}
+
+const QStringList &AlsaSoundDevice::getPlaybackChannels() const
+{
+ return m_PlaybackChannels;
+}
+
+
+const QStringList &AlsaSoundDevice::getCaptureChannels() const
+{
+ return m_CaptureChannelsSwitch;
+}
+
+
+bool AlsaSoundDevice::setPlaybackVolume(SoundStreamID id, float volume)
+{
+ if (id.isValid() && (m_PlaybackStreamID == id || m_PassivePlaybackStreams.contains(id))) {
+ SoundStreamConfig &cfg = m_PlaybackStreams[id];
+
+ if (rint(100*volume) != rint(100*cfg.m_Volume)) {
+ if (writePlaybackMixerVolume(cfg.m_Channel, cfg.m_Volume = volume, cfg.m_Muted)) {
+ notifyPlaybackVolumeChanged(id, cfg.m_Volume);
+ }
+ }
+ return true;
+ }
+ return false;
+}
+
+
+bool AlsaSoundDevice::setCaptureVolume(SoundStreamID id, float volume)
+{
+ if (id.isValid() && m_CaptureStreamID == id) {
+ SoundStreamConfig &cfg = m_CaptureStreams[id];
+
+ if (rint(100*volume) != rint(100*cfg.m_Volume)) {
+ if (writeCaptureMixerVolume(cfg.m_Channel, cfg.m_Volume = volume)) {
+ notifyCaptureVolumeChanged(id, cfg.m_Volume);
+ }
+ }
+ return true;
+ }
+ return false;
+}
+
+
+bool AlsaSoundDevice::getPlaybackVolume(SoundStreamID id, float &volume) const
+{
+ if (id.isValid() && (m_PlaybackStreamID == id || m_PassivePlaybackStreams.contains(id))) {
+ const SoundStreamConfig &cfg = m_PlaybackStreams[id];
+ volume = cfg.m_Volume;
+ return true;
+ }
+ return false;
+}
+
+
+bool AlsaSoundDevice::getCaptureVolume(SoundStreamID id, float &volume) const
+{
+ if (id.isValid() && m_CaptureStreamID == id) {
+ const SoundStreamConfig &cfg = m_CaptureStreams[id];
+ volume = cfg.m_Volume;
+ return true;
+ }
+ return false;
+}
+
+
+void AlsaSoundDevice::checkMixerVolume(SoundStreamID id)
+{
+ if (id.isValid()) {
+
+ if (m_hPlaybackMixer && m_PassivePlaybackStreams.contains(id) || m_PlaybackStreamID == id) {
+ snd_mixer_handle_events(m_hPlaybackMixer);
+ SoundStreamConfig &cfg = m_PlaybackStreams[id];
+
+ bool m = false;
+ float v = readPlaybackMixerVolume(cfg.m_Channel, m);
+ if (rint(100*cfg.m_Volume) != rint(100*v)) {
+ cfg.m_Volume = v;
+ notifyPlaybackVolumeChanged(id, v);
+ }
+ if (m != cfg.m_Muted) {
+ cfg.m_Muted = m;
+ notifyMuted(id, m);
+ }
+ }
+
+ if (m_hCaptureMixer && m_CaptureStreamID == id) {
+ snd_mixer_handle_events(m_hCaptureMixer);
+ SoundStreamConfig &cfg = m_CaptureStreams[id];
+
+ if (m_CaptureChannels2ID.contains(cfg.m_Channel)) {
+ float v = readCaptureMixerVolume(cfg.m_Channel);
+ if (rint(100*cfg.m_Volume) != rint(100*v)) {
+ cfg.m_Volume = v;
+ notifyCaptureVolumeChanged(id, v);
+ }
+ }
+ }
+ }
+}
+
+
+float AlsaSoundDevice::readPlaybackMixerVolume(const QString &channel, bool &muted) const
+{
+ if (!m_hPlaybackMixer)
+ return 0; // without error
+
+ if (m_PlaybackChannels2ID.contains(channel) && m_hPlaybackMixer) {
+ AlsaMixerElement sid = m_PlaybackChannels2ID[channel];
+ snd_mixer_elem_t *elem = snd_mixer_find_selem(m_hPlaybackMixer, sid);
+ if (elem) {
+ long min = 0;
+ long max = 0;
+ snd_mixer_selem_get_playback_volume_range(elem, &min, &max);
+ if (min != max) {
+ long val = min;
+
+ muted = false;
+ int m = false;
+ if (snd_mixer_selem_get_playback_switch(elem, SND_MIXER_SCHN_FRONT_LEFT, &m) == 0) {
+ muted = !m;
+ }
+ if (snd_mixer_selem_get_playback_volume(elem, SND_MIXER_SCHN_FRONT_LEFT, &val) == 0) {
+ return ((float)(val - min)) / (float)(max - min);
+ }
+ }
+ }
+ }
+ logError("AlsaSound::readPlaybackMixerVolume: " +
+ i18n("error while reading volume from hwplug:%1,%2")
+ .arg(m_PlaybackCard)
+ .arg(m_PlaybackDevice));
+ return 0;
+}
+
+
+float AlsaSoundDevice::readCaptureMixerVolume(const QString &channel) const
+{
+ if (!m_hCaptureMixer)
+ return 0; // without error
+
+ if (m_CaptureChannels2ID.contains(channel) && m_hCaptureMixer) {
+ AlsaMixerElement sid = m_CaptureChannels2ID[channel];
+ snd_mixer_elem_t *elem = snd_mixer_find_selem(m_hCaptureMixer, sid);
+ if (elem) {
+ if (!snd_mixer_selem_has_capture_volume(elem))
+ return 0;
+ long min = 0;
+ long max = 0;
+ snd_mixer_selem_get_capture_volume_range(elem, &min, &max);
+ if (min != max) {
+ long val = min;
+ if (snd_mixer_selem_get_capture_volume(elem, SND_MIXER_SCHN_FRONT_LEFT, &val) == 0) {
+ return ((float)(val - min)) / (float)(max - min);
+ }
+ }
+ }
+ }
+ logError("AlsaSound::readCaptureMixerVolume: " +
+ i18n("error while reading volume from hwplug:%1,%2")
+ .arg(m_CaptureCard)
+ .arg(m_CaptureDevice));
+ return 0;
+}
+
+
+bool AlsaSoundDevice::writePlaybackMixerVolume (const QString &channel, float &vol, bool muted)
+{
+ if (vol > 1.0) vol = 1.0;
+ if (vol < 0) vol = 0.0;
+
+ if (!m_hPlaybackMixer)
+ return false;
+
+ if (m_PlaybackChannels2ID.contains(channel) && m_hPlaybackMixer) {
+ AlsaMixerElement sid = m_PlaybackChannels2ID[channel];
+ snd_mixer_elem_t *elem = snd_mixer_find_selem(m_hPlaybackMixer, sid);
+ if (elem) {
+ long min = 0;
+ long max = 0;
+ snd_mixer_selem_get_playback_volume_range(elem, &min, &max);
+ if (min != max) {
+ long val = (int)rint(min + (max - min) * vol);
+ vol = (float)(val - min) / (float)(max - min);
+ snd_mixer_selem_set_playback_switch_all(elem, !muted);
+ if (snd_mixer_selem_set_playback_volume_all(elem, val) == 0) {
+ return true;
+ }
+ }
+ }
+ }
+ logError("AlsaSound::writePlaybackMixerVolume: " +
+ i18n("error while writing volume %1 to hwplug:%2,%3")
+ .arg(vol)
+ .arg(m_PlaybackCard)
+ .arg(m_PlaybackDevice));
+ return false;
+}
+
+
+
+
+bool AlsaSoundDevice::writeCaptureMixerVolume (const QString &channel, float &vol)
+{
+ if (vol > 1.0) vol = 1.0;
+ if (vol < 0) vol = 0.0;
+
+ if (!m_hCaptureMixer)
+ return false;
+
+ if (m_CaptureChannels2ID.contains(channel) && m_hCaptureMixer) {
+ AlsaMixerElement sid = m_CaptureChannels2ID[channel];
+ snd_mixer_elem_t *elem = snd_mixer_find_selem(m_hCaptureMixer, sid);
+ if (elem) {
+ long min = 0;
+ long max = 0;
+ snd_mixer_selem_get_capture_volume_range(elem, &min, &max);
+ if (min != max) {
+ long val = (int)rint(min + (max - min) * vol);
+ vol = (float)(val - min) / (float)(max - min);
+ if (snd_mixer_selem_set_capture_volume_all(elem, val) == 0) {
+ return true;
+ }
+ }
+ }
+ }
+ logError("AlsaSound::writeCaptureMixerVolume: " +
+ i18n("error while writing volume %1 to hwplug:%2,%3")
+ .arg(vol)
+ .arg(m_CaptureCard)
+ .arg(m_CaptureDevice));
+ return false;
+}
+
+
+bool AlsaSoundDevice::writeCaptureMixerSwitch (const QString &channel, bool capture)
+{
+ if (!m_hCaptureMixer)
+ return false;
+
+ if (m_CaptureChannelsSwitch2ID.contains(channel) && m_hCaptureMixer) {
+ AlsaMixerElement sid = m_CaptureChannelsSwitch2ID[channel];
+ snd_mixer_elem_t *elem = snd_mixer_find_selem(m_hCaptureMixer, sid);
+ if (elem) {
+ if (snd_mixer_selem_set_capture_switch_all(elem, capture) == 0) {
+ return true;
+ }
+ }
+ }
+ logError("AlsaSound::writeCaptureMixerSwitch: " +
+ i18n("error while setting capture switch %1 for hwplug:%2,%3")
+ .arg(channel)
+ .arg(m_CaptureCard)
+ .arg(m_CaptureDevice));
+ return false;
+}
+
+
+void AlsaSoundDevice::selectCaptureChannel (const QString &channel)
+{
+ writeCaptureMixerSwitch(channel, true);
+
+ const QString ADC = "ADC";
+ if (m_CaptureChannels2ID.contains(ADC)) {
+ float v = readCaptureMixerVolume(ADC);
+ if (rint(v*100) == 0) {
+ float tmp_vol = 1.0;
+ writeCaptureMixerVolume(ADC, tmp_vol);
+ }
+ }
+ const QString Digital = "Digital";
+ if (m_CaptureChannels2ID.contains(Digital)) {
+ float v = readCaptureMixerVolume(Digital);
+ if (rint(v*100) == 0) {
+ float tmp_vol = 1.0;
+ writeCaptureMixerVolume(Digital, tmp_vol);
+ }
+ }
+ const QString WAVE = "Wave";
+ if (m_CaptureChannels2ID.contains(WAVE)) {
+ float x = 0;
+ writeCaptureMixerVolume(WAVE, x);
+ }
+ const QString Capture = "Capture";
+ if (m_CaptureChannelsSwitch2ID.contains(Capture)) {
+ writeCaptureMixerSwitch(Capture, true);
+ }
+
+ for (QMapConstIterator<QString, AlsaConfigMixerSetting> it = m_CaptureMixerSettings.begin(); it != m_CaptureMixerSettings.end(); ++it) {
+ const AlsaConfigMixerSetting &s = *it;
+ if (s.m_card == m_CaptureCard && s.m_use) {
+ float vol = s.m_volume;
+ if (m_CaptureChannels2ID.contains(s.m_name))
+ writeCaptureMixerVolume(s.m_name, vol);
+ if (m_CaptureChannelsSwitch2ID.contains(s.m_name))
+ writeCaptureMixerSwitch(s.m_name, s.m_active);
+ }
+ }
+}
+
+
+void AlsaSoundDevice::setHWBufferSize(int s)
+{
+ m_HWBufferSize = s;
+}
+
+
+void AlsaSoundDevice::setBufferSize(int s)
+{
+ m_BufferSize = s;
+ m_PlaybackBuffer.resize(m_BufferSize);
+ m_CaptureBuffer.resize(m_BufferSize);
+}
+
+
+void AlsaSoundDevice::enablePlayback(bool on)
+{
+ m_EnablePlayback = on;
+}
+
+
+void AlsaSoundDevice::enableCapture(bool on)
+{
+ m_EnableCapture = on;
+}
+
+
+void AlsaSoundDevice::setPlaybackDevice(int card, int dev)
+{
+ if (m_PlaybackCard == card && m_PlaybackDevice == dev)
+ return;
+
+ m_PlaybackCard = card;
+ m_PlaybackDevice = dev;
+ SoundFormat f = m_PlaybackFormat;
+ if (m_hPlayback)
+ openPlaybackDevice(f, /* reopen = */ true);
+ if (m_hPlaybackMixer)
+ openPlaybackMixerDevice(/* reopen = */ true);
+
+ getPlaybackMixerChannels(m_PlaybackCard,
+ m_hPlaybackMixer,
+ m_PlaybackChannels, m_PlaybackChannels2ID);
+ notifyPlaybackChannelsChanged(m_SoundStreamClientID, m_PlaybackChannels);
+}
+
+
+void AlsaSoundDevice::setCaptureDevice(int card, int dev)
+{
+// logDebug("AlsaSoundDevice::setCaptureDevice-1: m_CaptureCard == " + QString::number(m_CaptureCard) + ", card == " + QString::number(card));
+ if (m_CaptureCard == card && m_CaptureDevice == dev)
+ return;
+// logDebug("AlsaSoundDevice::setCaptureDevice-2: m_CaptureCard == " + QString::number(m_CaptureCard) + ", card == " + QString::number(card));
+
+ m_CaptureCard = card;
+ m_CaptureDevice = dev;
+ SoundFormat f = m_CaptureFormat;
+ if (m_hCapture)
+ openCaptureDevice(f, /* reopen = */ true);
+ if (m_hCaptureMixer)
+ openCaptureMixerDevice(/* reopen = */ true);
+
+ getCaptureMixerChannels(m_CaptureCard,
+ m_hCaptureMixer,
+ m_CaptureChannels, m_CaptureChannels2ID, m_CaptureChannelsSwitch, m_CaptureChannelsSwitch2ID);
+ notifyCaptureChannelsChanged(m_SoundStreamClientID, m_CaptureChannels);
+}
+
+
+QString AlsaSoundDevice::getSoundStreamClientDescription() const
+{
+ return i18n("ALSA Sound Device %1").arg(PluginBase::name());
+}
+
+
+bool AlsaSoundDevice::mute (SoundStreamID id, bool mute)
+{
+ if (id.isValid() && (m_PlaybackStreamID == id || m_PassivePlaybackStreams.contains(id))) {
+ SoundStreamConfig &cfg = m_PlaybackStreams[id];
+ if (mute != cfg.m_Muted) {
+ if (writePlaybackMixerVolume(cfg.m_Channel, cfg.m_Volume, cfg.m_Muted = mute)) {
+ notifyMuted(id, cfg.m_Muted);
+ }
+ }
+ return true;
+ }
+ return false;
+}
+
+bool AlsaSoundDevice::unmute (SoundStreamID id, bool unmute)
+{
+ if (id.isValid() && (m_PlaybackStreamID == id || m_PassivePlaybackStreams.contains(id))) {
+ SoundStreamConfig &cfg = m_PlaybackStreams[id];
+ bool mute = !unmute;
+ if (mute != cfg.m_Muted) {
+ if (writePlaybackMixerVolume(cfg.m_Channel, cfg.m_Volume, cfg.m_Muted = mute)) {
+ notifyMuted(id, cfg.m_Muted);
+ }
+ }
+ return true;
+ }
+ return false;
+}
+
+bool AlsaSoundDevice::isMuted(SoundStreamID id, bool &m) const
+{
+ if (id.isValid() && (m_PlaybackStreamID == id || m_PassivePlaybackStreams.contains(id))) {
+ const SoundStreamConfig &cfg = m_PlaybackStreams[id];
+ m = cfg.m_Muted;
+ return true;
+ }
+ return false;
+}
+
+
+void AlsaSoundDevice::setCaptureMixerSettings(const QMap<QString, AlsaConfigMixerSetting> &map)
+{
+ m_CaptureMixerSettings = map;
+}
+
+
+
+// bool AlsaSoundDevice::event(QEvent *_e)
+// {
+// bool retval = false;
+//
+// switch (_e->type()) {
+//
+// case CaptureTerminated :
+// retval = true;
+// break;
+//
+// case CaptureStep :
+//
+// slotPollCapture();
+//
+// retval = true;
+// break;
+//
+// case CaptureError :
+// case CaptureWarning :
+// case CaptureInfo :
+// case CaptureDebug :
+// if (m_captureThread) {
+// AlsaCaptureEvent *e = static_cast<AlsaCaptureEvent*>(_e);
+// QString msg = i18n("ALSA Plugin, device plughw:%1,%2: %3")
+// .arg(m_CaptureCard)
+// .arg(m_CaptureDevice)
+// .arg(e->message());
+// switch (_e->type()) {
+// case CaptureError :
+// logError(msg);
+// m_captureThread->resetError();
+// break;
+// case CaptureWarning :
+// logWarning(msg);
+// break;
+// case CaptureInfo :
+// logInfo(msg);
+// break;
+// case CaptureDebug :
+// logDebug(msg);
+// break;
+// default:
+// break;
+// }
+// }
+// retval = true;
+// break;
+//
+// default:
+// retval = QObject::event(_e);
+// break;
+// }
+//
+// return retval;
+// }
+
+
+
+
+
+
+
+
+#include "alsa-sound.moc"
diff --git a/kradio3/plugins/alsa-sound/alsa-sound.h b/kradio3/plugins/alsa-sound/alsa-sound.h
new file mode 100644
index 0000000..93a9fc8
--- /dev/null
+++ b/kradio3/plugins/alsa-sound/alsa-sound.h
@@ -0,0 +1,296 @@
+/***************************************************************************
+ alsa-sound.h - description
+ -------------------
+ begin : Thu May 26 2005
+ copyright : (C) 2005 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef _KRADIO_ALSA_SOUND_H
+#define _KRADIO_ALSA_SOUND_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "../../src/include/ringbuffer.h"
+#include "../../src/include/plugins.h"
+#include "../../src/include/soundstreamclient_interfaces.h"
+
+#include "alsa-config-mixer-setting.h"
+
+#include <qobject.h>
+#include <qtimer.h>
+#include <alsa/asoundlib.h>
+
+enum DUPLEX_MODE { DUPLEX_UNKNOWN, DUPLEX_FULL, DUPLEX_HALF };
+
+
+struct SoundStreamConfig
+{
+ SoundStreamConfig()
+ : m_ActiveMode(false),
+ m_Channel(QString::null),
+ m_Volume(-1),
+ m_Muted(false)
+ {}
+
+ SoundStreamConfig(const QString &_channel, bool active_mode = true)
+ : m_ActiveMode(active_mode),
+ m_Channel(_channel),
+ m_Volume(-1),
+ m_Muted(false)
+ {}
+
+ SoundStreamConfig(const SoundStreamConfig &c)
+ : m_ActiveMode(c.m_ActiveMode),
+ m_Channel(c.m_Channel),
+ m_Volume(c.m_Volume),
+ m_Muted(c.m_Muted)
+ {}
+
+ bool m_ActiveMode;
+ QString m_Channel;
+ float m_Volume;
+ bool m_Muted;
+};
+
+
+class AlsaCaptureThread;
+
+class AlsaMixerElement
+{
+public:
+ AlsaMixerElement() { snd_mixer_selem_id_malloc(&m_ID); }
+ AlsaMixerElement(snd_mixer_selem_id_t *id) { snd_mixer_selem_id_malloc(&m_ID); snd_mixer_selem_id_copy(m_ID, id) ; }
+ AlsaMixerElement(const AlsaMixerElement &x) { snd_mixer_selem_id_malloc(&m_ID); snd_mixer_selem_id_copy(m_ID, x.m_ID); }
+ ~AlsaMixerElement() { snd_mixer_selem_id_free (m_ID); }
+
+ operator snd_mixer_selem_id_t *&() { return m_ID; }
+
+ AlsaMixerElement &operator = (const AlsaMixerElement &x) { snd_mixer_selem_id_copy(m_ID, x.m_ID); return *this; }
+
+protected:
+ snd_mixer_selem_id_t *m_ID;
+};
+
+
+class AlsaSoundDevice : public QObject,
+ public PluginBase,
+ public ISoundStreamClient
+{
+Q_OBJECT
+
+public:
+ AlsaSoundDevice (const QString &name);
+ virtual ~AlsaSoundDevice ();
+
+ virtual bool connectI(Interface *i);
+ virtual bool disconnectI(Interface *i);
+
+ // PluginBase
+
+public:
+ virtual void saveState (KConfig *) const;
+ virtual void restoreState (KConfig *);
+
+ virtual QString pluginClassName() const { return "AlsaSoundDevice"; }
+
+ virtual const QString &name() const { return PluginBase::name(); }
+ virtual QString &name() { return PluginBase::name(); }
+
+ virtual ConfigPageInfo createConfigurationPage();
+ virtual AboutPageInfo createAboutPage();
+
+ // ISoundStreamClient: direct device access
+
+RECEIVERS:
+ void noticeConnectedI (ISoundStreamServer *s, bool pointer_valid);
+ bool preparePlayback(SoundStreamID id, const QString &channel, bool active_mode, bool start_immediately);
+ bool prepareCapture(SoundStreamID id, const QString &channel);
+ bool releasePlayback(SoundStreamID id);
+ bool releaseCapture(SoundStreamID id);
+
+ANSWERS:
+ bool supportsPlayback() const;
+ bool supportsCapture() const;
+
+ QString getSoundStreamClientDescription() const;
+
+ // ISoundStreamClient: mixer access
+
+public:
+ static
+ void getPlaybackMixerChannels(int card, snd_mixer_t *mixer_handle,
+ QStringList &retval, QMap<QString, AlsaMixerElement> &int2id);
+ static
+ void getCaptureMixerChannels (int card, snd_mixer_t *mixer_handle,
+ QStringList &vol_list, QMap<QString, AlsaMixerElement> &vol_ch2id,
+ QStringList &sw_list, QMap<QString, AlsaMixerElement> &sw_ch2id,
+ QStringList *all_list = NULL);
+
+ANSWERS:
+ const QStringList &getPlaybackChannels() const;
+ const QStringList &getCaptureChannels() const;
+
+RECEIVERS:
+ bool setPlaybackVolume(SoundStreamID id, float volume);
+ bool setCaptureVolume(SoundStreamID id, float volume);
+ bool getPlaybackVolume(SoundStreamID id, float &volume) const;
+ bool getCaptureVolume(SoundStreamID id, float &volume) const;
+
+ bool mute (SoundStreamID id, bool mute);
+ bool unmute (SoundStreamID id, bool unmute);
+ bool isMuted(SoundStreamID id, bool &m) const;
+
+
+ // ISoundStreamClient: generic broadcasts
+
+RECEIVERS:
+ bool startPlayback(SoundStreamID id);
+ bool pausePlayback(SoundStreamID id);
+ bool stopPlayback(SoundStreamID id);
+ bool isPlaybackRunning(SoundStreamID id, bool &b) const;
+
+ bool startCaptureWithFormat(SoundStreamID id,
+ const SoundFormat &proposed_format,
+ SoundFormat &real_format,
+ bool force_format);
+ bool stopCapture(SoundStreamID id);
+ bool isCaptureRunning(SoundStreamID id, bool &b, SoundFormat &sf) const;
+
+ bool noticeSoundStreamClosed(SoundStreamID id);
+ bool noticeSoundStreamRedirected(SoundStreamID oldID, SoundStreamID newID);
+
+ bool noticeSoundStreamData(SoundStreamID id,
+ const SoundFormat &,
+ const char *data, size_t size, size_t &consumed_size,
+ const SoundMetaData &md
+ );
+
+
+ // Config Access
+
+ int getHWBufferSize() const { return m_HWBufferSize; }
+ int getBufferSize() const { return m_BufferSize; }
+ bool isPlaybackEnabled() const { return m_EnablePlayback; }
+ bool isCaptureEnabled() const { return m_EnableCapture; }
+ int getPlaybackCard() const { return m_PlaybackCard; }
+ int getPlaybackDevice() const { return m_PlaybackDevice; }
+ int getCaptureCard() const { return m_CaptureCard; }
+ int getCaptureDevice() const { return m_CaptureDevice; }
+ const QMap<QString, AlsaConfigMixerSetting> &
+ getCaptureMixerSettings() const { return m_CaptureMixerSettings; }
+
+ void setHWBufferSize(int s);
+ void setBufferSize(int s);
+ void enablePlayback(bool on);
+ void enableCapture(bool on);
+ void setPlaybackDevice(int card, int device);
+ void setCaptureDevice(int card, int device);
+ void setCaptureMixerSettings(const QMap<QString, AlsaConfigMixerSetting> &map);
+
+protected slots:
+
+ void slotPollPlayback();
+ void slotPollCapture();
+
+signals:
+
+ void sigUpdateConfig();
+
+protected:
+// bool event(QEvent *_e);
+
+ bool openAlsaDevice(snd_pcm_t *&alsa_handle, SoundFormat &format, const char *pcm_name, snd_pcm_stream_t stream, int flags, unsigned &latency);
+
+ bool openPlaybackDevice (const SoundFormat &format, bool reopen = false);
+ bool openCaptureDevice (const SoundFormat &format, bool reopen = false);
+ bool closePlaybackDevice(bool force = false);
+ bool closeCaptureDevice (bool force = false);
+
+ bool openPlaybackMixerDevice (bool reopen = false);
+ bool openCaptureMixerDevice (bool reopen = false);
+ static bool openMixerDevice(snd_mixer_t *&mixer_handle, int card, bool reopen, QTimer *timer, int timer_latency);
+ bool closeCaptureMixerDevice (bool force = false);
+ bool closePlaybackMixerDevice(bool force = false);
+ static bool closeMixerDevice(snd_mixer_t *&mixer_handle, int card, SoundStreamID id, snd_pcm_t *pcm_handle, bool force, QTimer *timer);
+
+ void checkMixerVolume(SoundStreamID id);
+ float readPlaybackMixerVolume(const QString &channel, bool &muted) const;
+ float readCaptureMixerVolume(const QString &channel) const;
+ bool writePlaybackMixerVolume(const QString &channel, float &vol, bool muted);
+ bool writeCaptureMixerVolume(const QString &channel, float &vol);
+ bool writeCaptureMixerSwitch(const QString &channel, bool capture);
+
+ void selectCaptureChannel (const QString &channel);
+
+ /* ALSA HANDLES */
+ snd_pcm_t *m_hPlayback;
+ snd_pcm_t *m_hCapture;
+ snd_mixer_t *m_hPlaybackMixer;
+ snd_mixer_t *m_hCaptureMixer;
+
+ SoundFormat m_PlaybackFormat;
+ SoundFormat m_CaptureFormat;
+ int m_PlaybackCard;
+ int m_PlaybackDevice;
+ int m_CaptureCard;
+ int m_CaptureDevice;
+
+ unsigned m_PlaybackLatency;
+ unsigned m_CaptureLatency;
+
+ QStringList m_PlaybackChannels,
+ m_CaptureChannels,
+ m_CaptureChannelsSwitch;
+
+ QMap<QString, AlsaMixerElement> m_PlaybackChannels2ID,
+ m_CaptureChannels2ID,
+ m_CaptureChannelsSwitch2ID;
+
+ QMap<SoundStreamID, SoundStreamConfig>
+ m_PlaybackStreams,
+ m_CaptureStreams;
+
+ QValueList<SoundStreamID>
+ m_PassivePlaybackStreams;
+ SoundStreamID m_PlaybackStreamID,
+ m_CaptureStreamID;
+
+ size_t m_HWBufferSize;
+ size_t m_BufferSize;
+ RingBuffer m_PlaybackBuffer,
+ m_CaptureBuffer;
+
+ unsigned m_CaptureRequestCounter;
+ Q_UINT64 m_CapturePos;
+ time_t m_CaptureStartTime;
+
+ size_t //m_PlaybackSkipCount,
+ m_CaptureSkipCount;
+
+ bool m_EnablePlayback,
+ m_EnableCapture;
+
+ QTimer m_PlaybackPollingTimer;
+ QTimer m_CapturePollingTimer;
+
+// AlsaCaptureThread *m_captureThread;
+
+ QMap<QString, AlsaConfigMixerSetting> m_CaptureMixerSettings;
+
+};
+
+
+
+#endif
diff --git a/kradio3/plugins/alsa-sound/icons/Makefile.am b/kradio3/plugins/alsa-sound/icons/Makefile.am
new file mode 100644
index 0000000..b3f2583
--- /dev/null
+++ b/kradio3/plugins/alsa-sound/icons/Makefile.am
@@ -0,0 +1,2 @@
+icons_ICON = AUTO
+iconsdir = $(kde_datadir)/kradio/icons
diff --git a/kradio3/plugins/alsa-sound/icons/hi16-action-kradio_alsa.png b/kradio3/plugins/alsa-sound/icons/hi16-action-kradio_alsa.png
new file mode 100644
index 0000000..a25cfd2
--- /dev/null
+++ b/kradio3/plugins/alsa-sound/icons/hi16-action-kradio_alsa.png
Binary files differ
diff --git a/kradio3/plugins/alsa-sound/icons/hi16-action-kradio_alsa2.png b/kradio3/plugins/alsa-sound/icons/hi16-action-kradio_alsa2.png
new file mode 100644
index 0000000..479a6cc
--- /dev/null
+++ b/kradio3/plugins/alsa-sound/icons/hi16-action-kradio_alsa2.png
Binary files differ
diff --git a/kradio3/plugins/alsa-sound/icons/hi22-action-kradio_alsa.png b/kradio3/plugins/alsa-sound/icons/hi22-action-kradio_alsa.png
new file mode 100644
index 0000000..796b052
--- /dev/null
+++ b/kradio3/plugins/alsa-sound/icons/hi22-action-kradio_alsa.png
Binary files differ
diff --git a/kradio3/plugins/alsa-sound/icons/hi22-action-kradio_alsa2.png b/kradio3/plugins/alsa-sound/icons/hi22-action-kradio_alsa2.png
new file mode 100644
index 0000000..5e6cc22
--- /dev/null
+++ b/kradio3/plugins/alsa-sound/icons/hi22-action-kradio_alsa2.png
Binary files differ
diff --git a/kradio3/plugins/alsa-sound/icons/hi32-action-kradio_alsa.png b/kradio3/plugins/alsa-sound/icons/hi32-action-kradio_alsa.png
new file mode 100644
index 0000000..d1deb5d
--- /dev/null
+++ b/kradio3/plugins/alsa-sound/icons/hi32-action-kradio_alsa.png
Binary files differ
diff --git a/kradio3/plugins/alsa-sound/icons/hi32-action-kradio_alsa2.png b/kradio3/plugins/alsa-sound/icons/hi32-action-kradio_alsa2.png
new file mode 100644
index 0000000..a849948
--- /dev/null
+++ b/kradio3/plugins/alsa-sound/icons/hi32-action-kradio_alsa2.png
Binary files differ
diff --git a/kradio3/plugins/alsa-sound/icons/hi48-action-kradio_alsa.png b/kradio3/plugins/alsa-sound/icons/hi48-action-kradio_alsa.png
new file mode 100644
index 0000000..aa89348
--- /dev/null
+++ b/kradio3/plugins/alsa-sound/icons/hi48-action-kradio_alsa.png
Binary files differ
diff --git a/kradio3/plugins/alsa-sound/icons/hi48-action-kradio_alsa2.png b/kradio3/plugins/alsa-sound/icons/hi48-action-kradio_alsa2.png
new file mode 100644
index 0000000..802f64f
--- /dev/null
+++ b/kradio3/plugins/alsa-sound/icons/hi48-action-kradio_alsa2.png
Binary files differ
diff --git a/kradio3/plugins/alsa-sound/icons/hi64-action-kradio_alsa.png b/kradio3/plugins/alsa-sound/icons/hi64-action-kradio_alsa.png
new file mode 100644
index 0000000..fef1ba3
--- /dev/null
+++ b/kradio3/plugins/alsa-sound/icons/hi64-action-kradio_alsa.png
Binary files differ
diff --git a/kradio3/plugins/alsa-sound/icons/hi64-action-kradio_alsa2.png b/kradio3/plugins/alsa-sound/icons/hi64-action-kradio_alsa2.png
new file mode 100644
index 0000000..1489f65
--- /dev/null
+++ b/kradio3/plugins/alsa-sound/icons/hi64-action-kradio_alsa2.png
Binary files differ
diff --git a/kradio3/plugins/alsa-sound/icons/kradio_alsa.png b/kradio3/plugins/alsa-sound/icons/kradio_alsa.png
new file mode 100644
index 0000000..11b3ce4
--- /dev/null
+++ b/kradio3/plugins/alsa-sound/icons/kradio_alsa.png
Binary files differ
diff --git a/kradio3/plugins/alsa-sound/icons/kradio_alsa2.png b/kradio3/plugins/alsa-sound/icons/kradio_alsa2.png
new file mode 100644
index 0000000..82d97c0
--- /dev/null
+++ b/kradio3/plugins/alsa-sound/icons/kradio_alsa2.png
Binary files differ
diff --git a/kradio3/plugins/alsa-sound/po/Makefile.am b/kradio3/plugins/alsa-sound/po/Makefile.am
new file mode 100644
index 0000000..9de3420
--- /dev/null
+++ b/kradio3/plugins/alsa-sound/po/Makefile.am
@@ -0,0 +1,3 @@
+
+PACKAGE = kradio-alsa-sound
+POFILES = AUTO
diff --git a/kradio3/plugins/alsa-sound/po/de.po b/kradio3/plugins/alsa-sound/po/de.po
new file mode 100644
index 0000000..9c47ebc
--- /dev/null
+++ b/kradio3/plugins/alsa-sound/po/de.po
@@ -0,0 +1,289 @@
+# translation of de.po to
+# translation of kradio-alsa-sound.po to
+# This file is put in the public domain.
+#
+# Ernst Martin Witte <emw@nocabal.de>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-12 18:41+0100\n"
+"PO-Revision-Date: 2006-11-12 18:23+0100\n"
+"Last-Translator: Ernst Martin Witte <emw@nocabal.de>\n"
+"Language-Team: <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. i18n: file alsa-mixer-element-ui.ui line 16
+#: rc.cpp:3 rc.cpp:70 alsa-mixer-element-ui.cpp:104
+#, no-c-format
+msgid "Form1"
+msgstr "Form1"
+
+#. i18n: file alsa-mixer-element-ui.ui line 210
+#: rc.cpp:6 rc.cpp:73 alsa-mixer-element-ui.cpp:105
+#, no-c-format
+msgid "O&n"
+msgstr "A&n"
+
+#. i18n: file alsa-mixer-element-ui.ui line 213
+#: rc.cpp:9 rc.cpp:76 alsa-mixer-element-ui.cpp:106
+#, no-c-format
+msgid "Alt+N"
+msgstr "Alt+N"
+
+#. i18n: file alsa-mixer-element-ui.ui line 221
+#: rc.cpp:12 rc.cpp:79 alsa-mixer-element-ui.cpp:107
+#, no-c-format
+msgid "&Use"
+msgstr "&Verwenden"
+
+#. i18n: file alsa-mixer-element-ui.ui line 224
+#: rc.cpp:15 rc.cpp:82 alsa-mixer-element-ui.cpp:108
+#, no-c-format
+msgid "Alt+U"
+msgstr "Alt+U"
+
+#. i18n: file alsa-mixer-element-ui.ui line 256
+#: rc.cpp:18 rc.cpp:85 alsa-mixer-element-ui.cpp:109
+#, no-c-format
+msgid "MixerName"
+msgstr "MixerName"
+
+#. i18n: file alsa-sound-configuration-ui.ui line 16
+#: rc.cpp:21 rc.cpp:88 alsa-sound-configuration-ui.cpp:152
+#, no-c-format
+msgid "AlsaSoundConfigurationUI"
+msgstr "AlsaSoundConfigurationUI"
+
+#. i18n: file alsa-sound-configuration-ui.ui line 34
+#: rc.cpp:24 rc.cpp:91 alsa-sound-configuration-ui.cpp:161
+#, no-c-format
+msgid "Devices"
+msgstr "Geräte"
+
+#. i18n: file alsa-sound-configuration-ui.ui line 73
+#: rc.cpp:27 rc.cpp:94 alsa-sound-configuration-ui.cpp:153
+#, no-c-format
+msgid "PCM Capture Card"
+msgstr "Soundkarte für die Aufnahme"
+
+#. i18n: file alsa-sound-configuration-ui.ui line 94
+#: rc.cpp:30 rc.cpp:97 alsa-sound-configuration-ui.cpp:154
+#, no-c-format
+msgid "Hardware Buffer Size"
+msgstr "Hardware-Puffergröße"
+
+#. i18n: file alsa-sound-configuration-ui.ui line 123
+#. i18n: file alsa-sound-configuration-ui.ui line 145
+#. i18n: file alsa-sound-configuration-ui.ui line 123
+#. i18n: file alsa-sound-configuration-ui.ui line 145
+#: rc.cpp:33 rc.cpp:36 rc.cpp:100 rc.cpp:103
+#: alsa-sound-configuration-ui.cpp:155 alsa-sound-configuration-ui.cpp:156
+#, no-c-format
+msgid " kB"
+msgstr " kB"
+
+#. i18n: file alsa-sound-configuration-ui.ui line 172
+#: rc.cpp:39 rc.cpp:106 alsa-sound-configuration-ui.cpp:157
+#, no-c-format
+msgid "Buffer Size"
+msgstr "Puffergröße"
+
+#. i18n: file alsa-sound-configuration-ui.ui line 193
+#: rc.cpp:42 rc.cpp:109 alsa-sound-configuration-ui.cpp:158
+#, no-c-format
+msgid "PCM Playback Device"
+msgstr "Gerät für die Wiedergabe"
+
+#. i18n: file alsa-sound-configuration-ui.ui line 201
+#: rc.cpp:45 rc.cpp:112 alsa-sound-configuration-ui.cpp:159
+#, no-c-format
+msgid "PCM Capture Device"
+msgstr "Gerät für die Aufnahme"
+
+#. i18n: file alsa-sound-configuration-ui.ui line 209
+#: rc.cpp:48 rc.cpp:115 alsa-sound-configuration-ui.cpp:160
+#, no-c-format
+msgid "PCM Playback Card"
+msgstr "Soundkarte für die Wiedergabe"
+
+#. i18n: file alsa-sound-configuration-ui.ui line 221
+#: rc.cpp:51 rc.cpp:118 alsa-sound-configuration-ui.cpp:166
+#, no-c-format
+msgid "E&xtended Options"
+msgstr "Erweiterte Optionen"
+
+#. i18n: file alsa-sound-configuration-ui.ui line 235
+#: rc.cpp:54 rc.cpp:121 alsa-sound-configuration-ui.cpp:162
+#, no-c-format
+msgid "Disable Pla&yback"
+msgstr "Wiedergabe abschalten"
+
+#. i18n: file alsa-sound-configuration-ui.ui line 238
+#: rc.cpp:57 rc.cpp:124 alsa-sound-configuration-ui.cpp:163
+#, no-c-format
+msgid "Alt+Y"
+msgstr "Alt+Y"
+
+#. i18n: file alsa-sound-configuration-ui.ui line 246
+#: rc.cpp:60 rc.cpp:127 alsa-sound-configuration-ui.cpp:164
+#, no-c-format
+msgid "Disa&ble Capture"
+msgstr "Aufnahme abschalten"
+
+#. i18n: file alsa-sound-configuration-ui.ui line 249
+#: rc.cpp:63 rc.cpp:130 alsa-sound-configuration-ui.cpp:165
+#, no-c-format
+msgid "Alt+B"
+msgstr "Alt+B"
+
+#. i18n: file alsa-sound-configuration-ui.ui line 276
+#: rc.cpp:66 rc.cpp:133 alsa-sound-configuration-ui.cpp:168
+#, no-c-format
+msgid "Capture Mixer Settings"
+msgstr "Mixereinstellungen für die Aufnahme"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Ernst Martin Witte"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "emw@nocabal.de"
+
+#: alsa-sound-configuration.cpp:258
+msgid "context-card-plus-device-number"
+msgstr "%1 Gerät %2"
+
+#: alsa-sound.cpp:40
+msgid "Advanced Linux Sound Architecture (ALSA) Support"
+msgstr "Unterstützung für die \"Advanced Linux Sound Architecture\" (ALSA)"
+
+#: alsa-sound.cpp:48
+msgid "KRadio ALSA Sound Plugin"
+msgstr "KRadio ALSA Sound Plugin"
+
+#: alsa-sound.cpp:196
+msgid "ALSA Sound"
+msgstr "ALSA Sound"
+
+#: alsa-sound.cpp:197
+msgid "ALSA Sound Device Options"
+msgstr "Optionen für die ALSA-Sound-Geräte"
+
+#: alsa-sound.cpp:553
+msgid "ALSA Plugin: cannot write data for device plughw:%1,%2"
+msgstr "ALSA Plugin: Das schreiben auf das Gerät plughw:%1,%2 schlug fehl"
+
+#: alsa-sound.cpp:558
+msgid "ALSA Plugin: buffer underrun for device plughw:%1,%2"
+msgstr "ALSA Plugin: Pufferunterlauf im Gerät plughw:%1,%2"
+
+#: alsa-sound.cpp:611
+msgid "ALSA Plugin: cannot read data from device plughw:%1,%2"
+msgstr "ALSA Plugin: Das Lesen vom Gerät plughw:%1,%2 schlug fehl"
+
+#: alsa-sound.cpp:616
+msgid ""
+"ALSA Plugin: buffer overrun for device plughw:%1,%2 (buffersize=%3, buffer=%"
+"4)"
+msgstr ""
+"ALSA Plugin: Pufferüberlauf im Gerät plughw:%1,%2 (Puffergröße=%3, buffer=%4)"
+
+#: alsa-sound.cpp:626
+msgid "internal stream, not stored (%1)"
+msgstr "interner, nicht aufgezeichneter Datenstrom (%1)"
+
+#: alsa-sound.cpp:736
+msgid "ALSA Plugin: Error opening PCM device %1"
+msgstr "ALSA Plugin: Fehler beim Öffnen des Gerätes %1"
+
+#: alsa-sound.cpp:741
+msgid "ALSA Plugin: Can not configure PCM device %1"
+msgstr "ALSA Plugin: Das Konfigurieren des Gerätes %1 schlug fehl"
+
+#: alsa-sound.cpp:748
+msgid "ALSA Plugin: Error setting access for %1"
+msgstr "ALSA Plugin: Fehler beim Konfigurieren des Zugriffsmodus auf Gerät %1"
+
+#: alsa-sound.cpp:758
+msgid "ALSA Plugin: Error setting sample format for %1"
+msgstr "ALSA Plugin: Fehler beim Einstellen des Abtastformats für Gerät %1"
+
+#: alsa-sound.cpp:764
+msgid "ALSA Plugin: Error setting channels for %1"
+msgstr "ALSA Plugin: Fehler beim Einstellen der Kanäle für Gerät %1"
+
+#: alsa-sound.cpp:771
+msgid "ALSA Plugin: Error setting rate for %1"
+msgstr "ALSA Plugin: Fehler beim Einstellen der Abtastrate für Gerät %1"
+
+#: alsa-sound.cpp:775
+msgid ""
+"ALSA Plugin: The rate %1 Hz is not supported by your hardware %2. Using %3 "
+"Hz instead"
+msgstr ""
+"ALSA Plugin: Die Abtastrate von %1 Hz wird von Ihrer Soundkarte %2 nicht "
+"unterstützt. Es werden stattdessen %3 Hz verwendet"
+
+#: alsa-sound.cpp:781
+msgid "ALSA Plugin: Error setting period size for %1"
+msgstr ""
+"ALSA Plugin: Fehler beim Einstellen der Puffer-Periodengröße für Gerät %1"
+
+#: alsa-sound.cpp:817
+msgid "ALSA Plugin: Error setting HW params"
+msgstr "ALSA Plugin: Fehler beim Einstellen der Hardwareparameter"
+
+#: alsa-sound.cpp:822
+msgid "ALSA Plugin: Error getting period size for %1"
+msgstr "ALSA Plugin: Fehler beim Lesen der Puffer-Periodengröße von Gerät %1"
+
+#: alsa-sound.cpp:920
+msgid "ALSA Plugin: Error opening mixer"
+msgstr "ALSA Plugin: Fehler beim Öffnen des Mixers"
+
+#: alsa-sound.cpp:927
+msgid "ALSA Plugin: ERROR: snd_mixer_attach for card %1"
+msgstr "ALSA Plugin: Fehler in Funktion snd_mixer_attach bei Soundkarte %1"
+
+#: alsa-sound.cpp:934
+msgid "ALSA Plugin: Error: snd_mixer_selem_register for card %1"
+msgstr ""
+"ALSA Plugin: Fehler in Funktion snd_mixer_selem_register bei Soundkarte %1"
+
+#: alsa-sound.cpp:938
+msgid "ALSA Plugin: Error: snd_mixer_load for card %1"
+msgstr "ALSA Plugin: Fehler in Funktion snd_mixer_load bei Soundkarte %1"
+
+#: alsa-sound.cpp:1006
+msgid "context-mixername-number"
+msgstr "%1 - %2"
+
+#: alsa-sound.cpp:1053
+msgid "context-mixerelement-name-number"
+msgstr "%1 - %2"
+
+#: alsa-sound.cpp:1206 alsa-sound.cpp:1236
+msgid "error while reading volume from hwplug:%1,%2"
+msgstr "Fehler beim Lesen der Lautstärke von Gerät hwplug:%1,%2"
+
+#: alsa-sound.cpp:1269 alsa-sound.cpp:1304
+msgid "error while writing volume %1 to hwplug:%2,%3"
+msgstr "Fehler beim Setzen der Lautstärke von Gerät hwplug:%1,%2"
+
+#: alsa-sound.cpp:1327
+msgid "error while setting capture switch %1 for hwplug:%2,%3"
+msgstr ""
+"Fehler beim Einstellen des Aufnahmeauswahlschalters %1 für Gerät hwplug:%2,%3"
+
+#: alsa-sound.cpp:1448
+msgid "ALSA Sound Device %1"
+msgstr "ALSA Soundkarte %1"
diff --git a/kradio3/plugins/alsa-sound/po/ru.po b/kradio3/plugins/alsa-sound/po/ru.po
new file mode 100644
index 0000000..afdd1cc
--- /dev/null
+++ b/kradio3/plugins/alsa-sound/po/ru.po
@@ -0,0 +1,288 @@
+# translation of ru.po to
+# translation of kradio-alsa-sound.po to
+# This file is put in the public domain.
+# Алексей Кузнецов <Alexey.Kouznetsov@GMail.com>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-12 18:20+0100\n"
+"PO-Revision-Date: 2006-11-08 12:15+0300\n"
+"Last-Translator: Алексей Кузнецов <Alexey.Kouznetsov@GMail.com>\n"
+"Language-Team: <ru@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10\n"
+
+#. i18n: file alsa-mixer-element-ui.ui line 16
+#: rc.cpp:3 rc.cpp:70 alsa-mixer-element-ui.cpp:104
+#, no-c-format
+msgid "Form1"
+msgstr "Form1"
+
+#. i18n: file alsa-mixer-element-ui.ui line 210
+#: rc.cpp:6 rc.cpp:73 alsa-mixer-element-ui.cpp:105
+#, no-c-format
+msgid "O&n"
+msgstr "&Вкл."
+
+#. i18n: file alsa-mixer-element-ui.ui line 213
+#: rc.cpp:9 rc.cpp:76 alsa-mixer-element-ui.cpp:106
+#, no-c-format
+msgid "Alt+N"
+msgstr "Alt+N"
+
+#. i18n: file alsa-mixer-element-ui.ui line 221
+#: rc.cpp:12 rc.cpp:79 alsa-mixer-element-ui.cpp:107
+#, no-c-format
+msgid "&Use"
+msgstr "&Исп."
+
+#. i18n: file alsa-mixer-element-ui.ui line 224
+#: rc.cpp:15 rc.cpp:82 alsa-mixer-element-ui.cpp:108
+#, no-c-format
+msgid "Alt+U"
+msgstr "Alt+U"
+
+#. i18n: file alsa-mixer-element-ui.ui line 256
+#: rc.cpp:18 rc.cpp:85 alsa-mixer-element-ui.cpp:109
+#, no-c-format
+msgid "MixerName"
+msgstr ""
+
+#. i18n: file alsa-sound-configuration-ui.ui line 16
+#: rc.cpp:21 rc.cpp:88 alsa-sound-configuration-ui.cpp:152
+#, no-c-format
+msgid "AlsaSoundConfigurationUI"
+msgstr "AlsaSoundConfigurationUI"
+
+#. i18n: file alsa-sound-configuration-ui.ui line 34
+#: rc.cpp:24 rc.cpp:91 alsa-sound-configuration-ui.cpp:161
+#, no-c-format
+msgid "Devices"
+msgstr "Устройства"
+
+#. i18n: file alsa-sound-configuration-ui.ui line 73
+#: rc.cpp:27 rc.cpp:94 alsa-sound-configuration-ui.cpp:153
+#, no-c-format
+msgid "PCM Capture Card"
+msgstr "Плата для захвата"
+
+#. i18n: file alsa-sound-configuration-ui.ui line 94
+#: rc.cpp:30 rc.cpp:97 alsa-sound-configuration-ui.cpp:154
+#, no-c-format
+msgid "Hardware Buffer Size"
+msgstr "Аппаратный размер буфера"
+
+#. i18n: file alsa-sound-configuration-ui.ui line 123
+#. i18n: file alsa-sound-configuration-ui.ui line 145
+#. i18n: file alsa-sound-configuration-ui.ui line 123
+#. i18n: file alsa-sound-configuration-ui.ui line 145
+#: rc.cpp:33 rc.cpp:36 rc.cpp:100 rc.cpp:103
+#: alsa-sound-configuration-ui.cpp:155 alsa-sound-configuration-ui.cpp:156
+#, no-c-format
+msgid " kB"
+msgstr " кБ"
+
+#. i18n: file alsa-sound-configuration-ui.ui line 172
+#: rc.cpp:39 rc.cpp:106 alsa-sound-configuration-ui.cpp:157
+#, no-c-format
+msgid "Buffer Size"
+msgstr "Размер буфера"
+
+#. i18n: file alsa-sound-configuration-ui.ui line 193
+#: rc.cpp:42 rc.cpp:109 alsa-sound-configuration-ui.cpp:158
+#, no-c-format
+msgid "PCM Playback Device"
+msgstr "Устройство воспроизведения"
+
+#. i18n: file alsa-sound-configuration-ui.ui line 201
+#: rc.cpp:45 rc.cpp:112 alsa-sound-configuration-ui.cpp:159
+#, no-c-format
+msgid "PCM Capture Device"
+msgstr "Устройство записи"
+
+#. i18n: file alsa-sound-configuration-ui.ui line 209
+#: rc.cpp:48 rc.cpp:115 alsa-sound-configuration-ui.cpp:160
+#, no-c-format
+msgid "PCM Playback Card"
+msgstr "Плата для проигрывания"
+
+#. i18n: file alsa-sound-configuration-ui.ui line 221
+#: rc.cpp:51 rc.cpp:118 alsa-sound-configuration-ui.cpp:166
+#, no-c-format
+msgid "E&xtended Options"
+msgstr "&Дополнительные параметры"
+
+#. i18n: file alsa-sound-configuration-ui.ui line 235
+#: rc.cpp:54 rc.cpp:121 alsa-sound-configuration-ui.cpp:162
+#, no-c-format
+msgid "Disable Pla&yback"
+msgstr "Запретить &воспроизведение"
+
+#. i18n: file alsa-sound-configuration-ui.ui line 238
+#: rc.cpp:57 rc.cpp:124 alsa-sound-configuration-ui.cpp:163
+#, no-c-format
+msgid "Alt+Y"
+msgstr "Alt+Y"
+
+#. i18n: file alsa-sound-configuration-ui.ui line 246
+#: rc.cpp:60 rc.cpp:127 alsa-sound-configuration-ui.cpp:164
+#, no-c-format
+msgid "Disa&ble Capture"
+msgstr "Запретить &запись"
+
+#. i18n: file alsa-sound-configuration-ui.ui line 249
+#: rc.cpp:63 rc.cpp:130 alsa-sound-configuration-ui.cpp:165
+#, no-c-format
+msgid "Alt+B"
+msgstr "Alt+B"
+
+#. i18n: file alsa-sound-configuration-ui.ui line 276
+#: rc.cpp:66 rc.cpp:133 alsa-sound-configuration-ui.cpp:168
+#, no-c-format
+msgid "Capture Mixer Settings"
+msgstr "&Параметры микшера для записи"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Алексей Кузнецов"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "Alexey.Kouznetsov@GMail.com"
+
+#: alsa-sound-configuration.cpp:258
+msgid "context-card-plus-device-number"
+msgstr ""
+
+#: alsa-sound.cpp:40
+msgid "Advanced Linux Sound Architecture (ALSA) Support"
+msgstr "Поддержка Расширенной звуковой архитектуры Linux (ALSA)"
+
+#: alsa-sound.cpp:48
+msgid "KRadio ALSA Sound Plugin"
+msgstr "Модуль ALSA для KRadio"
+
+#: alsa-sound.cpp:196
+msgid "ALSA Sound"
+msgstr "ALSA"
+
+#: alsa-sound.cpp:197
+msgid "ALSA Sound Device Options"
+msgstr "Параметры звука для драйвера ALSA"
+
+#: alsa-sound.cpp:553
+msgid "ALSA Plugin: cannot write data for device plughw:%1,%2"
+msgstr "Модуль ALSA: не могу записать данные в устройство plughw:%1,%2"
+
+#: alsa-sound.cpp:558
+msgid "ALSA Plugin: buffer underrun for device plughw:%1,%2"
+msgstr "Модуль ALSA: нехватка данных в буфере устройства plughw:%1,%2"
+
+#: alsa-sound.cpp:611
+msgid "ALSA Plugin: cannot read data from device plughw:%1,%2"
+msgstr "Модуль ALSA: не могу прочесть данные с устройства plughw:%1,%2"
+
+#: alsa-sound.cpp:616
+msgid ""
+"ALSA Plugin: buffer overrun for device plughw:%1,%2 (buffersize=%3, buffer=%"
+"4)"
+msgstr ""
+"Модуль ALSA: переполнение буфера устройства plughw:%1,%2 (размер буфера=%3, "
+"буфер=%4)"
+
+#: alsa-sound.cpp:626
+msgid "internal stream, not stored (%1)"
+msgstr ""
+
+#: alsa-sound.cpp:736
+msgid "ALSA Plugin: Error opening PCM device %1"
+msgstr "Модуль ALSA: Ошибка при открытии устройства PCM: %1"
+
+#: alsa-sound.cpp:741
+msgid "ALSA Plugin: Can not configure PCM device %1"
+msgstr "Модуль ALSA: не могу настроить устройство PCM %1"
+
+#: alsa-sound.cpp:748
+msgid "ALSA Plugin: Error setting access for %1"
+msgstr ""
+
+#: alsa-sound.cpp:758
+msgid "ALSA Plugin: Error setting sample format for %1"
+msgstr "Модуль ALSA: ошибка при установке формата данных для %1"
+
+#: alsa-sound.cpp:764
+msgid "ALSA Plugin: Error setting channels for %1"
+msgstr "Модуль ALSA: ошибка при установке числа каналов для %1"
+
+#: alsa-sound.cpp:771
+msgid "ALSA Plugin: Error setting rate for %1"
+msgstr "Модуль ALSA: ошибка при установке частоты дискретизации для %1"
+
+#: alsa-sound.cpp:775
+msgid ""
+"ALSA Plugin: The rate %1 Hz is not supported by your hardware %2. Using %3 "
+"Hz instead"
+msgstr ""
+"Модуль ALSA: частота дискретизации %1 Гц не поддерживается Вашим "
+"оборудованием %2. Вместо неё использую %3 Гц."
+
+#: alsa-sound.cpp:781
+msgid "ALSA Plugin: Error setting period size for %1"
+msgstr ""
+
+#: alsa-sound.cpp:817
+msgid "ALSA Plugin: Error setting HW params"
+msgstr "Модуль ALSA: ошибка при установке параметров оборудоания"
+
+#: alsa-sound.cpp:822
+msgid "ALSA Plugin: Error getting period size for %1"
+msgstr ""
+
+#: alsa-sound.cpp:920
+msgid "ALSA Plugin: Error opening mixer"
+msgstr "Модуль ALSA: ошибка при открытии микшера"
+
+#: alsa-sound.cpp:927
+msgid "ALSA Plugin: ERROR: snd_mixer_attach for card %1"
+msgstr "Модуль ALSA: ошибка при вызове функции snd_mixer_attach для платы %1"
+
+#: alsa-sound.cpp:934
+msgid "ALSA Plugin: Error: snd_mixer_selem_register for card %1"
+msgstr ""
+"Модуль ALSA: ошибка при вызове функции snd_mixer_selem_register для платы %1"
+
+#: alsa-sound.cpp:938
+msgid "ALSA Plugin: Error: snd_mixer_load for card %1"
+msgstr "Модуль ALSA: ошибка при вызове функции snd_mixer_load для платы %1"
+
+#: alsa-sound.cpp:1006
+msgid "context-mixername-number"
+msgstr "context-mixername-number"
+
+#: alsa-sound.cpp:1053
+msgid "context-mixerelement-name-number"
+msgstr "context-mixerelement-name-number"
+
+#: alsa-sound.cpp:1206 alsa-sound.cpp:1236
+msgid "error while reading volume from hwplug:%1,%2"
+msgstr "Ошибка считывания громкости устройства hwplug:%1,%2"
+
+#: alsa-sound.cpp:1269 alsa-sound.cpp:1304
+msgid "error while writing volume %1 to hwplug:%2,%3"
+msgstr "Ошибка при записи громкости %1 в устройство hwplug:%2,%3"
+
+#: alsa-sound.cpp:1327
+msgid "error while setting capture switch %1 for hwplug:%2,%3"
+msgstr "Ошибка при установке флажка записи %1 для устройства hwplug:%2,%3"
+
+#: alsa-sound.cpp:1448
+msgid "ALSA Sound Device %1"
+msgstr "Устройство ALSA: %1"
diff --git a/kradio3/plugins/gui-docking-menu/Makefile.am b/kradio3/plugins/gui-docking-menu/Makefile.am
new file mode 100644
index 0000000..be50ef5
--- /dev/null
+++ b/kradio3/plugins/gui-docking-menu/Makefile.am
@@ -0,0 +1,18 @@
+SUBDIRS = po .
+
+INCLUDES = -I$(top_builddir)/kradio3/src $(all_includes)
+METASOURCES = AUTO
+
+libkradio_LTLIBRARIES = libdocking-menu.la
+libdocking_menu_la_SOURCES = docking-configuration.cpp docking.cpp
+libdocking_menu_la_LDFLAGS = -module -avoid-version $(KDE_RPATH) $(all_libraries)
+
+noinst_HEADERS = docking-configuration.h docking.h
+
+
+#messages: rc.cpp
+# $(XGETTEXT) *.cpp *.h -o po/kradio-gui-docking-menu.pot
+
+messages: rc.cpp
+ $(EXTRACTRC) *.rc *.ui >> rc.cpp
+ $(XGETTEXT) rc.cpp *.h *.cpp -o po/kradio-gui-docking-menu.pot
diff --git a/kradio3/plugins/gui-docking-menu/docking-configuration.cpp b/kradio3/plugins/gui-docking-menu/docking-configuration.cpp
new file mode 100644
index 0000000..3e32c64
--- /dev/null
+++ b/kradio3/plugins/gui-docking-menu/docking-configuration.cpp
@@ -0,0 +1,114 @@
+/***************************************************************************
+ docking-configuration.cpp - description
+ -------------------
+ begin : Son Aug 3 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "docking-configuration.h"
+
+#include <qcombobox.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qframe.h>
+
+#include <klocale.h>
+
+using namespace std;
+
+DockingConfiguration::DockingConfiguration (RadioDocking *docking, QWidget *parent)
+ : StationSelector(parent),
+ m_docking(docking),
+ m_disableGUIUpdates(false)
+{
+ QHBoxLayout *layout = new QHBoxLayout();
+ QHBoxLayout *layout2 = new QHBoxLayout();
+
+ m_labelClickMode = new QLabel(this);
+ layout->addWidget(m_labelClickMode);
+
+ m_comboClickMode = new QComboBox(this);
+ layout->addWidget(m_comboClickMode);
+
+ QSpacerItem *spacer = new QSpacerItem( 20, 2, QSizePolicy::Expanding, QSizePolicy::Minimum);
+ layout->addItem(spacer);
+
+ QFrame *line = new QFrame(this);
+ line->setFrameShape ( QFrame::HLine );
+ line->setFrameShadow( QFrame::Sunken );
+ layout2->addWidget(line);
+
+ StationSelectorUILayout->expand(2,0);
+ StationSelectorUILayout->addMultiCellLayout(layout2, 2, 2, 0, 2);
+ StationSelectorUILayout->addMultiCellLayout(layout, 3, 3, 0, 2);
+
+ connect(m_comboClickMode, SIGNAL(activated( int )), this, SLOT(slotSetDirty()));
+
+ languageChange();
+ slotCancel();
+}
+
+
+DockingConfiguration::~DockingConfiguration ()
+{
+}
+
+
+void DockingConfiguration::languageChange()
+{
+ StationSelector::languageChange();
+ m_labelClickMode->setText( i18n( "Left Mouse Click on Tray" ) );
+
+ m_comboClickMode->clear();
+ m_comboClickMode->insertItem(i18n("Show/Hide all GUI Elements"));
+ m_comboClickMode->insertItem(i18n("Power On/Off"));
+}
+
+void DockingConfiguration::slotOK()
+{
+ if (m_dirty) {
+ StationSelector::slotOK();
+ bool old = m_disableGUIUpdates;
+ m_disableGUIUpdates = true;
+ if (m_docking)
+ m_docking->setLeftClickAction((LeftClickAction)m_comboClickMode->currentItem());
+ m_disableGUIUpdates = old;
+ m_dirty = false;
+ }
+}
+
+void DockingConfiguration::slotCancel()
+{
+ if (m_dirty) {
+ StationSelector::slotCancel();
+ if (m_docking)
+ m_comboClickMode->setCurrentItem(m_docking->getLeftClickAction());
+ m_dirty = false;
+ }
+}
+
+void DockingConfiguration::slotLeftClickActionChanged(LeftClickAction action)
+{
+ if (!m_disableGUIUpdates) {
+ if (m_docking)
+ m_comboClickMode->setCurrentItem(action);
+ }
+}
+
+void DockingConfiguration::slotSetDirty()
+{
+ m_dirty = true;
+}
+
+
+#include "docking-configuration.moc"
diff --git a/kradio3/plugins/gui-docking-menu/docking-configuration.h b/kradio3/plugins/gui-docking-menu/docking-configuration.h
new file mode 100644
index 0000000..77b17cf
--- /dev/null
+++ b/kradio3/plugins/gui-docking-menu/docking-configuration.h
@@ -0,0 +1,54 @@
+/***************************************************************************
+ docking-configuration.h - description
+ -------------------
+ begin : Son Aug 3 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_DOCKING_CONFIGURATION_H
+#define KRADIO_DOCKING_CONFIGURATION_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "../../src/include/stationselector.h"
+#include "docking.h"
+
+class QComboBox;
+class QLabel;
+
+class DockingConfiguration : public StationSelector
+{
+Q_OBJECT
+public :
+ DockingConfiguration (RadioDocking *docking, QWidget *parent);
+ ~DockingConfiguration ();
+
+protected slots:
+
+ void slotOK();
+ void slotCancel();
+ void slotSetDirty();
+
+ void slotLeftClickActionChanged(LeftClickAction action);
+ void languageChange();
+
+protected:
+ RadioDocking *m_docking;
+ QComboBox *m_comboClickMode;
+ QLabel *m_labelClickMode;
+ bool m_disableGUIUpdates;
+};
+
+#endif
diff --git a/kradio3/plugins/gui-docking-menu/docking.cpp b/kradio3/plugins/gui-docking-menu/docking.cpp
new file mode 100644
index 0000000..e39ae32
--- /dev/null
+++ b/kradio3/plugins/gui-docking-menu/docking.cpp
@@ -0,0 +1,674 @@
+/***************************************************************************
+ docking.cpp - description
+ -------------------
+ begin : Don Mr 8 21:57:17 CET 2001
+ copyright : (C) 2002 by Ernst Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include <kiconloader.h>
+#include <qtooltip.h>
+#include <kpopupmenu.h>
+#include <kapplication.h>
+#include <kaction.h>
+#include <kdialogbase.h>
+#include <kaboutdata.h>
+#include <kconfig.h>
+#include <kwin.h>
+
+#include "../../src/include/radiodevice_interfaces.h"
+#include "../../src/include/stationlist.h"
+#include "../../src/include/pluginmanager.h"
+#include "../../src/include/widgetplugins.h"
+#include "../../src/include/radiostation.h"
+#include "../../src/include/aboutwidget.h"
+#include "../../src/include/station-drag-object.h"
+
+#include "docking.h"
+#include "docking-configuration.h"
+
+#define POPUP_ID_START_RECORDING_DEFAULT 0
+#define POPUP_ID_STOP_RECORDING_BASE 100
+
+///////////////////////////////////////////////////////////////////////
+
+PLUGIN_LIBRARY_FUNCTIONS(RadioDocking, "kradio-gui-docking-menu", i18n("Tray Menu for KRadio"));
+
+/////////////////////////////////////////////////////////////////////////////
+
+RadioDocking::RadioDocking(const QString &name)
+ : KSystemTray (NULL, name.ascii()),
+ PluginBase(name, i18n("Docking Plugin")),
+ m_pluginMenu(NULL),
+ m_recordingMenu(NULL),
+ m_NextRecordingMenuID(POPUP_ID_STOP_RECORDING_BASE),
+ m_leftClickAction(lcaShowHide)
+{
+ setPixmap(BarIcon("kradio"));
+
+ m_menu = contextMenu();
+ QObject::connect(m_menu, SIGNAL(activated(int)),
+ this, SLOT(slotMenuItemActivated(int)));
+
+ buildContextMenu ();
+ show();
+ setAcceptDrops(true);
+}
+
+RadioDocking::~RadioDocking()
+{
+}
+
+
+bool RadioDocking::connectI (Interface *i)
+{
+ bool a = IRadioClient::connectI(i);
+ bool b = ITimeControlClient::connectI(i);
+ bool c = IRadioDevicePoolClient::connectI(i);
+ bool d = IStationSelection::connectI(i);
+ bool e = ISoundStreamClient::connectI(i);
+ bool f = PluginBase::connectI(i);
+ return a || b || c || d || e || f;
+}
+
+
+bool RadioDocking::disconnectI (Interface *i)
+{
+ bool a = IRadioClient::disconnectI(i);
+ bool b = ITimeControlClient::disconnectI(i);
+ bool c = IRadioDevicePoolClient::disconnectI(i);
+ bool d = IStationSelection::disconnectI(i);
+ bool e = ISoundStreamClient::disconnectI(i);
+ bool f = PluginBase::disconnectI(i);
+ return a || b || c || d || e || f;
+}
+
+
+void RadioDocking::noticeConnectedI (ISoundStreamServer *s, bool pointer_valid)
+{
+ ISoundStreamClient::noticeConnectedI(s, pointer_valid);
+ if (s && pointer_valid) {
+ s->register4_sendStartRecordingWithFormat(this);
+ s->register4_sendStopRecording (this);
+ s->register4_notifySoundStreamChanged (this);
+ }
+}
+
+
+
+bool RadioDocking::setStationSelection(const QStringList &sl)
+{
+ if (m_stationIDs != sl) {
+ m_stationIDs = sl;
+ buildContextMenu();
+ notifyStationSelectionChanged(m_stationIDs);
+ }
+ return true;
+}
+
+
+// PluginBase
+
+void RadioDocking::restoreState (KConfig *config)
+{
+ config->setGroup(QString("radiodocking-") + name());
+
+ m_stationIDs.clear();
+ int nStations = config->readNumEntry("nStations", 0);
+ for (int i = 1; i <= nStations; ++i) {
+ QString s = config->readEntry(QString("stationID-") + QString().setNum(i), QString::null);
+ if (s.length())
+ m_stationIDs += s;
+ }
+
+ m_leftClickAction = (LeftClickAction)config->readNumEntry("left_click_action", lcaShowHide);
+
+ buildContextMenu();
+ notifyStationSelectionChanged(m_stationIDs);
+
+ int n = config->readNumEntry("show_hide_cache_entries", 0);
+ for (int i = 1; i <= n; ++i) {
+ QString s = config->readEntry(QString("show_hide_cache_id_%1").arg(i), QString::null);
+ bool b = config->readBoolEntry(QString("show_hide_cache_value_%1").arg(i), false);
+ if (!s.isNull()) {
+ m_widgetsShownCache.insert(s,b);
+ }
+ }
+}
+
+
+void RadioDocking::saveState (KConfig *config) const
+{
+ config->setGroup(QString("radiodocking-") + name());
+
+ config->writeEntry("nStations", m_stationIDs.size());
+ int i = 1;
+ QStringList::const_iterator end = m_stationIDs.end();
+ for (QStringList::const_iterator it = m_stationIDs.begin(); it != end; ++it, ++i) {
+ config->writeEntry(QString("stationID-") + QString().setNum(i), *it);
+ }
+ config->writeEntry("left_click_action", (int)m_leftClickAction);
+
+ config->writeEntry("show_hide_cache_entries", m_widgetsShownCache.count());
+ i = 1;
+ for (QMapConstIterator<QString, bool> it = m_widgetsShownCache.begin(); it != m_widgetsShownCache.end(); ++it, ++i) {
+ config->writeEntry(QString("show_hide_cache_id_%1").arg(i), it.key());
+ config->writeEntry(QString("show_hide_cache_value_%1").arg(i), *it);
+ }
+}
+
+
+ConfigPageInfo RadioDocking::createConfigurationPage()
+{
+ DockingConfiguration *conf = new DockingConfiguration(this, NULL);
+ connectI (conf);
+
+ QObject::connect(this, SIGNAL(sigLeftClickActionChanged(LeftClickAction)),
+ conf, SLOT(slotLeftClickActionChanged(LeftClickAction)));
+
+ return ConfigPageInfo(
+ conf,
+ i18n("Docking Menu"),
+ i18n("Docking Menu Configuration"),
+ "kmenuedit"
+ );
+}
+
+AboutPageInfo RadioDocking::createAboutPage()
+{
+/* KAboutData aboutData("kradio",
+ NULL,
+ NULL,
+ I18N_NOOP("Docking Menu for KRadio"),
+ KAboutData::License_GPL,
+ "(c) 2002-2005 Martin Witte, Klas Kalass",
+ 0,
+ "http://sourceforge.net/projects/kradio",
+ 0);
+ aboutData.addAuthor("Martin Witte", "", "witte@kawo1.rwth-aachen.de");
+ aboutData.addAuthor("Klas Kalass", "", "klas.kalass@gmx.de");
+
+ return AboutPageInfo(
+ new KRadioAboutWidget(aboutData, KRadioAboutWidget::AbtTabbed),
+ i18n("Docking Menu"),
+ i18n("Docking Menu Plugin"),
+ "kmenuedit"
+ );*/
+ return AboutPageInfo();
+}
+
+
+
+void RadioDocking::buildContextMenu()
+{
+ m_menu->clear();
+ m_pluginMenu = NULL;
+ m_recordingMenu = NULL;
+
+ m_titleID = m_menu->insertTitle ("title-dummy");
+
+ buildStationList();
+
+ m_alarmID = m_menu->insertTitle ("alarm-dummy");
+ noticeNextAlarmChanged(queryNextAlarm());
+
+ m_sleepID = m_menu->insertItem(SmallIcon("kradio_zzz"), "sleep-dummy",
+ this, SLOT(slotSleepCountdown()));
+ noticeCountdownStarted(queryCountdownEnd());
+
+ m_seekfwID = m_menu->insertItem(SmallIcon("forward"), i18n("Search Next Station"),
+ this, SLOT(slotSeekFwd()));
+ m_seekbwID = m_menu->insertItem(SmallIcon("back"), i18n("Search Previous Station"),
+ this, SLOT(slotSeekBkwd()));
+
+ // recording menu
+ buildRecordingMenu();
+ m_menu->insertItem(i18n("Recording"), m_recordingMenu);
+
+
+ m_powerID = m_menu->insertItem(SmallIcon("kradio_muteoff"), "power-dummy",
+ this, SLOT(slotPower()));
+ m_pauseID = m_menu->insertItem(SmallIcon("kradio_pause"), i18n("Pause Radio"),
+ this, SLOT(slotPause()));
+ noticePowerChanged(queryIsPowerOn());
+
+ m_menu->insertSeparator();
+
+ m_menu->insertItem(SmallIcon("kradio"), i18n("&About"), this, SLOT(slotShowAbout()));
+
+ // build list of widgets for hide/show items
+ m_pluginMenu = new KPopupMenu(m_menu);
+ if (m_manager) {
+ m_manager->addWidgetPluginMenuItems(m_pluginMenu, m_widgetPluginIDs);
+ m_menu->insertItem(SmallIcon("kradio_plugins"), i18n("Show/Hide Plugins"), m_pluginMenu);
+ }
+
+ m_menu->insertSeparator();
+ m_menu->insertItem( SmallIcon("exit"), i18n("&Quit" ), kapp, SLOT(quit()) );
+
+
+ noticeStationChanged(queryCurrentStation(), -1);
+
+}
+
+
+void RadioDocking::buildStationList()
+{
+ m_stationMenuIDs.clear();
+
+ const RawStationList &sl = queryStations().all();
+ const RadioStation &crs = queryCurrentStation();
+
+ int k = 0;
+ QStringList::iterator end = m_stationIDs.end();
+ for (QStringList::iterator it = m_stationIDs.begin(); it != end; ++it) {
+ const RadioStation &rs = sl.stationWithID(*it);
+
+ if (rs.isValid()) {
+
+ ++k;
+ QString shortcut = k < 10 ? "&"+QString().setNum(k) : k == 10 ? "1&0" : QString().setNum(k);
+ QString name = rs.longName().replace("&", "&&");
+ QString item = shortcut + " " + name;
+ int id = m_menu->insertItem(item);
+
+ m_stationMenuIDs.push_back(id);
+ m_menu->setItemChecked (id, rs.compare(crs) == 0);
+
+ } else {
+ m_stationMenuIDs.push_back(-1);
+ }
+ }
+}
+
+
+void RadioDocking::slotSeekFwd()
+{
+ ISeekRadio *seeker = dynamic_cast<ISeekRadio*>(queryActiveDevice());
+ if (seeker)
+ seeker->startSeekUp();
+}
+
+
+void RadioDocking::slotSeekBkwd()
+{
+ ISeekRadio *seeker = dynamic_cast<ISeekRadio*>(queryActiveDevice());
+ if (seeker)
+ seeker->startSeekUp();
+}
+
+
+
+void RadioDocking::slotShowAbout()
+{
+ if (m_manager) {
+ KDialogBase *d = m_manager->getAboutDialog();
+ if (d) d->show();
+ }
+}
+
+
+void RadioDocking::slotPower()
+{
+ if (queryIsPowerOn()) {
+ sendPowerOff();
+ } else {
+ sendPowerOn();
+ }
+}
+
+
+void RadioDocking::slotPause()
+{
+ if (queryIsPowerOn()) {
+ sendPausePlayback(queryCurrentSoundStreamID());
+ }
+}
+
+
+void RadioDocking::slotSleepCountdown()
+{
+ if (queryCountdownEnd().isValid()) {
+ sendStopCountdown();
+ } else {
+ sendStartCountdown();
+ }
+}
+
+
+bool RadioDocking::noticeNextAlarmChanged(const Alarm *a)
+{
+ QDateTime d;
+ if (a) d = a->nextAlarm();
+
+ if (d.isValid())
+ m_menu->changeTitle (m_alarmID, i18n("next alarm: %1").arg(d.toString()));
+ else
+ m_menu->changeTitle (m_alarmID, i18n("<no alarm pending>"));
+ return true;
+}
+
+
+bool RadioDocking::noticeCountdownStarted(const QDateTime &end)
+{
+ if (end.isValid())
+ m_menu->changeItem (m_sleepID, SmallIcon("kradio_zzz"), i18n("Stop Sleep Countdown (running until %1)").arg(end.toString()));
+ else
+ m_menu->changeItem (m_sleepID, SmallIcon("kradio_zzz"), i18n("Start Sleep Countdown"));
+ return true;
+}
+
+
+bool RadioDocking::noticeCountdownStopped()
+{
+ m_menu->changeItem (m_sleepID, SmallIcon("kradio_zzz"), i18n("Start Sleep Countdown"));
+ return true;
+}
+
+
+bool RadioDocking::noticeCountdownZero()
+{
+ m_menu->changeItem (m_sleepID, SmallIcon("kradio_zzz"), i18n("Start Sleep Countdown"));
+ return true;
+}
+
+
+bool RadioDocking::noticePowerChanged(bool on)
+{
+ m_menu->changeItem(m_powerID, SmallIcon(on ? "kradio_muteon" : "kradio_muteoff"),
+ on ? i18n("Power Off") : i18n("Power On"));
+ m_menu->setItemEnabled(m_pauseID, on);
+ return true;
+}
+
+bool RadioDocking::noticeCountdownSecondsChanged(int /*n*/)
+{
+ return false;
+}
+
+
+
+bool RadioDocking::noticeStationChanged (const RadioStation &rs, int /*idx*/)
+{
+ QString s = i18n("invalid station");
+ if (rs.isValid())
+ s = rs.longName();
+
+ QToolTip::add(this, s);
+ m_menu->changeTitle (m_titleID, i18n("KRadio: %1").arg(s));
+ // FIXME: title does not change in opened popupmenu
+
+ QValueList<int>::iterator iit = m_stationMenuIDs.begin();
+ QValueList<int>::iterator end = m_stationMenuIDs.end();
+ QStringList::iterator sit = m_stationIDs.begin();
+ for (; iit != end; ++iit, ++sit) {
+ if (*iit != -1) {
+ bool on = rs.stationID() == *sit;
+ m_menu->setItemChecked (*iit, on);
+ }
+ }
+
+ bool r = false;
+ SoundFormat sf;
+ queryIsRecordingRunning(queryCurrentSoundStreamID(), r, sf);
+ m_recordingMenu->setItemEnabled(m_recordingID, !r);
+ return true;
+}
+
+
+bool RadioDocking::noticeStationsChanged(const StationList &/*sl*/)
+{
+ buildContextMenu();
+ return true;
+}
+
+
+void RadioDocking::mousePressEvent( QMouseEvent *e )
+{
+ KSystemTray::mousePressEvent(e);
+
+ switch ( e->button() ) {
+ case LeftButton:
+ switch (m_leftClickAction) {
+ case lcaShowHide :
+ ShowHideWidgetPlugins();
+ // FIXME: [mcamen] According the KDE usability guidelines a left
+ // click on the systray icon should show/hide the
+ // application window
+ // TODO: [mcamen] Use KSystemtray::toggleActive and friends once we
+ // depend on KDE 3.3
+ break;
+ case lcaPowerOnOff :
+ if (queryIsPowerOn())
+ sendPowerOff();
+ else
+ sendPowerOn();
+ break;
+ default:
+ break;
+ }
+ break;
+ default:
+ // nothing
+ break;
+ }
+}
+
+void RadioDocking::ShowHideWidgetPlugins()
+{
+ // nothing in cache => hide everything
+ if (!m_widgetsShownCache.count()) {
+ for (QMapIterator<WidgetPluginBase*, int> it = m_widgetPluginIDs.begin(); it != m_widgetPluginIDs.end(); ++it) {
+ WidgetPluginBase *p = it.key();
+ if (p) {
+ bool visible = p->isAnywhereVisible();
+ QString name = p->name();
+ logDebug(QString("visibility of %1: %2").arg(name).arg(visible));
+ m_widgetsShownCache.insert(name, visible);
+ p->getWidget()->hide();
+ }
+ }
+ }
+ else {
+ QMap<QString, bool> tmpCache = m_widgetsShownCache;
+ int d = KWin::currentDesktop();
+ for (QMapIterator<WidgetPluginBase*, int> it = m_widgetPluginIDs.begin(); it != m_widgetPluginIDs.end(); ++it) {
+ WidgetPluginBase *p = it.key();
+ QString name = p ? p->name() : QString::null;
+ if (p && tmpCache.contains(name) && tmpCache[name]) {
+ p->showOnOrgDesktop();
+ }
+ }
+ m_widgetsShownCache.clear();
+ KWin::setCurrentDesktop(d);
+ }
+}
+
+void RadioDocking::slotMenuItemActivated(int id)
+{
+ const StationList &sl = queryStations();
+ QValueList<int>::iterator iit = m_stationMenuIDs.begin();
+ QValueList<int>::iterator end = m_stationMenuIDs.end();
+ QStringList::iterator sit = m_stationIDs.begin();
+ for (; iit != end; ++iit, ++sit) {
+ if (*iit == id) {
+ const RadioStation &rs = sl.stationWithID(*sit);
+ if (rs.isValid())
+ sendActivateStation(rs);
+ }
+ }
+}
+
+
+void RadioDocking::noticeWidgetPluginShown(WidgetPluginBase *b, bool shown)
+{
+ if (!m_manager || !b || !m_widgetPluginIDs.contains(b))
+ return;
+ m_manager->updateWidgetPluginMenuItem(b, m_pluginMenu, m_widgetPluginIDs, shown);
+
+ if (shown)
+ m_widgetsShownCache.clear();
+}
+
+
+void RadioDocking::noticePluginsChanged(const PluginList &/*l*/)
+{
+ buildContextMenu();
+}
+
+
+// ISoundStreamClient
+
+bool RadioDocking::startRecordingWithFormat(
+ SoundStreamID id,
+ const SoundFormat &/*proposed_format*/,
+ SoundFormat &/*real_format*/)
+{
+ if (!id.isValid() || id != queryCurrentSoundStreamID() || m_StreamID2MenuID.contains(id))
+ return false;
+
+ QString descr;
+ querySoundStreamDescription(id, descr);
+ int menu_id = m_NextRecordingMenuID++;
+ m_recordingMenu->insertItem(SmallIcon("kradio_record"),
+ i18n("Stop Recording of %1").arg(descr),
+ menu_id);
+ m_MenuID2StreamID.insert(menu_id, id);
+ m_StreamID2MenuID.insert(id, menu_id);
+
+ if (id == queryCurrentSoundStreamID())
+ m_recordingMenu->setItemEnabled(m_recordingID, false);
+
+ setPixmap(BarIcon("kradio_plus_rec"));
+ return false; // this is only a "hook" that does not initiate the recording so don't say that we handled the event
+}
+
+
+bool RadioDocking::stopRecording (SoundStreamID id)
+{
+ if (!id.isValid() || !m_StreamID2MenuID.contains(id))
+ return false;
+
+ int menu_id = m_StreamID2MenuID[id];
+ m_recordingMenu->removeItem(menu_id);
+ m_MenuID2StreamID.remove(menu_id);
+ m_StreamID2MenuID.remove(id);
+
+ if (id == queryCurrentSoundStreamID())
+ m_recordingMenu->setItemEnabled(m_recordingID, true);
+
+ setPixmap(BarIcon("kradio"));
+
+ return false;
+}
+
+
+void RadioDocking::slotRecordingMenu(int i)
+{
+ if (i == POPUP_ID_START_RECORDING_DEFAULT) {
+ SoundStreamID id = queryCurrentSoundStreamID();
+ bool r = false;
+ SoundFormat sf;
+ queryIsRecordingRunning(id, r, sf);
+ if (!r) {
+ if (!queryIsPowerOn())
+ sendPowerOn();
+ sendStartRecording(id);
+ }
+ } else if (m_MenuID2StreamID.contains(i)) {
+ sendStopRecording(m_MenuID2StreamID[i]);
+ }
+}
+
+void RadioDocking::buildRecordingMenu()
+{
+ QMap<QString, SoundStreamID> streams;
+ queryEnumerateSoundStreams(streams);
+
+ KPopupMenu *m = new KPopupMenu(m_menu);
+
+ m_recordingID = m->insertItem(SmallIcon("kradio_record"), i18n("Start Recording"),
+ POPUP_ID_START_RECORDING_DEFAULT);
+ QObject::connect(m, SIGNAL(activated(int)),
+ this, SLOT(slotRecordingMenu(int)));
+ SoundStreamID currentID = queryCurrentSoundStreamID();
+
+ QMapIterator<QString, SoundStreamID> end = streams.end();
+ for (QMapIterator<QString, SoundStreamID> it = streams.begin(); it != end; ++it) {
+
+ SoundStreamID id = *it;
+ QString descr = it.key();
+ bool r = false;
+ SoundFormat sf;
+ queryIsRecordingRunning(id, r, sf);
+ if (r) {
+ int menu_id = m_NextRecordingMenuID++;
+ m->insertItem(SmallIcon("kradio_record"),
+ i18n("Stop Recording of %1").arg(descr),
+ menu_id);
+ m_MenuID2StreamID.insert(menu_id, id);
+ m_StreamID2MenuID.insert(id, menu_id);
+
+ if (id == currentID)
+ m_recordingMenu->setItemEnabled(m_recordingID, false);
+ }
+ }
+ m_recordingMenu = m;
+}
+
+
+bool RadioDocking::noticeSoundStreamChanged(SoundStreamID id)
+{
+ if (m_StreamID2MenuID.contains(id)) {
+ QString descr;
+ querySoundStreamDescription(id, descr);
+ m_recordingMenu->changeItem(m_StreamID2MenuID[id],
+ SmallIcon("kradio_record"),
+ i18n("Stop Recording of %1").arg(descr));
+ return true;
+ }
+ return false;
+}
+
+
+void RadioDocking::setLeftClickAction(LeftClickAction action)
+{
+ if (m_leftClickAction != action) {
+ m_leftClickAction = action;
+ emit sigLeftClickActionChanged(m_leftClickAction);
+ }
+}
+
+void RadioDocking::dragEnterEvent(QDragEnterEvent* event)
+{
+ bool a = StationDragObject::canDecode(event);
+ if (a)
+ IErrorLogClient::staticLogDebug("contentsDragEnterEvent accepted");
+ else
+ IErrorLogClient::staticLogDebug("contentsDragEnterEvent rejected");
+ event->accept(a);
+}
+
+void RadioDocking::dropEvent(QDropEvent* event)
+{
+ QStringList list;
+
+ if ( StationDragObject::decode(event, list) ) {
+ QStringList l = getStationSelection();
+ for (QValueListConstIterator<QString> it = list.begin(); it != list.end(); ++it)
+ if (!l.contains(*it))
+ l.append(*it);
+ setStationSelection(l);
+ }
+}
+
+#include "docking.moc"
diff --git a/kradio3/plugins/gui-docking-menu/docking.h b/kradio3/plugins/gui-docking-menu/docking.h
new file mode 100644
index 0000000..d9fbfde
--- /dev/null
+++ b/kradio3/plugins/gui-docking-menu/docking.h
@@ -0,0 +1,189 @@
+/***************************************************************************
+ docking.h - description
+ -------------------
+ begin : Mon Jan 14 2002
+ copyright : (C) 2001, 2002 by Frank Schwanz, Ernst Martin Witte
+ email : schwanz@fh-brandenburg.de, witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_DOCKING_H
+#define KRADIO_DOCKING_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <ksystemtray.h>
+#include <qpixmap.h>
+#include <qptrdict.h>
+
+#include "../../src/include/timecontrol_interfaces.h"
+#include "../../src/include/radio_interfaces.h"
+#include "../../src/include/radiodevicepool_interfaces.h"
+#include "../../src/include/stationselection_interfaces.h"
+#include "../../src/include/plugins.h"
+#include "../../src/include/soundstreamclient_interfaces.h"
+
+enum LeftClickAction { lcaShowHide = 0, lcaPowerOnOff = 1 };
+
+class RadioDocking : public KSystemTray,
+ public PluginBase,
+ public IRadioClient,
+ public ITimeControlClient,
+ public IRadioDevicePoolClient,
+ public IStationSelection,
+ public ISoundStreamClient
+{
+Q_OBJECT
+public:
+ RadioDocking (const QString &name);
+ virtual ~RadioDocking();
+
+ virtual bool connectI (Interface *);
+ virtual bool disconnectI (Interface *);
+
+ virtual QString pluginClassName() const { return "RadioDocking"; }
+
+ virtual const QString &name() const { return PluginBase::name(); }
+ virtual QString &name() { return PluginBase::name(); }
+
+
+ // PluginBase
+
+public:
+ virtual void saveState (KConfig *) const;
+ virtual void restoreState (KConfig *);
+
+ virtual ConfigPageInfo createConfigurationPage();
+ virtual AboutPageInfo createAboutPage();
+
+
+ // IStationSelection
+
+RECEIVERS:
+ bool setStationSelection(const QStringList &sl);
+
+ANSWERS:
+ const QStringList & getStationSelection () const { return m_stationIDs; }
+
+
+ // IRadioDevicePoolClient
+
+RECEIVERS:
+ bool noticeActiveDeviceChanged(IRadioDevice *) { return false; }
+ bool noticeDevicesChanged(const QPtrList<IRadioDevice> &) { return false; }
+ bool noticeDeviceDescriptionChanged(const QString &) { return false; }
+
+ // ITimeControlClient
+
+RECEIVERS:
+ bool noticeAlarmsChanged(const AlarmVector &) { return false; }
+ bool noticeAlarm(const Alarm &) { return false; }
+ bool noticeNextAlarmChanged(const Alarm *);
+ bool noticeCountdownStarted(const QDateTime &/*end*/);
+ bool noticeCountdownStopped();
+ bool noticeCountdownZero();
+ bool noticeCountdownSecondsChanged(int n);
+
+
+ // IRadioClient
+
+RECEIVERS:
+ bool noticePowerChanged(bool on);
+ bool noticeStationChanged (const RadioStation &, int idx);
+ bool noticeStationsChanged(const StationList &sl);
+ bool noticePresetFileChanged(const QString &/*f*/) { return false; }
+
+ bool noticeCurrentSoundStreamIDChanged(SoundStreamID /*id*/) { return false; }
+
+ // ISoundStreamClient
+
+RECEIVERS:
+ void noticeConnectedI (ISoundStreamServer *s, bool pointer_valid);
+
+ bool startRecordingWithFormat(SoundStreamID /*id*/,
+ const SoundFormat &/*proposed_format*/,
+ SoundFormat &/*real_format*/);
+ bool stopRecording(SoundStreamID /*id*/);
+
+ bool noticeSoundStreamChanged(SoundStreamID id);
+
+
+protected slots:
+
+ void slotSeekFwd();
+ void slotSeekBkwd();
+
+ void slotPower();
+ void slotPause();
+ void slotSleepCountdown();
+ void slotShowAbout();
+
+ void slotMenuItemActivated(int id);
+ void slotRecordingMenu(int i);
+
+protected:
+ void mousePressEvent( QMouseEvent *e );
+
+ void buildContextMenu();
+ void buildRecordingMenu();
+ void buildStationList();
+
+ void noticeWidgetPluginShown(WidgetPluginBase *, bool shown);
+ void noticePluginsChanged(const PluginList &);
+
+ void showEvent(QShowEvent *) {} // do nothing, original implementation adds "Quit" menu item
+
+ void ShowHideWidgetPlugins();
+
+ void dragEnterEvent(QDragEnterEvent* event);
+ void dropEvent(QDropEvent* event);
+
+public:
+
+ LeftClickAction getLeftClickAction() const { return m_leftClickAction; }
+ void setLeftClickAction(LeftClickAction action);
+
+signals:
+ void sigLeftClickActionChanged(LeftClickAction action);
+
+protected:
+
+ KPopupMenu *m_menu;
+ KPopupMenu *m_pluginMenu;
+ KPopupMenu *m_recordingMenu;
+ QStringList m_stationIDs;
+
+ // menu Item IDs
+ int m_titleID;
+ int m_alarmID;
+ int m_recordingID;
+ int m_powerID;
+ int m_pauseID;
+ int m_sleepID;
+ int m_seekfwID;
+ int m_seekbwID;
+ QValueList<int> m_stationMenuIDs;
+
+ QMap<WidgetPluginBase *, int> m_widgetPluginIDs;
+
+ int m_NextRecordingMenuID;
+ QMap<int, SoundStreamID> m_MenuID2StreamID;
+ QMap<SoundStreamID, int> m_StreamID2MenuID;
+
+ LeftClickAction m_leftClickAction;
+
+ QMap<QString, bool> m_widgetsShownCache;
+};
+
+
+#endif
diff --git a/kradio3/plugins/gui-docking-menu/po/Makefile.am b/kradio3/plugins/gui-docking-menu/po/Makefile.am
new file mode 100644
index 0000000..e02511d
--- /dev/null
+++ b/kradio3/plugins/gui-docking-menu/po/Makefile.am
@@ -0,0 +1,2 @@
+PACKAGE = kradio-gui-docking-menu
+POFILES = AUTO
diff --git a/kradio3/plugins/gui-docking-menu/po/de.po b/kradio3/plugins/gui-docking-menu/po/de.po
new file mode 100644
index 0000000..3256a25
--- /dev/null
+++ b/kradio3/plugins/gui-docking-menu/po/de.po
@@ -0,0 +1,117 @@
+# translation of de.po to
+# translation of kradio-gui-docking-menu.po to
+# This file is put in the public domain.
+#
+# Ernst Martin Witte <emw@nocabal.de>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-10 23:20+0100\n"
+"PO-Revision-Date: 2006-11-06 00:36+0100\n"
+"Last-Translator: Ernst Martin Witte <emw@nocabal.de>\n"
+"Language-Team: <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Ernst Martin Witte"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "emw@nocabal.de"
+
+#: docking-configuration.cpp:70
+msgid "Left Mouse Click on Tray"
+msgstr "Linker Mausklick auf Kontrolleistensymbol"
+
+#: docking-configuration.cpp:73
+msgid "Show/Hide all GUI Elements"
+msgstr "Alle Fenster anzeigen/verstecken"
+
+#: docking-configuration.cpp:74
+msgid "Power On/Off"
+msgstr "Ein/Ausschalten"
+
+#: docking.cpp:44
+msgid "Tray Menu for KRadio"
+msgstr "Kontrollleistenmenü für KRadio"
+
+#: docking.cpp:50
+msgid "Docking Plugin"
+msgstr "Plugin für die Kontrolleiste"
+
+#: docking.cpp:180
+msgid "Docking Menu"
+msgstr "Kontrolleisten-Menü"
+
+#: docking.cpp:181
+msgid "Docking Menu Configuration"
+msgstr "Konfiguration des Kontrollleisten-Menüs"
+
+#: docking.cpp:228
+msgid "Search Next Station"
+msgstr "Suche nächsten Sender"
+
+#: docking.cpp:230
+msgid "Search Previous Station"
+msgstr "Suche vorherigen Sender"
+
+#: docking.cpp:235
+msgid "Recording"
+msgstr "Aufnahme"
+
+#: docking.cpp:240
+msgid "Pause Radio"
+msgstr "Radiowiedergabe pausieren"
+
+#: docking.cpp:252
+msgid "Show/Hide Plugins"
+msgstr "Plugins anzeigen/verstecken"
+
+#: docking.cpp:354
+msgid "next alarm: %1"
+msgstr "Nächstes Wecken: %1"
+
+#: docking.cpp:356
+msgid "<no alarm pending>"
+msgstr "<Wecker nicht aktiv>"
+
+#: docking.cpp:364
+msgid "Stop Sleep Countdown (running until %1)"
+msgstr "Schlummermodus abbrechen (liefe bis %1)"
+
+#: docking.cpp:366 docking.cpp:373 docking.cpp:380
+msgid "Start Sleep Countdown"
+msgstr "Schlummermodus einschalten"
+
+#: docking.cpp:388
+msgid "Power Off"
+msgstr "Ausschalten"
+
+#: docking.cpp:388
+msgid "Power On"
+msgstr "Einschalten"
+
+#: docking.cpp:402
+msgid "invalid station"
+msgstr "ungültiger Sender"
+
+#: docking.cpp:407
+msgid "KRadio: %1"
+msgstr "KRadio: %1"
+
+#: docking.cpp:543 docking.cpp:616 docking.cpp:636
+msgid "Stop Recording of %1"
+msgstr "Aufnahme %1 abbrechen"
+
+#: docking.cpp:599
+msgid "Start Recording"
+msgstr "Aufnahme starten"
diff --git a/kradio3/plugins/gui-docking-menu/po/ru.po b/kradio3/plugins/gui-docking-menu/po/ru.po
new file mode 100644
index 0000000..183c31d
--- /dev/null
+++ b/kradio3/plugins/gui-docking-menu/po/ru.po
@@ -0,0 +1,117 @@
+# translation of ru.po to
+# translation of kradio-gui-docking-menu.po to
+# This file is put in the public domain.
+# Алексей Кузнецов <Alexey.Kouznetsov@GMail.com>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-11 02:11+0100\n"
+"PO-Revision-Date: 2006-11-08 12:16+0300\n"
+"Last-Translator: Алексей Кузнецов <Alexey.Kouznetsov@GMail.com>\n"
+"Language-Team: <ru@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10\n"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Алексей Кузнецов"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "Alexey.Kouznetsov@GMail.com"
+
+#: docking-configuration.cpp:70
+msgid "Left Mouse Click on Tray"
+msgstr "По щелчку левой кнопкой мыши"
+
+#: docking-configuration.cpp:73
+msgid "Show/Hide all GUI Elements"
+msgstr "Показать/скрыть все окна"
+
+#: docking-configuration.cpp:74
+msgid "Power On/Off"
+msgstr "Включить/выключить"
+
+#: docking.cpp:44
+msgid "Tray Menu for KRadio"
+msgstr "Меню лотка для KRadio"
+
+#: docking.cpp:50
+msgid "Docking Plugin"
+msgstr "Модуль системного лотка"
+
+#: docking.cpp:180
+msgid "Docking Menu"
+msgstr "Меню лотка"
+
+#: docking.cpp:181
+msgid "Docking Menu Configuration"
+msgstr "Конфигурация меню лотка"
+
+#: docking.cpp:228
+msgid "Search Next Station"
+msgstr "Искать следующую станцию"
+
+#: docking.cpp:230
+msgid "Search Previous Station"
+msgstr "Искать предыдущую станцию"
+
+#: docking.cpp:235
+msgid "Recording"
+msgstr "Запись"
+
+#: docking.cpp:240
+msgid "Pause Radio"
+msgstr "Приостановить"
+
+#: docking.cpp:252
+msgid "Show/Hide Plugins"
+msgstr "Показать/скрыть"
+
+#: docking.cpp:354
+msgid "next alarm: %1"
+msgstr "След. действие: %1"
+
+#: docking.cpp:356
+msgid "<no alarm pending>"
+msgstr "<Расписание пусто>"
+
+#: docking.cpp:364
+msgid "Stop Sleep Countdown (running until %1)"
+msgstr "Остановить таймер отключения (установлено на %1)"
+
+#: docking.cpp:366 docking.cpp:373 docking.cpp:380
+msgid "Start Sleep Countdown"
+msgstr "Запустить таймер отключения"
+
+#: docking.cpp:388
+msgid "Power Off"
+msgstr "Выключить"
+
+#: docking.cpp:388
+msgid "Power On"
+msgstr "Включить"
+
+#: docking.cpp:402
+msgid "invalid station"
+msgstr "Неверная станция"
+
+#: docking.cpp:407
+msgid "KRadio: %1"
+msgstr "Радиоприёмник KDE"
+
+#: docking.cpp:543 docking.cpp:616 docking.cpp:636
+msgid "Stop Recording of %1"
+msgstr "Остановить запись %1"
+
+#: docking.cpp:599
+msgid "Start Recording"
+msgstr "Начать запись"
diff --git a/kradio3/plugins/gui-error-log/Makefile.am b/kradio3/plugins/gui-error-log/Makefile.am
new file mode 100644
index 0000000..1ac0e60
--- /dev/null
+++ b/kradio3/plugins/gui-error-log/Makefile.am
@@ -0,0 +1,17 @@
+SUBDIRS = po .
+
+INCLUDES = $(all_includes)
+METASOURCES = AUTO
+
+libkradio_LTLIBRARIES = liberror-log.la
+liberror_log_la_SOURCES = errorlog.cpp
+liberror_log_la_LDFLAGS = -module -avoid-version $(KDE_RPATH) $(all_libraries)
+
+noinst_HEADERS = errorlog.h
+
+#messages: rc.cpp
+# $(XGETTEXT) *.cpp *.h -o po/kradio-gui-error-log.pot
+
+messages: rc.cpp
+ $(EXTRACTRC) *.rc *.ui >> rc.cpp
+ $(XGETTEXT) rc.cpp *.h *.cpp -o po/kradio-gui-error-log.pot
diff --git a/kradio3/plugins/gui-error-log/errorlog.cpp b/kradio3/plugins/gui-error-log/errorlog.cpp
new file mode 100644
index 0000000..2eb58ad
--- /dev/null
+++ b/kradio3/plugins/gui-error-log/errorlog.cpp
@@ -0,0 +1,263 @@
+/***************************************************************************
+ errorlog.cpp - description
+ -------------------
+ begin : Sa Sep 13 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "errorlog.h"
+
+#include <qframe.h>
+#include <qdatetime.h>
+#include <qlayout.h>
+
+#include <klocale.h>
+#include <kiconloader.h>
+#include <qtextedit.h>
+#include <kfiledialog.h>
+#include <kurl.h>
+#include <ktempfile.h>
+#include <kio/netaccess.h>
+
+#define PAGE_ID_INFO 0
+#define PAGE_ID_WARN 1
+#define PAGE_ID_ERROR 2
+#define PAGE_ID_DEBUG 3
+
+///////////////////////////////////////////////////////////////////////
+
+PLUGIN_LIBRARY_FUNCTIONS(ErrorLog, "kradio-gui-error-log", i18n("Error Logging Window for KRadio"));
+
+/////////////////////////////////////////////////////////////////////////////
+
+ErrorLog::ErrorLog(const QString &name)
+ : KDialogBase(KDialogBase::IconList,
+ "",
+ KDialogBase::Close|KDialogBase::User1,
+ KDialogBase::Close,
+ NULL,
+ name.ascii(),
+ false,
+ false,
+ KGuiItem(i18n("Save &as"), "filesaveas")
+ ),
+ WidgetPluginBase(name, i18n("Error Logger")),
+ init_done(false)
+{
+ QWidget::setCaption(i18n("KRadio Logger"));
+ QFrame *info = addPage(i18n("Information"), i18n("Information"),
+ KGlobal::instance()->iconLoader()->loadIcon(
+ "messagebox_info", KIcon::NoGroup, KIcon::SizeMedium
+ )
+ );
+
+ QGridLayout *linfo = new QGridLayout(info);
+ linfo->setSpacing( 5 );
+ linfo->setMargin ( 0 );
+ m_teInfos = new QTextEdit(info);
+ linfo->addWidget(m_teInfos, 0, 0);
+ m_teInfos->setReadOnly(true);
+ logInfo(i18n("logging started"));
+
+
+ QFrame *warn = addPage(i18n("Warnings"), i18n("Warnings"),
+ KGlobal::instance()->iconLoader()->loadIcon(
+ "messagebox_warning", KIcon::NoGroup, KIcon::SizeMedium
+ )
+ );
+ QGridLayout *lwarn = new QGridLayout(warn);
+ lwarn->setSpacing( 5 );
+ lwarn->setMargin ( 0 );
+ m_teWarnings = new QTextEdit(warn);
+ lwarn->addWidget(m_teWarnings, 0, 0);
+ m_teWarnings->setReadOnly(true);
+ logWarning(i18n("logging started"));
+
+
+
+ QFrame *err = addPage(i18n("Errors"), i18n("Errors"),
+ KGlobal::instance()->iconLoader()->loadIcon(
+ "messagebox_critical", KIcon::NoGroup, KIcon::SizeMedium
+ )
+ );
+ QGridLayout *lerr = new QGridLayout(err);
+ lerr->setSpacing( 5 );
+ lerr->setMargin ( 0 );
+ m_teErrors = new QTextEdit(err);
+ lerr->addWidget(m_teErrors, 0, 0);
+ m_teErrors->setReadOnly(true);
+ logError(i18n("logging started"));
+
+ QFrame *debug = addPage(i18n("Debugging"), i18n("Debugging"),
+ KGlobal::instance()->iconLoader()->loadIcon(
+ "find", KIcon::NoGroup, KIcon::SizeMedium
+ )
+ );
+
+ QGridLayout *ldebug = new QGridLayout(debug);
+ ldebug->setSpacing( 5 );
+ ldebug->setMargin ( 0 );
+ m_teDebug = new QTextEdit(debug);
+ ldebug->addWidget(m_teDebug, 0, 0);
+ m_teDebug->setReadOnly(true);
+ logDebug(i18n("logging started"));
+
+ init_done = true;
+}
+
+
+ErrorLog::~ErrorLog()
+{
+}
+
+bool ErrorLog::connectI (Interface *i)
+{
+ bool a = IErrorLog::connectI(i);
+ bool b = PluginBase::connectI(i);
+ return a || b;
+}
+
+bool ErrorLog::disconnectI (Interface *i)
+{
+ bool a = IErrorLog::disconnectI(i);
+ bool b = PluginBase::disconnectI(i);
+ return a || b;
+}
+
+void ErrorLog::restoreState (KConfig *config)
+{
+ config->setGroup(QString("errorlog-") + WidgetPluginBase::name());
+ WidgetPluginBase::restoreState(config, false);
+}
+
+
+void ErrorLog::saveState (KConfig *config) const
+{
+ config->setGroup(QString("errorlog-") + WidgetPluginBase::name());
+ WidgetPluginBase::saveState(config);
+}
+
+
+void ErrorLog::show()
+{
+ WidgetPluginBase::pShow();
+ KDialogBase::show();
+}
+
+void ErrorLog::showOnOrgDesktop()
+{
+ WidgetPluginBase::pShowOnOrgDesktop();
+ //KDialogBase::show();
+}
+
+void ErrorLog::hide()
+{
+ logDebug(QString("%1, ErrorLog::hide: all: %2, desktop: %3, visible:%4, anywherevisible:%5, cachevalid: %6").arg(name()).arg(m_saveSticky).arg(m_saveDesktop).arg(isReallyVisible()).arg(isAnywhereVisible()).arg(m_geoCacheValid));
+ WidgetPluginBase::pHide();
+ KDialogBase::hide();
+}
+
+void ErrorLog::showEvent(QShowEvent *e)
+{
+ KDialogBase::showEvent(e);
+ WidgetPluginBase::pShowEvent(e);
+}
+
+void ErrorLog::hideEvent(QHideEvent *e)
+{
+ KDialogBase::hideEvent(e);
+ WidgetPluginBase::pHideEvent(e);
+}
+
+// IErrorLog
+
+bool ErrorLog::logError (const QString &s)
+{
+ m_teErrors->append("<i>" + QDateTime::currentDateTime().toString(Qt::ISODate) + "</i> " + s + "\n");
+ if (init_done) {
+ showPage(PAGE_ID_ERROR);
+ show();
+ }
+ return true;
+}
+
+bool ErrorLog::logWarning(const QString &s)
+{
+ m_teWarnings->append("<i>" + QDateTime::currentDateTime().toString(Qt::ISODate) + "</i> " + s + "\n");
+ return true;
+}
+
+bool ErrorLog::logInfo (const QString &s)
+{
+ m_teInfos->append("<i>" + QDateTime::currentDateTime().toString(Qt::ISODate) + "</i> " + s + "\n");
+ return true;
+}
+
+bool ErrorLog::logDebug (const QString &s)
+{
+ m_teDebug->append("<i>" + QDateTime::currentDateTime().toString(Qt::ISODate) + "</i> " + s + "\n");
+ return true;
+}
+
+// KDialogBase
+
+
+// store Log Data
+void ErrorLog::slotUser1()
+{
+ KFileDialog fd("",
+ ("*.log|" + i18n("Log Files") + "( *.log )").ascii(),
+ this,
+ i18n("Select Log File").ascii(),
+ true);
+ fd.setMode(KFile::File);
+ fd.setOperationMode(KFileDialog::Saving);
+ fd.setCaption (i18n("Save KRadio Logging Data as ..."));
+
+ if (fd.exec() == QDialog::Accepted) {
+ KURL url = fd.selectedURL();
+
+ KTempFile tmpFile;
+ tmpFile.setAutoDelete(true);
+ QFile *outf = tmpFile.file();
+
+ QTextStream outs(outf);
+ outs.setEncoding(QTextStream::UnicodeUTF8);
+
+ switch (activePageIndex()) {
+ case PAGE_ID_INFO: outs << m_teInfos->text(); break;
+ case PAGE_ID_WARN: outs << m_teWarnings->text(); break;
+ case PAGE_ID_ERROR: outs << m_teErrors->text(); break;
+ case PAGE_ID_DEBUG: outs << m_teDebug->text(); break;
+ default: break;
+ }
+
+ if (outf->status() != IO_Ok) {
+ logError("ErrorLogger: " +
+ i18n("error writing to tempfile %1").arg(tmpFile.name()));
+ return;
+ }
+
+ // close hopefully flushes buffers ;)
+ outf->close();
+
+ if (!KIO::NetAccess::upload(tmpFile.name(), url, this)) {
+ logError("ErrorLogger: " +
+ i18n("error uploading preset file %1").arg(url.url()));
+ }
+ }
+ setIconListAllVisible(true);
+}
+
+
+#include "errorlog.moc"
diff --git a/kradio3/plugins/gui-error-log/errorlog.h b/kradio3/plugins/gui-error-log/errorlog.h
new file mode 100644
index 0000000..d558037
--- /dev/null
+++ b/kradio3/plugins/gui-error-log/errorlog.h
@@ -0,0 +1,89 @@
+/***************************************************************************
+ errorlog.h - description
+ -------------------
+ begin : Sa Sep 13 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_ERRORLOG_H
+#define KRADIO_ERRORLOG_H
+
+#include <kdialogbase.h>
+
+#include "../../src/include/errorlog-interfaces.h"
+#include "../../src/include/widgetplugins.h"
+
+
+class QTextEdit;
+class ErrorLog : public KDialogBase,
+ public WidgetPluginBase,
+ public IErrorLog
+{
+Q_OBJECT
+public:
+ ErrorLog(const QString &name = QString::null);
+ ~ErrorLog();
+
+ virtual QString pluginClassName() const { return "ErrorLog"; }
+ virtual const QString &name() const { return PluginBase::name(); }
+ virtual QString &name() { return PluginBase::name(); }
+
+ virtual bool connectI (Interface *);
+ virtual bool disconnectI (Interface *);
+
+// WidgetPluginBase
+
+ virtual void saveState (KConfig *) const;
+ virtual void restoreState (KConfig *);
+
+public slots:
+ virtual void showOnOrgDesktop();
+ virtual void show();
+ virtual void hide();
+ virtual void toggleShown () { WidgetPluginBase::pToggleShown(); }
+
+protected:
+ QWidget *getWidget() { return this; }
+ const QWidget *getWidget() const { return this; }
+
+ virtual void showEvent(QShowEvent *);
+ virtual void hideEvent(QHideEvent *);
+
+ virtual ConfigPageInfo createConfigurationPage () { return ConfigPageInfo(); }
+ virtual AboutPageInfo createAboutPage () { return AboutPageInfo(); }
+
+// IErrorLog
+
+RECEIVERS:
+ bool logError (const QString &);
+ bool logWarning(const QString &);
+ bool logInfo (const QString &);
+ bool logDebug (const QString &);
+
+// KDialogBase
+
+protected slots:
+
+ void slotUser1();
+
+protected:
+
+ QTextEdit *m_teDebug,
+ *m_teInfos,
+ *m_teWarnings,
+ *m_teErrors;
+
+ bool init_done;
+};
+
+#endif
diff --git a/kradio3/plugins/gui-error-log/po/Makefile.am b/kradio3/plugins/gui-error-log/po/Makefile.am
new file mode 100644
index 0000000..c3b26b7
--- /dev/null
+++ b/kradio3/plugins/gui-error-log/po/Makefile.am
@@ -0,0 +1,2 @@
+PACKAGE = kradio-gui-error-log
+POFILES = AUTO
diff --git a/kradio3/plugins/gui-error-log/po/de.po b/kradio3/plugins/gui-error-log/po/de.po
new file mode 100644
index 0000000..0f357c7
--- /dev/null
+++ b/kradio3/plugins/gui-error-log/po/de.po
@@ -0,0 +1,69 @@
+# translation of de.po to
+# translation of kradio-gui-error-log.po to
+# This file is put in the public domain.
+#
+# Ernst Martin Witte <emw@nocabal.de>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-10 23:20+0100\n"
+"PO-Revision-Date: 2006-11-06 01:15+0100\n"
+"Last-Translator: Ernst Martin Witte <emw@nocabal.de>\n"
+"Language-Team: <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: errorlog.cpp:39
+msgid "Error Logging Window for KRadio"
+msgstr "Fehlerprotokollierungsfenster für KRadio"
+
+#: errorlog.cpp:52
+msgid "Save &as"
+msgstr "Sichern &unter"
+
+#: errorlog.cpp:54
+msgid "Error Logger"
+msgstr "Fehlerprotokoll"
+
+#: errorlog.cpp:57
+msgid "KRadio Logger"
+msgstr "KRadio Fehlerprotokoll"
+
+#: errorlog.cpp:70 errorlog.cpp:84 errorlog.cpp:99 errorlog.cpp:113
+msgid "logging started"
+msgstr "Beginn des Protokollierung"
+
+#: errorlog.cpp:73
+msgid "Warnings"
+msgstr "Warnungen"
+
+#: errorlog.cpp:88
+msgid "Errors"
+msgstr "Fehler"
+
+#: errorlog.cpp:101
+msgid "Debugging"
+msgstr "Debugging"
+
+#: errorlog.cpp:219
+msgid "Log Files"
+msgstr "Protokoll-Dateien"
+
+#: errorlog.cpp:221
+msgid "Select Log File"
+msgstr "Auswahl der Protokolldatei"
+
+#: errorlog.cpp:225
+msgid "Save KRadio Logging Data as ..."
+msgstr "KRadio-Fehlerprotokoll sichern untern ..."
+
+#: errorlog.cpp:247
+msgid "error writing to tempfile %1"
+msgstr "Fehler beim schreiben in die temporäre Datei %1"
+
+#: errorlog.cpp:256
+msgid "error uploading preset file %1"
+msgstr "Fehler beim Upload der Senderdatei %1"
diff --git a/kradio3/plugins/gui-error-log/po/ru.po b/kradio3/plugins/gui-error-log/po/ru.po
new file mode 100644
index 0000000..0bac8e7
--- /dev/null
+++ b/kradio3/plugins/gui-error-log/po/ru.po
@@ -0,0 +1,71 @@
+# translation of ru.po to
+# translation of kradio-gui-error-log.po to
+# This file is put in the public domain.
+# Алексей Кузнецов <Alexey.Kouznetsov@GMail.com>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-11 02:11+0100\n"
+"PO-Revision-Date: 2006-11-08 12:56+0300\n"
+"Last-Translator: Алексей Кузнецов <Alexey.Kouznetsov@GMail.com>\n"
+"Language-Team: <ru@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10\n"
+
+#: errorlog.cpp:39
+msgid "Error Logging Window for KRadio"
+msgstr "Окно ведения журнала ошибок KRadio"
+
+#: errorlog.cpp:52
+msgid "Save &as"
+msgstr "Сохранить &как"
+
+#: errorlog.cpp:54
+msgid "Error Logger"
+msgstr "Журнал ошибок"
+
+#: errorlog.cpp:57
+msgid "KRadio Logger"
+msgstr "Журнал KRadio"
+
+#: errorlog.cpp:70 errorlog.cpp:84 errorlog.cpp:99 errorlog.cpp:113
+msgid "logging started"
+msgstr "Журналирование включено"
+
+#: errorlog.cpp:73
+msgid "Warnings"
+msgstr "Предупреждения"
+
+#: errorlog.cpp:88
+msgid "Errors"
+msgstr "Ошибки"
+
+#: errorlog.cpp:101
+msgid "Debugging"
+msgstr ""
+"Отладочные\n"
+"сообщения"
+
+#: errorlog.cpp:219
+msgid "Log Files"
+msgstr "Файлы журнала"
+
+#: errorlog.cpp:221
+msgid "Select Log File"
+msgstr "Выберите файлы журнала"
+
+#: errorlog.cpp:225
+msgid "Save KRadio Logging Data as ..."
+msgstr "Сохранить данные журнала KRadio как..."
+
+#: errorlog.cpp:247
+msgid "error writing to tempfile %1"
+msgstr "Ошибка записи во временный файл %1"
+
+#: errorlog.cpp:256
+msgid "error uploading preset file %1"
+msgstr "Ошибка выгрузки файла настроек %1"
diff --git a/kradio3/plugins/gui-quickbar/Makefile.am b/kradio3/plugins/gui-quickbar/Makefile.am
new file mode 100644
index 0000000..09c58ee
--- /dev/null
+++ b/kradio3/plugins/gui-quickbar/Makefile.am
@@ -0,0 +1,18 @@
+SUBDIRS = po .
+
+INCLUDES = -I$(top_builddir)/kradio3/src $(all_includes)
+METASOURCES = AUTO
+
+libkradio_LTLIBRARIES = libquickbar.la
+libquickbar_la_SOURCES = buttonflowlayout.cpp quickbar.cpp \
+ quickbar-configuration.cpp
+libquickbar_la_LDFLAGS = -module -avoid-version $(KDE_RPATH) $(all_libraries)
+
+noinst_HEADERS = buttonflowlayout.h quickbar-configuration.h quickbar.h
+
+#messages: rc.cpp
+# $(XGETTEXT) *.cpp *.h -o po/kradio-gui-quickbar.pot
+
+messages: rc.cpp
+ $(EXTRACTRC) *.rc *.ui >> rc.cpp
+ $(XGETTEXT) rc.cpp *.h *.cpp -o po/kradio-gui-quickbar.pot
diff --git a/kradio3/plugins/gui-quickbar/buttonflowlayout.cpp b/kradio3/plugins/gui-quickbar/buttonflowlayout.cpp
new file mode 100644
index 0000000..40d7da4
--- /dev/null
+++ b/kradio3/plugins/gui-quickbar/buttonflowlayout.cpp
@@ -0,0 +1,232 @@
+/****************************************************************************
+** $Id: buttonflowlayout.cpp 272 2005-05-18 08:12:51Z emw $
+**
+** Implementing your own layout: flow example
+**
+** Copyright (C) 1996 by Trolltech AS. All rights reserved.
+**
+** This file is part of an example program for Qt. This example
+** program may be used, distributed and modified without limitation.
+**
+*****************************************************************************/
+/**
+ Modified 2002 by Klas Kalass (klas.kalass@gmx.de) for kradio
+ */
+
+#include <kdebug.h>
+
+#include "buttonflowlayout.h"
+
+/*********************************************/
+/* Iterator */
+class ButtonFlowLayoutIterator :public QGLayoutIterator
+{
+public:
+ ButtonFlowLayoutIterator( QPtrList<QLayoutItem> *l ) :idx(0), list(l) {}
+ uint count() const;
+ QLayoutItem *current();
+ QLayoutItem *next();
+ QLayoutItem *takeCurrent();
+
+private:
+ int idx;
+ QPtrList<QLayoutItem> *list;
+
+};
+
+uint ButtonFlowLayoutIterator::count() const
+{
+ return list->count();
+}
+
+QLayoutItem *ButtonFlowLayoutIterator::current()
+{
+ return idx < int(count()) ? list->at(idx) : 0;
+}
+
+QLayoutItem *ButtonFlowLayoutIterator::next()
+{
+ idx++; return current();
+}
+
+QLayoutItem *ButtonFlowLayoutIterator::takeCurrent()
+{
+ return idx < int(count()) ? list->take( idx ) : 0;
+}
+
+/**************************************************************/
+
+ButtonFlowLayout::ButtonFlowLayout( QWidget *parent, int margin, int spacing,
+ const char *name )
+ : QLayout( parent, margin, spacing, name ),
+ cached_width(0)
+{
+}
+
+ButtonFlowLayout::ButtonFlowLayout( QLayout* parentLayout, int spacing, const char *name )
+ : QLayout( parentLayout, spacing, name ),
+ cached_width(0)
+{
+}
+
+ButtonFlowLayout::ButtonFlowLayout( int spacing, const char *name )
+ : QLayout( spacing, name ),
+ cached_width(0)
+{
+}
+
+ButtonFlowLayout::~ButtonFlowLayout()
+{
+ deleteAllItems();
+}
+
+
+int ButtonFlowLayout::heightForWidth( int w ) const
+{
+ if ( cached_width != w ) {
+ //Not all C++ compilers support "mutable" yet:
+ ButtonFlowLayout * mthis = (ButtonFlowLayout*)this;
+ int h = mthis->doLayout( QRect(0,0,w,0), TRUE );
+ mthis->cached_hfw = h;
+ mthis->cached_width = w;
+ return h;
+ }
+ return cached_hfw;
+}
+
+void ButtonFlowLayout::addItem( QLayoutItem *item)
+{
+ list.append( item );
+}
+
+bool ButtonFlowLayout::hasHeightForWidth() const
+{
+ return TRUE;
+}
+
+QSize ButtonFlowLayout::sizeHint() const
+{
+ return minimumSize();
+}
+
+QSizePolicy::ExpandData ButtonFlowLayout::expanding() const
+{
+ return QSizePolicy::NoDirection;
+}
+
+QLayoutIterator ButtonFlowLayout::iterator()
+{
+ return QLayoutIterator( new ButtonFlowLayoutIterator( &list ) );
+}
+
+void ButtonFlowLayout::setGeometry( const QRect &r )
+{
+ QLayout::setGeometry( r );
+ doLayout( r );
+}
+
+int ButtonFlowLayout::doLayout( const QRect &r, bool testonly )
+{
+/* kdDebug() << "buttonflowlayout::doLayout ("
+ << r.x() << "," << r.y() << ","
+ << r.width() << "," << r.height() << ", " << testonly << ")\n";
+*/
+ float x = r.x();
+ float y = r.y();
+ int h = 0; //height of this line so far.
+ float buttonWidth = 0;
+ int buttonHeight = 0;
+ int linecount = 0;
+ int totalWidth = r.width();
+ int totalHeight = r.height();
+
+ QPtrListIterator<QLayoutItem> it(list);
+ QLayoutItem *o;
+
+ // get the width of the biggest Button
+
+ it.toFirst();
+ while ( (o=it.current()) != 0 ) {
+ ++it;
+ buttonWidth = QMAX( buttonWidth, o->sizeHint().width() );
+ buttonHeight = QMAX( buttonHeight, o->sizeHint().height() );
+ }
+
+ // calculate the optimal width
+ unsigned int columns = (totalWidth + spacing()) /
+ ((int)buttonWidth + spacing());
+ if (columns > it.count() ) columns = it.count();
+ if (columns == 0) columns = 1; // avoid division by zero
+
+
+ int rows = (it.count() - 1) / columns + 1;
+ float deltaH = (float)(totalHeight - rows * buttonHeight - (rows - 1) * spacing())
+ / (float)(rows + 1) ;
+ if (deltaH < 0) deltaH = 0;
+
+ y += deltaH;
+
+ buttonWidth = (float)(totalWidth - spacing()*(columns-1)) / (float)columns;
+
+/* fprintf (stderr, "cols = %i col-width = %f\n"
+ "rows = %i row-height = %i\n"
+ "w = %i h = %i\n",
+ columns, buttonWidth,
+ rows, buttonHeight,
+ totalWidth, totalHeight
+ );
+*/
+ // calculate the positions and sizes
+ it.toFirst();
+ while ( (o = it.current()) != 0 ) {
+
+// fprintf (stderr, "x = %i y = %i\n", x, (int)y);
+ ++it;
+ int btnRight = (int)rint(x + buttonWidth) - 1,
+ btnLeft = (int)rint(x);
+
+ if ( btnRight > r.right() && h > 0 ) {
+ x = r.x();
+ btnRight = (int)rint(x + buttonWidth) - 1;
+ btnLeft = (int)rint(x);
+
+ y += h + spacing() + deltaH;
+ h = 0;
+ linecount++;
+ }
+ if (!testonly)
+ o->setGeometry( QRect( QPoint( btnLeft, (int)rint(y) ),
+ QSize( btnRight - btnLeft + 1,
+ buttonHeight) )
+ );
+
+ x += buttonWidth + spacing();
+ h = QMAX( h, buttonHeight );
+ }
+
+ int ret = (int)rint(y + h + deltaH) - r.y();
+
+// kdDebug() << "ButtonFlowLayout::doLayout() = " << ret << endl;
+ return ret;
+}
+
+
+QSize ButtonFlowLayout::minimumSize() const
+{
+ return minimumSize(geometry().size());
+}
+
+
+QSize ButtonFlowLayout::minimumSize(const QSize &r) const
+{
+ QSize s(0, 0);
+
+ for (QPtrListIterator<QLayoutItem> it(list); it.current(); ++it) {
+ QLayoutItem *o = it.current();
+ s = s.expandedTo( o->sizeHint()); //minimumSize() );
+ }
+
+ s.setHeight(heightForWidth(r.width()));
+
+ return s;
+}
diff --git a/kradio3/plugins/gui-quickbar/buttonflowlayout.h b/kradio3/plugins/gui-quickbar/buttonflowlayout.h
new file mode 100644
index 0000000..337a850
--- /dev/null
+++ b/kradio3/plugins/gui-quickbar/buttonflowlayout.h
@@ -0,0 +1,60 @@
+/****************************************************************************
+** $Id: buttonflowlayout.h 471 2006-11-11 17:04:51Z emw $
+**
+** Definition of simple flow layout for custom layout example
+**
+** Created : 979899
+**
+** Copyright (C) 1997 by Trolltech AS. All rights reserved.
+**
+** This file is part of an example program for Qt. This example
+** program may be used, distributed and modified without limitation.
+**
+*****************************************************************************/
+/**
+ Modified 2002 by Klas Kalass (klas.kalass@gmx.de) for kradio
+ */
+#ifndef BUTTONFLOWLAYOUT_H
+#define BUTTONFLOWLAYOUT_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "../../src/include/utils.h"
+
+#include <qlayout.h>
+#include <qptrlist.h>
+
+class ButtonFlowLayout : public QLayout
+{
+public:
+ ButtonFlowLayout( QWidget *parent, int margin = 0, int spacing=-1,
+ const char *name=0 );
+
+ ButtonFlowLayout( QLayout* parentLayout, int spacing=-1, const char *name=0 );
+
+ ButtonFlowLayout( int spacing=-1, const char *name=0 );
+
+ ~ButtonFlowLayout();
+
+ void addItem( QLayoutItem *item);
+ bool hasHeightForWidth() const;
+ int heightForWidth( int ) const;
+ QSize sizeHint() const;
+ QSize minimumSize() const;
+ QSize minimumSize(const QSize &r) const; // minimumSize is dependent from width
+ QLayoutIterator iterator();
+ QSizePolicy::ExpandData expanding() const;
+
+protected:
+ void setGeometry( const QRect& );
+
+private:
+ int doLayout( const QRect&, bool testonly = FALSE );
+ QPtrList<QLayoutItem> list;
+ int cached_width;
+ int cached_hfw;
+};
+
+#endif
diff --git a/kradio3/plugins/gui-quickbar/po/Makefile.am b/kradio3/plugins/gui-quickbar/po/Makefile.am
new file mode 100644
index 0000000..fbee5b4
--- /dev/null
+++ b/kradio3/plugins/gui-quickbar/po/Makefile.am
@@ -0,0 +1,2 @@
+PACKAGE = kradio-gui-quickbar
+POFILES = AUTO
diff --git a/kradio3/plugins/gui-quickbar/po/de.po b/kradio3/plugins/gui-quickbar/po/de.po
new file mode 100644
index 0000000..9ac8533
--- /dev/null
+++ b/kradio3/plugins/gui-quickbar/po/de.po
@@ -0,0 +1,53 @@
+# translation of de.po to
+# translation of kradio-gui-quickbar.po to
+# This file is put in the public domain.
+#
+# Ernst Martin Witte <emw@nocabal.de>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-10 23:20+0100\n"
+"PO-Revision-Date: 2006-11-06 00:32+0100\n"
+"Last-Translator: Ernst Martin Witte <emw@nocabal.de>\n"
+"Language-Team: <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Ernst Martin Witte "
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "emw@nocabal.de"
+
+#: quickbar.cpp:42
+msgid "Radio Station Quick Selection Toolbar"
+msgstr "Senderkurzwahlfenster"
+
+#: quickbar.cpp:48
+msgid "Quickbar Plugin"
+msgstr "Schnellauswahlfenster"
+
+#: quickbar.cpp:139
+msgid "Quickbar"
+msgstr "Kurzwahlfenster"
+
+#: quickbar.cpp:140
+msgid "Quickbar Configuration"
+msgstr "Konfiguration des Kurzwahlfensters"
+
+#: quickbar.cpp:404
+msgid "contentsDragEnterEvent accepted"
+msgstr "contentsDragEnterEvent angenommen"
+
+#: quickbar.cpp:406
+msgid "contentsDragEnterEvent rejected"
+msgstr "contentsDragEnterEvent abgelehnt"
diff --git a/kradio3/plugins/gui-quickbar/po/ru.po b/kradio3/plugins/gui-quickbar/po/ru.po
new file mode 100644
index 0000000..7742fde
--- /dev/null
+++ b/kradio3/plugins/gui-quickbar/po/ru.po
@@ -0,0 +1,55 @@
+# translation of ru.po to
+# translation of kradio-gui-quickbar.po to
+# This file is put in the public domain.
+# Алексей Кузнецов <Alexey.Kouznetsov@GMail.com>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-11 02:11+0100\n"
+"PO-Revision-Date: 2006-11-08 12:00+0300\n"
+"Last-Translator: Алексей Кузнецов <Alexey.Kouznetsov@GMail.com>\n"
+"Language-Team: <ru@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10\n"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Алексей Кузнецов"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "Alexey.Kouznetsov@GMail.com"
+
+#: quickbar.cpp:42
+msgid "Radio Station Quick Selection Toolbar"
+msgstr "Панель быстрого выбора радиостанций"
+
+#: quickbar.cpp:48
+msgid "Quickbar Plugin"
+msgstr "Панель быстрого доступа"
+
+#: quickbar.cpp:139
+msgid "Quickbar"
+msgstr ""
+"Панель\n"
+" радиостанций"
+
+#: quickbar.cpp:140
+msgid "Quickbar Configuration"
+msgstr "Настройка панели быстрого доступа"
+
+#: quickbar.cpp:404
+msgid "contentsDragEnterEvent accepted"
+msgstr "contentsDragEnterEvent accepted"
+
+#: quickbar.cpp:406
+msgid "contentsDragEnterEvent rejected"
+msgstr "contentsDragEnterEvent rejected"
diff --git a/kradio3/plugins/gui-quickbar/quickbar-configuration.cpp b/kradio3/plugins/gui-quickbar/quickbar-configuration.cpp
new file mode 100644
index 0000000..bb8b0f6
--- /dev/null
+++ b/kradio3/plugins/gui-quickbar/quickbar-configuration.cpp
@@ -0,0 +1,35 @@
+/***************************************************************************
+ quickbar-configuration.cpp - description
+ -------------------
+ begin : Son Aug 3 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "quickbar-configuration.h"
+
+using namespace std;
+
+QuickbarConfiguration::QuickbarConfiguration (QWidget *parent)
+ : StationSelector(parent)
+{
+}
+
+
+QuickbarConfiguration::~QuickbarConfiguration ()
+{
+}
+
+
+
+
+#include "quickbar-configuration.moc"
diff --git a/kradio3/plugins/gui-quickbar/quickbar-configuration.h b/kradio3/plugins/gui-quickbar/quickbar-configuration.h
new file mode 100644
index 0000000..e2e1c08
--- /dev/null
+++ b/kradio3/plugins/gui-quickbar/quickbar-configuration.h
@@ -0,0 +1,36 @@
+/***************************************************************************
+ quickbar-configuration.h - description
+ -------------------
+ begin : Son Aug 3 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_QUICKBAR_CONFIGURATION_H
+#define KRADIO_QUICKBAR_CONFIGURATION_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "../../src/include/stationselector.h"
+
+class QuickbarConfiguration : public StationSelector
+{
+Q_OBJECT
+public :
+ QuickbarConfiguration (QWidget *parent);
+ ~QuickbarConfiguration ();
+
+};
+
+#endif
diff --git a/kradio3/plugins/gui-quickbar/quickbar.cpp b/kradio3/plugins/gui-quickbar/quickbar.cpp
new file mode 100644
index 0000000..628a1bf
--- /dev/null
+++ b/kradio3/plugins/gui-quickbar/quickbar.cpp
@@ -0,0 +1,424 @@
+/***************************************************************************
+ quickbar.cpp - description
+ -------------------
+ begin : Mon Feb 11 2002
+ copyright : (C) 2002 by Martin Witte / Frank Schwanz
+ email : witte@kawo1.rwth-aachen.de / schwanz@fh-brandenburg.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include <qtooltip.h>
+#include <qnamespace.h>
+#include <qhbuttongroup.h>
+#include <qvbuttongroup.h>
+
+#include <ktoolbarbutton.h>
+#include <kwin.h>
+#include <klocale.h>
+#include <kglobal.h>
+#include <kconfig.h>
+#include <kaboutdata.h>
+
+#include "../../src/include/aboutwidget.h"
+#include "../../src/include/station-drag-object.h"
+#include "../../src/include/stationlist.h"
+#include "../../src/include/radiostation.h"
+
+#include "buttonflowlayout.h"
+#include "quickbar-configuration.h"
+#include "quickbar.h"
+
+///////////////////////////////////////////////////////////////////////
+//// plugin library functions
+
+PLUGIN_LIBRARY_FUNCTIONS(QuickBar, "kradio-gui-quickbar", i18n("Radio Station Quick Selection Toolbar"));
+
+/////////////////////////////////////////////////////////////////////////////
+
+QuickBar::QuickBar(const QString &name)
+ : QWidget(NULL, name.ascii()),
+ WidgetPluginBase(name, i18n("Quickbar Plugin")),
+ m_layout(NULL),
+ m_buttonGroup(NULL),
+ m_showShortName(true),
+ m_ignoreNoticeActivation(false)
+{
+ autoSetCaption();
+ setAcceptDrops(true);
+}
+
+
+QuickBar::~QuickBar()
+{
+}
+
+
+bool QuickBar::connectI(Interface *i)
+{
+ bool a = IRadioClient::connectI(i);
+ bool b = IStationSelection::connectI(i);
+ bool c = PluginBase::connectI(i);
+
+ return a || b || c;
+}
+
+
+bool QuickBar::disconnectI(Interface *i)
+{
+ bool a = IRadioClient::disconnectI(i);
+ bool b = IStationSelection::disconnectI(i);
+ bool c = PluginBase::disconnectI(i);
+
+ return a || b || c;
+}
+
+
+// IStationSelection
+
+bool QuickBar::setStationSelection(const QStringList &sl)
+{
+ if (m_stationIDs != sl) {
+ m_stationIDs = sl;
+ rebuildGUI();
+ notifyStationSelectionChanged(m_stationIDs);
+ }
+ return true;
+}
+
+// PluginBase methods
+
+
+void QuickBar::restoreState (KConfig *config)
+{
+ config->setGroup(QString("quickBar-") + name());
+
+ WidgetPluginBase::restoreState(config, false);
+
+ int nStations = config->readNumEntry("nStations", 0);
+ m_stationIDs.clear();
+ for (int i = 1; i <= nStations; ++i) {
+ QString s = config->readEntry(QString("stationID-") + QString().setNum(i), QString::null);
+ if (s.length())
+ m_stationIDs += s;
+ }
+
+ rebuildGUI();
+ notifyStationSelectionChanged(m_stationIDs);
+}
+
+
+void QuickBar::saveState (KConfig *config) const
+{
+ config->setGroup(QString("quickBar-") + name());
+
+ WidgetPluginBase::saveState(config);
+
+ config->writeEntry("nStations", m_stationIDs.size());
+ int i = 1;
+ QStringList::const_iterator end = m_stationIDs.end();
+ for (QStringList::const_iterator it = m_stationIDs.begin(); it != end; ++it, ++i) {
+ config->writeEntry(QString("stationID-") + QString().setNum(i), *it);
+ }
+}
+
+
+ConfigPageInfo QuickBar::createConfigurationPage()
+{
+ QuickbarConfiguration *conf = new QuickbarConfiguration(NULL);
+ connectI (conf);
+ return ConfigPageInfo(
+ conf,
+ i18n("Quickbar"),
+ i18n("Quickbar Configuration"),
+ "view_icon"
+ );
+}
+
+
+AboutPageInfo QuickBar::createAboutPage()
+{
+/* KAboutData aboutData("kradio",
+ NULL,
+ NULL,
+ I18N_NOOP("Quickback for KRadio"),
+ KAboutData::License_GPL,
+ "(c) 2002-2005 Martin Witte, Klas Kalass",
+ 0,
+ "http://sourceforge.net/projects/kradio",
+ 0);
+ aboutData.addAuthor("Martin Witte", "", "witte@kawo1.rwth-aachen.de");
+ aboutData.addAuthor("Klas Kalass", "", "klas.kalass@gmx.de");
+
+ return AboutPageInfo(
+ new KRadioAboutWidget(aboutData, KRadioAboutWidget::AbtTabbed),
+ i18n("Quickbar"),
+ i18n("Quickbar Plugin"),
+ "view_icon"
+ );*/
+ return AboutPageInfo();
+}
+
+
+// IRadio methods
+
+bool QuickBar::noticePowerChanged(bool /*on*/)
+{
+ activateCurrentButton();
+ autoSetCaption();
+ return true;
+}
+
+
+bool QuickBar::noticeStationChanged (const RadioStation &rs, int /*idx*/)
+{
+ if (!m_ignoreNoticeActivation)
+ activateButton(rs);
+ autoSetCaption();
+ return true;
+}
+
+
+bool QuickBar::noticeStationsChanged(const StationList &/*sl*/)
+{
+ // FIXME
+ // we can remove no longer existent stationIDs,
+ // but it doesn't matter if we don't care.
+ rebuildGUI();
+ return true;
+}
+
+
+// button management methods
+
+void QuickBar::buttonClicked(int id)
+{
+ // ouch, but we are still using QStringList :(
+ if (queryIsPowerOn() && id == getButtonID(queryCurrentStation())) {
+ sendPowerOff();
+ } else {
+
+ int k = 0;
+ QStringList::iterator end = m_stationIDs.end();
+ for (QStringList::iterator it = m_stationIDs.begin(); it != end; ++it, ++k) {
+ if (k == id) {
+ const RawStationList &sl = queryStations().all();
+ const RadioStation &rs = sl.stationWithID(*it);
+ bool old = m_ignoreNoticeActivation;
+ m_ignoreNoticeActivation = true;
+ sendActivateStation(rs);
+ m_ignoreNoticeActivation = old;
+ sendPowerOn();
+ }
+ }
+ }
+ // Problem: if we click a button twice, there will be no
+ // "station changed"-notification. Thus it would be possible to
+ // enable a button even if power is off or the radio does not
+ // accept the radiostation
+ //activateCurrentButton();
+}
+
+
+int QuickBar::getButtonID(const RadioStation &rs) const
+{
+ QString stationID = rs.stationID();
+ int k = 0;
+ QStringList::const_iterator end = m_stationIDs.end();
+ for (QStringList::const_iterator it = m_stationIDs.begin(); it != end; ++it, ++k) {
+ if (*it == stationID)
+ return k;
+ }
+ return -1;
+}
+
+
+void QuickBar::activateCurrentButton()
+{
+ activateButton(queryCurrentStation());
+}
+
+
+void QuickBar::activateButton(const RadioStation &rs)
+{
+ int buttonID = getButtonID(rs);
+ bool pwr = queryIsPowerOn();
+
+ if (pwr && buttonID >= 0) {
+ m_buttonGroup->setButton(buttonID);
+ } else {
+ for (QToolButton *b = m_buttons.first(); b; b = m_buttons.next()) {
+ b->setOn(false);
+ }
+ }
+ autoSetCaption();
+}
+
+
+
+// KDE/Qt gui
+
+
+void QuickBar::rebuildGUI()
+{
+ if (m_layout) delete m_layout;
+ if (m_buttonGroup) delete m_buttonGroup;
+
+ for (QPtrListIterator<QToolButton> it(m_buttons); it.current(); ++it)
+ delete it.current();
+ m_buttons.clear();
+
+ m_layout = new ButtonFlowLayout(this);
+ m_layout->setMargin(1);
+ m_layout->setSpacing(2);
+
+ m_buttonGroup = new QButtonGroup(this);
+ QObject::connect (m_buttonGroup, SIGNAL(clicked(int)), this, SLOT(buttonClicked(int)));
+ // we use buttonGroup to enable automatic toggle/untoggle
+ m_buttonGroup->setExclusive(true);
+ m_buttonGroup->setFrameStyle(QFrame::NoFrame);
+ m_buttonGroup->show();
+
+ int buttonID = 0;
+ const RawStationList &stations = queryStations().all();
+
+ QStringList::iterator end = m_stationIDs.end();
+ for (QStringList::iterator it = m_stationIDs.begin(); it != end; ++it, ++buttonID) {
+
+ const RadioStation &rs = stations.stationWithID(*it);
+ if (! rs.isValid()) continue;
+
+ QToolButton *b = new QToolButton(this);
+ m_buttons.append(b);
+ b->setToggleButton(true);
+ if (rs.iconName().length())
+ b->setIconSet(QPixmap(rs.iconName()));
+ else
+ b->setText(m_showShortName ? rs.shortName() : rs.name());
+
+ b->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred));
+
+ QToolTip::add(b, rs.longName());
+ if (isVisible()) b->show();
+
+
+ m_buttonGroup->insert(b, buttonID);
+ m_layout->add(b);
+ }
+
+ // activate correct button
+ activateCurrentButton();
+
+ // calculate geometry
+ if (m_layout) {
+ QRect r = geometry();
+ int h = m_layout->heightForWidth( r.width());
+
+ if (h > r.height())
+ setGeometry(r.x(), r.y(), r.width(), h);
+ }
+}
+
+
+
+
+void QuickBar::show()
+{
+// KWin::setType(winId(), NET::Toolbar);
+ WidgetPluginBase::pShow();
+ QWidget::show();
+}
+
+
+void QuickBar::showOnOrgDesktop()
+{
+ WidgetPluginBase::pShowOnOrgDesktop();
+ //QWidget::show();
+}
+
+
+void QuickBar::hide()
+{
+ WidgetPluginBase::pHide();
+ QWidget::hide();
+}
+
+void QuickBar::showEvent(QShowEvent *e)
+{
+ QWidget::showEvent(e);
+ WidgetPluginBase::pShowEvent(e);
+}
+
+void QuickBar::hideEvent(QHideEvent *e)
+{
+ QWidget::hideEvent(e);
+ WidgetPluginBase::pHideEvent(e);
+}
+
+
+void QuickBar::setGeometry (int x, int y, int w, int h)
+{
+ if (m_layout) {
+ QSize marginSize(m_layout->margin()*2, m_layout->margin()*2);
+ setMinimumSize(m_layout->minimumSize(QSize(w, h) - marginSize) + marginSize);
+ }
+ QWidget::setGeometry (x, y, w, h);
+}
+
+
+void QuickBar::setGeometry (const QRect &r)
+{
+ setGeometry (r.x(), r.y(), r.width(), r.height());
+}
+
+
+void QuickBar::resizeEvent (QResizeEvent *e)
+{
+ // minimumSize might change because of the flow layout
+ if (m_layout) {
+ QSize marginSize(m_layout->margin()*2, m_layout->margin()*2);
+ setMinimumSize(m_layout->minimumSize(e->size() - marginSize) + marginSize);
+ }
+
+ QWidget::resizeEvent (e);
+}
+
+
+void QuickBar::autoSetCaption()
+{
+ const RadioStation &rs = queryCurrentStation();
+ setCaption((queryIsPowerOn() && rs.isValid()) ? rs.longName() : QString("KRadio"));
+}
+
+void QuickBar::dragEnterEvent(QDragEnterEvent* event)
+{
+ bool a = StationDragObject::canDecode(event);
+ if (a)
+ IErrorLogClient::staticLogDebug(i18n("contentsDragEnterEvent accepted"));
+ else
+ IErrorLogClient::staticLogDebug(i18n("contentsDragEnterEvent rejected"));
+ event->accept(a);
+}
+
+void QuickBar::dropEvent(QDropEvent* event)
+{
+ QStringList list;
+
+ if ( StationDragObject::decode(event, list) ) {
+ QStringList l = getStationSelection();
+ for (QValueListConstIterator<QString> it = list.begin(); it != list.end(); ++it)
+ if (!l.contains(*it))
+ l.append(*it);
+ setStationSelection(l);
+ }
+}
+
+
+#include "quickbar.moc"
diff --git a/kradio3/plugins/gui-quickbar/quickbar.h b/kradio3/plugins/gui-quickbar/quickbar.h
new file mode 100644
index 0000000..7bf5193
--- /dev/null
+++ b/kradio3/plugins/gui-quickbar/quickbar.h
@@ -0,0 +1,138 @@
+/***************************************************************************
+ quickbar.h - description
+ -------------------
+ begin : Mon Feb 11 2002
+ copyright : (C) 2002 by Martin Witte / Klas Kalass
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_QUICKBAR_H
+#define KRADIO_QUICKBAR_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qwidget.h>
+
+#include "../../src/include/radio_interfaces.h"
+#include "../../src/include/widgetplugins.h"
+#include "../../src/include/stationselection_interfaces.h"
+
+class ButtonFlowLayout;
+class QButtonGroup;
+class KConfig;
+class QToolButton;
+
+/**
+ *@author Martin Witte / Klas Kalass
+ */
+
+class QuickBar : public QWidget,
+ public WidgetPluginBase,
+ public IRadioClient,
+ public IStationSelection
+{
+Q_OBJECT
+public:
+ QuickBar(const QString &name = QString::null);
+ ~QuickBar();
+
+ virtual QString pluginClassName() const { return "QuickBar"; }
+
+ const QString &name() const { return PluginBase::name(); }
+ QString &name() { return PluginBase::name(); }
+
+ virtual bool connectI(Interface *i);
+ virtual bool disconnectI(Interface *i);
+
+ // IStationSelection
+
+RECEIVERS:
+ bool setStationSelection(const QStringList &sl);
+
+ANSWERS:
+ const QStringList & getStationSelection () const { return m_stationIDs; }
+
+
+ // PluginBase
+
+public:
+ virtual void saveState (KConfig *) const;
+ virtual void restoreState (KConfig *);
+
+ virtual ConfigPageInfo createConfigurationPage();
+ virtual AboutPageInfo createAboutPage();
+
+ // IRadioClient
+
+RECEIVERS:
+ bool noticePowerChanged(bool on);
+ bool noticeStationChanged (const RadioStation &, int idx);
+ bool noticeStationsChanged(const StationList &sl);
+ bool noticePresetFileChanged(const QString &/*f*/) { return false; }
+
+ bool noticeCurrentSoundStreamIDChanged(SoundStreamID /*id*/) { return false; }
+
+ // button/station Management
+
+
+protected slots:
+
+ void buttonClicked(int id);
+
+protected:
+
+ int getButtonID(const RadioStation &rs) const;
+ void activateCurrentButton();
+ void activateButton(const RadioStation &);
+
+ void autoSetCaption();
+
+
+ void dragEnterEvent(QDragEnterEvent* event);
+ void dropEvent(QDropEvent* event);
+
+ // KDE/QT
+
+public slots:
+
+ void toggleShown() { WidgetPluginBase::pToggleShown(); }
+ void show();
+ void hide();
+ void showOnOrgDesktop();
+ void setGeometry (const QRect &r);
+ void setGeometry (int x, int y, int w, int h);
+
+protected:
+ void rebuildGUI();
+ void showEvent(QShowEvent *);
+ void hideEvent(QHideEvent *);
+ void resizeEvent(QResizeEvent *);
+
+ const QWidget *getWidget() const { return this; }
+ QWidget *getWidget() { return this; }
+
+protected :
+
+ ButtonFlowLayout *m_layout;
+ QButtonGroup *m_buttonGroup;
+
+ QPtrList<QToolButton> m_buttons;
+
+ // config
+ bool m_showShortName;
+ QStringList m_stationIDs;
+
+ bool m_ignoreNoticeActivation;
+};
+#endif
diff --git a/kradio3/plugins/gui-standard-display/Makefile.am b/kradio3/plugins/gui-standard-display/Makefile.am
new file mode 100644
index 0000000..a7e7544
--- /dev/null
+++ b/kradio3/plugins/gui-standard-display/Makefile.am
@@ -0,0 +1,22 @@
+SUBDIRS = po .
+
+INCLUDES = $(all_includes)
+METASOURCES = AUTO
+
+libkradio_LTLIBRARIES = libstandard-display.la
+libstandard_display_la_SOURCES = displaycfg.cpp displaycfg_interfaces.cpp \
+ radioview-configuration.cpp radioview.cpp \
+ radioview_element.cpp \
+ radioview_frequencyradio.cpp \
+ radioview_frequencyseeker.cpp \
+ radioview_volume.cpp
+libstandard_display_la_LDFLAGS = -module -avoid-version $(KDE_RPATH) $(all_libraries)
+
+noinst_HEADERS = displaycfg.h displaycfg_interfaces.h radioview-configuration.h radioview_element.h radioview_frequencyradio.h radioview_frequencyseeker.h radioview.h radioview_volume.h
+
+#messages: rc.cpp
+# $(XGETTEXT) *.cpp *.h -o po/kradio-gui-standard-display.pot
+
+messages: rc.cpp
+ $(EXTRACTRC) *.rc *.ui >> rc.cpp
+ $(XGETTEXT) rc.cpp *.h *.cpp -o po/kradio-gui-standard-display.pot
diff --git a/kradio3/plugins/gui-standard-display/displaycfg.cpp b/kradio3/plugins/gui-standard-display/displaycfg.cpp
new file mode 100644
index 0000000..8e26e72
--- /dev/null
+++ b/kradio3/plugins/gui-standard-display/displaycfg.cpp
@@ -0,0 +1,145 @@
+/***************************************************************************
+ displaycfg.cpp - description
+ -------------------
+ begin : Fr Aug 15 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "displaycfg.h"
+#include <kcolorbutton.h>
+#include <kcolordialog.h>
+#include <kfontdialog.h>
+
+#include <qlayout.h>
+#include <klocale.h>
+#include <qlabel.h>
+#include <qbuttongroup.h>
+
+DisplayConfiguration::DisplayConfiguration(QWidget *parent)
+ : QWidget (parent),
+ m_dirty(true),
+ m_ignore_gui_updates(false)
+{
+ QGroupBox *bg = new QGroupBox(i18n("Display Colors"), this);
+ bg->setColumnLayout(0, Qt::Vertical );
+ bg->layout()->setSpacing( 8 );
+ bg->layout()->setMargin( 12 );
+ QGridLayout *gl = new QGridLayout (bg->layout());
+
+ m_btnActive = new KColorButton(queryDisplayActiveColor(), bg);
+ m_btnInactive = new KColorButton(queryDisplayInactiveColor(), bg);
+ m_btnBkgnd = new KColorButton(queryDisplayBkgndColor(), bg);
+
+ connect(m_btnActive, SIGNAL(changed(const QColor &)), this, SLOT(slotSetDirty()));
+ connect(m_btnInactive, SIGNAL(changed(const QColor &)), this, SLOT(slotSetDirty()));
+ connect(m_btnBkgnd, SIGNAL(changed(const QColor &)), this, SLOT(slotSetDirty()));
+
+ QLabel *l1 = new QLabel(i18n("Active Text"), bg);
+ QLabel *l2 = new QLabel(i18n("Inactive Text"), bg);
+ QLabel *l3 = new QLabel(i18n("Background Color"), bg);
+
+ l1->setAlignment(QLabel::AlignCenter);
+ l2->setAlignment(QLabel::AlignCenter);
+ l3->setAlignment(QLabel::AlignCenter);
+
+ l1->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
+ l2->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
+ l3->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
+ m_btnActive ->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding));
+ m_btnInactive->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding));
+ m_btnBkgnd ->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding));
+
+ m_btnActive ->setMinimumSize(QSize(40, 40));
+ m_btnInactive->setMinimumSize(QSize(40, 40));
+ m_btnBkgnd ->setMinimumSize(QSize(40, 40));
+
+ gl->addWidget (l1, 0, 0, Qt::AlignCenter);
+ gl->addWidget (l2, 0, 1, Qt::AlignCenter);
+ gl->addWidget (l3, 0, 2, Qt::AlignCenter);
+ gl->addWidget (m_btnActive, 1, 0);
+ gl->addWidget (m_btnInactive, 1, 1);
+ gl->addWidget (m_btnBkgnd, 1, 2);
+
+ m_fontChooser = new KFontChooser(this, NULL, false, QStringList(), true, 4);
+ m_fontChooser->setFont(queryDisplayFont());
+ m_fontChooser->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding));
+
+ QVBoxLayout *l = new QVBoxLayout(this, 10);
+ l->addWidget(bg);
+ l->addWidget(m_fontChooser);
+
+ connect(m_btnActive, SIGNAL(changed(const QColor &)), this, SLOT(slotSetDirty()));
+ connect(m_btnInactive, SIGNAL(changed(const QColor &)), this, SLOT(slotSetDirty()));
+ connect(m_btnBkgnd, SIGNAL(changed(const QColor &)), this, SLOT(slotSetDirty()));
+ connect(m_fontChooser, SIGNAL(fontSelected(const QFont &)), this, SLOT(slotSetDirty()));
+
+}
+
+
+DisplayConfiguration::~DisplayConfiguration()
+{
+}
+
+
+bool DisplayConfiguration::noticeDisplayColorsChanged(const QColor &activeColor, const QColor &inactiveColor, const QColor &bkgnd)
+{
+ m_ignore_gui_updates = true;
+ m_btnActive->setColor(activeColor);
+ m_btnInactive->setColor(inactiveColor);
+ m_btnBkgnd->setColor(bkgnd);
+ m_ignore_gui_updates = false;
+ return true;
+}
+
+
+bool DisplayConfiguration::noticeDisplayFontChanged(const QFont &f)
+{
+ m_ignore_gui_updates = true;
+ m_fontChooser->setFont(f);
+ m_ignore_gui_updates = false;
+ return true;
+}
+
+
+void DisplayConfiguration::slotOK()
+{
+ if (m_dirty) {
+ sendDisplayColors(m_btnActive->color(), m_btnInactive->color(), m_btnBkgnd->color());
+ sendDisplayFont(m_fontChooser->font());
+ m_dirty = false;
+ }
+}
+
+void DisplayConfiguration::slotCancel()
+{
+ if (m_dirty) {
+ m_ignore_gui_updates = true;
+ m_btnActive ->setColor(queryDisplayActiveColor());
+ m_btnInactive->setColor(queryDisplayInactiveColor());
+ m_btnBkgnd ->setColor(queryDisplayBkgndColor());
+ m_fontChooser->setFont(queryDisplayFont());
+ m_dirty = false;
+ m_ignore_gui_updates = false;
+ }
+}
+
+void DisplayConfiguration::slotSetDirty()
+{
+ if (!m_dirty && !m_ignore_gui_updates) {
+ m_dirty = true;
+ emit sigDirty();
+ }
+}
+
+
+#include "displaycfg.moc"
diff --git a/kradio3/plugins/gui-standard-display/displaycfg.h b/kradio3/plugins/gui-standard-display/displaycfg.h
new file mode 100644
index 0000000..fcd6079
--- /dev/null
+++ b/kradio3/plugins/gui-standard-display/displaycfg.h
@@ -0,0 +1,72 @@
+/***************************************************************************
+ displaycfg.h - description
+ -------------------
+ begin : Fr Aug 15 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_DISPLAYCFG_H
+#define KRADIO_DISPLAYCFG_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "displaycfg_interfaces.h"
+#include <qwidget.h>
+
+class KColorButton;
+class KFontChooser;
+
+class DisplayConfiguration : public QWidget,
+ public IDisplayCfgClient
+{
+Q_OBJECT
+public:
+ DisplayConfiguration(QWidget *parent);
+ ~DisplayConfiguration();
+
+// Interface
+
+ bool connectI (Interface *i) { return IDisplayCfgClient::connectI(i); }
+ bool disconnectI (Interface *i) { return IDisplayCfgClient::disconnectI(i); }
+
+// IDisplayCfgClient
+
+RECEIVERS:
+ bool noticeDisplayColorsChanged(const QColor &activeColor, const QColor &inactiveColor, const QColor &bkgnd);
+ bool noticeDisplayFontChanged(const QFont &f);
+
+
+public slots:
+
+ void slotOK();
+ void slotCancel();
+ void slotSetDirty();
+
+signals:
+
+ void sigDirty();
+
+protected:
+ KColorButton *m_btnActive;
+ KColorButton *m_btnInactive;
+ KColorButton *m_btnBkgnd;
+ KFontChooser *m_fontChooser;
+
+ bool m_dirty;
+ bool m_ignore_gui_updates;
+};
+
+
+#endif
diff --git a/kradio3/plugins/gui-standard-display/displaycfg_interfaces.cpp b/kradio3/plugins/gui-standard-display/displaycfg_interfaces.cpp
new file mode 100644
index 0000000..a7bbf01
--- /dev/null
+++ b/kradio3/plugins/gui-standard-display/displaycfg_interfaces.cpp
@@ -0,0 +1,69 @@
+/***************************************************************************
+ displaycfg_interfaces.cpp - description
+ -------------------
+ begin : Fr Aug 15 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "displaycfg_interfaces.h"
+
+// IDisplayCfg
+
+IF_IMPL_SENDER ( IDisplayCfg::notifyDisplayColorsChanged(const QColor &a, const QColor &b, const QColor &c),
+ noticeDisplayColorsChanged(a,b, c) )
+
+IF_IMPL_SENDER ( IDisplayCfg::notifyDisplayFontChanged(const QFont &f),
+ noticeDisplayFontChanged(f) )
+
+// IDisplayCfgClient
+
+IF_IMPL_SENDER ( IDisplayCfgClient::sendDisplayColors(const QColor &a, const QColor &b, const QColor &c),
+ setDisplayColors(a,b, c) )
+
+IF_IMPL_SENDER ( IDisplayCfgClient::sendDisplayFont(const QFont &f),
+ setDisplayFont(f) )
+
+const QColor default_display_active_color = QColor(20, 244, 20);
+IF_IMPL_QUERY ( const QColor &IDisplayCfgClient::queryDisplayActiveColor(),
+ getDisplayActiveColor(),
+ default_display_active_color )
+
+const QColor default_display_inactive_color = QColor(10, 117, 10).light(75);
+IF_IMPL_QUERY ( const QColor &IDisplayCfgClient::queryDisplayInactiveColor(),
+ getDisplayInactiveColor(),
+ default_display_inactive_color )
+
+const QColor default_display_bkgnd_color = QColor(10, 117, 10);
+IF_IMPL_QUERY ( const QColor &IDisplayCfgClient::queryDisplayBkgndColor(),
+ getDisplayBkgndColor(),
+ default_display_bkgnd_color )
+
+const QFont default_display_font = QFont("Helvetica");
+IF_IMPL_QUERY ( const QFont &IDisplayCfgClient::queryDisplayFont(),
+ getDisplayFont(),
+ default_display_font )
+
+
+void IDisplayCfgClient::noticeConnectedI (cmplInterface *, bool /*pointer_valid*/)
+{
+ noticeDisplayColorsChanged(queryDisplayActiveColor(), queryDisplayInactiveColor(), queryDisplayBkgndColor());
+ noticeDisplayFontChanged(queryDisplayFont());
+}
+
+
+void IDisplayCfgClient::noticeDisconnectedI (cmplInterface *, bool /*pointer_valid*/)
+{
+ noticeDisplayColorsChanged(queryDisplayActiveColor(), queryDisplayInactiveColor(), queryDisplayBkgndColor());
+ noticeDisplayFontChanged(queryDisplayFont());
+}
+
diff --git a/kradio3/plugins/gui-standard-display/displaycfg_interfaces.h b/kradio3/plugins/gui-standard-display/displaycfg_interfaces.h
new file mode 100644
index 0000000..ac2ef5d
--- /dev/null
+++ b/kradio3/plugins/gui-standard-display/displaycfg_interfaces.h
@@ -0,0 +1,82 @@
+/***************************************************************************
+ displaycfg_interfaces.h - description
+ -------------------
+ begin : Fr Aug 15 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_DISPLAYCFG_INTERFACES_H
+#define KRADIO_DISPLAYCFG_INTERFACES_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "../../src/include/interfaces.h"
+
+#include <qfont.h>
+#include <qcolor.h>
+
+///////////////////////////////////////////////////////////////////////
+
+
+INTERFACE(IDisplayCfg, IDisplayCfgClient)
+{
+public :
+ IF_CON_DESTRUCTOR(IDisplayCfg, -1)
+
+RECEIVERS:
+ IF_RECEIVER( setDisplayColors(const QColor &activeColor, const QColor &inactiveColor, const QColor &bkgnd) )
+ IF_RECEIVER( setDisplayFont (const QFont &f) )
+
+SENDERS:
+ IF_SENDER ( notifyDisplayColorsChanged(const QColor &activeColor, const QColor &inactiveColor, const QColor &bkgnd) )
+ IF_SENDER ( notifyDisplayFontChanged(const QFont &f) )
+
+ANSWERS:
+ IF_ANSWER ( const QColor &getDisplayActiveColor() const )
+ IF_ANSWER ( const QColor &getDisplayInactiveColor() const )
+ IF_ANSWER ( const QColor &getDisplayBkgndColor() const )
+ IF_ANSWER ( const QFont &getDisplayFont() const )
+
+};
+
+
+INTERFACE(IDisplayCfgClient, IDisplayCfg)
+{
+friend class IDisplayCfg;
+
+public :
+ IF_CON_DESTRUCTOR(IDisplayCfgClient, 1)
+
+SENDERS:
+ IF_SENDER ( sendDisplayColors(const QColor &activeColor, const QColor &inactiveColor, const QColor &bkgnd) )
+ IF_SENDER ( sendDisplayFont (const QFont &f) )
+
+RECEIVERS:
+ IF_RECEIVER( noticeDisplayColorsChanged(const QColor &activeColor, const QColor &inactiveColor, const QColor &bkgnd) )
+ IF_RECEIVER( noticeDisplayFontChanged(const QFont &f) )
+
+QUERIES:
+ IF_QUERY ( const QColor &queryDisplayActiveColor() )
+ IF_QUERY ( const QColor &queryDisplayInactiveColor() )
+ IF_QUERY ( const QColor &queryDisplayBkgndColor() )
+ IF_QUERY ( const QFont &queryDisplayFont() )
+
+RECEIVERS:
+ virtual void noticeConnectedI (cmplInterface *, bool pointer_valid);
+ virtual void noticeDisconnectedI (cmplInterface *, bool pointer_valid);
+};
+
+
+#endif
diff --git a/kradio3/plugins/gui-standard-display/po/Makefile.am b/kradio3/plugins/gui-standard-display/po/Makefile.am
new file mode 100644
index 0000000..956ae72
--- /dev/null
+++ b/kradio3/plugins/gui-standard-display/po/Makefile.am
@@ -0,0 +1,2 @@
+PACKAGE = kradio-gui-standard-display
+POFILES = AUTO
diff --git a/kradio3/plugins/gui-standard-display/po/de.po b/kradio3/plugins/gui-standard-display/po/de.po
new file mode 100644
index 0000000..5013f29
--- /dev/null
+++ b/kradio3/plugins/gui-standard-display/po/de.po
@@ -0,0 +1,212 @@
+# translation of kradio-gui-standard-display.po to
+# This file is put in the public domain.
+#
+# Ernst Martin Witte <emw@nocabal.de>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: kradio-gui-standard-display\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-06 01:24+0100\n"
+"PO-Revision-Date: 2006-11-06 01:23+0100\n"
+"Last-Translator: Ernst Martin Witte <emw@nocabal.de>\n"
+"Language-Team: <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. i18n: file radioview_seekinterface.ui line 17
+#: rc.cpp:3 rc.cpp:25
+#, no-c-format
+msgid "RadioView_SeekInterface"
+msgstr "RadioView_SeekInterface"
+
+#. i18n: file radioview_seekinterface.ui line 45
+#: rc.cpp:7 rc.cpp:29
+#, no-c-format
+msgid "search previous station"
+msgstr "Suche vorherigen Sender"
+
+#. i18n: file radioview_seekinterface.ui line 73
+#: rc.cpp:11 rc.cpp:33
+#, no-c-format
+msgid "decrease freq. by 0.05 MHz"
+msgstr "Frequenz um 0.05 MHz verringern"
+
+#. i18n: file radioview_seekinterface.ui line 108
+#: rc.cpp:14 rc.cpp:36
+#, no-c-format
+msgid "Frequency control"
+msgstr "Frequenz verändern"
+
+#. i18n: file radioview_seekinterface.ui line 129
+#: rc.cpp:18 rc.cpp:40
+#, no-c-format
+msgid "increase freq. by 0.05 MHz"
+msgstr "Frequenz um 0.05 MHz erhöhen"
+
+#. i18n: file radioview_seekinterface.ui line 146
+#: rc.cpp:22 rc.cpp:44
+#, no-c-format
+msgid "search next station"
+msgstr "Suche nächsten Sender"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Ernst Martin Witte"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "emw@nocabal.de"
+
+#: displaycfg.cpp:33
+msgid "Display Colors"
+msgstr "Farben für die Radioanzeige"
+
+#: displaycfg.cpp:47
+msgid "Active Text"
+msgstr "Aktiver Text"
+
+#: displaycfg.cpp:48
+msgid "Inactive Text"
+msgstr "Inaktiver Text"
+
+#: displaycfg.cpp:49
+msgid "Background Color"
+msgstr "Hintergrundfarbe"
+
+#: radioview.cpp:55
+msgid "Standard Display for KRadio"
+msgstr "Standardanzeige für KRadio"
+
+#: radioview.cpp:72
+msgid "Radio Display"
+msgstr "Radio-Anzeige"
+
+#: radioview.cpp:127
+msgid "Pause KRadio"
+msgstr "KRadio pausieren"
+
+#: radioview.cpp:133
+msgid "Start Recording"
+msgstr "Aufnahme starten"
+
+#: radioview.cpp:141
+msgid "5 min"
+msgstr "5 min"
+
+#: radioview.cpp:142
+msgid "10 min"
+msgstr "10 min"
+
+#: radioview.cpp:143
+msgid "15 min"
+msgstr "15 min"
+
+#: radioview.cpp:144
+msgid "30 min"
+msgstr "30 min"
+
+#: radioview.cpp:145
+msgid "60 min"
+msgstr "60 min"
+
+#: radioview.cpp:189
+msgid "Configure KRadio"
+msgstr "KRadio Einrichten"
+
+#: radioview.cpp:190
+msgid "Power On/Off"
+msgstr "Ein/Ausschalten"
+
+#: radioview.cpp:191
+msgid "Quit KRadio Application"
+msgstr "KRadio beenden"
+
+#: radioview.cpp:192
+msgid "Start/Stop Recording"
+msgstr "Aufnahme starten/beenden"
+
+#: radioview.cpp:193
+msgid "Start/Stop Sleep Countdown"
+msgstr "Schlummermodus ein/ausschalten"
+
+#: radioview.cpp:194
+msgid "Show/Hide Plugins"
+msgstr "Plugins anzeigen/verstecken"
+
+#: radioview.cpp:195
+msgid "Select a Radio Station"
+msgstr "Sender auswählen"
+
+#: radioview.cpp:332
+msgid "no preset defined"
+msgstr "kein voreingestellter Sender gefunden"
+
+#: radioview.cpp:442 radioview.cpp:480
+msgid "Stop Recording of %1"
+msgstr "Aufnahme von %1 beenden"
+
+#: radioview.cpp:553
+msgid "Display"
+msgstr "Anzeige"
+
+#: radioview.cpp:554
+msgid "Display Configuration"
+msgstr "Konfiguration der Radio-Anzeige"
+
+#: radioview.cpp:590
+msgid "set Toolbar-Flag for Display"
+msgstr "Werkzeugleisten-Flag für das Displayfenster"
+
+#: radioview.cpp:593
+msgid "Common"
+msgstr "Allgemein"
+
+#: radioview_frequencyradio.cpp:99 radioview_frequencyradio.cpp:100
+msgid "Frequency Display"
+msgstr "Frequenzanzeige"
+
+#: radioview_frequencyradio.cpp:388 radioview_frequencyradio.cpp:389
+msgid "AM"
+msgstr "MW"
+
+#: radioview_frequencyradio.cpp:394 radioview_frequencyradio.cpp:395
+msgid "FM"
+msgstr "UKW"
+
+#: radioview_frequencyradio.cpp:406
+msgid "%1 kHz"
+msgstr "%1 kHz"
+
+#: radioview_frequencyradio.cpp:408
+msgid "%1 MHz"
+msgstr "%1 MHz"
+
+#: radioview_frequencyseeker.cpp:76
+msgid "Search for previous Radio Station"
+msgstr "Suche nach vorherigem Sender"
+
+#: radioview_frequencyseeker.cpp:77
+msgid "Search for next Radio Station"
+msgstr "Suche nach nächstem Sender"
+
+#: radioview_frequencyseeker.cpp:78
+msgid "Decrement Frequency"
+msgstr "Frequenz erniedrigen"
+
+#: radioview_frequencyseeker.cpp:79
+msgid "Increment Frequency"
+msgstr "Frequenz erhöhen"
+
+#: radioview_frequencyseeker.cpp:80
+msgid "Change Frequency"
+msgstr "Frequenz verändern"
+
+#: radioview_volume.cpp:56
+msgid "Change Volume"
+msgstr "Läutstärke verändern"
diff --git a/kradio3/plugins/gui-standard-display/po/ru.po b/kradio3/plugins/gui-standard-display/po/ru.po
new file mode 100644
index 0000000..722b790
--- /dev/null
+++ b/kradio3/plugins/gui-standard-display/po/ru.po
@@ -0,0 +1,213 @@
+# translation of ru.po to
+# translation of kradio-gui-standard-display.po to
+# This file is put in the public domain.
+# Алексей Кузнецов <Alexey.Kouznetsov@GMail.com>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-11 02:11+0100\n"
+"PO-Revision-Date: 2006-11-08 13:06+0300\n"
+"Last-Translator: Алексей Кузнецов <Alexey.Kouznetsov@GMail.com>\n"
+"Language-Team: <ru@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10\n"
+
+#. i18n: file radioview_seekinterface.ui line 17
+#: rc.cpp:3 rc.cpp:25
+#, no-c-format
+msgid "RadioView_SeekInterface"
+msgstr "RadioView_SeekInterface"
+
+#. i18n: file radioview_seekinterface.ui line 45
+#: rc.cpp:7 rc.cpp:29
+#, no-c-format
+msgid "search previous station"
+msgstr "Поиск предыдущей станции"
+
+#. i18n: file radioview_seekinterface.ui line 73
+#: rc.cpp:11 rc.cpp:33
+#, no-c-format
+msgid "decrease freq. by 0.05 MHz"
+msgstr "Уменьшать частоту по 0,05 МГц"
+
+#. i18n: file radioview_seekinterface.ui line 108
+#: rc.cpp:14 rc.cpp:36
+#, no-c-format
+msgid "Frequency control"
+msgstr "Управление частотой"
+
+#. i18n: file radioview_seekinterface.ui line 129
+#: rc.cpp:18 rc.cpp:40
+#, no-c-format
+msgid "increase freq. by 0.05 MHz"
+msgstr "Увеличивать частоту по 0,05 МГц"
+
+#. i18n: file radioview_seekinterface.ui line 146
+#: rc.cpp:22 rc.cpp:44
+#, no-c-format
+msgid "search next station"
+msgstr "Поиск следующей станции"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Алексей Кузнецов"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "Alexey.Kouznetsov@GMail.com"
+
+#: displaycfg.cpp:33
+msgid "Display Colors"
+msgstr "Цвета"
+
+#: displaycfg.cpp:47
+msgid "Active Text"
+msgstr "Цвет активного текста"
+
+#: displaycfg.cpp:48
+msgid "Inactive Text"
+msgstr "Цвет инертного текста"
+
+#: displaycfg.cpp:49
+msgid "Background Color"
+msgstr "Цвет фона"
+
+#: radioview.cpp:55
+msgid "Standard Display for KRadio"
+msgstr "Главное окно KRadio"
+
+#: radioview.cpp:72
+msgid "Radio Display"
+msgstr "Главное окно"
+
+#: radioview.cpp:127
+msgid "Pause KRadio"
+msgstr "Приостановить"
+
+#: radioview.cpp:133
+msgid "Start Recording"
+msgstr "Начать запись"
+
+#: radioview.cpp:141
+msgid "5 min"
+msgstr "5 минут"
+
+#: radioview.cpp:142
+msgid "10 min"
+msgstr "10 минут"
+
+#: radioview.cpp:143
+msgid "15 min"
+msgstr "четверть часа"
+
+#: radioview.cpp:144
+msgid "30 min"
+msgstr "полчаса"
+
+#: radioview.cpp:145
+msgid "60 min"
+msgstr "час"
+
+#: radioview.cpp:189
+msgid "Configure KRadio"
+msgstr "Настроить KRadio"
+
+#: radioview.cpp:190
+msgid "Power On/Off"
+msgstr "Включить/выключить"
+
+#: radioview.cpp:191
+msgid "Quit KRadio Application"
+msgstr "Закрыть KRadio"
+
+#: radioview.cpp:192
+msgid "Start/Stop Recording"
+msgstr "Начать/завершить запись"
+
+#: radioview.cpp:193
+msgid "Start/Stop Sleep Countdown"
+msgstr "Включить/выключить таймер отключения"
+
+#: radioview.cpp:194
+msgid "Show/Hide Plugins"
+msgstr "Показать/скрыть"
+
+#: radioview.cpp:195
+msgid "Select a Radio Station"
+msgstr "Выбор радиостанции из списка"
+
+#: radioview.cpp:332
+msgid "no preset defined"
+msgstr "Станция не определена"
+
+#: radioview.cpp:442 radioview.cpp:480
+msgid "Stop Recording of %1"
+msgstr "Остановить запись %1"
+
+#: radioview.cpp:553
+msgid "Display"
+msgstr "Вид"
+
+#: radioview.cpp:554
+msgid "Display Configuration"
+msgstr "Настройка внешнего вида"
+
+#: radioview.cpp:590
+msgid "set Toolbar-Flag for Display"
+msgstr ""
+
+#: radioview.cpp:593
+msgid "Common"
+msgstr "Общие"
+
+#: radioview_frequencyradio.cpp:99 radioview_frequencyradio.cpp:100
+msgid "Frequency Display"
+msgstr "Отображение частоты"
+
+#: radioview_frequencyradio.cpp:388 radioview_frequencyradio.cpp:389
+msgid "AM"
+msgstr "ДВ/СВ/КВ"
+
+#: radioview_frequencyradio.cpp:394 radioview_frequencyradio.cpp:395
+msgid "FM"
+msgstr "УКВ"
+
+#: radioview_frequencyradio.cpp:406
+msgid "%1 kHz"
+msgstr "%1 кГц"
+
+#: radioview_frequencyradio.cpp:408
+msgid "%1 MHz"
+msgstr "%1 МГц"
+
+#: radioview_frequencyseeker.cpp:76
+msgid "Search for previous Radio Station"
+msgstr "Искать станцию вниз"
+
+#: radioview_frequencyseeker.cpp:77
+msgid "Search for next Radio Station"
+msgstr "Искать станцию вверх"
+
+#: radioview_frequencyseeker.cpp:78
+msgid "Decrement Frequency"
+msgstr "Уменьшить частоту"
+
+#: radioview_frequencyseeker.cpp:79
+msgid "Increment Frequency"
+msgstr "Увеличить частоту"
+
+#: radioview_frequencyseeker.cpp:80
+msgid "Change Frequency"
+msgstr "Изменить частоту"
+
+#: radioview_volume.cpp:56
+msgid "Change Volume"
+msgstr "Изменить громкость"
diff --git a/kradio3/plugins/gui-standard-display/radioview-configuration.cpp b/kradio3/plugins/gui-standard-display/radioview-configuration.cpp
new file mode 100644
index 0000000..9a22313
--- /dev/null
+++ b/kradio3/plugins/gui-standard-display/radioview-configuration.cpp
@@ -0,0 +1,116 @@
+/***************************************************************************
+ radioview-configuration.cpp - description
+ -------------------
+ begin : Fr Aug 15 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "radioview-configuration.h"
+
+RadioViewConfiguration::RadioViewConfiguration(QWidget *parent)
+ : QTabWidget (parent),
+ m_dirty(true)
+{
+}
+
+RadioViewConfiguration::~RadioViewConfiguration()
+{
+}
+
+
+void RadioViewConfiguration::addTab (QWidget *child, const QString &label)
+{
+ QTabWidget::addTab(child, label);
+ QObject::connect(this, SIGNAL(sigOK()), child, SLOT(slotOK()));
+ QObject::connect(this, SIGNAL(sigCancel()), child, SLOT(slotCancel()));
+ QObject::connect(child, SIGNAL(sigDirty()), this, SLOT(slotSetDirty()));
+}
+
+
+void RadioViewConfiguration::addTab (QWidget *child, const QIconSet &iconset, const QString &label)
+{
+ QTabWidget::addTab(child, iconset, label);
+ QObject::connect(this, SIGNAL(sigOK()), child, SLOT(slotOK()));
+ QObject::connect(this, SIGNAL(sigCancel()), child, SLOT(slotCancel()));
+ QObject::connect(child, SIGNAL(sigDirty()), this, SLOT(slotSetDirty()));
+}
+
+
+void RadioViewConfiguration::addTab (QWidget *child, QTab *tab)
+{
+ QTabWidget::addTab(child, tab);
+ QObject::connect(this, SIGNAL(sigOK()), child, SLOT(slotOK()));
+ QObject::connect(this, SIGNAL(sigCancel()), child, SLOT(slotCancel()));
+ QObject::connect(child, SIGNAL(sigDirty()), this, SLOT(slotSetDirty()));
+}
+
+
+void RadioViewConfiguration::insertTab (QWidget *child, const QString &label, int index)
+{
+ QTabWidget::insertTab(child, label, index);
+ QObject::connect(this, SIGNAL(sigOK()), child, SLOT(slotOK()));
+ QObject::connect(this, SIGNAL(sigCancel()), child, SLOT(slotCancel()));
+ QObject::connect(child, SIGNAL(sigDirty()), this, SLOT(slotSetDirty()));
+}
+
+
+void RadioViewConfiguration::insertTab (QWidget *child, const QIconSet &iconset, const QString &label, int index)
+{
+ QTabWidget::insertTab(child, iconset, label, index);
+ QObject::connect(this, SIGNAL(sigOK()), child, SLOT(slotOK()));
+ QObject::connect(this, SIGNAL(sigCancel()), child, SLOT(slotCancel()));
+ QObject::connect(child, SIGNAL(sigDirty()), this, SLOT(slotSetDirty()));
+}
+
+
+void RadioViewConfiguration::insertTab (QWidget *child, QTab *tab, int index)
+{
+ QTabWidget::insertTab(child, tab, index);
+ QObject::connect(this, SIGNAL(sigOK()), child, SLOT(slotOK()));
+ QObject::connect(this, SIGNAL(sigCancel()), child, SLOT(slotCancel()));
+ QObject::connect(child, SIGNAL(sigDirty()), this, SLOT(slotSetDirty()));
+}
+
+
+void RadioViewConfiguration::removePage(QWidget *w)
+{
+ QObject::disconnect(this, SIGNAL(sigOK()), w, SLOT(slotOK()));
+ QObject::disconnect(this, SIGNAL(sigCancel()), w, SLOT(slotCancel()));
+ QObject::disconnect(w, SIGNAL(sigDirty()), this, SLOT(slotSetDirty()));
+ QTabWidget::removePage(w);
+}
+
+
+void RadioViewConfiguration::slotOK()
+{
+ if (m_dirty) {
+ emit sigOK();
+ m_dirty = false;
+ }
+}
+
+void RadioViewConfiguration::slotCancel()
+{
+ if (m_dirty) {
+ emit sigCancel();
+ m_dirty = false;
+ }
+}
+
+void RadioViewConfiguration::slotSetDirty()
+{
+ m_dirty = true;
+}
+
+
+#include "radioview-configuration.moc"
diff --git a/kradio3/plugins/gui-standard-display/radioview-configuration.h b/kradio3/plugins/gui-standard-display/radioview-configuration.h
new file mode 100644
index 0000000..a85d4d9
--- /dev/null
+++ b/kradio3/plugins/gui-standard-display/radioview-configuration.h
@@ -0,0 +1,61 @@
+/***************************************************************************
+ radioview-configuration.h - description
+ -------------------
+ begin : Fr Aug 15 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_RADIOVIEW_CONFIGURATION_H
+#define KRADIO_RADIOVIEW_CONFIGURATION_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+
+
+#include <qtabwidget.h>
+
+class RadioViewConfiguration : public QTabWidget
+{
+Q_OBJECT
+public :
+ RadioViewConfiguration(QWidget *parent = NULL);
+ ~RadioViewConfiguration();
+
+ void addTab (QWidget *child, const QString &label);
+ void addTab (QWidget *child, const QIconSet &iconset, const QString &label);
+ void addTab (QWidget *child, QTab *tab);
+ void insertTab (QWidget *child, const QString &label, int index = -1);
+ void insertTab (QWidget *child, const QIconSet &iconset, const QString &label, int index = -1);
+ void insertTab (QWidget *child, QTab *tab, int index = -1);
+ void removePage(QWidget *w);
+
+public slots:
+
+ void slotOK();
+ void slotCancel();
+ void slotSetDirty();
+
+signals:
+
+ void sigOK();
+ void sigCancel();
+
+protected:
+ bool m_dirty;
+};
+
+
+
+#endif
diff --git a/kradio3/plugins/gui-standard-display/radioview.cpp b/kradio3/plugins/gui-standard-display/radioview.cpp
new file mode 100644
index 0000000..e1fd8e4
--- /dev/null
+++ b/kradio3/plugins/gui-standard-display/radioview.cpp
@@ -0,0 +1,807 @@
+/***************************************************************************
+ radioview.cpp - description
+ -------------------
+ begin : Mit Mai 28 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include <qwidgetstack.h>
+#include <qlayout.h>
+#include <qtoolbutton.h>
+#include <qslider.h>
+#include <qfile.h>
+#include <qtooltip.h>
+#include <qcheckbox.h>
+#include <qimage.h>
+
+#include <kcombobox.h>
+#include <kiconloader.h>
+#include <klocale.h>
+#include <kapplication.h>
+#include <kwin.h>
+#include <kconfig.h>
+#include <kpopupmenu.h>
+
+#include "../../src/include/radiodevice_interfaces.h"
+#include "../../src/include/radiostation.h"
+#include "../../src/include/stationlist.h"
+#include "../../src/include/pluginmanager.h"
+#include "../../src/include/plugin_configuration_dialog.h"
+#include "../../src/include/aboutwidget.h"
+
+#include "radioview.h"
+#include "radioview_frequencyradio.h"
+#include "radioview_volume.h"
+#include "radioview_frequencyseeker.h"
+#include "radioview-configuration.h"
+
+#include <kaboutdata.h>
+
+#define POPUP_ID_START_RECORDING_DEFAULT 0
+#define POPUP_ID_STOP_RECORDING_BASE 100
+
+///////////////////////////////////////////////////////////////////////
+
+PLUGIN_LIBRARY_FUNCTIONS(RadioView, "kradio-gui-standard-display", i18n("Standard Display for KRadio"));
+
+///////////////////////////////////////////////////////////////////////
+
+bool RadioView::ElementCfg::operator == (const ElementCfg &x) const
+{
+ if (!x.element || !element)
+ return x.cfg == cfg;
+ if (!x.cfg || !cfg)
+ return x.element == element;
+ return element == x.element && cfg == x.cfg;
+}
+
+///////////////////////////////////////////////////////////////////////
+
+RadioView::RadioView(const QString &name)
+ : QWidget(NULL, name.ascii()),
+ WidgetPluginBase(name, i18n("Radio Display")),
+ enableToolbarFlag(false),
+ btnPower(NULL),
+ btnConfigure(NULL),
+ btnQuit(NULL),
+ btnRecording(NULL),
+ btnSnooze(NULL),
+ btnPlugins(NULL),
+ comboStations(NULL),
+ currentDevice(NULL),
+ m_RecordingMenu(NULL),
+ m_NextRecordingMenuID(POPUP_ID_STOP_RECORDING_BASE),
+ m_PluginMenu(NULL)
+{
+ for (int i = 0; i < clsClassMAX; ++i)
+ maxUsability[i] = 0;
+
+ QBoxLayout *l01 = new QBoxLayout(this, QBoxLayout::LeftToRight, /*spacing=*/3);
+ l01->setMargin(1);
+ l01->setSpacing(2);
+ widgetStacks[clsRadioSound] = new QWidgetStack (this);
+ l01->addWidget(widgetStacks[clsRadioSound]);
+
+ QBoxLayout *l02 = new QBoxLayout(l01, QBoxLayout::Down);
+ QBoxLayout *l03 = new QBoxLayout(l02, QBoxLayout::LeftToRight);
+ comboStations = new KComboBox (this);
+ l02->addWidget (comboStations);
+
+ QBoxLayout *l05 = new QBoxLayout(l03, QBoxLayout::Down);
+ widgetStacks[clsRadioDisplay] = new QWidgetStack (this);
+ l05->addWidget(widgetStacks[clsRadioDisplay]);
+ widgetStacks[clsRadioSeek] = new QWidgetStack (this);
+ l05->addWidget(widgetStacks[clsRadioSeek]);
+
+ QGridLayout *l04 = new QGridLayout (l03, /*rows=*/ 3, /*cols=*/ 2);
+ btnPower = new QToolButton(this);
+ btnPower->setToggleButton(true);
+ btnRecording = new QToolButton(this);
+ btnRecording->setToggleButton(true);
+ btnConfigure = new QToolButton(this);
+ btnConfigure->setToggleButton(true);
+ btnQuit = new QToolButton(this);
+ btnSnooze = new QToolButton(this);
+ btnSnooze->setToggleButton(true);
+ btnPlugins = new QToolButton(this);
+ btnPlugins->setPopupDelay(1);
+ l04->addWidget (btnPower, 0, 0);
+ l04->addWidget (btnRecording, 0, 1);
+ l04->addWidget (btnConfigure, 1, 0);
+ l04->addWidget (btnQuit, 1, 1);
+ l04->addWidget (btnSnooze, 2, 0);
+ l04->addWidget (btnPlugins, 2, 1);
+
+ m_pauseMenu = new KPopupMenu(btnPower);
+ m_pauseMenu->insertItem(SmallIcon("kradio_pause"),
+ i18n("Pause KRadio"),
+ this, SLOT(slotPause()));
+ btnPower->setPopupDelay(200);
+
+ m_RecordingMenu = new KPopupMenu(btnRecording);
+ m_RecordingMenu->insertItem(SmallIcon("kradio_record"),
+ i18n("Start Recording"),
+ POPUP_ID_START_RECORDING_DEFAULT);
+ QObject::connect(m_RecordingMenu, SIGNAL(activated(int)),
+ this, SLOT(slotRecordingMenu(int)));
+ btnRecording->setPopup(m_RecordingMenu);
+
+
+ m_SnoozeMenu = new KPopupMenu(btnSnooze);
+ m_SnoozeMenu->insertItem(i18n("5 min"), this, SLOT(slotSnooze(int)), 0, 5);
+ m_SnoozeMenu->insertItem(i18n("10 min"), this, SLOT(slotSnooze(int)), 0, 10);
+ m_SnoozeMenu->insertItem(i18n("15 min"), this, SLOT(slotSnooze(int)), 0, 15);
+ m_SnoozeMenu->insertItem(i18n("30 min"), this, SLOT(slotSnooze(int)), 0, 30);
+ m_SnoozeMenu->insertItem(i18n("60 min"), this, SLOT(slotSnooze(int)), 0, 60);
+ btnSnooze->setPopup(m_SnoozeMenu);
+ btnSnooze->setPopupDelay(200);
+
+ // Plugin-Button/Menu
+
+ m_PluginMenu = new KPopupMenu(btnPlugins);
+ if (m_manager)
+ m_manager->addWidgetPluginMenuItems(m_PluginMenu, m_Plugins2MenuID);
+ btnPlugins->setPopup(m_PluginMenu);
+
+ // ICONS
+
+ btnPower->setIconSet(SmallIconSet("kradio_muteon"));
+ btnRecording->setIconSet(SmallIconSet("kradio_record"));
+ btnConfigure->setIconSet(SmallIconSet("configure"));
+ btnQuit->setIconSet(SmallIconSet("exit"));
+ btnSnooze->setIconSet(SmallIconSet("kradio_zzz"));
+ btnPlugins->setIconSet(SmallIconSet("kradio_plugins"));
+
+ widgetStacks[clsRadioSound] ->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Preferred));
+ widgetStacks[clsRadioDisplay]->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred));
+ widgetStacks[clsRadioSeek] ->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed));
+ comboStations ->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed));
+ comboStations->setMinimumHeight(28);
+
+
+ QObject::connect(btnPower, SIGNAL(toggled(bool)),
+ this, SLOT(slotPower(bool)));
+ QObject::connect(btnQuit, SIGNAL(clicked()),
+ kapp, SLOT(quit()));
+ QObject::connect(btnConfigure, SIGNAL(toggled(bool)),
+ this, SLOT(slotConfigure(bool)));
+ QObject::connect(btnRecording, SIGNAL(clicked()),
+ this, SLOT(slotRecord()));
+ QObject::connect(btnSnooze, SIGNAL(toggled(bool)),
+ this, SLOT(slotSnooze(bool)));
+ QObject::connect(comboStations, SIGNAL(activated(int)),
+ this, SLOT(slotComboStationSelected(int)));
+ QObject::connect(btnPlugins, SIGNAL(clicked()),
+ this, SLOT(slotBtnPluginsClicked()));
+
+ // tooltips
+
+ QToolTip::add(btnConfigure, i18n("Configure KRadio"));
+ QToolTip::add(btnPower, i18n("Power On/Off"));
+ QToolTip::add(btnQuit, i18n("Quit KRadio Application"));
+ QToolTip::add(btnRecording, i18n("Start/Stop Recording"));
+ QToolTip::add(btnSnooze, i18n("Start/Stop Sleep Countdown"));
+ QToolTip::add(btnPlugins, i18n("Show/Hide Plugins"));
+ QToolTip::add(comboStations, i18n("Select a Radio Station"));
+
+ // testing
+ addElement (new RadioViewFrequencyRadio (this, QString::null));
+ addElement (new RadioViewVolume(this, QString::null));
+ addElement (new RadioViewFrequencySeeker(this, QString::null));
+
+ autoSetCaption();
+}
+
+
+RadioView::~RadioView ()
+{
+ QPtrListIterator<QObject> it(configPages);
+ while (configPages.first()) {
+ delete configPages.first();
+ }
+ configPages.clear();
+}
+
+
+bool RadioView::addElement (RadioViewElement *e)
+{
+ if (!e) return false;
+
+ RadioViewClass cls = e->getClass();
+
+ if (cls < 0 || cls >= clsClassMAX)
+ return false;
+
+
+ e->reparent(this, QPoint(0, 0), true);
+ QObject::connect(e, SIGNAL(destroyed(QObject*)),
+ this, SLOT(removeElement(QObject*)));
+ elements.append(e);
+ widgetStacks[cls]->addWidget(e);
+
+ // connect Element with device, disconnect doesn't matter (comp. removeElement)
+ // other devices follow if currentDevice changes
+ if (currentDevice)
+ e->connectI(currentDevice);
+
+ e->connectI(getSoundStreamServer());
+
+ QPtrListIterator<QObject> it(configPages);
+ for (; it.current(); ++it) {
+ addConfigurationTabFor(e, (QTabWidget *)it.current());
+ }
+
+ selectTopWidgets();
+
+ return true;
+}
+
+
+bool RadioView::removeElement (QObject *_e)
+{
+ RadioViewElement *e = dynamic_cast<RadioViewElement*>(_e);
+ if (!e)
+ return false;
+
+ ElementCfgListIterator it;
+ while ((it = elementConfigPages.find(e)) != elementConfigPages.end()) {
+ delete (*it).cfg;
+ // it must not used behind, the element will be deleted automatically
+ // by slotElementConfigPageDeleted
+ }
+
+ e->disconnectI(getSoundStreamServer());
+
+ if (currentDevice)
+ e->disconnectI(currentDevice);
+
+ RadioViewClass cls = e->getClass();
+ QObject::disconnect(e, SIGNAL(destroyed(QObject*)),
+ this, SLOT(removeElement(QObject*)));
+ widgetStacks[cls]->removeWidget(e);
+ elements.remove(e);
+
+ selectTopWidgets();
+
+ return true;
+}
+
+
+void RadioView::selectTopWidgets()
+{
+ for (int i = 0; i < clsClassMAX; ++i)
+ maxUsability[i] = 0;
+
+ for (ElementListIterator i(elements); i.current(); ++i) {
+ RadioViewElement *e = i.current();
+ RadioViewClass cls = e->getClass();
+ float u = e->getUsability(currentDevice);
+ if (u > maxUsability[cls]) {
+ maxUsability[cls] = u;
+ widgetStacks[cls]->raiseWidget(e);
+ }
+ }
+ // adjustLayout!?
+}
+
+
+// IRadioClient
+
+bool RadioView::noticePowerChanged(bool on)
+{
+ btnPower->setIconSet(SmallIconSet( on ? "kradio_muteoff" : "kradio_muteon"));
+ btnPower->setOn(on);
+ if (on) {
+ btnPower->setPopup(m_pauseMenu);
+ } else {
+ btnPower->setPopup(NULL);
+ }
+ autoSetCaption();
+ return true;
+}
+
+
+bool RadioView::noticeStationChanged (const RadioStation &, int idx)
+{
+ // add 1 for "no preset defined" entry
+ comboStations->setCurrentItem(idx + 1);
+ autoSetCaption();
+ bool r = false;
+ SoundFormat sf;
+ queryIsRecordingRunning(queryCurrentSoundStreamID(), r, sf);
+ m_RecordingMenu->setItemEnabled(POPUP_ID_START_RECORDING_DEFAULT, !r);
+ return true;
+}
+
+
+bool RadioView::noticeStationsChanged(const StationList &sl)
+{
+ const RawStationList &list = sl.all();
+
+ comboStations->clear();
+ comboStations->insertItem("<" + i18n("no preset defined") + ">");
+
+ for (RawStationList::Iterator i(list); i.current(); ++i) {
+ RadioStation *stn = i.current();
+ QString icon = stn->iconName();
+ if (icon.length() && QFile(icon).exists()) {
+ QImage img(icon);
+ int h = img.height();
+ float f = (float)(comboStations->height() - 4) / (h ? (float)h : 1.0);
+ comboStations->insertItem(img.smoothScale((int)(img.width()*f), (int)(h * f)), stn->name());
+ } else {
+ comboStations->insertItem(stn->name());
+ }
+ }
+
+ noticeStationChanged(queryCurrentStation(), queryCurrentStationIdx());
+ return true;
+}
+
+
+bool RadioView::noticeCurrentSoundStreamIDChanged(SoundStreamID /*id*/)
+{
+ // FIXME: perhaps do something
+ return false;
+}
+
+// IRadioDevicePoolClient
+
+bool RadioView::noticeActiveDeviceChanged(IRadioDevice *newDevice)
+{
+ IRadioDevice *oldDevice = currentDevice;
+ currentDevice = newDevice;
+
+ for (ElementListIterator i(elements); i.current(); ++i) {
+ RadioViewElement *e = i.current();
+ if (oldDevice)
+ e->disconnectI(oldDevice);
+ if (newDevice)
+ e->connectI(currentDevice);
+ }
+
+ selectTopWidgets();
+ return true;
+}
+
+
+// Interface
+
+bool RadioView::connectI(Interface *i)
+{
+ bool a = IRadioClient::connectI(i);
+ bool b = IRadioDevicePoolClient::connectI(i);
+ bool c = PluginBase::connectI(i);
+ bool d = ITimeControlClient::connectI(i);
+
+ // Callbacks for ISoundStreamClient
+
+ bool e = ISoundStreamClient::connectI(i);
+
+ return a || b || c || d || e;
+}
+
+
+bool RadioView::disconnectI(Interface *i)
+{
+ bool a = IRadioClient::disconnectI(i);
+ bool b = IRadioDevicePoolClient::disconnectI(i);
+ bool c = PluginBase::disconnectI(i);
+ bool d = ITimeControlClient::disconnectI(i);
+ bool e = ISoundStreamClient::disconnectI(i);
+ if (e) {
+ // special task for soundstreamclient, different from radio device pool
+ for (ElementListIterator it(elements); it.current(); ++it) {
+ RadioViewElement *e = it.current();
+ e->disconnectI(i);
+ }
+ }
+ return a || b || c || d || e;
+}
+
+void RadioView::noticeConnectedI (ISoundStreamServer *s, bool pointer_valid)
+{
+ ISoundStreamClient::noticeConnectedI(s, pointer_valid);
+ if (s && pointer_valid) {
+ s->register4_sendStartRecordingWithFormat(this);
+ s->register4_sendStopRecording (this);
+ s->register4_notifySoundStreamChanged (this);
+
+ // special task for soundstreamclient, different from radio device pool
+ for (ElementListIterator it(elements); it.current(); ++it) {
+ RadioViewElement *e = it.current();
+ e->connectI(s);
+ }
+ }
+}
+
+// ISoundStreamClient
+
+bool RadioView::startRecordingWithFormat(
+ SoundStreamID id,
+ const SoundFormat &/*proposed_format*/,
+ SoundFormat &/*real_format*/)
+{
+ if (!id.isValid() || id != queryCurrentSoundStreamID() || m_StreamID2MenuID.contains(id))
+ return false;
+
+ QString descr;
+ querySoundStreamDescription(id, descr);
+ int menu_id = m_NextRecordingMenuID++;
+ m_RecordingMenu->insertItem(SmallIcon("kradio_record"),
+ i18n("Stop Recording of %1").arg(descr),
+ menu_id);
+ m_MenuID2StreamID.insert(menu_id, id);
+ m_StreamID2MenuID.insert(id, menu_id);
+ btnRecording->setOn(true);
+
+ if (id == queryCurrentSoundStreamID())
+ m_RecordingMenu->setItemEnabled(POPUP_ID_START_RECORDING_DEFAULT, false);
+
+ return false; // this is only a "hook" that does not initiate the recording so don't say that we handled the event
+}
+
+
+bool RadioView::stopRecording (SoundStreamID id)
+{
+ if (!id.isValid() || !m_StreamID2MenuID.contains(id))
+ return false;
+
+ int menu_id = m_StreamID2MenuID[id];
+ m_RecordingMenu->removeItem(menu_id);
+ m_MenuID2StreamID.remove(menu_id);
+ m_StreamID2MenuID.remove(id);
+ btnRecording->setOn(m_StreamID2MenuID.count() > 0);
+
+ if (id == queryCurrentSoundStreamID())
+ m_RecordingMenu->setItemEnabled(POPUP_ID_START_RECORDING_DEFAULT, true);
+
+ return false;
+}
+
+
+bool RadioView::noticeSoundStreamChanged(SoundStreamID id)
+{
+ if (m_StreamID2MenuID.contains(id)) {
+ QString descr;
+ querySoundStreamDescription(id, descr);
+ m_RecordingMenu->changeItem(m_StreamID2MenuID[id],
+ SmallIcon("kradio_record"),
+ i18n("Stop Recording of %1").arg(descr));
+ return true;
+ }
+ return false;
+}
+
+
+// ITimeControl
+
+bool RadioView::noticeCountdownStarted(const QDateTime &)
+{
+ btnSnooze->setOn(true);
+ return true;
+}
+
+bool RadioView::noticeCountdownStopped()
+{
+ btnSnooze->setOn(false);
+ return true;
+}
+
+bool RadioView::noticeCountdownZero()
+{
+ btnSnooze->setOn(false);
+ return true;
+}
+
+// WidgetPluginBase
+
+void RadioView::saveState (KConfig *config) const
+{
+ config->setGroup(QString("radioview-") + name());
+
+ config->writeEntry("enableToobarFlag", enableToolbarFlag);
+ WidgetPluginBase::saveState(config);
+
+ for (ElementListIterator i(elements); i.current(); ++i) {
+ RadioViewElement *e = i.current();
+ e->saveState(config);
+ }
+}
+
+
+void RadioView::restoreState (KConfig *config)
+{
+ config->setGroup(QString("radioview-") + name());
+
+ enableToolbarFlag = config->readBoolEntry("enableToolbarFlag", false);
+ WidgetPluginBase::restoreState(config);
+
+ for (ElementListIterator i(elements); i.current(); ++i) {
+ RadioViewElement *e = i.current();
+ e->restoreState(config);
+ }
+}
+
+
+ConfigPageInfo RadioView::createConfigurationPage()
+{
+ RadioViewConfiguration *c = new RadioViewConfiguration();
+
+ //addCommonConfigurationTab(c);
+
+ for (ElementListIterator i(elements); i.current(); ++i) {
+ addConfigurationTabFor(i.current(), c);
+ }
+
+ configPages.append(c);
+ QObject::connect(c, SIGNAL(destroyed(QObject *)),
+ this, SLOT(slotConfigPageDeleted(QObject *)));
+
+ return ConfigPageInfo(
+ c,
+ i18n("Display"),
+ i18n("Display Configuration"),
+ "openterm"
+ );
+}
+
+
+void RadioView::addConfigurationTabFor(RadioViewElement *e, QTabWidget *c)
+{
+ if (!e || !c)
+ return;
+
+ ConfigPageInfo inf = e->createConfigurationPage();
+
+ if (inf.page) {
+
+ if (inf.iconName.length()) {
+ c->addTab(inf.page, QIconSet(SmallIconSet(inf.iconName)), inf.itemName);
+ } else {
+ c->addTab(inf.page, inf.itemName);
+ }
+
+ elementConfigPages.push_back(ElementCfg(e, inf.page));
+ QObject::connect(inf.page, SIGNAL(destroyed(QObject *)),
+ this, SLOT(slotElementConfigPageDeleted(QObject *)));
+ }
+}
+
+
+void RadioView::addCommonConfigurationTab(QTabWidget *c)
+{
+ if (!c)
+ return;
+
+ QFrame *f = new QFrame(c);
+ QVBoxLayout *l = new QVBoxLayout(f, 10);
+
+ l->addWidget(new QCheckBox(i18n("set Toolbar-Flag for Display"), f));
+ l->addItem(new QSpacerItem(1, 3, QSizePolicy::Fixed, QSizePolicy::Expanding));
+
+ c->addTab(f, i18n("Common"));
+
+ elementConfigPages.push_back(ElementCfg(f));
+ QObject::connect(f, SIGNAL(destroyed(QObject *)),
+ this, SLOT(slotElementConfigPageDeleted(QObject *)));
+}
+
+
+AboutPageInfo RadioView::createAboutPage()
+{
+/* KAboutData aboutData("kradio",
+ NULL,
+ NULL,
+ I18N_NOOP("Standard Radio Display for KRadio"),
+ KAboutData::License_GPL,
+ "(c) 2002-2005 Martin Witte, Klas Kalass",
+ 0,
+ "http://sourceforge.net/projects/kradio",
+ 0);
+ aboutData.addAuthor("Martin Witte", "", "witte@kawo1.rwth-aachen.de");
+ aboutData.addAuthor("Klas Kalass", "", "klas.kalass@gmx.de");
+
+ return AboutPageInfo(
+ new KRadioAboutWidget(aboutData, KRadioAboutWidget::AbtTabbed),
+ i18n("Display"),
+ i18n("Standard Radio Display for KRadio"),
+ "openterm"
+ );*/
+ return AboutPageInfo();
+}
+
+
+void RadioView::noticeWidgetPluginShown(WidgetPluginBase *p, bool shown)
+{
+ if (!m_manager || !p)
+ return;
+ if ((WidgetPluginBase*)m_manager->getConfigDialog() == p) {
+ btnConfigure->blockSignals(true);
+ btnConfigure->setOn(shown);
+ btnConfigure->blockSignals(false);
+ }
+
+ if (m_Plugins2MenuID.contains(p)) {
+ m_manager->updateWidgetPluginMenuItem(p, m_PluginMenu, m_Plugins2MenuID, shown);
+ }
+}
+
+
+// own Stuff
+
+void RadioView::noticePluginsChanged(const PluginList &/*l*/)
+{
+ m_Plugins2MenuID.clear();
+ m_PluginMenu->clear();
+ if (m_manager)
+ m_manager->addWidgetPluginMenuItems(m_PluginMenu, m_Plugins2MenuID);
+}
+
+
+void RadioView::slotPower(bool on)
+{
+ on ? sendPowerOn() : sendPowerOff();
+ btnPower->setOn(queryIsPowerOn());
+}
+
+
+void RadioView::slotPause()
+{
+ if (queryIsPowerOn()) {
+ sendPausePlayback(queryCurrentSoundStreamID());
+ }
+}
+
+
+void RadioView::slotConfigure(bool b)
+{
+ QWidget *w = m_manager ? m_manager->getConfigDialog() : NULL;
+ if (w) b ? w->show() : w->hide();
+ if (!w)
+ btnConfigure->setOn(false);
+}
+
+
+void RadioView::slotRecord()
+{
+ SoundStreamID id = queryCurrentSoundStreamID();
+ bool b = btnRecording->isOn();
+
+ bool r = false;
+ SoundFormat sf;
+ queryIsRecordingRunning(id, r, sf);
+
+ if (!r && b /*!m_StreamID2MenuID.contains(id)*/) {
+ if (!queryIsPowerOn())
+ sendPowerOn();
+ sendStartRecording(id);
+ } else if (r && !b) {
+ sendStopRecording(id);
+ }
+}
+
+
+void RadioView::slotRecordingMenu(int i)
+{
+ if (i == POPUP_ID_START_RECORDING_DEFAULT) {
+ SoundStreamID id = queryCurrentSoundStreamID();
+ bool r = false;
+ SoundFormat sf;
+ queryIsRecordingRunning(id, r, sf);
+ if (!r) {
+ if (!queryIsPowerOn())
+ sendPowerOn();
+ sendStartRecording(id);
+ }
+ } else if (m_MenuID2StreamID.contains(i)) {
+ sendStopRecording(m_MenuID2StreamID[i]);
+ }
+}
+
+
+void RadioView::slotSnooze(bool on)
+{
+ if (on)
+ sendStartCountdown();
+ else
+ sendStopCountdown();
+}
+
+
+void RadioView::slotSnooze(int n)
+{
+ sendCountdownSeconds(n*60);
+ sendStartCountdown();
+}
+
+
+void RadioView::slotComboStationSelected(int idx)
+{
+ if (idx > 0) {
+ sendActivateStation(idx - 1);
+ } else {
+ comboStations->setCurrentItem(queryCurrentStationIdx() + 1);
+ }
+}
+
+void RadioView::slotBtnPluginsClicked()
+{
+ btnPlugins->openPopup();
+}
+
+void RadioView::slotConfigPageDeleted(QObject *o)
+{
+ configPages.remove(o);
+}
+
+
+void RadioView::slotElementConfigPageDeleted(QObject *o)
+{
+ ElementCfgListIterator it;
+ while ((it = elementConfigPages.find(o)) != elementConfigPages.end()) {
+ elementConfigPages.remove(it);
+ }
+}
+
+
+void RadioView::show()
+{
+ if (enableToolbarFlag)
+ KWin::setType(winId(), NET::Toolbar);
+ else
+ KWin::setType(winId(), NET::Normal);
+ WidgetPluginBase::pShow();
+ QWidget::show();
+}
+
+
+void RadioView::showOnOrgDesktop()
+{
+ WidgetPluginBase::pShowOnOrgDesktop();
+ //QWidget::show();
+}
+
+
+
+void RadioView::hide()
+{
+ WidgetPluginBase::pHide();
+ QWidget::hide();
+}
+
+
+void RadioView::showEvent(QShowEvent *e)
+{
+ QWidget::showEvent(e);
+ WidgetPluginBase::pShowEvent(e);
+}
+
+
+void RadioView::hideEvent(QHideEvent *e)
+{
+ QWidget::hideEvent(e);
+ WidgetPluginBase::pHideEvent(e);
+}
+
+
+void RadioView::autoSetCaption()
+{
+ const RadioStation &rs = queryCurrentStation();
+ setCaption((queryIsPowerOn() && rs.isValid()) ? rs.longName() : QString("KRadio"));
+}
+
+
+
+
+#include "radioview.moc"
diff --git a/kradio3/plugins/gui-standard-display/radioview.h b/kradio3/plugins/gui-standard-display/radioview.h
new file mode 100644
index 0000000..6cddc26
--- /dev/null
+++ b/kradio3/plugins/gui-standard-display/radioview.h
@@ -0,0 +1,207 @@
+/***************************************************************************
+ radioview.h - description
+ -------------------
+ begin : Mit Mai 28 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_RADIOVIEW_H
+#define KRADIO_RADIOVIEW_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qobjectlist.h>
+
+#include "../../src/include/radio_interfaces.h"
+#include "../../src/include/radiodevicepool_interfaces.h"
+#include "../../src/include/soundstreamclient_interfaces.h"
+#include "../../src/include/timecontrol_interfaces.h"
+#include "../../src/include/widgetplugins.h"
+#include "radioview_element.h"
+
+class QWidgetStack;
+class QToolButton;
+class KComboBox;
+class QTabWidget;
+class KPopupMenu;
+
+
+
+class RadioView : public QWidget,
+ public WidgetPluginBase,
+ public IRadioClient,
+ public IRadioDevicePoolClient,
+ public ISoundStreamClient,
+ public ITimeControlClient
+{
+Q_OBJECT
+public:
+
+ RadioView(const QString &name);
+ virtual ~RadioView();
+
+ virtual QString pluginClassName() const { return "RadioView"; }
+
+ const QString &name() const { return PluginBase::name(); }
+ QString &name() { return PluginBase::name(); }
+
+ // WidgetPluginBase
+
+public:
+ virtual void saveState (KConfig *) const;
+ virtual void restoreState (KConfig *);
+
+ virtual bool connectI(Interface *i);
+ virtual bool disconnectI(Interface *i);
+
+ virtual void noticeWidgetPluginShown(WidgetPluginBase *p, bool shown);
+ virtual void noticePluginsChanged(const PluginList &);
+
+ virtual ConfigPageInfo createConfigurationPage();
+ virtual AboutPageInfo createAboutPage();
+
+public slots:
+ // connects destroy-msg with remove-function
+ bool addElement (RadioViewElement *);
+ bool removeElement (QObject *);
+
+protected:
+ void selectTopWidgets();
+
+
+ // IRadioClient
+
+RECEIVERS:
+ bool noticePowerChanged(bool on);
+ bool noticeStationChanged (const RadioStation &, int idx);
+ bool noticeStationsChanged(const StationList &sl);
+ bool noticePresetFileChanged(const QString &/*f*/) { return false; }
+
+ bool noticeCurrentSoundStreamIDChanged(SoundStreamID id);
+
+ // IRadioDevicePoolClient
+
+RECEIVERS:
+ bool noticeActiveDeviceChanged(IRadioDevice *rd);
+ bool noticeDevicesChanged(const QPtrList<IRadioDevice> &) { return false; }
+ bool noticeDeviceDescriptionChanged(const QString &) { return false; }
+
+ // ISoundStreamClient
+
+RECEIVERS:
+ void noticeConnectedI (ISoundStreamServer *s, bool pointer_valid);
+
+ bool startRecordingWithFormat(SoundStreamID /*id*/,
+ const SoundFormat &/*proposed_format*/,
+ SoundFormat &/*real_format*/);
+ bool stopRecording(SoundStreamID /*id*/);
+
+ bool noticeSoundStreamChanged(SoundStreamID id);
+
+ // ITimeControlClient
+
+RECEIVERS:
+ bool noticeAlarmsChanged(const AlarmVector &) { return false; }
+ bool noticeAlarm(const Alarm &) { return false; }
+ bool noticeNextAlarmChanged(const Alarm *) { return false; }
+ bool noticeCountdownStarted(const QDateTime &end);
+ bool noticeCountdownStopped();
+ bool noticeCountdownZero();
+ bool noticeCountdownSecondsChanged(int) { return false; }
+
+protected slots:
+
+ void slotPower (bool on);
+ void slotPause();
+ void slotConfigure (bool show);
+ void slotRecord ();
+ void slotSnooze (bool start);
+ void slotSnooze (int time);
+ void slotRecordingMenu(int i);
+ void slotBtnPluginsClicked();
+ void slotComboStationSelected(int);
+
+ void slotConfigPageDeleted(QObject*);
+ void slotElementConfigPageDeleted(QObject*);
+
+public slots:
+
+ void toggleShown() { WidgetPluginBase::pToggleShown(); }
+ void showOnOrgDesktop();
+ void show();
+ void hide();
+
+protected:
+ virtual void showEvent(QShowEvent *);
+ virtual void hideEvent(QHideEvent *);
+
+ virtual void autoSetCaption();
+
+ const QWidget *getWidget() const { return this; }
+ QWidget *getWidget() { return this; }
+
+ void addConfigurationTabFor(RadioViewElement *, QTabWidget *);
+ void addCommonConfigurationTab(QTabWidget *);
+
+protected:
+ bool enableToolbarFlag;
+
+ QToolButton *btnPower;
+ QToolButton *btnConfigure;
+ QToolButton *btnQuit;
+ QToolButton *btnRecording;
+ QToolButton *btnSnooze;
+ QToolButton *btnPlugins;
+ KComboBox *comboStations;
+
+ struct ElementCfg
+ {
+ RadioViewElement *element;
+ QObject *cfg;
+ ElementCfg() : element(NULL), cfg(NULL) {}
+ ElementCfg(RadioViewElement *e, QObject *w) : element(e), cfg(w) {}
+ ElementCfg(RadioViewElement *e) : element(e), cfg(NULL) {}
+ ElementCfg(QObject *w) : element(NULL), cfg(w) {}
+ bool operator == (const ElementCfg &x) const;
+ };
+
+ typedef QPtrList<RadioViewElement> ElementList;
+ typedef QPtrListIterator<RadioViewElement> ElementListIterator;
+ typedef QValueList<ElementCfg> ElementCfgList;
+ typedef QValueListIterator<ElementCfg> ElementCfgListIterator;
+
+ ElementList elements;
+ ElementCfgList elementConfigPages;
+ QObjectList configPages;
+ QWidgetStack * widgetStacks[clsClassMAX];
+ float maxUsability[clsClassMAX];
+
+ IRadioDevice *currentDevice;
+
+ KPopupMenu *m_RecordingMenu;
+ KPopupMenu *m_pauseMenu;
+ KPopupMenu *m_SnoozeMenu;
+ int m_NextRecordingMenuID;
+ QMap<int, SoundStreamID> m_MenuID2StreamID;
+ QMap<SoundStreamID, int> m_StreamID2MenuID;
+
+ KPopupMenu *m_PluginMenu;
+ QMap<WidgetPluginBase *, int> m_Plugins2MenuID;
+};
+
+
+
+
+#endif
diff --git a/kradio3/plugins/gui-standard-display/radioview_element.cpp b/kradio3/plugins/gui-standard-display/radioview_element.cpp
new file mode 100644
index 0000000..9c3396f
--- /dev/null
+++ b/kradio3/plugins/gui-standard-display/radioview_element.cpp
@@ -0,0 +1,34 @@
+/***************************************************************************
+ radioview_element.cpp - description
+ -------------------
+ begin : Fre Jun 20 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "radioview_element.h"
+
+RadioViewElement::RadioViewElement (QWidget * /*parent*/, const QString & /*name*/,
+ RadioViewClass cls)
+ : myClass(cls)
+{
+}
+
+
+RadioViewElement::~RadioViewElement()
+{
+}
+
+
+
+
+#include "radioview_element.moc"
diff --git a/kradio3/plugins/gui-standard-display/radioview_element.h b/kradio3/plugins/gui-standard-display/radioview_element.h
new file mode 100644
index 0000000..11c77ac
--- /dev/null
+++ b/kradio3/plugins/gui-standard-display/radioview_element.h
@@ -0,0 +1,66 @@
+/***************************************************************************
+ radioview_element.h - description
+ -------------------
+ begin : Fre Jun 20 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_RADIOVIEW_ELEMENT_H
+#define KRADIO_RADIOVIEW_ELEMENT_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qframe.h>
+#include "../../src/include/interfaces.h"
+#include "../../src/include/plugins.h"
+
+enum RadioViewClass { clsRadioSound = 0,
+ clsRadioSeek,
+ clsRadioDisplay,
+ clsClassMAX
+ };
+
+
+// Defaults to an empty element
+class RadioViewElement : public QFrame,
+ public virtual Interface
+{
+Q_OBJECT
+public:
+ RadioViewElement (QWidget *parent, const QString &name, RadioViewClass myClass);
+ virtual ~RadioViewElement();
+
+ bool connectI (Interface *) { return false; } // default behaviour, please overwrite in derived class
+ bool disconnectI(Interface *) { return false; } // default behaviour, please overwrite in derived class
+
+ float getUsability (Interface *) const { return 0.01; } // 0 <= Usability <= 1, used to decide wich Element to use
+ // should be overwritten ;)
+
+ RadioViewClass getClass() const { return myClass; }
+
+ // Configuration ??
+ virtual ConfigPageInfo createConfigurationPage() { return ConfigPageInfo(); }
+
+ virtual void saveState (KConfig *) const {}
+ virtual void restoreState (KConfig *) {}
+
+
+protected :
+
+ RadioViewClass myClass;
+};
+
+
+#endif
diff --git a/kradio3/plugins/gui-standard-display/radioview_frequencyradio.cpp b/kradio3/plugins/gui-standard-display/radioview_frequencyradio.cpp
new file mode 100644
index 0000000..8c6d15d
--- /dev/null
+++ b/kradio3/plugins/gui-standard-display/radioview_frequencyradio.cpp
@@ -0,0 +1,443 @@
+/***************************************************************************
+ kradiodisplay.cpp - description
+ -------------------
+ begin : Mit Jan 29 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "../../src/include/utils.h"
+
+#include <qpainter.h>
+#include <qimage.h>
+#include <qpixmap.h>
+#include <kimageeffect.h> // fading, blending, ...
+#include <kpixmapio.h> // fast conversion between QPixmap/QImage
+#include "radioview_frequencyradio.h"
+#include "displaycfg.h"
+
+RadioViewFrequencyRadio::RadioViewFrequencyRadio(QWidget *parent, const QString &name )
+ : RadioViewElement(parent, name, clsRadioDisplay),
+ m_power(false),
+ m_valid(false),
+ m_frequency(0),
+ m_quality(0.0),
+ m_stereo(false)
+{
+ setFrameStyle(Box | Sunken);
+ setLineWidth(1);
+ setMidLineWidth(1);
+
+
+ // set some sensless default colors
+ // real values are read in restoreState
+ setDisplayColors(QColor(20, 244, 20),
+ QColor(10, 117, 10).light(75),
+ QColor(10, 117, 10));
+ setDisplayFont(QFont("Helvetica"));
+
+}
+
+
+RadioViewFrequencyRadio::~RadioViewFrequencyRadio(){
+}
+
+
+float RadioViewFrequencyRadio::getUsability (Interface *i) const
+{
+ if (dynamic_cast<IFrequencyRadio*>(i))
+ return 1.0;
+ else
+ return 0.0;
+}
+
+
+void RadioViewFrequencyRadio::saveState (KConfig *config) const
+{
+ config->writeEntry("frequency-view-colorActiveText", m_colorActiveText);
+ config->writeEntry("frequency-view-colorInactiveText", m_colorInactiveText);
+ config->writeEntry("frequency-view-colorButton", m_colorButton);
+ config->writeEntry("frequency-view-font", m_font);
+}
+
+
+void RadioViewFrequencyRadio::restoreState (KConfig *config)
+{
+ QColor defaultActive (20, 244, 20),
+ defaultInactive(QColor(10, 117, 10).light(75)),
+ defaultButton (10, 117, 10);
+ QFont defaultFont ("Helvetica");
+ QColor a, b, c;
+ QFont f;
+ a = config->readColorEntry ("frequency-view-colorActiveText",
+ &defaultActive);
+ b = config->readColorEntry ("frequency-view-colorInactiveText",
+ &defaultInactive);
+ c = config->readColorEntry ("frequency-view-colorButton",
+ &defaultButton);
+ f = config->readFontEntry ("frequency-view-font",
+ &defaultFont);
+ setDisplayColors(a, b, c);
+ setDisplayFont(f);
+}
+
+
+ConfigPageInfo RadioViewFrequencyRadio::createConfigurationPage()
+{
+ DisplayConfiguration *a = new DisplayConfiguration(NULL);
+ connectI(a);
+ return ConfigPageInfo (a,
+ i18n("Frequency Display"),
+ i18n("Frequency Display"),
+ QString::null
+ );
+}
+
+
+// Interface
+
+bool RadioViewFrequencyRadio::connectI(Interface *i)
+{
+ bool o = IDisplayCfg::connectI(i);
+ bool c = ISoundStreamClient::connectI(i);
+ if (dynamic_cast<IFrequencyRadio *>(i)) {
+
+ bool a = IRadioDeviceClient::connectI(i);
+ bool b = IFrequencyRadioClient::connectI(i);
+ return o || a || b || c;
+
+ } else {
+ return o || c;
+ }
+}
+
+
+bool RadioViewFrequencyRadio::disconnectI(Interface *i)
+{
+ // no check for IFrequencyRadio, it's just a disconnect
+
+ bool a = IRadioDeviceClient::disconnectI(i);
+ bool b = IFrequencyRadioClient::disconnectI(i);
+ bool c = ISoundStreamClient::disconnectI(i);
+ bool o = IDisplayCfg::disconnectI(i);
+
+ return a || b || c || o;
+}
+
+void RadioViewFrequencyRadio::noticeConnectedI (ISoundStreamServer *s, bool pointer_valid)
+{
+ ISoundStreamClient::noticeConnectedI(s, pointer_valid);
+ if (s && pointer_valid) {
+ s->register4_notifySignalQualityChanged(this);
+ s->register4_notifyStereoChanged(this);
+ }
+}
+
+// IDisplayCfg
+
+bool RadioViewFrequencyRadio::setDisplayColors(const QColor &activeText,
+ const QColor &inactiveText,
+ const QColor &button)
+{
+ bool change = (activeText != m_colorActiveText || inactiveText != m_colorInactiveText || button != m_colorButton);
+
+ m_colorActiveText = activeText;
+ m_colorInactiveText = inactiveText;
+ m_colorButton = button;
+
+ QPalette pl = palette();
+ QColorGroup cg = pl.inactive();
+
+ QBrush fg = cg.brush(QColorGroup::Foreground),
+ btn = cg.brush(QColorGroup::Button),
+ lgt = cg.brush(QColorGroup::Light),
+ drk = cg.brush(QColorGroup::Dark),
+ mid = cg.brush(QColorGroup::Mid),
+ txt = cg.brush(QColorGroup::Text),
+ btx = cg.brush(QColorGroup::BrightText),
+ bas = cg.brush(QColorGroup::Base),
+ bg = cg.brush(QColorGroup::Background);
+
+ fg.setColor (m_colorActiveText);
+ btn.setColor(m_colorButton);
+ lgt.setColor(m_colorButton.light(180));
+ drk.setColor(m_colorButton.light( 50));
+ mid.setColor(m_colorInactiveText);
+ txt.setColor(m_colorActiveText);
+ btx.setColor(m_colorActiveText);
+ bas.setColor(m_colorButton);
+ bg.setColor (m_colorButton);
+
+ QColorGroup ncg(fg, btn, lgt, drk, mid, txt, btx, bas, bg);
+ pl.setInactive(ncg);
+ pl.setActive(ncg);
+ setPalette(pl);
+
+ if (parentWidget() && parentWidget()->backgroundPixmap() ){
+ KPixmapIO io;
+ QImage i = io.convertToImage(*parentWidget()->backgroundPixmap());
+ KImageEffect::fade(i, 0.5, colorGroup().color(QColorGroup::Dark));
+ setPaletteBackgroundPixmap(io.convertToPixmap(i));
+ setBackgroundOrigin(WindowOrigin);
+ } else {
+ setBackgroundColor(colorGroup().color(QColorGroup::Button));
+ }
+
+ if (change)
+ notifyDisplayColorsChanged(m_colorActiveText, m_colorInactiveText, m_colorButton);
+ return true;
+}
+
+bool RadioViewFrequencyRadio::setDisplayFont (const QFont &f)
+{
+ if (m_font != f) {
+ m_font = f;
+ notifyDisplayFontChanged(m_font);
+ RadioViewElement::setFont(f);
+ }
+ return true;
+}
+
+// IRadioDeviceClient
+
+
+bool RadioViewFrequencyRadio::noticePowerChanged (bool on, const IRadioDevice */*sender*/)
+{
+ m_power = on;
+
+ SoundStreamID ssid = queryCurrentSoundStreamID();
+ float q = 0.0;
+ bool s = false;
+ querySignalQuality(ssid, q);
+ noticeSignalQualityChanged(ssid, q);
+ queryIsStereo(ssid, s);
+ noticeStereoChanged(ssid, s);
+
+ repaint();
+ return true;
+}
+
+
+bool RadioViewFrequencyRadio::noticeStationChanged (const RadioStation &, const IRadioDevice */*sender*/)
+{
+ return false; // we don't care
+}
+
+
+bool RadioViewFrequencyRadio::noticeDescriptionChanged (const QString &, const IRadioDevice */*sender*/)
+{
+ return false; // we don't care
+}
+
+
+// IRadioSoundClient
+
+bool RadioViewFrequencyRadio::noticeSignalQualityChanged(SoundStreamID id, float q)
+{
+ if (queryCurrentSoundStreamID() != id)
+ return false;
+ m_quality = q;
+ repaint ();
+ return true;
+}
+
+
+bool RadioViewFrequencyRadio::noticeStereoChanged(SoundStreamID id, bool s)
+{
+ if (queryCurrentSoundStreamID() != id)
+ return false;
+ m_stereo = s;
+ repaint ();
+ return true;
+}
+
+
+
+
+// IFrequencyRadioClient
+
+
+bool RadioViewFrequencyRadio::noticeFrequencyChanged(float f, const RadioStation *)
+{
+ m_frequency = f;
+ repaint ();
+ return true;
+}
+
+
+bool RadioViewFrequencyRadio::noticeMinMaxFrequencyChanged(float /*min*/, float /*max*/)
+{
+ return false; // we don't care
+}
+
+
+bool RadioViewFrequencyRadio::noticeDeviceMinMaxFrequencyChanged(float /*min*/, float /*max*/)
+{
+ return false; // we don't care
+}
+
+
+bool RadioViewFrequencyRadio::noticeScanStepChanged(float /*s*/)
+{
+ return false; // we don't care
+}
+
+
+
+void RadioViewFrequencyRadio::drawContents(QPainter *paint)
+{
+ if (!paint) return;
+
+ QRect r = contentsRect();
+
+ int margin = QMAX(4, QMIN(r.width() / 50, r.height() / 50)),
+ tmp = QMIN(r.height(), (r.width() - 2*margin) / 4),
+ xd_st = QMIN((r.height() - margin * 2) / 3, tmp/3),
+ xw = QMIN(tmp / 2, xd_st * 3 / 2),
+ penw = QMAX(1, xw / 25),
+ xh_st = xd_st,
+ xx_st = r.x() + margin + xw + 2 * margin + penw/2,
+ xy_st = r.y() + margin + penw/2,
+
+ xx_am = xx_st,
+ xy_am = xy_st + xh_st + margin / 2,
+ xh_am = (r.bottom() - margin - xy_am + 1 - margin/2) / 2,
+
+ xx_fm = xx_am,
+ xy_fm = xy_am + xh_am + margin/2,
+ xh_fm = xh_am,
+
+ xh_sg = r.height() - margin * 2,
+ xx_sg = r.x() + margin,
+ xy_sg = r.y() + margin;
+
+ QPen activePen (colorGroup().color(QColorGroup::Text), penw);
+ QPen inactivePen (colorGroup().color(QColorGroup::Mid), penw);
+ QBrush activeBrush = colorGroup().brush(QColorGroup::Text);
+ QBrush inactiveBrush = colorGroup().brush(QColorGroup::Mid);
+
+ // draw stereo symbol
+ paint->setPen( (m_stereo && m_power) ? activePen : inactivePen);
+ paint->drawArc((int)xx_st, (int)xy_st,
+ (int)(xd_st - penw), (int)(xd_st - penw),
+ 0, 360*16);
+ paint->drawArc((int)(xx_st + xd_st/2), (int)xy_st,
+ (int)(xd_st - penw), (int)(xd_st - penw),
+ 0, 360*16);
+
+ // draw signal quality symbol
+ float cx = xx_sg,
+ cy = xy_sg,
+ cw = xw,
+ ch = xw;
+
+ float open_a = 30.0;
+ // outer circle
+ paint->setPen( (m_quality > 0.75 && m_power) ? activePen : inactivePen);
+ paint->drawArc((int)rint(cx), (int)rint(cy),
+ (int)rint(cw), (int)rint(ch),
+ (int)(-90+open_a)*16, (int)(360 - 2*open_a)*16
+ );
+
+ // mid circle
+ paint->setPen( (m_quality > 0.50 && m_power) ? activePen : inactivePen);
+ cx += (float)xw/5.0; cy += (float)xw/5.0;
+ cw -= (float)xw/2.5; ch -= (float)xw/2.5;
+ paint->drawArc((int)rint(cx), (int)rint(cy),
+ (int)rint(cw), (int)rint(ch),
+ (int)(-90+open_a)*16, (int)(360 - 2*open_a)*16
+ );
+
+ // inner circle
+ paint->setPen( (m_quality > 0.25 && m_power) ? activePen : inactivePen);
+ cx += (float)xw/5.0; cy += (float)xw/5.0;
+ cw -= (float)xw/2.5; ch -= (float)xw/2.5;
+ paint->drawArc((int)rint(cx), (int)rint(cy),
+ (int)rint(cw), (int)rint(ch),
+ (int)(-90+open_a)*16, (int)(360 - 2*open_a)*16
+ );
+
+ // triangle
+ QPen tmppen = (m_quality > 0.1 && m_power) ? activePen : inactivePen;
+ tmppen.setWidth(1);
+ paint->setPen(tmppen);
+ paint->setBrush( (m_quality > 0.1 && m_power) ? activeBrush : inactiveBrush);
+ QPointArray pts(3);
+ pts.setPoint(0, (int)(xx_sg + xw / 4), (int)(xy_sg + xh_sg - penw/2));
+ pts.setPoint(1, (int)(xx_sg + xw *3/4), (int)(xy_sg + xh_sg - penw/2));
+ pts.setPoint(2, (int)(xx_sg + xw / 2), (int)(xy_sg + xw/2 + penw));
+ paint->drawConvexPolygon(pts);
+
+
+
+ // AM/FM display
+
+ QFont f = m_font;
+ paint->setPen ( (m_frequency <= 10 && m_power) ? activePen : inactivePen);
+ f.setPixelSize(xh_am);
+ paint->setFont(f);
+ paint->drawText(xx_am, xy_am + xh_am - 1, i18n("AM"));
+ int xw_am = QFontMetrics(f).width(i18n("AM"));
+
+ paint->setPen ( (m_frequency > 10 && m_power) ? activePen : inactivePen);
+ f.setPixelSize(xh_fm);
+ paint->setFont(f);
+ paint->drawText(xx_fm, xy_fm + xh_fm - 1, i18n("FM"));
+ int xw_fm = QFontMetrics(f).width(i18n("FM"));
+
+ int xx_f = QMAX(xx_fm + xw_fm, QMAX(xw_am + xx_am, QMAX(xx_st + xw, xw + xx_sg))) + margin,
+ xy_f = r.y() + margin,
+ xw_f = r.right() - margin - xx_f + 1,
+ xh_f = r.bottom() - margin - xy_f + 1;
+
+ // Frequency Display
+
+ QString s;
+ if (m_frequency < 10) {
+ s = i18n("%1 kHz").arg(KGlobal::locale()->formatNumber((int)(m_frequency * 1000), 0));
+ } else {
+ s = i18n("%1 MHz").arg(KGlobal::locale()->formatNumber(m_frequency, 2));
+ }
+
+ float pxs = xh_f;
+ paint->setPen ( m_power ? activePen : inactivePen);
+ f.setPixelSize((int)pxs);
+ int n = 30;
+ while (1) {
+ QFontMetrics fm(f);
+ int sw = fm.boundingRect(xx_f, xy_f, xw_f, xh_f, Qt::AlignRight | Qt::AlignVCenter, s).width();
+ if (sw <= xw_f || --n <= 0) break;
+
+ float fact = (float)xw_f / (float)sw;
+ pxs = QMIN(pxs - 1, pxs * fact);
+ f.setPixelSize(QMAX(1,(int)pxs));
+ }
+ paint->setFont(f);
+ paint->drawText(xx_f, xy_f, xw_f, xh_f, Qt::AlignRight | Qt::AlignVCenter, s);
+}
+
+
+
+
+
+
+void RadioViewFrequencyRadio::reparent (QWidget *prnt,
+ WFlags f,
+ const QPoint &p,
+ bool showIt)
+{
+ RadioViewElement::reparent(prnt, f, p, showIt);
+ setDisplayColors(m_colorActiveText, m_colorInactiveText, m_colorButton);
+}
+
+
+#include "radioview_frequencyradio.moc"
diff --git a/kradio3/plugins/gui-standard-display/radioview_frequencyradio.h b/kradio3/plugins/gui-standard-display/radioview_frequencyradio.h
new file mode 100644
index 0000000..795eae1
--- /dev/null
+++ b/kradio3/plugins/gui-standard-display/radioview_frequencyradio.h
@@ -0,0 +1,108 @@
+/***************************************************************************
+ kradiodisplay.h - description
+ -------------------
+ begin : Mit Jan 29 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_RADIOVIEW_FREQUENCYRADIO_H
+#define KRADIO_RADIOVIEW_FREQUENCYRADIO_H
+
+#include "../../src/include/radiodevice_interfaces.h"
+#include "../../src/include/soundstreamclient_interfaces.h"
+#include "radioview_element.h"
+#include "displaycfg_interfaces.h"
+
+/**
+ *@author Martin Witte
+ */
+
+class RadioViewFrequencyRadio : public RadioViewElement, // is a QObject, must be first
+ public IRadioDeviceClient,
+ public IFrequencyRadioClient,
+ public ISoundStreamClient,
+ public IDisplayCfg
+{
+Q_OBJECT
+public:
+ RadioViewFrequencyRadio(QWidget *parent, const QString &name);
+ ~RadioViewFrequencyRadio();
+
+ float getUsability (Interface *) const;
+
+ virtual void saveState (KConfig *) const;
+ virtual void restoreState (KConfig *);
+
+ ConfigPageInfo createConfigurationPage();
+
+// Interface
+
+ bool connectI (Interface *);
+ bool disconnectI(Interface *);
+
+// IDisplayCfg
+
+RECEIVERS:
+ bool setDisplayColors(const QColor &activeColor, const QColor &inactiveColor, const QColor &bkgnd);
+ bool setDisplayFont (const QFont &f);
+
+ANSWERS:
+ const QColor &getDisplayActiveColor() const { return m_colorActiveText; }
+ const QColor &getDisplayInactiveColor() const { return m_colorInactiveText; }
+ const QColor &getDisplayBkgndColor() const { return m_colorButton; }
+ const QFont &getDisplayFont() const { return m_font; }
+
+// IRadioDeviceClient
+RECEIVERS:
+ bool noticePowerChanged (bool on, const IRadioDevice *sender = NULL);
+ bool noticeStationChanged (const RadioStation &, const IRadioDevice *sender = NULL);
+ bool noticeDescriptionChanged (const QString &, const IRadioDevice *sender = NULL);
+ bool noticeCurrentSoundStreamIDChanged(SoundStreamID /*id*/, const IRadioDevice */*sender*/) { return false; }
+
+// ISoundStreamClient
+RECEIVERS:
+ void noticeConnectedI (ISoundStreamServer *s, bool pointer_valid);
+
+ bool noticeSignalQualityChanged(SoundStreamID id, float q);
+ bool noticeStereoChanged(SoundStreamID id, bool s);
+
+// IFrequencyRadioClient
+RECEIVERS:
+ bool noticeFrequencyChanged(float f, const RadioStation *s);
+ bool noticeMinMaxFrequencyChanged(float min, float max);
+ bool noticeDeviceMinMaxFrequencyChanged(float min, float max);
+ bool noticeScanStepChanged(float s);
+
+// own stuff ;)
+
+public:
+
+ void reparent (QWidget *parent, WFlags f, const QPoint &p, bool showIt = FALSE);
+
+protected:
+
+ void drawContents(QPainter *p);
+
+protected:
+
+ QColor m_colorActiveText, m_colorInactiveText, m_colorButton;
+ QFont m_font;
+
+ bool m_power;
+ bool m_valid;
+ float m_frequency;
+ float m_quality;
+ bool m_stereo;
+};
+
+#endif
diff --git a/kradio3/plugins/gui-standard-display/radioview_frequencyseeker.cpp b/kradio3/plugins/gui-standard-display/radioview_frequencyseeker.cpp
new file mode 100644
index 0000000..938939a
--- /dev/null
+++ b/kradio3/plugins/gui-standard-display/radioview_frequencyseeker.cpp
@@ -0,0 +1,250 @@
+/***************************************************************************
+ radioview_frequencyseeker.cpp - description
+ -------------------
+ begin : Fre Jun 20 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include <math.h>
+#include <qlayout.h>
+#include <qslider.h>
+#include <qtoolbutton.h>
+#include <qaccel.h>
+#include <qtooltip.h>
+
+#include <kiconloader.h>
+#include <klocale.h>
+
+#include "radioview_frequencyseeker.h"
+
+RadioViewFrequencySeeker::RadioViewFrequencySeeker(QWidget *parent, const QString &name)
+ : RadioViewElement(parent, name, clsRadioSeek),
+ m_btnSearchLeft(NULL),
+ m_btnStepLeft(NULL),
+ m_btnStepRight(NULL),
+ m_btnSearchRight(NULL),
+ m_sldFrequency(NULL),
+ m_ignoreChanges(false)
+{
+ QBoxLayout *l = new QBoxLayout(this, QBoxLayout::LeftToRight, /*spacing=*/ 3);
+ l->setMargin(0);
+
+ m_sldFrequency = new QSlider(Qt::Horizontal, this);
+ m_btnSearchLeft = new QToolButton(this);
+ m_btnSearchRight = new QToolButton(this);
+ m_btnStepLeft = new QToolButton(this);
+ m_btnStepRight = new QToolButton(this);
+
+ m_btnSearchLeft ->setToggleButton(true);
+ m_btnSearchRight->setToggleButton(true);
+ m_sldFrequency->setPageStep(1);
+
+ m_btnSearchLeft ->setIconSet(SmallIconSet("2leftarrow"));
+ m_btnSearchRight->setIconSet(SmallIconSet("2rightarrow"));
+ m_btnStepLeft ->setIconSet(SmallIconSet("1leftarrow"));
+ m_btnStepRight ->setIconSet(SmallIconSet("1rightarrow"));
+
+ l->addWidget (m_btnSearchLeft);
+ l->addWidget (m_btnStepLeft);
+ l->addWidget (m_sldFrequency);
+ l->addWidget (m_btnStepRight);
+ l->addWidget (m_btnSearchRight);
+
+ QObject::connect(m_sldFrequency, SIGNAL(valueChanged(int)),
+ this, SLOT(slotSliderChanged(int)));
+ QObject::connect(m_btnSearchLeft, SIGNAL(toggled(bool)),
+ this, SLOT(slotSearchLeft(bool)));
+ QObject::connect(m_btnSearchRight, SIGNAL(toggled(bool)),
+ this, SLOT(slotSearchRight(bool)));
+ QObject::connect(m_btnStepLeft, SIGNAL(clicked()),
+ m_sldFrequency, SLOT(subtractStep()));
+ QObject::connect(m_btnStepRight, SIGNAL(clicked()),
+ m_sldFrequency, SLOT(addStep()));
+
+ // Tooltips
+
+ QToolTip::add(m_btnSearchLeft, i18n("Search for previous Radio Station"));
+ QToolTip::add(m_btnSearchRight, i18n("Search for next Radio Station"));
+ QToolTip::add(m_btnStepLeft, i18n("Decrement Frequency"));
+ QToolTip::add(m_btnStepRight, i18n("Increment Frequency"));
+ QToolTip::add(m_sldFrequency, i18n("Change Frequency"));
+
+ // Accelerators
+
+ QAccel *Accel = new QAccel (this);
+ Accel->insertItem (Key_Left, 100);
+ Accel->insertItem (Key_Right, 101);
+ Accel->connectItem (100, m_sldFrequency, SLOT(subtractStep()));
+ Accel->connectItem (101, m_sldFrequency, SLOT(addStep()));
+}
+
+
+RadioViewFrequencySeeker::~RadioViewFrequencySeeker()
+{
+}
+
+
+float RadioViewFrequencySeeker::getUsability (Interface *i) const
+{
+ if (dynamic_cast<IFrequencyRadio*>(i))
+ return 0.9;
+ else
+ return 0.0;
+}
+
+
+// Interface
+
+bool RadioViewFrequencySeeker::connectI (Interface *i)
+{
+ if (IFrequencyRadioClient::connectI(i)) {
+ ISeekRadioClient::connectI(i);
+ return true;
+ } else {
+ return false;
+ }
+}
+
+
+bool RadioViewFrequencySeeker::disconnectI(Interface *i)
+{
+ bool a = IFrequencyRadioClient::disconnectI(i);
+ bool b = ISeekRadioClient::disconnectI(i);
+ return a || b;
+}
+
+
+
+// ISeekRadioClient
+
+bool RadioViewFrequencySeeker::noticeSeekStarted (bool up)
+{
+ m_ignoreChanges = true;
+ m_btnSearchLeft->setOn(!up);
+ m_btnSearchRight->setOn(up);
+ m_ignoreChanges = false;
+ return true;
+}
+
+
+bool RadioViewFrequencySeeker::noticeSeekStopped ()
+{
+ m_ignoreChanges = true;
+ m_btnSearchLeft->setOn(false);
+ m_btnSearchRight->setOn(false);
+ m_ignoreChanges = false;
+ return true;
+}
+
+
+bool RadioViewFrequencySeeker::noticeSeekFinished (const RadioStation &/*s*/, bool /*goodQuality*/)
+{
+ m_ignoreChanges = true;
+ m_btnSearchLeft->setOn(false);
+ m_btnSearchRight->setOn(false);
+ m_ignoreChanges = false;
+ return true;
+}
+
+
+
+// IFrequencyRadioClient
+
+bool RadioViewFrequencySeeker::noticeFrequencyChanged(float f, const RadioStation */*s*/)
+{
+ float step = queryScanStep();
+ if (step == 0) step = 0.000001;
+
+ m_ignoreChanges = true;
+ m_sldFrequency->setValue((int)rint(f / step));
+ m_ignoreChanges = false;
+ return true;
+}
+
+
+bool RadioViewFrequencySeeker::noticeMinMaxFrequencyChanged(float min, float max)
+{
+ float step = queryScanStep();
+ if (step == 0) step = 0.000001;
+
+ m_ignoreChanges = true;
+ m_sldFrequency->setMinValue((int)rint(min / step));
+ m_sldFrequency->setMaxValue((int)rint(max / step));
+ m_sldFrequency->setValue ((int)rint(queryFrequency() / step));
+ m_ignoreChanges = false;
+ return true;
+}
+
+
+bool RadioViewFrequencySeeker::noticeDeviceMinMaxFrequencyChanged(float /*min*/, float /*max*/)
+{
+ return false; // we don't care
+}
+
+
+bool RadioViewFrequencySeeker::noticeScanStepChanged(float s)
+{
+ if (s == 0) s = 0.000001;
+ m_ignoreChanges = true;
+ m_sldFrequency->setMinValue((int)rint(queryMinFrequency() / s));
+ m_sldFrequency->setMaxValue((int)rint(queryMaxFrequency() / s));
+ m_sldFrequency->setValue ((int)rint(queryFrequency() / s));
+ m_ignoreChanges = false;
+ return true;
+}
+
+
+void RadioViewFrequencySeeker::slotSearchLeft(bool on)
+{
+ if (m_ignoreChanges) return;
+ if (on) {
+ if (queryIsSeekUpRunning())
+ sendStopSeek();
+ if (!queryIsSeekRunning())
+ sendStartSeekDown();
+ } else {
+ if (queryIsSeekDownRunning())
+ sendStopSeek();
+ }
+ if (!queryIsSeekDownRunning())
+ m_btnSearchLeft->setOn(false);
+}
+
+
+void RadioViewFrequencySeeker::slotSearchRight(bool on)
+{
+ if (m_ignoreChanges) return;
+ if (on) {
+ if (queryIsSeekDownRunning())
+ sendStopSeek();
+ if (!queryIsSeekRunning())
+ sendStartSeekUp();
+ } else {
+ if (queryIsSeekUpRunning())
+ sendStopSeek();
+ }
+ if (!queryIsSeekUpRunning())
+ m_btnSearchRight->setOn(false);
+}
+
+
+void RadioViewFrequencySeeker::slotSliderChanged(int val)
+{
+ if (m_ignoreChanges) return;
+ sendFrequency(val * queryScanStep());
+}
+
+
+
+
+#include "radioview_frequencyseeker.moc"
diff --git a/kradio3/plugins/gui-standard-display/radioview_frequencyseeker.h b/kradio3/plugins/gui-standard-display/radioview_frequencyseeker.h
new file mode 100644
index 0000000..12ca7d4
--- /dev/null
+++ b/kradio3/plugins/gui-standard-display/radioview_frequencyseeker.h
@@ -0,0 +1,78 @@
+/***************************************************************************
+ radioview_frequencyseeker.h - description
+ -------------------
+ begin : Fre Jun 20 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_RADIOVIEW_FREQUENCYSEEKER_H
+#define KRADIO_RADIOVIEW_FREQUENCYSEEKER_H
+
+#include "../../src/include/radiodevice_interfaces.h"
+#include "radioview_element.h"
+
+class QToolButton;
+class QSlider;
+
+class RadioViewFrequencySeeker : public RadioViewElement, // is a QObject, must be first
+ public ISeekRadioClient,
+ public IFrequencyRadioClient
+{
+Q_OBJECT
+public:
+ RadioViewFrequencySeeker(QWidget *parent, const QString &name);
+ ~RadioViewFrequencySeeker();
+
+ float getUsability(Interface *) const;
+
+// Interface
+
+ bool connectI (Interface *);
+ bool disconnectI(Interface *);
+
+// ISeekRadioClient
+RECEIVERS:
+ bool noticeSeekStarted (bool up);
+ bool noticeSeekStopped ();
+ bool noticeSeekFinished (const RadioStation &s, bool goodQuality);
+ bool noticeProgress (float ) { return false; }
+
+// IFrequencyRadioClient
+RECEIVERS:
+ bool noticeFrequencyChanged(float f, const RadioStation *s);
+ bool noticeMinMaxFrequencyChanged(float min, float max);
+ bool noticeDeviceMinMaxFrequencyChanged(float min, float max);
+ bool noticeScanStepChanged(float s);
+
+// own stuff ;)
+
+protected slots:
+
+ void slotSearchLeft(bool on);
+ void slotSearchRight(bool on);
+ void slotSliderChanged(int val);
+
+protected:
+
+ QToolButton *m_btnSearchLeft,
+ *m_btnStepLeft,
+ *m_btnStepRight,
+ *m_btnSearchRight;
+ QSlider *m_sldFrequency;
+
+ bool m_ignoreChanges;
+};
+
+
+
+#endif
diff --git a/kradio3/plugins/gui-standard-display/radioview_seekinterface.ui b/kradio3/plugins/gui-standard-display/radioview_seekinterface.ui
new file mode 100644
index 0000000..f4fc98c
--- /dev/null
+++ b/kradio3/plugins/gui-standard-display/radioview_seekinterface.ui
@@ -0,0 +1,167 @@
+<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
+<class>RadioView_SeekerUI</class>
+<author>Ernst Martin Witte</author>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>RadioView_SeekerUI</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>477</width>
+ <height>43</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>RadioView_SeekInterface</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QToolButton" row="0" column="0">
+ <property name="name">
+ <cstring>btnSearchDown</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>1</hsizetype>
+ <vsizetype>1</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="focusPolicy">
+ <enum>TabFocus</enum>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="iconSet">
+ <iconset>"2rightarrow"</iconset>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>search previous station</string>
+ </property>
+ </widget>
+ <widget class="QToolButton" row="0" column="1">
+ <property name="name">
+ <cstring>btnStepDown</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>1</hsizetype>
+ <vsizetype>1</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="focusPolicy">
+ <enum>TabFocus</enum>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="autoRepeat">
+ <bool>true</bool>
+ </property>
+ <property name="iconSet">
+ <iconset>"2rightarrow"</iconset>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>decrease freq. by 0.05 MHz</string>
+ </property>
+ </widget>
+ <widget class="QSlider" row="0" column="2">
+ <property name="name">
+ <cstring>sldRange</cstring>
+ </property>
+ <property name="minValue">
+ <number>8700</number>
+ </property>
+ <property name="maxValue">
+ <number>10900</number>
+ </property>
+ <property name="lineStep">
+ <number>5</number>
+ </property>
+ <property name="pageStep">
+ <number>5</number>
+ </property>
+ <property name="value">
+ <number>8700</number>
+ </property>
+ <property name="tracking">
+ <bool>true</bool>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="tickmarks">
+ <enum>NoMarks</enum>
+ </property>
+ <property name="tickInterval">
+ <number>100</number>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>Frequency control</string>
+ <comment>Frequency</comment>
+ </property>
+ </widget>
+ <widget class="QToolButton" row="0" column="3">
+ <property name="name">
+ <cstring>btnStepUp</cstring>
+ </property>
+ <property name="focusPolicy">
+ <enum>TabFocus</enum>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="autoRepeat">
+ <bool>true</bool>
+ </property>
+ <property name="iconSet">
+ <iconset>"2rightarrow"</iconset>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>increase freq. by 0.05 MHz</string>
+ </property>
+ </widget>
+ <widget class="QToolButton" row="0" column="4">
+ <property name="name">
+ <cstring>btnSearchUp</cstring>
+ </property>
+ <property name="focusPolicy">
+ <enum>TabFocus</enum>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="iconSet">
+ <iconset>"2rightarrow"</iconset>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>search next station</string>
+ </property>
+ </widget>
+ </grid>
+</widget>
+<tabstops>
+ <tabstop>btnSearchDown</tabstop>
+ <tabstop>btnStepDown</tabstop>
+ <tabstop>sldRange</tabstop>
+ <tabstop>btnStepUp</tabstop>
+ <tabstop>btnSearchUp</tabstop>
+</tabstops>
+<includes>
+ <include location="local" impldecl="in implementation">radioview_seekinterface.ui.h</include>
+</includes>
+<functions>
+ <function access="protected">init()</function>
+ <function>destroy()</function>
+</functions>
+<pixmapfunction>SmallIconSet</pixmapfunction>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/kradio3/plugins/gui-standard-display/radioview_seekinterface.ui.h b/kradio3/plugins/gui-standard-display/radioview_seekinterface.ui.h
new file mode 100644
index 0000000..1f75180
--- /dev/null
+++ b/kradio3/plugins/gui-standard-display/radioview_seekinterface.ui.h
@@ -0,0 +1,21 @@
+/****************************************************************************
+** ui.h extension file, included from the uic-generated form implementation.
+**
+** If you wish to add, delete or rename functions or slots use
+** Qt Designer which will update this file, preserving your code. Create an
+** init() function in place of a constructor, and a destroy() function in
+** place of a destructor.
+*****************************************************************************/
+
+void RadioView_SeekerUI::init()
+{
+ Accel = new QAccel (this);
+ Accel->insertItem (Key_Left, 100);
+ Accel->insertItem (Key_Right, 101);
+ Accel->connectItem (100, sldRange, SLOT(subtractStep()));
+ Accel->connectItem (101, sldRange, SLOT(addStep()));
+}
+
+void RadioView_SeekerUI::destroy()
+{
+}
diff --git a/kradio3/plugins/gui-standard-display/radioview_volume.cpp b/kradio3/plugins/gui-standard-display/radioview_volume.cpp
new file mode 100644
index 0000000..d642aa4
--- /dev/null
+++ b/kradio3/plugins/gui-standard-display/radioview_volume.cpp
@@ -0,0 +1,141 @@
+/***************************************************************************
+ radioview_volume.cpp - description
+ -------------------
+ begin : Don Jun 19 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include <math.h>
+#include <qslider.h>
+#include <qlayout.h>
+#include <qaccel.h>
+#include <qtooltip.h>
+
+#include <klocale.h>
+
+#include "radioview_volume.h"
+#include "../../src/include/plugins.h"
+
+#define SLIDER_MINVAL 0
+#define SLIDER_MAXVAL 32768
+#define SLIDER_RANGE (SLIDER_MAXVAL - SLIDER_MINVAL)
+
+RadioViewVolume::RadioViewVolume(QWidget *parent, const QString &name)
+ : RadioViewElement (parent, name, clsRadioSound),
+ m_slider(NULL),
+ m_handlingSlot(false)
+{
+ float v = 0;
+ SoundStreamID ssid = queryCurrentSoundStreamID();
+ sendLogDebug (QString ("RadioViewVolume: ssid=%1").arg(ssid.getID()));
+ queryPlaybackVolume(ssid, v);
+ m_slider = new QSlider(SLIDER_MINVAL,
+ SLIDER_MAXVAL,
+ SLIDER_RANGE/10,
+ getSlider4Volume(v),
+ Qt::Vertical, this);
+
+ QObject::connect(m_slider, SIGNAL(valueChanged(int)),
+ this, SLOT(slotVolumeChanged(int)));
+
+ QBoxLayout *l = new QBoxLayout(this, QBoxLayout::LeftToRight);
+ l->addWidget(m_slider);
+
+ // Tooltips
+
+ QToolTip::add(m_slider, i18n("Change Volume"));
+
+ // Accelerators
+ QAccel *Accel = new QAccel (this);
+ Accel->insertItem (Key_Up, 100);
+ Accel->insertItem (Key_Down, 101);
+ Accel->connectItem (100, m_slider, SLOT(subtractStep()));
+ Accel->connectItem (101, m_slider, SLOT(addStep()));
+
+}
+
+
+RadioViewVolume::~RadioViewVolume()
+{
+}
+
+
+float RadioViewVolume::getUsability (Interface */*i*/) const
+{
+ return 0.5; // there could be more features like mute control, capture settings, ...
+}
+
+
+bool RadioViewVolume::connectI (Interface *i)
+{
+ bool a = IRadioDeviceClient::connectI(i);
+ bool b = ISoundStreamClient::connectI(i);
+ return a || b;
+}
+
+
+bool RadioViewVolume::disconnectI(Interface *i)
+{
+ bool a = IRadioDeviceClient::disconnectI(i);
+ bool b = ISoundStreamClient::disconnectI(i);
+ return a || b;
+}
+
+void RadioViewVolume::noticeConnectedI (ISoundStreamServer *s, bool pointer_valid)
+{
+ ISoundStreamClient::noticeConnectedI(s, pointer_valid);
+ if (s && pointer_valid) {
+ s->register4_notifyPlaybackVolumeChanged(this);
+ }
+}
+
+// ISoundStreamClient
+
+bool RadioViewVolume::noticePlaybackVolumeChanged(SoundStreamID id, float v)
+{
+ if (queryCurrentSoundStreamID() != id)
+ return false;
+ m_slider->setValue(getSlider4Volume(v));
+ return true;
+}
+
+
+
+void RadioViewVolume::slotVolumeChanged(int val)
+{
+ if (m_handlingSlot) return;
+ m_handlingSlot = true;
+ SoundStreamID ssid = queryCurrentSoundStreamID();
+ sendPlaybackVolume(ssid, getVolume4Slider(val));
+ m_handlingSlot = false;
+}
+
+
+int RadioViewVolume::getSlider4Volume(float volume)
+{
+ if (volume >= 1) volume = 1;
+ if (volume < 0) volume = 0;
+ return SLIDER_MAXVAL - (int)rint(SLIDER_RANGE * volume);
+}
+
+
+float RadioViewVolume::getVolume4Slider(int sl)
+{
+ if (sl > SLIDER_MAXVAL) sl = SLIDER_MAXVAL;
+ if (sl < SLIDER_MINVAL) sl = SLIDER_MINVAL;
+ return (float)(SLIDER_MAXVAL - sl) / (float)SLIDER_RANGE;
+}
+
+
+
+#include "radioview_volume.moc"
diff --git a/kradio3/plugins/gui-standard-display/radioview_volume.h b/kradio3/plugins/gui-standard-display/radioview_volume.h
new file mode 100644
index 0000000..a48c16d
--- /dev/null
+++ b/kradio3/plugins/gui-standard-display/radioview_volume.h
@@ -0,0 +1,75 @@
+/***************************************************************************
+ radioview_volume.h - description
+ -------------------
+ begin : Don Jun 19 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_RADIOVIEW_VOLUME_H
+#define KRADIO_RADIOVIEW_VOLUME_H
+
+#include "../../src/include/radiodevice_interfaces.h"
+#include "../../src/include/soundstreamclient_interfaces.h"
+#include "radioview_element.h"
+
+/**
+ *@author Martin Witte
+ */
+
+class QSlider;
+
+class RadioViewVolume : public RadioViewElement, // is a QObject, must be first
+ public IRadioDeviceClient,
+ public ISoundStreamClient,
+ public IErrorLogClient
+{
+Q_OBJECT
+public:
+ RadioViewVolume(QWidget *parent, const QString &name);
+ ~RadioViewVolume();
+
+ float getUsability(Interface *) const;
+
+// Interface
+
+ bool connectI (Interface *);
+ bool disconnectI(Interface *);
+
+// IRadioDeviceClient
+RECEIVERS:
+ bool noticePowerChanged (bool /*on*/, const IRadioDevice */*sender*/) { return false; }
+ bool noticeStationChanged (const RadioStation &, const IRadioDevice */*sender*/) { return false; }
+ bool noticeDescriptionChanged (const QString &, const IRadioDevice */*sender*/) { return false; }
+ bool noticeCurrentSoundStreamIDChanged(SoundStreamID /*id*/, const IRadioDevice */*sender*/) { return false; }
+
+// ISoundStreamClient
+RECEIVERS:
+ void noticeConnectedI (ISoundStreamServer *s, bool pointer_valid);
+ bool noticePlaybackVolumeChanged(SoundStreamID id, float v);
+
+// own stuff
+protected slots:
+
+ void slotVolumeChanged(int val);
+
+protected:
+
+ int getSlider4Volume(float volume);
+ float getVolume4Slider(int sl);
+
+ QSlider *m_slider;
+ bool m_handlingSlot;
+
+};
+
+#endif
diff --git a/kradio3/plugins/lirc/Makefile.am b/kradio3/plugins/lirc/Makefile.am
new file mode 100644
index 0000000..383fe28
--- /dev/null
+++ b/kradio3/plugins/lirc/Makefile.am
@@ -0,0 +1,28 @@
+
+SUBDIRS = po .
+
+INCLUDES = $(all_includes)
+METASOURCES = AUTO
+
+libkradio_LTLIBRARIES = liblirc.la
+liblirc_la_SOURCES = lircsupport.cpp lirc-configuration-ui.ui \
+ lirc-configuration.cpp listviewitem_lirc.cpp
+liblirc_la_LDFLAGS = -module -avoid-version $(KDE_RPATH) $(all_libraries)
+liblirc_la_LIBADD = $(LIB_LIRC)
+
+noinst_HEADERS = lircsupport.h lirc-configuration.h listviewitem_lirc.h
+
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/"
+ $(INSTALL_DATA) "$(srcdir)/default-dot-lircrc" "$(DESTDIR)$(kde_datadir)/kradio/default-dot-lircrc"
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/default-dot-lircrc"
+
+#messages: rc.cpp
+# $(XGETTEXT) *.cpp *.h -o po/kradio-lirc.pot
+
+messages: rc.cpp
+ $(EXTRACTRC) *.rc *.ui >> rc.cpp
+ $(XGETTEXT) rc.cpp *.h *.cpp -o po/kradio-lirc.pot
diff --git a/kradio3/plugins/lirc/default-dot-lircrc b/kradio3/plugins/lirc/default-dot-lircrc
new file mode 100644
index 0000000..02ac704
--- /dev/null
+++ b/kradio3/plugins/lirc/default-dot-lircrc
@@ -0,0 +1,6 @@
+
+begin
+ prog = kradio
+ config = eventmap
+ repeat = 1
+end
diff --git a/kradio3/plugins/lirc/lirc-configuration-ui.ui b/kradio3/plugins/lirc/lirc-configuration-ui.ui
new file mode 100644
index 0000000..8fadc85
--- /dev/null
+++ b/kradio3/plugins/lirc/lirc-configuration-ui.ui
@@ -0,0 +1,110 @@
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
+<class>LIRCConfigurationUI</class>
+<author>Ernst Martin Witte</author>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>LIRCConfigurationUI</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>600</width>
+ <height>585</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>LIRCConfigurationUI</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="KListView" row="0" column="0">
+ <column>
+ <property name="text">
+ <string>Action</string>
+ </property>
+ <property name="clickable">
+ <bool>true</bool>
+ </property>
+ <property name="resizable">
+ <bool>true</bool>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>LIRC String</string>
+ </property>
+ <property name="clickable">
+ <bool>true</bool>
+ </property>
+ <property name="resizable">
+ <bool>true</bool>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>Alternative LIRC String</string>
+ </property>
+ <property name="clickable">
+ <bool>true</bool>
+ </property>
+ <property name="resizable">
+ <bool>true</bool>
+ </property>
+ </column>
+ <property name="name">
+ <cstring>m_ActionList</cstring>
+ </property>
+ <property name="allColumnsShowFocus">
+ <bool>true</bool>
+ </property>
+ <property name="itemMargin">
+ <number>2</number>
+ </property>
+ <property name="rootIsDecorated">
+ <bool>false</bool>
+ </property>
+ <property name="resizeMode">
+ <enum>AllColumns</enum>
+ </property>
+ <property name="defaultRenameAction">
+ <enum>Accept</enum>
+ </property>
+ <property name="fullWidth">
+ <bool>true</bool>
+ </property>
+ </widget>
+ <widget class="Line" row="1" column="0">
+ <property name="name">
+ <cstring>line1</cstring>
+ </property>
+ <property name="frameShape">
+ <enum>HLine</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>Sunken</enum>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ </widget>
+ <widget class="QLabel" row="2" column="0">
+ <property name="name">
+ <cstring>m_LabelHints</cstring>
+ </property>
+ <property name="text">
+ <string>textLabel1</string>
+ </property>
+ </widget>
+ </grid>
+</widget>
+<customwidgets>
+</customwidgets>
+<pixmapfunction>SmallIconSet</pixmapfunction>
+<layoutdefaults spacing="6" margin="0"/>
+<includehints>
+ <includehint>klistview.h</includehint>
+</includehints>
+</UI>
diff --git a/kradio3/plugins/lirc/lirc-configuration.cpp b/kradio3/plugins/lirc/lirc-configuration.cpp
new file mode 100644
index 0000000..9b98a44
--- /dev/null
+++ b/kradio3/plugins/lirc/lirc-configuration.cpp
@@ -0,0 +1,193 @@
+/***************************************************************************
+ lirc-configuration.cpp - description
+ -------------------
+ begin : Sat May 21 2005
+ copyright : (C) 2005 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include <klistview.h>
+#include <klocale.h>
+
+#include <qlistview.h>
+#include <qlabel.h>
+
+#include "lirc-configuration.h"
+#include "lircsupport.h"
+#include "listviewitem_lirc.h"
+
+LIRCConfiguration::LIRCConfiguration (QWidget *parent, LircSupport *dev)
+ : LIRCConfigurationUI(parent),
+ m_LIRC (dev),
+ m_dirty(true),
+ m_ignore_gui_updates(false)
+{
+ m_descriptions[LIRC_DIGIT_0] = i18n("digit 0");
+ m_descriptions[LIRC_DIGIT_1] = i18n("digit 1");
+ m_descriptions[LIRC_DIGIT_2] = i18n("digit 2");
+ m_descriptions[LIRC_DIGIT_3] = i18n("digit 3");
+ m_descriptions[LIRC_DIGIT_4] = i18n("digit 4");
+ m_descriptions[LIRC_DIGIT_5] = i18n("digit 5");
+ m_descriptions[LIRC_DIGIT_6] = i18n("digit 6");
+ m_descriptions[LIRC_DIGIT_7] = i18n("digit 7");
+ m_descriptions[LIRC_DIGIT_8] = i18n("digit 8");
+ m_descriptions[LIRC_DIGIT_9] = i18n("digit 9");
+ m_descriptions[LIRC_POWER_ON] = i18n("Power On");
+ m_descriptions[LIRC_POWER_OFF] = i18n("Power Off");
+ m_descriptions[LIRC_PAUSE] = i18n("Pause");
+ m_descriptions[LIRC_RECORD_START] = i18n("Start Recording");
+ m_descriptions[LIRC_RECORD_STOP] = i18n("Stop Recording");
+ m_descriptions[LIRC_VOLUME_INC] = i18n("Increase Volume");
+ m_descriptions[LIRC_VOLUME_DEC] = i18n("Decrease Volume");
+ m_descriptions[LIRC_CHANNEL_NEXT] = i18n("Next Channel");
+ m_descriptions[LIRC_CHANNEL_PREV] = i18n("Previous Channel");
+ m_descriptions[LIRC_SEARCH_NEXT] = i18n("Search Next Channel");
+ m_descriptions[LIRC_SEARCH_PREV] = i18n("Search Previous Channel");
+ m_descriptions[LIRC_SLEEP] = i18n("Enable Sleep Countdown");
+ m_descriptions[LIRC_APPLICATION_QUIT] = i18n("Quit KRadio");
+
+ int k = 0;
+ m_order[k++] = LIRC_DIGIT_0;
+ m_order[k++] = LIRC_DIGIT_1;
+ m_order[k++] = LIRC_DIGIT_2;
+ m_order[k++] = LIRC_DIGIT_3;
+ m_order[k++] = LIRC_DIGIT_4;
+ m_order[k++] = LIRC_DIGIT_5;
+ m_order[k++] = LIRC_DIGIT_6;
+ m_order[k++] = LIRC_DIGIT_7;
+ m_order[k++] = LIRC_DIGIT_8;
+ m_order[k++] = LIRC_DIGIT_9;
+ m_order[k++] = LIRC_POWER_ON;
+ m_order[k++] = LIRC_POWER_OFF;
+ m_order[k++] = LIRC_PAUSE;
+ m_order[k++] = LIRC_RECORD_START;
+ m_order[k++] = LIRC_RECORD_STOP;
+ m_order[k++] = LIRC_VOLUME_INC;
+ m_order[k++] = LIRC_VOLUME_DEC;
+ m_order[k++] = LIRC_CHANNEL_NEXT;
+ m_order[k++] = LIRC_CHANNEL_PREV;
+ m_order[k++] = LIRC_SEARCH_NEXT;
+ m_order[k++] = LIRC_SEARCH_PREV;
+ m_order[k++] = LIRC_SLEEP;
+ m_order[k++] = LIRC_APPLICATION_QUIT;
+
+ m_ActionList->setSorting(-1);
+ m_ActionList->setColumnWidthMode(0, QListView::Maximum);
+ m_ActionList->setColumnWidthMode(1, QListView::Maximum);
+ m_ActionList->setColumnWidthMode(2, QListView::Maximum);
+
+ connect(m_ActionList, SIGNAL(itemRenamed(QListViewItem*, int)), this, SLOT(slotSetDirty()));
+ slotCancel();
+}
+
+
+LIRCConfiguration::~LIRCConfiguration ()
+{
+}
+
+
+void LIRCConfiguration::slotOK()
+{
+ if (m_dirty && m_LIRC) {
+ QListViewItem *item = m_ActionList->firstChild();
+
+ QMap<LIRC_Actions, QString> actions;
+ QMap<LIRC_Actions, QString> alt_actions;
+
+ for (int i = 0; item; ++i, item = item->nextSibling()) {
+ LIRC_Actions action = m_order[i];
+ actions[action] = item->text(1);
+ alt_actions[action] = item->text(2);
+ }
+ m_LIRC->setActions(actions, alt_actions);
+ }
+ m_dirty = false;
+}
+
+
+void LIRCConfiguration::slotCancel()
+{
+ if (m_dirty) {
+ m_ignore_gui_updates = true;
+ m_ActionList->clear();
+ if (m_LIRC) {
+ const QMap<LIRC_Actions, QString> &actions = m_LIRC->getActions();
+ const QMap<LIRC_Actions, QString> &alt_actions = m_LIRC->getAlternativeActions();
+
+ for (unsigned i = 0; m_order.contains(i) && i < m_order.count(); ++i) {
+ LIRC_Actions action = m_order[i];
+ addKey(m_descriptions[action], actions[action], alt_actions[action]);
+ }
+ }
+
+ slotRenamingStopped(NULL, -1);
+ m_ignore_gui_updates = false;
+ }
+ m_dirty = false;
+}
+
+
+void LIRCConfiguration::addKey(const QString &descr, const QString &key, const QString &alt_key)
+{
+ ListViewItemLirc *item = new ListViewItemLirc(m_ActionList, m_ActionList->lastChild());
+ if (item) {
+ QObject::connect(item, SIGNAL(sigRenamingStarted (ListViewItemLirc *, int)),
+ this, SLOT (slotRenamingStarted(ListViewItemLirc *, int)));
+ QObject::connect(item, SIGNAL(sigRenamingStopped (ListViewItemLirc *, int)),
+ this, SLOT (slotRenamingStopped(ListViewItemLirc *, int)));
+ item->setText(0, descr);
+ item->setText(1, key);
+ item->setText(2, alt_key);
+ item->setRenameEnabled(1, true);
+ item->setRenameEnabled(2, true);
+ }
+}
+
+void LIRCConfiguration::slotUpdateConfig()
+{
+ slotSetDirty();
+ slotCancel();
+}
+
+void LIRCConfiguration::slotRawLIRCSignal(const QString &val, int /*repeat_counter*/, bool &consumed)
+{
+ QListViewItem *_it = m_ActionList->currentItem();
+ ListViewItemLirc *it = static_cast<ListViewItemLirc*>(_it);
+ if (it->isRenamingInProcess()) {
+ int col = it->getRenamingColumn();
+ it->cancelRename(col);
+ it->setText(col, val);
+ consumed = true;
+ m_dirty = true;
+ }
+}
+
+void LIRCConfiguration::slotRenamingStarted(ListViewItemLirc */*sender*/, int /*col*/)
+{
+ m_LabelHints->setText(i18n("Enter the key string of your remote or just press the button on your remote control"));
+}
+
+
+void LIRCConfiguration::slotRenamingStopped(ListViewItemLirc */*sender*/, int /*col*/)
+{
+ m_LabelHints->setText(i18n("Double Click on the entries to change the assignments"));
+}
+
+
+void LIRCConfiguration::slotSetDirty()
+{
+ if (!m_ignore_gui_updates) {
+ m_dirty = true;
+ }
+}
+
+#include "lirc-configuration.moc"
diff --git a/kradio3/plugins/lirc/lirc-configuration.h b/kradio3/plugins/lirc/lirc-configuration.h
new file mode 100644
index 0000000..13bcda4
--- /dev/null
+++ b/kradio3/plugins/lirc/lirc-configuration.h
@@ -0,0 +1,60 @@
+/***************************************************************************
+ lirc-configuration.h - description
+ -------------------
+ begin : Sat May 21 2005
+ copyright : (C) 2005 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_LIRC_CONFIGURATION_H
+#define KRADIO_LIRC_CONFIGURATION_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "lirc-configuration-ui.h"
+#include "lircsupport.h"
+#include "listviewitem_lirc.h"
+
+class LIRCConfiguration : public LIRCConfigurationUI
+{
+Q_OBJECT
+public :
+ LIRCConfiguration (QWidget *parent, LircSupport *);
+ ~LIRCConfiguration ();
+
+protected slots:
+
+ void slotOK();
+ void slotCancel();
+ void slotSetDirty();
+
+ void slotUpdateConfig();
+ void slotRawLIRCSignal(const QString &val, int repeat_counter, bool &consumed);
+
+ void slotRenamingStarted(ListViewItemLirc *, int);
+ void slotRenamingStopped(ListViewItemLirc *, int);
+
+protected:
+ void addKey(const QString &descr, const QString &key, const QString &alt_key);
+
+ LircSupport *m_LIRC;
+
+ QMap<int, LIRC_Actions> m_order;
+ QMap<LIRC_Actions, QString> m_descriptions;
+
+ bool m_dirty;
+ bool m_ignore_gui_updates;
+};
+
+#endif
diff --git a/kradio3/plugins/lirc/lircsupport.cpp b/kradio3/plugins/lirc/lircsupport.cpp
new file mode 100644
index 0000000..3b64580
--- /dev/null
+++ b/kradio3/plugins/lirc/lircsupport.cpp
@@ -0,0 +1,553 @@
+/***************************************************************************
+ lircsupport.cpp - description
+ -------------------
+ begin : Mon Feb 4 2002
+ copyright : (C) 2002 by Martin Witte / Frank Schwanz
+ email : witte@kawo1.rwth-aachen.de / schwanz@fh-brandenburg.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "lircsupport.h"
+
+#ifdef HAVE_LIRC
+#include <lirc/lirc_client.h>
+#endif
+
+#include <qsocketnotifier.h>
+#include <qtimer.h>
+#include <qfile.h>
+
+#include <kapplication.h>
+#include <kaboutdata.h>
+#include <kstandarddirs.h>
+
+#include "../../src/include/errorlog-interfaces.h"
+#include "../../src/include/radiodevice_interfaces.h"
+#include "../../src/include/stationlist.h"
+#include "../../src/include/aboutwidget.h"
+
+#include "lirc-configuration.h"
+
+#include <cstdlib>
+
+#define LIRCRC ".lircrc"
+
+///////////////////////////////////////////////////////////////////////
+//// plugin library functions
+
+//#ifdef HAVE_LIRC
+PLUGIN_LIBRARY_FUNCTIONS(LircSupport, "kradio-lirc", i18n("Linux Infrared Control (LIRC) Support"));
+//#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+LircSupport::LircSupport(const QString &name)
+ : PluginBase(name, i18n("LIRC Plugin")),
+ m_TakeRawLIRC(false)
+{
+
+#ifdef HAVE_LIRC
+ logDebug(i18n("initializing kradio lirc plugin"));
+ fprintf (stderr, "%s\n", (const char*)i18n("initializing kradio lirc plugin").utf8());
+ char *prg = (char*)"kradio";
+
+ QString slircrc = getenv("HOME");
+ slircrc += "/" LIRCRC;
+
+ QFile lircrc(slircrc);
+ if (!lircrc.exists()) {
+ logWarning(i18n("%1 does not exist. File was created with KRadio's default .lircrc proposal").arg(LIRCRC));
+ QFile default_lircrc(locate("data", "kradio/default-dot-lircrc"));
+ lircrc.open(IO_WriteOnly);
+ default_lircrc.open(IO_ReadOnly);
+ char *buf = new char [default_lircrc.size() + 1];
+ default_lircrc.readBlock(buf, default_lircrc.size());
+ lircrc.writeBlock(buf, default_lircrc.size());
+ lircrc.close();
+ default_lircrc.close();
+ delete buf;
+ }
+
+ m_fd_lirc = lirc_init(prg, 1);
+ m_lirc_notify = 0;
+ m_lircConfig = 0;
+
+ if (m_fd_lirc != -1) {
+ if (lirc_readconfig (NULL, &m_lircConfig, NULL) == 0) {
+ m_lirc_notify = new QSocketNotifier(m_fd_lirc, QSocketNotifier::Read, this, "lirc_notifier");
+ if (m_lirc_notify)
+ QObject::connect(m_lirc_notify, SIGNAL(activated(int)), this, SLOT(slotLIRC(int)));
+
+ // check config
+ lirc_config_entry *found = NULL;
+ for (lirc_config_entry *e = m_lircConfig->first; e; e = e->next) {
+ if (QString(e->prog) == prg)
+ found = e;
+ }
+ if (!found) {
+ logWarning(i18n("There is no entry for kradio in any of your .lircrc files."));
+ logWarning(i18n("Please setup your .lircrc files correctly."));
+ m_TakeRawLIRC = true;
+ }
+
+ } else {
+ lirc_deinit();
+ m_fd_lirc = -1;
+ }
+ }
+
+ if (m_fd_lirc == -1) {
+ logWarning(i18n("Initializing kradio lirc plugin failed"));
+ fprintf (stderr, "%s\n", (const char*)i18n("Initializing kradio lirc plugin failed").utf8());
+ } else {
+ logDebug(i18n("Initializing kradio lirc plugin successful"));
+ fprintf (stderr, "%s\n", (const char*)i18n("Initializing kradio lirc plugin successful").utf8());
+ }
+#endif
+
+ m_kbdTimer = new QTimer (this);
+ QObject::connect (m_kbdTimer, SIGNAL(timeout()), this, SLOT(slotKbdTimedOut()));
+
+ m_addIndex = 0;
+}
+
+
+LircSupport::~LircSupport()
+{
+#ifdef HAVE_LIRC
+ if (m_fd_lirc != -1)
+ lirc_deinit();
+ if (m_lircConfig)
+ lirc_freeconfig(m_lircConfig);
+ m_fd_lirc = -1;
+ m_lircConfig = 0;
+#endif
+}
+
+
+void LircSupport::slotLIRC(int /*socket*/ )
+{
+#ifdef HAVE_LIRC
+ if (!m_lircConfig || !m_lirc_notify || m_fd_lirc == -1)
+ return;
+
+ char *code = 0, *c = 0;
+ if (lirc_nextcode(&code) == 0) {
+ while(m_TakeRawLIRC || (lirc_code2char (m_lircConfig, code, &c) == 0 && c != NULL)) {
+
+ QString x = c;
+ int repeat_counter = 1;
+ if (m_TakeRawLIRC || (QString(c) == "eventmap")) {
+ QStringList l = QStringList::split(" ", code);
+ if (l.count() >=4) {
+ x = l[2];
+ repeat_counter = l[1].toInt(NULL, 16);
+ }
+ }
+
+ bool consumed = false;
+ logDebug(QString("LIRC: ") + x);
+
+ emit sigRawLIRCSignal(x, repeat_counter, consumed);
+
+ if (!consumed) {
+ if (!checkActions(x, repeat_counter, m_Actions))
+ checkActions(x, repeat_counter, m_AlternativeActions);
+ }
+ }
+ }
+ else {
+ // some error has occurred on the socket => close lirc plugin
+ logWarning(i18n("Reading from LIRC socket failed. Disabling LIRC Functions till next start of kradio"));
+ delete m_lirc_notify;
+ m_lirc_notify = NULL;
+ }
+
+ if (code)
+ free (code);
+#endif
+}
+
+
+void LircSupport::slotKbdTimedOut()
+{
+ activateStation (m_addIndex);
+ m_addIndex = 0;
+}
+
+
+void LircSupport::activateStation (int i)
+{
+ if (! sendActivateStation(i - 1))
+ sendActivateStation( (i + 9) % 10);
+}
+
+
+bool LircSupport::connectI (Interface *i)
+{
+ bool a = IRadioClient::connectI (i);
+ bool b = ITimeControlClient::connectI (i);
+ bool c = IRadioDevicePoolClient::connectI (i);
+ bool d = PluginBase::connectI(i);
+ bool e = ISoundStreamClient::connectI(i);
+ return a || b || c || d || e;
+}
+
+
+bool LircSupport::disconnectI (Interface *i)
+{
+ bool a = IRadioClient::disconnectI (i);
+ bool b = ITimeControlClient::disconnectI (i);
+ bool c = IRadioDevicePoolClient::disconnectI (i);
+ bool d = PluginBase::disconnectI(i);
+ bool e = ISoundStreamClient::disconnectI(i);
+ return a || b || c || d || e;
+}
+
+
+
+void LircSupport::saveState (KConfig *c) const
+{
+ c->writeEntry("LIRC_DIGIT_0", m_Actions[LIRC_DIGIT_0]);
+ c->writeEntry("LIRC_DIGIT_1", m_Actions[LIRC_DIGIT_1]);
+ c->writeEntry("LIRC_DIGIT_2", m_Actions[LIRC_DIGIT_2]);
+ c->writeEntry("LIRC_DIGIT_3", m_Actions[LIRC_DIGIT_3]);
+ c->writeEntry("LIRC_DIGIT_4", m_Actions[LIRC_DIGIT_4]);
+ c->writeEntry("LIRC_DIGIT_5", m_Actions[LIRC_DIGIT_5]);
+ c->writeEntry("LIRC_DIGIT_6", m_Actions[LIRC_DIGIT_6]);
+ c->writeEntry("LIRC_DIGIT_7", m_Actions[LIRC_DIGIT_7]);
+ c->writeEntry("LIRC_DIGIT_8", m_Actions[LIRC_DIGIT_8]);
+ c->writeEntry("LIRC_DIGIT_9", m_Actions[LIRC_DIGIT_9]);
+ c->writeEntry("LIRC_POWER_ON", m_Actions[LIRC_POWER_ON]);
+ c->writeEntry("LIRC_POWER_OFF", m_Actions[LIRC_POWER_OFF]);
+ c->writeEntry("LIRC_PAUSE", m_Actions[LIRC_PAUSE]);
+ c->writeEntry("LIRC_RECORD_START", m_Actions[LIRC_RECORD_START]);
+ c->writeEntry("LIRC_RECORD_STOP", m_Actions[LIRC_RECORD_STOP]);
+ c->writeEntry("LIRC_VOLUME_INC", m_Actions[LIRC_VOLUME_INC]);
+ c->writeEntry("LIRC_VOLUME_DEC", m_Actions[LIRC_VOLUME_DEC]);
+ c->writeEntry("LIRC_CHANNEL_NEXT", m_Actions[LIRC_CHANNEL_NEXT]);
+ c->writeEntry("LIRC_CHANNEL_PREV", m_Actions[LIRC_CHANNEL_PREV]);
+ c->writeEntry("LIRC_SEARCH_NEXT", m_Actions[LIRC_SEARCH_NEXT]);
+ c->writeEntry("LIRC_SEARCH_PREV", m_Actions[LIRC_SEARCH_PREV]);
+ c->writeEntry("LIRC_SLEEP", m_Actions[LIRC_SLEEP]);
+ c->writeEntry("LIRC_APPLICATION_QUIT", m_Actions[LIRC_APPLICATION_QUIT]);
+
+
+ c->writeEntry("ALT_LIRC_DIGIT_0", m_AlternativeActions[LIRC_DIGIT_0]);
+ c->writeEntry("ALT_LIRC_DIGIT_1", m_AlternativeActions[LIRC_DIGIT_1]);
+ c->writeEntry("ALT_LIRC_DIGIT_2", m_AlternativeActions[LIRC_DIGIT_2]);
+ c->writeEntry("ALT_LIRC_DIGIT_3", m_AlternativeActions[LIRC_DIGIT_3]);
+ c->writeEntry("ALT_LIRC_DIGIT_4", m_AlternativeActions[LIRC_DIGIT_4]);
+ c->writeEntry("ALT_LIRC_DIGIT_5", m_AlternativeActions[LIRC_DIGIT_5]);
+ c->writeEntry("ALT_LIRC_DIGIT_6", m_AlternativeActions[LIRC_DIGIT_6]);
+ c->writeEntry("ALT_LIRC_DIGIT_7", m_AlternativeActions[LIRC_DIGIT_7]);
+ c->writeEntry("ALT_LIRC_DIGIT_8", m_AlternativeActions[LIRC_DIGIT_8]);
+ c->writeEntry("ALT_LIRC_DIGIT_9", m_AlternativeActions[LIRC_DIGIT_9]);
+ c->writeEntry("ALT_LIRC_POWER_ON", m_AlternativeActions[LIRC_POWER_ON]);
+ c->writeEntry("ALT_LIRC_POWER_OFF", m_AlternativeActions[LIRC_POWER_OFF]);
+ c->writeEntry("ALT_LIRC_PAUSE", m_AlternativeActions[LIRC_PAUSE]);
+ c->writeEntry("ALT_LIRC_RECORD_START", m_AlternativeActions[LIRC_RECORD_START]);
+ c->writeEntry("ALT_LIRC_RECORD_STOP", m_AlternativeActions[LIRC_RECORD_STOP]);
+ c->writeEntry("ALT_LIRC_VOLUME_INC", m_AlternativeActions[LIRC_VOLUME_INC]);
+ c->writeEntry("ALT_LIRC_VOLUME_DEC", m_AlternativeActions[LIRC_VOLUME_DEC]);
+ c->writeEntry("ALT_LIRC_CHANNEL_NEXT", m_AlternativeActions[LIRC_CHANNEL_NEXT]);
+ c->writeEntry("ALT_LIRC_CHANNEL_PREV", m_AlternativeActions[LIRC_CHANNEL_PREV]);
+ c->writeEntry("ALT_LIRC_SEARCH_NEXT", m_AlternativeActions[LIRC_SEARCH_NEXT]);
+ c->writeEntry("ALT_LIRC_SEARCH_PREV", m_AlternativeActions[LIRC_SEARCH_PREV]);
+ c->writeEntry("ALT_LIRC_SLEEP", m_AlternativeActions[LIRC_SLEEP]);
+ c->writeEntry("ALT_LIRC_APPLICATION_QUIT", m_AlternativeActions[LIRC_APPLICATION_QUIT]);
+}
+
+void LircSupport::restoreState (KConfig *c)
+{
+ m_Actions[LIRC_DIGIT_0] = c->readEntry("LIRC_DIGIT_0", "0");
+ m_Actions[LIRC_DIGIT_1] = c->readEntry("LIRC_DIGIT_1", "1");
+ m_Actions[LIRC_DIGIT_2] = c->readEntry("LIRC_DIGIT_2", "2");
+ m_Actions[LIRC_DIGIT_3] = c->readEntry("LIRC_DIGIT_3", "3");
+ m_Actions[LIRC_DIGIT_4] = c->readEntry("LIRC_DIGIT_4", "4");
+ m_Actions[LIRC_DIGIT_5] = c->readEntry("LIRC_DIGIT_5", "5");
+ m_Actions[LIRC_DIGIT_6] = c->readEntry("LIRC_DIGIT_6", "6");
+ m_Actions[LIRC_DIGIT_7] = c->readEntry("LIRC_DIGIT_7", "7");
+ m_Actions[LIRC_DIGIT_8] = c->readEntry("LIRC_DIGIT_8", "8");
+ m_Actions[LIRC_DIGIT_9] = c->readEntry("LIRC_DIGIT_9", "9");
+ m_Actions[LIRC_POWER_ON] = c->readEntry("LIRC_POWER_ON", "RADIO");
+ m_Actions[LIRC_POWER_OFF] = c->readEntry("LIRC_POWER_OFF", "RADIO");
+ m_Actions[LIRC_PAUSE] = c->readEntry("LIRC_PAUSE", "FULL_SCREEN");
+ m_Actions[LIRC_RECORD_START] = c->readEntry("LIRC_RECORD_START", "");
+ m_Actions[LIRC_RECORD_STOP] = c->readEntry("LIRC_RECORD_STOP", "");
+ m_Actions[LIRC_VOLUME_INC] = c->readEntry("LIRC_VOLUME_INC", "VOL+");
+ m_Actions[LIRC_VOLUME_DEC] = c->readEntry("LIRC_VOLUME_DEC", "VOL-");
+ m_Actions[LIRC_CHANNEL_NEXT] = c->readEntry("LIRC_CHANNEL_NEXT", "CH+");
+ m_Actions[LIRC_CHANNEL_PREV] = c->readEntry("LIRC_CHANNEL_PREV", "CH-");
+ m_Actions[LIRC_SEARCH_NEXT] = c->readEntry("LIRC_SEARCH_NEXT", "SOURCE");
+ m_Actions[LIRC_SEARCH_PREV] = c->readEntry("LIRC_SEARCH_PREV", "MUTE");
+ m_Actions[LIRC_SLEEP] = c->readEntry("LIRC_SLEEP", "MINIMIZE");
+ m_Actions[LIRC_APPLICATION_QUIT] = c->readEntry("LIRC_APPLICATION_QUIT", "");
+
+
+ m_AlternativeActions[LIRC_DIGIT_0] = c->readEntry("ALT_LIRC_DIGIT_0", "");
+ m_AlternativeActions[LIRC_DIGIT_1] = c->readEntry("ALT_LIRC_DIGIT_1", "");
+ m_AlternativeActions[LIRC_DIGIT_2] = c->readEntry("ALT_LIRC_DIGIT_2", "");
+ m_AlternativeActions[LIRC_DIGIT_3] = c->readEntry("ALT_LIRC_DIGIT_3", "");
+ m_AlternativeActions[LIRC_DIGIT_4] = c->readEntry("ALT_LIRC_DIGIT_4", "");
+ m_AlternativeActions[LIRC_DIGIT_5] = c->readEntry("ALT_LIRC_DIGIT_5", "");
+ m_AlternativeActions[LIRC_DIGIT_6] = c->readEntry("ALT_LIRC_DIGIT_6", "");
+ m_AlternativeActions[LIRC_DIGIT_7] = c->readEntry("ALT_LIRC_DIGIT_7", "");
+ m_AlternativeActions[LIRC_DIGIT_8] = c->readEntry("ALT_LIRC_DIGIT_8", "");
+ m_AlternativeActions[LIRC_DIGIT_9] = c->readEntry("ALT_LIRC_DIGIT_9", "");
+ m_AlternativeActions[LIRC_POWER_ON] = c->readEntry("ALT_LIRC_POWER_ON", "");
+ m_AlternativeActions[LIRC_POWER_OFF] = c->readEntry("ALT_LIRC_POWER_OFF", "TV");
+ m_AlternativeActions[LIRC_PAUSE] = c->readEntry("ALT_LIRC_PAUSE", "");
+ m_AlternativeActions[LIRC_RECORD_START] = c->readEntry("ALT_LIRC_RECORD_START", "");
+ m_AlternativeActions[LIRC_RECORD_STOP] = c->readEntry("ALT_LIRC_RECORD_STOP", "");
+ m_AlternativeActions[LIRC_VOLUME_INC] = c->readEntry("ALT_LIRC_VOLUME_INC", "");
+ m_AlternativeActions[LIRC_VOLUME_DEC] = c->readEntry("ALT_LIRC_VOLUME_DEC", "");
+ m_AlternativeActions[LIRC_CHANNEL_NEXT] = c->readEntry("ALT_LIRC_CHANNEL_NEXT", "");
+ m_AlternativeActions[LIRC_CHANNEL_PREV] = c->readEntry("ALT_LIRC_CHANNEL_PREV", "");
+ m_AlternativeActions[LIRC_SEARCH_NEXT] = c->readEntry("ALT_LIRC_SEARCH_NEXT", "");
+ m_AlternativeActions[LIRC_SEARCH_PREV] = c->readEntry("ALT_LIRC_SEARCH_PREV", "");
+ m_AlternativeActions[LIRC_SLEEP] = c->readEntry("ALT_LIRC_SLEEP", "");
+ m_AlternativeActions[LIRC_APPLICATION_QUIT] = c->readEntry("ALT_LIRC_APPLICATION_QUIT", "");
+
+ emit sigUpdateConfig();
+}
+
+
+ConfigPageInfo LircSupport::createConfigurationPage()
+{
+ LIRCConfiguration *conf = new LIRCConfiguration(NULL, this);
+ QObject::connect(this, SIGNAL(sigUpdateConfig()), conf, SLOT(slotUpdateConfig()));
+ QObject::connect(this, SIGNAL(sigRawLIRCSignal(const QString &, int, bool &)),
+ conf, SLOT (slotRawLIRCSignal(const QString &, int, bool &)));
+ return ConfigPageInfo (conf,
+ i18n("LIRC Support"),
+ i18n("LIRC Plugin"),
+ "connect_creating");
+}
+
+
+AboutPageInfo LircSupport::createAboutPage()
+{
+/* KAboutData aboutData("kradio",
+ NULL,
+ NULL,
+ I18N_NOOP("Linux Infrared Remote Control Support for KRadio"),
+ KAboutData::License_GPL,
+ "(c) 2002-2005 Martin Witte",
+ 0,
+ "http://sourceforge.net/projects/kradio",
+ 0);
+ aboutData.addAuthor("Martin Witte", "", "witte@kawo1.rwth-aachen.de");
+
+ return AboutPageInfo(
+ new KRadioAboutWidget(aboutData, KRadioAboutWidget::AbtTabbed),
+ i18n("LIRC Support"),
+ i18n("LIRC Plugin"),
+ "connect_creating"
+ );*/
+ return AboutPageInfo();
+}
+
+
+bool LircSupport::checkActions(const QString &lirc_string, int repeat_counter, const QMap<LIRC_Actions, QString> &map)
+{
+ SoundStreamID streamID = queryCurrentSoundStreamID();
+
+ bool retval = false;
+ bool q = false;
+ SoundFormat sf;
+ ISeekRadio *seeker = NULL;
+
+ QMapConstIterator<LIRC_Actions, QString> it = map.begin();
+ QMapConstIterator<LIRC_Actions, QString> end = map.end();
+ for (; !retval && it != end; ++it) {
+ if ((*it).length() && lirc_string == *it) {
+ LIRC_Actions action = it.key();
+ int digit = -1;
+ switch (action) {
+ case LIRC_DIGIT_0 :
+ if (repeat_counter == 0) {
+ digit = 0;
+ retval = true;
+ }
+ break;
+ case LIRC_DIGIT_1 :
+ if (repeat_counter == 0) {
+ digit = 1;
+ retval = true;
+ }
+ break;
+ case LIRC_DIGIT_2 :
+ if (repeat_counter == 0) {
+ digit = 2;
+ retval = true;
+ }
+ break;
+ case LIRC_DIGIT_3 :
+ if (repeat_counter == 0) {
+ digit = 3;
+ retval = true;
+ }
+ break;
+ case LIRC_DIGIT_4 :
+ if (repeat_counter == 0) {
+ digit = 4;
+ retval = true;
+ }
+ break;
+ case LIRC_DIGIT_5 :
+ if (repeat_counter == 0) {
+ digit = 5;
+ retval = true;
+ }
+ break;
+ case LIRC_DIGIT_6 :
+ if (repeat_counter == 0) {
+ digit = 6;
+ retval = true;
+ }
+ break;
+ case LIRC_DIGIT_7 :
+ if (repeat_counter == 0) {
+ digit = 7;
+ retval = true;
+ }
+ break;
+ case LIRC_DIGIT_8 :
+ if (repeat_counter == 0) {
+ digit = 8;
+ retval = true;
+ }
+ break;
+ case LIRC_DIGIT_9 :
+ if (repeat_counter == 0) {
+ digit = 9;
+ retval = true;
+ }
+ break;
+ case LIRC_POWER_ON :
+ if (repeat_counter == 0 && !queryIsPowerOn()) {
+ retval = true;
+ sendPowerOn();
+ }
+ break;
+ case LIRC_POWER_OFF :
+ if (repeat_counter == 0 && queryIsPowerOn()) {
+ retval = true;
+ sendPowerOff();
+ }
+ break;
+ case LIRC_PAUSE :
+ if (repeat_counter == 0 && queryIsPowerOn()) {
+ retval = true;
+ sendPausePlayback(streamID);
+ }
+ break;
+ case LIRC_RECORD_START :
+ queryIsRecordingRunning(streamID, q = false, sf);
+ if (repeat_counter == 0 && !q) {
+ retval = true;
+ sendStartRecording(streamID);
+ }
+ break;
+ case LIRC_RECORD_STOP :
+ queryIsRecordingRunning(streamID, q = false, sf);
+ if (repeat_counter == 0 && q) {
+ retval = true;
+ sendStopRecording(streamID);
+ }
+ break;
+ case LIRC_VOLUME_INC :
+ if (queryIsPowerOn()) {
+ retval = true;
+ float oldVolume = 0;
+ queryPlaybackVolume(streamID, oldVolume);
+ sendPlaybackVolume (streamID, oldVolume + 1.0/32.0);
+ }
+ break;
+ case LIRC_VOLUME_DEC :
+ if (queryIsPowerOn()) {
+ retval = true;
+ float oldVolume = 0;
+ queryPlaybackVolume(streamID, oldVolume);
+ sendPlaybackVolume (streamID, oldVolume - 1.0/32.0);
+ }
+ break;
+ case LIRC_CHANNEL_NEXT :
+ if (repeat_counter == 0 && queryIsPowerOn()) {
+ retval = true;
+ int k = queryCurrentStationIdx() + 1;
+ if (k >= queryStations().count())
+ k = 0;
+ sendActivateStation(k);
+ }
+ break;
+ case LIRC_CHANNEL_PREV :
+ if (repeat_counter == 0 && queryIsPowerOn()) {
+ retval = true;
+ int k = queryCurrentStationIdx() - 1;
+ if (k < 0)
+ k = queryStations().count() - 1;
+ sendActivateStation(k);
+ }
+ break;
+ case LIRC_SEARCH_NEXT :
+ if (repeat_counter == 0 && queryIsPowerOn()) {
+ retval = true;
+ seeker = dynamic_cast<ISeekRadio*> (queryActiveDevice());
+ seeker->startSeekUp();
+ }
+ break;
+ case LIRC_SEARCH_PREV :
+ if (repeat_counter == 0 && queryIsPowerOn()) {
+ retval = true;
+ seeker = dynamic_cast<ISeekRadio*> (queryActiveDevice());
+ seeker->startSeekDown();
+ }
+ break;
+ case LIRC_SLEEP :
+ if (repeat_counter == 0 && queryIsPowerOn()) {
+ retval = true;
+ sendStartCountdown();
+ }
+ break;
+ case LIRC_APPLICATION_QUIT :
+ retval = true;
+ kapp->quit();
+ break;
+ default:
+ break;
+ }
+
+ if (digit >= 0) {
+ if (m_addIndex || digit == 0) {
+ activateStation(m_addIndex * 10 + digit);
+ m_kbdTimer->stop();
+ m_addIndex = 0;
+ } else {
+ m_addIndex = digit;
+ m_kbdTimer->start(500, true);
+ }
+ }
+ }
+ }
+ return retval;
+}
+
+
+void LircSupport::setActions(const QMap<LIRC_Actions, QString> &actions, const QMap<LIRC_Actions, QString> &alt_actions)
+{
+ m_Actions = actions;
+ m_AlternativeActions = alt_actions;
+}
+
+
+#include "lircsupport.moc"
diff --git a/kradio3/plugins/lirc/lircsupport.h b/kradio3/plugins/lirc/lircsupport.h
new file mode 100644
index 0000000..47a113f
--- /dev/null
+++ b/kradio3/plugins/lirc/lircsupport.h
@@ -0,0 +1,159 @@
+/***************************************************************************
+ lircsupport.h - description
+ -------------------
+ begin : Mon Feb 4 2002
+ copyright : (C) 2002 by Martin Witte / Frank Schwanz
+ email : witte@kawo1.rwth-aachen.de / schwanz@fh-brandenburg.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef LIRCSUPPORT_H
+#define LIRCSUPPORT_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qobject.h>
+#include "../../src/include/timecontrol_interfaces.h"
+#include "../../src/include/radio_interfaces.h"
+#include "../../src/include/radiodevicepool_interfaces.h"
+#include "../../src/include/soundstreamclient_interfaces.h"
+#include "../../src/include/plugins.h"
+
+
+enum LIRC_Actions {
+ LIRC_DIGIT_0,
+ LIRC_DIGIT_1,
+ LIRC_DIGIT_2,
+ LIRC_DIGIT_3,
+ LIRC_DIGIT_4,
+ LIRC_DIGIT_5,
+ LIRC_DIGIT_6,
+ LIRC_DIGIT_7,
+ LIRC_DIGIT_8,
+ LIRC_DIGIT_9,
+ LIRC_POWER_ON,
+ LIRC_POWER_OFF,
+ LIRC_PAUSE,
+ LIRC_RECORD_START,
+ LIRC_RECORD_STOP,
+ LIRC_VOLUME_INC,
+ LIRC_VOLUME_DEC,
+ LIRC_CHANNEL_NEXT,
+ LIRC_CHANNEL_PREV,
+ LIRC_SEARCH_NEXT,
+ LIRC_SEARCH_PREV,
+ LIRC_SLEEP,
+ LIRC_APPLICATION_QUIT
+};
+
+
+struct lirc_config;
+class QSocketNotifier;
+class QTimer;
+
+class LircSupport : public QObject,
+ public PluginBase,
+ public IRadioClient,
+ public ITimeControlClient,
+ public ISoundStreamClient,
+ public IRadioDevicePoolClient
+{
+Q_OBJECT
+public:
+ LircSupport(const QString &name);
+ ~LircSupport();
+
+ virtual bool connectI (Interface *);
+ virtual bool disconnectI (Interface *);
+
+ virtual QString pluginClassName() const { return "LircSupport"; }
+
+ virtual const QString &name() const { return PluginBase::name(); }
+ virtual QString &name() { return PluginBase::name(); }
+
+
+ virtual void setActions(const QMap<LIRC_Actions, QString> &actions, const QMap<LIRC_Actions, QString> &alt_actions);
+ virtual const QMap<LIRC_Actions, QString> &getActions() const { return m_Actions; }
+ virtual const QMap<LIRC_Actions, QString> &getAlternativeActions() const { return m_AlternativeActions; }
+
+ // PluginBase
+
+public:
+ virtual void saveState (KConfig *) const;
+ virtual void restoreState (KConfig *);
+
+ virtual ConfigPageInfo createConfigurationPage();
+ virtual AboutPageInfo createAboutPage();
+
+ // IRadioClient methods
+
+RECEIVERS:
+ bool noticePowerChanged(bool /*on*/) { return false; }
+ bool noticeStationChanged (const RadioStation &, int /*idx*/) { return false; }
+ bool noticeStationsChanged(const StationList &/*sl*/) { return false; }
+ bool noticePresetFileChanged(const QString &/*f*/) { return false; }
+
+ bool noticeCurrentSoundStreamIDChanged(SoundStreamID /*id*/) { return false; }
+
+ // ITimeControlClient
+
+RECEIVERS:
+ bool noticeAlarmsChanged(const AlarmVector &) { return false; }
+ bool noticeAlarm(const Alarm &) { return false; }
+ bool noticeNextAlarmChanged(const Alarm *) { return false; }
+ bool noticeCountdownStarted(const QDateTime &/*end*/) { return false; }
+ bool noticeCountdownStopped() { return false; }
+ bool noticeCountdownZero() { return false; }
+ bool noticeCountdownSecondsChanged(int /*n*/) { return false; }
+
+ // IRadioDevicePoolClient
+
+RECEIVERS:
+ bool noticeActiveDeviceChanged(IRadioDevice *) { return false; }
+ bool noticeDevicesChanged(const QPtrList<IRadioDevice> &) { return false; }
+ bool noticeDeviceDescriptionChanged(const QString &) { return false; }
+
+
+protected:
+ void activateStation(int i);
+ bool checkActions(const QString &string, int repeat_counter, const QMap<LIRC_Actions, QString> &map);
+
+protected slots:
+ void slotLIRC(int socket);
+ void slotKbdTimedOut();
+
+signals:
+
+ void sigUpdateConfig();
+
+ void sigRawLIRCSignal(const QString &what, int repeat_counter, bool &consumed);
+
+protected:
+
+#ifdef HAVE_LIRC
+ QSocketNotifier *m_lirc_notify;
+ int m_fd_lirc;
+ struct lirc_config *m_lircConfig;
+#endif
+
+ QTimer *m_kbdTimer;
+ int m_addIndex;
+ bool m_TakeRawLIRC;
+
+ QMap<LIRC_Actions, QString> m_Actions;
+ QMap<LIRC_Actions, QString> m_AlternativeActions;
+};
+
+
+
+#endif
diff --git a/kradio3/plugins/lirc/listviewitem_lirc.cpp b/kradio3/plugins/lirc/listviewitem_lirc.cpp
new file mode 100644
index 0000000..4f7d0ce
--- /dev/null
+++ b/kradio3/plugins/lirc/listviewitem_lirc.cpp
@@ -0,0 +1,51 @@
+/***************************************************************************
+ listviewitem_lirc.cpp - description
+ -------------------
+ begin : Sun Aug 14 2005
+ copyright : (C) 2005 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "listviewitem_lirc.h"
+
+ListViewItemLirc::ListViewItemLirc(QListView *parent, QListViewItem *after)
+ : KListViewItem(parent, after),
+ m_renamingInProcess(-1)
+{
+}
+
+ListViewItemLirc::~ListViewItemLirc()
+{
+}
+
+void ListViewItemLirc::startRename(int col)
+{
+ KListViewItem::startRename(col);
+ m_renamingInProcess = col;
+ emit sigRenamingStarted(this, col);
+}
+
+void ListViewItemLirc::okRename(int col)
+{
+ KListViewItem::okRename(col);
+ m_renamingInProcess = -1;
+ emit sigRenamingStopped(this, col);
+}
+
+void ListViewItemLirc::cancelRename(int col)
+{
+ KListViewItem::cancelRename(col);
+ m_renamingInProcess = -1;
+ emit sigRenamingStopped(this, col);
+}
+
+#include "listviewitem_lirc.moc"
diff --git a/kradio3/plugins/lirc/listviewitem_lirc.h b/kradio3/plugins/lirc/listviewitem_lirc.h
new file mode 100644
index 0000000..051ff76
--- /dev/null
+++ b/kradio3/plugins/lirc/listviewitem_lirc.h
@@ -0,0 +1,51 @@
+/***************************************************************************
+ listviewitem_lirc.cpp - description
+ -------------------
+ begin : Sun Aug 14 2005
+ copyright : (C) 2005 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef LISTVIEWITEM_LIRC_H
+#define LISTVIEWITEM_LIRC_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <klistview.h>
+
+class ListViewItemLirc : public QObject, public KListViewItem
+{
+Q_OBJECT
+public:
+ ListViewItemLirc(QListView *parent, QListViewItem *after);
+ ~ListViewItemLirc();
+
+ bool isRenamingInProcess() const { return m_renamingInProcess >= 0; }
+ int getRenamingColumn() const { return m_renamingInProcess; }
+
+ virtual void startRename(int col);
+ virtual void okRename(int col);
+ virtual void cancelRename(int col);
+
+signals:
+
+ void sigRenamingStarted(ListViewItemLirc *sender, int column);
+ void sigRenamingStopped(ListViewItemLirc *sender, int column);
+
+protected:
+
+ int m_renamingInProcess;
+};
+
+#endif
diff --git a/kradio3/plugins/lirc/po/Makefile.am b/kradio3/plugins/lirc/po/Makefile.am
new file mode 100644
index 0000000..22fce99
--- /dev/null
+++ b/kradio3/plugins/lirc/po/Makefile.am
@@ -0,0 +1,2 @@
+PACKAGE = kradio-lirc
+POFILES = AUTO
diff --git a/kradio3/plugins/lirc/po/de.po b/kradio3/plugins/lirc/po/de.po
new file mode 100644
index 0000000..1521094
--- /dev/null
+++ b/kradio3/plugins/lirc/po/de.po
@@ -0,0 +1,213 @@
+# translation of de.po to
+# translation of kradio-lirc.po to
+# This file is put in the public domain.
+#
+# Ernst Martin Witte <emw@nocabal.de>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-12 18:20+0100\n"
+"PO-Revision-Date: 2006-11-06 01:32+0100\n"
+"Last-Translator: Ernst Martin Witte <emw@nocabal.de>\n"
+"Language-Team: <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. i18n: file lirc-configuration-ui.ui line 17
+#: rc.cpp:3 rc.cpp:18 lirc-configuration-ui.cpp:75
+#, no-c-format
+msgid "LIRCConfigurationUI"
+msgstr "LIRCConfigurationUI"
+
+#. i18n: file lirc-configuration-ui.ui line 26
+#: rc.cpp:6 rc.cpp:21 lirc-configuration-ui.cpp:34
+#: lirc-configuration-ui.cpp:76
+#, no-c-format
+msgid "Action"
+msgstr "Aktion"
+
+#. i18n: file lirc-configuration-ui.ui line 37
+#: rc.cpp:9 rc.cpp:24 lirc-configuration-ui.cpp:35
+#: lirc-configuration-ui.cpp:77
+#, no-c-format
+msgid "LIRC String"
+msgstr "LIRC-Zeichenkette"
+
+#. i18n: file lirc-configuration-ui.ui line 48
+#: rc.cpp:12 rc.cpp:27 lirc-configuration-ui.cpp:36
+#: lirc-configuration-ui.cpp:78
+#, no-c-format
+msgid "Alternative LIRC String"
+msgstr "Alternative LIRC-Zeichenkette"
+
+#. i18n: file lirc-configuration-ui.ui line 98
+#: rc.cpp:15 rc.cpp:30 lirc-configuration-ui.cpp:79
+#, no-c-format
+msgid "textLabel1"
+msgstr "textLabel1"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Ernst Martin Witte"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "emw@nocabal.de"
+
+#: lirc-configuration.cpp:34
+msgid "digit 0"
+msgstr "Ziffer 0"
+
+#: lirc-configuration.cpp:35
+msgid "digit 1"
+msgstr "Ziffer 1"
+
+#: lirc-configuration.cpp:36
+msgid "digit 2"
+msgstr "Ziffer 2"
+
+#: lirc-configuration.cpp:37
+msgid "digit 3"
+msgstr "Ziffer 3"
+
+#: lirc-configuration.cpp:38
+msgid "digit 4"
+msgstr "Ziffer 4"
+
+#: lirc-configuration.cpp:39
+msgid "digit 5"
+msgstr "Ziffer 5"
+
+#: lirc-configuration.cpp:40
+msgid "digit 6"
+msgstr "Ziffer 6"
+
+#: lirc-configuration.cpp:41
+msgid "digit 7"
+msgstr "Ziffer 7"
+
+#: lirc-configuration.cpp:42
+msgid "digit 8"
+msgstr "Ziffer 8"
+
+#: lirc-configuration.cpp:43
+msgid "digit 9"
+msgstr "Ziffer 9"
+
+#: lirc-configuration.cpp:44
+msgid "Power On"
+msgstr "Einschalten"
+
+#: lirc-configuration.cpp:45
+msgid "Power Off"
+msgstr "Ausschalten"
+
+#: lirc-configuration.cpp:46
+msgid "Pause"
+msgstr "Pause"
+
+#: lirc-configuration.cpp:47
+msgid "Start Recording"
+msgstr "Aufnahme starten"
+
+#: lirc-configuration.cpp:48
+msgid "Stop Recording"
+msgstr "Aufnahme beenden"
+
+#: lirc-configuration.cpp:49
+msgid "Increase Volume"
+msgstr "Lautstärke erhöhen"
+
+#: lirc-configuration.cpp:50
+msgid "Decrease Volume"
+msgstr "Lautstärke senken"
+
+#: lirc-configuration.cpp:51
+msgid "Next Channel"
+msgstr "Nächster Sender"
+
+#: lirc-configuration.cpp:52
+msgid "Previous Channel"
+msgstr "Vorheriger Sender"
+
+#: lirc-configuration.cpp:53
+msgid "Search Next Channel"
+msgstr "Suche nächsten Sender"
+
+#: lirc-configuration.cpp:54
+msgid "Search Previous Channel"
+msgstr "Suche vorherigen Sender"
+
+#: lirc-configuration.cpp:55
+msgid "Enable Sleep Countdown"
+msgstr "Schlummer-Countdown aktivieren"
+
+#: lirc-configuration.cpp:56
+msgid "Quit KRadio"
+msgstr "KRadio Beenden"
+
+#: lirc-configuration.cpp:176
+msgid ""
+"Enter the key string of your remote or just press the button on your remote "
+"control"
+msgstr ""
+"Geben Sie die Zeichenkette Ihrer Fernsteuerung ein oder drücken Sie die "
+"Taste auf Ihrer Fernsteuerung"
+
+#: lirc-configuration.cpp:182
+msgid "Double Click on the entries to change the assignments"
+msgstr "Doppelklicken Sie auf die Einträge um die Zuordnung zu ändern"
+
+#: lircsupport.cpp:45
+msgid "Linux Infrared Control (LIRC) Support"
+msgstr "Unterstützung für die Fernsteuerung (LIRC)"
+
+#: lircsupport.cpp:51 lircsupport.cpp:330
+msgid "LIRC Plugin"
+msgstr "Plugin für die Fernsteuerung (LIRC)"
+
+#: lircsupport.cpp:56 lircsupport.cpp:57
+msgid "initializing kradio lirc plugin"
+msgstr "initialisiere das Plugin für die Fernsteuerung (LIRC)"
+
+#: lircsupport.cpp:65
+msgid ""
+"%1 does not exist. File was created with KRadio's default .lircrc proposal"
+msgstr ""
+"Die Datei %1 existiert nicht. Die Datei wurde mit den Defaulteinstellungen "
+"für KRadio erzeugt."
+
+#: lircsupport.cpp:94
+msgid "There is no entry for kradio in any of your .lircrc files."
+msgstr "Es gibt keinen Eintrag für KRadio in jeglichen .lirc-Dateien"
+
+#: lircsupport.cpp:95
+msgid "Please setup your .lircrc files correctly."
+msgstr "Bitte konfigurieren Sie Ihre .lirc-Dateien richtig."
+
+#: lircsupport.cpp:106 lircsupport.cpp:107
+msgid "Initializing kradio lirc plugin failed"
+msgstr "Die Initialisierung des KRadio LIRC Plugins schlug fehl"
+
+#: lircsupport.cpp:109 lircsupport.cpp:110
+msgid "Initializing kradio lirc plugin successful"
+msgstr "Die Initialisierung des LIRC Plugins war erfolgreich"
+
+#: lircsupport.cpp:167
+msgid ""
+"Reading from LIRC socket failed. Disabling LIRC Functions till next start of "
+"kradio"
+msgstr ""
+"Das Lesen vom LIRC-Socket ist fehlgeschlagen. Die LIRC-Funktion wird bis zum "
+"nächsten Start von KRadio temporär abgeschaltet."
+
+#: lircsupport.cpp:329
+msgid "LIRC Support"
+msgstr "Fernsteuerung"
diff --git a/kradio3/plugins/lirc/po/ru.po b/kradio3/plugins/lirc/po/ru.po
new file mode 100644
index 0000000..54edb74
--- /dev/null
+++ b/kradio3/plugins/lirc/po/ru.po
@@ -0,0 +1,209 @@
+# translation of ru.po to
+# translation of kradio-lirc.po to
+# This file is put in the public domain.
+# Алексей Кузнецов <Alexey.Kouznetsov@GMail.com>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-12 18:20+0100\n"
+"PO-Revision-Date: 2006-11-08 12:54+0300\n"
+"Last-Translator: Алексей Кузнецов <Alexey.Kouznetsov@GMail.com>\n"
+"Language-Team: <ru@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10\n"
+
+#. i18n: file lirc-configuration-ui.ui line 17
+#: rc.cpp:3 rc.cpp:18 lirc-configuration-ui.cpp:75
+#, no-c-format
+msgid "LIRCConfigurationUI"
+msgstr "LIRCConfigurationUI"
+
+#. i18n: file lirc-configuration-ui.ui line 26
+#: rc.cpp:6 rc.cpp:21 lirc-configuration-ui.cpp:34
+#: lirc-configuration-ui.cpp:76
+#, no-c-format
+msgid "Action"
+msgstr "Действие"
+
+#. i18n: file lirc-configuration-ui.ui line 37
+#: rc.cpp:9 rc.cpp:24 lirc-configuration-ui.cpp:35
+#: lirc-configuration-ui.cpp:77
+#, no-c-format
+msgid "LIRC String"
+msgstr "Строка LIRC"
+
+#. i18n: file lirc-configuration-ui.ui line 48
+#: rc.cpp:12 rc.cpp:27 lirc-configuration-ui.cpp:36
+#: lirc-configuration-ui.cpp:78
+#, no-c-format
+msgid "Alternative LIRC String"
+msgstr "Альтернативная строка LIRC"
+
+#. i18n: file lirc-configuration-ui.ui line 98
+#: rc.cpp:15 rc.cpp:30 lirc-configuration-ui.cpp:79
+#, no-c-format
+msgid "textLabel1"
+msgstr "textLabel1"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Алексей Кузнецов"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "Alexey.Kouznetsov@GMail.com"
+
+#: lirc-configuration.cpp:34
+msgid "digit 0"
+msgstr "ноль"
+
+#: lirc-configuration.cpp:35
+msgid "digit 1"
+msgstr "один"
+
+#: lirc-configuration.cpp:36
+msgid "digit 2"
+msgstr "два"
+
+#: lirc-configuration.cpp:37
+msgid "digit 3"
+msgstr "три"
+
+#: lirc-configuration.cpp:38
+msgid "digit 4"
+msgstr "четыре"
+
+#: lirc-configuration.cpp:39
+msgid "digit 5"
+msgstr "пять"
+
+#: lirc-configuration.cpp:40
+msgid "digit 6"
+msgstr "шесть"
+
+#: lirc-configuration.cpp:41
+msgid "digit 7"
+msgstr "семь"
+
+#: lirc-configuration.cpp:42
+msgid "digit 8"
+msgstr "восемь"
+
+#: lirc-configuration.cpp:43
+msgid "digit 9"
+msgstr "девять"
+
+#: lirc-configuration.cpp:44
+msgid "Power On"
+msgstr "Включить"
+
+#: lirc-configuration.cpp:45
+msgid "Power Off"
+msgstr "Выключить"
+
+#: lirc-configuration.cpp:46
+msgid "Pause"
+msgstr "Приостановить"
+
+#: lirc-configuration.cpp:47
+msgid "Start Recording"
+msgstr "Начать запись"
+
+#: lirc-configuration.cpp:48
+msgid "Stop Recording"
+msgstr "Остановить запись"
+
+#: lirc-configuration.cpp:49
+msgid "Increase Volume"
+msgstr "Увеличить громкость"
+
+#: lirc-configuration.cpp:50
+msgid "Decrease Volume"
+msgstr "Уменьшить громкость"
+
+#: lirc-configuration.cpp:51
+msgid "Next Channel"
+msgstr "Следующий канал"
+
+#: lirc-configuration.cpp:52
+msgid "Previous Channel"
+msgstr "Предыдущий канал"
+
+#: lirc-configuration.cpp:53
+msgid "Search Next Channel"
+msgstr "Поиск следующего канала"
+
+#: lirc-configuration.cpp:54
+msgid "Search Previous Channel"
+msgstr "Поиск предыдущего канала"
+
+#: lirc-configuration.cpp:55
+msgid "Enable Sleep Countdown"
+msgstr "Включить таймер отключения"
+
+#: lirc-configuration.cpp:56
+msgid "Quit KRadio"
+msgstr "Закрыть KRadio"
+
+#: lirc-configuration.cpp:176
+msgid ""
+"Enter the key string of your remote or just press the button on your remote "
+"control"
+msgstr "Введите ключевую строку вашего ПДУ либо просто нажмите кнопку на нём"
+
+#: lirc-configuration.cpp:182
+msgid "Double Click on the entries to change the assignments"
+msgstr "Для изменения привязки дважды щёлкните по ней мышью"
+
+#: lircsupport.cpp:45
+msgid "Linux Infrared Control (LIRC) Support"
+msgstr "Поддержка ПДУ в Linux (LIRC)"
+
+#: lircsupport.cpp:51 lircsupport.cpp:330
+msgid "LIRC Plugin"
+msgstr "Модуль ДУ (LIRC)"
+
+#: lircsupport.cpp:56 lircsupport.cpp:57
+msgid "initializing kradio lirc plugin"
+msgstr "Инициализация модуля LIRC"
+
+#: lircsupport.cpp:65
+msgid ""
+"%1 does not exist. File was created with KRadio's default .lircrc proposal"
+msgstr "%1 не существует. Был создан файл .lircrc для KRadio по умолчанию"
+
+#: lircsupport.cpp:94
+msgid "There is no entry for kradio in any of your .lircrc files."
+msgstr "Ни в одном из ваших файлов .lircrc нет упоминания о KRadio."
+
+#: lircsupport.cpp:95
+msgid "Please setup your .lircrc files correctly."
+msgstr "Настройте файлы .lircrc"
+
+#: lircsupport.cpp:106 lircsupport.cpp:107
+msgid "Initializing kradio lirc plugin failed"
+msgstr "Инициализация модуля LIRC не удалась"
+
+#: lircsupport.cpp:109 lircsupport.cpp:110
+msgid "Initializing kradio lirc plugin successful"
+msgstr "Модуль LIRC инициализирован"
+
+#: lircsupport.cpp:167
+msgid ""
+"Reading from LIRC socket failed. Disabling LIRC Functions till next start of "
+"kradio"
+msgstr ""
+"Чтение из сокета LIRC не удалось. Отключаю функции LIRC до следующего "
+"запуска KRadio."
+
+#: lircsupport.cpp:329
+msgid "LIRC Support"
+msgstr "Поддержка LIRC"
diff --git a/kradio3/plugins/oss-sound/Makefile.am b/kradio3/plugins/oss-sound/Makefile.am
new file mode 100644
index 0000000..ffdd5be
--- /dev/null
+++ b/kradio3/plugins/oss-sound/Makefile.am
@@ -0,0 +1,18 @@
+SUBDIRS = po icons .
+
+INCLUDES = $(all_includes)
+METASOURCES = AUTO
+
+libkradio_LTLIBRARIES = liboss-sound.la
+liboss_sound_la_SOURCES = oss-sound.cpp oss-sound-configuration-ui.ui \
+ oss-sound-configuration.cpp
+liboss_sound_la_LDFLAGS = -module -avoid-version $(KDE_RPATH) $(all_libraries)
+
+noinst_HEADERS = oss-sound.h oss-sound-configuration.h
+
+#messages: rc.cpp
+# $(XGETTEXT) *.cpp *.h -o po/kradio-oss-sound.pot
+
+messages: rc.cpp
+ $(EXTRACTRC) *.rc *.ui >> rc.cpp
+ $(XGETTEXT) rc.cpp *.h *.cpp -o po/kradio-oss-sound.pot
diff --git a/kradio3/plugins/oss-sound/icons/Makefile.am b/kradio3/plugins/oss-sound/icons/Makefile.am
new file mode 100644
index 0000000..b3f2583
--- /dev/null
+++ b/kradio3/plugins/oss-sound/icons/Makefile.am
@@ -0,0 +1,2 @@
+icons_ICON = AUTO
+iconsdir = $(kde_datadir)/kradio/icons
diff --git a/kradio3/plugins/oss-sound/icons/hi16-action-kradio_oss.png b/kradio3/plugins/oss-sound/icons/hi16-action-kradio_oss.png
new file mode 100644
index 0000000..1241b1f
--- /dev/null
+++ b/kradio3/plugins/oss-sound/icons/hi16-action-kradio_oss.png
Binary files differ
diff --git a/kradio3/plugins/oss-sound/icons/hi32-action-kradio_oss.png b/kradio3/plugins/oss-sound/icons/hi32-action-kradio_oss.png
new file mode 100644
index 0000000..85e5c63
--- /dev/null
+++ b/kradio3/plugins/oss-sound/icons/hi32-action-kradio_oss.png
Binary files differ
diff --git a/kradio3/plugins/oss-sound/icons/hi48-action-kradio_oss.png b/kradio3/plugins/oss-sound/icons/hi48-action-kradio_oss.png
new file mode 100644
index 0000000..2d2a08d
--- /dev/null
+++ b/kradio3/plugins/oss-sound/icons/hi48-action-kradio_oss.png
Binary files differ
diff --git a/kradio3/plugins/oss-sound/oss-sound-configuration-ui.ui b/kradio3/plugins/oss-sound/oss-sound-configuration-ui.ui
new file mode 100644
index 0000000..7cf3483
--- /dev/null
+++ b/kradio3/plugins/oss-sound/oss-sound-configuration-ui.ui
@@ -0,0 +1,132 @@
+<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
+<class>OSSSoundConfigurationUI</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>OSSSoundConfigurationUI</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>562</width>
+ <height>411</height>
+ </rect>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <widget class="QGroupBox" row="0" column="0">
+ <property name="name">
+ <cstring>groupBox20</cstring>
+ </property>
+ <property name="title">
+ <string>Devices</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <widget class="KURLRequester" row="1" column="1">
+ <property name="name">
+ <cstring>editMixerDevice</cstring>
+ </property>
+ </widget>
+ <widget class="KURLRequester" row="0" column="1">
+ <property name="name">
+ <cstring>editDSPDevice</cstring>
+ </property>
+ </widget>
+ <widget class="QLabel" row="0" column="0">
+ <property name="name">
+ <cstring>textLabel2</cstring>
+ </property>
+ <property name="text">
+ <string>PCM Device</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="1" column="0">
+ <property name="name">
+ <cstring>textLabel2_2</cstring>
+ </property>
+ <property name="text">
+ <string>Mixer Device</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="2" column="0">
+ <property name="name">
+ <cstring>textLabel2_2_2</cstring>
+ </property>
+ <property name="text">
+ <string>Buffer Size</string>
+ </property>
+ </widget>
+ <widget class="KIntSpinBox" row="2" column="1">
+ <property name="name">
+ <cstring>editBufferSize</cstring>
+ </property>
+ <property name="suffix">
+ <string> kB</string>
+ </property>
+ <property name="maxValue">
+ <number>1024</number>
+ </property>
+ <property name="minValue">
+ <number>4</number>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ <widget class="QGroupBox" row="1" column="0">
+ <property name="name">
+ <cstring>groupBox21</cstring>
+ </property>
+ <property name="title">
+ <string>Extended Options</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <widget class="QCheckBox" row="0" column="0">
+ <property name="name">
+ <cstring>chkDisablePlayback</cstring>
+ </property>
+ <property name="text">
+ <string>Disable Playback</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox" row="1" column="0">
+ <property name="name">
+ <cstring>chkDisableCapture</cstring>
+ </property>
+ <property name="text">
+ <string>Disable Capture</string>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ </grid>
+</widget>
+<customwidgets>
+</customwidgets>
+<layoutdefaults spacing="6" margin="0"/>
+<includehints>
+ <includehint>kurlrequester.h</includehint>
+ <includehint>klineedit.h</includehint>
+ <includehint>kpushbutton.h</includehint>
+ <includehint>kurlrequester.h</includehint>
+ <includehint>klineedit.h</includehint>
+ <includehint>kpushbutton.h</includehint>
+ <includehint>knuminput.h</includehint>
+</includehints>
+</UI>
diff --git a/kradio3/plugins/oss-sound/oss-sound-configuration.cpp b/kradio3/plugins/oss-sound/oss-sound-configuration.cpp
new file mode 100644
index 0000000..5665114
--- /dev/null
+++ b/kradio3/plugins/oss-sound/oss-sound-configuration.cpp
@@ -0,0 +1,86 @@
+/***************************************************************************
+ oss-sound-configuration.cpp - description
+ -------------------
+ begin : Thu Sep 30 2004
+ copyright : (C) 2004 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include <qcheckbox.h>
+
+#include <kurlrequester.h>
+#include <knuminput.h>
+
+#include "oss-sound-configuration.h"
+#include "oss-sound.h"
+
+OSSSoundConfiguration::OSSSoundConfiguration (QWidget *parent, OSSSoundDevice *dev)
+ : OSSSoundConfigurationUI(parent),
+ m_SoundDevice (dev),
+ m_dirty(true),
+ m_ignore_gui_updates(false)
+{
+ connect(editDSPDevice, SIGNAL(textChanged(const QString &)), this, SLOT(slotSetDirty()));
+ connect(editMixerDevice, SIGNAL(textChanged(const QString &)), this, SLOT(slotSetDirty()));
+ connect(editBufferSize, SIGNAL(valueChanged(int)), this, SLOT(slotSetDirty()));
+ connect(chkDisablePlayback, SIGNAL(toggled(bool)), this, SLOT(slotSetDirty()));
+ connect(chkDisableCapture, SIGNAL(toggled(bool)), this, SLOT(slotSetDirty()));
+ slotCancel();
+}
+
+
+OSSSoundConfiguration::~OSSSoundConfiguration ()
+{
+}
+
+
+void OSSSoundConfiguration::slotOK()
+{
+ if (m_SoundDevice && m_dirty) {
+ m_SoundDevice->setBufferSize ( editBufferSize ->value() * 1024);
+ m_SoundDevice->enablePlayback (!chkDisablePlayback->isChecked());
+ m_SoundDevice->enableCapture (!chkDisableCapture ->isChecked());
+ m_SoundDevice->setDSPDeviceName ( editDSPDevice ->url());
+ m_SoundDevice->setMixerDeviceName( editMixerDevice ->url());
+ m_dirty = false;
+ }
+}
+
+
+void OSSSoundConfiguration::slotCancel()
+{
+ if (m_dirty) {
+ m_ignore_gui_updates = true;
+ editDSPDevice ->setURL (m_SoundDevice ? m_SoundDevice->getDSPDeviceName() : QString::null);
+ editMixerDevice ->setURL (m_SoundDevice ? m_SoundDevice->getMixerDeviceName() : QString::null);
+ editBufferSize ->setValue (m_SoundDevice ? m_SoundDevice->getBufferSize()/1024 : 4);
+ chkDisablePlayback->setChecked(m_SoundDevice ? !m_SoundDevice->isPlaybackEnabled() : false);
+ chkDisableCapture ->setChecked(m_SoundDevice ? !m_SoundDevice->isCaptureEnabled() : false);
+ m_ignore_gui_updates = false;
+ m_dirty = false;
+ }
+}
+
+void OSSSoundConfiguration::slotUpdateConfig()
+{
+ slotSetDirty();
+ slotCancel();
+}
+
+void OSSSoundConfiguration::slotSetDirty()
+{
+ if (!m_ignore_gui_updates) {
+ m_dirty = true;
+ }
+}
+
+#include "oss-sound-configuration.moc"
diff --git a/kradio3/plugins/oss-sound/oss-sound-configuration.h b/kradio3/plugins/oss-sound/oss-sound-configuration.h
new file mode 100644
index 0000000..9106821
--- /dev/null
+++ b/kradio3/plugins/oss-sound/oss-sound-configuration.h
@@ -0,0 +1,51 @@
+/***************************************************************************
+ oss-sound-configuration.h - description
+ -------------------
+ begin : Thu Sep 30 2004
+ copyright : (C) 2004 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_OSS_SOUND_CONFIGURATION_H
+#define KRADIO_OSS_SOUND_CONFIGURATION_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "oss-sound-configuration-ui.h"
+#include "oss-sound.h"
+
+class OSSSoundConfiguration : public OSSSoundConfigurationUI
+{
+Q_OBJECT
+public :
+ OSSSoundConfiguration (QWidget *parent, OSSSoundDevice *);
+ ~OSSSoundConfiguration ();
+
+protected slots:
+
+ void slotOK();
+ void slotCancel();
+ void slotSetDirty();
+
+ void slotUpdateConfig();
+
+protected:
+
+ OSSSoundDevice *m_SoundDevice;
+
+ bool m_dirty;
+ bool m_ignore_gui_updates;
+};
+
+#endif
diff --git a/kradio3/plugins/oss-sound/oss-sound.cpp b/kradio3/plugins/oss-sound/oss-sound.cpp
new file mode 100644
index 0000000..760399e
--- /dev/null
+++ b/kradio3/plugins/oss-sound/oss-sound.cpp
@@ -0,0 +1,991 @@
+/***************************************************************************
+ oss-sound.cpp - description
+ -------------------
+ begin : Sun Mar 21 2004
+ copyright : (C) 2004 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "oss-sound.h"
+
+#include "../../src/include/aboutwidget.h"
+#include <klocale.h>
+#include <kaboutdata.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/soundcard.h>
+#include <sys/ioctl.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <math.h>
+#include <errno.h>
+
+#include "oss-sound-configuration.h"
+#include "../../src/include/utils.h"
+
+///////////////////////////////////////////////////////////////////////
+//// plugin library functions
+
+PLUGIN_LIBRARY_FUNCTIONS(OSSSoundDevice, "kradio-oss-sound", i18n("Open Sound System (OSS) Support"));
+
+/////////////////////////////////////////////////////////////////////////////
+
+struct _lrvol { unsigned char l, r; short dummy; };
+
+OSSSoundDevice::OSSSoundDevice(const QString &name)
+ : QObject(NULL, NULL),
+ PluginBase(name, i18n("KRadio OSS Sound Plugin")),
+ m_DSPDeviceName(""),
+ m_MixerDeviceName(""),
+ m_DSP_fd(-1),
+ m_Mixer_fd(-1),
+ m_DuplexMode(DUPLEX_UNKNOWN),
+ m_DSPFormat(),
+ m_PassivePlaybackStreams(),
+ m_PlaybackStreamID(),
+ m_CaptureStreamID(),
+ m_BufferSize(65536),
+ m_PlaybackBuffer(m_BufferSize),
+ m_CaptureBuffer(m_BufferSize),
+ m_CaptureRequestCounter(0),
+ m_CapturePos(0),
+ m_CaptureStartTime(0),
+ //m_PlaybackSkipCount(0),
+ m_CaptureSkipCount(0),
+ m_EnablePlayback(true),
+ m_EnableCapture(true)
+{
+ QObject::connect(&m_PollingTimer, SIGNAL(timeout()), this, SLOT(slotPoll()));
+}
+
+
+OSSSoundDevice::~OSSSoundDevice()
+{
+ stopCapture(m_CaptureStreamID);
+ stopPlayback(m_PlaybackStreamID);
+ closeDSPDevice();
+ closeMixerDevice();
+}
+
+
+bool OSSSoundDevice::connectI(Interface *i)
+{
+ bool a = PluginBase::connectI(i);
+ bool b = ISoundStreamClient::connectI(i);
+ return a || b;
+}
+
+
+bool OSSSoundDevice::disconnectI(Interface *i)
+{
+ bool a = PluginBase::disconnectI(i);
+ bool b = ISoundStreamClient::disconnectI(i);
+ return a || b;
+}
+
+void OSSSoundDevice::noticeConnectedI (ISoundStreamServer *s, bool pointer_valid)
+{
+ ISoundStreamClient::noticeConnectedI(s, pointer_valid);
+ if (s && pointer_valid) {
+ s->register4_sendReleasePlayback(this);
+ s->register4_sendReleaseCapture(this);
+ s->register4_sendPlaybackVolume(this);
+ s->register4_sendCaptureVolume(this);
+ s->register4_queryPlaybackVolume(this);
+ s->register4_queryCaptureVolume(this);
+ s->register4_sendStartPlayback(this);
+ s->register4_sendPausePlayback(this);
+ s->register4_sendStopPlayback(this);
+ s->register4_queryIsPlaybackRunning(this);
+ s->register4_sendStartCaptureWithFormat(this);
+ s->register4_sendStopCapture(this);
+ s->register4_queryIsCaptureRunning(this);
+ s->register4_notifySoundStreamClosed(this);
+ s->register4_notifySoundStreamRedirected(this);
+ s->register4_notifySoundStreamData(this);
+ }
+}
+
+// PluginBase
+
+void OSSSoundDevice::saveState (KConfig *c) const
+{
+ c->setGroup(QString("oss-sound-") + PluginBase::name());
+
+ c->writeEntry("dsp-device", m_DSPDeviceName);
+ c->writeEntry("mixer-device", m_MixerDeviceName);
+ c->writeEntry("enable-playback", m_EnablePlayback);
+ c->writeEntry("enable-capture", m_EnableCapture);
+ c->writeEntry("buffer-size", m_BufferSize);
+ c->writeEntry("soundstreamclient-id", m_SoundStreamClientID);
+}
+
+
+void OSSSoundDevice::restoreState (KConfig *c)
+{
+ c->setGroup(QString("oss-sound-") + PluginBase::name());
+
+ m_EnablePlayback = c->readBoolEntry("enable-playback", true);
+ m_EnableCapture = c->readBoolEntry("enable-capture", true);
+ m_BufferSize = c->readNumEntry ("buffer-size", 65536);
+
+ setDSPDeviceName (c->readEntry ("dsp-device", "/dev/dsp"));
+ setMixerDeviceName (c->readEntry ("mixer-device", "/dev/mixer"));
+
+ m_PlaybackBuffer.resize(m_BufferSize);
+ m_CaptureBuffer.resize(m_BufferSize);
+
+ setSoundStreamClientID(c->readEntry("soundstreamclient-id", getSoundStreamClientID()));
+
+ emit sigUpdateConfig();
+}
+
+
+void OSSSoundDevice::setMixerDeviceName(const QString &dev_name)
+{
+ if (m_MixerDeviceName != dev_name) {
+ m_MixerDeviceName = dev_name;
+ if (m_Mixer_fd >= 0)
+ openMixerDevice(true);
+ getMixerChannels(SOUND_MIXER_DEVMASK, m_PlaybackChannels, m_revPlaybackChannels);
+ getMixerChannels(SOUND_MIXER_RECMASK, m_CaptureChannels, m_revCaptureChannels);
+ notifyPlaybackChannelsChanged(m_SoundStreamClientID, m_PlaybackChannels);
+ notifyCaptureChannelsChanged(m_SoundStreamClientID, m_CaptureChannels);
+ }
+}
+
+
+ConfigPageInfo OSSSoundDevice::createConfigurationPage()
+{
+ OSSSoundConfiguration *conf = new OSSSoundConfiguration(NULL, this);
+ QObject::connect(this, SIGNAL(sigUpdateConfig()), conf, SLOT(slotUpdateConfig()));
+ return ConfigPageInfo (conf,
+ i18n("OSS Sound"),
+ i18n("OSS Sound Device Options"),
+ "kradio_oss");
+}
+
+
+AboutPageInfo OSSSoundDevice::createAboutPage()
+{
+/* KAboutData aboutData("kradio",
+ NULL,
+ NULL,
+ I18N_NOOP("OSS Sound Plugin for KRadio"),
+ KAboutData::License_GPL,
+ "(c) 2004 Martin Witte",
+ 0,
+ "http://sourceforge.net/projects/kradio",
+ 0);
+ aboutData.addAuthor("Martin Witte", "", "witte@kawo1.rwth-aachen.de");
+
+ return AboutPageInfo(
+ new KRadioAboutWidget(aboutData, KRadioAboutWidget::AbtTabbed),
+ i18n("OSS Sound"),
+ i18n("OSS Sound"),
+ "kradio_oss_sound"
+ );
+*/
+ return AboutPageInfo();
+}
+
+
+
+bool OSSSoundDevice::preparePlayback(SoundStreamID id, const QString &channel, bool active_mode, bool start_immediately)
+{
+ if (id.isValid() && m_revPlaybackChannels.contains(channel)) {
+ m_PlaybackStreams.insert(id, SoundStreamConfig(m_revPlaybackChannels[channel], active_mode));
+ if (start_immediately)
+ startPlayback(id);
+ return true;
+ // FIXME: what to do if stream is already playing?
+ }
+ return false;
+}
+
+
+bool OSSSoundDevice::prepareCapture(SoundStreamID id, const QString &channel)
+{
+ if (id.isValid() && m_revCaptureChannels.contains(channel)) {
+ m_CaptureStreams.insert(id, SoundStreamConfig(m_revCaptureChannels[channel]));
+ return true;
+ // FIXME: what to do if stream is already playing?
+ }
+ return false;
+}
+
+bool OSSSoundDevice::releasePlayback(SoundStreamID id)
+{
+ if (id.isValid() && m_PlaybackStreams.contains(id)) {
+ if (m_PlaybackStreamID == id || m_PassivePlaybackStreams.contains(id)) {
+ stopPlayback(id);
+ }
+ m_PlaybackStreams.remove(id);
+ return true;
+ }
+ return false;
+}
+
+bool OSSSoundDevice::releaseCapture(SoundStreamID id)
+{
+ if (id.isValid() && m_CaptureStreams.contains(id)) {
+ if (m_CaptureStreamID == id) {
+ stopCapture(id);
+ }
+ m_CaptureStreams.remove(id);
+ return true;
+ }
+ return false;
+}
+
+bool OSSSoundDevice::supportsPlayback() const
+{
+ return m_EnablePlayback;
+}
+
+
+bool OSSSoundDevice::supportsCapture() const
+{
+ return m_EnableCapture;
+}
+
+
+bool OSSSoundDevice::startPlayback(SoundStreamID id)
+{
+ if (id.isValid() && m_PlaybackStreams.contains(id) && m_EnablePlayback) {
+
+ SoundStreamConfig &cfg = m_PlaybackStreams[id];
+
+ bool ok = false;
+ if (cfg.m_ActiveMode) {
+ if (!m_PlaybackStreamID.isValid()) {
+ m_PlaybackStreamID = id;
+ ok = true;
+ }
+ } else {
+ if (!m_PassivePlaybackStreams.contains(id))
+ m_PassivePlaybackStreams.append(id);
+ ok = true;
+ }
+
+ if (ok) {
+ openMixerDevice();
+ if (cfg.m_Volume >= 0)
+ writeMixerVolume(cfg.m_Channel, cfg.m_Volume);
+ }
+
+ // error handling?
+ return true;
+ } else {
+ return false;
+ }
+}
+
+
+bool OSSSoundDevice::pausePlayback(SoundStreamID /*id*/)
+{
+ //return stopPlayback(id);
+ return false;
+}
+
+
+bool OSSSoundDevice::stopPlayback(SoundStreamID id)
+{
+ if (id.isValid() && m_PlaybackStreams.contains(id)) {
+
+ SoundStreamConfig &cfg = m_PlaybackStreams[id];
+
+ if (!cfg.m_ActiveMode) {
+ if (m_PassivePlaybackStreams.contains(id)) {
+// writeMixerVolume(cfg.m_Channel, 0);
+ m_PassivePlaybackStreams.remove(id);
+ }
+ } else if (m_PlaybackStreamID == id) {
+ m_PlaybackStreamID = SoundStreamID::InvalidID;
+ m_PlaybackBuffer.clear();
+ closeDSPDevice();
+ }
+
+ closeMixerDevice();
+ return true;
+ } else {
+ return false;
+ }
+}
+
+bool OSSSoundDevice::isPlaybackRunning(SoundStreamID id, bool &b) const
+{
+ if (id.isValid() && m_PlaybackStreams.contains(id)) {
+ b = true;
+ return true;
+ } else {
+ return false;
+ }
+}
+
+bool OSSSoundDevice::startCaptureWithFormat(SoundStreamID id,
+ const SoundFormat &proposed_format,
+ SoundFormat &real_format,
+ bool force_format)
+{
+ if (m_CaptureStreams.contains(id) && m_EnableCapture) {
+
+ if (m_CaptureStreamID != id) {
+ m_CapturePos = 0;
+ m_CaptureStartTime = time(NULL);
+ }
+
+ if (m_CaptureStreamID != id || force_format) {
+
+ m_CaptureStreamID = id;
+ SoundStreamConfig &cfg = m_CaptureStreams[id];
+
+ openMixerDevice();
+ selectCaptureChannel(cfg.m_Channel);
+ if (cfg.m_Volume >= 0)
+ writeMixerVolume(cfg.m_Channel, cfg.m_Volume);
+
+ openDSPDevice(proposed_format);
+
+ // FIXME: error handling?
+ }
+
+ real_format = m_DSPFormat;
+ m_CaptureRequestCounter++;
+
+ return true;
+ } else {
+ return false;
+ }
+}
+
+
+bool OSSSoundDevice::stopCapture(SoundStreamID id)
+{
+ if (id.isValid() && m_CaptureStreamID == id) {
+
+ if (--m_CaptureRequestCounter == 0) {
+ m_CaptureStreamID = SoundStreamID::InvalidID;
+ m_CaptureBuffer.clear();
+
+ closeMixerDevice();
+ closeDSPDevice();
+ }
+ return true;
+ } else {
+ return false;
+ }
+}
+
+
+bool OSSSoundDevice::isCaptureRunning(SoundStreamID id, bool &b, SoundFormat &sf) const
+{
+ if (id.isValid() && m_CaptureStreamID == id) {
+ b = true;
+ sf = m_DSPFormat;
+ return true;
+ } else {
+ return false;
+ }
+}
+
+
+bool OSSSoundDevice::noticeSoundStreamClosed(SoundStreamID id)
+{
+ bool found = false;
+ if (m_PlaybackStreamID == id || m_PassivePlaybackStreams.contains(id)) {
+ stopPlayback(id);
+ found = true;
+ }
+ if (m_CaptureStreamID == id) {
+ stopCapture(id);
+ found = true;
+ }
+ m_PlaybackStreams.remove(id);
+ m_CaptureStreams.remove(id);
+ return found;
+}
+
+
+bool OSSSoundDevice::noticeSoundStreamRedirected(SoundStreamID oldID, SoundStreamID newID)
+{
+ bool found = false;
+ if (m_PlaybackStreams.contains(oldID)) {
+ m_PlaybackStreams.insert(newID, m_PlaybackStreams[oldID]);
+ if (newID != oldID)
+ m_PlaybackStreams.remove(oldID);
+ found = true;
+ }
+ if (m_CaptureStreams.contains(oldID)) {
+ m_CaptureStreams.insert(newID, m_CaptureStreams[oldID]);
+ if (newID != oldID)
+ m_CaptureStreams.remove(oldID);
+ found = true;
+ }
+
+ if (m_PlaybackStreamID == oldID)
+ m_PlaybackStreamID = newID;
+ if (m_CaptureStreamID == oldID)
+ m_CaptureStreamID = newID;
+ if (m_PassivePlaybackStreams.contains(oldID)) {
+ m_PassivePlaybackStreams.remove(oldID);
+ m_PassivePlaybackStreams.append(newID);
+ }
+ return found;
+}
+
+
+bool OSSSoundDevice::noticeSoundStreamData(SoundStreamID id,
+ const SoundFormat &format,
+ const char *data, size_t size, size_t &consumed_size,
+ const SoundMetaData &/*md*/
+ )
+{
+ if (!id.isValid() || id != m_PlaybackStreamID)
+ return false;
+
+ if (m_DSP_fd < 0) {
+ openDSPDevice(format);
+ } else if (format != m_DSPFormat) {
+ if (m_CaptureStreamID.isValid())
+ return false;
+
+ // flush playback buffer
+ size_t buffersize = 0;
+ char *buffer = m_PlaybackBuffer.getData(buffersize);
+ write(m_DSP_fd, buffer, buffersize);
+
+ // if not all could be written, it must be discarded
+ m_PlaybackBuffer.clear();
+
+ closeDSPDevice();
+ openDSPDevice(format);
+ // error handling ?
+ }
+
+ size_t n = m_PlaybackBuffer.addData(data, size);
+ consumed_size = (consumed_size == SIZE_T_DONT_CARE) ? n : min(consumed_size, n);
+
+// if (n < size) {
+// m_PlaybackSkipCount += size - n;
+// } else if (m_PlaybackSkipCount > 0) {
+// logWarning(i18n("%1: Playback buffer overflow. Skipped %1 bytes").arg(m_DSPDeviceName).arg(QString::number(m_PlaybackSkipCount)));
+// m_PlaybackSkipCount = 0;
+// }
+
+ return true; //m_PlaybackSkipCount == 0;
+}
+
+
+
+void OSSSoundDevice::slotPoll()
+{
+ int err = 0;
+
+ if (m_CaptureStreamID.isValid() && m_DSP_fd >= 0) {
+
+ size_t bufferSize = 0;
+ char *buffer = m_CaptureBuffer.getFreeSpace(bufferSize);
+
+ int bytesRead = read(m_DSP_fd, buffer, bufferSize);
+
+ if (bytesRead > 0) {
+ m_CaptureBuffer.removeFreeSpace(bytesRead);
+ } else if (bytesRead < 0 && errno == EAGAIN) {
+ bytesRead = 0;
+ } else if (bytesRead == 0) {
+ err = -1;
+ logError(i18n("OSS device %1: No data to record").arg(m_DSPDeviceName));
+ } else {
+ err = errno;
+ }
+
+ while (m_CaptureBuffer.getFillSize() > m_CaptureBuffer.getSize() / 3) {
+ size_t size = 0;
+ buffer = m_CaptureBuffer.getData(size);
+ time_t cur_time = time(NULL);
+ size_t consumed_size = SIZE_T_DONT_CARE;
+ notifySoundStreamData(m_CaptureStreamID, m_DSPFormat, buffer, size, consumed_size, SoundMetaData(m_CapturePos, cur_time - m_CaptureStartTime, cur_time, i18n("internal stream, not stored (%1)").arg(m_DSPDeviceName)));
+ if (consumed_size == SIZE_T_DONT_CARE)
+ consumed_size = size;
+ m_CaptureBuffer.removeData(consumed_size);
+ m_CapturePos += consumed_size;
+ if (consumed_size < size)
+ break;
+ }
+ }
+
+ if (m_PlaybackStreamID.isValid()/* && m_DSP_fd >= 0*/) {
+
+ if (m_PlaybackBuffer.getFillSize() > 0 && m_DSP_fd >= 0) {
+
+ size_t buffersize = 0;
+ char *buffer = m_PlaybackBuffer.getData(buffersize);
+ int bytesWritten = write(m_DSP_fd, buffer, buffersize);
+
+ if (bytesWritten > 0) {
+ m_PlaybackBuffer.removeData(bytesWritten);
+ } else if (bytesWritten < 0 && errno == EAGAIN) {
+ bytesWritten = 0;
+ } else {
+ err = errno;
+ }
+ }
+
+ if (m_PlaybackBuffer.getFreeSize() > 0)
+ notifyReadyForPlaybackData(m_PlaybackStreamID, m_PlaybackBuffer.getFreeSize());
+ }
+
+ if (err) {
+ logError(i18n("Error %1 while handling OSS device %2").arg(QString().setNum(err)).arg(m_DSPDeviceName));
+ }
+
+ if (m_PlaybackStreamID.isValid())
+ checkMixerVolume(m_PlaybackStreamID);
+ if (m_CaptureStreamID.isValid())
+ checkMixerVolume(m_CaptureStreamID);
+
+ QValueListConstIterator<SoundStreamID> end = m_PassivePlaybackStreams.end();
+ for (QValueListConstIterator<SoundStreamID> it = m_PassivePlaybackStreams.begin(); it != end; ++it)
+ checkMixerVolume(*it);
+
+}
+
+
+bool OSSSoundDevice::openDSPDevice(const SoundFormat &format, bool reopen)
+{
+ if (m_DSP_fd >= 0) {
+
+ if (reopen) {
+
+ closeDSPDevice ( /* force = */ true);
+
+ } else {
+
+ if (format != m_DSPFormat)
+ return false;
+
+ if (m_DuplexMode != DUPLEX_FULL && m_CaptureStreamID.isValid() && m_PlaybackStreamID.isValid())
+ return false;
+
+ return true;
+ }
+ } else {
+ if (reopen)
+ return true;
+ }
+
+ m_DSPFormat = format;
+
+ // first testopen for CAPS
+ m_DSP_fd = open(m_DSPDeviceName.ascii(), O_NONBLOCK | O_RDONLY);
+ bool err = m_DSP_fd < 0;
+ if (err) {
+ logError(i18n("Cannot open DSP device %1").arg(m_DSPDeviceName));
+ return false;
+ }
+ int caps = 0;
+ err |= (ioctl (m_DSP_fd, SNDCTL_DSP_GETCAPS, &caps) != 0);
+ if (err)
+ logError(i18n("Cannot read DSP capabilities for %1").arg(m_DSPDeviceName));
+
+ m_DuplexMode = (caps & DSP_CAP_DUPLEX) ? DUPLEX_FULL : DUPLEX_HALF;
+ close (m_DSP_fd);
+ m_DSP_fd = -1;
+
+ // opening and seeting up the device file
+ int mode = O_NONBLOCK;
+ if (m_DuplexMode == DUPLEX_FULL) {
+ mode |= O_RDWR;
+ } else if (m_CaptureStreamID.isValid()) {
+ mode |= O_RDONLY;
+ } else {
+ mode |= O_WRONLY;
+ }
+
+ m_DSP_fd = open(m_DSPDeviceName.ascii(), mode);
+
+ err = m_DSP_fd < 0;
+ if (err) {
+ logError(i18n("Cannot open DSP device %1").arg(m_DSPDeviceName));
+ return false;
+ }
+
+ int oss_format = getOSSFormat(m_DSPFormat);
+ err |= (ioctl(m_DSP_fd, SNDCTL_DSP_SETFMT, &oss_format) != 0);
+ if (err)
+ logError(i18n("Cannot set DSP sample format for %1").arg(m_DSPDeviceName));
+
+ int channels = m_DSPFormat.m_Channels;
+ err |= (ioctl(m_DSP_fd, SNDCTL_DSP_CHANNELS, &channels) != 0);
+ if (err)
+ logError(i18n("Cannot set number of channels for %1").arg(m_DSPDeviceName));
+
+ int rate = m_DSPFormat.m_SampleRate;
+ err |= (ioctl(m_DSP_fd, SNDCTL_DSP_SPEED, &rate) != 0);
+ if (err)
+ logError(i18n("Cannot set sampling rate for %1").arg(m_DSPDeviceName));
+ if (rate != (int)m_DSPFormat.m_SampleRate) {
+ logWarning(i18n("Asking for %1 Hz but %2 uses %3 Hz").
+ arg(QString::number(m_DSPFormat.m_SampleRate)).
+ arg(m_DSPDeviceName).
+ arg(QString::number(rate)));
+ m_DSPFormat.m_SampleRate = rate;
+ }
+
+ int stereo = m_DSPFormat.m_Channels == 2;
+ err |= (ioctl(m_DSP_fd, SNDCTL_DSP_STEREO, &stereo) != 0);
+ if (err)
+ logError(i18n("Cannot set stereo mode for %1").arg(m_DSPDeviceName));
+
+ unsigned sampleSize = m_DSPFormat.m_SampleBits;
+ err |= (ioctl(m_DSP_fd, SNDCTL_DSP_SAMPLESIZE, &sampleSize) != 0);
+ if (err || sampleSize != m_DSPFormat.m_SampleBits)
+ logError(i18n("Cannot set sample size for %1").arg(m_DSPDeviceName));
+
+ // setup buffer, ask for 40ms latency
+ int tmp = (400 * m_DSPFormat.frameSize() * m_DSPFormat.m_SampleRate) / 1000;
+ int mask = -1; for (; tmp; tmp >>= 1) ++mask;
+ if (mask < 8) mask = 12; // default 4kB
+ mask |= 0x7FFF0000;
+ err |= ioctl (m_DSP_fd, SNDCTL_DSP_SETFRAGMENT, &mask);
+ if (err)
+ logError(i18n("Cannot set buffers for %1").arg(m_DSPDeviceName));
+
+ int bufferBlockSize = 0;
+ err |= ioctl (m_DSP_fd, SNDCTL_DSP_GETBLKSIZE, &bufferBlockSize);
+ if (err) {
+ logError(i18n("Cannot read buffer size for %1").arg(m_DSPDeviceName));
+ } else {
+ logInfo(i18n("%1 uses buffer blocks of %2 bytes").arg(m_DSPDeviceName).arg(QString::number(bufferBlockSize)));
+ size_t tmp = (((m_BufferSize - 1) / bufferBlockSize) + 1) * bufferBlockSize;
+ setBufferSize(tmp);
+ logInfo(i18n("adjusted own buffer size to %1 bytes").arg(QString::number(tmp)));
+ }
+
+ int trigger = ~PCM_ENABLE_INPUT & ~PCM_ENABLE_OUTPUT;
+ ioctl(m_DSP_fd, SNDCTL_DSP_SETTRIGGER, &trigger);
+ trigger = PCM_ENABLE_INPUT | PCM_ENABLE_OUTPUT;
+ ioctl(m_DSP_fd, SNDCTL_DSP_SETTRIGGER, &trigger);
+
+ if (!err) {
+ m_PollingTimer.start(40);
+ } else {
+ closeDSPDevice();
+ }
+
+ m_CaptureSkipCount = 0;
+ //m_PlaybackSkipCount = 0;
+
+ return !err;
+}
+
+
+bool OSSSoundDevice::closeDSPDevice(bool force)
+{
+ if ((!m_PlaybackStreamID.isValid() && !m_CaptureStreamID.isValid()) || force) {
+
+ if (m_Mixer_fd < 0)
+ m_PollingTimer.stop();
+
+ if (m_DSP_fd >= 0)
+ close (m_DSP_fd);
+ m_DSP_fd = -1;
+
+ m_PlaybackBuffer.clear();
+ m_CaptureBuffer.clear();
+ }
+ return true;
+}
+
+
+bool OSSSoundDevice::openMixerDevice(bool reopen)
+{
+ if (reopen) {
+ if (m_Mixer_fd >= 0)
+ closeMixerDevice(/* force = */ true);
+ else
+ return true;
+ }
+
+ if (m_Mixer_fd < 0)
+ m_Mixer_fd = open(m_MixerDeviceName.ascii(), O_RDONLY);
+
+ if (m_Mixer_fd < 0) {
+ logError(i18n("Cannot open mixer device %1").arg(m_MixerDeviceName));
+ } else {
+ m_PollingTimer.start(40);
+ }
+ return m_Mixer_fd >= 0;
+}
+
+
+bool OSSSoundDevice::closeMixerDevice(bool force)
+{
+ if ((!m_PlaybackStreamID.isValid() && !m_CaptureStreamID.isValid()) || force) {
+
+ if (m_DSP_fd < 0)
+ m_PollingTimer.stop();
+
+ if (m_Mixer_fd >= 0)
+ close (m_Mixer_fd);
+ m_Mixer_fd = -1;
+ }
+ return m_Mixer_fd < 0;
+}
+
+
+void OSSSoundDevice::getMixerChannels(int query, QStringList &retval, QMap<QString, int> &revmap) const
+{
+ retval.clear();
+ revmap.clear();
+
+ int fd = m_Mixer_fd;
+ if (fd < 0)
+ fd = open(m_MixerDeviceName.ascii(), O_RDONLY);
+
+ if (fd < 0) {
+ logError(i18n("OSSSoundDevice::getMixerChannels: Cannot open mixer device %1").arg(m_MixerDeviceName));
+ }
+
+ if (fd >= 0) {
+ int mask = 0;
+ if ( ioctl(fd, MIXER_READ(query), &mask) == 0 ) {
+ for (int i = 0; i < SOUND_MIXER_NRDEVICES; ++i) {
+ if (mask & (1 << i)) {
+ static const char *labels[] = SOUND_DEVICE_LABELS;
+ retval.append(i18n(labels[i]));
+ revmap.insert(i18n(labels[i]), i);
+ }
+ }
+ } else {
+ logError(i18n("OSSSoundDevice::getMixerChannels: Cannot read mixer device mask on device %1").arg(m_MixerDeviceName));
+ }
+ }
+ if (fd != m_Mixer_fd)
+ close(fd);
+}
+
+
+const QStringList &OSSSoundDevice::getPlaybackChannels() const
+{
+ return m_PlaybackChannels;
+}
+
+
+const QStringList &OSSSoundDevice::getCaptureChannels() const
+{
+ return m_CaptureChannels;
+}
+
+
+bool OSSSoundDevice::setPlaybackVolume(SoundStreamID id, float volume)
+{
+ if (id.isValid() && (m_PlaybackStreamID == id || m_PassivePlaybackStreams.contains(id))) {
+ SoundStreamConfig &cfg = m_PlaybackStreams[id];
+
+ if (rint(100*volume) != rint(100*cfg.m_Volume)) {
+ cfg.m_Volume = writeMixerVolume(cfg.m_Channel, volume);
+ notifyPlaybackVolumeChanged(id, cfg.m_Volume);
+ }
+ return true;
+ }
+ return false;
+}
+
+
+bool OSSSoundDevice::setCaptureVolume(SoundStreamID id, float volume)
+{
+ if (id.isValid() && m_CaptureStreamID == id) {
+ SoundStreamConfig &cfg = m_CaptureStreams[id];
+
+ if (rint(100*volume) != rint(100*cfg.m_Volume)) {
+ cfg.m_Volume = writeMixerVolume(cfg.m_Channel, volume);
+ notifyCaptureVolumeChanged(id, cfg.m_Volume);
+ }
+ return true;
+ }
+ return false;
+}
+
+
+bool OSSSoundDevice::getPlaybackVolume(SoundStreamID id, float &volume) const
+{
+ if (id.isValid() && (m_PlaybackStreamID == id || m_PassivePlaybackStreams.contains(id))) {
+ const SoundStreamConfig &cfg = m_PlaybackStreams[id];
+ volume = cfg.m_Volume;
+ return true;
+ }
+ return false;
+}
+
+
+bool OSSSoundDevice::getCaptureVolume(SoundStreamID id, float &volume) const
+{
+ if (id.isValid() && m_CaptureStreamID == id) {
+ const SoundStreamConfig &cfg = m_CaptureStreams[id];
+ volume = cfg.m_Volume;
+ return true;
+ }
+ return false;
+}
+
+
+void OSSSoundDevice::checkMixerVolume(SoundStreamID id)
+{
+ if (m_Mixer_fd >= 0 && id.isValid()) {
+
+ if (m_PassivePlaybackStreams.contains(id) || m_PlaybackStreamID == id) {
+ SoundStreamConfig &cfg = m_PlaybackStreams[id];
+
+ float v = readMixerVolume(cfg.m_Channel);
+ if (rint(100*cfg.m_Volume) != rint(100*v)) {
+ cfg.m_Volume = v;
+ notifyPlaybackVolumeChanged(id, v);
+ }
+ }
+
+ if (m_CaptureStreamID == id) {
+ SoundStreamConfig &cfg = m_CaptureStreams[id];
+
+ float v = readMixerVolume(cfg.m_Channel);
+ if (rint(100*cfg.m_Volume) != rint(100*v)) {
+ cfg.m_Volume = v;
+ notifyCaptureVolumeChanged(id, v);
+ }
+ }
+ }
+}
+
+
+float OSSSoundDevice::readMixerVolume(int channel) const
+{
+ _lrvol tmpvol;
+ int err = ioctl(m_Mixer_fd, MIXER_READ(channel), &tmpvol);
+ if (err) {
+ logError("OSSSound::readMixerVolume: " +
+ i18n("error %1 while reading volume from %2")
+ .arg(QString().setNum(err))
+ .arg(m_MixerDeviceName));
+ tmpvol.l = tmpvol.r = 0;
+ }
+ return float(tmpvol.l) / 100.0;
+}
+
+
+float OSSSoundDevice::writeMixerVolume (int channel, float vol)
+{
+ if (vol > 1.0) vol = 1.0;
+ if (vol < 0) vol = 0.0;
+
+ const int divs = 100;
+ vol = rint(vol * divs) / float(divs);
+
+ if (m_Mixer_fd >= 0) {
+ _lrvol tmpvol;
+ tmpvol.r = tmpvol.l = (unsigned int)(rint(vol * divs));
+ int err = ioctl(m_Mixer_fd, MIXER_WRITE(channel), &tmpvol);
+ if (err != 0) {
+ logError("OSSSoundDevice::writeMixerVolume: " +
+ i18n("error %1 while setting volume to %2 on device %3")
+ .arg(QString().setNum(err))
+ .arg(QString().setNum(vol))
+ .arg(m_MixerDeviceName));
+ return -1;
+ }
+ }
+ return vol;
+}
+
+
+void OSSSoundDevice::selectCaptureChannel (int channel)
+{
+ int x = 1 << channel;
+ int err = ioctl(m_Mixer_fd, SOUND_MIXER_WRITE_RECSRC, &x);
+ if (err)
+ logError(i18n("Selecting recording source on device %1 failed with error code %2")
+ .arg(m_MixerDeviceName)
+ .arg(QString::number(err)));
+ _lrvol tmpvol;
+ err = ioctl(m_Mixer_fd, MIXER_READ(SOUND_MIXER_IGAIN), &tmpvol);
+ if (err)
+ logError(i18n("Reading igain volume on device %1 failed with error code %2")
+ .arg(m_MixerDeviceName)
+ .arg(QString::number(err)));
+ if (tmpvol.r == 0 && tmpvol.l == 0) {
+ tmpvol.r = tmpvol.l = 1;
+ err = ioctl(m_Mixer_fd, MIXER_WRITE(SOUND_MIXER_IGAIN), &tmpvol);
+ if (err)
+ logError(i18n("Setting igain volume on device %1 failed with error code %2")
+ .arg(m_MixerDeviceName)
+ .arg(QString::number(err)));
+ }
+}
+
+
+int OSSSoundDevice::getOSSFormat(const SoundFormat &f)
+{
+ if (f.m_SampleBits == 16) {
+ switch (2 * f.m_IsSigned + (f.m_Endianess == LITTLE_ENDIAN)) {
+ case 0: return AFMT_U16_BE;
+ case 1: return AFMT_U16_LE;
+ case 2: return AFMT_S16_BE;
+ case 3: return AFMT_S16_LE;
+ }
+ }
+ if (f.m_SampleBits == 8) {
+ switch (f.m_IsSigned) {
+ case 0: return AFMT_U8;
+ case 1: return AFMT_S8;
+ }
+ }
+ return 0;
+}
+
+
+void OSSSoundDevice::setBufferSize(int s)
+{
+ m_BufferSize = s;
+ m_PlaybackBuffer.resize(m_BufferSize);
+ m_CaptureBuffer.resize(m_BufferSize);
+}
+
+
+void OSSSoundDevice::enablePlayback(bool on)
+{
+ m_EnablePlayback = on;
+}
+
+
+void OSSSoundDevice::enableCapture(bool on)
+{
+ m_EnableCapture = on;
+}
+
+
+void OSSSoundDevice::setDSPDeviceName(const QString &s)
+{
+ m_DSPDeviceName = s;
+ SoundFormat f = m_DSPFormat;
+ if (m_DSP_fd >= 0)
+ openDSPDevice(f, /* reopen = */ true);
+}
+
+
+QString OSSSoundDevice::getSoundStreamClientDescription() const
+{
+ return i18n("OSS Sound Device %1").arg(PluginBase::name());
+}
+
+
+
+#include "oss-sound.moc"
diff --git a/kradio3/plugins/oss-sound/oss-sound.h b/kradio3/plugins/oss-sound/oss-sound.h
new file mode 100644
index 0000000..139ee64
--- /dev/null
+++ b/kradio3/plugins/oss-sound/oss-sound.h
@@ -0,0 +1,224 @@
+/***************************************************************************
+ oss-sound.h - description
+ -------------------
+ begin : Sun Mar 21 2004
+ copyright : (C) 2004 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef _KRADIO_OSS_SOUND_H
+#define _KRADIO_OSS_SOUND_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "../../src/include/ringbuffer.h"
+#include "../../src/include/plugins.h"
+#include "../../src/include/soundstreamclient_interfaces.h"
+
+#include <qobject.h>
+#include <qtimer.h>
+
+enum DUPLEX_MODE { DUPLEX_UNKNOWN, DUPLEX_FULL, DUPLEX_HALF };
+
+
+struct SoundStreamConfig
+{
+ SoundStreamConfig()
+ : m_ActiveMode(false),
+ m_Channel(-1),
+ m_Volume(-1)
+ {}
+
+ SoundStreamConfig(int _channel, bool active_mode = true)
+ : m_ActiveMode(active_mode),
+ m_Channel(_channel),
+ m_Volume(-1)
+ {}
+
+ SoundStreamConfig(const SoundStreamConfig &c)
+ : m_ActiveMode(c.m_ActiveMode),
+ m_Channel(c.m_Channel),
+ m_Volume(c.m_Volume)
+ {}
+
+ bool m_ActiveMode;
+ int m_Channel;
+ float m_Volume;
+};
+
+
+class OSSSoundDevice : public QObject,
+ public PluginBase,
+ public ISoundStreamClient
+{
+Q_OBJECT
+
+public:
+ OSSSoundDevice (const QString &name);
+ virtual ~OSSSoundDevice ();
+
+ virtual bool connectI(Interface *i);
+ virtual bool disconnectI(Interface *i);
+
+ // PluginBase
+
+public:
+ virtual void saveState (KConfig *) const;
+ virtual void restoreState (KConfig *);
+
+ virtual QString pluginClassName() const { return "OSSSoundDevice"; }
+
+ virtual const QString &name() const { return PluginBase::name(); }
+ virtual QString &name() { return PluginBase::name(); }
+
+ virtual ConfigPageInfo createConfigurationPage();
+ virtual AboutPageInfo createAboutPage();
+
+ // ISoundStreamClient: direct device access
+
+RECEIVERS:
+ void noticeConnectedI (ISoundStreamServer *s, bool pointer_valid);
+ bool preparePlayback(SoundStreamID id, const QString &channel, bool active_mode, bool start_immediately);
+ bool prepareCapture(SoundStreamID id, const QString &channel);
+ bool releasePlayback(SoundStreamID id);
+ bool releaseCapture(SoundStreamID id);
+
+ANSWERS:
+ bool supportsPlayback() const;
+ bool supportsCapture() const;
+
+ QString getSoundStreamClientDescription() const;
+
+ // ISoundStreamClient: mixer access
+
+protected:
+ void getMixerChannels(int query_playback_or_rec_mask, QStringList &retval, QMap<QString, int> &revmap) const;
+
+ANSWERS:
+ const QStringList &getPlaybackChannels() const;
+ const QStringList &getCaptureChannels() const;
+
+RECEIVERS:
+ bool setPlaybackVolume(SoundStreamID id, float volume);
+ bool setCaptureVolume(SoundStreamID id, float volume);
+ bool getPlaybackVolume(SoundStreamID id, float &volume) const;
+ bool getCaptureVolume(SoundStreamID id, float &volume) const;
+
+ // ISoundStreamClient: generic broadcasts
+
+RECEIVERS:
+ bool startPlayback(SoundStreamID id);
+ bool pausePlayback(SoundStreamID id);
+ bool stopPlayback(SoundStreamID id);
+ bool isPlaybackRunning(SoundStreamID id, bool &b) const;
+
+ bool startCaptureWithFormat(SoundStreamID id,
+ const SoundFormat &proposed_format,
+ SoundFormat &real_format,
+ bool force_format);
+ bool stopCapture(SoundStreamID id);
+ bool isCaptureRunning(SoundStreamID id, bool &b, SoundFormat &sf) const;
+
+ bool noticeSoundStreamClosed(SoundStreamID id);
+ bool noticeSoundStreamRedirected(SoundStreamID oldID, SoundStreamID newID);
+
+ bool noticeSoundStreamData(SoundStreamID id,
+ const SoundFormat &,
+ const char *data, size_t size, size_t &consumed_size,
+ const SoundMetaData &md
+ );
+
+
+ // Config Access
+
+ int getBufferSize() const { return m_BufferSize; }
+ bool isPlaybackEnabled() const { return m_EnablePlayback; }
+ bool isCaptureEnabled() const { return m_EnableCapture; }
+ const QString &getDSPDeviceName() const { return m_DSPDeviceName; }
+ const QString &getMixerDeviceName() const { return m_MixerDeviceName; }
+
+ void setBufferSize(int s);
+ void enablePlayback(bool on);
+ void enableCapture(bool on);
+ void setDSPDeviceName(const QString &s);
+ void setMixerDeviceName(const QString &dev_name);
+
+ // own functions
+
+ static int getOSSFormat(const SoundFormat &f);
+
+protected slots:
+
+ void slotPoll();
+
+signals:
+
+ void sigUpdateConfig();
+
+protected:
+
+ bool openDSPDevice(const SoundFormat &format, bool reopen = false);
+ bool closeDSPDevice(bool force = false);
+
+ bool openMixerDevice(bool reopen = false);
+ bool closeMixerDevice(bool force = false);
+
+ void checkMixerVolume(SoundStreamID id);
+ float readMixerVolume(int channel) const;
+ float writeMixerVolume(int channel, float vol);
+
+ void selectCaptureChannel (int channel);
+
+ QString m_DSPDeviceName,
+ m_MixerDeviceName;
+ int m_DSP_fd,
+ m_Mixer_fd;
+ DUPLEX_MODE m_DuplexMode;
+ SoundFormat m_DSPFormat;
+
+ QStringList m_PlaybackChannels,
+ m_CaptureChannels;
+ QMap<QString, int> m_revPlaybackChannels,
+ m_revCaptureChannels;
+
+ QMap<SoundStreamID, SoundStreamConfig>
+ m_PlaybackStreams,
+ m_CaptureStreams;
+
+ QValueList<SoundStreamID>
+ m_PassivePlaybackStreams;
+ SoundStreamID m_PlaybackStreamID,
+ m_CaptureStreamID;
+
+ size_t m_BufferSize;
+ RingBuffer m_PlaybackBuffer,
+ m_CaptureBuffer;
+
+ unsigned m_CaptureRequestCounter;
+ Q_UINT64 m_CapturePos;
+ time_t m_CaptureStartTime;
+
+
+ size_t //m_PlaybackSkipCount,
+ m_CaptureSkipCount;
+
+ bool m_EnablePlayback,
+ m_EnableCapture;
+
+ QTimer m_PollingTimer;
+};
+
+
+
+#endif
diff --git a/kradio3/plugins/oss-sound/po/Makefile.am b/kradio3/plugins/oss-sound/po/Makefile.am
new file mode 100644
index 0000000..d6cceda
--- /dev/null
+++ b/kradio3/plugins/oss-sound/po/Makefile.am
@@ -0,0 +1,2 @@
+PACKAGE = kradio-oss-sound
+POFILES = AUTO
diff --git a/kradio3/plugins/oss-sound/po/de.po b/kradio3/plugins/oss-sound/po/de.po
new file mode 100644
index 0000000..3ff8fdc
--- /dev/null
+++ b/kradio3/plugins/oss-sound/po/de.po
@@ -0,0 +1,200 @@
+# translation of de.po to
+# translation of kradio-oss-sound.po to
+# This file is put in the public domain.
+#
+# Ernst Martin Witte <emw@nocabal.de>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-12 18:41+0100\n"
+"PO-Revision-Date: 2006-11-12 18:24+0100\n"
+"Last-Translator: Ernst Martin Witte <emw@nocabal.de>\n"
+"Language-Team: <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. i18n: file oss-sound-configuration-ui.ui line 27
+#: rc.cpp:3 rc.cpp:27 oss-sound-configuration-ui.cpp:106
+#, no-c-format
+msgid "Devices"
+msgstr "Geräte"
+
+#. i18n: file oss-sound-configuration-ui.ui line 51
+#: rc.cpp:6 rc.cpp:30 oss-sound-configuration-ui.cpp:107
+#, no-c-format
+msgid "PCM Device"
+msgstr "Gerät"
+
+#. i18n: file oss-sound-configuration-ui.ui line 59
+#: rc.cpp:9 rc.cpp:33 oss-sound-configuration-ui.cpp:108
+#, no-c-format
+msgid "Mixer Device"
+msgstr "Mixer Gerätedatei"
+
+#. i18n: file oss-sound-configuration-ui.ui line 67
+#: rc.cpp:12 rc.cpp:36 oss-sound-configuration-ui.cpp:109
+#, no-c-format
+msgid "Buffer Size"
+msgstr "Puffergröße"
+
+#. i18n: file oss-sound-configuration-ui.ui line 75
+#: rc.cpp:15 rc.cpp:39 oss-sound-configuration-ui.cpp:110
+#, no-c-format
+msgid " kB"
+msgstr " kB"
+
+#. i18n: file oss-sound-configuration-ui.ui line 91
+#: rc.cpp:18 rc.cpp:42 oss-sound-configuration-ui.cpp:111
+#, no-c-format
+msgid "Extended Options"
+msgstr "Erweiterte Optionen"
+
+#. i18n: file oss-sound-configuration-ui.ui line 105
+#: rc.cpp:21 rc.cpp:45 oss-sound-configuration-ui.cpp:112
+#, no-c-format
+msgid "Disable Playback"
+msgstr "Wiedergabe abschalten"
+
+#. i18n: file oss-sound-configuration-ui.ui line 113
+#: rc.cpp:24 rc.cpp:48 oss-sound-configuration-ui.cpp:113
+#, no-c-format
+msgid "Disable Capture"
+msgstr "Aufnahme abschalten"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Ernst Martin Witte"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "emw@nocabal.de"
+
+#: oss-sound.cpp:38
+msgid "Open Sound System (OSS) Support"
+msgstr "Unterstützung für das Open Sound System (OSS)"
+
+#: oss-sound.cpp:46
+msgid "KRadio OSS Sound Plugin"
+msgstr "KRadio Plugin für das Open Sound System (OSS)"
+
+#: oss-sound.cpp:172
+msgid "OSS Sound"
+msgstr "OSS Sound"
+
+#: oss-sound.cpp:173
+msgid "OSS Sound Device Options"
+msgstr "Geräteoptionen für den OSS Sound"
+
+#: oss-sound.cpp:507
+msgid "OSS device %1: No data to record"
+msgstr "OSS Gerät %1: Keine Daten zum Aufnehmen"
+
+#: oss-sound.cpp:517
+msgid "internal stream, not stored (%1)"
+msgstr "interner, nicht aufgezeichneter Datenstrom (%1)"
+
+#: oss-sound.cpp:549
+msgid "Error %1 while handling OSS device %2"
+msgstr "Fehler %1 beim Behandeln vom OSS-Gerät %2"
+
+#: oss-sound.cpp:593 oss-sound.cpp:619
+msgid "Cannot open DSP device %1"
+msgstr "Die Audio-Gerätedatei %1 kann nicht geöffnet werden"
+
+#: oss-sound.cpp:599
+msgid "Cannot read DSP capabilities for %1"
+msgstr "Kann die Fähigkeiten des Gerätes %1 nicht lesen."
+
+#: oss-sound.cpp:626
+msgid "Cannot set DSP sample format for %1"
+msgstr "Kann das Abtastformat für %1 nicht schreiben"
+
+#: oss-sound.cpp:631
+msgid "Cannot set number of channels for %1"
+msgstr "Kann die Anzahl der Kanäle für %1 nicht festlegen"
+
+#: oss-sound.cpp:636
+msgid "Cannot set sampling rate for %1"
+msgstr "Kann die Abtastrate für %1 nicht setzen"
+
+#: oss-sound.cpp:638
+msgid "Asking for %1 Hz but %2 uses %3 Hz"
+msgstr ""
+"%1 Hz sollen als Abtastrate verwendet werden, kann aber nur %3 Hz für das "
+"Gerät %2 verwendens"
+
+#: oss-sound.cpp:648
+msgid "Cannot set stereo mode for %1"
+msgstr "Kann den Stereo-Modus für %1 nicht setzen"
+
+#: oss-sound.cpp:653
+msgid "Cannot set sample size for %1"
+msgstr "Kann das Quantisierung-Format für %1 nicht setzen"
+
+#: oss-sound.cpp:662
+msgid "Cannot set buffers for %1"
+msgstr "Kann die Puffer für %1 nicht einstellen"
+
+#: oss-sound.cpp:667
+msgid "Cannot read buffer size for %1"
+msgstr "Kann die Puffergröße für %1 nicht lesen"
+
+#: oss-sound.cpp:669
+msgid "%1 uses buffer blocks of %2 bytes"
+msgstr "Gerät %1 verwendet Pufferblöcke von %2 Bytes"
+
+#: oss-sound.cpp:672
+msgid "adjusted own buffer size to %1 bytes"
+msgstr "Die interne Puffergröße wurde auf %1 bytes angepasst"
+
+#: oss-sound.cpp:724
+msgid "Cannot open mixer device %1"
+msgstr "Die Mixergerätedatei %1 kann nicht geöffnet werden"
+
+#: oss-sound.cpp:757
+msgid "OSSSoundDevice::getMixerChannels: Cannot open mixer device %1"
+msgstr "OSSSoundDevice::getMixerChannels: Kann den Mixer %1 nicht öffnen"
+
+#: oss-sound.cpp:771
+msgid ""
+"OSSSoundDevice::getMixerChannels: Cannot read mixer device mask on device %1"
+msgstr ""
+"OSSSoundDevice::getMixerChannels: Kann die Gerätemaske des Mixers %1 nicht "
+"lesen"
+
+#: oss-sound.cpp:876
+msgid "error %1 while reading volume from %2"
+msgstr "Fehler %1 beim Lesen der Lautstärke von %2"
+
+#: oss-sound.cpp:899
+msgid "error %1 while setting volume to %2 on device %3"
+msgstr "Fehler %1 beim setzen der Lautstärke %2 auf dem Gerät %3"
+
+#: oss-sound.cpp:915
+msgid "Selecting recording source on device %1 failed with error code %2"
+msgstr ""
+"Das Auswählen der Aufnahmequelle auf dem Gerät %1 schlug mit Fehlercode %2 "
+"fehl"
+
+#: oss-sound.cpp:921
+msgid "Reading igain volume on device %1 failed with error code %2"
+msgstr ""
+"Das Lesen der Aufnahmeverstärkung vom Geräte %1 schlug fehl mit dem "
+"Fehlercode %2"
+
+#: oss-sound.cpp:928
+msgid "Setting igain volume on device %1 failed with error code %2"
+msgstr ""
+"Das Schreiben der Aufnahmeverstärkung vom Geräte %1 schlug fehl mit dem "
+"Fehlercode %2"
+
+#: oss-sound.cpp:986
+msgid "OSS Sound Device %1"
+msgstr "OSS Sound Gerät %1"
diff --git a/kradio3/plugins/oss-sound/po/ru.po b/kradio3/plugins/oss-sound/po/ru.po
new file mode 100644
index 0000000..d8f18db
--- /dev/null
+++ b/kradio3/plugins/oss-sound/po/ru.po
@@ -0,0 +1,193 @@
+# translation of ru.po to
+# translation of kradio-oss-sound.po to
+# This file is put in the public domain.
+# Алексей Кузнецов <Alexey.Kouznetsov@GMail.com>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-12 18:20+0100\n"
+"PO-Revision-Date: 2006-11-08 12:45+0300\n"
+"Last-Translator: Алексей Кузнецов <Alexey.Kouznetsov@GMail.com>\n"
+"Language-Team: <ru@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10\n"
+
+#. i18n: file oss-sound-configuration-ui.ui line 27
+#: rc.cpp:3 rc.cpp:27 oss-sound-configuration-ui.cpp:106
+#, no-c-format
+msgid "Devices"
+msgstr "Устройства"
+
+#. i18n: file oss-sound-configuration-ui.ui line 51
+#: rc.cpp:6 rc.cpp:30 oss-sound-configuration-ui.cpp:107
+#, no-c-format
+msgid "PCM Device"
+msgstr "Устройство PCM"
+
+#. i18n: file oss-sound-configuration-ui.ui line 59
+#: rc.cpp:9 rc.cpp:33 oss-sound-configuration-ui.cpp:108
+#, no-c-format
+msgid "Mixer Device"
+msgstr "Устройство микшера"
+
+#. i18n: file oss-sound-configuration-ui.ui line 67
+#: rc.cpp:12 rc.cpp:36 oss-sound-configuration-ui.cpp:109
+#, no-c-format
+msgid "Buffer Size"
+msgstr "Размер буфера"
+
+#. i18n: file oss-sound-configuration-ui.ui line 75
+#: rc.cpp:15 rc.cpp:39 oss-sound-configuration-ui.cpp:110
+#, no-c-format
+msgid " kB"
+msgstr " кБ"
+
+#. i18n: file oss-sound-configuration-ui.ui line 91
+#: rc.cpp:18 rc.cpp:42 oss-sound-configuration-ui.cpp:111
+#, no-c-format
+msgid "Extended Options"
+msgstr "Дополнительные параметры"
+
+#. i18n: file oss-sound-configuration-ui.ui line 105
+#: rc.cpp:21 rc.cpp:45 oss-sound-configuration-ui.cpp:112
+#, no-c-format
+msgid "Disable Playback"
+msgstr "Запретить &воспроизведение"
+
+#. i18n: file oss-sound-configuration-ui.ui line 113
+#: rc.cpp:24 rc.cpp:48 oss-sound-configuration-ui.cpp:113
+#, no-c-format
+msgid "Disable Capture"
+msgstr "Запретить &запись"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Алексей Кузнецов"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "Alexey.Kouznetsov@GMail.com"
+
+#: oss-sound.cpp:38
+msgid "Open Sound System (OSS) Support"
+msgstr "Поддержка Открытой звуковой системы (OSS)"
+
+#: oss-sound.cpp:46
+msgid "KRadio OSS Sound Plugin"
+msgstr "Модуль OSS для KRadio"
+
+#: oss-sound.cpp:172
+msgid "OSS Sound"
+msgstr "OSS"
+
+#: oss-sound.cpp:173
+msgid "OSS Sound Device Options"
+msgstr "Параметры звука для драйвера OSS"
+
+#: oss-sound.cpp:507
+msgid "OSS device %1: No data to record"
+msgstr "Устройство OSS %1: для записи нет данных"
+
+#: oss-sound.cpp:517
+msgid "internal stream, not stored (%1)"
+msgstr ""
+
+#: oss-sound.cpp:549
+msgid "Error %1 while handling OSS device %2"
+msgstr "Ошибка %1 при работе с устройством OSS %2."
+
+#: oss-sound.cpp:593 oss-sound.cpp:619
+msgid "Cannot open DSP device %1"
+msgstr "Не могу открыть устройство звуковой платы %1"
+
+#: oss-sound.cpp:599
+msgid "Cannot read DSP capabilities for %1"
+msgstr "Не могу узнать возможности звуковой платы %1"
+
+#: oss-sound.cpp:626
+msgid "Cannot set DSP sample format for %1"
+msgstr "Не могу установить формат данных для звуковой платы %1"
+
+#: oss-sound.cpp:631
+msgid "Cannot set number of channels for %1"
+msgstr "Не могу установить число каналов для звуковой платы %1"
+
+#: oss-sound.cpp:636
+msgid "Cannot set sampling rate for %1"
+msgstr "Не могу установить частоту дискретизации для звуковой платы %1"
+
+#: oss-sound.cpp:638
+msgid "Asking for %1 Hz but %2 uses %3 Hz"
+msgstr "Был дан запрос на %1 Гц, однако %2 использует %3 Гц."
+
+#: oss-sound.cpp:648
+msgid "Cannot set stereo mode for %1"
+msgstr "Не могу установить стерео режим для звуковой платы %1"
+
+#: oss-sound.cpp:653
+msgid "Cannot set sample size for %1"
+msgstr "Не могу установить размер элемента выборки для звуковой платы %1"
+
+#: oss-sound.cpp:662
+msgid "Cannot set buffers for %1"
+msgstr "Не могу установить буферы для звуковой платы %1"
+
+#: oss-sound.cpp:667
+msgid "Cannot read buffer size for %1"
+msgstr "Не могу узнать размер буфера звуковой платы %1"
+
+#: oss-sound.cpp:669
+msgid "%1 uses buffer blocks of %2 bytes"
+msgstr "%1 использует блоки буфера по %2 байт"
+
+#: oss-sound.cpp:672
+msgid "adjusted own buffer size to %1 bytes"
+msgstr "Размер собственного буфера установлен %1 байт."
+
+#: oss-sound.cpp:724
+msgid "Cannot open mixer device %1"
+msgstr "Не могу открыть устройство микшера %1"
+
+#: oss-sound.cpp:757
+msgid "OSSSoundDevice::getMixerChannels: Cannot open mixer device %1"
+msgstr ""
+"OSSSoundDevice::getMixerChannels: Не могу открыть устройство микшера %1"
+
+#: oss-sound.cpp:771
+msgid ""
+"OSSSoundDevice::getMixerChannels: Cannot read mixer device mask on device %1"
+msgstr ""
+"OSSSoundDevice::getMixerChannels: не могу прочесть маску устройства микшера "
+"для устройства %1"
+
+#: oss-sound.cpp:876
+msgid "error %1 while reading volume from %2"
+msgstr "Ошибка %1 при считывании громкости с %2."
+
+#: oss-sound.cpp:899
+msgid "error %1 while setting volume to %2 on device %3"
+msgstr "Ошибка %1 при установке громкости %2 на устройстве %3."
+
+#: oss-sound.cpp:915
+msgid "Selecting recording source on device %1 failed with error code %2"
+msgstr "Выбор источника записи на устройстве %1 не удался (код ошибки %2)"
+
+#: oss-sound.cpp:921
+msgid "Reading igain volume on device %1 failed with error code %2"
+msgstr "Считывание громкости записи с устройства %1 не удалось (код ошибки %2)"
+
+#: oss-sound.cpp:928
+msgid "Setting igain volume on device %1 failed with error code %2"
+msgstr "Установка громкости записи на устройстве %1 не удалась (код ошибки %2)"
+
+#: oss-sound.cpp:986
+msgid "OSS Sound Device %1"
+msgstr "Устройство OSS: %1"
diff --git a/kradio3/plugins/radio/Makefile.am b/kradio3/plugins/radio/Makefile.am
new file mode 100644
index 0000000..2481b58
--- /dev/null
+++ b/kradio3/plugins/radio/Makefile.am
@@ -0,0 +1,18 @@
+SUBDIRS = po .
+
+INCLUDES = -I$(top_builddir)/kradio3/src -I$(top_srcdir)/kradio3 $(all_includes)
+METASOURCES = AUTO
+
+libkradio_LTLIBRARIES = libradio.la
+libradio_la_SOURCES = radio-configuration.cpp radio-configuration-ui.ui \
+ radio.cpp
+libradio_la_LDFLAGS = -module -avoid-version $(KDE_RPATH) $(all_libraries)
+
+noinst_HEADERS = radio-configuration.h radio.h
+
+#messages: rc.cpp
+# $(XGETTEXT) *.cpp *.h -o po/kradio-radio.pot
+
+messages: rc.cpp
+ $(EXTRACTRC) *.rc *.ui >> rc.cpp
+ $(XGETTEXT) rc.cpp *.h *.cpp -o po/kradio-radio.pot
diff --git a/kradio3/plugins/radio/po/Makefile.am b/kradio3/plugins/radio/po/Makefile.am
new file mode 100644
index 0000000..9fedd9c
--- /dev/null
+++ b/kradio3/plugins/radio/po/Makefile.am
@@ -0,0 +1,2 @@
+PACKAGE = kradio-radio
+POFILES = AUTO
diff --git a/kradio3/plugins/radio/po/de.po b/kradio3/plugins/radio/po/de.po
new file mode 100644
index 0000000..5f7553d
--- /dev/null
+++ b/kradio3/plugins/radio/po/de.po
@@ -0,0 +1,185 @@
+# translation of de.po to
+# translation of kradio-radio.po to
+# This file is put in the public domain.
+#
+# Ernst Martin Witte <emw@nocabal.de>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-11 18:43+0100\n"
+"PO-Revision-Date: 2006-11-06 01:18+0100\n"
+"Last-Translator: Ernst Martin Witte <emw@nocabal.de>\n"
+"Language-Team: <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. i18n: file radio-configuration-ui.ui line 28
+#: rc.cpp:3 rc.cpp:68 radio-configuration-ui.cpp:325
+#, no-c-format
+msgid "Station &Presets"
+msgstr "&Voreingestellte Sender"
+
+#. i18n: file radio-configuration-ui.ui line 53
+#: rc.cpp:6 rc.cpp:71 radio-configuration-ui.cpp:310
+#, no-c-format
+msgid "Stations"
+msgstr "Sender"
+
+#. i18n: file radio-configuration-ui.ui line 179
+#: rc.cpp:13 rc.cpp:78 radio-configuration-ui.cpp:315
+#, no-c-format
+msgid "&Search Stations"
+msgstr "&Sendersuche"
+
+#. i18n: file radio-configuration-ui.ui line 198
+#: rc.cpp:16 rc.cpp:81 radio-configuration-ui.cpp:316
+#, no-c-format
+msgid "Load"
+msgstr "Öffnen"
+
+#. i18n: file radio-configuration-ui.ui line 263
+#: rc.cpp:22 rc.cpp:87 radio-configuration-ui.cpp:318
+#, no-c-format
+msgid "Name"
+msgstr "Name"
+
+#. i18n: file radio-configuration-ui.ui line 294
+#: rc.cpp:25 rc.cpp:90 radio-configuration-ui.cpp:319
+#, no-c-format
+msgid "Short Name"
+msgstr "Kurzname"
+
+#. i18n: file radio-configuration-ui.ui line 325
+#: rc.cpp:28 rc.cpp:93 radio-configuration-ui.cpp:320
+#, no-c-format
+msgid "Pixmap File"
+msgstr "Bilddatei"
+
+#. i18n: file radio-configuration-ui.ui line 457
+#: rc.cpp:32 rc.cpp:97 radio-configuration-ui.cpp:322
+#, no-c-format
+msgid " %"
+msgstr " %"
+
+#. i18n: file radio-configuration-ui.ui line 471
+#: rc.cpp:35 rc.cpp:100 radio-configuration-ui.cpp:323
+#, no-c-format
+msgid "Volume Preset"
+msgstr "Lautstärke"
+
+#. i18n: file radio-configuration-ui.ui line 508
+#: rc.cpp:38 rc.cpp:103 radio-configuration-ui.cpp:324
+#, no-c-format
+msgid "Personal Preset File"
+msgstr "Persönliche Senderdatei"
+
+#. i18n: file radio-configuration-ui.ui line 564
+#: rc.cpp:44 rc.cpp:109 radio-configuration-ui.cpp:326
+#, no-c-format
+msgid "City"
+msgstr "Stadt"
+
+#. i18n: file radio-configuration-ui.ui line 577
+#: rc.cpp:47 rc.cpp:112 radio-configuration-ui.cpp:327
+#, no-c-format
+msgid "Country"
+msgstr "Land"
+
+#. i18n: file radio-configuration-ui.ui line 617
+#: rc.cpp:50 rc.cpp:115 radio-configuration-ui.cpp:328
+#, no-c-format
+msgid "&Now"
+msgstr "&Jetzt"
+
+#. i18n: file radio-configuration-ui.ui line 627
+#: rc.cpp:53 rc.cpp:118 radio-configuration-ui.cpp:329
+#, no-c-format
+msgid "Comment"
+msgstr "Kommentar"
+
+#. i18n: file radio-configuration-ui.ui line 640
+#: rc.cpp:56 rc.cpp:121 radio-configuration-ui.cpp:330
+#, no-c-format
+msgid "Media"
+msgstr "Medium"
+
+#. i18n: file radio-configuration-ui.ui line 648
+#: rc.cpp:59 rc.cpp:124 radio-configuration-ui.cpp:331
+#, no-c-format
+msgid "Maintainer"
+msgstr "Maintainer"
+
+#. i18n: file radio-configuration-ui.ui line 661
+#: rc.cpp:62 rc.cpp:127 radio-configuration-ui.cpp:332
+#, no-c-format
+msgid "Last Change"
+msgstr "Letzte Änderung"
+
+#. i18n: file radio-configuration-ui.ui line 698
+#: rc.cpp:65 rc.cpp:130 radio-configuration-ui.cpp:333
+#, no-c-format
+msgid ""
+"<p align=\"center\">Click on the link below to contribute this station "
+"preset file to the kradio project.</p>"
+msgstr ""
+"<p align=\"center\">Klicke auf den folgenden Link um mit deinen "
+"Senderinformationen zum KRadio-Projekt beizutragen.</p>"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Ernst Martin Witte"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "witte@kawo1.rwth-aachen.de"
+
+#: radio-configuration.cpp:350
+msgid "Image Selection"
+msgstr "Symbolauswahl"
+
+#: radio-configuration.cpp:355
+msgid "ignoring non-local image"
+msgstr "Ignoriere nicht-lokale Symbole"
+
+#: radio-configuration.cpp:450 radio-configuration.cpp:470
+msgid "KRadio Preset Files"
+msgstr "Senderdateien für KRadio"
+
+#: radio-configuration.cpp:452 radio-configuration.cpp:472
+msgid "Preset File Selection"
+msgstr "Auswahl der Senderdatei"
+
+#: radio-configuration.cpp:455
+msgid "Select Preset File"
+msgstr "Wählen Sie eine Senderdatei aus"
+
+#: radio-configuration.cpp:475
+msgid "Store Preset File"
+msgstr "Speichern der Senderdatei"
+
+#: radio.cpp:34
+msgid "Central Radio Device Multiplexer"
+msgstr "Zentraler Radio-Multiplexer"
+
+#: radio.cpp:39
+msgid "Radio Multiplexer Plugin"
+msgstr "Plugin für den Radio-Gerätemultiplexer"
+
+#: radio.cpp:116
+msgid "Radio Stations"
+msgstr "Radiosender"
+
+#: radio.cpp:117
+msgid "Setup Radio Stations"
+msgstr "Einstellung der Radiosender"
+
+#: radio.cpp:351
+msgid "unknown"
+msgstr "unbekannt"
diff --git a/kradio3/plugins/radio/po/ru.po b/kradio3/plugins/radio/po/ru.po
new file mode 100644
index 0000000..3a403db
--- /dev/null
+++ b/kradio3/plugins/radio/po/ru.po
@@ -0,0 +1,185 @@
+# translation of ru.po to
+# translation of kradio-radio.po to
+# This file is put in the public domain.
+# Алексей Кузнецов <Alexey.Kouznetsov@GMail.com>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-11 18:43+0100\n"
+"PO-Revision-Date: 2006-11-08 13:00+0300\n"
+"Last-Translator: Алексей Кузнецов <Alexey.Kouznetsov@GMail.com>\n"
+"Language-Team: <ru@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10\n"
+
+#. i18n: file radio-configuration-ui.ui line 28
+#: rc.cpp:3 rc.cpp:68 radio-configuration-ui.cpp:325
+#, no-c-format
+msgid "Station &Presets"
+msgstr "Параметры &радиостанций"
+
+#. i18n: file radio-configuration-ui.ui line 53
+#: rc.cpp:6 rc.cpp:71 radio-configuration-ui.cpp:310
+#, no-c-format
+msgid "Stations"
+msgstr "Список"
+
+#. i18n: file radio-configuration-ui.ui line 179
+#: rc.cpp:13 rc.cpp:78 radio-configuration-ui.cpp:315
+#, no-c-format
+msgid "&Search Stations"
+msgstr "&Поиск"
+
+#. i18n: file radio-configuration-ui.ui line 198
+#: rc.cpp:16 rc.cpp:81 radio-configuration-ui.cpp:316
+#, no-c-format
+msgid "Load"
+msgstr "Из файла"
+
+#. i18n: file radio-configuration-ui.ui line 263
+#: rc.cpp:22 rc.cpp:87 radio-configuration-ui.cpp:318
+#, no-c-format
+msgid "Name"
+msgstr "Название"
+
+#. i18n: file radio-configuration-ui.ui line 294
+#: rc.cpp:25 rc.cpp:90 radio-configuration-ui.cpp:319
+#, no-c-format
+msgid "Short Name"
+msgstr "Сокращённое название"
+
+#. i18n: file radio-configuration-ui.ui line 325
+#: rc.cpp:28 rc.cpp:93 radio-configuration-ui.cpp:320
+#, no-c-format
+msgid "Pixmap File"
+msgstr "Пиктограмма"
+
+#. i18n: file radio-configuration-ui.ui line 457
+#: rc.cpp:32 rc.cpp:97 radio-configuration-ui.cpp:322
+#, no-c-format
+msgid " %"
+msgstr " %"
+
+#. i18n: file radio-configuration-ui.ui line 471
+#: rc.cpp:35 rc.cpp:100 radio-configuration-ui.cpp:323
+#, no-c-format
+msgid "Volume Preset"
+msgstr "Установить громкость (-1=не менять)"
+
+#. i18n: file radio-configuration-ui.ui line 508
+#: rc.cpp:38 rc.cpp:103 radio-configuration-ui.cpp:324
+#, no-c-format
+msgid "Personal Preset File"
+msgstr "Пользовательский файл настроек"
+
+#. i18n: file radio-configuration-ui.ui line 564
+#: rc.cpp:44 rc.cpp:109 radio-configuration-ui.cpp:326
+#, no-c-format
+msgid "City"
+msgstr "Город"
+
+#. i18n: file radio-configuration-ui.ui line 577
+#: rc.cpp:47 rc.cpp:112 radio-configuration-ui.cpp:327
+#, no-c-format
+msgid "Country"
+msgstr "Страна"
+
+#. i18n: file radio-configuration-ui.ui line 617
+#: rc.cpp:50 rc.cpp:115 radio-configuration-ui.cpp:328
+#, no-c-format
+msgid "&Now"
+msgstr "&Текущее время"
+
+#. i18n: file radio-configuration-ui.ui line 627
+#: rc.cpp:53 rc.cpp:118 radio-configuration-ui.cpp:329
+#, no-c-format
+msgid "Comment"
+msgstr "Описание"
+
+#. i18n: file radio-configuration-ui.ui line 640
+#: rc.cpp:56 rc.cpp:121 radio-configuration-ui.cpp:330
+#, no-c-format
+msgid "Media"
+msgstr "Носитель"
+
+#. i18n: file radio-configuration-ui.ui line 648
+#: rc.cpp:59 rc.cpp:124 radio-configuration-ui.cpp:331
+#, no-c-format
+msgid "Maintainer"
+msgstr "Автор"
+
+#. i18n: file radio-configuration-ui.ui line 661
+#: rc.cpp:62 rc.cpp:127 radio-configuration-ui.cpp:332
+#, fuzzy, no-c-format
+msgid "Last Change"
+msgstr "Последнее изменение"
+
+#. i18n: file radio-configuration-ui.ui line 698
+#: rc.cpp:65 rc.cpp:130 radio-configuration-ui.cpp:333
+#, no-c-format
+msgid ""
+"<p align=\"center\">Click on the link below to contribute this station "
+"preset file to the kradio project.</p>"
+msgstr ""
+"<p align=\"center\"> Чтобы добавить этот файл в проект KRadio, щёлкните по "
+"ссылке ниже</p>"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Алексей Кузнецов"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "Alexey.Kouznetsov@GMail.com"
+
+#: radio-configuration.cpp:350
+msgid "Image Selection"
+msgstr "Выбор картинки"
+
+#: radio-configuration.cpp:355
+msgid "ignoring non-local image"
+msgstr "Пропускать не локальные файлы"
+
+#: radio-configuration.cpp:450 radio-configuration.cpp:470
+msgid "KRadio Preset Files"
+msgstr "Файлы KRadio"
+
+#: radio-configuration.cpp:452 radio-configuration.cpp:472
+msgid "Preset File Selection"
+msgstr "Выбор файла радиостанций"
+
+#: radio-configuration.cpp:455
+msgid "Select Preset File"
+msgstr "Выбор файла радиостанций"
+
+#: radio-configuration.cpp:475
+msgid "Store Preset File"
+msgstr "Сохранить файл радиостанций"
+
+#: radio.cpp:34
+msgid "Central Radio Device Multiplexer"
+msgstr "Главный мультиплексор устройства радио"
+
+#: radio.cpp:39
+msgid "Radio Multiplexer Plugin"
+msgstr "Модуль мультиплексирования для KRadio"
+
+#: radio.cpp:116
+msgid "Radio Stations"
+msgstr "Радиостанции"
+
+#: radio.cpp:117
+msgid "Setup Radio Stations"
+msgstr "Настройка радиостанции"
+
+#: radio.cpp:351
+msgid "unknown"
+msgstr "низвестно"
diff --git a/kradio3/plugins/radio/radio-configuration-ui.ui b/kradio3/plugins/radio/radio-configuration-ui.ui
new file mode 100644
index 0000000..eee95e9
--- /dev/null
+++ b/kradio3/plugins/radio/radio-configuration-ui.ui
@@ -0,0 +1,774 @@
+<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
+<class>RadioConfigurationUI</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>RadioConfigurationUI</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>490</width>
+ <height>348</height>
+ </rect>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QTabWidget" row="0" column="0">
+ <property name="name">
+ <cstring>tabWidget3</cstring>
+ </property>
+ <widget class="QWidget">
+ <property name="name">
+ <cstring>stations</cstring>
+ </property>
+ <attribute name="title">
+ <string>Station &amp;Presets</string>
+ </attribute>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <widget class="QLayoutWidget" row="0" column="0">
+ <property name="name">
+ <cstring>layout32</cstring>
+ </property>
+ <property name="margin" stdset="0">
+ <number>6</number>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>labelStationList</cstring>
+ </property>
+ <property name="text">
+ <string>Stations</string>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout22</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout9</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="RadioStationListView">
+ <property name="name">
+ <cstring>listStations</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout5</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>buttonNewStation</cstring>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="iconSet">
+ <iconset>"filenew2"</iconset>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>buttonDeleteStation</cstring>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="iconSet">
+ <iconset>"editdelete"</iconset>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer4</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>10</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>buttonStationUp</cstring>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="iconSet">
+ <iconset>"1uparrow"</iconset>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>buttonStationDown</cstring>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="iconSet">
+ <iconset>"1downarrow"</iconset>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout21</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>buttonSearchStations</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>1</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>1</horstretch>
+ <verstretch>1</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>&amp;Search Stations</string>
+ </property>
+ <property name="iconSet">
+ <iconset>"find"</iconset>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>buttonLoadPresets</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>1</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>1</horstretch>
+ <verstretch>1</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Load</string>
+ </property>
+ <property name="iconSet">
+ <iconset>"fileopen"</iconset>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>buttonStorePresets</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>1</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>1</horstretch>
+ <verstretch>1</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Save As</string>
+ </property>
+ <property name="iconSet">
+ <iconset>"filesaveas"</iconset>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ </vbox>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QLayoutWidget" row="0" column="1">
+ <property name="name">
+ <cstring>layout18</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QWidgetStack">
+ <property name="name">
+ <cstring>stackStationEdit</cstring>
+ </property>
+ <widget class="QWidget">
+ <property name="name">
+ <cstring>page</cstring>
+ </property>
+ <attribute name="id">
+ <number>0</number>
+ </attribute>
+ </widget>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout7</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>labelStationName</cstring>
+ </property>
+ <property name="text">
+ <string>Name</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit">
+ <property name="name">
+ <cstring>editStationName</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>5</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout32</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>labelStationShortName</cstring>
+ </property>
+ <property name="text">
+ <string>Short Name</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit">
+ <property name="name">
+ <cstring>editStationShortName</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>5</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout6</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>labelPixmapFile</cstring>
+ </property>
+ <property name="text">
+ <string>Pixmap File</string>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout5</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLineEdit">
+ <property name="name">
+ <cstring>editPixmapFile</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>5</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>buttonSelectPixmapFile</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="iconSet">
+ <iconset>"fileopen"</iconset>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout19</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>pixmapStation</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>5</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="scaledContents">
+ <bool>true</bool>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer7</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>10</width>
+ <height>5</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer4_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>10</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout20</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QSpinBox">
+ <property name="name">
+ <cstring>editVolumePreset</cstring>
+ </property>
+ <property name="suffix">
+ <string> %</string>
+ </property>
+ <property name="maxValue">
+ <number>100</number>
+ </property>
+ <property name="minValue">
+ <number>-1</number>
+ </property>
+ </widget>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>labelVolumePreset</cstring>
+ </property>
+ <property name="text">
+ <string>Volume Preset</string>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer12</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>21</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QLayoutWidget" row="1" column="0" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>layout25</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>editLabelPresetFile</cstring>
+ </property>
+ <property name="text">
+ <string>Personal Preset File</string>
+ </property>
+ </widget>
+ <widget class="KURLRequester">
+ <property name="name">
+ <cstring>editPresetFile</cstring>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ </grid>
+ </widget>
+ <widget class="QWidget">
+ <property name="name">
+ <cstring>About</cstring>
+ </property>
+ <attribute name="title">
+ <string>A&amp;bout</string>
+ </attribute>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <spacer row="5" column="1">
+ <property name="name">
+ <cstring>spacer6</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>21</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QLayoutWidget" row="0" column="0" rowspan="1" colspan="3">
+ <property name="name">
+ <cstring>layout21</cstring>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel" row="3" column="0">
+ <property name="name">
+ <cstring>labelCity</cstring>
+ </property>
+ <property name="text">
+ <string>City</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit" row="2" column="1">
+ <property name="name">
+ <cstring>editCountry</cstring>
+ </property>
+ </widget>
+ <widget class="QLabel" row="2" column="0">
+ <property name="name">
+ <cstring>labelCountry</cstring>
+ </property>
+ <property name="text">
+ <string>Country</string>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget" row="1" column="1">
+ <property name="name">
+ <cstring>layout19</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QDateTimeEdit">
+ <property name="name">
+ <cstring>editLastChange</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="focusPolicy">
+ <enum>StrongFocus</enum>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>buttonLastChangeNow</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>5</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>&amp;Now</string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLabel" row="5" column="0">
+ <property name="name">
+ <cstring>labelComment</cstring>
+ </property>
+ <property name="text">
+ <string>Comment</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit" row="5" column="1">
+ <property name="name">
+ <cstring>editComment</cstring>
+ </property>
+ </widget>
+ <widget class="QLabel" row="4" column="0">
+ <property name="name">
+ <cstring>labelMedia</cstring>
+ </property>
+ <property name="text">
+ <string>Media</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="0" column="0">
+ <property name="name">
+ <cstring>labelMaintainer</cstring>
+ </property>
+ <property name="text">
+ <string>Maintainer</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit" row="3" column="1">
+ <property name="name">
+ <cstring>editCity</cstring>
+ </property>
+ </widget>
+ <widget class="QLabel" row="1" column="0">
+ <property name="name">
+ <cstring>labelLastChange</cstring>
+ </property>
+ <property name="text">
+ <string>Last Change</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit" row="0" column="1">
+ <property name="name">
+ <cstring>editMaintainer</cstring>
+ </property>
+ </widget>
+ <widget class="QLineEdit" row="4" column="1">
+ <property name="name">
+ <cstring>editMedia</cstring>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ <spacer row="1" column="1">
+ <property name="name">
+ <cstring>spacer7_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QLabel" row="2" column="0" rowspan="1" colspan="3">
+ <property name="name">
+ <cstring>textLabel1</cstring>
+ </property>
+ <property name="text">
+ <string>&lt;p align="center"&gt;Click on the link below to contribute this station preset file to the kradio project.&lt;/p&gt;</string>
+ </property>
+ <property name="alignment">
+ <set>WordBreak|AlignCenter</set>
+ </property>
+ </widget>
+ <widget class="KURLLabel" row="4" column="1">
+ <property name="name">
+ <cstring>mailLabel</cstring>
+ </property>
+ <property name="alignment">
+ <set>AlignCenter</set>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ </widget>
+ </grid>
+</widget>
+<customwidgets>
+ <customwidget>
+ <class>RadioStationListView</class>
+ <header location="local">src/include/radiostation-listview.h</header>
+ <sizehint>
+ <width>-1</width>
+ <height>-1</height>
+ </sizehint>
+ <container>0</container>
+ <sizepolicy>
+ <hordata>5</hordata>
+ <verdata>5</verdata>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ <pixmap>image0</pixmap>
+ </customwidget>
+</customwidgets>
+<images>
+ <image name="image0">
+ <data format="XPM.GZ" length="2782">789c8dd4df53e2481007f077ff0aca7eb3ae7a4948425257f78080a2828baebbea5eddc32493c80f110414f1eafef7eb7437dcdd9cd95a478afad47ca733193af97454bb1b0e6a479f0e566bb31e67b56c6496b523fb329b6d7fffe3b73f0f0e7dbf46ff5e3dacf987bf1c1c5ead6b59ed72fe9497800b02d4f9af34cefe6be83b1e3879ebb8e5b8edb8703c743c760c8e73c7a9e389e347c799733fe7cefc83e39163e378eaf8461d68fd253b26c73c1faa637550daab9783f3bc7fbf5e0e9eafab03f57776e2677ec2fe52ba9134e2061b36e2a0ae7e2e1d78413df038ff591d8881cf3730411c18f6bc74e88761c8cd02a84ec4f8956dc8923f565b319e958efcd046b2fe451c8562ecb14d642359cfe7dd6c34bd6683e7afd5a11846ea44bd65a7944fd96fea44fd543a6ec45e2cf5eed9691cc63c8f57ea44eda9ad3a12279e9afb2309923009b87e5b9da8b9ff928c9c713e515b31f07998a0e9697f6cd4a17aab4ed49762131aae8f7c7e26dbe7dfd4bbfcf1dedc4fb0101b63e4faafe2d4579f944effb9debbdaaa9b6293a7727f569cfaea5c6dd4fc7ba6968e437eff85da6abf5c88d328b5ecbedaa84fd5b99a9f972c349ef6d35aadfd03469ce659c87e17679118b9df33bb5f3f57effaef556da4ff70a5ceb51f3b3b6b3f36c4545ff637501b31acd5b9cec762ebeb3cdf1f3d1cbbfadd9db59f3371965bb99f99d8faea953a1223f7b7cdb348fb8bdf3f7964f33c6217e272709e7fef9c667379dfb7d4468cdfd4b9da2f5d44b929647d479d8b612c2e7c35bf5f8b825c70beab8ed4776aa3be5517e2abb53b10d0608a195a77e6a33ca7732cf0014738fe288f139cfec478c499e6a7f884735ce0332e3ffcac708d2f94b2fbfc2b6ef0adf2b3c577fa9e626b9f5ff0faea71ccf3ed7d7eceeb3bd8c5133cc51e9ee1395e601f0778899ff7f3c37d7ec9ebaff01abfe00d7ec56f784be38ed6dee3f7fdfcd0a92fe306ebe8a18f0daa1c90c3cafa534a46b49326c6543ba1da97800095f57b60781f3c20a5dddc4206b6b27e0f72bae33b4a15d8850718c118c674bd8afa30c17b9852e61166d8812798c302afe1b9aa3e2ce90a2baadd410f524a4fe87b0d2fd5e70300af74e62730a3dd4c60036fd88055e5fe6f30802dbcd39e0a68d1d91cd38a0db4ff5f1f3ad4233fe807e83af5d770423d52d19f700a3d67ffd5bda91f38fb57bf3dfeccf302e7fb7e9ea1c516b671f883d1a6843e2f708133e8c38056550e18409f9ec7bf7e3df81bd372939b</data>
+ </image>
+</images>
+<tabstops>
+ <tabstop>tabWidget3</tabstop>
+ <tabstop>listStations</tabstop>
+ <tabstop>buttonNewStation</tabstop>
+ <tabstop>buttonDeleteStation</tabstop>
+ <tabstop>buttonStationUp</tabstop>
+ <tabstop>buttonStationDown</tabstop>
+ <tabstop>buttonSearchStations</tabstop>
+ <tabstop>buttonLoadPresets</tabstop>
+ <tabstop>editStationName</tabstop>
+ <tabstop>editStationShortName</tabstop>
+ <tabstop>editPixmapFile</tabstop>
+ <tabstop>buttonSelectPixmapFile</tabstop>
+ <tabstop>editVolumePreset</tabstop>
+ <tabstop>editMaintainer</tabstop>
+ <tabstop>editLastChange</tabstop>
+ <tabstop>editCountry</tabstop>
+ <tabstop>editCity</tabstop>
+ <tabstop>editMedia</tabstop>
+ <tabstop>editComment</tabstop>
+</tabstops>
+<includes>
+ <include location="global" impldecl="in implementation">kiconloader.h</include>
+ <include location="global" impldecl="in implementation">qwidgetstack.h</include>
+ <include location="global" impldecl="in implementation">src/include/radiostation-listview.h</include>
+</includes>
+<pixmapfunction>SmallIconSet</pixmapfunction>
+<layoutdefaults spacing="6" margin="0"/>
+<includehints>
+ <includehint>src/include/radiostation-listview.h</includehint>
+ <includehint>kurlrequester.h</includehint>
+ <includehint>klineedit.h</includehint>
+ <includehint>kpushbutton.h</includehint>
+</includehints>
+</UI>
diff --git a/kradio3/plugins/radio/radio-configuration.cpp b/kradio3/plugins/radio/radio-configuration.cpp
new file mode 100644
index 0000000..321d17c
--- /dev/null
+++ b/kradio3/plugins/radio/radio-configuration.cpp
@@ -0,0 +1,592 @@
+/***************************************************************************
+ radio-configuration.cpp - description
+ -------------------
+ begin : Son Aug 3 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "../../src/include/radiostation.h"
+#include "../../src/include/stationlist.h"
+#include "../../src/include/plugins.h"
+#include "../../src/include/radiodevice_interfaces.h"
+#include "../../src/include/standardscandialog.h"
+#include "../../src/include/radiostation-listview.h"
+#include "../../src/include/radiostation-config.h"
+#include "../../src/include/errorlog-interfaces.h"
+
+#include "radio-configuration.h"
+
+#include <math.h>
+
+#include <qlistbox.h>
+#include <klistbox.h>
+#include <qdatetimeedit.h>
+#include <qlineedit.h>
+#include <qlabel.h>
+#include <qspinbox.h>
+#include <qpushbutton.h>
+#include <qpopupmenu.h>
+#include <qtoolbutton.h>
+#include <qwidgetstack.h>
+#include <qimage.h>
+
+#include <kfiledialog.h>
+#include <kstandarddirs.h>
+#include <kurllabel.h>
+#include <qregexp.h>
+#include <krun.h>
+#include <kurlrequester.h>
+#include <klocale.h>
+
+RadioConfiguration::RadioConfiguration (QWidget *parent, const IErrorLogClient &logger)
+ : RadioConfigurationUI(parent),
+ ignoreChanges(false),
+ devicePopup(NULL),
+ m_logger(logger),
+ m_dirty(true)
+{
+ QObject::connect(listStations, SIGNAL(sigCurrentStationChanged(int)),
+ this, SLOT(slotStationSelectionChanged(int)));
+ QObject::connect(buttonSelectPixmapFile, SIGNAL(clicked()),
+ this, SLOT(slotSelectPixmap()));
+ QObject::connect(buttonNewStation, SIGNAL(clicked()),
+ this, SLOT(slotNewStation()));
+ QObject::connect(buttonDeleteStation, SIGNAL(clicked()),
+ this, SLOT(slotDeleteStation()));
+ QObject::connect(editPixmapFile, SIGNAL(textChanged(const QString &)),
+ this, SLOT(slotPixmapChanged(const QString &)));
+ QObject::connect(editStationName, SIGNAL(textChanged(const QString &)),
+ this, SLOT(slotStationNameChanged(const QString &)));
+ QObject::connect(editStationShortName, SIGNAL(textChanged(const QString &)),
+ this, SLOT(slotStationShortNameChanged(const QString &)));
+ QObject::connect(editVolumePreset, SIGNAL(valueChanged(int)),
+ this, SLOT(slotVolumePresetChanged(int)));
+ QObject::connect(buttonStationUp, SIGNAL(clicked()),
+ this, SLOT(slotStationUp()));
+ QObject::connect(buttonStationDown, SIGNAL(clicked()),
+ this, SLOT(slotStationDown()));
+ QObject::connect(listStations, SIGNAL(sigStationActivated(int)),
+ this, SLOT(slotActivateStation( int )));
+ QObject::connect(buttonLoadPresets, SIGNAL(clicked()),
+ this, SLOT(slotLoadPresets()));
+ QObject::connect(buttonStorePresets, SIGNAL(clicked()),
+ this, SLOT(slotStorePresets()));
+ QObject::connect(buttonLastChangeNow, SIGNAL(clicked()),
+ this, SLOT(slotLastChangeNow()));
+
+ connect(editMaintainer, SIGNAL(textChanged(const QString &)), SLOT(slotSetDirty()));
+ connect(editLastChange, SIGNAL(valueChanged(const QDateTime &)), SLOT(slotSetDirty()));
+ connect(editCountry, SIGNAL(textChanged(const QString &)), SLOT(slotSetDirty()));
+ connect(editCity, SIGNAL(textChanged(const QString &)), SLOT(slotSetDirty()));
+ connect(editMedia, SIGNAL(textChanged(const QString &)), SLOT(slotSetDirty()));
+ connect(editComment, SIGNAL(textChanged(const QString &)), SLOT(slotSetDirty()));
+ connect(editPresetFile, SIGNAL(textChanged(const QString &)), SLOT(slotSetDirty()));
+
+ mailLabel->setText("mailto:witte-presets@kawo1.rwth-aachen.de");
+ mailLabel->setURL ("mailto:witte-presets@kawo1.rwth-aachen.de");
+ QObject::connect(mailLabel, SIGNAL(leftClickedURL(const QString &)),
+ this, SLOT(slotSendPresetsByMail(const QString &)));
+
+ QObject::connect(buttonSearchStations, SIGNAL(clicked()),
+ this, SLOT(slotSearchStations0()));
+
+ devicePopup = new QPopupMenu(buttonSearchStations);
+ buttonSearchStations->setPopup(devicePopup);
+ QObject::connect(devicePopup, SIGNAL(activated(int)),
+ this, SLOT(slotSearchStations(int)));
+}
+
+
+RadioConfiguration::~RadioConfiguration ()
+{
+}
+
+
+bool RadioConfiguration::connectI (Interface *i)
+{
+ bool a = IRadioClient::connectI(i);
+ bool b = IRadioDevicePoolClient::connectI(i);
+
+ return a || b;
+}
+
+bool RadioConfiguration::disconnectI (Interface *i)
+{
+ bool a = IRadioClient::disconnectI(i);
+ bool b = IRadioDevicePoolClient::disconnectI(i);
+
+ return a || b;
+}
+
+// IRadioDevicePoolClient
+
+bool RadioConfiguration::noticeDevicesChanged(const QPtrList<IRadioDevice> &l)
+{
+ QPtrListIterator<IRadioDevice> it(l);
+ devices.clear();
+ devicePopup->clear();
+ int id = 0;
+ for (; it.current(); ++it) {
+ IRadioDevice *d = it.current();
+ if (dynamic_cast<ISeekRadio*>(d)) {
+ devicePopup->insertItem(d->getDescription(), id++);
+ devices.append(d);
+ }
+ }
+ return true;
+}
+
+
+bool RadioConfiguration::noticeDeviceDescriptionChanged(const QString &)
+{
+ noticeDevicesChanged(queryDevices());
+ return true;
+}
+
+
+// IRadioClient
+
+bool RadioConfiguration::noticeStationsChanged(const StationList &sl)
+{
+ ignoreChanges = true;
+
+ m_stations = sl;
+
+ listStations->setStations(sl);
+
+ StationListMetaData &info = m_stations.metaData();
+
+ editMaintainer->setText(info.maintainer);
+ editLastChange->setDateTime(info.lastChange);
+ editCountry->setText(info.country);
+ editCity->setText(info.city);
+ editMedia->setText(info.media);
+ editComment->setText(info.comment);
+
+ ignoreChanges = false;
+
+ slotStationSelectionChanged(listStations->currentStationIndex());
+
+ return true;
+}
+
+
+bool RadioConfiguration::noticePresetFileChanged(const QString &f)
+{
+ ignoreChanges = true;
+ editPresetFile->setURL(f);
+ ignoreChanges = false;
+ return true;
+}
+
+
+void RadioConfiguration::slotStationSelectionChanged(int idx)
+{
+ RadioStation *s = NULL;
+
+ if (idx >= 0 && idx < m_stations.count()) {
+ s = &m_stations.at(idx);
+ }
+
+ editStationName ->setDisabled(!s);
+ labelStationName ->setDisabled(!s);
+ editPixmapFile ->setDisabled(!s);
+ labelPixmapFile ->setDisabled(!s);
+ editStationShortName ->setDisabled(!s);
+ labelStationShortName ->setDisabled(!s);
+ editVolumePreset ->setDisabled(!s);
+ labelVolumePreset ->setDisabled(!s);
+ buttonSelectPixmapFile->setDisabled(!s);
+ buttonDeleteStation ->setDisabled(!s);
+
+ buttonStationUp ->setDisabled(!s || idx == 0);
+ buttonStationDown ->setDisabled(!s || idx == m_stations.count()-1);
+
+ if (ignoreChanges) return;
+ ignoreChanges = true;
+
+ editStationName ->setText (s ? s->name() : QString::null);
+ editStationShortName ->setText (s ? s->shortName() : QString::null);
+ editPixmapFile ->setText (s ? s->iconName() : QString::null);
+ editVolumePreset ->setValue (s ? (int)rint(s->initialVolume()*100) : -1);
+
+ QPixmap pixmap(s ? s->iconName() : QString::null);
+ if (!pixmap.isNull()) {
+ pixmapStation->setPixmap(pixmap);
+ } else {
+ pixmapStation->setText("");
+ }
+
+
+ stackStationEdit->setDisabled(!s);
+ if (s) {
+ RadioStationConfig *c = stationEditors.find(s->getClassName());
+ if (!c) {
+ c = s->createEditor();
+ if (c) {
+ c->reparent(this, QPoint(0,0), true);
+ QObject::connect(c, SIGNAL(changed(RadioStationConfig*)),
+ this, SLOT(slotStationEditorChanged(RadioStationConfig*)));
+ stationEditors.insert(s->getClassName(), c);
+ stackStationEdit->addWidget(c);
+ }
+ }
+ if (c) {
+ c->setStationData(*s);
+ stackStationEdit->raiseWidget(c);
+ }
+ }
+
+ ignoreChanges = false;
+}
+
+
+void RadioConfiguration::slotNewStation()
+{
+ slotSetDirty();
+ const RadioStation *st = &queryCurrentStation();
+ int n = m_stations.count();
+ m_stations.all().append(st);
+ if (m_stations.count() == n) {
+ st = st->copyNewID();
+ m_stations.all().append(st);
+ }
+ if (m_stations.count() > n) {
+ listStations->appendStation(*st);
+ listStations->setCurrentStation (listStations->count()-1);
+ slotStationSelectionChanged(listStations->count()-1);
+ listStations->ensureItemVisible(listStations->selectedItem());
+ }
+}
+
+
+void RadioConfiguration::slotDeleteStation()
+{
+ int idx = listStations->currentStationIndex();
+
+ if (idx >= 0 && idx < m_stations.count()) {
+ slotSetDirty();
+ m_stations.all().remove(idx);
+ listStations->removeStation(idx);
+ }
+}
+
+
+void RadioConfiguration::slotStationEditorChanged(RadioStationConfig *c)
+{
+ if (!c) return;
+ if (ignoreChanges) return;
+
+
+ int idx = listStations->currentStationIndex();
+ if (idx >= 0 && idx < m_stations.count()) {
+ slotSetDirty();
+ RadioStation &st = m_stations.at(idx);
+
+ ignoreChanges = true;
+ bool o = listStations->signalsBlocked();
+ listStations->blockSignals(true);
+
+ c->storeStationData(st);
+ listStations->setStation(idx, st);
+
+ listStations->blockSignals(o);
+ ignoreChanges = false;
+ }
+}
+
+
+void RadioConfiguration::slotStationNameChanged( const QString & s)
+{
+ if (ignoreChanges) return;
+
+ int idx = listStations->currentStationIndex();
+ if (idx >= 0 && idx < m_stations.count()) {
+ slotSetDirty();
+ RadioStation &st = m_stations.at(idx);
+ st.setName(s);
+ ignoreChanges = true;
+ bool o = listStations->signalsBlocked();
+ listStations->blockSignals(true);
+ listStations->setStation(idx, st);
+ listStations->blockSignals(o);
+ ignoreChanges = false;
+ }
+}
+
+
+void RadioConfiguration::slotStationShortNameChanged( const QString & sn)
+{
+ if (ignoreChanges) return;
+
+ int idx = listStations->currentStationIndex();
+ if (idx >= 0 && idx < m_stations.count()) {
+ slotSetDirty();
+ RadioStation &st = m_stations.at(idx);
+ st.setShortName(sn);
+ ignoreChanges = true;
+ bool o = listStations->signalsBlocked();
+ listStations->blockSignals(true);
+ listStations->setStation(idx, st);
+ listStations->blockSignals(o);
+ ignoreChanges = false;
+ }
+}
+
+
+void RadioConfiguration::slotSelectPixmap()
+{
+ KURL url = KFileDialog::getImageOpenURL(QString::null, this,
+ i18n("Image Selection"));
+ if (!url.isEmpty()) {
+ if (url.isLocalFile()) {
+ editPixmapFile->setText(url.path());
+ } else {
+ m_logger.logWarning(i18n("ignoring non-local image"));
+ }
+ }
+}
+
+
+void RadioConfiguration::slotPixmapChanged( const QString &s )
+{
+ if (ignoreChanges) return;
+
+ int idx = listStations->currentStationIndex();
+ if (idx >= 0 && idx < m_stations.count()) {
+ slotSetDirty();
+ RadioStation &st = m_stations.at(idx);
+ st.setIconName(s);
+ ignoreChanges = true;
+ pixmapStation->setPixmap(QPixmap(s));
+ bool o = listStations->signalsBlocked();
+ listStations->blockSignals(true);
+ listStations->setStation(idx, st);
+ listStations->blockSignals(o);
+ ignoreChanges = false;
+ }
+}
+
+
+void RadioConfiguration::slotVolumePresetChanged(int v)
+{
+ int idx = listStations->currentStationIndex();
+ if (idx >= 0 && idx < m_stations.count()) {
+ slotSetDirty();
+ RadioStation &s = m_stations.at(idx);
+ s.setInitialVolume(0.01 * (double)v);
+ }
+}
+
+
+
+void RadioConfiguration::slotStationUp()
+{
+ int idx = listStations->currentStationIndex();
+ if (idx > 0 && idx < m_stations.count()) {
+ slotSetDirty();
+ RawStationList &sl = m_stations.all();
+
+ RadioStation *st = sl.take(idx-1);
+ sl.insert(idx, st);
+ delete st;
+
+ ignoreChanges = true;
+// bool o = listStations->signalsBlocked();
+// listStations->blockSignals(true);
+ listStations->setStation(idx-1, *sl.at(idx-1));
+ listStations->setStation(idx, *sl.at(idx));
+ listStations->setCurrentStation(idx-1);
+// listStations->blockSignals(o);
+ ignoreChanges = false;
+ }
+}
+
+
+void RadioConfiguration::slotStationDown()
+{
+ int idx = listStations->currentStationIndex();
+ if (idx >= 0 && idx < m_stations.count() - 1) {
+ slotSetDirty();
+ RawStationList &sl = m_stations.all();
+
+ RadioStation *st = sl.take(idx);
+ sl.insert(idx+1, st);
+ delete st;
+
+ ignoreChanges = true;
+// bool o = listStations->signalsBlocked();
+// listStations->blockSignals(true);
+ listStations->setStation(idx, *sl.at(idx));
+ listStations->setStation(idx+1, *sl.at(idx+1));
+ listStations->setCurrentStation(idx+1);
+// listStations->blockSignals(o);
+ ignoreChanges = false;
+ }
+}
+
+
+void RadioConfiguration::slotActivateStation(int idx)
+{
+ if (idx >= 0 && idx < m_stations.count()) {
+ sendActivateStation(m_stations.at(idx));
+ sendPowerOn();
+ }
+}
+
+void RadioConfiguration::slotLoadPresets()
+{
+ KFileDialog fd(locate("data", "kradio/presets/"),
+ ("*.krp|" + i18n("KRadio Preset Files")).ascii(),
+ this,
+ i18n("Preset File Selection").ascii(),
+ true);
+ fd.setMode(KFile::File | KFile::ExistingOnly);
+ fd.setCaption (i18n("Select Preset File"));
+
+ if (fd.exec() == QDialog::Accepted) {
+ slotSetDirty();
+ StationList sl;
+ if (sl.readXML(fd.selectedURL(), m_logger)) {
+ noticeStationsChanged(sl);
+ }
+ }
+}
+
+
+void RadioConfiguration::slotStorePresets()
+{
+ KFileDialog fd("",
+ ("*.krp|" + i18n("KRadio Preset Files")).ascii(),
+ this,
+ i18n("Preset File Selection").ascii(),
+ true);
+ fd.setMode(KFile::File);
+ fd.setCaption (i18n("Store Preset File"));
+
+ if (fd.exec() == QDialog::Accepted) {
+ editPresetFile->setURL(fd.selectedURL().url());
+ m_stations.writeXML(fd.selectedURL(), m_logger);
+ }
+}
+
+
+void RadioConfiguration::slotLastChangeNow()
+{
+ slotSetDirty();
+ editLastChange->setDateTime(QDateTime::currentDateTime());
+}
+
+
+static QString &urlEscapes(QString &s)
+{
+ s.replace(QRegExp("%"), "%25");
+ s.replace(QRegExp("\t"), "%09");
+ s.replace(QRegExp("\n"), "%0A");
+ s.replace(QRegExp("\n"), "%0D");
+ s.replace(QRegExp(" "), "%20");
+ s.replace(QRegExp("\\!"), "%21");
+ s.replace(QRegExp("\""), "%22");
+ s.replace(QRegExp("#"), "%23");
+ s.replace(QRegExp("\\$"), "%24");
+ s.replace(QRegExp("\\&"), "%26");
+ s.replace(QRegExp("'"), "%27");
+ s.replace(QRegExp(","), "%2C");
+ s.replace(QRegExp(":"), "%3A");
+ s.replace(QRegExp(";"), "%3B");
+ s.replace(QRegExp("="), "%3D");
+ s.replace(QRegExp("\\?"), "%3F");
+ return s;
+}
+
+void RadioConfiguration::slotSendPresetsByMail( const QString &url )
+{
+ QString presets = m_stations.writeXML(m_logger);
+
+ urlEscapes(presets);
+
+ // documentation says, krun object deletes itself,
+ // so we do not need to store the pointer
+
+ QString country = m_stations.metaData().country;
+ QString city = m_stations.metaData().city;
+ QString location = city + "/" + country;
+ urlEscapes(location);
+
+ QString cmd = url + "?subject=station preset file for " + location + "&body=";
+
+ cmd += presets;
+ new KRun (cmd);
+}
+
+
+void RadioConfiguration::slotSearchStations(int idev)
+{
+ if (idev >= 0 && (unsigned)idev < devices.count()) {
+ IRadioDevice *dev = devices.at(idev);
+
+ StandardScanDialog *x = new StandardScanDialog(NULL);
+ x->connectI(dev); // connect device
+ x->connectI(IRadioDevicePoolClient::iConnections.at(0)); // connect radio to get verbous station information
+ sendActiveDevice(dev);
+ x->show();
+ x->start();
+ if (x->exec() == QDialog::Accepted) {
+ slotSetDirty();
+ m_stations.merge(x->getStations());
+ noticeStationsChanged(m_stations);
+ }
+ delete x;
+// logDebug("scan finished");
+ }
+// logDebug("scan finished completely");
+}
+
+
+void RadioConfiguration::slotOK()
+{
+ if (m_dirty) {
+ StationListMetaData &i = m_stations.metaData();
+
+ i.maintainer = editMaintainer->text();
+ i.lastChange = editLastChange->dateTime();
+ i.country = editCountry->text();
+ i.city = editCity->text();
+ i.media = editMedia->text();
+ i.comment = editComment->text();
+
+ sendStations(m_stations);
+ sendPresetFile(editPresetFile->url());
+ m_dirty = false;
+ }
+}
+
+void RadioConfiguration::slotCancel()
+{
+ if (m_dirty) {
+ noticeStationsChanged(queryStations());
+ noticePresetFileChanged(queryPresetFile());
+ m_dirty = false;
+ }
+}
+
+
+void RadioConfiguration::slotSetDirty()
+{
+ if (!ignoreChanges) {
+ m_dirty = true;
+ }
+}
+
+
+#include "radio-configuration.moc"
diff --git a/kradio3/plugins/radio/radio-configuration.h b/kradio3/plugins/radio/radio-configuration.h
new file mode 100644
index 0000000..31b29c8
--- /dev/null
+++ b/kradio3/plugins/radio/radio-configuration.h
@@ -0,0 +1,106 @@
+/***************************************************************************
+ radio-configuration.h - description
+ -------------------
+ begin : Son Aug 3 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_RADIO_CONFIGURATION_H
+#define KRADIO_RADIO_CONFIGURATION_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qdict.h>
+
+#include "../../src/include/radio_interfaces.h"
+#include "../../src/include/stationlist.h"
+#include "../../src/include/radiodevicepool_interfaces.h"
+#include "radio-configuration-ui.h"
+
+class QPopupMenu;
+class RadioStationConfig;
+
+class RadioConfiguration : public RadioConfigurationUI,
+ public IRadioClient,
+ public IRadioDevicePoolClient
+{
+Q_OBJECT
+public :
+ RadioConfiguration (QWidget *parent, const IErrorLogClient &m_logger);
+ ~RadioConfiguration ();
+
+ bool connectI (Interface *i);
+ bool disconnectI (Interface *i);
+
+ // IRadioDevicePoolClient
+
+RECEIVERS:
+ bool noticeActiveDeviceChanged(IRadioDevice *) { return false; }
+ bool noticeDevicesChanged(const QPtrList<IRadioDevice> &);
+ bool noticeDeviceDescriptionChanged(const QString &);
+
+ // IRadioClient
+
+RECEIVERS:
+ bool noticePowerChanged(bool /*on*/) { return false; } // don't care
+ bool noticeStationChanged (const RadioStation &, int /*idx*/) { return false; } // don't care
+ bool noticeStationsChanged(const StationList &sl);
+ bool noticePresetFileChanged(const QString &f);
+
+ bool noticeCurrentSoundStreamIDChanged(SoundStreamID /*id*/) { return false; }
+
+protected slots:
+
+ void slotStationSelectionChanged(int idx);
+ void slotNewStation();
+ void slotDeleteStation();
+ void slotStationEditorChanged(RadioStationConfig *c);
+ void slotStationNameChanged( const QString & s);
+ void slotStationShortNameChanged( const QString & sn);
+ void slotPixmapChanged( const QString &s );
+ void slotSelectPixmap();
+ void slotVolumePresetChanged(int v);
+ void slotStationUp();
+ void slotStationDown();
+ void slotActivateStation( int );
+ void slotLoadPresets();
+ void slotStorePresets();
+ void slotLastChangeNow();
+ void slotSendPresetsByMail( const QString &url );
+
+ void slotSearchStations(int i);
+ void slotSearchStations0() { slotSearchStations(0); }
+
+ void slotOK();
+ void slotCancel();
+ void slotSetDirty();
+
+
+protected:
+
+ StationList m_stations;
+ bool ignoreChanges;
+
+ QPopupMenu *devicePopup;
+ QPtrList<IRadioDevice> devices;
+
+ QDict<RadioStationConfig> stationEditors;
+
+ const IErrorLogClient &m_logger;
+ bool m_dirty;
+};
+
+#endif
+
diff --git a/kradio3/plugins/radio/radio.cpp b/kradio3/plugins/radio/radio.cpp
new file mode 100644
index 0000000..2320f56
--- /dev/null
+++ b/kradio3/plugins/radio/radio.cpp
@@ -0,0 +1,497 @@
+/***************************************************************************
+ radio.cpp - description
+ -------------------
+ begin : Sat March 29 2003
+ copyright : (C) 2003 by Klas Kalass, Ernst Martin Witte
+ email : klas@kde.org, witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "../../src/include/radiostation.h"
+#include "../../src/include/aboutwidget.h"
+#include "../../src/include/radiodevice_interfaces.h"
+#include "radio.h"
+#include "radio-configuration.h"
+
+#include <kstandarddirs.h>
+#include <kurl.h>
+#include <kaboutdata.h>
+#include <kconfig.h>
+
+#include "../../src/include/debug-profiler.h"
+
+///////////////////////////////////////////////////////////////////////
+//// plugin library functions
+
+PLUGIN_LIBRARY_FUNCTIONS(Radio, "kradio-radio", i18n("Central Radio Device Multiplexer"));
+
+/////////////////////////////////////////////////////////////////////////////
+
+Radio::Radio(const QString &name)
+ : PluginBase(name, i18n("Radio Multiplexer Plugin")),
+ IRadioDeviceClient(-1),
+ m_presetFile(locateLocal("data", "kradio/stations.krp")),
+ m_activeDevice (NULL)
+{
+}
+
+
+Radio::~Radio()
+{
+}
+
+
+bool Radio::connectI (Interface *i)
+{
+ bool a = IRadio::connectI(i);
+ bool b = IRadioDeviceClient::connectI(i);
+ bool c = IRadioDevicePool::connectI(i);
+ bool d = PluginBase::connectI(i);
+ bool e = ISoundStreamClient::connectI(i);
+
+ // no "return IA::connectI() | return IB::connnectI to
+ // prevent "early termination" optimization in boolean expressions
+ return a || b || c || d || e;
+}
+
+
+bool Radio::disconnectI (Interface *i)
+{
+ bool a = IRadio::disconnectI(i);
+ bool b = IRadioDeviceClient::disconnectI(i);
+ bool c = IRadioDevicePool::disconnectI(i);
+ bool d = PluginBase::disconnectI(i);
+ bool e = ISoundStreamClient::disconnectI(i);
+
+ // no "return IA::disconnectI() | return IB::disconnnectI to
+ // prevent "early termination" optimization in boolean expressions
+ return a || b || c || d || e;
+}
+
+
+void Radio::saveState (KConfig *config) const
+{
+ config->setGroup(QString("radio-") + name());
+
+ config->writeEntry("presetfile", m_presetFile);
+
+ m_stationList.writeXML(m_presetFile, *this);
+}
+
+
+void Radio::restoreState (KConfig *config)
+{
+ config->setGroup(QString("radio-") + name());
+
+ m_presetFile = config->readEntry("presetfile",
+ QString::null);
+ bool first_restore = false;
+ if (m_presetFile.isNull() || m_presetFile.length() == 0) {
+ m_presetFile = locateLocal("data", "kradio/stations.krp");
+ first_restore = true;
+ }
+
+ m_stationList.readXML(KURL(m_presetFile), *this, /*enable-messagebox*/ !first_restore);
+
+ notifyStationsChanged(m_stationList);
+ notifyPresetFileChanged(m_presetFile);
+}
+
+
+
+ConfigPageInfo Radio::createConfigurationPage()
+{
+ RadioConfiguration *conf = new RadioConfiguration (NULL, *this);
+ connectI (conf);
+ return ConfigPageInfo(
+ conf,
+ i18n("Radio Stations"),
+ i18n("Setup Radio Stations"),
+ "kradio"
+ );
+}
+
+
+AboutPageInfo Radio::createAboutPage()
+{
+/* KAboutData aboutData("kradio",
+ NULL,
+ NULL,
+ I18N_NOOP("Radio Device Multiplexer and Station Management for KRadio"),
+ KAboutData::License_GPL,
+ "(c) 2002-2005 Martin Witte, Klas Kalass",
+ 0,
+ "http://sourceforge.net/projects/kradio",
+ 0);
+ aboutData.addAuthor("Martin Witte", "", "witte@kawo1.rwth-aachen.de");
+ aboutData.addAuthor("Klas Kalass", "", "klas.kalass@gmx.de");
+
+ return AboutPageInfo(
+ new KRadioAboutWidget(aboutData, KRadioAboutWidget::AbtTabbed),
+ i18n("Device and Station Management"),
+ i18n("Radio Device Multiplexer and Station Management"),
+ "kradio"
+ );
+*/
+ return AboutPageInfo();
+}
+
+
+
+
+
+
+/* IRadio Interface Methods
+*/
+
+/* offer new station to current device.
+ if that does not accept, try all other devices.
+ Any device will be powered off if it does not accept the station
+*/
+
+bool Radio::activateStation (const RadioStation &rs) {
+
+ if (sendActivateStation(rs)) { // first try activeDevice
+
+ return true;
+
+ } else { // hmm... active device did not want it. Try others...
+
+ int n = 0;
+
+ for (IRadioDeviceClient::IFIterator it(IRadioDeviceClient::iConnections); it.current(); ++it) {
+
+ if (it.current()->activateStation(rs)) {
+
+ setActiveDevice(it.current()); // select new device
+ ++n;
+
+ } else {
+
+ it.current()->powerOff();
+
+ }
+ }
+
+ return n > 0;
+ }
+}
+
+
+bool Radio::activateStation(int index)
+{
+ if (index < 0 || index >= m_stationList.count())
+ return false;
+
+ return activateStation(m_stationList.at(index));
+}
+
+
+bool Radio::setStations(const StationList &sl)
+{
+ if (true/*m_stationList != sl*/) {
+ BlockProfiler("Radio::setStations");
+ m_stationList = sl;
+ notifyStationsChanged(m_stationList);
+ }
+ return true;
+}
+
+bool Radio::setPresetFile(const QString &presetFile)
+{
+ if (m_presetFile != presetFile) {
+ m_presetFile = presetFile;
+ notifyPresetFileChanged(m_presetFile);
+ }
+ return true;
+}
+
+int Radio::getStationIdx(const RadioStation &rs) const
+{
+ RawStationList &sl = const_cast<RawStationList&>(m_stationList.all());
+ return sl.find(&rs);
+}
+
+int Radio::getCurrentStationIdx() const
+{
+ return getStationIdx(getCurrentStation());
+}
+
+SoundStreamID Radio::getCurrentSoundStreamID() const
+{
+ return queryCurrentSoundStreamID();
+}
+
+
+/* IRadioDevicePool Interface Methods
+
+*/
+
+
+bool Radio::setActiveDevice(IRadioDevice *rd, bool keepPower)
+{
+ // do nothing if old == new
+ if (m_activeDevice == rd)
+ return true;
+
+ // check if new station is in "connections"
+ // special case: rd == NULL: power off active device, new active device = NULL
+
+ if (!rd || IRadioDeviceClient::iConnections.containsRef(rd)) { // new device is ok
+
+ // save old power state and power off old device
+ bool oldPowerOn = false;
+ if (m_activeDevice) {
+ oldPowerOn = m_activeDevice->isPowerOn();
+ m_activeDevice->powerOff();
+ }
+
+ // setup new active device && send notifications
+ m_activeDevice = rd;
+
+ // send notifications
+ notifyActiveDeviceChanged(m_activeDevice);
+ notifyCurrentSoundStreamIDChanged(queryCurrentSoundStreamID());
+ const RadioStation &rs = queryCurrentStation();
+ notifyStationChanged(rs, getStationIdx(rs));
+
+ if (keepPower)
+ oldPowerOn ? sendPowerOn() : sendPowerOff();
+
+ return true;
+
+ } else {
+ return false;
+ }
+}
+
+
+IRadioDevice *Radio::getActiveDevice() const
+{
+ return m_activeDevice;
+}
+
+
+const QPtrList<IRadioDevice> &Radio::getDevices() const
+{
+ return IRadioDeviceClient::iConnections;
+}
+
+
+const QString &Radio::getDeviceDescription() const
+{
+ return queryDescription();
+}
+
+
+
+/* IRadioDeviceClient Interface Methods
+
+ Many things are overwritten, particularly all sending methods
+
+*/
+
+int Radio::sendPowerOn() const
+{
+ return m_activeDevice ? m_activeDevice->powerOn() : 0;
+}
+
+
+int Radio::sendPowerOff() const
+{
+ return m_activeDevice ? m_activeDevice->powerOff() : 0;
+}
+
+int Radio::sendActivateStation (const RadioStation &rs) const
+{
+ return m_activeDevice ? m_activeDevice->activateStation(rs) : 0;
+}
+
+
+
+bool Radio::queryIsPowerOn() const
+{
+ return m_activeDevice ? m_activeDevice->isPowerOn() : false;
+}
+
+
+bool Radio::queryIsPowerOff() const
+{
+ return m_activeDevice ? m_activeDevice->isPowerOff() : true;
+}
+
+
+const RadioStation & Radio::queryCurrentStation() const
+{
+ if (m_activeDevice) {
+ RadioStation &rs = const_cast<RadioStation&>(m_activeDevice->getCurrentStation());
+ int idx = getStationIdx(rs);
+
+ if (idx >= 0) {
+ rs.copyDescriptionFrom(m_stationList.at(idx));
+ } else {
+ rs.copyDescriptionFrom(undefinedRadioStation);
+ }
+
+ return rs;
+ } else {
+ return undefinedRadioStation;
+ }
+}
+
+
+static QString qstrUnknown(I18N_NOOP("unknown"));
+static QString i18nqstrUnknown;
+const QString &Radio::queryDescription() const
+{
+ return m_activeDevice ? m_activeDevice->getDescription() : (i18nqstrUnknown = i18n(qstrUnknown.ascii()));
+}
+
+
+
+bool Radio::noticePowerChanged (bool on, const IRadioDevice *sender)
+{
+ if (on) {
+ setActiveDevice(const_cast<IRadioDevice*>(sender), false);
+ // false: do not set power state on new device
+ // constcast valid because power-state of sender is not changed
+ notifyPowerChanged(true);
+ return true;
+
+ } else {
+ if (sender == m_activeDevice) {
+ sendStopCountdown();
+ notifyPowerChanged(false);
+ return true;
+ }
+ return false;
+ }
+}
+
+
+bool Radio::noticeStationChanged (const RadioStation &_rs, const IRadioDevice *sender)
+{
+ RadioStation &rs = const_cast<RadioStation&>(_rs);
+ int idx = getStationIdx(rs);
+
+ RadioStation &known = (idx >= 0) ? (RadioStation&)m_stationList.at(idx) :
+ (RadioStation&)undefinedRadioStation;
+ rs.copyDescriptionFrom(known);
+
+ if (sender == m_activeDevice)
+ notifyStationChanged(rs, idx);
+ return true;
+}
+
+
+bool Radio::noticeDescriptionChanged (const QString &s, const IRadioDevice *sender)
+{
+ if (sender == m_activeDevice)
+ notifyDeviceDescriptionChanged(s);
+ return true;
+}
+
+
+bool Radio::noticeCurrentSoundStreamIDChanged(SoundStreamID id, const IRadioDevice *sender)
+{
+ if (sender == m_activeDevice)
+ notifyCurrentSoundStreamIDChanged(id);
+ return true;
+}
+
+
+SoundStreamID Radio::queryCurrentSoundStreamID() const
+{
+ return m_activeDevice ? m_activeDevice->getCurrentSoundStreamID() : SoundStreamID::InvalidID;
+}
+
+
+
+void Radio::noticeConnectedI(IRadioDeviceClient::cmplInterface *dev, bool pointer_valid)
+{
+ IRadioDeviceClient::noticeConnectedI(dev, pointer_valid);
+
+ if (! m_activeDevice && pointer_valid)
+ setActiveDevice (dev, false);
+
+ notifyDevicesChanged(IRadioDeviceClient::iConnections);
+}
+
+
+void Radio::noticeDisconnectI(IRadioDeviceClient::cmplInterface *rd, bool pointer_valid)
+{
+ IRadioDeviceClient::noticeDisconnectI(rd, pointer_valid);
+
+ if (rd == m_activeDevice) {
+
+ // search a new active device
+ if (IRadioDeviceClient::iConnections.findRef(rd) >= 0) {
+
+ IRadioDevice *new_rd = NULL;
+
+ new_rd = IRadioDeviceClient::iConnections.next(); // choose next device as active device if next exists
+ if (!new_rd) {
+ IRadioDeviceClient::iConnections.findRef(rd);
+ new_rd = IRadioDeviceClient::iConnections.prev(); // otherwise try prev then, may be NULL (no connections)
+ }
+ setActiveDevice(new_rd);
+
+ } else {
+ // strange error occurred, m_activeDevice not in connections... set to first.
+
+ setActiveDevice(IRadioDeviceClient::iConnections.first());
+ }
+ }
+ notifyDevicesChanged(IRadioDeviceClient::iConnections);
+}
+
+
+// ITimeControlClient
+
+bool Radio::noticeAlarm(const Alarm &a)
+{
+ if (a.alarmType() == Alarm::StartPlaying ||
+ a.alarmType() == Alarm::StartRecording)
+ {
+ const RawStationList &sl = getStations().all();
+ const RadioStation &rs = sl.stationWithID(a.stationID());
+ activateStation(rs);
+ powerOn();
+
+ if (a.volumePreset() >= 0)
+ sendPlaybackVolume(getCurrentSoundStreamID(), a.volumePreset());
+
+ SoundStreamID id = getCurrentSoundStreamID();
+ bool r = false;
+ SoundFormat sf;
+ queryIsRecordingRunning(id, r, sf);
+ if (a.alarmType() == Alarm::StartRecording && !r)
+ sendStartRecording(id);
+
+ } else {
+ powerOff();
+ }
+ return true;
+}
+
+
+bool Radio::noticeCountdownZero()
+{
+ powerOff();
+ return true;
+}
+
+
+void Radio::aboutToQuit()
+{
+ sendPowerOff();
+}
+
diff --git a/kradio3/plugins/radio/radio.h b/kradio3/plugins/radio/radio.h
new file mode 100644
index 0000000..7913c16
--- /dev/null
+++ b/kradio3/plugins/radio/radio.h
@@ -0,0 +1,167 @@
+/***************************************************************************
+ radio.h - description
+ -------------------
+ begin : Sat March 29 2003
+ copyright : (C) 2003 by Klas Kalass, Ernst Martin Witte
+ email : klas@kde.org, witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_RADIO_H
+#define KRADIO_RADIO_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+
+#include "../../src/include/radio_interfaces.h"
+#include "../../src/include/radiodevicepool_interfaces.h"
+#include "../../src/include/radiodevice_interfaces.h"
+#include "../../src/include/timecontrol_interfaces.h"
+#include "../../src/include/soundstreamclient_interfaces.h"
+#include "../../src/include/stationlist.h"
+#include "../../src/include/plugins.h"
+
+/**
+ * The main Radio class, which is used as the interface of the radio functionality
+ * to the GUI parts of the application
+ * @author Klas Kalass, Ernst Martin Witte
+ */
+
+/////////////////////////////////////////////////////////////////////////////
+
+/* A class, that is able to manage more than one radio device, one of those
+ is active at a time. This class behaves represents the active device,
+ the active devices can be changed either by selecting a station or by
+ explicitly changing the devices.
+
+ At any time a valid active device exists as long as any device is connected.
+
+*/
+
+class Radio : public PluginBase,
+ public IRadio,
+ public IRadioDevicePool,
+ public IRadioDeviceClient,
+ public ITimeControlClient,
+ public ISoundStreamClient
+{
+public:
+ Radio(const QString &name);
+ ~Radio();
+
+
+ // PluginBase
+
+public:
+ virtual void saveState (KConfig *) const;
+ virtual void restoreState (KConfig *);
+
+ virtual QString pluginClassName() const { return "Radio"; }
+
+ virtual const QString &name() const { return PluginBase::name(); }
+ virtual QString &name() { return PluginBase::name(); }
+
+ virtual ConfigPageInfo createConfigurationPage();
+ virtual AboutPageInfo createAboutPage();
+
+ virtual void aboutToQuit();
+
+ // IRadio methods
+
+RECEIVERS:
+ bool powerOn() { return sendPowerOn() > 0; }
+ bool powerOff() { return sendPowerOff() > 0; }
+ bool activateStation(const RadioStation &rs);
+ bool activateStation(int index);
+ bool setStations(const StationList &sl);
+ bool setPresetFile(const QString &presetFile);
+
+ANSWERS:
+ bool isPowerOn() const { return queryIsPowerOn(); }
+ bool isPowerOff() const { return queryIsPowerOff(); }
+ const RadioStation & getCurrentStation() const { return queryCurrentStation(); }
+ int getStationIdx(const RadioStation &) const;
+ int getCurrentStationIdx() const;
+ const StationList & getStations() const { return m_stationList; }
+ const QString & getPresetFile() const { return m_presetFile; }
+
+ SoundStreamID getCurrentSoundStreamID() const;
+
+
+public:
+ bool connectI (Interface *i);
+ bool disconnectI (Interface *i);
+
+ void noticeConnectedI (IRadioDeviceClient::cmplInterface *i, bool pointer_valid);
+ void noticeDisconnectI(IRadioDeviceClient::cmplInterface *i, bool pointer_valid);
+
+ // IRadioDevicePool methods
+
+RECEIVERS:
+ bool setActiveDevice(IRadioDevice *rd, bool keepPower = true);
+
+ANSWERS:
+ IRadioDevice * getActiveDevice() const;
+ const QPtrList<IRadioDevice> & getDevices() const;
+ const QString & getDeviceDescription() const;
+
+
+
+ // IRadioDeviceClient methods, even sending methods overwritten
+ // to provide "1-of-N" functionality
+
+SENDERS:
+ IF_SENDER ( sendPowerOn() )
+ IF_SENDER ( sendPowerOff() )
+ IF_SENDER ( sendActivateStation (const RadioStation &rs) )
+
+QUERIES:
+ IF_QUERY ( bool queryIsPowerOn() )
+ IF_QUERY ( bool queryIsPowerOff() )
+ IF_QUERY ( const RadioStation & queryCurrentStation() )
+ IF_QUERY ( const QString & queryDescription() )
+ IF_QUERY ( SoundStreamID queryCurrentSoundStreamID() )
+
+RECEIVERS:
+ virtual bool noticePowerChanged (bool on, const IRadioDevice *sender = NULL);
+ virtual bool noticeStationChanged (const RadioStation &rs, const IRadioDevice *sender = NULL);
+ virtual bool noticeDescriptionChanged (const QString &, const IRadioDevice *sender = NULL);
+
+ virtual bool noticeCurrentSoundStreamIDChanged(SoundStreamID id, const IRadioDevice *sender = NULL);
+
+ // ITimeControlClient
+
+RECEIVERS:
+ bool noticeAlarmsChanged(const AlarmVector &) { return false; } // ignore
+ bool noticeAlarm(const Alarm &);
+ bool noticeNextAlarmChanged(const Alarm *) { return false; } // ignore
+ bool noticeCountdownStarted(const QDateTime &/*end*/){ return false; } // ignore
+ bool noticeCountdownStopped() { return false; } // ignore
+ bool noticeCountdownZero();
+ bool noticeCountdownSecondsChanged(int /*n*/) { return false; } // ignore
+
+ // ISoundStreamClient
+
+RECEIVERS:
+
+ // ...
+
+protected:
+
+ QString m_presetFile;
+ StationList m_stationList;
+ IRadioDevice *m_activeDevice;
+};
+
+
+#endif
diff --git a/kradio3/plugins/recording/Makefile.am b/kradio3/plugins/recording/Makefile.am
new file mode 100644
index 0000000..1cbd6aa
--- /dev/null
+++ b/kradio3/plugins/recording/Makefile.am
@@ -0,0 +1,22 @@
+SUBDIRS = po icons .
+
+INCLUDES = $(all_includes)
+METASOURCES = AUTO
+
+libkradio_LTLIBRARIES = librecording.la
+librecording_la_SOURCES = recording-configuration.cpp \
+ recording-configuration-ui.ui recording.cpp recording-config.cpp reccfg_interfaces.cpp encoder.cpp \
+ recording-datamonitor.cpp recording-monitor.cpp encoder_mp3.cpp encoder_ogg.cpp encoder_pcm.cpp
+librecording_la_LDFLAGS = -module -avoid-version $(KDE_RPATH) $(all_libraries)
+librecording_la_LIBADD = $(LIB_OGG) $(LIB_LAME)
+
+noinst_HEADERS = recording-configuration.h recording.h recording-config.h \
+ reccfg_interfaces.h encoder.h soundstreamevent.h recording-datamonitor.h \
+ recording-monitor.h encoder_mp3.h encoder_ogg.h encoder_pcm.h
+
+#messages: rc.cpp
+# $(XGETTEXT) *.cpp *.h -o po/kradio-recording.pot
+
+messages: rc.cpp
+ $(EXTRACTRC) *.rc *.ui >> rc.cpp
+ $(XGETTEXT) rc.cpp *.h *.cpp -o po/kradio-recording.pot
diff --git a/kradio3/plugins/recording/encoder.cpp b/kradio3/plugins/recording/encoder.cpp
new file mode 100644
index 0000000..b33a8c3
--- /dev/null
+++ b/kradio3/plugins/recording/encoder.cpp
@@ -0,0 +1,172 @@
+/***************************************************************************
+ encoder.cpp - description
+ -------------------
+ begin : Thu May 05 2005
+ copyright : (C) 2005 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "../../src/include/radiostation.h"
+#include "../../src/include/errorlog-interfaces.h"
+#include "../../src/include/aboutwidget.h"
+
+#include "recording.h"
+#include "recording-configuration.h"
+#include "soundstreamevent.h"
+
+#include <qsocketnotifier.h>
+#include <qevent.h>
+#include <qapplication.h>
+#include <qregexp.h>
+
+#include <kconfig.h>
+#include <kdeversion.h>
+#include <klocale.h>
+
+RecordingEncoding::RecordingEncoding(QObject *parent, SoundStreamID ssid,
+ const RecordingConfig &cfg, const RadioStation *rs,
+ const QString &filename)
+ :
+ m_parent(parent),
+ m_config(cfg),
+ m_RadioStation(rs ? rs->copy() : NULL),
+ m_SoundStreamID(ssid),
+ m_error(false),
+ m_errorString(QString::null),
+ m_done(false),
+ m_InputBuffers(m_config.m_EncodeBufferCount < 3 ? 3 : m_config.m_EncodeBufferCount,
+ m_config.m_EncodeBufferSize < 4096 ? 4096 : m_config.m_EncodeBufferSize),
+ m_buffersMetaData(NULL),
+ m_encodedSize(0),
+ m_InputStartTime(0),
+ m_InputStartPosition(0),
+ m_outputURL(filename)
+{
+
+ if (m_config.m_EncodeBufferCount < 3)
+ m_config.m_EncodeBufferCount = 3;
+ if (m_config.m_EncodeBufferSize < 4096)
+ m_config.m_EncodeBufferSize = 4096;
+
+ m_buffersMetaData = new QPtrList<BufferSoundMetaData> *[m_config.m_EncodeBufferCount];
+ for (size_t i = 0; i < m_config.m_EncodeBufferCount; ++i) {
+ m_buffersMetaData [i] = new QPtrList<BufferSoundMetaData>;
+ m_buffersMetaData [i]->setAutoDelete(true);
+ }
+}
+
+
+RecordingEncoding::~RecordingEncoding()
+{
+ for (size_t i = 0; i < m_config.m_EncodeBufferCount; ++i) {
+ delete m_buffersMetaData[i];
+ }
+ delete m_buffersMetaData;
+ delete m_RadioStation;
+}
+
+
+char *RecordingEncoding::lockInputBuffer(size_t &bufferSize)
+{
+ if (m_done || m_error)
+ return NULL;
+ char * retval = m_InputBuffers.lockWriteBuffer(bufferSize);
+
+ m_error |= m_InputBuffers.hasError();
+ m_errorString += m_InputBuffers.getErrorString();
+ m_InputBuffers.resetError();
+
+ return retval;
+}
+
+
+void RecordingEncoding::unlockInputBuffer(size_t bufferSize, const SoundMetaData &md)
+{
+ if (m_done)
+ return;
+ size_t bufidx = m_InputBuffers.getCurrentWriteBufferIdx();
+ size_t buffill = m_InputBuffers.getWriteBufferFill();
+ m_InputBuffers.unlockWriteBuffer(bufferSize);
+
+ if (!m_InputBuffers.hasError()) {
+ if (!m_InputStartTime) {
+ m_InputStartTime = md.absoluteTimestamp();
+ m_InputStartPosition = md.position();
+ }
+ BufferSoundMetaData *bmd = new BufferSoundMetaData(
+ md.position() - m_InputStartPosition,
+ md.absoluteTimestamp() - m_InputStartTime,
+ md.absoluteTimestamp(),
+ md.url(),
+ buffill);
+ m_buffersMetaData[bufidx]->append(bmd);
+ } else {
+ m_error = true;
+ m_errorString += m_InputBuffers.getErrorString();
+ m_InputBuffers.resetError();
+ }
+}
+
+
+void RecordingEncoding::setDone()
+{
+ m_done = true;
+ m_InputBuffers.unlockAllWriteBuffers();
+}
+
+
+
+void RecordingEncoding::run()
+{
+ BufferSoundMetaData last_md;
+
+ while (!m_error) {
+ char *buffer = NULL;
+ size_t buffer_fill = 0;
+ if (!m_done) {
+ buffer = m_InputBuffers.wait4ReadBuffer(buffer_fill);
+ }
+
+ if (!buffer_fill) {
+ if (m_done)
+ break;
+ else
+ continue;
+ }
+
+ char *export_buffer = NULL;
+ size_t export_buffer_size = 0;
+
+ Q_UINT64 old_pos = m_encodedSize;
+
+ encode(buffer, buffer_fill, export_buffer, export_buffer_size);
+
+ SoundStreamEncodingStepEvent *step_event = NULL;
+
+ if (!m_error) {
+ last_md = *m_buffersMetaData[m_InputBuffers.getCurrentReadBufferIdx()]->first();
+ SoundMetaData md(old_pos, last_md.relativeTimestamp(), last_md.absoluteTimestamp(), m_outputURL);
+ step_event = new SoundStreamEncodingStepEvent(m_SoundStreamID, export_buffer, export_buffer_size, md);
+ }
+
+ if (step_event)
+ QApplication::postEvent(m_parent, step_event);
+ }
+ m_done = true;
+ closeOutput();
+
+ SoundMetaData md(m_encodedSize, last_md.relativeTimestamp(), last_md.absoluteTimestamp(), m_outputURL);
+ QApplication::postEvent(m_parent, new SoundStreamEncodingStepEvent(m_SoundStreamID, NULL, 0, md));
+
+ QApplication::postEvent(m_parent, new SoundStreamEncodingTerminatedEvent(m_SoundStreamID));
+}
+
diff --git a/kradio3/plugins/recording/encoder.h b/kradio3/plugins/recording/encoder.h
new file mode 100644
index 0000000..271cf83
--- /dev/null
+++ b/kradio3/plugins/recording/encoder.h
@@ -0,0 +1,101 @@
+/***************************************************************************
+ encoder.h - description
+ -------------------
+ begin : Thu May 05 2005
+ copyright : (C) 2005 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_RECORDING_ENCODER_H
+#define KRADIO_RECORDING_ENCODER_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+
+#include <qobject.h>
+#include <qstring.h>
+#include <qthread.h>
+
+#include "../../src/include/radiostation.h"
+#include "../../src/include/multibuffer.h"
+#include "../../src/include/sound_metadata.h"
+#include "../../src/include/soundstreamid.h"
+#include "recording-config.h"
+
+class BufferSoundMetaData : public SoundMetaData
+{
+public:
+ BufferSoundMetaData()
+ : SoundMetaData(0, 0, 0, KURL()), m_BufferPosition(0) {}
+ BufferSoundMetaData(const SoundMetaData &md, size_t bufferpos)
+ : SoundMetaData(md), m_BufferPosition(bufferpos) {}
+ BufferSoundMetaData(Q_INT64 pos, time_t rel, time_t abs, const KURL &url, size_t bufferpos)
+ : SoundMetaData(pos, rel, abs, url), m_BufferPosition(bufferpos) {}
+
+ size_t bufferPosition() const { return m_BufferPosition; }
+
+protected:
+ size_t m_BufferPosition;
+};
+
+
+class RecordingEncoding : public QThread
+{
+public:
+ RecordingEncoding(QObject *parent, SoundStreamID id, const RecordingConfig &cfg, const RadioStation *rs, const QString &filename);
+ virtual ~RecordingEncoding();
+
+ void run();
+
+ char *lockInputBuffer(size_t &bufferSize); // bytes we whish to write, returns number of bytes available
+ void unlockInputBuffer(size_t bufferSize, const SoundMetaData &md); // bytes we actually wrote
+
+ bool error() const { return m_error; }
+ const QString &errorString() const { return m_errorString; }
+
+ void setDone();
+ bool IsDone() { return m_done; }
+
+ virtual bool openOutput(const QString &outputFile) = 0;
+ virtual void closeOutput() = 0;
+
+ Q_UINT64 encodedSize() const { return m_encodedSize; }
+
+ const RecordingConfig &config() const { return m_config; }
+
+protected:
+ virtual void encode(const char *_buffer, size_t buffer_size, char *&export_buffer, size_t &export_buffer_size) = 0;
+
+ QObject *m_parent;
+ RecordingConfig m_config;
+ RadioStation *m_RadioStation;
+ SoundStreamID m_SoundStreamID;
+
+ bool m_error;
+ QString m_errorString;
+ bool m_done;
+
+ MultiBuffer m_InputBuffers;
+ QPtrList<BufferSoundMetaData>
+ **m_buffersMetaData;
+ Q_UINT64 m_encodedSize;
+
+ time_t m_InputStartTime;
+ Q_UINT64 m_InputStartPosition;
+
+ KURL m_outputURL;
+};
+
+
+#endif
diff --git a/kradio3/plugins/recording/encoder_mp3.cpp b/kradio3/plugins/recording/encoder_mp3.cpp
new file mode 100644
index 0000000..5ba0bc2
--- /dev/null
+++ b/kradio3/plugins/recording/encoder_mp3.cpp
@@ -0,0 +1,214 @@
+/***************************************************************************
+ encoder_mp3.cpp
+ -------------------
+ begin : Sat Aug 20 2005
+ copyright : (C) 2005 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "encoder_mp3.h"
+
+#include <qmutex.h>
+#include <klocale.h>
+
+RecordingEncodingMP3::RecordingEncodingMP3(QObject *parent, SoundStreamID ssid,
+ const RecordingConfig &cfg, const RadioStation *rs,
+ const QString &filename)
+ : RecordingEncoding(parent, ssid, cfg, rs, filename)
+#ifdef HAVE_LAME
+ ,
+ m_MP3Buffer(NULL),
+ m_MP3BufferSize(0),
+ m_MP3Output(NULL),
+ m_ID3Tags(NULL),
+ m_LAMEFlags(NULL),
+ m_MP3LBuffer(NULL),
+ m_MP3RBuffer(NULL)
+#endif
+{
+ m_config.m_OutputFormat = RecordingConfig::outputMP3;
+ m_config.m_SoundFormat.m_Encoding = "mp3";
+ openOutput(filename);
+}
+
+
+RecordingEncodingMP3::~RecordingEncodingMP3()
+{
+ closeOutput();
+}
+
+
+static QMutex lameSerialization;
+
+void RecordingEncodingMP3::encode(const char *_buffer, size_t buffer_size, char *&export_buffer, size_t &export_buffer_size)
+{
+ if (m_error)
+ return;
+
+#ifdef HAVE_LAME
+ short int *buffer = (short int*)_buffer;
+ size_t j = 0,
+ j_inc = (m_config.m_SoundFormat.m_Channels == 1) ? 1 : 2,
+ dj = (m_config.m_SoundFormat.m_Channels == 1) ? 0 : 1,
+ samples = buffer_size / m_config.m_SoundFormat.frameSize();
+
+ for (size_t i = 0; i < samples; ++i, j+=j_inc) {
+ m_MP3LBuffer[i] = buffer[j];
+ m_MP3RBuffer[i] = buffer[j+dj];
+ }
+
+ int n = 0;
+ lameSerialization.lock();
+ n = lame_encode_buffer(m_LAMEFlags,
+ m_MP3LBuffer,
+ m_MP3RBuffer,
+ samples,
+ m_MP3Buffer,
+ m_MP3BufferSize);
+ lameSerialization.unlock();
+ if (n < 0) {
+ m_errorString += i18n("Error %1 while encoding mp3. ").arg(QString().setNum(n));
+ m_error = true;
+ } else if (n > 0) {
+ m_encodedSize += n;
+
+ export_buffer = (char*)m_MP3Buffer;
+ export_buffer_size = n;
+ int r = fwrite(m_MP3Buffer, 1, n, m_MP3Output);
+
+ if (r <= 0) {
+ m_errorString += i18n("Error %1 writing output. ").arg(QString().setNum(r));
+ m_error = true;
+ }
+ }
+#endif
+}
+
+
+
+bool RecordingEncodingMP3::openOutput(const QString &output)
+{
+#ifdef HAVE_LAME
+// m_output = NULL;
+ m_LAMEFlags = lame_init();
+
+ if (!m_LAMEFlags) {
+ m_error = true;
+ m_errorString += i18n("Cannot initialize lalibmp3lame. ");
+ } else {
+ lame_set_in_samplerate(m_LAMEFlags, m_config.m_SoundFormat.m_SampleRate);
+ lame_set_num_channels(m_LAMEFlags, 2);
+ //lame_set_quality(m_LAMEFlags, m_config.mp3Quality);
+
+ lame_set_mode(m_LAMEFlags, m_config.m_SoundFormat.m_Channels == 1 ? MONO : JOINT_STEREO);
+
+ // lame_seterrorf(m_LAMEFlags, ...);
+ // lame_setdebugf(m_LAMEFlags, ...);
+ // lame_setmsgf(m_LAMEFlags, ...);
+
+ lame_set_VBR(m_LAMEFlags, vbr_default);
+ lame_set_VBR_q(m_LAMEFlags, m_config.m_mp3Quality);
+
+ if (lame_init_params(m_LAMEFlags) < 0) {
+ m_error = true;
+ m_errorString += i18n("Cannot initialize libmp3lame parameters. ").arg(output);
+ }
+
+ if (!m_error) {
+ id3tag_init(m_LAMEFlags);
+ id3tag_add_v2(m_LAMEFlags);
+ QString title = m_RadioStation->name() + QString().sprintf(" - %s", (QDateTime::currentDateTime().toString(Qt::ISODate)).ascii());
+ QString comment = i18n("Recorded by KRadio");
+ size_t l = title.length() + comment.length() + 10;
+ m_ID3Tags = new char[l];
+ char *ctitle = m_ID3Tags;
+ strcpy(ctitle, title.latin1());
+ char *ccomment = m_ID3Tags + strlen(ctitle) + 1;
+ strcpy(ccomment, comment.latin1());
+ id3tag_set_title(m_LAMEFlags, ctitle);
+ id3tag_set_comment(m_LAMEFlags, ccomment);
+ }
+
+ m_MP3Output = fopen(output.ascii(), "wb+");
+ if (!m_MP3Output) {
+ m_errorString += i18n("Cannot open output file %1. ").arg(output);
+ m_error = true;
+ }
+
+ size_t nSamples = m_config.m_EncodeBufferSize / m_config.m_SoundFormat.frameSize();
+ m_MP3BufferSize = nSamples + nSamples / 4 + 7200;
+ m_MP3Buffer = new unsigned char[m_MP3BufferSize];
+
+ m_MP3LBuffer = new short int[nSamples];
+ m_MP3RBuffer = new short int[nSamples];
+
+ if (!m_MP3Buffer || !m_MP3LBuffer || !m_MP3RBuffer) {
+ m_error = true;
+ m_errorString += i18n("Cannot allocate buffers for mp3 encoding. ");
+ }
+ }
+
+ if (m_error) {
+ if (m_LAMEFlags) lame_close(m_LAMEFlags);
+ m_LAMEFlags = NULL;
+ if (m_MP3Output) fclose(m_MP3Output);
+ m_MP3Output = NULL;
+ if (m_MP3Buffer) delete [] m_MP3Buffer;
+ m_MP3Buffer = NULL;
+ m_MP3BufferSize = 0;
+ if (m_ID3Tags) delete [] m_ID3Tags;
+ m_ID3Tags = NULL;
+ if (m_MP3LBuffer) delete[] m_MP3LBuffer;
+ if (m_MP3RBuffer) delete[] m_MP3RBuffer;
+ m_MP3LBuffer = m_MP3RBuffer = NULL;
+ }
+#endif
+ return !m_error;
+}
+
+
+void RecordingEncodingMP3::closeOutput()
+{
+#ifdef HAVE_LAME
+ if (m_LAMEFlags) {
+ if (m_config.m_OutputFormat == RecordingConfig::outputMP3) {
+ int n = lame_encode_flush(m_LAMEFlags,
+ m_MP3Buffer,
+ m_MP3BufferSize);
+ if (n < 0) {
+ m_error = true;
+ m_errorString += i18n("Error %1 while encoding mp3. ").arg(QString().setNum(n));
+ } else if (n > 0) {
+ int r = fwrite(m_MP3Buffer, 1, n, m_MP3Output);
+ if (r <= 0) {
+ m_error = true;
+ m_errorString += i18n("Error %1 writing output. ").arg(QString().setNum(r));
+ } else {
+ lame_mp3_tags_fid(m_LAMEFlags, m_MP3Output);
+ }
+ }
+ }
+ if (m_LAMEFlags) lame_close(m_LAMEFlags);
+ m_LAMEFlags = NULL;
+ if (m_MP3Output) fclose(m_MP3Output);
+ m_MP3Output = NULL;
+ m_MP3BufferSize = 0;
+ if (m_MP3Buffer) delete [] m_MP3Buffer;
+ m_MP3Buffer = NULL;
+ if (m_ID3Tags) delete [] m_ID3Tags;
+ m_ID3Tags = NULL;
+ if (m_MP3LBuffer) delete[] m_MP3LBuffer;
+ if (m_MP3RBuffer) delete[] m_MP3RBuffer;
+ m_MP3LBuffer = m_MP3RBuffer = NULL;
+ }
+#endif
+}
diff --git a/kradio3/plugins/recording/encoder_mp3.h b/kradio3/plugins/recording/encoder_mp3.h
new file mode 100644
index 0000000..2a41832
--- /dev/null
+++ b/kradio3/plugins/recording/encoder_mp3.h
@@ -0,0 +1,56 @@
+/***************************************************************************
+ encoder_mp3.h
+ -------------------
+ begin : Sat Aug 20 2005
+ copyright : (C) 2005 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_RECORDING_ENCODER_MP3_H
+#define KRADIO_RECORDING_ENCODER_MP3_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "encoder.h"
+
+#ifdef HAVE_LAME
+ #include <lame/lame.h>
+#endif
+
+class RecordingEncodingMP3 : public RecordingEncoding
+{
+public:
+ RecordingEncodingMP3(QObject *parent, SoundStreamID id, const RecordingConfig &cfg, const RadioStation *rs, const QString &filename);
+ virtual ~RecordingEncodingMP3();
+
+ bool openOutput(const QString &outputFile);
+ void closeOutput();
+
+protected:
+ void encode(const char *_buffer, size_t buffer_size, char *&export_buffer, size_t &export_buffer_size);
+
+#ifdef HAVE_LAME
+ unsigned char *m_MP3Buffer;
+ size_t m_MP3BufferSize;
+ FILE *m_MP3Output;
+ char *m_ID3Tags;
+ lame_global_flags *m_LAMEFlags;
+ short int *m_MP3LBuffer,
+ *m_MP3RBuffer;
+#endif
+};
+
+
+
+#endif
diff --git a/kradio3/plugins/recording/encoder_ogg.cpp b/kradio3/plugins/recording/encoder_ogg.cpp
new file mode 100644
index 0000000..e3db6cc
--- /dev/null
+++ b/kradio3/plugins/recording/encoder_ogg.cpp
@@ -0,0 +1,250 @@
+/***************************************************************************
+ encoder_ogg.cpp
+ -------------------
+ begin : Sat Aug 20 2005
+ copyright : (C) 2005 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "encoder_ogg.h"
+
+#include <klocale.h>
+#include <stdlib.h>
+
+RecordingEncodingOgg::RecordingEncodingOgg(QObject *parent, SoundStreamID ssid,
+ const RecordingConfig &cfg, const RadioStation *rs,
+ const QString &filename)
+ : RecordingEncoding(parent, ssid, cfg, rs, filename)
+#ifdef HAVE_OGG
+ ,
+ m_OggOutput(NULL),
+ m_OggExportBuffer(NULL),
+ m_OggExportBufferSize(0)
+#endif
+{
+ m_config.m_OutputFormat = RecordingConfig::outputOGG;
+ m_config.m_SoundFormat.m_Encoding = "ogg";
+ openOutput(filename);
+}
+
+
+RecordingEncodingOgg::~RecordingEncodingOgg()
+{
+ closeOutput();
+}
+
+void RecordingEncodingOgg::encode(const char *_buffer, size_t buffer_size, char *&export_buffer, size_t &export_buffer_size)
+{
+ if (m_error)
+ return;
+
+#ifdef HAVE_OGG
+ SoundFormat &sf = m_config.m_SoundFormat;
+ ogg_page ogg_pg;
+ ogg_packet ogg_pkt;
+
+ size_t samples = buffer_size / sf.frameSize();
+
+ // buffer[channel][sample], normalized to -1..0..+1
+ float **buffer = vorbis_analysis_buffer(&m_VorbisDSP, (samples < 512 ? 512 : samples));
+
+ sf.convertSamplesToFloat(_buffer, buffer, samples);
+
+ /* Tell the library how many samples (per channel) we wrote
+ into the supplied buffer */
+ vorbis_analysis_wrote(&m_VorbisDSP, samples);
+
+ /* While we can get enough data from the library to analyse, one
+ block at a time... */
+
+ bool eos = false;
+ while(!m_error && !eos && vorbis_analysis_blockout(&m_VorbisDSP, &m_VorbisBlock) == 1) {
+
+ /* Do the main analysis, creating a packet */
+ vorbis_analysis(&m_VorbisBlock, NULL);
+ vorbis_bitrate_addblock(&m_VorbisBlock);
+
+ while(!m_error && vorbis_bitrate_flushpacket(&m_VorbisDSP, &ogg_pkt)) {
+ /* Add packet to bitstream */
+ ogg_stream_packetin(&m_OggStream,&ogg_pkt);
+
+ /* If we've gone over a page boundary, we can do actual output,
+ so do so (for however many pages are available) */
+
+ while(!m_error && !eos) {
+ int result = ogg_stream_pageout(&m_OggStream, &ogg_pg);
+ if (!result) break;
+
+ int n = fwrite(ogg_pg.header, 1, ogg_pg.header_len, m_OggOutput);
+ n += fwrite(ogg_pg.body, 1, ogg_pg.body_len, m_OggOutput);
+
+ m_encodedSize += n;
+
+ if (n != (ogg_pg.header_len + ogg_pg.body_len)) {
+ m_error = true;
+ m_errorString += i18n("Failed writing data to ogg/vorbis output stream. ");
+ break;
+ } else {
+
+ if (m_OggExportBufferSize < export_buffer_size + n) {
+ m_OggExportBuffer = (char*)realloc(m_OggExportBuffer, m_OggExportBufferSize + 2 * n);
+ m_OggExportBufferSize += 2 * n;
+ }
+
+ memcpy (m_OggExportBuffer + export_buffer_size, ogg_pg.header, ogg_pg.header_len);
+ export_buffer_size += ogg_pg.header_len;
+ memcpy (m_OggExportBuffer + export_buffer_size, ogg_pg.body, ogg_pg.body_len);
+ export_buffer_size += ogg_pg.body_len;
+
+ }
+ if (ogg_page_eos(&ogg_pg))
+ eos = 1;
+ }
+ }
+ }
+
+ export_buffer = m_OggExportBuffer;
+#endif
+}
+
+
+#ifdef HAVE_OGG
+static void vorbis_comment_add_tag_new(vorbis_comment *vc, const QString &tag, const QString &value)
+{
+ char *stag = strdup(tag.ascii());
+ char *svalue = strdup(value.utf8());
+ vorbis_comment_add_tag(vc, stag, svalue);
+ delete stag;
+ delete svalue;
+}
+#endif
+
+bool RecordingEncodingOgg::openOutput(const QString &output)
+{
+#ifdef HAVE_OGG
+ m_OggOutput = fopen(output.ascii(), "wb+");
+ if (!m_OggOutput) {
+ m_errorString += i18n("Cannot open Ogg/Vorbis output file %1. ").arg(output);
+ m_error = true;
+ }
+
+ m_OggExportBuffer = (char*)malloc(m_OggExportBufferSize = 65536); // start with a 64k buffer
+
+
+ /* Have vorbisenc choose a mode for us */
+ vorbis_info_init(&m_VorbisInfo);
+
+ SoundFormat &sf = m_config.m_SoundFormat;
+ if (vorbis_encode_setup_vbr(&m_VorbisInfo, sf.m_Channels, sf.m_SampleRate, m_config.m_oggQuality)) {
+ m_error = true;
+ m_errorString = i18n("Ogg/Vorbis Mode initialisation failed: invalid parameters for quality\n");
+ vorbis_info_clear(&m_VorbisInfo);
+ return false;
+ }
+
+ /* Turn off management entirely (if it was turned on). */
+ vorbis_encode_ctl(&m_VorbisInfo, OV_ECTL_RATEMANAGE_SET, NULL);
+ vorbis_encode_setup_init(&m_VorbisInfo);
+
+ /* Now, set up the analysis engine, stream encoder, and other
+ preparation before the encoding begins.
+ */
+
+ vorbis_analysis_init(&m_VorbisDSP, &m_VorbisInfo);
+ vorbis_block_init(&m_VorbisDSP, &m_VorbisBlock);
+
+ ogg_stream_init (&m_OggStream, m_SoundStreamID.getID());
+
+ /* Now, build the three header packets and send through to the stream
+ output stage (but defer actual file output until the main encode loop) */
+
+ ogg_packet header_main;
+ ogg_packet header_comments;
+ ogg_packet header_codebooks;
+
+ /* Build the packets */
+ vorbis_comment vc;
+ vorbis_comment_init (&vc);
+ vorbis_comment_add_tag_new(&vc, "creator", "KRadio" VERSION);
+ vorbis_comment_add_tag_new(&vc, "title", m_RadioStation->longName().utf8());
+ vorbis_comment_add_tag_new(&vc, "date", QDateTime::currentDateTime().toString(Qt::ISODate));
+
+ vorbis_analysis_headerout(&m_VorbisDSP, &vc,
+ &header_main, &header_comments, &header_codebooks);
+
+ /* And stream them out */
+ ogg_stream_packetin(&m_OggStream, &header_main);
+ ogg_stream_packetin(&m_OggStream, &header_comments);
+ ogg_stream_packetin(&m_OggStream, &header_codebooks);
+
+ int result;
+ ogg_page ogg_page;
+ while((result = ogg_stream_flush(&m_OggStream, &ogg_page))) {
+
+ if (!result) break;
+
+ int n = fwrite(ogg_page.header, 1, ogg_page.header_len, m_OggOutput);
+ n += fwrite(ogg_page.body, 1, ogg_page.body_len, m_OggOutput);
+
+ if(n != ogg_page.header_len + ogg_page.body_len) {
+ m_error = true;
+ m_errorString += i18n("Failed writing Ogg/Vorbis header to output stream\n");
+ break;
+ }
+ }
+
+ vorbis_comment_clear (&vc);
+
+ if (m_error) {
+ if (m_OggOutput) fclose (m_OggOutput);
+ m_OggOutput = NULL;
+ free(m_OggExportBuffer);
+ m_OggExportBuffer = NULL;
+ m_OggExportBufferSize = 0;
+
+ ogg_stream_clear(&m_OggStream);
+ vorbis_block_clear(&m_VorbisBlock);
+ vorbis_dsp_clear(&m_VorbisDSP);
+ vorbis_info_clear(&m_VorbisInfo);
+ }
+
+ return !m_error;
+#endif
+}
+
+
+void RecordingEncodingOgg::closeOutput()
+{
+#ifdef HAVE_OGG
+ if (m_OggOutput) {
+
+ char *tmp_buf = NULL;
+ size_t tmp_size = 0;
+ // flush buffer
+ encode(tmp_buf, tmp_size, tmp_buf, tmp_size);
+
+ fclose(m_OggOutput);
+ m_OggOutput = NULL;
+
+ free(m_OggExportBuffer);
+ m_OggExportBuffer = NULL;
+ m_OggExportBufferSize = 0;
+
+ ogg_stream_clear(&m_OggStream);
+ vorbis_block_clear(&m_VorbisBlock);
+ vorbis_dsp_clear(&m_VorbisDSP);
+ vorbis_info_clear(&m_VorbisInfo);
+ }
+#endif
+}
+
+
diff --git a/kradio3/plugins/recording/encoder_ogg.h b/kradio3/plugins/recording/encoder_ogg.h
new file mode 100644
index 0000000..55cf8e6
--- /dev/null
+++ b/kradio3/plugins/recording/encoder_ogg.h
@@ -0,0 +1,55 @@
+/***************************************************************************
+ encoder_ogg.h
+ -------------------
+ begin : Sat Aug 20 2005
+ copyright : (C) 2005 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_RECORDING_ENCODER_OGG_H
+#define KRADIO_RECORDING_ENCODER_OGG_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "encoder.h"
+
+#ifdef HAVE_OGG
+ #include <vorbis/vorbisenc.h>
+#endif
+
+class RecordingEncodingOgg : public RecordingEncoding
+{
+public:
+ RecordingEncodingOgg(QObject *parent, SoundStreamID id, const RecordingConfig &cfg, const RadioStation *rs, const QString &filename);
+ virtual ~RecordingEncodingOgg();
+
+ bool openOutput(const QString &outputFile);
+ void closeOutput();
+
+protected:
+ void encode(const char *_buffer, size_t buffer_size, char *&export_buffer, size_t &export_buffer_size);
+
+#ifdef HAVE_OGG
+ FILE *m_OggOutput;
+ char *m_OggExportBuffer;
+ size_t m_OggExportBufferSize;
+ ogg_stream_state m_OggStream;
+ vorbis_dsp_state m_VorbisDSP;
+ vorbis_block m_VorbisBlock;
+ vorbis_info m_VorbisInfo;
+#endif
+};
+
+
+#endif
diff --git a/kradio3/plugins/recording/encoder_pcm.cpp b/kradio3/plugins/recording/encoder_pcm.cpp
new file mode 100644
index 0000000..27c671b
--- /dev/null
+++ b/kradio3/plugins/recording/encoder_pcm.cpp
@@ -0,0 +1,78 @@
+/***************************************************************************
+ encoder_pcm.cpp
+ -------------------
+ begin : Sat Aug 20 2005
+ copyright : (C) 2005 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "encoder_pcm.h"
+
+
+#include <klocale.h>
+
+RecordingEncodingPCM::RecordingEncodingPCM(QObject *parent, SoundStreamID ssid,
+ const RecordingConfig &cfg, const RadioStation *rs,
+ const QString &filename)
+ : RecordingEncoding(parent, ssid, cfg, rs, filename),
+ m_output(NULL)
+{
+ m_config.m_SoundFormat.m_Encoding = "raw";
+ openOutput(filename);
+}
+
+
+RecordingEncodingPCM::~RecordingEncodingPCM()
+{
+ closeOutput();
+}
+
+
+
+void RecordingEncodingPCM::encode(const char *buffer, size_t buffer_size, char *&export_buffer, size_t &export_buffer_size)
+{
+ if (m_error)
+ return;
+ m_encodedSize += buffer_size;
+
+ export_buffer = const_cast<char*>(buffer);
+ export_buffer_size = buffer_size;
+ int err = sf_write_raw(m_output, const_cast<char*>(buffer), buffer_size);
+
+ if (err != (int)buffer_size) {
+ m_error = true;
+ m_errorString += i18n("Error %1 writing output. ").arg(QString().setNum(err));
+ }
+}
+
+
+bool RecordingEncodingPCM::openOutput(const QString &output)
+{
+ SF_INFO sinfo;
+ m_config.getSoundFileInfo(sinfo, false);
+ m_output = sf_open(output.ascii(), SFM_WRITE, &sinfo);
+
+ if (!m_output) {
+ m_error = true;
+ m_errorString += i18n("Cannot open output file %1. ").arg(output);
+ }
+ return !m_error;
+}
+
+
+void RecordingEncodingPCM::closeOutput()
+{
+ if (m_output) sf_close (m_output);
+ m_output = NULL;
+}
+
+
diff --git a/kradio3/plugins/recording/encoder_pcm.h b/kradio3/plugins/recording/encoder_pcm.h
new file mode 100644
index 0000000..e768bba
--- /dev/null
+++ b/kradio3/plugins/recording/encoder_pcm.h
@@ -0,0 +1,46 @@
+/***************************************************************************
+ encoder_pcm.h
+ -------------------
+ begin : Sat Aug 20 2005
+ copyright : (C) 2005 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_RECORDING_ENCODER_PCM_H
+#define KRADIO_RECORDING_ENCODER_PCM_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "encoder.h"
+
+#include <sndfile.h>
+
+class RecordingEncodingPCM : public RecordingEncoding
+{
+public:
+ RecordingEncodingPCM(QObject *parent, SoundStreamID id, const RecordingConfig &cfg, const RadioStation *rs, const QString &filename);
+ virtual ~RecordingEncodingPCM();
+
+ bool openOutput(const QString &outputFile);
+ void closeOutput();
+
+protected:
+ void encode(const char *_buffer, size_t buffer_size, char *&export_buffer, size_t &export_buffer_size);
+
+
+ SNDFILE *m_output;
+};
+
+
+#endif
diff --git a/kradio3/plugins/recording/icons/Makefile.am b/kradio3/plugins/recording/icons/Makefile.am
new file mode 100644
index 0000000..b3f2583
--- /dev/null
+++ b/kradio3/plugins/recording/icons/Makefile.am
@@ -0,0 +1,2 @@
+icons_ICON = AUTO
+iconsdir = $(kde_datadir)/kradio/icons
diff --git a/kradio3/plugins/recording/icons/hi16-action-kradio_record.png b/kradio3/plugins/recording/icons/hi16-action-kradio_record.png
new file mode 100644
index 0000000..a9e4d3c
--- /dev/null
+++ b/kradio3/plugins/recording/icons/hi16-action-kradio_record.png
Binary files differ
diff --git a/kradio3/plugins/recording/icons/hi16-app-kradio_plus_rec.png b/kradio3/plugins/recording/icons/hi16-app-kradio_plus_rec.png
new file mode 100644
index 0000000..11a9395
--- /dev/null
+++ b/kradio3/plugins/recording/icons/hi16-app-kradio_plus_rec.png
Binary files differ
diff --git a/kradio3/plugins/recording/icons/hi22-action-kradio_record.png b/kradio3/plugins/recording/icons/hi22-action-kradio_record.png
new file mode 100644
index 0000000..bf57538
--- /dev/null
+++ b/kradio3/plugins/recording/icons/hi22-action-kradio_record.png
Binary files differ
diff --git a/kradio3/plugins/recording/icons/hi22-app-kradio_plus_rec.png b/kradio3/plugins/recording/icons/hi22-app-kradio_plus_rec.png
new file mode 100644
index 0000000..d17e9db
--- /dev/null
+++ b/kradio3/plugins/recording/icons/hi22-app-kradio_plus_rec.png
Binary files differ
diff --git a/kradio3/plugins/recording/icons/hi256-action-kradio_record.png b/kradio3/plugins/recording/icons/hi256-action-kradio_record.png
new file mode 100644
index 0000000..a122d45
--- /dev/null
+++ b/kradio3/plugins/recording/icons/hi256-action-kradio_record.png
Binary files differ
diff --git a/kradio3/plugins/recording/icons/hi32-action-kradio_record.png b/kradio3/plugins/recording/icons/hi32-action-kradio_record.png
new file mode 100644
index 0000000..117202c
--- /dev/null
+++ b/kradio3/plugins/recording/icons/hi32-action-kradio_record.png
Binary files differ
diff --git a/kradio3/plugins/recording/icons/hi32-app-kradio_plus_rec.png b/kradio3/plugins/recording/icons/hi32-app-kradio_plus_rec.png
new file mode 100644
index 0000000..436746e
--- /dev/null
+++ b/kradio3/plugins/recording/icons/hi32-app-kradio_plus_rec.png
Binary files differ
diff --git a/kradio3/plugins/recording/icons/hi48-action-kradio_record.png b/kradio3/plugins/recording/icons/hi48-action-kradio_record.png
new file mode 100644
index 0000000..5a0c38d
--- /dev/null
+++ b/kradio3/plugins/recording/icons/hi48-action-kradio_record.png
Binary files differ
diff --git a/kradio3/plugins/recording/icons/hi48-app-kradio_plus_rec.png b/kradio3/plugins/recording/icons/hi48-app-kradio_plus_rec.png
new file mode 100644
index 0000000..20388ee
--- /dev/null
+++ b/kradio3/plugins/recording/icons/hi48-app-kradio_plus_rec.png
Binary files differ
diff --git a/kradio3/plugins/recording/icons/hi64-action-kradio_record.png b/kradio3/plugins/recording/icons/hi64-action-kradio_record.png
new file mode 100644
index 0000000..28d354d
--- /dev/null
+++ b/kradio3/plugins/recording/icons/hi64-action-kradio_record.png
Binary files differ
diff --git a/kradio3/plugins/recording/icons/hi64-app-kradio_plus_rec.png b/kradio3/plugins/recording/icons/hi64-app-kradio_plus_rec.png
new file mode 100644
index 0000000..7240ed2
--- /dev/null
+++ b/kradio3/plugins/recording/icons/hi64-app-kradio_plus_rec.png
Binary files differ
diff --git a/kradio3/plugins/recording/po/Makefile.am b/kradio3/plugins/recording/po/Makefile.am
new file mode 100644
index 0000000..80443c3
--- /dev/null
+++ b/kradio3/plugins/recording/po/Makefile.am
@@ -0,0 +1,2 @@
+PACKAGE = kradio-recording
+POFILES = AUTO
diff --git a/kradio3/plugins/recording/po/de.po b/kradio3/plugins/recording/po/de.po
new file mode 100644
index 0000000..7368347
--- /dev/null
+++ b/kradio3/plugins/recording/po/de.po
@@ -0,0 +1,435 @@
+# translation of de.po to
+# translation of kradio-recording.po to
+# This file is put in the public domain.
+#
+# Ernst Martin Witte <emw@nocabal.de>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-11 18:43+0100\n"
+"PO-Revision-Date: 2006-11-06 00:57+0100\n"
+"Last-Translator: Ernst Martin Witte <emw@nocabal.de>\n"
+"Language-Team: <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. i18n: file recording-configuration-ui.ui line 16
+#: rc.cpp:3 rc.cpp:117 recording-configuration-ui.cpp:244
+#, no-c-format
+msgid "RecordingConfigurationUI"
+msgstr "RecordingConfigurationUI"
+
+#. i18n: file recording-configuration-ui.ui line 34
+#: rc.cpp:6 rc.cpp:120 recording-configuration-ui.cpp:256
+#, no-c-format
+msgid "Output"
+msgstr "Ausgabe"
+
+#. i18n: file recording-configuration-ui.ui line 138
+#: rc.cpp:9 rc.cpp:123 recording-configuration-ui.cpp:245
+#, no-c-format
+msgid "MP3 Quality(0 - high, 9 - low)"
+msgstr "MP3 Qualität(0 - hoch, 9 - niedrig)"
+
+#. i18n: file recording-configuration-ui.ui line 149
+#: rc.cpp:12 rc.cpp:126 recording-configuration-ui.cpp:247
+#, no-c-format
+msgid "raw pcm output (.raw)"
+msgstr "reine PCM-Ausgabe (.raw)"
+
+#. i18n: file recording-configuration-ui.ui line 154
+#: rc.cpp:15 rc.cpp:129 recording-configuration-ui.cpp:248
+#, no-c-format
+msgid "Microsoft Wave (.wav)"
+msgstr "Microsoft Wave (.wav)"
+
+#. i18n: file recording-configuration-ui.ui line 159
+#: rc.cpp:18 rc.cpp:132 recording-configuration-ui.cpp:249
+#, no-c-format
+msgid "Apple/SGI (.aiff)"
+msgstr "Apple/SGI (.aiff)"
+
+#. i18n: file recording-configuration-ui.ui line 164
+#: rc.cpp:21 rc.cpp:135 recording-configuration-ui.cpp:250
+#, no-c-format
+msgid "Sun/NeXT (.au)"
+msgstr "Sun/NeXT (.au)"
+
+#. i18n: file recording-configuration-ui.ui line 169
+#: rc.cpp:24 rc.cpp:138 recording-configuration-ui.cpp:251
+#, no-c-format
+msgid "MP3 Compressed (.mp3)"
+msgstr "MP3 komprimiert (.mp3)"
+
+#. i18n: file recording-configuration-ui.ui line 174
+#: rc.cpp:27 rc.cpp:141 recording-configuration-ui.cpp:252
+#, no-c-format
+msgid "Ogg/Vorbis Compressed (.ogg)"
+msgstr "Ogg/Vorbis komprimiert (.ogg)"
+
+#. i18n: file recording-configuration-ui.ui line 194
+#: rc.cpp:30 rc.cpp:144 recording-configuration-ui.cpp:253
+#, no-c-format
+msgid "Recording Directory"
+msgstr "Aufnahme-Verzeichnis"
+
+#. i18n: file recording-configuration-ui.ui line 202
+#: rc.cpp:33 rc.cpp:147 recording-configuration-ui.cpp:254
+#, no-c-format
+msgid "File Format"
+msgstr "Dateiformat"
+
+#. i18n: file recording-configuration-ui.ui line 210
+#: rc.cpp:36 rc.cpp:150 recording-configuration-ui.cpp:255
+#, no-c-format
+msgid "Ogg Quality(0 - low, 9 - high)"
+msgstr "Ogg Qualität(0 - niedrig, 9 - hoch)"
+
+#. i18n: file recording-configuration-ui.ui line 239
+#: rc.cpp:39 rc.cpp:153 recording-configuration-ui.cpp:278
+#, no-c-format
+msgid "I&nput"
+msgstr "Quelle"
+
+#. i18n: file recording-configuration-ui.ui line 276
+#: rc.cpp:42 rc.cpp:156 recording-configuration-ui.cpp:258
+#, no-c-format
+msgid "48000"
+msgstr "48000"
+
+#. i18n: file recording-configuration-ui.ui line 281
+#: rc.cpp:45 rc.cpp:159 recording-configuration-ui.cpp:259
+#, no-c-format
+msgid "44100"
+msgstr "44100"
+
+#. i18n: file recording-configuration-ui.ui line 286
+#: rc.cpp:48 rc.cpp:162 recording-configuration-ui.cpp:260
+#, no-c-format
+msgid "22050"
+msgstr "22050"
+
+#. i18n: file recording-configuration-ui.ui line 291
+#: rc.cpp:51 rc.cpp:165 recording-configuration-ui.cpp:261
+#, no-c-format
+msgid "11025"
+msgstr "11025"
+
+#. i18n: file recording-configuration-ui.ui line 311
+#: rc.cpp:54 rc.cpp:168 recording-configuration-ui.cpp:262
+#, no-c-format
+msgid "Endianess"
+msgstr "Byte-Reihenfolge"
+
+#. i18n: file recording-configuration-ui.ui line 334
+#: rc.cpp:57 rc.cpp:171 recording-configuration-ui.cpp:264
+#, no-c-format
+msgid "Stereo"
+msgstr "Stereo"
+
+#. i18n: file recording-configuration-ui.ui line 339
+#: rc.cpp:60 rc.cpp:174 recording-configuration-ui.cpp:265
+#, no-c-format
+msgid "Mono"
+msgstr "Mono"
+
+#. i18n: file recording-configuration-ui.ui line 359
+#: rc.cpp:63 rc.cpp:177 recording-configuration-ui.cpp:266
+#: recording-monitor.cpp:53
+#, no-c-format
+msgid "Sample Rate"
+msgstr "Abtastrate"
+
+#. i18n: file recording-configuration-ui.ui line 365
+#: rc.cpp:66 rc.cpp:180 recording-configuration-ui.cpp:268
+#, no-c-format
+msgid "Little Endian"
+msgstr "Little Endian"
+
+#. i18n: file recording-configuration-ui.ui line 370
+#: rc.cpp:69 rc.cpp:183 recording-configuration-ui.cpp:269
+#, no-c-format
+msgid "Big Endian"
+msgstr "Big Endian"
+
+#. i18n: file recording-configuration-ui.ui line 388
+#: rc.cpp:72 rc.cpp:186 recording-configuration-ui.cpp:271
+#, no-c-format
+msgid "16"
+msgstr "16"
+
+#. i18n: file recording-configuration-ui.ui line 393
+#: rc.cpp:75 rc.cpp:189 recording-configuration-ui.cpp:272
+#, no-c-format
+msgid "8"
+msgstr "8"
+
+#. i18n: file recording-configuration-ui.ui line 413
+#: rc.cpp:78 rc.cpp:192 recording-configuration-ui.cpp:273
+#, no-c-format
+msgid "Channels"
+msgstr "Kanäle"
+
+#. i18n: file recording-configuration-ui.ui line 421
+#: rc.cpp:81 rc.cpp:195 recording-configuration-ui.cpp:274
+#, no-c-format
+msgid "Sample Bits"
+msgstr "Quantisierungs-Bits"
+
+#. i18n: file recording-configuration-ui.ui line 427
+#: rc.cpp:84 rc.cpp:198 recording-configuration-ui.cpp:276
+#, no-c-format
+msgid "Signed"
+msgstr "Vorzeichenbehaftet"
+
+#. i18n: file recording-configuration-ui.ui line 432
+#: rc.cpp:87 rc.cpp:201 recording-configuration-ui.cpp:277
+#, no-c-format
+msgid "Unsigned"
+msgstr "Vorzeichenlos"
+
+#. i18n: file recording-configuration-ui.ui line 490
+#: rc.cpp:90 rc.cpp:204 recording-configuration-ui.cpp:282
+#, no-c-format
+msgid "&Buffers"
+msgstr "&Puffer"
+
+#. i18n: file recording-configuration-ui.ui line 512
+#: rc.cpp:93 rc.cpp:207 recording-configuration-ui.cpp:279
+#, no-c-format
+msgid " kB"
+msgstr " kB"
+
+#. i18n: file recording-configuration-ui.ui line 532
+#: rc.cpp:96 rc.cpp:210 recording-configuration-ui.cpp:280
+#, no-c-format
+msgid "Encoding Buffer Size"
+msgstr "Codierungs-Puffergröße"
+
+#. i18n: file recording-configuration-ui.ui line 551
+#: rc.cpp:99 rc.cpp:213 recording-configuration-ui.cpp:281
+#, no-c-format
+msgid "Number of Buffers"
+msgstr "Anzahl der Puffer"
+
+#. i18n: file recording-configuration-ui.ui line 580
+#: rc.cpp:102 rc.cpp:216 recording-configuration-ui.cpp:287
+#, no-c-format
+msgid "Pre-Recordin&g"
+msgstr "Aufnahme&vorlaufs"
+
+#. i18n: file recording-configuration-ui.ui line 610
+#: rc.cpp:105 rc.cpp:219 recording-configuration-ui.cpp:283
+#, no-c-format
+msgid "E&nable"
+msgstr "&Einschalten"
+
+#. i18n: file recording-configuration-ui.ui line 613
+#: rc.cpp:108 rc.cpp:222 recording-configuration-ui.cpp:284
+#, no-c-format
+msgid "Alt+N"
+msgstr "Alt+N"
+
+#. i18n: file recording-configuration-ui.ui line 651
+#: rc.cpp:111 rc.cpp:225 recording-configuration-ui.cpp:285
+#, no-c-format
+msgid "PreRecording Time"
+msgstr "Dauer des Aufnahmevorlaufs"
+
+#. i18n: file recording-configuration-ui.ui line 662
+#: rc.cpp:114 rc.cpp:228 recording-configuration-ui.cpp:286
+#, no-c-format
+msgid " s"
+msgstr " s"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Ernst Martin Witte"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "emw@nocabal.de"
+
+#: encoder_mp3.cpp:79 encoder_mp3.cpp:189
+msgid "Error %1 while encoding mp3. "
+msgstr "Fehler %1 beim Codieren des MP3-Streams. "
+
+#: encoder_mp3.cpp:89 encoder_mp3.cpp:194 encoder_pcm.cpp:53
+msgid "Error %1 writing output. "
+msgstr "Fehler %1 beim Schreiben der Ausgabedatei. "
+
+#: encoder_mp3.cpp:106
+msgid "Cannot initialize lalibmp3lame. "
+msgstr "Die Funktionsbibliothek libmp3lame kann nicht initialisiert werden. "
+
+#: encoder_mp3.cpp:123
+msgid "Cannot initialize libmp3lame parameters. "
+msgstr ""
+"Die Parameter der Funktionsbibliothek libmp3lame konnten nicht initialisiert "
+"werden."
+
+#: encoder_mp3.cpp:130
+msgid "Recorded by KRadio"
+msgstr "Aufzeichnung durch KRadio"
+
+#: encoder_mp3.cpp:143 encoder_pcm.cpp:66
+msgid "Cannot open output file %1. "
+msgstr "Die Ausgabedatei %1 kann nicht geöffnet werden. "
+
+#: encoder_mp3.cpp:156
+msgid "Cannot allocate buffers for mp3 encoding. "
+msgstr ""
+"Die Puffer für das Codieren des MP3-Streams konnten nicht angelegt werden. "
+
+#: encoder_ogg.cpp:94
+msgid "Failed writing data to ogg/vorbis output stream. "
+msgstr "Das schreiben der Ogg/Vorbis-Daten schlug fehl. "
+
+#: encoder_ogg.cpp:136
+msgid "Cannot open Ogg/Vorbis output file %1. "
+msgstr "Die Ogg/Vorbis-Ausgabedatei %1 konnte nicht geöffnet werden. "
+
+#: encoder_ogg.cpp:149
+msgid "Ogg/Vorbis Mode initialisation failed: invalid parameters for quality\n"
+msgstr ""
+"Die Initialisierung des Ogg/Vorbis-Modes schlug fehl: Ungültiger Qualitäts-"
+"Parameter\n"
+
+#: encoder_ogg.cpp:200
+msgid "Failed writing Ogg/Vorbis header to output stream\n"
+msgstr "Das Schreiben der Ogg/Vorbis-Kopfdaten der Ausgabedatei schlug fehl\n"
+
+#: recording-datamonitor.cpp:174 recording-datamonitor.cpp:179
+msgid "%1 dB"
+msgstr "%1 dB"
+
+#: recording-monitor.cpp:34
+msgid "Recording Monitor"
+msgstr "Aufnahme-Überwachung"
+
+#: recording-monitor.cpp:38 recording.cpp:47
+msgid "KRadio Recording Monitor"
+msgstr "KRadio Aufnahme-Überwachung"
+
+#: recording-monitor.cpp:43
+msgid "SoundStream"
+msgstr "Aufnahmedatenstrom"
+
+#: recording-monitor.cpp:45
+msgid "Status"
+msgstr "Status"
+
+#: recording-monitor.cpp:46 recording-monitor.cpp:48 recording-monitor.cpp:50
+#: recording-monitor.cpp:52 recording-monitor.cpp:54
+msgid "<undefined>"
+msgstr "<undefiniert>"
+
+#: recording-monitor.cpp:47
+msgid "Recording File"
+msgstr "Aufnahmedatei"
+
+#: recording-monitor.cpp:49
+msgid "File Size"
+msgstr "Dateigröße"
+
+#: recording-monitor.cpp:51
+msgid "Recording Time"
+msgstr "Aufnahmezeit"
+
+#: recording-monitor.cpp:57 recording-monitor.cpp:393
+#: recording-monitor.cpp:396
+msgid "&Record"
+msgstr "&Aufnehmen"
+
+#: recording-monitor.cpp:74 recording-monitor.cpp:118
+#: recording-monitor.cpp:141
+msgid "nothing"
+msgstr "nichts"
+
+#: recording-monitor.cpp:339
+msgid "%1 Byte"
+msgstr "%1 Byte"
+
+#: recording-monitor.cpp:340
+msgid "%1 kB"
+msgstr "%1 kB"
+
+#: recording-monitor.cpp:341
+msgid "%1 MB"
+msgstr "%1 MB"
+
+#: recording-monitor.cpp:342
+msgid "%1 GB"
+msgstr "%1 GB"
+
+#: recording-monitor.cpp:345
+msgid "%1 Hz"
+msgstr "%1 Hz"
+
+#: recording-monitor.cpp:393
+msgid "&Stop Recording"
+msgstr "Aufnahme anhalten"
+
+#: recording.cpp:46 recording.cpp:54
+msgid "KRadio Recording Plugin"
+msgstr "KRadio Aufnahme-Plugin"
+
+#: recording.cpp:131 recording.cpp:132
+msgid "Recording"
+msgstr "Aufnahme"
+
+#: recording.cpp:360
+msgid "start capture not handled"
+msgstr "Der Aufnahmestart wurde ignoriert"
+
+#: recording.cpp:367
+msgid "Recording starting"
+msgstr "Die Aufnahme wird gestartet"
+
+#: recording.cpp:369
+msgid "starting encoding thread failed"
+msgstr "Das Starten des Aufnahme-Threads schlug fehl"
+
+#: recording.cpp:451
+msgid "could not read suffient data"
+msgstr "es konnten nicht ausreichend Daten gelesen werden"
+
+#: recording.cpp:482
+msgid ""
+"Encoder input buffer overflow (buffer configuration problem?). Skipped %1 "
+"input bytes"
+msgstr ""
+"Pufferüberlauf des Aufnahmepuffers des Kodierers/Komprimierers (Fehlerhafte "
+"Konfiguration der Puffer?). Es wurden %1 Bytes ignoriert."
+
+#: recording.cpp:544
+msgid "Recording::outputFile: "
+msgstr "Aufnahme::Ausgabedatei: "
+
+#: recording.cpp:595
+msgid "The encoding thread did not finish. It will be killed now."
+msgstr ""
+"Der Codierungs-Thread beendete sich nicht selber. Er wird jetzt mit roher "
+"Gewalt beendet."
+
+#: recording.cpp:600
+msgid "Waiting for encoding thread to terminate."
+msgstr "Warte auf die Beendigung des Codierungs-Threads."
+
+#: recording.cpp:619
+msgid "Recording stopped"
+msgstr "Die Aufnahme wurde beendet"
+
+#: recording.cpp:652
+msgid ""
+"Recording::notifySoundStreamData(encoded data): Receivers skipped %1 Bytes"
+msgstr ""
+"Recording::notifySoundStreamData(Kodierte Daten): Die Empfängermodule "
+"übersprangen %1 Bytess"
diff --git a/kradio3/plugins/recording/po/ru.po b/kradio3/plugins/recording/po/ru.po
new file mode 100644
index 0000000..293e22b
--- /dev/null
+++ b/kradio3/plugins/recording/po/ru.po
@@ -0,0 +1,432 @@
+# translation of ru.po to
+# translation of kradio-recording.po to
+# This file is put in the public domain.
+# Алексей Кузнецов <Alexey.Kouznetsov@GMail.com>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-11 18:43+0100\n"
+"PO-Revision-Date: 2006-11-08 12:35+0300\n"
+"Last-Translator: Алексей Кузнецов <Alexey.Kouznetsov@GMail.com>\n"
+"Language-Team: <ru@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10\n"
+
+#. i18n: file recording-configuration-ui.ui line 16
+#: rc.cpp:3 rc.cpp:117 recording-configuration-ui.cpp:244
+#, no-c-format
+msgid "RecordingConfigurationUI"
+msgstr "RecordingConfigurationUI"
+
+#. i18n: file recording-configuration-ui.ui line 34
+#: rc.cpp:6 rc.cpp:120 recording-configuration-ui.cpp:256
+#, no-c-format
+msgid "Output"
+msgstr "Выход"
+
+#. i18n: file recording-configuration-ui.ui line 138
+#: rc.cpp:9 rc.cpp:123 recording-configuration-ui.cpp:245
+#, no-c-format
+msgid "MP3 Quality(0 - high, 9 - low)"
+msgstr "Качество MP3 (0 — высокое, 9 — низкое)"
+
+#. i18n: file recording-configuration-ui.ui line 149
+#: rc.cpp:12 rc.cpp:126 recording-configuration-ui.cpp:247
+#, no-c-format
+msgid "raw pcm output (.raw)"
+msgstr "Неформатированный вывод (.raw)"
+
+#. i18n: file recording-configuration-ui.ui line 154
+#: rc.cpp:15 rc.cpp:129 recording-configuration-ui.cpp:248
+#, no-c-format
+msgid "Microsoft Wave (.wav)"
+msgstr "Microsoft Wave (.wav)"
+
+#. i18n: file recording-configuration-ui.ui line 159
+#: rc.cpp:18 rc.cpp:132 recording-configuration-ui.cpp:249
+#, no-c-format
+msgid "Apple/SGI (.aiff)"
+msgstr "Apple/SGI (.aiff)"
+
+#. i18n: file recording-configuration-ui.ui line 164
+#: rc.cpp:21 rc.cpp:135 recording-configuration-ui.cpp:250
+#, no-c-format
+msgid "Sun/NeXT (.au)"
+msgstr "Sun/NeXT (.au)"
+
+#. i18n: file recording-configuration-ui.ui line 169
+#: rc.cpp:24 rc.cpp:138 recording-configuration-ui.cpp:251
+#, no-c-format
+msgid "MP3 Compressed (.mp3)"
+msgstr "Сжатый MP3 (.mp3)"
+
+#. i18n: file recording-configuration-ui.ui line 174
+#: rc.cpp:27 rc.cpp:141 recording-configuration-ui.cpp:252
+#, no-c-format
+msgid "Ogg/Vorbis Compressed (.ogg)"
+msgstr "Сжатый Ogg Vorbis (.ogg)"
+
+#. i18n: file recording-configuration-ui.ui line 194
+#: rc.cpp:30 rc.cpp:144 recording-configuration-ui.cpp:253
+#, no-c-format
+msgid "Recording Directory"
+msgstr "Каталог для сохранения"
+
+#. i18n: file recording-configuration-ui.ui line 202
+#: rc.cpp:33 rc.cpp:147 recording-configuration-ui.cpp:254
+#, no-c-format
+msgid "File Format"
+msgstr "Формат файла"
+
+#. i18n: file recording-configuration-ui.ui line 210
+#: rc.cpp:36 rc.cpp:150 recording-configuration-ui.cpp:255
+#, no-c-format
+msgid "Ogg Quality(0 - low, 9 - high)"
+msgstr "Качество Ogg (0 — ниже, 9 — выше)"
+
+#. i18n: file recording-configuration-ui.ui line 239
+#: rc.cpp:39 rc.cpp:153 recording-configuration-ui.cpp:278
+#, no-c-format
+msgid "I&nput"
+msgstr "В&вод"
+
+#. i18n: file recording-configuration-ui.ui line 276
+#: rc.cpp:42 rc.cpp:156 recording-configuration-ui.cpp:258
+#, no-c-format
+msgid "48000"
+msgstr "48000"
+
+#. i18n: file recording-configuration-ui.ui line 281
+#: rc.cpp:45 rc.cpp:159 recording-configuration-ui.cpp:259
+#, no-c-format
+msgid "44100"
+msgstr "44100"
+
+#. i18n: file recording-configuration-ui.ui line 286
+#: rc.cpp:48 rc.cpp:162 recording-configuration-ui.cpp:260
+#, no-c-format
+msgid "22050"
+msgstr "22050"
+
+#. i18n: file recording-configuration-ui.ui line 291
+#: rc.cpp:51 rc.cpp:165 recording-configuration-ui.cpp:261
+#, no-c-format
+msgid "11025"
+msgstr "11025"
+
+#. i18n: file recording-configuration-ui.ui line 311
+#: rc.cpp:54 rc.cpp:168 recording-configuration-ui.cpp:262
+#, no-c-format
+msgid "Endianess"
+msgstr "Порядок байтов"
+
+#. i18n: file recording-configuration-ui.ui line 334
+#: rc.cpp:57 rc.cpp:171 recording-configuration-ui.cpp:264
+#, no-c-format
+msgid "Stereo"
+msgstr "2 (Стерео)"
+
+#. i18n: file recording-configuration-ui.ui line 339
+#: rc.cpp:60 rc.cpp:174 recording-configuration-ui.cpp:265
+#, no-c-format
+msgid "Mono"
+msgstr "1 (Моно)"
+
+#. i18n: file recording-configuration-ui.ui line 359
+#: rc.cpp:63 rc.cpp:177 recording-configuration-ui.cpp:266
+#: recording-monitor.cpp:53
+#, no-c-format
+msgid "Sample Rate"
+msgstr "Частота дискретизации"
+
+#. i18n: file recording-configuration-ui.ui line 365
+#: rc.cpp:66 rc.cpp:180 recording-configuration-ui.cpp:268
+#, no-c-format
+msgid "Little Endian"
+msgstr "Little Endian"
+
+#. i18n: file recording-configuration-ui.ui line 370
+#: rc.cpp:69 rc.cpp:183 recording-configuration-ui.cpp:269
+#, fuzzy, no-c-format
+msgid "Big Endian"
+msgstr "Big Endian"
+
+#. i18n: file recording-configuration-ui.ui line 388
+#: rc.cpp:72 rc.cpp:186 recording-configuration-ui.cpp:271
+#, no-c-format
+msgid "16"
+msgstr "16"
+
+#. i18n: file recording-configuration-ui.ui line 393
+#: rc.cpp:75 rc.cpp:189 recording-configuration-ui.cpp:272
+#, no-c-format
+msgid "8"
+msgstr "8"
+
+#. i18n: file recording-configuration-ui.ui line 413
+#: rc.cpp:78 rc.cpp:192 recording-configuration-ui.cpp:273
+#, no-c-format
+msgid "Channels"
+msgstr "Число каналов"
+
+#. i18n: file recording-configuration-ui.ui line 421
+#: rc.cpp:81 rc.cpp:195 recording-configuration-ui.cpp:274
+#, no-c-format
+msgid "Sample Bits"
+msgstr "Бит на элемент выборки"
+
+#. i18n: file recording-configuration-ui.ui line 427
+#: rc.cpp:84 rc.cpp:198 recording-configuration-ui.cpp:276
+#, no-c-format
+msgid "Signed"
+msgstr "Со знаком"
+
+#. i18n: file recording-configuration-ui.ui line 432
+#: rc.cpp:87 rc.cpp:201 recording-configuration-ui.cpp:277
+#, no-c-format
+msgid "Unsigned"
+msgstr "Без знака"
+
+#. i18n: file recording-configuration-ui.ui line 490
+#: rc.cpp:90 rc.cpp:204 recording-configuration-ui.cpp:282
+#, no-c-format
+msgid "&Buffers"
+msgstr "&Буферы"
+
+#. i18n: file recording-configuration-ui.ui line 512
+#: rc.cpp:93 rc.cpp:207 recording-configuration-ui.cpp:279
+#, no-c-format
+msgid " kB"
+msgstr " кБ"
+
+#. i18n: file recording-configuration-ui.ui line 532
+#: rc.cpp:96 rc.cpp:210 recording-configuration-ui.cpp:280
+#, no-c-format
+msgid "Encoding Buffer Size"
+msgstr "Размер буфера для записи"
+
+#. i18n: file recording-configuration-ui.ui line 551
+#: rc.cpp:99 rc.cpp:213 recording-configuration-ui.cpp:281
+#, no-c-format
+msgid "Number of Buffers"
+msgstr "Количество буферов"
+
+#. i18n: file recording-configuration-ui.ui line 580
+#: rc.cpp:102 rc.cpp:216 recording-configuration-ui.cpp:287
+#, no-c-format
+msgid "Pre-Recordin&g"
+msgstr "&Упреждающая запись"
+
+#. i18n: file recording-configuration-ui.ui line 610
+#: rc.cpp:105 rc.cpp:219 recording-configuration-ui.cpp:283
+#, no-c-format
+msgid "E&nable"
+msgstr "Включить"
+
+#. i18n: file recording-configuration-ui.ui line 613
+#: rc.cpp:108 rc.cpp:222 recording-configuration-ui.cpp:284
+#, no-c-format
+msgid "Alt+N"
+msgstr "Alt+N"
+
+#. i18n: file recording-configuration-ui.ui line 651
+#: rc.cpp:111 rc.cpp:225 recording-configuration-ui.cpp:285
+#, no-c-format
+msgid "PreRecording Time"
+msgstr "Упреждение"
+
+#. i18n: file recording-configuration-ui.ui line 662
+#: rc.cpp:114 rc.cpp:228 recording-configuration-ui.cpp:286
+#, no-c-format
+msgid " s"
+msgstr " с"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Алексей Кузнецов"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "Alexey.Kouznetsov@GMail.com"
+
+#: encoder_mp3.cpp:79 encoder_mp3.cpp:189
+msgid "Error %1 while encoding mp3. "
+msgstr "При кодировании MP3 произошла ошибка: %1. "
+
+#: encoder_mp3.cpp:89 encoder_mp3.cpp:194 encoder_pcm.cpp:53
+msgid "Error %1 writing output. "
+msgstr "Во время записи произошла ошибка: %1"
+
+#: encoder_mp3.cpp:106
+msgid "Cannot initialize lalibmp3lame. "
+msgstr ""
+"Не могу инициализировать lalibmp3lame — необходимо для кодирования в MP3."
+
+#: encoder_mp3.cpp:123
+msgid "Cannot initialize libmp3lame parameters. "
+msgstr ""
+"Не могу инициализировать параметры libmp3lame — необходимо для кодирования в "
+"MP3."
+
+#: encoder_mp3.cpp:130
+msgid "Recorded by KRadio"
+msgstr "Запись KRadio"
+
+#: encoder_mp3.cpp:143 encoder_pcm.cpp:66
+msgid "Cannot open output file %1. "
+msgstr "Не могу открыть выходной файл %1. "
+
+#: encoder_mp3.cpp:156
+msgid "Cannot allocate buffers for mp3 encoding. "
+msgstr "Не могу разместить в памяти буферы для кодирования MP3."
+
+#: encoder_ogg.cpp:94
+msgid "Failed writing data to ogg/vorbis output stream. "
+msgstr "Ошибка записи данных в выходной поток ogg/vorbis. "
+
+#: encoder_ogg.cpp:136
+msgid "Cannot open Ogg/Vorbis output file %1. "
+msgstr "Не могу открыть выходной файл Ogg/Vorbis \"%1\". "
+
+#: encoder_ogg.cpp:149
+msgid "Ogg/Vorbis Mode initialisation failed: invalid parameters for quality\n"
+msgstr ""
+"Инициализация режима Ogg/Vorbis не удалась: качество записи указано неверно\n"
+
+#: encoder_ogg.cpp:200
+msgid "Failed writing Ogg/Vorbis header to output stream\n"
+msgstr "Ошибка записи заголовка Ogg/Vorbis в выходной поток\n"
+
+#: recording-datamonitor.cpp:174 recording-datamonitor.cpp:179
+msgid "%1 dB"
+msgstr "%1 дБ"
+
+#: recording-monitor.cpp:34
+msgid "Recording Monitor"
+msgstr "Монитор записи"
+
+#: recording-monitor.cpp:38 recording.cpp:47
+msgid "KRadio Recording Monitor"
+msgstr "Монитор записи для KRadio"
+
+#: recording-monitor.cpp:43
+msgid "SoundStream"
+msgstr "Источник"
+
+#: recording-monitor.cpp:45
+msgid "Status"
+msgstr "Состояние"
+
+#: recording-monitor.cpp:46 recording-monitor.cpp:48 recording-monitor.cpp:50
+#: recording-monitor.cpp:52 recording-monitor.cpp:54
+msgid "<undefined>"
+msgstr "<не определено>"
+
+#: recording-monitor.cpp:47
+msgid "Recording File"
+msgstr "Файл"
+
+#: recording-monitor.cpp:49
+msgid "File Size"
+msgstr "Размер файла"
+
+#: recording-monitor.cpp:51
+msgid "Recording Time"
+msgstr "Длительность записи"
+
+#: recording-monitor.cpp:57 recording-monitor.cpp:393
+#: recording-monitor.cpp:396
+msgid "&Record"
+msgstr "&Начать запись"
+
+#: recording-monitor.cpp:74 recording-monitor.cpp:118
+#: recording-monitor.cpp:141
+msgid "nothing"
+msgstr "(нет)"
+
+#: recording-monitor.cpp:339
+msgid "%1 Byte"
+msgstr "%1 байт"
+
+#: recording-monitor.cpp:340
+msgid "%1 kB"
+msgstr "%1 кБ"
+
+#: recording-monitor.cpp:341
+msgid "%1 MB"
+msgstr "%1 МБ"
+
+#: recording-monitor.cpp:342
+msgid "%1 GB"
+msgstr "%1 ГБ"
+
+#: recording-monitor.cpp:345
+msgid "%1 Hz"
+msgstr "%1 Гц"
+
+#: recording-monitor.cpp:393
+msgid "&Stop Recording"
+msgstr "&Остановить запись"
+
+#: recording.cpp:46 recording.cpp:54
+msgid "KRadio Recording Plugin"
+msgstr "Модуль записи звука для KRadio"
+
+#: recording.cpp:131 recording.cpp:132
+msgid "Recording"
+msgstr "Запись"
+
+#: recording.cpp:360
+msgid "start capture not handled"
+msgstr ""
+
+#: recording.cpp:367
+msgid "Recording starting"
+msgstr "Запись запущена"
+
+#: recording.cpp:369
+msgid "starting encoding thread failed"
+msgstr "Не смог запустить процесс кодирования"
+
+#: recording.cpp:451
+msgid "could not read suffient data"
+msgstr "Не смог прочесть достаточно данных"
+
+#: recording.cpp:482
+msgid ""
+"Encoder input buffer overflow (buffer configuration problem?). Skipped %1 "
+"input bytes"
+msgstr ""
+"Переполнение на входе кодировщика (вероятно, неправильно настроен буфер). "
+"Пропускаю %1 байт на входе."
+
+#: recording.cpp:544
+msgid "Recording::outputFile: "
+msgstr "Recording::outputFile (выходной файл записи):"
+
+#: recording.cpp:595
+msgid "The encoding thread did not finish. It will be killed now."
+msgstr "Нить кодировщика не завершилась. Процесс будет уничтожен."
+
+#: recording.cpp:600
+msgid "Waiting for encoding thread to terminate."
+msgstr "Жду завершения нити кодировщика"
+
+#: recording.cpp:619
+#, fuzzy
+msgid "Recording stopped"
+msgstr "Запись заершена"
+
+#: recording.cpp:652
+msgid ""
+"Recording::notifySoundStreamData(encoded data): Receivers skipped %1 Bytes"
+msgstr ""
+"Recording::notifySoundStreamData(encoded data): Приёмник пропустил %1 байт"
diff --git a/kradio3/plugins/recording/reccfg_interfaces.cpp b/kradio3/plugins/recording/reccfg_interfaces.cpp
new file mode 100644
index 0000000..3b5f32f
--- /dev/null
+++ b/kradio3/plugins/recording/reccfg_interfaces.cpp
@@ -0,0 +1,151 @@
+/***************************************************************************
+ reccfg_interfaces.cpp - description
+ -------------------
+ begin : Sun May 01 2005
+ copyright : (C) 2005by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include <linux/soundcard.h>
+#include "reccfg_interfaces.h"
+
+// IRecCfg
+
+IF_IMPL_SENDER ( IRecCfg::notifyEncoderBufferChanged (size_t BufferSize, size_t BufferCount),
+ noticeEncoderBufferChanged(BufferSize, BufferCount)
+ );
+IF_IMPL_SENDER ( IRecCfg::notifySoundFormatChanged(const SoundFormat &sf),
+ noticeSoundFormatChanged(sf)
+ );
+IF_IMPL_SENDER ( IRecCfg::notifyMP3QualityChanged(int q),
+ noticeMP3QualityChanged(q)
+ );
+IF_IMPL_SENDER ( IRecCfg::notifyOggQualityChanged(float q),
+ noticeOggQualityChanged(q)
+ );
+IF_IMPL_SENDER ( IRecCfg::notifyRecordingDirectoryChanged(const QString &dir),
+ noticeRecordingDirectoryChanged(dir)
+ );
+IF_IMPL_SENDER ( IRecCfg::notifyOutputFormatChanged(RecordingConfig::OutputFormat of),
+ noticeOutputFormatChanged(of)
+ );
+IF_IMPL_SENDER ( IRecCfg::notifyPreRecordingChanged(bool enable, int seconds),
+ noticePreRecordingChanged(enable, seconds)
+ );
+IF_IMPL_SENDER ( IRecCfg::notifyRecordingConfigChanged (const RecordingConfig &cfg),
+ noticeRecordingConfigChanged(cfg)
+ );
+
+// IRecCfgClient
+
+IF_IMPL_SENDER ( IRecCfgClient::sendEncoderBuffer (size_t BufferSize, size_t BufferCount),
+ setEncoderBuffer(BufferSize, BufferCount)
+ );
+IF_IMPL_SENDER ( IRecCfgClient::sendSoundFormat(const SoundFormat &sf),
+ setSoundFormat(sf)
+ );
+IF_IMPL_SENDER ( IRecCfgClient::sendMP3Quality(int q),
+ setMP3Quality(q)
+ );
+IF_IMPL_SENDER ( IRecCfgClient::sendOggQuality(float q),
+ setOggQuality(q)
+ );
+IF_IMPL_SENDER ( IRecCfgClient::sendRecordingDirectory(const QString &dir),
+ setRecordingDirectory(dir)
+ );
+IF_IMPL_SENDER ( IRecCfgClient::sendOutputFormat(RecordingConfig::OutputFormat of),
+ setOutputFormat(of)
+ );
+IF_IMPL_SENDER ( IRecCfgClient::sendPreRecording(bool enable, int seconds),
+ setPreRecording(enable, seconds)
+ );
+IF_IMPL_SENDER ( IRecCfgClient::sendRecordingConfig(const RecordingConfig &cfg),
+ setRecordingConfig(cfg)
+ );
+
+IF_IMPL_QUERY ( void IRecCfgClient::queryEncoderBuffer(size_t &BufferSize, size_t &BufferCount),
+ getEncoderBuffer(BufferSize, BufferCount),
+
+ );
+
+static SoundFormat defaultSoundFormat;
+IF_IMPL_QUERY ( const SoundFormat &IRecCfgClient::querySoundFormat (),
+ getSoundFormat(),
+ defaultSoundFormat
+ );
+
+IF_IMPL_QUERY ( int IRecCfgClient::queryMP3Quality (),
+ getMP3Quality(),
+ 7
+ );
+
+IF_IMPL_QUERY ( float IRecCfgClient::queryOggQuality (),
+ getOggQuality(),
+ 7
+ );
+
+static QString defaultRecDir("/tmp");
+IF_IMPL_QUERY ( const QString &IRecCfgClient::queryRecordingDirectory(),
+ getRecordingDirectory(),
+ defaultRecDir
+ );
+
+IF_IMPL_QUERY ( RecordingConfig::OutputFormat IRecCfgClient::queryOutputFormat(),
+ getOutputFormat(),
+ RecordingConfig::outputWAV
+ );
+
+IF_IMPL_QUERY ( bool IRecCfgClient::queryPreRecording(int &seconds),
+ getPreRecording(seconds),
+ false
+ );
+
+static RecordingConfig defaultRecConfig;
+IF_IMPL_QUERY ( const RecordingConfig &IRecCfgClient::queryRecordingConfig(),
+ getRecordingConfig(),
+ defaultRecConfig
+ );
+
+void IRecCfgClient::noticeConnectedI (cmplInterface *, bool /*pointer_valid*/)
+{
+ size_t bs = 0, bc = 0;
+ queryEncoderBuffer(bs, bc);
+ noticeEncoderBufferChanged(bs, bc);
+ noticeSoundFormatChanged(querySoundFormat());
+ noticeMP3QualityChanged (queryMP3Quality());
+ noticeOggQualityChanged (queryOggQuality());
+ noticeRecordingDirectoryChanged(queryRecordingDirectory());
+ noticeOutputFormatChanged(queryOutputFormat());
+ int s = 0;
+ bool e = queryPreRecording(s);
+ noticePreRecordingChanged(e, s);
+ noticeRecordingConfigChanged(queryRecordingConfig());
+}
+
+
+void IRecCfgClient::noticeDisconnectedI (cmplInterface *, bool /*pointer_valid*/)
+{
+ size_t bs = 0, bc = 0;
+ queryEncoderBuffer(bs, bc);
+ noticeEncoderBufferChanged(bs, bc);
+ noticeSoundFormatChanged(querySoundFormat());
+ noticeMP3QualityChanged (queryMP3Quality());
+ noticeOggQualityChanged (queryOggQuality());
+ noticeRecordingDirectoryChanged(queryRecordingDirectory());
+ noticeOutputFormatChanged(queryOutputFormat());
+ int s = 0;
+ bool e = queryPreRecording(s);
+ noticePreRecordingChanged(e, s);
+ noticeRecordingConfigChanged(queryRecordingConfig());
+}
+
+
diff --git a/kradio3/plugins/recording/reccfg_interfaces.h b/kradio3/plugins/recording/reccfg_interfaces.h
new file mode 100644
index 0000000..907f494
--- /dev/null
+++ b/kradio3/plugins/recording/reccfg_interfaces.h
@@ -0,0 +1,102 @@
+/***************************************************************************
+ reccfg_interfaces.h - description
+ -------------------
+ begin : Sun May 01 2005
+ copyright : (C) 2005 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_RECCFG_INTERFACES_H
+#define KRADIO_RECCFG_INTERFACES_H
+
+#include "../../src/include/interfaces.h"
+#include "recording-config.h"
+
+INTERFACE(IRecCfg, IRecCfgClient)
+{
+public:
+ IF_CON_DESTRUCTOR(IRecCfg, -1)
+
+RECEIVERS:
+ IF_RECEIVER( setEncoderBuffer (size_t BufferSize, size_t BufferCount) )
+ IF_RECEIVER( setSoundFormat (const SoundFormat &sf) )
+ IF_RECEIVER( setMP3Quality (int q) )
+ IF_RECEIVER( setOggQuality (float q) )
+ IF_RECEIVER( setRecordingDirectory(const QString &dir) )
+ IF_RECEIVER( setOutputFormat (RecordingConfig::OutputFormat of) )
+ IF_RECEIVER( setPreRecording (bool enable, int seconds) )
+ IF_RECEIVER( setRecordingConfig (const RecordingConfig &cfg) )
+
+SENDERS:
+ IF_SENDER ( notifyEncoderBufferChanged (size_t BufferSize, size_t BufferCount) )
+ IF_SENDER ( notifySoundFormatChanged (const SoundFormat &sf) )
+ IF_SENDER ( notifyMP3QualityChanged (int q) )
+ IF_SENDER ( notifyOggQualityChanged (float q) )
+ IF_SENDER ( notifyRecordingDirectoryChanged(const QString &dir) )
+ IF_SENDER ( notifyOutputFormatChanged (RecordingConfig::OutputFormat of) )
+ IF_SENDER ( notifyPreRecordingChanged (bool enable, int seconds) )
+ IF_SENDER ( notifyRecordingConfigChanged (const RecordingConfig &cfg) )
+
+ANSWERS:
+ IF_ANSWER ( void getEncoderBuffer(size_t &BufferSize, size_t &BufferCount) const )
+ IF_ANSWER ( const SoundFormat &getSoundFormat () const )
+ IF_ANSWER ( int getMP3Quality () const )
+ IF_ANSWER ( float getOggQuality () const )
+ IF_ANSWER ( const QString &getRecordingDirectory() const )
+ IF_ANSWER ( RecordingConfig::OutputFormat getOutputFormat() const )
+ IF_ANSWER ( bool getPreRecording(int &seconds) const )
+ IF_ANSWER ( const RecordingConfig &getRecordingConfig() const )
+};
+
+
+
+INTERFACE(IRecCfgClient, IRecCfg)
+{
+public:
+ IF_CON_DESTRUCTOR(IRecCfgClient, 1)
+
+SENDERS:
+ IF_SENDER ( sendEncoderBuffer (size_t BufferSize, size_t BufferCount) )
+ IF_SENDER ( sendSoundFormat (const SoundFormat &sf) )
+ IF_SENDER ( sendMP3Quality (int q) )
+ IF_SENDER ( sendOggQuality (float q) )
+ IF_SENDER ( sendRecordingDirectory(const QString &dir) )
+ IF_SENDER ( sendOutputFormat (RecordingConfig::OutputFormat of) )
+ IF_SENDER ( sendPreRecording (bool enable, int seconds) )
+ IF_SENDER ( sendRecordingConfig (const RecordingConfig &cfg) )
+
+RECEIVERS:
+ IF_RECEIVER( noticeEncoderBufferChanged (size_t BufferSize, size_t BufferCount) )
+ IF_RECEIVER( noticeSoundFormatChanged (const SoundFormat &sf) )
+ IF_RECEIVER( noticeMP3QualityChanged (int q) )
+ IF_RECEIVER( noticeOggQualityChanged (float q) )
+ IF_RECEIVER( noticeRecordingDirectoryChanged(const QString &dir) )
+ IF_RECEIVER( noticeOutputFormatChanged (RecordingConfig::OutputFormat of) )
+ IF_RECEIVER( noticePreRecordingChanged (bool enable, int seconds) )
+ IF_RECEIVER( noticeRecordingConfigChanged (const RecordingConfig &cfg) )
+
+QUERIES:
+ IF_QUERY ( void queryEncoderBuffer(size_t &BufferSize, size_t &BufferCount) )
+ IF_QUERY ( const SoundFormat &querySoundFormat () )
+ IF_QUERY ( int queryMP3Quality () )
+ IF_QUERY ( float queryOggQuality () )
+ IF_QUERY ( const QString &queryRecordingDirectory() )
+ IF_QUERY ( RecordingConfig::OutputFormat queryOutputFormat() )
+ IF_QUERY ( bool queryPreRecording(int &seconds) )
+ IF_QUERY ( const RecordingConfig &queryRecordingConfig() )
+
+RECEIVERS:
+ virtual void noticeConnectedI (cmplInterface *, bool /*pointer_valid*/);
+ virtual void noticeDisconnectedI (cmplInterface *, bool /*pointer_valid*/);
+};
+
+#endif
diff --git a/kradio3/plugins/recording/recording-config.cpp b/kradio3/plugins/recording/recording-config.cpp
new file mode 100644
index 0000000..131953f
--- /dev/null
+++ b/kradio3/plugins/recording/recording-config.cpp
@@ -0,0 +1,215 @@
+/***************************************************************************
+ recording-config.cpp - description
+ -------------------
+ begin : Mi Apr 30 2005
+ copyright : (C) 2005 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "recording-config.h"
+
+#include <sndfile.h>
+
+RecordingConfig::RecordingConfig ()
+: m_EncodeBufferSize(256*1024),
+ m_EncodeBufferCount(3),
+ m_mp3Quality(7),
+ m_oggQuality(1.0),
+ m_Directory("/tmp"),
+ m_OutputFormat(outputWAV),
+ m_PreRecordingEnable (false),
+ m_PreRecordingSeconds(10)
+{
+ checkFormatSettings();
+}
+
+RecordingConfig::RecordingConfig (const QString &directory,
+ OutputFormat of,
+ const SoundFormat &sf, int mp3_q, float ogg_q)
+: m_EncodeBufferSize(256*1024),
+ m_EncodeBufferCount(3),
+ m_SoundFormat(sf),
+ m_mp3Quality(mp3_q),
+ m_oggQuality(ogg_q),
+ m_Directory(directory),
+ m_OutputFormat(of),
+ m_PreRecordingEnable (false),
+ m_PreRecordingSeconds(10)
+{
+ checkFormatSettings();
+}
+
+
+RecordingConfig::RecordingConfig (const RecordingConfig &c)
+ :
+ m_EncodeBufferSize(c.m_EncodeBufferSize),
+ m_EncodeBufferCount(c.m_EncodeBufferCount),
+ m_SoundFormat(c.m_SoundFormat),
+ m_mp3Quality(c.m_mp3Quality),
+ m_oggQuality(c.m_oggQuality),
+ m_Directory(c.m_Directory),
+ m_OutputFormat(c.m_OutputFormat),
+ m_PreRecordingEnable (false),
+ m_PreRecordingSeconds(10)
+{
+ checkFormatSettings();
+}
+
+
+void RecordingConfig::restoreConfig(KConfig *c)
+{
+ m_EncodeBufferSize = c->readNumEntry("encodeBufferSize", 256*1024);
+ m_EncodeBufferCount = c->readNumEntry("encodeBufferCount", 3);
+
+ m_SoundFormat.restoreConfig("", c);
+ m_Directory = c->readEntry("directory", "/tmp");
+ m_mp3Quality = c->readNumEntry("mp3quality", 7);
+ m_oggQuality = c->readDoubleNumEntry("oggquality", 1.0);
+ QString of = c->readEntry("outputFormat", ".wav");
+
+ if (of == ".wav")
+ m_OutputFormat = outputWAV;
+ else if (of == ".aiff")
+ m_OutputFormat = outputAIFF;
+ else if (of == ".au")
+ m_OutputFormat = outputAU;
+#ifdef HAVE_LAME
+ else if (of == ".mp3")
+ m_OutputFormat = outputMP3;
+#endif
+#ifdef HAVE_OGG
+ else if (of == ".ogg")
+ m_OutputFormat = outputOGG;
+#endif
+ else if (of == ".raw")
+ m_OutputFormat = outputRAW;
+
+ // if there was any unknown format
+ else
+ m_OutputFormat = outputWAV;
+
+ m_PreRecordingEnable = c->readBoolEntry("prerecording-enable", false);
+ m_PreRecordingSeconds = c->readNumEntry("prerecording-seconds", 10);
+
+ checkFormatSettings();
+}
+
+
+void RecordingConfig::saveConfig(KConfig *c) const
+{
+ c->writeEntry("encodeBufferSize", m_EncodeBufferSize);
+ c->writeEntry("encodeBufferCount", m_EncodeBufferCount);
+ m_SoundFormat.saveConfig("", c);
+ c->writeEntry("directory", m_Directory);
+ c->writeEntry("mp3quality", m_mp3Quality);
+ c->writeEntry("oggquality", m_oggQuality);
+
+ switch(m_OutputFormat) {
+ case outputWAV: c->writeEntry("outputFormat", ".wav"); break;
+ case outputAIFF: c->writeEntry("outputFormat", ".aiff"); break;
+ case outputAU: c->writeEntry("outputFormat", ".au"); break;
+ case outputMP3: c->writeEntry("outputFormat", ".mp3"); break;
+ case outputOGG: c->writeEntry("outputFormat", ".ogg"); break;
+ case outputRAW: c->writeEntry("outputFormat", ".raw"); break;
+ default: c->writeEntry("outputFormat", ".wav"); break;
+ }
+
+ c->writeEntry("prerecording-enable", m_PreRecordingEnable);
+ c->writeEntry("prerecording-seconds", m_PreRecordingSeconds);
+}
+
+
+void RecordingConfig::getSoundFileInfo(SF_INFO &sinfo, bool input)
+{
+ checkFormatSettings();
+
+ sinfo.samplerate = m_SoundFormat.m_SampleRate;
+ sinfo.channels = m_SoundFormat.m_Channels;
+ sinfo.format = 0;
+ sinfo.seekable = !input;
+
+ // U8 only supported for RAW and WAV
+ if (m_SoundFormat.m_SampleBits == 8) {
+ if ((m_SoundFormat.m_IsSigned &&
+ m_OutputFormat != outputWAV) ||
+ m_OutputFormat == outputAU
+ ) {
+ sinfo.format |= SF_FORMAT_PCM_S8;
+ } else {
+ sinfo.format |= SF_FORMAT_PCM_U8;
+ }
+ }
+ if (m_SoundFormat.m_SampleBits == 16)
+ sinfo.format |= SF_FORMAT_PCM_16;
+
+ if (m_SoundFormat.m_Endianess == LITTLE_ENDIAN)
+ sinfo.format |= SF_ENDIAN_LITTLE;
+ else
+ sinfo.format |= SF_ENDIAN_BIG;
+
+ if (input) {
+ sinfo.format |= SF_FORMAT_RAW;
+ } else {
+ switch (m_OutputFormat) {
+ case outputWAV: sinfo.format |= SF_FORMAT_WAV; break;
+ case outputAIFF: sinfo.format |= SF_FORMAT_AIFF; break;
+ case outputAU: sinfo.format |= SF_FORMAT_AU; break;
+ case outputRAW: sinfo.format |= SF_FORMAT_RAW; break;
+ default: sinfo.format |= SF_FORMAT_WAV; break;
+ }
+ }
+}
+
+
+void RecordingConfig::checkFormatSettings()
+{
+ // correct Endianess and Signs for specific formats
+ switch (m_OutputFormat) {
+ case outputWAV:
+ m_SoundFormat.m_Endianess = LITTLE_ENDIAN;
+ if (m_SoundFormat.m_SampleBits == 8)
+ m_SoundFormat.m_IsSigned = false;
+ // libsndfile only supports signed 16 bit samples
+ if (m_SoundFormat.m_SampleBits == 16)
+ m_SoundFormat.m_IsSigned = true;
+ break;
+ case outputAIFF:
+ m_SoundFormat.m_Endianess = BIG_ENDIAN;
+ // libsndfile only supports signed 16 bit samples
+ if (m_SoundFormat.m_SampleBits == 16)
+ m_SoundFormat.m_IsSigned = true;
+ break;
+ case outputAU:
+ m_SoundFormat.m_Endianess = BIG_ENDIAN;
+ m_SoundFormat.m_IsSigned = true;
+ // libsndfile only supports signed 16 bit samples
+ if (m_SoundFormat.m_SampleBits == 16)
+ m_SoundFormat.m_IsSigned = true;
+ break;
+ case outputMP3:
+ m_SoundFormat.m_IsSigned = true;
+ m_SoundFormat.m_SampleBits = 16;
+ break;
+ case outputOGG:
+ m_SoundFormat.m_IsSigned = true;
+ m_SoundFormat.m_SampleBits = 16;
+ break;
+ case outputRAW:
+ // libsndfile only supports signed 16 bit samples
+ if (m_SoundFormat.m_SampleBits == 16)
+ m_SoundFormat.m_IsSigned = true;
+ break;
+ default:
+ break;
+ }
+}
+
diff --git a/kradio3/plugins/recording/recording-config.h b/kradio3/plugins/recording/recording-config.h
new file mode 100644
index 0000000..bccbb93
--- /dev/null
+++ b/kradio3/plugins/recording/recording-config.h
@@ -0,0 +1,73 @@
+/***************************************************************************
+ recording-config.h - description
+ -------------------
+ begin : Mi Apr 30 2005
+ copyright : (C) 2005 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_RECORDING_CONFIG_H
+#define KRADIO_RECORDING_CONFIG_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "../../src/include/soundformat.h"
+
+class KConfig;
+struct SF_INFO;
+
+class RecordingConfig
+{
+public:
+ enum OutputFormat {
+ outputWAV,
+ outputAIFF,
+ outputAU,
+ outputMP3,
+ outputOGG,
+ outputRAW
+ };
+
+public:
+ RecordingConfig ();
+ RecordingConfig (const QString &directory,
+ OutputFormat of,
+ const SoundFormat &, int mp3_q, float ogg_q);
+ RecordingConfig (const RecordingConfig &c);
+
+ void restoreConfig(KConfig *c);
+ void saveConfig(KConfig *c) const;
+
+ void getSoundFileInfo(SF_INFO &info, bool input);
+
+ void checkFormatSettings();
+
+public:
+ size_t m_EncodeBufferSize;
+ size_t m_EncodeBufferCount;
+
+ SoundFormat m_SoundFormat;
+ int m_mp3Quality;
+ float m_oggQuality;
+ QString m_Directory;
+ OutputFormat m_OutputFormat;
+
+ bool m_PreRecordingEnable;
+ int m_PreRecordingSeconds;
+};
+
+
+
+
+#endif
diff --git a/kradio3/plugins/recording/recording-configuration-ui.ui b/kradio3/plugins/recording/recording-configuration-ui.ui
new file mode 100644
index 0000000..a80fece
--- /dev/null
+++ b/kradio3/plugins/recording/recording-configuration-ui.ui
@@ -0,0 +1,731 @@
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
+<class>RecordingConfigurationUI</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>RecordingConfigurationUI</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>468</width>
+ <height>197</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>RecordingConfigurationUI</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <widget class="QTabWidget" row="0" column="0">
+ <property name="name">
+ <cstring>kTabWidget13</cstring>
+ </property>
+ <widget class="QWidget">
+ <property name="name">
+ <cstring>TabPage_2</cstring>
+ </property>
+ <attribute name="title">
+ <string>Output</string>
+ </attribute>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <widget class="QLayoutWidget" row="0" column="0">
+ <property name="name">
+ <cstring>layout7</cstring>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget" row="2" column="1" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>layout3_2</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <spacer>
+ <property name="name">
+ <cstring>spacer5_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>141</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QSpinBox">
+ <property name="name">
+ <cstring>editOggQuality</cstring>
+ </property>
+ <property name="maxValue">
+ <number>9</number>
+ </property>
+ <property name="minValue">
+ <number>0</number>
+ </property>
+ <property name="value">
+ <number>7</number>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget" row="1" column="2">
+ <property name="name">
+ <cstring>layout3</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <spacer>
+ <property name="name">
+ <cstring>spacer5</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>141</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QSpinBox">
+ <property name="name">
+ <cstring>editMP3Quality</cstring>
+ </property>
+ <property name="maxValue">
+ <number>9</number>
+ </property>
+ <property name="minValue">
+ <number>0</number>
+ </property>
+ <property name="value">
+ <number>5</number>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLabel" row="1" column="0" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>labelMP3Quality</cstring>
+ </property>
+ <property name="text">
+ <string>MP3 Quality(0 - high, 9 - low)</string>
+ </property>
+ </widget>
+ <widget class="KURLRequester" row="3" column="2">
+ <property name="name">
+ <cstring>editDirectory</cstring>
+ </property>
+ </widget>
+ <widget class="KComboBox" row="0" column="2">
+ <item>
+ <property name="text">
+ <string>raw pcm output (.raw)</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Microsoft Wave (.wav)</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Apple/SGI (.aiff)</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Sun/NeXT (.au)</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>MP3 Compressed (.mp3)</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Ogg/Vorbis Compressed (.ogg)</string>
+ </property>
+ </item>
+ <property name="name">
+ <cstring>editFileFormat</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <widget class="QLabel" row="3" column="0" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>lableDirectory</cstring>
+ </property>
+ <property name="text">
+ <string>Recording Directory</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="0" column="0" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>lableFileFormat</cstring>
+ </property>
+ <property name="text">
+ <string>File Format</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="2" column="0">
+ <property name="name">
+ <cstring>labelOggQuality</cstring>
+ </property>
+ <property name="text">
+ <string>Ogg Quality(0 - low, 9 - high)</string>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ <spacer row="1" column="0">
+ <property name="name">
+ <cstring>spacer132</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>5</height>
+ </size>
+ </property>
+ </spacer>
+ </grid>
+ </widget>
+ <widget class="QWidget">
+ <property name="name">
+ <cstring>TabPage</cstring>
+ </property>
+ <attribute name="title">
+ <string>I&amp;nput</string>
+ </attribute>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <widget class="QLayoutWidget" row="0" column="0">
+ <property name="name">
+ <cstring>layout69</cstring>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <spacer row="0" column="2">
+ <property name="name">
+ <cstring>spacer1</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Minimum</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>225</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="KComboBox" row="0" column="1">
+ <item>
+ <property name="text">
+ <string>48000</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>44100</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>22050</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>11025</string>
+ </property>
+ </item>
+ <property name="name">
+ <cstring>editRate</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>3</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <widget class="QLabel" row="2" column="0">
+ <property name="name">
+ <cstring>lableEndianess</cstring>
+ </property>
+ <property name="text">
+ <string>Endianess</string>
+ </property>
+ </widget>
+ <spacer row="3" column="2">
+ <property name="name">
+ <cstring>spacer1_3</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Minimum</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>225</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="KComboBox" row="3" column="1">
+ <item>
+ <property name="text">
+ <string>Stereo</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Mono</string>
+ </property>
+ </item>
+ <property name="name">
+ <cstring>editChannels</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>3</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <widget class="QLabel" row="0" column="0">
+ <property name="name">
+ <cstring>labelRate</cstring>
+ </property>
+ <property name="text">
+ <string>Sample Rate</string>
+ </property>
+ </widget>
+ <widget class="KComboBox" row="2" column="1">
+ <item>
+ <property name="text">
+ <string>Little Endian</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Big Endian</string>
+ </property>
+ </item>
+ <property name="name">
+ <cstring>editEndianess</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>3</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <widget class="KComboBox" row="1" column="1">
+ <item>
+ <property name="text">
+ <string>16</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>8</string>
+ </property>
+ </item>
+ <property name="name">
+ <cstring>editBits</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>3</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <widget class="QLabel" row="3" column="0">
+ <property name="name">
+ <cstring>lableChannels</cstring>
+ </property>
+ <property name="text">
+ <string>Channels</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="1" column="0">
+ <property name="name">
+ <cstring>lableBits</cstring>
+ </property>
+ <property name="text">
+ <string>Sample Bits</string>
+ </property>
+ </widget>
+ <widget class="KComboBox" row="1" column="2">
+ <item>
+ <property name="text">
+ <string>Signed</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Unsigned</string>
+ </property>
+ </item>
+ <property name="name">
+ <cstring>editSign</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>3</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <spacer row="2" column="2">
+ <property name="name">
+ <cstring>spacer1_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Minimum</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>225</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </grid>
+ </widget>
+ <spacer row="1" column="0">
+ <property name="name">
+ <cstring>spacer131</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>5</height>
+ </size>
+ </property>
+ </spacer>
+ </grid>
+ </widget>
+ <widget class="QWidget">
+ <property name="name">
+ <cstring>TabPage_3</cstring>
+ </property>
+ <attribute name="title">
+ <string>&amp;Buffers</string>
+ </attribute>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <widget class="QLayoutWidget" row="0" column="0">
+ <property name="name">
+ <cstring>layout5</cstring>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QSpinBox" row="0" column="1">
+ <property name="name">
+ <cstring>editBufferSize</cstring>
+ </property>
+ <property name="suffix">
+ <string> kB</string>
+ </property>
+ <property name="maxValue">
+ <number>2048</number>
+ </property>
+ <property name="minValue">
+ <number>64</number>
+ </property>
+ <property name="lineStep">
+ <number>16</number>
+ </property>
+ <property name="value">
+ <number>256</number>
+ </property>
+ </widget>
+ <widget class="QLabel" row="0" column="0">
+ <property name="name">
+ <cstring>labelEditBufferSize</cstring>
+ </property>
+ <property name="text">
+ <string>Encoding Buffer Size</string>
+ </property>
+ </widget>
+ <widget class="QSpinBox" row="1" column="1">
+ <property name="name">
+ <cstring>editBufferCount</cstring>
+ </property>
+ <property name="minValue">
+ <number>3</number>
+ </property>
+ <property name="value">
+ <number>3</number>
+ </property>
+ </widget>
+ <widget class="QLabel" row="1" column="0">
+ <property name="name">
+ <cstring>labelEditBufferCount</cstring>
+ </property>
+ <property name="text">
+ <string>Number of Buffers</string>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ <spacer row="1" column="0">
+ <property name="name">
+ <cstring>spacer132_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>16</height>
+ </size>
+ </property>
+ </spacer>
+ </grid>
+ </widget>
+ <widget class="QWidget">
+ <property name="name">
+ <cstring>TabPage_4</cstring>
+ </property>
+ <attribute name="title">
+ <string>Pre-Recordin&amp;g</string>
+ </attribute>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <widget class="QLayoutWidget" row="0" column="0">
+ <property name="name">
+ <cstring>layout68</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout6</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>m_checkboxPreRecordingEnable</cstring>
+ </property>
+ <property name="text">
+ <string>E&amp;nable</string>
+ </property>
+ <property name="accel">
+ <string>Alt+N</string>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer7</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>380</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout7</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>m_labelPreRecordingTime</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>PreRecording Time</string>
+ </property>
+ </widget>
+ <widget class="QSpinBox">
+ <property name="name">
+ <cstring>m_spinboxPreRecordingSeconds</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="suffix">
+ <string> s</string>
+ </property>
+ <property name="maxValue">
+ <number>999</number>
+ </property>
+ <property name="minValue">
+ <number>1</number>
+ </property>
+ <property name="lineStep">
+ <number>1</number>
+ </property>
+ <property name="value">
+ <number>10</number>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ </vbox>
+ </widget>
+ <spacer row="1" column="0">
+ <property name="name">
+ <cstring>spacer132_3</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>16</height>
+ </size>
+ </property>
+ </spacer>
+ </grid>
+ </widget>
+ </widget>
+ </grid>
+</widget>
+<customwidgets>
+</customwidgets>
+<connections>
+ <connection>
+ <sender>m_checkboxPreRecordingEnable</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>m_spinboxPreRecordingSeconds</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>m_checkboxPreRecordingEnable</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>m_labelPreRecordingTime</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+</connections>
+<layoutdefaults spacing="6" margin="0"/>
+<includehints>
+ <includehint>kurlrequester.h</includehint>
+ <includehint>klineedit.h</includehint>
+ <includehint>kpushbutton.h</includehint>
+ <includehint>kcombobox.h</includehint>
+ <includehint>kcombobox.h</includehint>
+ <includehint>kcombobox.h</includehint>
+ <includehint>kcombobox.h</includehint>
+ <includehint>kcombobox.h</includehint>
+ <includehint>kcombobox.h</includehint>
+</includehints>
+</UI>
diff --git a/kradio3/plugins/recording/recording-configuration.cpp b/kradio3/plugins/recording/recording-configuration.cpp
new file mode 100644
index 0000000..d41bf01
--- /dev/null
+++ b/kradio3/plugins/recording/recording-configuration.cpp
@@ -0,0 +1,414 @@
+/***************************************************************************
+ recording-configuration.cpp - description
+ -------------------
+ begin : So Aug 31 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "recording-configuration.h"
+//#include "recording-context.h"
+
+#include <kurlrequester.h>
+#include <kcombobox.h>
+#include <qspinbox.h>
+#include <qlabel.h>
+#include <qcheckbox.h>
+
+#include <ktabwidget.h>
+
+
+RecordingConfiguration::RecordingConfiguration (QWidget *parent)
+ : RecordingConfigurationUI(parent),
+ m_dirty(true),
+ m_ignore_gui_updates(false)
+{
+ editDirectory->setMode(KFile::Directory | KFile::ExistingOnly);
+
+ QObject::connect(editFileFormat, SIGNAL(activated(int)),
+ this, SLOT(slotFormatSelectionChanged()));
+ QObject::connect(editBits, SIGNAL(activated(int)),
+ this, SLOT(slotFormatSelectionChanged()));
+
+ connect(editRate, SIGNAL(activated(int)), SLOT(slotSetDirty()));
+ connect(editBits, SIGNAL(activated(int)), SLOT(slotSetDirty()));
+ connect(editSign, SIGNAL(activated(int)), SLOT(slotSetDirty()));
+ connect(editEndianess, SIGNAL(activated(int)), SLOT(slotSetDirty()));
+ connect(editChannels, SIGNAL(activated(int)), SLOT(slotSetDirty()));
+ connect(editFileFormat, SIGNAL(activated(int)), SLOT(slotSetDirty()));
+ connect(editMP3Quality, SIGNAL(valueChanged(int)), SLOT(slotSetDirty()));
+ connect(editOggQuality, SIGNAL(valueChanged(int)), SLOT(slotSetDirty()));
+ connect(editDirectory, SIGNAL(textChanged(const QString &)), SLOT(slotSetDirty()));
+ connect(editBufferSize, SIGNAL(valueChanged(int)), SLOT(slotSetDirty()));
+ connect(editBufferCount, SIGNAL(valueChanged(int)), SLOT(slotSetDirty()));
+ connect(m_spinboxPreRecordingSeconds, SIGNAL(valueChanged(int)), SLOT(slotSetDirty()));
+ connect(m_checkboxPreRecordingEnable, SIGNAL(toggled(bool)), SLOT(slotSetDirty()));
+
+// attention: remove items with higher index first ;-) otherwise indexes are not valid
+#ifndef HAVE_OGG
+ editFileFormat->removeItem(FORMAT_OGG_IDX_ORG);
+ delete editOggQuality;
+ editOggQuality = NULL;
+ delete labelOggQuality;
+ labelOggQuality = NULL;
+#endif
+#ifndef HAVE_LAME
+ editFileFormat->removeItem(FORMAT_MP3_IDX_ORG);
+ delete editMP3Quality;
+ editMP3Quality = NULL;
+ delete labelMP3Quality;
+ labelMP3Quality = NULL;
+#endif
+}
+
+
+RecordingConfiguration::~RecordingConfiguration ()
+{
+}
+
+
+void RecordingConfiguration::setGUIBuffers(const RecordingConfig &c)
+{
+ editBufferSize->setValue(c.m_EncodeBufferSize / 1024);
+ editBufferCount->setValue(c.m_EncodeBufferCount);
+}
+
+void RecordingConfiguration::setGUIDirectories(const RecordingConfig &c)
+{
+ editDirectory->setURL(c.m_Directory);
+}
+
+void RecordingConfiguration::setGUISoundFormat(const RecordingConfig &c)
+{
+ switch (c.m_SoundFormat.m_SampleBits) {
+ case 8 : editBits->setCurrentItem(BITS_8_IDX ); break;
+ case 16: editBits->setCurrentItem(BITS_16_IDX); break;
+ default: editBits->setCurrentItem(BITS_16_IDX);
+ }
+ switch (c.m_SoundFormat.m_Channels) {
+ case 1 : editChannels->setCurrentItem(CHANNELS_MONO_IDX); break;
+ case 2 : editChannels->setCurrentItem(CHANNELS_STEREO_IDX); break;
+ default: editChannels->setCurrentItem(CHANNELS_STEREO_IDX); break;
+ }
+ switch (c.m_SoundFormat.m_IsSigned) {
+ case 0 : editSign->setCurrentItem(SIGN_UNSIGNED_IDX); break;
+ case 1 : editSign->setCurrentItem(SIGN_SIGNED_IDX); break;
+ default: editSign->setCurrentItem(SIGN_SIGNED_IDX); break;
+ }
+ switch (c.m_SoundFormat.m_SampleRate) {
+ case 48000: editRate->setCurrentItem(RATE_48000_IDX); break;
+ case 44100: editRate->setCurrentItem(RATE_44100_IDX); break;
+ case 22050: editRate->setCurrentItem(RATE_22050_IDX); break;
+ case 11025: editRate->setCurrentItem(RATE_11025_IDX); break;
+ default: editRate->setCurrentItem(RATE_44100_IDX); break;
+ }
+ switch (c.m_SoundFormat.m_Endianess) {
+ case BIG_ENDIAN : editEndianess->setCurrentItem(ENDIAN_BIG_IDX); break;
+ case LITTLE_ENDIAN : editEndianess->setCurrentItem(ENDIAN_LITTLE_IDX); break;
+ default: editEndianess->setCurrentItem(ENDIAN_LITTLE_IDX); break;
+ }
+}
+
+void RecordingConfiguration::setGUIOutputFormat(const RecordingConfig &c)
+{
+ switch (c.m_OutputFormat) {
+ case RecordingConfig::outputWAV: editFileFormat->setCurrentItem(FORMAT_WAV_IDX); break;
+ case RecordingConfig::outputAIFF: editFileFormat->setCurrentItem(FORMAT_AIFF_IDX); break;
+ case RecordingConfig::outputAU: editFileFormat->setCurrentItem(FORMAT_AU_IDX); break;
+ case RecordingConfig::outputRAW: editFileFormat->setCurrentItem(FORMAT_RAW_IDX); break;
+#ifdef HAVE_LAME
+ case RecordingConfig::outputMP3: editFileFormat->setCurrentItem(FORMAT_MP3_IDX); break;
+#endif
+#ifdef HAVE_OGG
+ case RecordingConfig::outputOGG: editFileFormat->setCurrentItem(FORMAT_OGG_IDX); break;
+#endif
+ default: editFileFormat->setCurrentItem(FORMAT_WAV_IDX); break;
+ }
+}
+
+void RecordingConfiguration::setGUIEncoderQuality(const RecordingConfig &c)
+{
+#ifdef HAVE_LAME
+ editMP3Quality->setValue(c.m_mp3Quality);
+#endif
+#ifdef HAVE_OGG
+ editOggQuality->setValue((int)(c.m_oggQuality * 9));
+#endif
+}
+
+
+void RecordingConfiguration::setGUIPreRecording(const RecordingConfig &c)
+{
+ m_spinboxPreRecordingSeconds->setValue(c.m_PreRecordingSeconds);
+ m_checkboxPreRecordingEnable->setChecked(c.m_PreRecordingEnable);
+}
+
+
+void RecordingConfiguration::slotOK()
+{
+ if (m_dirty) {
+ storeConfig();
+ sendRecordingConfig(m_RecordingConfig);
+ m_dirty = false;
+ }
+}
+
+
+void RecordingConfiguration::storeConfig()
+{
+ RecordingConfig &c = m_RecordingConfig;
+
+ c.m_EncodeBufferSize = editBufferSize->value() * 1024;
+ c.m_EncodeBufferCount = editBufferCount->value();
+
+ c.m_Directory = editDirectory->url();
+
+ switch(editRate->currentItem()) {
+ case RATE_48000_IDX: c.m_SoundFormat.m_SampleRate = 48000; break;
+ case RATE_44100_IDX: c.m_SoundFormat.m_SampleRate = 44100; break;
+ case RATE_22050_IDX: c.m_SoundFormat.m_SampleRate = 22050; break;
+ case RATE_11025_IDX: c.m_SoundFormat.m_SampleRate = 11025; break;
+ default: c.m_SoundFormat.m_SampleRate = 44100; break;
+ }
+ switch(editChannels->currentItem()) {
+ case CHANNELS_MONO_IDX: c.m_SoundFormat.m_Channels = 1; break;
+ case CHANNELS_STEREO_IDX: c.m_SoundFormat.m_Channels = 2; break;
+ default: c.m_SoundFormat.m_Channels = 2; break;
+ }
+ switch(editSign->currentItem()) {
+ case SIGN_UNSIGNED_IDX: c.m_SoundFormat.m_IsSigned = false; break;
+ case SIGN_SIGNED_IDX: c.m_SoundFormat.m_IsSigned = true; break;
+ default: c.m_SoundFormat.m_IsSigned = true; break;
+ }
+ switch(editEndianess->currentItem()) {
+ case ENDIAN_LITTLE_IDX: c.m_SoundFormat.m_Endianess = LITTLE_ENDIAN; break;
+ case ENDIAN_BIG_IDX: c.m_SoundFormat.m_Endianess = BIG_ENDIAN; break;
+ default: c.m_SoundFormat.m_Endianess = LITTLE_ENDIAN; break;
+ }
+ switch(editBits->currentItem()) {
+ case BITS_8_IDX: c.m_SoundFormat.m_SampleBits = 8; break;
+ case BITS_16_IDX: c.m_SoundFormat.m_SampleBits = 16; break;
+ default: c.m_SoundFormat.m_SampleBits = 16; break;
+ }
+ switch(editFileFormat->currentItem()) {
+ case FORMAT_WAV_IDX: c.m_OutputFormat = RecordingConfig::outputWAV; break;
+ case FORMAT_AIFF_IDX: c.m_OutputFormat = RecordingConfig::outputAIFF; break;
+ case FORMAT_AU_IDX: c.m_OutputFormat = RecordingConfig::outputAU; break;
+ case FORMAT_RAW_IDX: c.m_OutputFormat = RecordingConfig::outputRAW; break;
+#ifdef HAVE_LAME
+ case FORMAT_MP3_IDX: c.m_OutputFormat = RecordingConfig::outputMP3; break;
+#endif
+#ifdef HAVE_OGG
+ case FORMAT_OGG_IDX: c.m_OutputFormat = RecordingConfig::outputOGG; break;
+#endif
+ default: c.m_OutputFormat = RecordingConfig::outputWAV; break;
+ }
+#ifdef HAVE_LAME
+ c.m_mp3Quality = editMP3Quality->value();
+#endif
+#ifdef HAVE_OGG
+ c.m_oggQuality = ((float)editOggQuality->value()) / 9.0f;
+#endif
+
+ c.m_PreRecordingEnable = m_checkboxPreRecordingEnable->isChecked();
+ c.m_PreRecordingSeconds = m_spinboxPreRecordingSeconds->value();
+
+ c.checkFormatSettings();
+}
+
+
+void RecordingConfiguration::slotCancel()
+{
+ if (m_dirty) {
+ noticeRecordingConfigChanged(m_RecordingConfig);
+ m_dirty = false;
+ }
+}
+
+
+void RecordingConfiguration::slotFormatSelectionChanged()
+{
+ int bitsIDX = editBits->currentItem();
+ int formatIDX = editFileFormat->currentItem();
+
+ int endianTest = 0x04030201;
+ bool littleEndian = ((char*)&endianTest)[0] == 0x01;
+
+#ifdef HAVE_LAME
+ editMP3Quality ->setEnabled(false);
+ labelMP3Quality->setEnabled(false);
+#endif
+#ifdef HAVE_OGG
+ editOggQuality ->setEnabled(false);
+ labelOggQuality->setEnabled(false);
+#endif
+
+ editBits->setEnabled(true);
+
+ if (formatIDX == FORMAT_MP3_IDX) {
+ editBits->setDisabled(true);
+ editBits->setCurrentItem(BITS_16_IDX);
+ editSign->setDisabled(true);
+ editSign->setCurrentItem(SIGN_SIGNED_IDX);
+#ifdef HAVE_LAME
+ editMP3Quality ->setEnabled(true);
+ labelMP3Quality->setEnabled(true);
+#endif
+ } else if (formatIDX == FORMAT_OGG_IDX) {
+ editBits->setDisabled(true);
+ editBits->setCurrentItem(BITS_16_IDX);
+ editSign->setDisabled(true);
+ editSign->setCurrentItem(SIGN_SIGNED_IDX);
+#ifdef HAVE_OGG
+ editOggQuality ->setEnabled(true);
+ labelOggQuality->setEnabled(true);
+#endif
+ } else {
+ if (bitsIDX == BITS_8_IDX) {
+ if (formatIDX == FORMAT_RAW_IDX || formatIDX == FORMAT_AIFF_IDX) {
+ editSign->setDisabled(false);
+ } else {
+ editSign->setDisabled(true);
+ editSign->setCurrentItem(formatIDX == FORMAT_WAV_IDX ? SIGN_UNSIGNED_IDX : SIGN_SIGNED_IDX);
+ }
+ } else {
+ editSign->setDisabled(true);
+ editSign->setCurrentItem(SIGN_SIGNED_IDX);
+ }
+ }
+
+ switch (formatIDX) {
+ case FORMAT_RAW_IDX :
+ editEndianess->setDisabled(false);
+ break;
+#ifdef HAVE_LAME
+ case FORMAT_MP3_IDX :
+ editEndianess->setCurrentItem(littleEndian ? ENDIAN_LITTLE_IDX : ENDIAN_BIG_IDX);
+ editEndianess->setDisabled(true);
+ break;
+#endif
+#ifdef HAVE_OGG
+ case FORMAT_OGG_IDX :
+ editEndianess->setCurrentItem(littleEndian ? ENDIAN_LITTLE_IDX : ENDIAN_BIG_IDX);
+ editEndianess->setDisabled(true);
+ break;
+#endif
+ default:
+ editEndianess->setDisabled(true);
+ if (formatIDX == FORMAT_AIFF_IDX || formatIDX == FORMAT_AU_IDX) {
+ editEndianess->setCurrentItem(ENDIAN_BIG_IDX);
+ } else {
+ editEndianess->setCurrentItem(ENDIAN_LITTLE_IDX);
+ }
+ break;
+ }
+}
+
+
+
+bool RecordingConfiguration::noticeEncoderBufferChanged (size_t BufferSize, size_t BufferCount)
+{
+ m_ignore_gui_updates = true;
+ m_RecordingConfig.m_EncodeBufferSize = BufferSize;
+ m_RecordingConfig.m_EncodeBufferCount = BufferCount;
+ setGUIBuffers(m_RecordingConfig);
+ slotFormatSelectionChanged();
+ m_ignore_gui_updates = false;
+ return true;
+}
+
+
+bool RecordingConfiguration::noticeSoundFormatChanged (const SoundFormat &sf)
+{
+ m_ignore_gui_updates = true;
+ m_RecordingConfig.m_SoundFormat = sf;
+ setGUISoundFormat(m_RecordingConfig);
+ slotFormatSelectionChanged();
+ m_ignore_gui_updates = false;
+ return true;
+}
+
+
+bool RecordingConfiguration::noticeMP3QualityChanged (int q)
+{
+ m_ignore_gui_updates = true;
+ m_RecordingConfig.m_mp3Quality = q;
+ setGUIEncoderQuality(m_RecordingConfig);
+ slotFormatSelectionChanged();
+ m_ignore_gui_updates = false;
+ return true;
+}
+
+bool RecordingConfiguration::noticeOggQualityChanged (float q)
+{
+ m_ignore_gui_updates = true;
+ m_RecordingConfig.m_oggQuality = q;
+ setGUIEncoderQuality(m_RecordingConfig);
+ slotFormatSelectionChanged();
+ m_ignore_gui_updates = false;
+ return true;
+}
+
+bool RecordingConfiguration::noticeRecordingDirectoryChanged(const QString &dir)
+{
+ m_ignore_gui_updates = true;
+ m_RecordingConfig.m_Directory = dir;
+ setGUIDirectories(m_RecordingConfig);
+ slotFormatSelectionChanged();
+ m_ignore_gui_updates = false;
+ return true;
+}
+
+bool RecordingConfiguration::noticeOutputFormatChanged (RecordingConfig::OutputFormat of)
+{
+ m_ignore_gui_updates = true;
+ m_RecordingConfig.m_OutputFormat = of;
+ setGUIOutputFormat(m_RecordingConfig);
+ slotFormatSelectionChanged();
+ m_ignore_gui_updates = false;
+ return true;
+}
+
+bool RecordingConfiguration::noticePreRecordingChanged (bool enable, int seconds)
+{
+ m_ignore_gui_updates = true;
+ m_RecordingConfig.m_PreRecordingEnable = enable;
+ m_RecordingConfig.m_PreRecordingSeconds = seconds;
+ setGUIPreRecording(m_RecordingConfig);
+ m_ignore_gui_updates = false;
+ return true;
+}
+
+bool RecordingConfiguration::noticeRecordingConfigChanged(const RecordingConfig &c)
+{
+ m_ignore_gui_updates = true;
+ m_RecordingConfig = c;
+ setGUIBuffers(c);
+ setGUIDirectories(c);
+ setGUISoundFormat(c);
+ setGUIOutputFormat(c);
+ setGUIEncoderQuality(c);
+ setGUIPreRecording(c);
+ slotFormatSelectionChanged();
+ m_ignore_gui_updates = false;
+ return true;
+}
+
+void RecordingConfiguration::slotSetDirty()
+{
+ if (!m_ignore_gui_updates) {
+ m_dirty = true;
+ }
+}
+
+
+#include "recording-configuration.moc"
diff --git a/kradio3/plugins/recording/recording-configuration.h b/kradio3/plugins/recording/recording-configuration.h
new file mode 100644
index 0000000..bf1b8f6
--- /dev/null
+++ b/kradio3/plugins/recording/recording-configuration.h
@@ -0,0 +1,126 @@
+/***************************************************************************
+ recording-configuration.h - description
+ -------------------
+ begin : So Aug 31 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_RECORDING_CONFIGURATION_H
+#define KRADIO_RECORDING_CONFIGURATION_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "../../src/include/soundformat.h"
+
+#include "recording-config.h"
+#include "reccfg_interfaces.h"
+#include "recording-configuration-ui.h"
+
+#define RATE_48000_IDX 0
+#define RATE_44100_IDX 1
+#define RATE_22050_IDX 2
+#define RATE_11025_IDX 3
+
+#define CHANNELS_STEREO_IDX 0
+#define CHANNELS_MONO_IDX 1
+
+#define SIGN_SIGNED_IDX 0
+#define SIGN_UNSIGNED_IDX 1
+
+#define BITS_16_IDX 0
+#define BITS_8_IDX 1
+
+#define ENDIAN_LITTLE_IDX 0
+#define ENDIAN_BIG_IDX 1
+
+#define FORMAT_RAW_IDX 0
+#define FORMAT_WAV_IDX 1
+#define FORMAT_AIFF_IDX 2
+#define FORMAT_AU_IDX 3
+#define NEXT_IDX1 4
+
+#define FORMAT_MP3_IDX_ORG 4
+#define FORMAT_OGG_IDX_ORG 5
+
+
+#ifdef HAVE_LAME
+ #define FORMAT_MP3_IDX NEXT_IDX1
+ #define NEXT_IDX2 (NEXT_IDX1+1)
+#else
+ #define FORMAT_MP3_IDX (-1)
+ #define NEXT_IDX2 NEXT_IDX1
+#endif
+
+#ifdef HAVE_OGG
+ #define FORMAT_OGG_IDX NEXT_IDX2
+ #define NEXT_IDX3 (NEXT_IDX2+1)
+#else
+ #define FORMAT_OGG_IDX (-1)
+ #define NEXT_IDX3 NEXT_IDX2
+#endif
+
+
+
+
+
+
+class RecordingConfiguration : public RecordingConfigurationUI,
+ public IRecCfgClient
+{
+Q_OBJECT
+public :
+ RecordingConfiguration (QWidget *parent);
+ ~RecordingConfiguration ();
+
+// IRecCfgClient
+
+ bool noticeEncoderBufferChanged (size_t BufferSize, size_t BufferCount);
+ bool noticeSoundFormatChanged (const SoundFormat &sf);
+ bool noticeMP3QualityChanged (int q);
+ bool noticeOggQualityChanged (float q);
+ bool noticeRecordingDirectoryChanged(const QString &dir);
+ bool noticeOutputFormatChanged (RecordingConfig::OutputFormat of);
+ bool noticePreRecordingChanged (bool enable, int seconds);
+ bool noticeRecordingConfigChanged (const RecordingConfig &cfg);
+
+protected slots:
+
+ void slotOK();
+ void slotCancel();
+ void slotSetDirty();
+
+ void slotFormatSelectionChanged();
+
+protected:
+
+ void storeConfig();
+
+ void setGUIBuffers(const RecordingConfig &c);
+ void setGUIDirectories(const RecordingConfig &c);
+ void setGUISoundFormat(const RecordingConfig &c);
+ void setGUIOutputFormat(const RecordingConfig &c);
+ void setGUIPreRecording(const RecordingConfig &c);
+ void setGUIEncoderQuality(const RecordingConfig &c);
+
+ RecordingConfig m_RecordingConfig;
+
+ bool m_dirty;
+ bool m_ignore_gui_updates;
+};
+
+
+
+
+#endif
diff --git a/kradio3/plugins/recording/recording-datamonitor.cpp b/kradio3/plugins/recording/recording-datamonitor.cpp
new file mode 100644
index 0000000..cd8e0f5
--- /dev/null
+++ b/kradio3/plugins/recording/recording-datamonitor.cpp
@@ -0,0 +1,278 @@
+/***************************************************************************
+ recording-monitor-widget.cpp - description
+ -------------------
+ begin : So Sep 7 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "recording-datamonitor.h"
+//#include "recording-context.h"
+#include <math.h>
+
+#include <qpainter.h>
+#include <qimage.h>
+#include <qpixmap.h>
+#include <kimageeffect.h> // fading, blending, ...
+#include <kpixmapio.h> // fast conversion between QPixmap/QImage
+#include <limits.h>
+#include <stdlib.h>
+
+#include <klocale.h>
+
+#define CHANNEL_H_MIN 20
+#define BLOCK_W_MIN 10
+#define W_MIN (20 * (BLOCK_W_MIN))
+
+RecordingDataMonitor::RecordingDataMonitor(QWidget *parent, const char *name)
+ : QFrame(parent, name),
+ m_channelsMax(NULL),
+ m_channelsAvg(NULL),
+ m_maxValue(INT_MAX),
+ m_channels(0),
+ m_pActiveBlocks(NULL)
+{
+ setFrameStyle(Box | Sunken);
+ setLineWidth(1);
+ setMidLineWidth(1);
+
+ setChannels(2);
+
+ setColors(QColor(20, 244, 20),
+ QColor(10, 117, 10));
+
+ setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding));
+}
+
+
+RecordingDataMonitor::~RecordingDataMonitor()
+{
+ if (m_channelsMax) delete[] m_channelsMax;
+ if (m_channelsAvg) delete[] m_channelsAvg;
+ if (m_pActiveBlocks) delete[] m_pActiveBlocks;
+}
+
+
+
+// own stuff
+
+void RecordingDataMonitor::setChannels(int n)
+{
+ if (n != m_channels) {
+ if (m_channelsMax) delete[] m_channelsMax;
+ if (m_channelsAvg) delete[] m_channelsAvg;
+ if (m_pActiveBlocks) delete[] m_pActiveBlocks;
+ m_channels = n > 0 ? n : 0;
+ if (m_channels > 0) {
+ m_channelsMax = new int[m_channels];
+ m_channelsAvg = new double[m_channels];
+ m_pActiveBlocks = new int[m_channels];
+ for (int i = 0; i < m_channels; ++i) {
+ m_pActiveBlocks[i] = 0;
+ }
+ } else {
+ m_channelsMax = NULL;
+ m_channelsAvg = NULL;
+ m_pActiveBlocks = NULL;
+ }
+ }
+
+ for (int i = 0; i < m_channels; ++i) {
+ m_channelsMax[i] = 0;
+ m_channelsAvg[i] = 0;
+ }
+ setMinimumSize(QSize(W_MIN, (m_channels + 1 )* CHANNEL_H_MIN));
+}
+
+
+// QT/KDE ...
+
+void RecordingDataMonitor::drawContents(QPainter *painter)
+{
+ if (painter)
+ internalDrawContents(*painter, true);
+}
+
+void RecordingDataMonitor::internalDrawContents(QPainter &painter, bool repaintAll)
+{
+ if (m_channels <= 0) return;
+ QRect r = contentsRect();
+
+ QPen activePen (colorGroup().color(QColorGroup::Text), 1);
+ QPen inactivePen (colorGroup().color(QColorGroup::Mid), 1);
+ QBrush activeBrush = colorGroup().brush(QColorGroup::Text);
+ QBrush inactiveBrush = colorGroup().brush(QColorGroup::Mid);
+ QBrush yellowBrush(QColor(255,255,0));
+ QBrush orangeBrush(QColor(255,192,0));
+ QBrush redBrush (QColor(255,0, 0));
+
+
+ double ranges [5] = { 0.75, 0.83, 0.91, 1.0, 999 };
+ QBrush *brushes[5] = { &activeBrush, &yellowBrush, &orangeBrush, &redBrush, &redBrush };
+
+ painter.setBrush( isEnabled() ? activeBrush : inactiveBrush);
+
+ int nBlocks = (r.width()-1) / BLOCK_W_MIN;
+ int xoffs = (r.width()-1) % BLOCK_W_MIN;
+ int chHeight = (r.height()-1-CHANNEL_H_MIN) / m_channels;
+ int yoffs = (r.height()-1) % m_channels;
+
+ double min_dB = 20*log10(1 / (double)m_maxValue );
+
+ int x0 = xoffs/2 + r.top();
+ int y = yoffs/2 + r.left();
+ for (int c = 0; c < m_channels; ++c) {
+ int x = x0;
+
+
+ int startBlock = 0;
+ int endBlock = nBlocks - 1;
+ int oldActiveBlocks = m_pActiveBlocks[c];
+
+ double dBMax = isEnabled() ? 20*log10(m_channelsMax[c] / (double)m_maxValue ) : min_dB;
+
+ m_pActiveBlocks[c] = m_channelsMax[c] ? (int)rint(nBlocks * (min_dB - dBMax) / min_dB) : 0;
+
+ if (!repaintAll) {
+ if (oldActiveBlocks > m_pActiveBlocks[c]) {
+ startBlock = m_pActiveBlocks[c];
+ endBlock = oldActiveBlocks - 1;
+ } else {
+ startBlock = oldActiveBlocks;
+ endBlock = m_pActiveBlocks[c]-1;
+ }
+ }
+
+ int range = 0;
+
+ x += BLOCK_W_MIN * startBlock;
+ for (int b = startBlock; b <= endBlock; ++b) {
+ while (b >= nBlocks * ranges[range]) ++range;
+ painter.fillRect(x+1, y+1, BLOCK_W_MIN-1, chHeight-1,
+ b < m_pActiveBlocks[c] ? *brushes[range] : inactiveBrush);
+ x += BLOCK_W_MIN;
+ }
+
+ y += chHeight;
+ }
+
+ if (repaintAll) {
+ QFont f("Helvetica");
+ painter.setPen (activePen);
+ f.setPixelSize(CHANNEL_H_MIN);
+ painter.setFont(f);
+
+ int maxW = QFontMetrics(f).width(i18n("%1 dB").arg((int)min_dB));
+ int delta_dB = 5;
+ while (abs((long)min_dB) / delta_dB * maxW * 2 > r.width()) delta_dB *= 2;
+
+ for (int dB = 0; dB >= min_dB; dB -= delta_dB) {
+ QString txt = i18n("%1 dB").arg(dB);
+ int w = QFontMetrics(f).width(txt);
+ int x = x0 + (int)(nBlocks * BLOCK_W_MIN * (min_dB - dB) / min_dB) - w;
+ if (x < x0) continue;
+ painter.drawText(x, y + CHANNEL_H_MIN, txt);
+ }
+ }
+}
+
+
+bool RecordingDataMonitor::setColors(const QColor &activeText,
+ const QColor &button)
+{
+ m_colorActiveText = activeText;
+ m_colorButton = button;
+
+ QPalette pl = palette();
+ QColorGroup cg = pl.inactive();
+
+ QBrush fg = cg.brush(QColorGroup::Foreground),
+ btn = cg.brush(QColorGroup::Button),
+ lgt = cg.brush(QColorGroup::Light),
+ drk = cg.brush(QColorGroup::Dark),
+ mid = cg.brush(QColorGroup::Mid),
+ txt = cg.brush(QColorGroup::Text),
+ btx = cg.brush(QColorGroup::BrightText),
+ bas = cg.brush(QColorGroup::Base),
+ bg = cg.brush(QColorGroup::Background);
+
+ fg.setColor (m_colorActiveText);
+ btn.setColor(m_colorButton);
+ lgt.setColor(m_colorButton.light(180));
+ drk.setColor(m_colorButton.light( 50));
+ mid.setColor(m_colorButton.light( 75));
+ txt.setColor(m_colorActiveText);
+ btx.setColor(m_colorActiveText);
+ bas.setColor(m_colorButton);
+ bg.setColor (m_colorButton);
+
+ QColorGroup ncg(fg, btn, lgt, drk, mid, txt, btx, bas, bg);
+ pl.setInactive(ncg);
+ pl.setActive(ncg);
+ setPalette(pl);
+
+ if (parentWidget() && parentWidget()->backgroundPixmap() ){
+ KPixmapIO io;
+ QImage i = io.convertToImage(*parentWidget()->backgroundPixmap());
+ KImageEffect::fade(i, 0.5, colorGroup().color(QColorGroup::Dark));
+ setPaletteBackgroundPixmap(io.convertToPixmap(i));
+ setBackgroundOrigin(WindowOrigin);
+ } else {
+ setBackgroundColor(colorGroup().color(QColorGroup::Button));
+ }
+
+ return true;
+}
+
+
+bool RecordingDataMonitor::noticeSoundStreamData(SoundStreamID /*id*/,
+ const SoundFormat &sf, const char *data, size_t size, size_t &/*consumed_size*/,
+ const SoundMetaData &/*md*/
+)
+{
+ if (!isEnabled())
+ return false;
+ int nSamples = size / sf.frameSize();
+ int sample_size = sf.sampleSize();
+
+ int bias = 0;
+ setChannels(sf.m_Channels);
+ int old_max = m_maxValue;
+ m_maxValue = sf.maxValue();
+ if (!sf.m_IsSigned) {
+ m_maxValue /= 2;
+ bias = -m_maxValue;
+ }
+
+ int c = 0;
+ for (int s = 0; s < nSamples; ++s, ++c, data += sample_size) {
+ if (c >= m_channels) c -= m_channels; // avoid slow c = s % m_channels
+
+ int &m = m_channelsMax[c];
+ int x = abs(sf.convertSampleToInt(data, false) + bias);
+ if (m < x) m = x;
+ m_channelsAvg[c] += x;
+ }
+ for (int i = 0; i < m_channels; ++i)
+ m_channelsAvg[i] /= nSamples;
+
+ QPainter paint(this);
+ if (m_maxValue != old_max) {
+ repaint(true);
+ } else {
+ internalDrawContents(paint, false);
+ }
+ return true;
+}
+
+
+#include "recording-datamonitor.moc"
diff --git a/kradio3/plugins/recording/recording-datamonitor.h b/kradio3/plugins/recording/recording-datamonitor.h
new file mode 100644
index 0000000..c0b7c40
--- /dev/null
+++ b/kradio3/plugins/recording/recording-datamonitor.h
@@ -0,0 +1,66 @@
+/***************************************************************************
+ recording-monitor-widget.h - description
+ -------------------
+ begin : So Sep 7 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_RECORDING_DATA_MONITOR
+#define KRADIO_RECORDING_DATA_MONITOR
+
+#include <qframe.h>
+#include <qcolor.h>
+
+//#include <kradio/interfaces/recording-interfaces.h>
+#include "../../src/include/soundstreamclient_interfaces.h"
+
+class RecordingDataMonitor : public QFrame//,
+ //public ISoundStreamClient
+ //public IRecordingClient
+{
+Q_OBJECT
+public:
+ RecordingDataMonitor(QWidget *parent, const char *name);
+ ~RecordingDataMonitor();
+
+ bool noticeSoundStreamData(SoundStreamID id,
+ const SoundFormat &sf, const char *data, size_t size, size_t &consumed_size,
+ const SoundMetaData &md);
+
+// QT/KDE ...
+
+protected:
+
+ void drawContents(QPainter *p);
+ void internalDrawContents(QPainter &painter, bool repaintAll);
+// own stuff ...
+
+protected:
+
+ void setChannels(int n);
+ bool setColors(const QColor &activeColor, const QColor &bkgnd);
+
+// data
+protected:
+
+ int *m_channelsMax; // maximum absolute value recorded on each channel
+ double *m_channelsAvg; // average value recorded on each channel
+ int m_maxValue; // maximum absolute value possible for samples
+ int m_channels;
+
+ QColor m_colorActiveText, m_colorButton;
+
+ int *m_pActiveBlocks;
+};
+
+#endif
diff --git a/kradio3/plugins/recording/recording-monitor.cpp b/kradio3/plugins/recording/recording-monitor.cpp
new file mode 100644
index 0000000..5d6dbf9
--- /dev/null
+++ b/kradio3/plugins/recording/recording-monitor.cpp
@@ -0,0 +1,402 @@
+/***************************************************************************
+ recording-monitor.cpp - description
+ -------------------
+ begin : Mo Sep 1 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "recording-monitor.h"
+#include "recording-datamonitor.h"
+#include "../../src/include/aboutwidget.h"
+
+#include <qlabel.h>
+#include <qpushbutton.h>
+#include <qlayout.h>
+#include <qcheckbox.h>
+#include <kcombobox.h>
+
+#include <klocale.h>
+#include <kconfig.h>
+#include <kaboutdata.h>
+
+RecordingMonitor::RecordingMonitor(const QString &name)
+ : QWidget(NULL, name.ascii()),
+ WidgetPluginBase(name, i18n("Recording Monitor")),
+ m_recording(false),
+ m_defaultStreamDescription(QString::null)
+{
+ setCaption(i18n("KRadio Recording Monitor"));
+
+ QVBoxLayout *l = new QVBoxLayout(this, 10, 4);
+ QGridLayout *l0 = new QGridLayout(l, 6, 2);
+
+ l0->addWidget( new QLabel(i18n("SoundStream"), this), 0, 0);
+ l0->addWidget(m_comboSoundStreamSelector = new KComboBox( this), 0, 1);
+ l0->addWidget( new QLabel(i18n("Status"), this), 1, 0);
+ l0->addWidget(m_labelStatus = new QLabel(i18n("<undefined>"), this), 1, 1);
+ l0->addWidget( new QLabel(i18n("Recording File"), this), 2, 0);
+ l0->addWidget(m_labelFileName = new QLabel(i18n("<undefined>"), this), 2, 1);
+ l0->addWidget( new QLabel(i18n("File Size"), this), 3, 0);
+ l0->addWidget(m_labelSize = new QLabel(i18n("<undefined>"), this), 3, 1);
+ l0->addWidget( new QLabel(i18n("Recording Time"), this), 4, 0);
+ l0->addWidget(m_labelTime = new QLabel(i18n("<undefined>"), this), 4, 1);
+ l0->addWidget( new QLabel(i18n("Sample Rate"), this), 5, 0);
+ l0->addWidget(m_labelRate = new QLabel(i18n("<undefined>"), this), 5, 1);
+
+ QPushButton *close = new QPushButton(i18n("&Close"), this);
+ m_btnStartStop = new QPushButton(i18n("&Record"), this);
+ QObject::connect(close, SIGNAL(clicked()), this, SLOT(hide()));
+ QObject::connect(m_btnStartStop, SIGNAL(clicked()), this, SLOT(slotStartStopRecording()));
+
+ m_dataMonitor = new RecordingDataMonitor(this, NULL);
+ m_dataMonitor->setEnabled(false);
+
+ QHBoxLayout *hl0 = new QHBoxLayout(l);
+ hl0->addWidget(m_dataMonitor);
+
+ QHBoxLayout *hl2 = new QHBoxLayout(l);
+ hl2->addItem(new QSpacerItem(10, 1));
+ hl2->addWidget(close);
+ hl2->addWidget(m_btnStartStop);
+ hl2->addItem(new QSpacerItem(10, 1));
+
+
+ m_comboSoundStreamSelector->insertItem(i18n("nothing"));
+ QObject::connect(m_comboSoundStreamSelector, SIGNAL(activated(int)), this, SLOT(slotStreamSelected(int)));
+
+ updateRecordingButton();
+}
+
+
+RecordingMonitor::~RecordingMonitor()
+{
+}
+
+// WidgetPluginBase
+
+void RecordingMonitor::saveState (KConfig *config) const
+{
+ config->setGroup(QString("recordingmonitor-") + name());
+
+ WidgetPluginBase::saveState(config);
+}
+
+
+void RecordingMonitor::restoreState (KConfig *config)
+{
+ config->setGroup(QString("recordingmonitor-") + name());
+
+ WidgetPluginBase::restoreState(config, false);
+}
+
+
+bool RecordingMonitor::connectI(Interface *i)
+{
+ bool a = ISoundStreamClient::connectI(i);
+ bool b = WidgetPluginBase::connectI(i);
+ return a || b;
+}
+
+bool RecordingMonitor::disconnectI(Interface *i)
+{
+ bool a = ISoundStreamClient::disconnectI(i);
+ bool b = WidgetPluginBase::disconnectI(i);
+ if (a) {
+ m_comboSoundStreamSelector->clear();
+ m_SoundStreamID2idx.clear();
+ m_idx2SoundStreamID.clear();
+ m_comboSoundStreamSelector->insertItem(i18n("nothing"));
+ }
+ return a || b;
+}
+
+
+void RecordingMonitor::noticeConnectedI (ISoundStreamServer *s, bool pointer_valid)
+{
+ ISoundStreamClient::noticeConnectedI(s, pointer_valid);
+ if (s && pointer_valid) {
+ s->register4_notifySoundStreamCreated(this);
+ s->register4_notifySoundStreamClosed(this);
+ s->register4_notifySoundStreamChanged(this);
+ s->register4_notifySoundStreamData(this);
+ s->register4_sendStartRecordingWithFormat(this);
+ s->register4_sendStopRecording(this);
+
+ QMap<QString, SoundStreamID> tmp;
+ queryEnumerateSoundStreams(tmp);
+
+ m_comboSoundStreamSelector->clear();
+ m_SoundStreamID2idx.clear();
+ m_idx2SoundStreamID.clear();
+ m_comboSoundStreamSelector->insertItem(i18n("nothing"));
+ QMapConstIterator<QString, SoundStreamID> end = tmp.end();
+ for (QMapConstIterator<QString, SoundStreamID> it = tmp.begin(); it != end; ++it) {
+ int idx = m_comboSoundStreamSelector->count();
+ m_comboSoundStreamSelector->insertItem(it.key());
+ m_idx2SoundStreamID[idx] = *it;
+ m_SoundStreamID2idx[*it] = idx;
+ }
+ }
+}
+
+ConfigPageInfo RecordingMonitor::createConfigurationPage()
+{
+ return ConfigPageInfo();
+}
+
+AboutPageInfo RecordingMonitor::createAboutPage()
+{
+/* KAboutData aboutData("kradio",
+ NULL,
+ NULL,
+ I18N_NOOP("Recording Monitor Plugin for KRadio"),
+ KAboutData::License_GPL,
+ "(c) 2002-2005 Martin Witte",
+ 0,
+ "http://sourceforge.net/projects/kradio",
+ 0);
+ aboutData.addAuthor("Martin Witte", "", "witte@kawo1.rwth-aachen.de");
+
+ return AboutPageInfo(
+ new KRadioAboutWidget(aboutData, KRadioAboutWidget::AbtTabbed),
+ i18n("Recording Monitor"),
+ i18n("Recording Monitor Plugin"),
+ "goto"
+ );
+*/
+ return AboutPageInfo();
+}
+
+
+void RecordingMonitor::show()
+{
+ WidgetPluginBase::pShow();
+ QWidget::show();
+}
+
+
+void RecordingMonitor::showOnOrgDesktop()
+{
+ WidgetPluginBase::pShowOnOrgDesktop();
+ //QWidget::show();
+}
+
+void RecordingMonitor::hide()
+{
+ WidgetPluginBase::pHide();
+ QWidget::hide();
+}
+
+
+void RecordingMonitor::showEvent(QShowEvent *e)
+{
+ QWidget::showEvent(e);
+ WidgetPluginBase::pShowEvent(e);
+ //m_comboSoundStreamSelector->setCurrentItem(1);
+ //slotStreamSelected(1);
+}
+
+
+void RecordingMonitor::hideEvent(QHideEvent *e)
+{
+ QWidget::hideEvent(e);
+ WidgetPluginBase::pHideEvent(e);
+ m_comboSoundStreamSelector->setCurrentItem(0);
+ slotStreamSelected(0);
+}
+
+
+void RecordingMonitor::slotStartStopRecording()
+{
+ if (m_currentStream.isValid()) {
+ if (m_recording) {
+ sendStopRecording(m_currentStream);
+ } else {
+ sendStartRecording(m_currentStream);
+ }
+ }
+ updateRecordingButton();
+}
+
+
+bool RecordingMonitor::noticeSoundStreamCreated(SoundStreamID id)
+{
+ QString tmp = QString::null;
+ querySoundStreamDescription(id, tmp);
+
+ int idx = m_comboSoundStreamSelector->count();
+ m_comboSoundStreamSelector->insertItem(tmp);
+ m_idx2SoundStreamID[idx] = id;
+ m_SoundStreamID2idx[id] = idx;
+
+ if (tmp == m_defaultStreamDescription) {
+ m_comboSoundStreamSelector->setCurrentItem(idx);
+ slotStreamSelected(idx);
+ }
+ return true;
+}
+
+
+bool RecordingMonitor::noticeSoundStreamClosed(SoundStreamID id)
+{
+ if (m_SoundStreamID2idx.contains(id)) {
+ int idx = m_SoundStreamID2idx[id];
+ m_idx2SoundStreamID.clear();
+ m_SoundStreamID2idx.remove(id);
+ QMapIterator<SoundStreamID, int> end = m_SoundStreamID2idx.end();
+ for (QMapIterator<SoundStreamID, int> it = m_SoundStreamID2idx.begin(); it != end; ++it) {
+ if (*it > idx) {
+ (*it)--;
+ }
+ m_idx2SoundStreamID[*it] = it.key();
+ }
+ m_comboSoundStreamSelector->removeItem(idx);
+ slotStreamSelected(m_comboSoundStreamSelector->currentItem());
+ return true;
+ }
+ return false;
+}
+
+
+bool RecordingMonitor::noticeSoundStreamChanged(SoundStreamID id)
+{
+ if (m_SoundStreamID2idx.contains(id)) {
+ int idx = m_SoundStreamID2idx[id];
+ QString tmp = QString::null;
+ querySoundStreamDescription(id, tmp);
+ m_comboSoundStreamSelector->changeItem(tmp, idx);
+ if (idx == m_comboSoundStreamSelector->currentItem()) {
+ m_defaultStreamDescription = tmp;
+ }
+ return true;
+ }
+ return false;
+}
+
+bool RecordingMonitor::startRecordingWithFormat(SoundStreamID id, const SoundFormat &/*sf*/, SoundFormat &/*real_format*/)
+{
+ if (id == m_currentStream) {
+ m_recording = true;
+ updateRecordingButton();
+ }
+ return false;
+}
+
+bool RecordingMonitor::stopRecording(SoundStreamID id)
+{
+ if (id == m_currentStream) {
+ m_recording = false;
+ updateRecordingButton();
+ }
+ return false;
+}
+
+bool RecordingMonitor::noticeSoundStreamData(SoundStreamID id,
+ const SoundFormat &sf, const char *data, size_t size, size_t &consumed_size,
+ const SoundMetaData &md
+)
+{
+ if (m_idx2SoundStreamID[m_comboSoundStreamSelector->currentItem()] == id) {
+
+ m_labelFileName->setText(md.url().url());
+
+ double B = (double)md.position() + (double)size;
+
+ double s = md.relativeTimestamp();
+
+ int m = (int)(s / 60); s -= 60 * m;
+ int h = m / 60; m %= 60;
+ int d = h / 24; h %= 24;
+ QString time;
+ if (d) {
+ time.sprintf("%dd - %02d:%02d:%05.2f", d, h, m, s);
+ } else {
+ time.sprintf("%02d:%02d:%05.2f", h, m, s);
+ }
+ m_labelTime->setText(time);
+
+ if (sf.m_Encoding == "raw") {
+ m_dataMonitor->setEnabled(true);
+ m_dataMonitor->noticeSoundStreamData(id, sf, data, size, consumed_size, md);
+ } else {
+ m_dataMonitor->setEnabled(false);
+ }
+
+ double kB = B / 1024;
+ double MB = kB / 1024;
+ double GB = MB / 1024;
+ QString str_size;
+ str_size = i18n("%1 Byte").arg(KGlobal::locale()->formatNumber((int)B, 0));
+ if (kB > 1) str_size = i18n("%1 kB").arg(KGlobal::locale()->formatNumber(kB, 3));
+ if (MB > 1) str_size = i18n("%1 MB").arg(KGlobal::locale()->formatNumber(MB, 3));
+ if (GB > 1) str_size = i18n("%1 GB").arg(KGlobal::locale()->formatNumber(GB, 3));
+ m_labelSize->setText(str_size);
+
+ m_labelRate->setText(i18n("%1 Hz").arg(sf.m_SampleRate));
+ return true;
+ }
+ return false;
+}
+
+
+void RecordingMonitor::slotStreamSelected(int idx)
+{
+ SoundStreamID old_id = m_currentStream;
+ if (old_id.isValid()) {
+ sendStopCapture(old_id);
+ }
+
+ SoundStreamID id = m_idx2SoundStreamID.contains(idx) ? m_idx2SoundStreamID[idx] : SoundStreamID::InvalidID;
+ if (id.isValid()) {
+
+ m_defaultStreamDescription = m_comboSoundStreamSelector->text(idx);
+
+ SoundFormat sf;
+ sendStartCaptureWithFormat(id, sf, sf);
+ m_dataMonitor ->setEnabled(true);
+ m_labelSize ->setEnabled(true);
+ m_labelSize ->setEnabled(true);
+ m_labelTime ->setEnabled(true);
+ m_labelRate ->setEnabled(true);
+ m_labelFileName ->setEnabled(true);
+ m_labelStatus ->setEnabled(true);
+ } else {
+ m_dataMonitor ->setEnabled(false);
+ m_labelSize ->setEnabled(false);
+ m_labelSize ->setEnabled(false);
+ m_labelTime ->setEnabled(false);
+ m_labelRate ->setEnabled(false);
+ m_labelFileName ->setEnabled(false);
+ m_labelStatus ->setEnabled(false);
+ }
+ m_currentStream = id;
+ m_recording = false;
+ SoundFormat sf;
+ queryIsRecordingRunning(m_currentStream, m_recording, sf);
+ updateRecordingButton();
+}
+
+
+void RecordingMonitor::updateRecordingButton()
+{
+ if (m_currentStream.isValid()) {
+ m_btnStartStop->setText(!m_recording ? i18n("&Record") : i18n("&Stop Recording"));
+ m_btnStartStop->setEnabled(true);
+ } else {
+ m_btnStartStop->setText(i18n("&Record"));
+ m_btnStartStop->setEnabled(false);
+ }
+}
+
+
+#include "recording-monitor.moc"
diff --git a/kradio3/plugins/recording/recording-monitor.h b/kradio3/plugins/recording/recording-monitor.h
new file mode 100644
index 0000000..c34e927
--- /dev/null
+++ b/kradio3/plugins/recording/recording-monitor.h
@@ -0,0 +1,124 @@
+/***************************************************************************
+ recording-monitor.h - description
+ -------------------
+ begin : Mo Sep 1 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_RECORDING_MONITOR_H
+#define KRADIO_RECORDING_MONITOR_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qwidget.h>
+
+#include "../../src/include/widgetplugins.h"
+#include "../../src/include/soundstreamclient_interfaces.h"
+//#include <kradio/interfaces/recording-interfaces.h>
+
+
+class QLabel;
+class QPushButton;
+class QCheckBox;
+class RecordingDataMonitor;
+class KComboBox;
+
+class RecordingMonitor : public QWidget,
+ public WidgetPluginBase,
+ public ISoundStreamClient
+ //public IRecordingClient
+{
+Q_OBJECT
+public:
+
+ RecordingMonitor(const QString &name);
+ virtual ~RecordingMonitor();
+
+ const QString &name() const { return PluginBase::name(); }
+ QString &name() { return PluginBase::name(); }
+
+ virtual QString pluginClassName() const { return "RecordingMonitor"; }
+
+ // WidgetPluginBase
+
+public:
+ virtual void saveState (KConfig *) const;
+ virtual void restoreState (KConfig *);
+
+ virtual bool connectI(Interface *i);
+ virtual bool disconnectI(Interface *i);
+
+ virtual ConfigPageInfo createConfigurationPage();
+ virtual AboutPageInfo createAboutPage();
+
+ // IRecordingClient
+
+ void noticeConnectedI (ISoundStreamServer *s, bool pointer_valid);
+
+ bool noticeSoundStreamCreated(SoundStreamID id);
+ bool noticeSoundStreamClosed(SoundStreamID id);
+ bool noticeSoundStreamChanged(SoundStreamID id);
+
+ bool startRecordingWithFormat(SoundStreamID id, const SoundFormat &sf, SoundFormat &real_format);
+ bool stopRecording(SoundStreamID id);
+
+ bool noticeSoundStreamData(SoundStreamID id, const SoundFormat &sf, const char *data, size_t size, size_t &consumed_size, const SoundMetaData &md);
+
+public slots:
+
+ void toggleShown() { WidgetPluginBase::pToggleShown(); }
+ void showOnOrgDesktop();
+ void show();
+ void hide();
+
+ void slotStartStopRecording();
+
+ void slotStreamSelected(int idx);
+
+protected:
+
+ virtual void updateRecordingButton();
+
+ virtual void showEvent(QShowEvent *);
+ virtual void hideEvent(QHideEvent *);
+
+ const QWidget *getWidget() const { return this; }
+ QWidget *getWidget() { return this; }
+
+
+protected:
+
+ QLabel *m_labelSize;
+ QLabel *m_labelTime;
+ QLabel *m_labelRate;
+ QLabel *m_labelFileName;
+ QLabel *m_labelStatus;
+ QPushButton *m_btnStartStop;
+
+ KComboBox *m_comboSoundStreamSelector;
+ QMap<SoundStreamID, int> m_SoundStreamID2idx;
+ QMap<int, SoundStreamID> m_idx2SoundStreamID;
+
+ SoundStreamID m_currentStream;
+ RecordingDataMonitor *m_dataMonitor;
+
+ bool m_recording;
+ QString m_defaultStreamDescription;
+};
+
+
+
+
+#endif
diff --git a/kradio3/plugins/recording/recording.cpp b/kradio3/plugins/recording/recording.cpp
new file mode 100644
index 0000000..b2222ab
--- /dev/null
+++ b/kradio3/plugins/recording/recording.cpp
@@ -0,0 +1,736 @@
+/***************************************************************************
+ recording.cpp - description
+ -------------------
+ begin : Mi Aug 27 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "../../src/include/radiostation.h"
+#include "../../src/include/errorlog-interfaces.h"
+#include "../../src/include/aboutwidget.h"
+#include "../../src/include/fileringbuffer.h"
+#include "../../src/include/utils.h"
+
+#include "recording.h"
+#include "recording-configuration.h"
+#include "soundstreamevent.h"
+#include "recording-monitor.h"
+#include "encoder_mp3.h"
+#include "encoder_ogg.h"
+#include "encoder_pcm.h"
+
+#include <qevent.h>
+#include <qapplication.h>
+#include <qregexp.h>
+
+#include <kconfig.h>
+#include <kdeversion.h>
+
+#include <kaboutdata.h>
+
+
+///////////////////////////////////////////////////////////////////////
+//// plugin library functions
+
+PLUGIN_LIBRARY_FUNCTIONS2(
+ Recording, "kradio-recording", i18n("KRadio Recording Plugin"),
+ RecordingMonitor, i18n("KRadio Recording Monitor")
+);
+
+///////////////////////////////////////////////////////////////////////
+
+Recording::Recording(const QString &name)
+ : QObject(NULL, NULL),
+ PluginBase(name, i18n("KRadio Recording Plugin")),
+ m_config()
+{
+}
+
+
+Recording::~Recording()
+{
+ QMapIterator<SoundStreamID, RecordingEncoding*> it = m_EncodingThreads.begin();
+ QMapIterator<SoundStreamID, RecordingEncoding*> end = m_EncodingThreads.end();
+ for (; it != end; ++it) {
+ sendStopRecording(it.key());
+ }
+}
+
+
+bool Recording::connectI(Interface *i)
+{
+ bool a = IRecCfg::connectI(i);
+ bool b = PluginBase::connectI(i);
+ bool c = ISoundStreamClient::connectI(i);
+ return a || b || c;
+}
+
+
+bool Recording::disconnectI(Interface *i)
+{
+ bool a = IRecCfg::disconnectI(i);
+ bool b = PluginBase::disconnectI(i);
+ bool c = ISoundStreamClient::disconnectI(i);
+ return a || b || c;
+}
+
+
+void Recording::noticeConnectedI (ISoundStreamServer *s, bool pointer_valid)
+{
+ ISoundStreamClient::noticeConnectedI(s, pointer_valid);
+ if (s && pointer_valid) {
+ s->register4_sendStartPlayback(this);
+ s->register4_sendStopPlayback(this);
+ s->register4_sendStartRecording(this);
+ s->register4_sendStartRecordingWithFormat(this);
+ s->register4_notifySoundStreamData(this);
+ s->register4_sendStopRecording(this);
+ s->register4_queryIsRecordingRunning(this);
+ s->register4_querySoundStreamDescription(this);
+ s->register4_querySoundStreamRadioStation(this);
+ s->register4_queryEnumerateSoundStreams(this);
+ s->register4_notifySoundStreamChanged(this);
+ s->register4_notifySoundStreamClosed(this);
+ }
+}
+
+// PluginBase
+
+void Recording::saveState (KConfig *c) const
+{
+ c->setGroup(QString("recording-") + PluginBase::name());
+ m_config.saveConfig(c);
+}
+
+
+void Recording::restoreState (KConfig *c)
+{
+ c->setGroup(QString("recording-") + PluginBase::name());
+ RecordingConfig cfg;
+ cfg.restoreConfig(c);
+ setRecordingConfig(cfg);
+ //notifyRecordingConfigChanged(m_config);
+}
+
+
+ConfigPageInfo Recording::createConfigurationPage()
+{
+ RecordingConfiguration *c = new RecordingConfiguration(NULL);
+ connectI(c);
+ return ConfigPageInfo(c,
+ i18n("Recording"),
+ i18n("Recording"),
+ "kradio_record");
+}
+
+
+AboutPageInfo Recording::createAboutPage()
+{
+/* KAboutData aboutData("kradio",
+ NULL,
+ NULL,
+ I18N_NOOP("Recording Monitor for KRadio"),
+ KAboutData::License_GPL,
+ "(c) 2002-2005 Martin Witte",
+ 0,
+ "http://sourceforge.net/projects/kradio",
+ 0);
+ aboutData.addAuthor("Martin Witte", "", "witte@kawo1.rwth-aachen.de");
+
+ return AboutPageInfo(
+ new KRadioAboutWidget(aboutData, KRadioAboutWidget::AbtTabbed),
+ i18n("Recording"),
+ i18n("Recording Plugin"),
+ "kradio_record"
+ );*/
+ return AboutPageInfo();
+}
+
+
+// IRecCfg
+
+bool Recording::setEncoderBuffer (size_t BufferSize, size_t BufferCount)
+{
+ if (m_config.m_EncodeBufferSize != BufferSize ||
+ m_config.m_EncodeBufferCount != BufferCount)
+ {
+ m_config.m_EncodeBufferSize = BufferSize;
+ m_config.m_EncodeBufferCount = BufferCount;
+ notifyEncoderBufferChanged(BufferSize, BufferCount);
+ }
+ return true;
+}
+
+bool Recording::setSoundFormat (const SoundFormat &sf)
+{
+ if (m_config.m_SoundFormat != sf) {
+ m_config.m_SoundFormat = sf;
+ notifySoundFormatChanged(sf);
+ }
+ return true;
+}
+
+bool Recording::setMP3Quality (int q)
+{
+ if (m_config.m_mp3Quality != q) {
+ m_config.m_mp3Quality = q;
+ notifyMP3QualityChanged(q);
+ }
+ return true;
+}
+
+bool Recording::setOggQuality (float q)
+{
+ if (m_config.m_oggQuality != q) {
+ m_config.m_oggQuality = q;
+ notifyOggQualityChanged(q);
+ }
+ return true;
+}
+
+bool Recording::setRecordingDirectory(const QString &dir)
+{
+ if (m_config.m_Directory != dir) {
+ m_config.m_Directory = dir;
+ notifyRecordingDirectoryChanged(dir);
+ }
+ return true;
+}
+
+bool Recording::setOutputFormat (RecordingConfig::OutputFormat of)
+{
+ if (m_config.m_OutputFormat != of) {
+ m_config.m_OutputFormat = of;
+ notifyOutputFormatChanged(of);
+ }
+ return true;
+}
+
+bool Recording::setPreRecording (bool enable, int seconds)
+{
+ if (m_config.m_PreRecordingEnable != enable || m_config.m_PreRecordingSeconds != seconds) {
+ m_config.m_PreRecordingEnable = enable;
+ m_config.m_PreRecordingSeconds = seconds;
+
+ if (enable) {
+ for (QMapIterator<SoundStreamID,FileRingBuffer*> it = m_PreRecordingBuffers.begin(); it != m_PreRecordingBuffers.end(); ++it) {
+ if (*it != NULL) {
+ delete *it;
+ }
+ *it = new FileRingBuffer(m_config.m_Directory + "/kradio-prerecord-"+QString::number(it.key().getID()), m_config.m_PreRecordingSeconds * m_config.m_SoundFormat.m_SampleRate * m_config.m_SoundFormat.frameSize());
+ SoundFormat sf = m_config.m_SoundFormat;
+ sendStartCaptureWithFormat(it.key(), sf, sf, false);
+ }
+ }
+ else {
+ for (QMapIterator<SoundStreamID,FileRingBuffer*> it = m_PreRecordingBuffers.begin(); it != m_PreRecordingBuffers.end(); ++it) {
+ if (*it != NULL) {
+ sendStopCapture(it.key());
+ delete *it;
+ }
+ }
+ m_PreRecordingBuffers.clear();
+ }
+
+ notifyPreRecordingChanged(enable, seconds);
+ }
+ return true;
+}
+
+void Recording::getEncoderBuffer(size_t &BufferSize, size_t &BufferCount) const
+{
+ BufferSize = m_config.m_EncodeBufferSize;
+ BufferCount = m_config.m_EncodeBufferCount;
+}
+
+const SoundFormat &Recording::getSoundFormat () const
+{
+ return m_config.m_SoundFormat;
+}
+
+int Recording::getMP3Quality () const
+{
+ return m_config.m_mp3Quality;
+}
+
+float Recording::getOggQuality () const
+{
+ return m_config.m_oggQuality;
+}
+
+const QString &Recording::getRecordingDirectory() const
+{
+ return m_config.m_Directory;
+}
+
+RecordingConfig::OutputFormat Recording::getOutputFormat() const
+{
+ return m_config.m_OutputFormat;
+}
+
+bool Recording::getPreRecording(int &seconds) const
+{
+ seconds = m_config.m_PreRecordingSeconds;
+ return m_config.m_PreRecordingEnable;
+}
+
+const RecordingConfig &Recording::getRecordingConfig() const
+{
+ return m_config;
+}
+
+bool Recording::setRecordingConfig(const RecordingConfig &c)
+{
+ setEncoderBuffer (c.m_EncodeBufferSize, c.m_EncodeBufferCount);
+ setSoundFormat (c.m_SoundFormat);
+ setMP3Quality (c.m_mp3Quality);
+ setOggQuality (c.m_oggQuality);
+ setRecordingDirectory(c.m_Directory);
+ setOutputFormat (c.m_OutputFormat);
+ setPreRecording (c.m_PreRecordingEnable, c.m_PreRecordingSeconds);
+
+ m_config = c;
+
+ notifyRecordingConfigChanged(m_config);
+
+ return true;
+}
+
+
+// ISoundStreamClient
+bool Recording::startPlayback(SoundStreamID id)
+{
+ if (m_PreRecordingBuffers.contains(id))
+ delete m_PreRecordingBuffers[id];
+ m_PreRecordingBuffers[id] = NULL;
+ if (m_config.m_PreRecordingEnable) {
+ m_PreRecordingBuffers[id] = new FileRingBuffer(m_config.m_Directory + "/kradio-prerecord-"+QString::number(id.getID()), m_config.m_PreRecordingSeconds * m_config.m_SoundFormat.m_SampleRate * m_config.m_SoundFormat.frameSize());
+ SoundFormat sf = m_config.m_SoundFormat;
+ sendStartCaptureWithFormat(id, sf, sf, false);
+ }
+ return false;
+}
+
+bool Recording::stopPlayback(SoundStreamID id)
+{
+ if (m_PreRecordingBuffers.contains(id)) {
+ if (m_PreRecordingBuffers[id])
+ delete m_PreRecordingBuffers[id];
+ m_PreRecordingBuffers.remove(id);
+ sendStopCapture(id);
+ }
+ return false;
+}
+
+bool Recording::startRecording(SoundStreamID id)
+{
+
+/* FileRingBuffer *test = new FileRingBuffer("/tmp/ringbuffertest", 2048);
+ char buffer1[1024];
+ char buffer2[1024];
+ char buffer3[1024];
+ for (int i = 0; i < 1024; ++i) {
+ buffer1[i] = 'a';
+ buffer2[i] = 'b';
+ buffer3[i] = 'c';
+ }
+ test->addData(buffer1, 1024);
+ test->addData(buffer2, 1024);
+ test->removeData(1024);
+ test->addData(buffer3, 1024);
+*/
+
+ SoundFormat realFormat = m_config.m_SoundFormat;
+ return sendStartRecordingWithFormat(id, realFormat, realFormat);
+}
+
+bool Recording::startRecordingWithFormat(SoundStreamID id, const SoundFormat &sf, SoundFormat &real_format)
+{
+ if (!sendStartCaptureWithFormat(id, sf, real_format, /* force_format = */ true)) {
+ logError(i18n("start capture not handled"));
+ return false;
+ }
+
+ RecordingConfig cfg = m_config;
+ cfg.m_SoundFormat = real_format;
+
+ logInfo(i18n("Recording starting"));
+ if (!startEncoder(id, cfg)) {
+ logError(i18n("starting encoding thread failed"));
+ sendStopCapture(id);
+ return false;
+ }
+
+ return true;
+}
+
+
+bool Recording::stopRecording(SoundStreamID id)
+{
+ if (m_EncodingThreads.contains(id)) {
+ sendStopCapture(id);
+ if (m_config.m_PreRecordingEnable) {
+ if (!m_PreRecordingBuffers.contains(id)) {
+ if (m_PreRecordingBuffers[id] != NULL) {
+ delete m_PreRecordingBuffers[id];
+ }
+ bool b = false;
+ queryIsPlaybackRunning(id, b);
+ if (b) {
+ m_PreRecordingBuffers[id] = new FileRingBuffer(m_config.m_Directory + "/kradio-prerecord-"+QString::number(id.getID()), m_config.m_PreRecordingSeconds * m_config.m_SoundFormat.m_SampleRate * m_config.m_SoundFormat.frameSize());
+ } else {
+ m_PreRecordingBuffers[id] = NULL;
+ }
+ }
+ }
+ stopEncoder(id);
+ return true;
+ }
+ return false;
+}
+
+
+
+bool Recording::noticeSoundStreamData(SoundStreamID id,
+ const SoundFormat &/*sf*/, const char *data, size_t size, size_t &consumed_size,
+ const SoundMetaData &md
+)
+{
+ if (m_PreRecordingBuffers.contains(id) && m_PreRecordingBuffers[id] != NULL) {
+
+ FileRingBuffer &fbuf = *m_PreRecordingBuffers[id];
+ if (fbuf.getFreeSize() < size) {
+ fbuf.removeData(size - fbuf.getFreeSize());
+ }
+ size_t n = fbuf.addData(data, size);
+ consumed_size = (consumed_size == SIZE_T_DONT_CARE) ? n : min(consumed_size, n);
+// if (n != size) {
+// logDebug("recording packet: was not written completely to tmp buf");
+// }
+
+// //BEGIN DEBUG
+// char tmp[4096];
+// for (unsigned int i = 0; i < sizeof(tmp); ++i) { tmp[i] = 0; }
+// if (fbuf.getFreeSize() < sizeof(tmp)) {
+// fbuf.removeData(sizeof(tmp) - fbuf.getFreeSize());
+// }
+// fbuf.addData((char*)tmp, sizeof(tmp));
+// //END DEBUG
+
+ if (m_EncodingThreads.contains(id)) {
+
+ //logDebug("recording packet: " + QString::number(size));
+
+ RecordingEncoding *thread = m_EncodingThreads[id];
+
+ //logDebug("noticeSoundStreamData thread = " + QString::number((long long)thread, 16));
+
+ size_t remSize = fbuf.getFillSize();
+
+ while (remSize > 0) {
+ size_t bufferSize = remSize;
+ char *buf = thread->lockInputBuffer(bufferSize);
+ if (!buf) {
+ // Encoder buffer is full and bigger than remaining data
+ break;
+ }
+ if (bufferSize > remSize) {
+ bufferSize = remSize;
+ }
+ if (fbuf.takeData(buf, bufferSize) != bufferSize) {
+ logError(i18n("could not read suffient data"));
+ }
+
+ thread->unlockInputBuffer(bufferSize, md);
+ remSize -= bufferSize;
+ }
+
+ if (remSize == 0) {
+ delete m_PreRecordingBuffers[id];
+ m_PreRecordingBuffers.remove(id);
+ }
+ }
+
+ return true;
+ }
+
+ else if (m_EncodingThreads.contains(id)) {
+
+ //logDebug("recording packet: " + QString::number(size));
+
+ RecordingEncoding *thread = m_EncodingThreads[id];
+
+ //logDebug("noticeSoundStreamData thread = " + QString::number((long long)thread, 16));
+
+ size_t remSize = size;
+ const char *remData = data;
+
+ while (remSize > 0) {
+ size_t bufferSize = remSize;
+ char *buf = thread->lockInputBuffer(bufferSize);
+ if (!buf) {
+ logWarning(i18n("Encoder input buffer overflow (buffer configuration problem?). Skipped %1 input bytes").arg(QString::number(remSize)));
+ break;
+ }
+ if (bufferSize > remSize) {
+ bufferSize = remSize;
+ }
+ memcpy(buf, remData, bufferSize);
+
+ thread->unlockInputBuffer(bufferSize, md);
+ remSize -= bufferSize;
+ remData += bufferSize;
+ }
+ consumed_size = (consumed_size == SIZE_T_DONT_CARE) ? size - remSize : min(consumed_size, size - remSize);
+
+ return true;
+ }
+ return false;
+}
+
+
+
+
+bool Recording::startEncoder(SoundStreamID ssid, const RecordingConfig &cfg)
+{
+ if (m_EncodingThreads.contains(ssid))
+ return false;
+
+ SoundStreamID encID = createNewSoundStream(ssid, false);
+ m_RawStreams2EncodedStreams[ssid] = encID;
+ m_EncodedStreams2RawStreams[encID] = ssid;
+
+ QString ext = ".wav";
+ switch (m_config.m_OutputFormat) {
+ case RecordingConfig::outputWAV: ext = ".wav"; break;
+ case RecordingConfig::outputAIFF: ext = ".aiff"; break;
+ case RecordingConfig::outputAU: ext = ".au"; break;
+#ifdef HAVE_LAME
+ case RecordingConfig::outputMP3: ext = ".mp3"; break;
+#endif
+#ifdef HAVE_LAME
+ case RecordingConfig::outputOGG: ext = ".ogg"; break;
+#endif
+ case RecordingConfig::outputRAW: ext = ".raw"; break;
+ default: ext = ".wav"; break;
+ }
+ const RadioStation *rs = NULL;
+ querySoundStreamRadioStation(ssid, rs);
+ QString station = rs ? rs->name() + "-" : "";
+ station.replace(QRegExp("[/*?]"), "_");
+
+ QDate date = QDate::currentDate();
+ QTime time = QTime::currentTime();
+ QString sdate;
+
+ sdate.sprintf("%d.%d.%d.%d.%d",date.year(),date.month(),date.day(),time.hour(),time.minute());
+
+ QString output = m_config.m_Directory
+ + "/kradio-recording-"
+ + station
+ + sdate
+ + ext;
+
+ logInfo(i18n("Recording::outputFile: ") + output);
+
+ RecordingEncoding *thread = NULL;
+ switch (m_config.m_OutputFormat) {
+#ifdef HAVE_LAME
+ case RecordingConfig::outputMP3:
+ thread = new RecordingEncodingMP3(this, ssid, cfg, rs, output);
+ break;
+#endif
+#ifdef HAVE_OGG
+ case RecordingConfig::outputOGG:
+ thread = new RecordingEncodingOgg(this, ssid, cfg, rs, output);
+ break;
+#endif
+ default:
+ thread = new RecordingEncodingPCM(this, ssid, cfg, rs, output);
+ }
+
+ //m_encodingThread->openOutput(output, rs);
+
+ if (thread->error()) {
+ //m_context.setError();
+ logError(thread->errorString());
+ } else {
+ thread->start();
+ }
+ // store thread even if it has indicated an error
+ m_EncodingThreads[ssid] = thread;
+
+ //logDebug("startEncoder thread = " + QString::number((long long)thread, 16));
+
+ notifySoundStreamCreated(encID);
+ return !thread->error();
+}
+
+
+void Recording::stopEncoder(SoundStreamID id)
+{
+ if (m_EncodingThreads.contains(id)) {
+
+ RecordingEncoding *thread = m_EncodingThreads[id];
+
+ thread->setDone();
+
+ //logDebug("stopEncoder thread = " + QString::number((long long)thread, 16));
+ //logDebug("stopEncoder thread error = " + QString::number(thread->error(), 16));
+
+#if (KDE_VERSION_MAJOR >= 3) && (KDE_VERSION_MINOR >= 1)
+ // FIXME: set a timer and do waiting "in background"
+ if (!thread->wait(5000)) {
+ //m_context.setError();
+ logError(i18n("The encoding thread did not finish. It will be killed now."));
+ thread->terminate();
+ thread->wait();
+ } else {
+#else
+ logError(i18n("Waiting for encoding thread to terminate."));
+ thread->wait();
+#endif
+ if (thread->error()) {
+ //m_context.setError();
+ logError(thread->errorString());
+ } else {
+ //Q_UINT64 size = thread->encodedSize();
+ //m_context.setEncodedSize(low, high);
+ //notifyRecordingContextChanged(m_context);
+ }
+ }
+ delete thread;
+ m_EncodingThreads.remove(id);
+ SoundStreamID encID = m_RawStreams2EncodedStreams[id];
+ m_EncodedStreams2RawStreams.remove(encID);
+ m_RawStreams2EncodedStreams.remove(id);
+ sendStopPlayback(encID);
+ closeSoundStream(encID);
+ logInfo(i18n("Recording stopped"));
+ }
+}
+
+
+bool Recording::event(QEvent *_e)
+{
+ if (SoundStreamEvent::isSoundStreamEvent(_e)) {
+ SoundStreamEvent *e = static_cast<SoundStreamEvent*>(_e);
+ SoundStreamID id = e->getSoundStreamID();
+
+ if (m_EncodingThreads.contains(id)) {
+
+ RecordingEncoding *thread = m_EncodingThreads[id];
+
+ //logDebug("Recording::event: thread = " + QString::number((long long)thread, 16));
+
+ if (thread->error()) {
+ logError(thread->errorString());
+ //m_context.setError();
+ stopEncoder(id);
+ } else {
+ //Q_UINT64 size = thread->encodedSize();
+ //m_context.setEncodedSize(low, high);
+ //notifyRecordingContextChanged(m_context);
+ if (e->type() == EncodingTerminated) {
+ stopEncoder(id);
+ } else if (e->type() == EncodingStep) {
+ SoundStreamEncodingStepEvent *step = static_cast<SoundStreamEncodingStepEvent*>(e);
+ size_t consumed_size = SIZE_T_DONT_CARE;
+ notifySoundStreamData(m_RawStreams2EncodedStreams[id], thread->config().m_SoundFormat,
+ step->data(), step->size(), consumed_size, step->metaData());
+ if (consumed_size != SIZE_T_DONT_CARE && consumed_size < step->size()) {
+ logError(i18n("Recording::notifySoundStreamData(encoded data): Receivers skipped %1 Bytes").arg(step->size() - consumed_size));
+ }
+ }
+ }
+ }
+ return true;
+ } else {
+ return QObject::event(_e);
+ }
+}
+
+
+bool Recording::getSoundStreamDescription(SoundStreamID id, QString &descr) const
+{
+ if (m_EncodedStreams2RawStreams.contains(id)) {
+ if (querySoundStreamDescription(m_EncodedStreams2RawStreams[id], descr)) {
+ descr = name() + " - " + descr;
+ return true;
+ }
+ }
+ return false;
+}
+
+
+bool Recording::getSoundStreamRadioStation(SoundStreamID id, const RadioStation *&rs) const
+{
+ if (m_EncodedStreams2RawStreams.contains(id)) {
+ if (querySoundStreamRadioStation(m_EncodedStreams2RawStreams[id], rs)) {
+ return true;
+ }
+ }
+ return false;
+}
+
+
+bool Recording::enumerateSoundStreams(QMap<QString, SoundStreamID> &list) const
+{
+ QMapConstIterator<SoundStreamID,SoundStreamID> end = m_RawStreams2EncodedStreams.end();
+ for (QMapConstIterator<SoundStreamID,SoundStreamID> it = m_RawStreams2EncodedStreams.begin(); it != end; ++it) {
+ QString tmp = QString::null;
+ getSoundStreamDescription(*it, tmp);
+ list[tmp] = *it;
+ }
+ return m_RawStreams2EncodedStreams.count() > 0;
+}
+
+
+bool Recording::noticeSoundStreamChanged(SoundStreamID id)
+{
+ if (m_RawStreams2EncodedStreams.contains(id)) {
+ notifySoundStreamChanged(m_RawStreams2EncodedStreams[id]);
+ return true;
+ }
+ return false;
+}
+
+
+bool Recording::isRecordingRunning(SoundStreamID id, bool &b, SoundFormat &sf) const
+{
+ if (m_EncodingThreads.contains(id)) {
+ b = m_EncodingThreads[id]->running();
+ sf = getSoundFormat();
+ return true;
+ }
+ return false;
+}
+
+
+bool Recording::noticeSoundStreamClosed(SoundStreamID id)
+{
+ if (m_PreRecordingBuffers.contains(id)) {
+ if (m_PreRecordingBuffers[id])
+ delete m_PreRecordingBuffers[id];
+ m_PreRecordingBuffers.remove(id);
+ }
+
+ if (m_EncodingThreads.contains(id)) {
+ sendStopRecording(id);
+ return true;
+ }
+ return false;
+}
+
+
+#include "recording.moc"
diff --git a/kradio3/plugins/recording/recording.h b/kradio3/plugins/recording/recording.h
new file mode 100644
index 0000000..bef3a3a
--- /dev/null
+++ b/kradio3/plugins/recording/recording.h
@@ -0,0 +1,148 @@
+/***************************************************************************
+ recording.h - description
+ -------------------
+ begin : Mi Aug 27 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_RECORDING_H
+#define KRADIO_RECORDING_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+
+#include <qobject.h>
+#include <qstring.h>
+#include <qmap.h>
+
+#include "../../src/include/plugins.h"
+#include "../../src/include/timecontrol_interfaces.h"
+#include "../../src/include/soundstreamclient_interfaces.h"
+
+#include "recording-config.h"
+#include "reccfg_interfaces.h"
+#include "encoder.h"
+
+class RadioStation;
+class StationList;
+class QSocketNotifier;
+class RecordingEncoding;
+class FileRingBuffer;
+
+class Recording : public QObject,
+ public PluginBase,
+ public ISoundStreamClient,
+ public IRecCfg
+{
+Q_OBJECT
+public:
+ Recording(const QString &name);
+ ~Recording();
+
+ virtual QString pluginClassName() const { return "Recording"; }
+
+ virtual const QString &name() const { return PluginBase::name(); }
+ virtual QString &name() { return PluginBase::name(); }
+
+ virtual bool connectI(Interface *i);
+ virtual bool disconnectI(Interface *i);
+
+
+ bool isRecording () const;
+
+
+ // PluginBase
+
+public:
+ virtual void saveState (KConfig *) const;
+ virtual void restoreState (KConfig *);
+
+ virtual ConfigPageInfo createConfigurationPage();
+ virtual AboutPageInfo createAboutPage();
+
+protected:
+
+// IRecCfg
+
+ bool setEncoderBuffer (size_t BufferSize, size_t BufferCount);
+ bool setSoundFormat (const SoundFormat &sf);
+ bool setMP3Quality (int q);
+ bool setOggQuality (float q);
+ bool setRecordingDirectory(const QString &dir);
+ bool setOutputFormat (RecordingConfig::OutputFormat of);
+ bool setPreRecording (bool enable, int seconds);
+ bool setRecordingConfig (const RecordingConfig &cfg);
+
+ void getEncoderBuffer(size_t &BufferSize, size_t &BufferCount) const;
+ const SoundFormat &getSoundFormat () const;
+ int getMP3Quality () const;
+ float getOggQuality () const;
+ const QString &getRecordingDirectory() const;
+ RecordingConfig::OutputFormat getOutputFormat() const;
+ bool getPreRecording(int &seconds) const;
+ const RecordingConfig &getRecordingConfig() const;
+
+// ISoundStreamClient
+
+ void noticeConnectedI (ISoundStreamServer *s, bool pointer_valid);
+
+ bool startPlayback(SoundStreamID id);
+ bool stopPlayback(SoundStreamID id);
+
+ bool startRecording(SoundStreamID id);
+ bool startRecordingWithFormat(SoundStreamID id, const SoundFormat &sf, SoundFormat &real_format);
+ bool noticeSoundStreamData(SoundStreamID id, const SoundFormat &sf, const char *data, size_t size, size_t &consumed_size, const SoundMetaData &md);
+ bool stopRecording(SoundStreamID id);
+ bool isRecordingRunning(SoundStreamID id, bool &b, SoundFormat &sf) const;
+
+ bool getSoundStreamDescription(SoundStreamID id, QString &descr) const;
+ bool getSoundStreamRadioStation(SoundStreamID id, const RadioStation *&rs) const;
+
+ bool noticeSoundStreamClosed(SoundStreamID id);
+ bool noticeSoundStreamChanged(SoundStreamID id);
+
+ bool enumerateSoundStreams(QMap<QString, SoundStreamID> &list) const;
+
+protected slots:
+
+ bool event(QEvent *e);
+
+protected:
+
+ bool startEncoder(SoundStreamID ssid, const RecordingConfig &cfg);
+ void stopEncoder(SoundStreamID ssid);
+
+protected:
+
+ RecordingConfig m_config;
+ QMap<SoundStreamID, FileRingBuffer*> m_PreRecordingBuffers;
+
+ QMap<SoundStreamID, RecordingEncoding*> m_EncodingThreads;
+ QMap<SoundStreamID, SoundStreamID> m_RawStreams2EncodedStreams;
+ QMap<SoundStreamID, SoundStreamID> m_EncodedStreams2RawStreams;
+};
+
+/* PreRecording Notes: listen for startplayback, stopplayback, closestream
+ manage map streamid => buffer
+ set each started stream into capture mode
+ put data into ringbuffers
+ on capture start, feed everything into the encoder buffer,
+ if encoderbuffer < prerecbuffer =>
+ put as much as possible into encoder
+ put new audio data into ring buffer
+
+*/
+
+#endif
diff --git a/kradio3/plugins/recording/soundstreamevent.h b/kradio3/plugins/recording/soundstreamevent.h
new file mode 100644
index 0000000..0cf6cdd
--- /dev/null
+++ b/kradio3/plugins/recording/soundstreamevent.h
@@ -0,0 +1,87 @@
+/***************************************************************************
+ soundstreamevent.h - description
+ -------------------
+ begin : Fri May 06 2005
+ copyright : (C) 2005 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_RECORDING_SOUNDSTREAM_EVENT_H
+#define KRADIO_RECORDING_SOUNDSTREAM_EVENT_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qevent.h>
+
+#include "../../src/include/sound_metadata.h"
+
+const QEvent::Type EncodingTerminated = (QEvent::Type)(QEvent::User+1);
+const QEvent::Type EncodingStep = (QEvent::Type)(QEvent::User+2);
+
+class SoundStreamEvent : public QEvent
+{
+public:
+ SoundStreamEvent(QEvent::Type t, SoundStreamID id) : QEvent(t), m_SSID(id) {}
+ const SoundStreamID &getSoundStreamID() const { return m_SSID; }
+
+ static bool isSoundStreamEvent (const QEvent *e) { return e && ((e->type() == EncodingTerminated) || (e->type() == EncodingStep)); }
+
+protected:
+ SoundStreamID m_SSID;
+};
+
+
+
+
+
+
+class SoundStreamEncodingTerminatedEvent : public SoundStreamEvent
+{
+public:
+ SoundStreamEncodingTerminatedEvent(SoundStreamID id) : SoundStreamEvent(EncodingTerminated, id) {}
+};
+
+
+
+
+
+
+class SoundStreamEncodingStepEvent : public SoundStreamEvent
+{
+public:
+ SoundStreamEncodingStepEvent(SoundStreamID id, const char *data, size_t size, const SoundMetaData &md)
+ : SoundStreamEvent(EncodingStep, id),
+ m_Size(size),
+ m_MetaData(md)
+ {
+ m_Data = new char [m_Size];
+ memcpy (m_Data, data, m_Size);
+ }
+ virtual ~SoundStreamEncodingStepEvent() { freeData(); }
+
+ void freeData() { if (m_Data) delete m_Data; m_Data = NULL; m_Size = 0; } // _MUST_ be called by event receiver
+
+ const char *data() const { return m_Data; }
+ size_t size() const { return m_Size; }
+ const SoundMetaData &metaData() const { return m_MetaData; }
+
+ static bool isSoundStreamEncodingStep (const QEvent *e) { return e && (e->type() == EncodingStep); }
+
+protected:
+ char *m_Data;
+ size_t m_Size;
+ SoundMetaData m_MetaData;
+};
+
+#endif
diff --git a/kradio3/plugins/soundserver/Makefile.am b/kradio3/plugins/soundserver/Makefile.am
new file mode 100644
index 0000000..17c5946
--- /dev/null
+++ b/kradio3/plugins/soundserver/Makefile.am
@@ -0,0 +1,18 @@
+SUBDIRS = po .
+
+INCLUDES = $(all_includes)
+METASOURCES = AUTO
+
+libkradio_LTLIBRARIES = libsoundserver.la
+
+libsoundserver_la_SOURCES = soundserver.cpp
+libsoundserver_la_LDFLAGS = -module -avoid-version $(KDE_RPATH) $(all_libraries)
+
+noinst_HEADERS = soundserver.h
+
+#messages: rc.cpp
+# $(XGETTEXT) *.cpp *.h -o po/kradio-sound-server.pot
+
+messages: rc.cpp
+ $(EXTRACTRC) *.rc *.ui >> rc.cpp
+ $(XGETTEXT) rc.cpp *.h *.cpp -o po/kradio-soundserver.pot
diff --git a/kradio3/plugins/soundserver/po/Makefile.am b/kradio3/plugins/soundserver/po/Makefile.am
new file mode 100644
index 0000000..22b977e
--- /dev/null
+++ b/kradio3/plugins/soundserver/po/Makefile.am
@@ -0,0 +1,2 @@
+PACKAGE = kradio-soundserver
+POFILES = AUTO
diff --git a/kradio3/plugins/soundserver/po/de.po b/kradio3/plugins/soundserver/po/de.po
new file mode 100644
index 0000000..1d43376
--- /dev/null
+++ b/kradio3/plugins/soundserver/po/de.po
@@ -0,0 +1,29 @@
+# translation of de.po to
+# translation of kradio-sound-server.po to
+# This file is put in the public domain.
+#
+# Ernst Martin Witte <emw@nocabal.de>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-06 01:32+0100\n"
+"PO-Revision-Date: 2006-11-06 01:06+0100\n"
+"Last-Translator: Ernst Martin Witte <emw@nocabal.de>\n"
+"Language-Team: <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: soundserver.cpp:27
+msgid "SoundServer"
+msgstr "SoundServer"
+
+#: soundserver.cpp:32
+msgid "SoundServer Plugin"
+msgstr "SoundServer Plugin"
+
+#: soundserver.cpp:34
+msgid "initializing kradio soundserver"
+msgstr "Initialisierung des KRadio-Soundservers"
diff --git a/kradio3/plugins/soundserver/po/ru.po b/kradio3/plugins/soundserver/po/ru.po
new file mode 100644
index 0000000..14b5bfc
--- /dev/null
+++ b/kradio3/plugins/soundserver/po/ru.po
@@ -0,0 +1,29 @@
+# translation of ru.po to
+# translation of kradio-soundserver.po to
+# This file is put in the public domain.
+# Алексей Кузнецов <Alexey.Kouznetsov@GMail.com>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-11 02:11+0100\n"
+"PO-Revision-Date: 2006-11-08 12:46+0300\n"
+"Last-Translator: Алексей Кузнецов <Alexey.Kouznetsov@GMail.com>\n"
+"Language-Team: <ru@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10\n"
+
+#: soundserver.cpp:27
+msgid "SoundServer"
+msgstr "SoundServer"
+
+#: soundserver.cpp:32
+msgid "SoundServer Plugin"
+msgstr "Модуль звукового сервера"
+
+#: soundserver.cpp:34
+msgid "initializing kradio soundserver"
+msgstr "Включение звукового сервера KRadio"
diff --git a/kradio3/plugins/soundserver/soundserver.cpp b/kradio3/plugins/soundserver/soundserver.cpp
new file mode 100644
index 0000000..448bf14
--- /dev/null
+++ b/kradio3/plugins/soundserver/soundserver.cpp
@@ -0,0 +1,74 @@
+/***************************************************************************
+ soundserver.cpp - description
+ -------------------
+ begin : Sun Apr 17 2005
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "soundserver.h"
+
+#include <kapplication.h>
+#include <klocale.h>
+
+
+///////////////////////////////////////////////////////////////////////
+//// plugin library functions
+
+PLUGIN_LIBRARY_FUNCTIONS(SoundServer, "kradio-soundserver", i18n("SoundServer"));
+
+/////////////////////////////////////////////////////////////////////////////
+
+SoundServer::SoundServer(const QString &name)
+ : PluginBase(name, i18n("SoundServer Plugin"))
+{
+ logDebug(i18n("initializing kradio soundserver"));
+}
+
+SoundServer::~SoundServer()
+{
+}
+
+bool SoundServer::connectI (Interface *i)
+{
+ bool a = PluginBase::connectI(i);
+ bool b = ISoundStreamServer::connectI(i);
+ return a || b;
+}
+
+
+bool SoundServer::disconnectI (Interface *i)
+{
+ bool a = PluginBase::disconnectI(i);
+ bool b = ISoundStreamServer::disconnectI(i);
+ return a || b;
+}
+
+
+
+void SoundServer::saveState (KConfig *) const
+{
+}
+
+void SoundServer::restoreState (KConfig *)
+{
+}
+
+ConfigPageInfo SoundServer::createConfigurationPage()
+{
+ return ConfigPageInfo ();
+}
+
+AboutPageInfo SoundServer::createAboutPage()
+{
+ return AboutPageInfo();
+}
diff --git a/kradio3/plugins/soundserver/soundserver.h b/kradio3/plugins/soundserver/soundserver.h
new file mode 100644
index 0000000..01f2377
--- /dev/null
+++ b/kradio3/plugins/soundserver/soundserver.h
@@ -0,0 +1,54 @@
+/***************************************************************************
+ soundserver.h - description
+ -------------------
+ begin : Sun Apr 17 2005
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_SOUNDSERVER_H
+#define KRADIO_SOUNDSERVER_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "../../src/include/soundstreamclient_interfaces.h"
+#include "../../src/include/plugins.h"
+
+
+class SoundServer : public PluginBase,
+ public ISoundStreamServer
+{
+public:
+ SoundServer(const QString &name);
+ ~SoundServer();
+
+ virtual bool connectI (Interface *);
+ virtual bool disconnectI (Interface *);
+
+ virtual QString pluginClassName() const { return "SoundServer"; }
+
+ virtual const QString &name() const { return PluginBase::name(); }
+ virtual QString &name() { return PluginBase::name(); }
+
+ // PluginBase
+
+public:
+ virtual void saveState (KConfig *) const;
+ virtual void restoreState (KConfig *);
+
+ virtual ConfigPageInfo createConfigurationPage();
+ virtual AboutPageInfo createAboutPage();
+};
+
+#endif
diff --git a/kradio3/plugins/streaming/Makefile.am b/kradio3/plugins/streaming/Makefile.am
new file mode 100644
index 0000000..0e5ed11
--- /dev/null
+++ b/kradio3/plugins/streaming/Makefile.am
@@ -0,0 +1,18 @@
+SUBDIRS = po icons .
+
+INCLUDES = $(all_includes)
+METASOURCES = AUTO
+
+libkradio_LTLIBRARIES = libstreaming.la
+libstreaming_la_SOURCES = streaming.cpp streaming-configuration-ui.ui \
+ streaming-configuration.cpp streaming-job.cpp
+libstreaming_la_LDFLAGS = -module -avoid-version $(KDE_RPATH) $(all_libraries)
+
+noinst_HEADERS = streaming.h streaming-configuration.h streaming-job.h
+
+#messages: rc.cpp
+# $(XGETTEXT) *.cpp *.h -o po/kradio-streaming.pot
+
+messages: rc.cpp
+ $(EXTRACTRC) *.rc *.ui >> rc.cpp
+ $(XGETTEXT) rc.cpp *.h *.cpp -o po/kradio-streaming.pot
diff --git a/kradio3/plugins/streaming/icons/Makefile.am b/kradio3/plugins/streaming/icons/Makefile.am
new file mode 100644
index 0000000..b3f2583
--- /dev/null
+++ b/kradio3/plugins/streaming/icons/Makefile.am
@@ -0,0 +1,2 @@
+icons_ICON = AUTO
+iconsdir = $(kde_datadir)/kradio/icons
diff --git a/kradio3/plugins/streaming/icons/hi16-action-kradio_streaming.png b/kradio3/plugins/streaming/icons/hi16-action-kradio_streaming.png
new file mode 100644
index 0000000..af7de60
--- /dev/null
+++ b/kradio3/plugins/streaming/icons/hi16-action-kradio_streaming.png
Binary files differ
diff --git a/kradio3/plugins/streaming/icons/hi22-action-kradio_streaming.png b/kradio3/plugins/streaming/icons/hi22-action-kradio_streaming.png
new file mode 100644
index 0000000..c737464
--- /dev/null
+++ b/kradio3/plugins/streaming/icons/hi22-action-kradio_streaming.png
Binary files differ
diff --git a/kradio3/plugins/streaming/icons/hi32-action-kradio_streaming.png b/kradio3/plugins/streaming/icons/hi32-action-kradio_streaming.png
new file mode 100644
index 0000000..d3ce851
--- /dev/null
+++ b/kradio3/plugins/streaming/icons/hi32-action-kradio_streaming.png
Binary files differ
diff --git a/kradio3/plugins/streaming/icons/hi48-action-kradio_streaming.png b/kradio3/plugins/streaming/icons/hi48-action-kradio_streaming.png
new file mode 100644
index 0000000..2e1ff2a
--- /dev/null
+++ b/kradio3/plugins/streaming/icons/hi48-action-kradio_streaming.png
Binary files differ
diff --git a/kradio3/plugins/streaming/icons/hi64-action-kradio_streaming.png b/kradio3/plugins/streaming/icons/hi64-action-kradio_streaming.png
new file mode 100644
index 0000000..465cda6
--- /dev/null
+++ b/kradio3/plugins/streaming/icons/hi64-action-kradio_streaming.png
Binary files differ
diff --git a/kradio3/plugins/streaming/po/Makefile.am b/kradio3/plugins/streaming/po/Makefile.am
new file mode 100644
index 0000000..e1b5685
--- /dev/null
+++ b/kradio3/plugins/streaming/po/Makefile.am
@@ -0,0 +1,2 @@
+PACKAGE = kradio-streaming
+POFILES = AUTO
diff --git a/kradio3/plugins/streaming/po/de.po b/kradio3/plugins/streaming/po/de.po
new file mode 100644
index 0000000..aaa1e2e
--- /dev/null
+++ b/kradio3/plugins/streaming/po/de.po
@@ -0,0 +1,226 @@
+# translation of de.po to
+# translation of kradio-streaming.po to
+# This file is put in the public domain.
+#
+# Ernst Martin Witte <emw@nocabal.de>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-12 18:41+0100\n"
+"PO-Revision-Date: 2006-11-12 18:24+0100\n"
+"Last-Translator: Ernst Martin Witte <emw@nocabal.de>\n"
+"Language-Team: <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. i18n: file streaming-configuration-ui.ui line 16
+#: rc.cpp:3 rc.cpp:95 streaming-configuration-ui.cpp:253
+#, no-c-format
+msgid "StreamingConfigurationUI"
+msgstr "StreamingConfigurationUI"
+
+#. i18n: file streaming-configuration-ui.ui line 33
+#. i18n: file streaming-configuration-ui.ui line 74
+#. i18n: file streaming-configuration-ui.ui line 33
+#. i18n: file streaming-configuration-ui.ui line 74
+#: rc.cpp:6 rc.cpp:12 rc.cpp:98 rc.cpp:104 streaming-configuration-ui.cpp:43
+#: streaming-configuration-ui.cpp:52 streaming-configuration-ui.cpp:254
+#: streaming-configuration-ui.cpp:256
+#, no-c-format
+msgid "No."
+msgstr "Nr."
+
+#. i18n: file streaming-configuration-ui.ui line 44
+#. i18n: file streaming-configuration-ui.ui line 85
+#. i18n: file streaming-configuration-ui.ui line 44
+#. i18n: file streaming-configuration-ui.ui line 85
+#: rc.cpp:9 rc.cpp:15 rc.cpp:101 rc.cpp:107 streaming-configuration-ui.cpp:44
+#: streaming-configuration-ui.cpp:53 streaming-configuration-ui.cpp:255
+#: streaming-configuration-ui.cpp:257
+#, no-c-format
+msgid "URL"
+msgstr "URL"
+
+#. i18n: file streaming-configuration-ui.ui line 114
+#: rc.cpp:18 rc.cpp:110 streaming-configuration-ui.cpp:258
+#, no-c-format
+msgid "Capture URLs"
+msgstr "Aufnahme-URL"
+
+#. i18n: file streaming-configuration-ui.ui line 122
+#: rc.cpp:21 rc.cpp:113 streaming-configuration-ui.cpp:259
+#, no-c-format
+msgid "Playback URLs"
+msgstr "Wiedergabe-URL"
+
+#. i18n: file streaming-configuration-ui.ui line 434
+#: rc.cpp:32 rc.cpp:124 streaming-configuration-ui.cpp:268
+#, no-c-format
+msgid "URL Properties"
+msgstr "URL-Eigenschaften"
+
+#. i18n: file streaming-configuration-ui.ui line 446
+#: rc.cpp:35 rc.cpp:127 streaming-configuration-ui.cpp:270
+#, no-c-format
+msgid "Stereo"
+msgstr "Stereo"
+
+#. i18n: file streaming-configuration-ui.ui line 451
+#: rc.cpp:38 rc.cpp:130 streaming-configuration-ui.cpp:271
+#, no-c-format
+msgid "Mono"
+msgstr "Mono"
+
+#. i18n: file streaming-configuration-ui.ui line 471
+#: rc.cpp:41 rc.cpp:133 streaming-configuration-ui.cpp:272
+#, no-c-format
+msgid "Sample Bits"
+msgstr "Quantisierungs-Bits"
+
+#. i18n: file streaming-configuration-ui.ui line 479
+#: rc.cpp:44 rc.cpp:136 streaming-configuration-ui.cpp:273
+#, no-c-format
+msgid "Channels"
+msgstr "Kanäle"
+
+#. i18n: file streaming-configuration-ui.ui line 487
+#: rc.cpp:47 rc.cpp:139 streaming-configuration-ui.cpp:274
+#, no-c-format
+msgid "Endianess"
+msgstr "Byte-Reihenfolge"
+
+#. i18n: file streaming-configuration-ui.ui line 493
+#: rc.cpp:50 rc.cpp:142 streaming-configuration-ui.cpp:276
+#, no-c-format
+msgid "Little Endian"
+msgstr "Little Endian"
+
+#. i18n: file streaming-configuration-ui.ui line 498
+#: rc.cpp:53 rc.cpp:145 streaming-configuration-ui.cpp:277
+#, no-c-format
+msgid "Big Endian"
+msgstr "Big Endian"
+
+#. i18n: file streaming-configuration-ui.ui line 516
+#: rc.cpp:56 rc.cpp:148 streaming-configuration-ui.cpp:279
+#, no-c-format
+msgid "48000"
+msgstr "48000"
+
+#. i18n: file streaming-configuration-ui.ui line 521
+#: rc.cpp:59 rc.cpp:151 streaming-configuration-ui.cpp:280
+#, no-c-format
+msgid "44100"
+msgstr "44100"
+
+#. i18n: file streaming-configuration-ui.ui line 526
+#: rc.cpp:62 rc.cpp:154 streaming-configuration-ui.cpp:281
+#, no-c-format
+msgid "22050"
+msgstr "22050"
+
+#. i18n: file streaming-configuration-ui.ui line 531
+#: rc.cpp:65 rc.cpp:157 streaming-configuration-ui.cpp:282
+#, no-c-format
+msgid "11025"
+msgstr "11025"
+
+#. i18n: file streaming-configuration-ui.ui line 549
+#: rc.cpp:68 rc.cpp:160 streaming-configuration-ui.cpp:284
+#, no-c-format
+msgid "16"
+msgstr "16"
+
+#. i18n: file streaming-configuration-ui.ui line 554
+#: rc.cpp:71 rc.cpp:163 streaming-configuration-ui.cpp:285
+#, no-c-format
+msgid "8"
+msgstr "8"
+
+#. i18n: file streaming-configuration-ui.ui line 572
+#: rc.cpp:74 rc.cpp:166 streaming-configuration-ui.cpp:287
+#, no-c-format
+msgid "Raw"
+msgstr "Rohdaten"
+
+#. i18n: file streaming-configuration-ui.ui line 592
+#: rc.cpp:77 rc.cpp:169 streaming-configuration-ui.cpp:288
+#, no-c-format
+msgid "kB"
+msgstr "kB"
+
+#. i18n: file streaming-configuration-ui.ui line 609
+#: rc.cpp:80 rc.cpp:172 streaming-configuration-ui.cpp:289
+#, no-c-format
+msgid "Buffer Size"
+msgstr "Puffergröße"
+
+#. i18n: file streaming-configuration-ui.ui line 617
+#: rc.cpp:83 rc.cpp:175 streaming-configuration-ui.cpp:290
+#, no-c-format
+msgid "Format"
+msgstr "Format"
+
+#. i18n: file streaming-configuration-ui.ui line 625
+#: rc.cpp:86 rc.cpp:178 streaming-configuration-ui.cpp:291
+#, no-c-format
+msgid "Sample Rate"
+msgstr "Abtastrate"
+
+#. i18n: file streaming-configuration-ui.ui line 631
+#: rc.cpp:89 rc.cpp:181 streaming-configuration-ui.cpp:293
+#, no-c-format
+msgid "Signed"
+msgstr "Vorzeichenbehaftet"
+
+#. i18n: file streaming-configuration-ui.ui line 636
+#: rc.cpp:92 rc.cpp:184 streaming-configuration-ui.cpp:294
+#, no-c-format
+msgid "Unsigned"
+msgstr "Vorzeichenlos"
+
+#: streaming-configuration.cpp:155 streaming-configuration.cpp:259
+msgid "new channel"
+msgstr "Neuer Kanal"
+
+#: streaming-job.cpp:204
+msgid "skipped %1 bytes"
+msgstr "%1 bytes wurden übersprungen"
+
+#: streaming.cpp:33
+msgid "Streaming Support"
+msgstr "Unterstützung für das Streaming"
+
+#: streaming.cpp:42
+msgid "KRadio Streaming Plugin"
+msgstr "KRadio Streaming-Plugin"
+
+#: streaming.cpp:172
+msgid "Streaming"
+msgstr "Streaming"
+
+#: streaming.cpp:173
+msgid "Streaming Device Options"
+msgstr "Geräteoptionen für das Streaming"
+
+#: streaming.cpp:393
+msgid "internal stream, not stored (%1)"
+msgstr "interner, nicht aufgezeichneter Datenstrom (%1)"
+
+#: streaming.cpp:403
+msgid ""
+"StreamingDevice %1::notifySoundStreamData: Playback Clients skipped %2 bytes"
+msgstr ""
+"Streaminggerät %1::notifySoundStreamData: Die Wiedergabe-Module haben %2 "
+"bytes übersprungen."
+
+#: streaming.cpp:426
+msgid "Streaming Device %1"
+msgstr "Streaming-Gerät %1"
+
+#: streaming.cpp:432 streaming.cpp:437
+msgid "Streaming Device %1, %2: %3"
+msgstr "Streaming-Gerät %1, %2: %3"
diff --git a/kradio3/plugins/streaming/po/ru.po b/kradio3/plugins/streaming/po/ru.po
new file mode 100644
index 0000000..c46978a
--- /dev/null
+++ b/kradio3/plugins/streaming/po/ru.po
@@ -0,0 +1,228 @@
+# translation of ru.po to
+# translation of kradio-streaming.po to
+# This file is put in the public domain.
+# Алексей Кузнецов <Alexey.Kouznetsov@GMail.com>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-12 18:20+0100\n"
+"PO-Revision-Date: 2006-11-08 12:25+0300\n"
+"Last-Translator: Алексей Кузнецов <Alexey.Kouznetsov@GMail.com>\n"
+"Language-Team: <ru@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10\n"
+
+#. i18n: file streaming-configuration-ui.ui line 16
+#: rc.cpp:3 rc.cpp:95 streaming-configuration-ui.cpp:253
+#, no-c-format
+msgid "StreamingConfigurationUI"
+msgstr "StreamingConfigurationUI"
+
+#. i18n: file streaming-configuration-ui.ui line 33
+#. i18n: file streaming-configuration-ui.ui line 74
+#. i18n: file streaming-configuration-ui.ui line 33
+#. i18n: file streaming-configuration-ui.ui line 74
+#: rc.cpp:6 rc.cpp:12 rc.cpp:98 rc.cpp:104 streaming-configuration-ui.cpp:43
+#: streaming-configuration-ui.cpp:52 streaming-configuration-ui.cpp:254
+#: streaming-configuration-ui.cpp:256
+#, no-c-format
+msgid "No."
+msgstr "No "
+
+#. i18n: file streaming-configuration-ui.ui line 44
+#. i18n: file streaming-configuration-ui.ui line 85
+#. i18n: file streaming-configuration-ui.ui line 44
+#. i18n: file streaming-configuration-ui.ui line 85
+#: rc.cpp:9 rc.cpp:15 rc.cpp:101 rc.cpp:107 streaming-configuration-ui.cpp:44
+#: streaming-configuration-ui.cpp:53 streaming-configuration-ui.cpp:255
+#: streaming-configuration-ui.cpp:257
+#, no-c-format
+msgid "URL"
+msgstr "Адрес"
+
+#. i18n: file streaming-configuration-ui.ui line 114
+#: rc.cpp:18 rc.cpp:110 streaming-configuration-ui.cpp:258
+#, no-c-format
+msgid "Capture URLs"
+msgstr "Адреса для записи"
+
+#. i18n: file streaming-configuration-ui.ui line 122
+#: rc.cpp:21 rc.cpp:113 streaming-configuration-ui.cpp:259
+#, no-c-format
+msgid "Playback URLs"
+msgstr "Адреса для воспроизведения"
+
+#. i18n: file streaming-configuration-ui.ui line 434
+#: rc.cpp:32 rc.cpp:124 streaming-configuration-ui.cpp:268
+#, no-c-format
+msgid "URL Properties"
+msgstr "Параметры для URL"
+
+#. i18n: file streaming-configuration-ui.ui line 446
+#: rc.cpp:35 rc.cpp:127 streaming-configuration-ui.cpp:270
+#, no-c-format
+msgid "Stereo"
+msgstr "2 (Стерео)"
+
+#. i18n: file streaming-configuration-ui.ui line 451
+#: rc.cpp:38 rc.cpp:130 streaming-configuration-ui.cpp:271
+#, no-c-format
+msgid "Mono"
+msgstr "1 (Моно)"
+
+#. i18n: file streaming-configuration-ui.ui line 471
+#: rc.cpp:41 rc.cpp:133 streaming-configuration-ui.cpp:272
+#, no-c-format
+msgid "Sample Bits"
+msgstr "Бит на элемент выборки"
+
+#. i18n: file streaming-configuration-ui.ui line 479
+#: rc.cpp:44 rc.cpp:136 streaming-configuration-ui.cpp:273
+#, no-c-format
+msgid "Channels"
+msgstr "Число каналов"
+
+#. i18n: file streaming-configuration-ui.ui line 487
+#: rc.cpp:47 rc.cpp:139 streaming-configuration-ui.cpp:274
+#, no-c-format
+msgid "Endianess"
+msgstr "Порядок байтов"
+
+#. i18n: file streaming-configuration-ui.ui line 493
+#: rc.cpp:50 rc.cpp:142 streaming-configuration-ui.cpp:276
+#, no-c-format
+msgid "Little Endian"
+msgstr "Little Endian"
+
+#. i18n: file streaming-configuration-ui.ui line 498
+#: rc.cpp:53 rc.cpp:145 streaming-configuration-ui.cpp:277
+#, no-c-format
+msgid "Big Endian"
+msgstr "Big Endian"
+
+#. i18n: file streaming-configuration-ui.ui line 516
+#: rc.cpp:56 rc.cpp:148 streaming-configuration-ui.cpp:279
+#, no-c-format
+msgid "48000"
+msgstr "48000"
+
+#. i18n: file streaming-configuration-ui.ui line 521
+#: rc.cpp:59 rc.cpp:151 streaming-configuration-ui.cpp:280
+#, no-c-format
+msgid "44100"
+msgstr "44100"
+
+#. i18n: file streaming-configuration-ui.ui line 526
+#: rc.cpp:62 rc.cpp:154 streaming-configuration-ui.cpp:281
+#, no-c-format
+msgid "22050"
+msgstr "22050"
+
+#. i18n: file streaming-configuration-ui.ui line 531
+#: rc.cpp:65 rc.cpp:157 streaming-configuration-ui.cpp:282
+#, no-c-format
+msgid "11025"
+msgstr "11025"
+
+#. i18n: file streaming-configuration-ui.ui line 549
+#: rc.cpp:68 rc.cpp:160 streaming-configuration-ui.cpp:284
+#, no-c-format
+msgid "16"
+msgstr "16"
+
+#. i18n: file streaming-configuration-ui.ui line 554
+#: rc.cpp:71 rc.cpp:163 streaming-configuration-ui.cpp:285
+#, no-c-format
+msgid "8"
+msgstr "8"
+
+#. i18n: file streaming-configuration-ui.ui line 572
+#: rc.cpp:74 rc.cpp:166 streaming-configuration-ui.cpp:287
+#, no-c-format
+msgid "Raw"
+msgstr "Raw"
+
+#. i18n: file streaming-configuration-ui.ui line 592
+#: rc.cpp:77 rc.cpp:169 streaming-configuration-ui.cpp:288
+#, no-c-format
+msgid "kB"
+msgstr "kB"
+
+#. i18n: file streaming-configuration-ui.ui line 609
+#: rc.cpp:80 rc.cpp:172 streaming-configuration-ui.cpp:289
+#, no-c-format
+msgid "Buffer Size"
+msgstr "Размер буфера"
+
+#. i18n: file streaming-configuration-ui.ui line 617
+#: rc.cpp:83 rc.cpp:175 streaming-configuration-ui.cpp:290
+#, no-c-format
+msgid "Format"
+msgstr "Формат"
+
+#. i18n: file streaming-configuration-ui.ui line 625
+#: rc.cpp:86 rc.cpp:178 streaming-configuration-ui.cpp:291
+#, no-c-format
+msgid "Sample Rate"
+msgstr "Частота дискретизации"
+
+#. i18n: file streaming-configuration-ui.ui line 631
+#: rc.cpp:89 rc.cpp:181 streaming-configuration-ui.cpp:293
+#, no-c-format
+msgid "Signed"
+msgstr "Со знаком"
+
+#. i18n: file streaming-configuration-ui.ui line 636
+#: rc.cpp:92 rc.cpp:184 streaming-configuration-ui.cpp:294
+#, no-c-format
+msgid "Unsigned"
+msgstr "Без знака"
+
+#: streaming-configuration.cpp:155 streaming-configuration.cpp:259
+msgid "new channel"
+msgstr "новый канал"
+
+#: streaming-job.cpp:204
+msgid "skipped %1 bytes"
+msgstr "Пропущено %1 байт"
+
+#: streaming.cpp:33
+msgid "Streaming Support"
+msgstr ""
+"Сетевое\n"
+"вещание"
+
+#: streaming.cpp:42
+msgid "KRadio Streaming Plugin"
+msgstr "Модуль сетевого вещания для KRadio"
+
+#: streaming.cpp:172
+msgid "Streaming"
+msgstr ""
+"Сетевое\n"
+"вещание"
+
+#: streaming.cpp:173
+msgid "Streaming Device Options"
+msgstr "Параметры сетевого вещания"
+
+#: streaming.cpp:393
+msgid "internal stream, not stored (%1)"
+msgstr ""
+
+#: streaming.cpp:403
+msgid ""
+"StreamingDevice %1::notifySoundStreamData: Playback Clients skipped %2 bytes"
+msgstr "StreamingDevice %1::notifySoundStreamData: Клиенты пропустили %2 байт"
+
+#: streaming.cpp:426
+msgid "Streaming Device %1"
+msgstr "Устройство вещания %1"
+
+#: streaming.cpp:432 streaming.cpp:437
+msgid "Streaming Device %1, %2: %3"
+msgstr "Устройство вещания %1, %2: %3"
diff --git a/kradio3/plugins/streaming/streaming-configuration-ui.ui b/kradio3/plugins/streaming/streaming-configuration-ui.ui
new file mode 100644
index 0000000..001d4ae
--- /dev/null
+++ b/kradio3/plugins/streaming/streaming-configuration-ui.ui
@@ -0,0 +1,777 @@
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
+<class>StreamingConfigurationUI</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>StreamingConfigurationUI</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>397</width>
+ <height>423</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>StreamingConfigurationUI</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget" row="0" column="0">
+ <property name="name">
+ <cstring>layout48</cstring>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="KListView" row="1" column="0">
+ <column>
+ <property name="text">
+ <string>No.</string>
+ </property>
+ <property name="clickable">
+ <bool>true</bool>
+ </property>
+ <property name="resizable">
+ <bool>true</bool>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>URL</string>
+ </property>
+ <property name="clickable">
+ <bool>true</bool>
+ </property>
+ <property name="resizable">
+ <bool>true</bool>
+ </property>
+ </column>
+ <property name="name">
+ <cstring>m_ListPlaybackURLs</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>7</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="selectionMode" stdset="0">
+ <enum>Single</enum>
+ </property>
+ <property name="defaultRenameAction">
+ <enum>Accept</enum>
+ </property>
+ </widget>
+ <widget class="KListView" row="1" column="2">
+ <column>
+ <property name="text">
+ <string>No.</string>
+ </property>
+ <property name="clickable">
+ <bool>true</bool>
+ </property>
+ <property name="resizable">
+ <bool>true</bool>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>URL</string>
+ </property>
+ <property name="clickable">
+ <bool>true</bool>
+ </property>
+ <property name="resizable">
+ <bool>true</bool>
+ </property>
+ </column>
+ <property name="name">
+ <cstring>m_ListCaptureURLs</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>7</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="defaultRenameAction">
+ <enum>Accept</enum>
+ </property>
+ </widget>
+ <widget class="QLabel" row="0" column="2">
+ <property name="name">
+ <cstring>textLabel1_2</cstring>
+ </property>
+ <property name="text">
+ <string>Capture URLs</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="0" column="0">
+ <property name="name">
+ <cstring>textLabel1</cstring>
+ </property>
+ <property name="text">
+ <string>Playback URLs</string>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget" row="1" column="3">
+ <property name="name">
+ <cstring>layout38_2</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>m_pbNewCaptureURL</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>30</width>
+ <height>30</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>30</width>
+ <height>30</height>
+ </size>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="iconSet">
+ <iconset>"filenew2"</iconset>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>m_pbDeleteCaptureURL</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>30</width>
+ <height>30</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>30</width>
+ <height>30</height>
+ </size>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="iconSet">
+ <iconset>"editdelete"</iconset>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer46_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>10</width>
+ <height>10</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>m_pbUpCaptureURL</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>30</width>
+ <height>30</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>30</width>
+ <height>30</height>
+ </size>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="iconSet">
+ <iconset>"1uparrow"</iconset>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>m_pbDownCaptureURL</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>30</width>
+ <height>30</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>30</width>
+ <height>30</height>
+ </size>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="iconSet">
+ <iconset>"1downarrow"</iconset>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QLayoutWidget" row="1" column="1">
+ <property name="name">
+ <cstring>layout38</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>m_pbNewPlaybackURL</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>30</width>
+ <height>30</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>30</width>
+ <height>30</height>
+ </size>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="iconSet">
+ <iconset>"filenew2"</iconset>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>m_pbDeletePlaybackURL</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>30</width>
+ <height>30</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>30</width>
+ <height>30</height>
+ </size>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="iconSet">
+ <iconset>"editdelete"</iconset>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer46</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>10</width>
+ <height>10</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>m_pbUpPlaybackURL</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>30</width>
+ <height>30</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>30</width>
+ <height>30</height>
+ </size>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="iconSet">
+ <iconset>"1uparrow"</iconset>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>m_pbDownPlaybackURL</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>30</width>
+ <height>30</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>30</width>
+ <height>30</height>
+ </size>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="iconSet">
+ <iconset>"1downarrow"</iconset>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ </grid>
+ </widget>
+ <widget class="QGroupBox" row="1" column="0">
+ <property name="name">
+ <cstring>groupBox3</cstring>
+ </property>
+ <property name="title">
+ <string>URL Properties</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>10</number>
+ </property>
+ <widget class="KComboBox" row="5" column="1">
+ <item>
+ <property name="text">
+ <string>Stereo</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Mono</string>
+ </property>
+ </item>
+ <property name="name">
+ <cstring>m_cbChannels</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>3</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <widget class="QLabel" row="3" column="0">
+ <property name="name">
+ <cstring>lableBits</cstring>
+ </property>
+ <property name="text">
+ <string>Sample Bits</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="5" column="0">
+ <property name="name">
+ <cstring>lableChannels</cstring>
+ </property>
+ <property name="text">
+ <string>Channels</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="4" column="0">
+ <property name="name">
+ <cstring>lableEndianess</cstring>
+ </property>
+ <property name="text">
+ <string>Endianess</string>
+ </property>
+ </widget>
+ <widget class="KComboBox" row="4" column="1">
+ <item>
+ <property name="text">
+ <string>Little Endian</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Big Endian</string>
+ </property>
+ </item>
+ <property name="name">
+ <cstring>m_cbEndianess</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>3</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <widget class="KComboBox" row="2" column="1">
+ <item>
+ <property name="text">
+ <string>48000</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>44100</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>22050</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>11025</string>
+ </property>
+ </item>
+ <property name="name">
+ <cstring>m_cbRate</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>3</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <widget class="KComboBox" row="3" column="1">
+ <item>
+ <property name="text">
+ <string>16</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>8</string>
+ </property>
+ </item>
+ <property name="name">
+ <cstring>m_cbBits</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>3</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <widget class="KComboBox" row="1" column="1">
+ <item>
+ <property name="text">
+ <string>Raw</string>
+ </property>
+ </item>
+ <property name="name">
+ <cstring>m_cbFormat</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>3</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <widget class="KIntSpinBox" row="0" column="1">
+ <property name="name">
+ <cstring>m_sbBufferSize</cstring>
+ </property>
+ <property name="suffix">
+ <string>kB</string>
+ </property>
+ <property name="maxValue">
+ <number>1024</number>
+ </property>
+ <property name="minValue">
+ <number>4</number>
+ </property>
+ <property name="lineStep">
+ <number>4</number>
+ </property>
+ </widget>
+ <widget class="QLabel" row="0" column="0">
+ <property name="name">
+ <cstring>labelRate_2</cstring>
+ </property>
+ <property name="text">
+ <string>Buffer Size</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="1" column="0">
+ <property name="name">
+ <cstring>labelRate_2_2</cstring>
+ </property>
+ <property name="text">
+ <string>Format</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="2" column="0">
+ <property name="name">
+ <cstring>labelRate</cstring>
+ </property>
+ <property name="text">
+ <string>Sample Rate</string>
+ </property>
+ </widget>
+ <widget class="KComboBox" row="3" column="2">
+ <item>
+ <property name="text">
+ <string>Signed</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Unsigned</string>
+ </property>
+ </item>
+ <property name="name">
+ <cstring>m_cbSign</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>3</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <spacer row="2" column="2">
+ <property name="name">
+ <cstring>spacer1</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Minimum</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>140</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <spacer row="1" column="2">
+ <property name="name">
+ <cstring>spacer1_4</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Minimum</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>140</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <spacer row="0" column="2">
+ <property name="name">
+ <cstring>spacer1_4_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Minimum</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>140</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <spacer row="4" column="2">
+ <property name="name">
+ <cstring>spacer1_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Minimum</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>140</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <spacer row="5" column="2">
+ <property name="name">
+ <cstring>spacer1_3</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Minimum</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>140</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </grid>
+ </widget>
+ </grid>
+</widget>
+<customwidgets>
+</customwidgets>
+<tabstops>
+ <tabstop>m_ListPlaybackURLs</tabstop>
+ <tabstop>m_pbNewPlaybackURL</tabstop>
+ <tabstop>m_pbDeletePlaybackURL</tabstop>
+ <tabstop>m_pbUpPlaybackURL</tabstop>
+ <tabstop>m_pbDownPlaybackURL</tabstop>
+ <tabstop>m_ListCaptureURLs</tabstop>
+ <tabstop>m_pbNewCaptureURL</tabstop>
+ <tabstop>m_pbDeleteCaptureURL</tabstop>
+ <tabstop>m_pbUpCaptureURL</tabstop>
+ <tabstop>m_pbDownCaptureURL</tabstop>
+ <tabstop>m_sbBufferSize</tabstop>
+ <tabstop>m_cbFormat</tabstop>
+ <tabstop>m_cbRate</tabstop>
+ <tabstop>m_cbBits</tabstop>
+ <tabstop>m_cbSign</tabstop>
+ <tabstop>m_cbEndianess</tabstop>
+ <tabstop>m_cbChannels</tabstop>
+</tabstops>
+<includes>
+ <include location="global" impldecl="in implementation">kiconloader.h</include>
+</includes>
+<pixmapfunction>SmallIconSet</pixmapfunction>
+<layoutdefaults spacing="6" margin="0"/>
+<includehints>
+ <includehint>klistview.h</includehint>
+ <includehint>klistview.h</includehint>
+ <includehint>kcombobox.h</includehint>
+ <includehint>kcombobox.h</includehint>
+ <includehint>kcombobox.h</includehint>
+ <includehint>kcombobox.h</includehint>
+ <includehint>kcombobox.h</includehint>
+ <includehint>knuminput.h</includehint>
+ <includehint>kcombobox.h</includehint>
+</includehints>
+</UI>
diff --git a/kradio3/plugins/streaming/streaming-configuration.cpp b/kradio3/plugins/streaming/streaming-configuration.cpp
new file mode 100644
index 0000000..ea1801d
--- /dev/null
+++ b/kradio3/plugins/streaming/streaming-configuration.cpp
@@ -0,0 +1,567 @@
+/***************************************************************************
+ streaming-configuration.cpp - description
+ -------------------
+ begin : Thu Sep 30 2004
+ copyright : (C) 2004 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include <qcheckbox.h>
+
+#include <kurlrequester.h>
+#include <knuminput.h>
+#include <klistview.h>
+#include <kcombobox.h>
+#include <knuminput.h>
+
+#include <klocale.h>
+
+#include "streaming-configuration.h"
+#include "streaming.h"
+
+StreamingConfiguration::StreamingConfiguration (QWidget *parent, StreamingDevice *streamer)
+ : StreamingConfigurationUI(parent),
+ m_ignore_updates(false),
+ m_dirty(true),
+ m_StreamingDevice(streamer)
+{
+ connect(m_pbNewPlaybackURL, SIGNAL(clicked()), this, SLOT(slotNewPlaybackChannel()));
+ connect(m_pbDeletePlaybackURL, SIGNAL(clicked()), this, SLOT(slotDeletePlaybackChannel()));
+ connect(m_pbUpPlaybackURL, SIGNAL(clicked()), this, SLOT(slotUpPlaybackChannel()));
+ connect(m_pbDownPlaybackURL, SIGNAL(clicked()), this, SLOT(slotDownPlaybackChannel()));
+ connect(m_ListPlaybackURLs, SIGNAL(selectionChanged()), this, SLOT(slotPlaybackSelectionChanged()));
+ connect(m_ListPlaybackURLs, SIGNAL(itemRenamed(QListViewItem *)), this, SLOT(slotSetDirty()));
+
+ connect(m_pbNewCaptureURL, SIGNAL(clicked()), this, SLOT(slotNewCaptureChannel()));
+ connect(m_pbDeleteCaptureURL, SIGNAL(clicked()), this, SLOT(slotDeleteCaptureChannel()));
+ connect(m_pbUpCaptureURL, SIGNAL(clicked()), this, SLOT(slotUpCaptureChannel()));
+ connect(m_pbDownCaptureURL, SIGNAL(clicked()), this, SLOT(slotDownCaptureChannel()));
+ connect(m_ListCaptureURLs, SIGNAL(selectionChanged()), this, SLOT(slotCaptureSelectionChanged()));
+ connect(m_ListCaptureURLs, SIGNAL(itemRenamed(QListViewItem *)), this, SLOT(slotSetDirty()));
+
+ connect(m_cbBits, SIGNAL(activated(int)), this, SLOT(slotUpdateSoundFormat()));
+ connect(m_cbChannels, SIGNAL(activated(int)), this, SLOT(slotUpdateSoundFormat()));
+ connect(m_cbEndianess, SIGNAL(activated(int)), this, SLOT(slotUpdateSoundFormat()));
+ connect(m_cbFormat, SIGNAL(activated(int)), this, SLOT(slotUpdateSoundFormat()));
+ connect(m_cbRate, SIGNAL(activated(int)), this, SLOT(slotUpdateSoundFormat()));
+ connect(m_cbSign, SIGNAL(activated(int)), this, SLOT(slotUpdateSoundFormat()));
+ connect(m_sbBufferSize, SIGNAL(valueChanged(int)), this, SLOT(slotUpdateSoundFormat()));
+
+ m_ListPlaybackURLs->setAllColumnsShowFocus(true);
+ m_ListPlaybackURLs->setSorting(-1);
+ m_ListCaptureURLs->setAllColumnsShowFocus(true);
+ m_ListCaptureURLs->setSorting(-1);
+
+ slotCancel();
+}
+
+
+StreamingConfiguration::~StreamingConfiguration ()
+{
+}
+
+
+void StreamingConfiguration::slotOK()
+{
+ if (!m_dirty)
+ return;
+
+ m_StreamingDevice->resetPlaybackStreams(false);
+ m_StreamingDevice->resetCaptureStreams(false);
+
+ QListViewItem *item = m_ListPlaybackURLs->firstChild();
+ for (int i = 0; item; ++i, item = item->nextSibling()) {
+ m_StreamingDevice->addPlaybackStream(item->text(1), m_PlaybackSoundFormats[i], m_PlaybackBufferSizes[i], !item->nextSibling());
+ }
+
+ item = m_ListCaptureURLs->firstChild();
+ for (int i = 0; item; ++i, item = item->nextSibling()) {
+ m_StreamingDevice->addCaptureStream(item->text(1), m_CaptureSoundFormats[i], m_CaptureBufferSizes[i], !item->nextSibling());
+ }
+
+ m_dirty = false;
+}
+
+
+void StreamingConfiguration::slotCancel()
+{
+ if (!m_dirty)
+ return;
+
+ const QStringList &playbackChannels = m_StreamingDevice->getPlaybackChannels();
+ const QStringList &captureChannels = m_StreamingDevice->getCaptureChannels();
+
+ m_ListPlaybackURLs->clear();
+ m_PlaybackBufferSizes.clear();
+ m_PlaybackSoundFormats.clear();
+
+ for (unsigned int i = 0; i < playbackChannels.size(); ++i) {
+ SoundFormat sf;
+ size_t buffer_size;
+ QString url;
+ m_StreamingDevice->getPlaybackStreamOptions(playbackChannels[i], url, sf, buffer_size);
+ m_PlaybackSoundFormats.append(sf);
+ m_PlaybackBufferSizes.append(buffer_size);
+
+ QListViewItem *item = new QListViewItem(m_ListPlaybackURLs, m_ListPlaybackURLs->lastChild());
+ item->setText(0, QString::number(m_ListPlaybackURLs->childCount()));
+ item->setText(1, url);
+ item->setRenameEnabled(1, true);
+ }
+
+ m_ListCaptureURLs->clear();
+ m_CaptureBufferSizes.clear();
+ m_CaptureSoundFormats.clear();
+
+ for (unsigned int i = 0; i < captureChannels.size(); ++i) {
+ SoundFormat sf;
+ size_t buffer_size;
+ QString url;
+ m_StreamingDevice->getCaptureStreamOptions(captureChannels[i], url, sf, buffer_size);
+ m_CaptureSoundFormats.append(sf);
+ m_CaptureBufferSizes.append(buffer_size);
+
+ QListViewItem *item = new QListViewItem(m_ListCaptureURLs, m_ListCaptureURLs->lastChild());
+ item->setText(0, QString::number(m_ListCaptureURLs->childCount()));
+ item->setText(1, url);
+ item->setRenameEnabled(1, true);
+ }
+ slotPlaybackSelectionChanged();
+ slotCaptureSelectionChanged();
+
+ m_dirty = false;
+}
+
+void StreamingConfiguration::slotUpdateConfig()
+{
+ slotSetDirty();
+ slotCancel();
+}
+
+void StreamingConfiguration::slotNewPlaybackChannel()
+{
+ slotSetDirty();
+ QListViewItem *item = new QListViewItem(m_ListPlaybackURLs, m_ListPlaybackURLs->lastChild());
+ item->setText(0, QString::number(m_ListPlaybackURLs->childCount()));
+ item->setText(1, i18n("new channel"));
+ item->setRenameEnabled(1,true);
+ item->startRename(1);
+
+ m_PlaybackSoundFormats.append(SoundFormat());
+ m_PlaybackBufferSizes.append(64*1024);
+ int n = m_PlaybackSoundFormats.size();
+ setStreamOptions(m_PlaybackSoundFormats[n-1], m_PlaybackBufferSizes[n-1]);
+}
+
+
+void StreamingConfiguration::slotDeletePlaybackChannel()
+{
+ slotSetDirty();
+ QListViewItem *item = m_ListPlaybackURLs->selectedItem();
+ if (item) {
+ int idx = 0;
+ QListViewItem *i = m_ListPlaybackURLs->firstChild(),
+ *prev = NULL,
+ *next = item->nextSibling();
+ for (; i && i != item; i = i->nextSibling()) {
+ prev = i;
+ ++idx;
+ }
+ if(next) {
+ m_ListPlaybackURLs->setSelected(next, true);
+ } else if (prev){
+ m_ListPlaybackURLs->setSelected(prev, true);
+ }
+ int x = item->text(0).toUInt();
+ for (i = next; i; i = i->nextSibling(), ++x) {
+ i->setText(0, QString::number(x));
+ }
+ m_ListPlaybackURLs->takeItem(item);
+ delete item;
+
+ int n = m_PlaybackSoundFormats.size();
+ m_PlaybackSoundFormats.remove(m_PlaybackSoundFormats.at(idx));
+ m_PlaybackBufferSizes .remove(m_PlaybackBufferSizes.at(idx));
+ idx = idx < n - 1 ? idx : n - 1;
+ setStreamOptions( m_PlaybackSoundFormats[idx], m_PlaybackBufferSizes[idx]);
+ slotPlaybackSelectionChanged();
+ }
+}
+
+
+void StreamingConfiguration::slotUpPlaybackChannel()
+{
+ slotSetDirty();
+ QListViewItem *prev = NULL;
+ QListViewItem *i = m_ListPlaybackURLs->firstChild();
+ QListViewItem *item = m_ListPlaybackURLs->selectedItem();
+ int idx = 0;
+ for (; i && i != item; i = i->nextSibling(), ++idx) {
+ prev = i;
+ }
+ if (prev && item) {
+ QString s = prev->text(1);
+ prev->setText(1, item->text(1));
+ item->setText(1, s);
+ SoundFormat sf = m_PlaybackSoundFormats[idx];
+ m_PlaybackSoundFormats[idx] = m_PlaybackSoundFormats[idx-1];
+ m_PlaybackSoundFormats[idx-1] = sf;
+ size_t size = m_PlaybackBufferSizes[idx];
+ m_PlaybackBufferSizes[idx] = m_PlaybackBufferSizes[idx-1];
+ m_PlaybackBufferSizes[idx-1] = size;
+ m_ListPlaybackURLs->setSelected(prev, true);
+ }
+ m_ListPlaybackURLs->ensureItemVisible(prev);
+}
+
+
+void StreamingConfiguration::slotDownPlaybackChannel()
+{
+ slotSetDirty();
+ QListViewItem *item = m_ListPlaybackURLs->selectedItem();
+ QListViewItem *next = item ? item->nextSibling() : NULL;
+ QListViewItem *i = m_ListPlaybackURLs->firstChild();
+ int idx = 0;
+ for (; i && i != item; i = i->nextSibling()) {
+ ++idx;
+ }
+ if (next && item) {
+ QString s = next->text(1);
+ next->setText(1, item->text(1));
+ item->setText(1, s);
+ SoundFormat sf = m_PlaybackSoundFormats[idx];
+ m_PlaybackSoundFormats[idx] = m_PlaybackSoundFormats[idx+1];
+ m_PlaybackSoundFormats[idx+1] = sf;
+ size_t size = m_PlaybackBufferSizes[idx];
+ m_PlaybackBufferSizes[idx] = m_PlaybackBufferSizes[idx+1];
+ m_PlaybackBufferSizes[idx+1] = size;
+ m_ListPlaybackURLs->setSelected(next, true);
+ }
+ m_ListPlaybackURLs->ensureItemVisible(next);
+}
+
+
+
+void StreamingConfiguration::slotNewCaptureChannel()
+{
+ slotSetDirty();
+ QListViewItem *item = new QListViewItem(m_ListCaptureURLs, m_ListCaptureURLs->lastChild());
+ item->setText(0, QString::number(m_ListCaptureURLs->childCount()));
+ item->setText(1, i18n("new channel"));
+ item->setRenameEnabled(1,true);
+ item->startRename(1);
+
+ m_CaptureSoundFormats.append(SoundFormat());
+ m_CaptureBufferSizes.append(64*1024);
+ int n = m_CaptureSoundFormats.size();
+ setStreamOptions(m_CaptureSoundFormats[n-1], m_CaptureBufferSizes[n-1]);
+}
+
+
+void StreamingConfiguration::slotDeleteCaptureChannel()
+{
+ slotSetDirty();
+ QListViewItem *item = m_ListCaptureURLs->selectedItem();
+ if (item) {
+ int idx = 0;
+ QListViewItem *i = m_ListCaptureURLs->firstChild(),
+ *prev = NULL,
+ *next = item->nextSibling();
+ for (; i && i != item; i = i->nextSibling()) {
+ prev = i;
+ ++idx;
+ }
+ if (next) {
+ m_ListCaptureURLs->setSelected(next, true);
+ } else if (prev){
+ m_ListCaptureURLs->setSelected(prev, true);
+ }
+ int x = item->text(0).toUInt();
+ for (i = next; i; i = i->nextSibling(), ++x) {
+ i->setText(0, QString::number(x));
+ }
+ m_ListCaptureURLs->takeItem(item);
+ delete item;
+
+ int n = m_CaptureSoundFormats.size();
+ m_CaptureSoundFormats.remove(m_CaptureSoundFormats.at(idx));
+ m_CaptureBufferSizes .remove(m_CaptureBufferSizes.at(idx));
+ idx = idx < n - 1 ? idx : n - 1;
+ setStreamOptions( m_CaptureSoundFormats[idx], m_CaptureBufferSizes[idx]);
+ slotCaptureSelectionChanged();
+ }
+}
+
+
+void StreamingConfiguration::slotUpCaptureChannel()
+{
+ slotSetDirty();
+ QListViewItem *prev = NULL;
+ QListViewItem *i = m_ListCaptureURLs->firstChild();
+ QListViewItem *item = m_ListCaptureURLs->selectedItem();
+ int idx = 0;
+ for (; i && i != item; i = i->nextSibling(), ++idx) {
+ prev = i;
+ }
+ if (prev && item) {
+ QString s = prev->text(1);
+ prev->setText(1, item->text(1));
+ item->setText(1, s);
+ SoundFormat sf = m_CaptureSoundFormats[idx];
+ m_CaptureSoundFormats[idx] = m_CaptureSoundFormats[idx-1];
+ m_CaptureSoundFormats[idx-1] = sf;
+ size_t size = m_CaptureBufferSizes[idx];
+ m_CaptureBufferSizes[idx] = m_CaptureBufferSizes[idx-1];
+ m_CaptureBufferSizes[idx-1] = size;
+ m_ListCaptureURLs->setSelected(prev, true);
+ }
+ m_ListCaptureURLs->ensureItemVisible(prev);
+}
+
+
+void StreamingConfiguration::slotDownCaptureChannel()
+{
+ slotSetDirty();
+ QListViewItem *item = m_ListCaptureURLs->selectedItem();
+ QListViewItem *next = item ? item->nextSibling() : NULL;
+ QListViewItem *i = m_ListCaptureURLs->firstChild();
+ int idx = 0;
+ for (; i && i != item; i = i->nextSibling()) {
+ ++idx;
+ }
+ if (next && item) {
+ QString s = next->text(1);
+ next->setText(1, item->text(1));
+ item->setText(1, s);
+ SoundFormat sf = m_CaptureSoundFormats[idx];
+ m_CaptureSoundFormats[idx] = m_CaptureSoundFormats[idx+1];
+ m_CaptureSoundFormats[idx+1] = sf;
+ size_t size = m_CaptureBufferSizes[idx];
+ m_CaptureBufferSizes[idx] = m_CaptureBufferSizes[idx+1];
+ m_CaptureBufferSizes[idx+1] = size;
+ m_ListCaptureURLs->setSelected(next, true);
+ }
+ m_ListCaptureURLs->ensureItemVisible(next);
+}
+
+
+
+
+
+void StreamingConfiguration::slotPlaybackSelectionChanged()
+{
+ QListViewItem *item = m_ListPlaybackURLs->selectedItem();
+ bool up_possible = false;
+ bool down_possible = false;
+ if (item) {
+ int idx = 0;
+ QListViewItem *i = m_ListPlaybackURLs->firstChild();
+ for (; i && i != item; i = i->nextSibling()) {
+ ++idx;
+ }
+ up_possible = idx > 0;
+ down_possible = idx < m_ListPlaybackURLs->childCount() - 1;
+ setStreamOptions(m_PlaybackSoundFormats[idx], m_PlaybackBufferSizes[idx]);
+
+ item = m_ListCaptureURLs->selectedItem();
+ if (item)
+ m_ListCaptureURLs->setSelected(item, false);
+ }
+ QListViewItem *playback_item = m_ListPlaybackURLs->selectedItem();
+ QListViewItem *capture_item = m_ListCaptureURLs->selectedItem();
+ bool e = (playback_item || capture_item);
+ m_cbFormat ->setEnabled(e);
+ m_cbRate ->setEnabled(e);
+ m_cbBits ->setEnabled(e);
+ m_cbSign ->setEnabled(e);
+ m_cbChannels ->setEnabled(e);
+ m_cbEndianess ->setEnabled(e);
+ m_sbBufferSize->setEnabled(e);
+ m_pbUpPlaybackURL ->setEnabled(up_possible);
+ m_pbDownPlaybackURL->setEnabled(down_possible);
+}
+
+
+void StreamingConfiguration::slotCaptureSelectionChanged()
+{
+ QListViewItem *item = m_ListCaptureURLs->selectedItem();
+ bool up_possible = false;
+ bool down_possible = false;
+ if (item) {
+ int idx = 0;
+ QListViewItem *i = m_ListCaptureURLs->firstChild();
+ for (; i && i != item; i = i->nextSibling()) {
+ ++idx;
+ }
+ up_possible = idx > 0;
+ down_possible = idx < m_ListCaptureURLs->childCount() - 1;
+ setStreamOptions(m_CaptureSoundFormats[idx], m_CaptureBufferSizes[idx]);
+
+ item = m_ListPlaybackURLs->selectedItem();
+ if (item)
+ m_ListPlaybackURLs->setSelected(item, false);
+ }
+ QListViewItem *playback_item = m_ListPlaybackURLs->selectedItem();
+ QListViewItem *capture_item = m_ListCaptureURLs->selectedItem();
+ bool e = (playback_item || capture_item);
+ m_cbFormat ->setEnabled(e);
+ m_cbRate ->setEnabled(e);
+ m_cbBits ->setEnabled(e);
+ m_cbSign ->setEnabled(e);
+ m_cbChannels ->setEnabled(e);
+ m_cbEndianess ->setEnabled(e);
+ m_sbBufferSize->setEnabled(e);
+ m_pbUpCaptureURL ->setEnabled(up_possible);
+ m_pbDownCaptureURL->setEnabled(down_possible);
+}
+
+void StreamingConfiguration::slotSetDirty()
+{
+ m_dirty = true;
+}
+
+void StreamingConfiguration::slotUpdateSoundFormat()
+{
+ if (m_ignore_updates)
+ return;
+
+ slotSetDirty();
+ QListViewItem *playback_item = m_ListPlaybackURLs->selectedItem();
+ QListViewItem *capture_item = m_ListCaptureURLs->selectedItem();
+ if (playback_item) {
+ int idx = 0;
+ QListViewItem *i = m_ListPlaybackURLs->firstChild();
+ for (; i && i != playback_item; i = i->nextSibling()) {
+ ++idx;
+ }
+ getStreamOptions(m_PlaybackSoundFormats[idx], m_PlaybackBufferSizes[idx]);
+ }
+ else if (capture_item) {
+ int idx = 0;
+ QListViewItem *i = m_ListCaptureURLs->firstChild();
+ for (; i && i != capture_item; i = i->nextSibling()) {
+ ++idx;
+ }
+ getStreamOptions(m_CaptureSoundFormats[idx], m_CaptureBufferSizes[idx]);
+ }
+}
+
+
+void StreamingConfiguration::setStreamOptions(const SoundFormat &sf, int BufferSize)
+{
+ m_ignore_updates = true;
+
+ int idx_Format = FORMAT_RAW_IDX;
+ int idx_Rate = RATE_44100_IDX;
+ int idx_Bits = BITS_16_IDX;
+ int idx_Sign = SIGN_SIGNED_IDX;
+ int idx_Channels = CHANNELS_STEREO_IDX;
+ int idx_Endianess = ENDIAN_LITTLE_IDX;
+
+ if (sf.m_Encoding == "raw") {
+ idx_Format = FORMAT_RAW_IDX;
+ }
+ else {
+ // ...
+ }
+
+ switch(sf.m_SampleRate) {
+ case 48000 : idx_Rate = RATE_48000_IDX; break;
+ case 44100 : idx_Rate = RATE_44100_IDX; break;
+ case 22050 : idx_Rate = RATE_22050_IDX; break;
+ case 11025 : idx_Rate = RATE_11025_IDX; break;
+ }
+
+ switch(sf.m_SampleBits) {
+ case 8 : idx_Bits = BITS_8_IDX; break;
+ case 16 : idx_Bits = BITS_16_IDX; break;
+ }
+
+ switch(sf.m_IsSigned) {
+ case true : idx_Sign = SIGN_SIGNED_IDX; break;
+ case false : idx_Sign = SIGN_UNSIGNED_IDX; break;
+ }
+
+ switch(sf.m_Channels) {
+ case 2: idx_Channels = CHANNELS_STEREO_IDX; break;
+ case 1: idx_Channels = CHANNELS_MONO_IDX; break;
+ }
+
+ switch(sf.m_Endianess) {
+ case LITTLE_ENDIAN: idx_Endianess = ENDIAN_LITTLE_IDX; break;
+ case BIG_ENDIAN: idx_Endianess = ENDIAN_BIG_IDX; break;
+ }
+
+ m_cbFormat ->setCurrentItem(idx_Format);
+ m_cbRate ->setCurrentItem(idx_Rate);
+ m_cbBits ->setCurrentItem(idx_Bits);
+ m_cbSign ->setCurrentItem(idx_Sign);
+ m_cbChannels ->setCurrentItem(idx_Channels);
+ m_cbEndianess ->setCurrentItem(idx_Endianess);
+ m_sbBufferSize->setValue(BufferSize / 1024);
+
+ m_ignore_updates = false;
+}
+
+
+void StreamingConfiguration::getStreamOptions(SoundFormat &sf, int &BufferSize) const
+{
+ int idx_Format = m_cbFormat ->currentItem();
+ int idx_Rate = m_cbRate ->currentItem();
+ int idx_Bits = m_cbBits ->currentItem();
+ int idx_Sign = m_cbSign ->currentItem();
+ int idx_Channels = m_cbChannels ->currentItem();
+ int idx_Endianess = m_cbEndianess ->currentItem();
+
+ BufferSize = m_sbBufferSize->value() * 1024;
+
+ if (idx_Format == FORMAT_RAW_IDX) {
+ sf.m_Encoding = "raw";
+ }
+ else {
+ // ...
+ }
+
+ switch(idx_Rate) {
+ case RATE_48000_IDX : sf.m_SampleRate = 48000; break;
+ case RATE_44100_IDX : sf.m_SampleRate = 44100; break;
+ case RATE_22050_IDX : sf.m_SampleRate = 22050; break;
+ case RATE_11025_IDX : sf.m_SampleRate = 11025; break;
+ default : sf.m_SampleRate = 44100; break;
+ }
+
+ switch(idx_Bits) {
+ case BITS_8_IDX : sf.m_SampleBits = 8; break;
+ case BITS_16_IDX : sf.m_SampleBits = 16; break;
+ default : sf.m_SampleBits = 16; break;
+ }
+
+ switch(idx_Sign) {
+ case SIGN_SIGNED_IDX : sf.m_IsSigned = true; break;
+ case SIGN_UNSIGNED_IDX : sf.m_IsSigned = false; break;
+ default : sf.m_IsSigned = true; break;
+ }
+
+ switch(idx_Channels) {
+ case CHANNELS_STEREO_IDX : sf.m_Channels = 2; break;
+ case CHANNELS_MONO_IDX : sf.m_Channels = 1; break;
+ default : sf.m_Channels = 2; break;
+ }
+
+ switch(idx_Endianess) {
+ case ENDIAN_LITTLE_IDX : sf.m_Endianess = LITTLE_ENDIAN; break;
+ case ENDIAN_BIG_IDX : sf.m_Endianess = BIG_ENDIAN; break;
+ default : sf.m_Endianess = BYTE_ORDER; break;
+ }
+}
+
+#include "streaming-configuration.moc"
diff --git a/kradio3/plugins/streaming/streaming-configuration.h b/kradio3/plugins/streaming/streaming-configuration.h
new file mode 100644
index 0000000..f40a0cb
--- /dev/null
+++ b/kradio3/plugins/streaming/streaming-configuration.h
@@ -0,0 +1,97 @@
+/***************************************************************************
+ oss-sound-configuration.h - description
+ -------------------
+ begin : Thu Sep 30 2004
+ copyright : (C) 2004 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_STREAMING_CONFIGURATION_H
+#define KRADIO_STREAMING_CONFIGURATION_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "streaming-configuration-ui.h"
+#include "streaming.h"
+
+
+
+#define RATE_48000_IDX 0
+#define RATE_44100_IDX 1
+#define RATE_22050_IDX 2
+#define RATE_11025_IDX 3
+
+#define CHANNELS_STEREO_IDX 0
+#define CHANNELS_MONO_IDX 1
+
+#define SIGN_SIGNED_IDX 0
+#define SIGN_UNSIGNED_IDX 1
+
+#define BITS_16_IDX 0
+#define BITS_8_IDX 1
+
+#define ENDIAN_LITTLE_IDX 0
+#define ENDIAN_BIG_IDX 1
+
+#define FORMAT_RAW_IDX 0
+
+
+class StreamingConfiguration : public StreamingConfigurationUI
+{
+Q_OBJECT
+public :
+ StreamingConfiguration (QWidget *parent, StreamingDevice *streamer);
+ ~StreamingConfiguration ();
+
+protected slots:
+
+ void slotOK();
+ void slotCancel();
+
+ void slotUpdateConfig();
+
+
+
+ void slotNewPlaybackChannel();
+ void slotDeletePlaybackChannel();
+ void slotUpPlaybackChannel();
+ void slotDownPlaybackChannel();
+
+ void slotNewCaptureChannel();
+ void slotDeleteCaptureChannel();
+ void slotUpCaptureChannel();
+ void slotDownCaptureChannel();
+
+ void slotPlaybackSelectionChanged();
+ void slotCaptureSelectionChanged();
+
+ void slotUpdateSoundFormat();
+ void slotSetDirty();
+
+protected:
+
+ void setStreamOptions(const SoundFormat &sf, int BufferSize);
+ void getStreamOptions(SoundFormat &sf, int &BufferSize) const ;
+
+
+ QValueList<SoundFormat> m_PlaybackSoundFormats, m_CaptureSoundFormats;
+ QValueList<int> m_PlaybackBufferSizes, m_CaptureBufferSizes;
+
+ bool m_ignore_updates;
+ bool m_dirty;
+ StreamingDevice *m_StreamingDevice;
+
+};
+
+#endif
diff --git a/kradio3/plugins/streaming/streaming-job.cpp b/kradio3/plugins/streaming/streaming-job.cpp
new file mode 100644
index 0000000..0c3736a
--- /dev/null
+++ b/kradio3/plugins/streaming/streaming-job.cpp
@@ -0,0 +1,279 @@
+/***************************************************************************
+ streaming-job.cpp - description
+ -------------------
+ begin : Sun Sept 3 2006
+ copyright : (C) 2006 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "streaming-job.h"
+
+#include "../../src/include/utils.h"
+#include <kurl.h>
+
+#include <kio/job.h>
+
+
+StreamingJob::StreamingJob()
+ : QObject(),
+ m_URL(QString::null),
+ m_SoundFormat(),
+ m_BufferSize(65536),
+ m_Buffer(m_BufferSize),
+ m_OpenCounter(0),
+ m_StreamPos(0),
+ m_StartTime(0),
+ m_SkipCount(0),
+ m_KIO_Job(NULL),
+ m_capturing(false)
+{
+}
+
+StreamingJob::StreamingJob(const QString &_URL, const SoundFormat &_SoundFormat, size_t _bufferSize)
+ : QObject(),
+ m_URL(_URL),
+ m_SoundFormat(_SoundFormat),
+ m_BufferSize(_bufferSize),
+ m_Buffer(m_BufferSize),
+ m_OpenCounter(0),
+ m_StreamPos(0),
+ m_StartTime(0),
+ m_SkipCount(0),
+ m_KIO_Job(NULL),
+ m_capturing(false)
+{
+}
+
+StreamingJob::StreamingJob(const StreamingJob &c)
+ : QObject(),
+ m_URL(c.m_URL),
+ m_SoundFormat(c.m_SoundFormat),
+ m_BufferSize(c.m_BufferSize),
+ m_Buffer(m_BufferSize),
+ m_OpenCounter(0),
+ m_StreamPos(0),
+ m_StartTime(0),
+ m_SkipCount(0),
+ m_KIO_Job(NULL),
+ m_capturing(c.m_capturing)
+{
+}
+
+StreamingJob::~StreamingJob()
+{
+}
+
+
+void StreamingJob::setURL(const QString &url)
+{
+ if (m_URL != url) {
+ m_URL = url;
+ delete m_KIO_Job;
+ m_KIO_Job = NULL;
+ if (!m_capturing) {
+ startPutJob();
+ } else {
+ startGetJob();
+ }
+ }
+}
+
+
+void StreamingJob::setSoundFormat(const SoundFormat &sf)
+{
+ m_SoundFormat = sf;
+}
+
+
+void StreamingJob::setBufferSize(size_t buffer_size)
+{
+ if (m_BufferSize != buffer_size) {
+ m_Buffer.clear();
+ m_Buffer.resize(m_BufferSize = buffer_size);
+ }
+}
+
+
+bool StreamingJob::startPutJob()
+{
+ m_KIO_Job = KIO::put(m_URL, -1, true, false, false);
+ if (!m_KIO_Job)
+ return false;
+ m_KIO_Job->setAsyncDataEnabled(true);
+ connect (m_KIO_Job, SIGNAL(dataReq(KIO::Job *job, QByteArray &data)),
+ this, SLOT(slotWriteData (KIO::Job *job, QByteArray &data)));
+ connect (m_KIO_Job, SIGNAL(result(KIO::Job *)),
+ this, SLOT(slotIOJobResult(KIO::Job *)));
+ return true;
+}
+
+
+bool StreamingJob::startPlayback()
+{
+ if (!m_OpenCounter) {
+ m_Buffer.clear();
+ m_OpenCounter = 1;
+ if (!startPutJob())
+ return false;
+ m_StartTime = time(NULL);
+ m_StreamPos = 0;
+ if (m_KIO_Job->error()) {
+ emit logStreamError(m_URL, m_KIO_Job->errorString());
+ }
+ return m_KIO_Job->error() == 0;
+ }
+ else {
+ return true;
+ }
+}
+
+bool StreamingJob::stopPlayback()
+{
+ if (m_OpenCounter) {
+ if (!--m_OpenCounter) {
+ delete m_KIO_Job;
+ m_KIO_Job = NULL;
+ }
+ }
+ return true;
+}
+
+
+bool StreamingJob::startGetJob()
+{
+ m_KIO_Job = KIO::get(m_URL, false, false);
+ if (!m_KIO_Job)
+ return false;
+ m_KIO_Job->setAsyncDataEnabled(true);
+ connect (m_KIO_Job, SIGNAL(data(KIO::Job *, const QByteArray &)),
+ this, SLOT(slotReadData(KIO::Job *, const QByteArray &)));
+ connect (m_KIO_Job, SIGNAL(result(KIO::Job *)),
+ this, SLOT(slotIOJobResult(KIO::Job *)));
+ return true;
+}
+
+
+bool StreamingJob::startCapture(const SoundFormat &/*proposed_format*/,
+ SoundFormat &real_format,
+ bool /*force_format*/)
+{
+ if (!m_OpenCounter) {
+ m_capturing = true;
+ m_Buffer.clear();
+ if (!startGetJob())
+ return false;
+ m_StartTime = time(NULL);
+ m_StreamPos = 0;
+ if (m_KIO_Job->error()) {
+ emit logStreamError(m_URL, m_KIO_Job->errorString());
+ }
+ return m_KIO_Job->error() == 0;
+ }
+ ++m_OpenCounter;
+ real_format = m_SoundFormat;
+ return true;
+}
+
+
+bool StreamingJob::stopCapture()
+{
+ if (m_OpenCounter) {
+ if (!--m_OpenCounter) {
+ delete m_KIO_Job;
+ m_KIO_Job = NULL;
+ }
+ }
+ return true;
+}
+
+
+void StreamingJob::slotReadData (KIO::Job */*job*/, const QByteArray &data)
+{
+ size_t free = m_Buffer.getFreeSize();
+ if (free < data.size()) {
+ m_SkipCount += data.size() - free;
+ emit logStreamWarning(m_URL, i18n("skipped %1 bytes").arg(data.size() - free));
+ }
+ else {
+ free = data.size();
+ }
+
+ m_Buffer.addData(data.data(), free);
+ m_StreamPos += free;
+
+ if (m_Buffer.getFreeSize() < data.size()) {
+ m_KIO_Job->suspend();
+ }
+}
+
+
+void StreamingJob::slotWriteData (KIO::Job */*job*/, QByteArray &)
+{
+ size_t size = m_Buffer.getFillSize();
+ if (size) {
+ char *buf = new char [size];
+ size = m_Buffer.takeData(buf, size);
+ QByteArray data;
+ data.assign(buf, size);
+ m_KIO_Job->sendAsyncData(data);
+ m_StreamPos += size;
+ }
+ else {
+ // does a warning really make sense here?
+ //emit logStreamWarning(m_URL, i18n("buffer underrun"));
+ m_SkipCount++;
+ }
+}
+
+
+void StreamingJob::playData(const char *data, size_t size, size_t &consumed_size)
+{
+ size_t free = m_Buffer.getFreeSize();
+ consumed_size = (consumed_size == SIZE_T_DONT_CARE) ? free : min(consumed_size, free);
+ if (free > size) {
+ free = size;
+ }
+ m_Buffer.addData(data, free);
+}
+
+
+bool StreamingJob::hasRecordedData() const
+{
+ return m_Buffer.getFillSize() > m_Buffer.getSize() / 3;
+}
+
+
+void StreamingJob::lockData(const char *&data, size_t &size, SoundMetaData &meta_data)
+{
+ data = m_Buffer.getData(size);
+ time_t cur_time = time(NULL);
+ meta_data = SoundMetaData(m_StreamPos, cur_time - m_StartTime, cur_time, m_URL);
+}
+
+
+void StreamingJob::removeData(size_t size)
+{
+ m_Buffer.removeData(size);
+ if (m_Buffer.getFreeSize() > m_Buffer.getSize() / 2) {
+ m_KIO_Job->resume();
+ }
+}
+
+void StreamingJob::slotIOJobResult (KIO::Job *job)
+{
+ if (job && job->error()) {
+ emit logStreamError(m_URL, job->errorString());
+ }
+}
+
+#include "streaming-job.moc"
+
diff --git a/kradio3/plugins/streaming/streaming-job.h b/kradio3/plugins/streaming/streaming-job.h
new file mode 100644
index 0000000..b88c32a
--- /dev/null
+++ b/kradio3/plugins/streaming/streaming-job.h
@@ -0,0 +1,100 @@
+/***************************************************************************
+ streaming-job.h - description
+ -------------------
+ begin : Sun Sept 3 2006
+ copyright : (C) 2006 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef _KRADIO_STREAMING_JOB_H
+#define _KRADIO_STREAMING_JOB_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "../../src/include/ringbuffer.h"
+#include "../../src/include/soundformat.h"
+#include "../../src/include/soundstreamclient_interfaces.h"
+
+#include <qobject.h>
+
+#include <kio/jobclasses.h>
+
+class StreamingJob : public QObject
+{
+Q_OBJECT
+public:
+ StreamingJob();
+ StreamingJob(const QString &_URL, const SoundFormat &_SoundFormat, size_t _bufferSize);
+ StreamingJob(const StreamingJob &c);
+
+ virtual ~StreamingJob();
+
+ const QString &getURL() const { return m_URL; }
+ const SoundFormat &getSoundFormat() const { return m_SoundFormat; }
+ int getBufferSize() const { return m_BufferSize; }
+
+ void setURL(const QString &);
+ void setSoundFormat(const SoundFormat &);
+ void setBufferSize(size_t buffer_size);
+
+ bool startPlayback();
+ bool stopPlayback();
+
+ bool startCapture(const SoundFormat &proposed_format,
+ SoundFormat &real_format,
+ bool force_format);
+ bool stopCapture();
+
+
+ void playData(const char *data, size_t size, size_t &consumed_size);
+ bool hasRecordedData() const;
+ void lockData(const char *&data, size_t &size, SoundMetaData &meta_data);
+ void removeData(size_t);
+
+protected slots:
+
+ void slotReadData (KIO::Job *job, const QByteArray &data);
+ void slotWriteData (KIO::Job *job, QByteArray &data);
+ void slotIOJobResult (KIO::Job *job);
+
+signals:
+
+ void logStreamError(const KURL &url, const QString &s);
+ void logStreamWarning(const KURL &url, const QString &s);
+
+protected:
+
+ bool startGetJob();
+ bool startPutJob();
+
+
+ QString m_URL;
+ SoundFormat m_SoundFormat;
+
+ size_t m_BufferSize;
+ RingBuffer m_Buffer;
+
+ unsigned m_OpenCounter;
+ Q_UINT64 m_StreamPos;
+ time_t m_StartTime;
+
+ size_t m_SkipCount;
+
+ KIO::TransferJob *m_KIO_Job;
+ bool m_capturing;
+};
+
+
+
+#endif
diff --git a/kradio3/plugins/streaming/streaming.cpp b/kradio3/plugins/streaming/streaming.cpp
new file mode 100644
index 0000000..5f5431c
--- /dev/null
+++ b/kradio3/plugins/streaming/streaming.cpp
@@ -0,0 +1,526 @@
+/***************************************************************************
+ streaming.cpp - description
+ -------------------
+ begin : Sun Sept 3 2006
+ copyright : (C) 2006 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "streaming.h"
+
+#include "../../src/include/aboutwidget.h"
+#include "../../src/include/utils.h"
+#include <klocale.h>
+#include <kaboutdata.h>
+#include <kurl.h>
+#include <klocale.h>
+
+#include "streaming-job.h"
+#include "streaming-configuration.h"
+
+///////////////////////////////////////////////////////////////////////
+//// plugin library functions
+
+PLUGIN_LIBRARY_FUNCTIONS(StreamingDevice, "kradio-streaming", i18n("Streaming Support"));
+
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+
+StreamingDevice::StreamingDevice(const QString &name)
+ : QObject(NULL, NULL),
+ PluginBase(name, i18n("KRadio Streaming Plugin"))
+{
+ m_CaptureChannels.setAutoDelete(true);
+ m_PlaybackChannels.setAutoDelete(true);
+}
+
+
+StreamingDevice::~StreamingDevice()
+{
+ resetPlaybackStreams();
+ resetCaptureStreams();
+}
+
+
+bool StreamingDevice::connectI(Interface *i)
+{
+ bool a = PluginBase::connectI(i);
+ bool b = ISoundStreamClient::connectI(i);
+ return a || b;
+}
+
+
+bool StreamingDevice::disconnectI(Interface *i)
+{
+ bool a = PluginBase::disconnectI(i);
+ bool b = ISoundStreamClient::disconnectI(i);
+ return a || b;
+}
+
+void StreamingDevice::noticeConnectedI (ISoundStreamServer *s, bool pointer_valid)
+{
+ ISoundStreamClient::noticeConnectedI(s, pointer_valid);
+ if (s && pointer_valid) {
+ s->register4_sendReleasePlayback(this);
+ s->register4_sendReleaseCapture(this);
+ s->register4_sendStartPlayback(this);
+ s->register4_sendPausePlayback(this);
+ s->register4_sendStopPlayback(this);
+ s->register4_queryIsPlaybackRunning(this);
+ s->register4_sendStartCaptureWithFormat(this);
+ s->register4_sendStopCapture(this);
+ s->register4_queryIsCaptureRunning(this);
+ s->register4_notifySoundStreamClosed(this);
+ s->register4_notifySoundStreamRedirected(this);
+ s->register4_notifySoundStreamData(this);
+ s->register4_notifyReadyForPlaybackData(this);
+ }
+}
+
+// PluginBase
+
+void StreamingDevice::saveState (KConfig *c) const
+{
+ c->setGroup(QString("streaming-") + PluginBase::name());
+ c->writeEntry("soundstreamclient-id", m_SoundStreamClientID);
+
+ c->writeEntry("playback-channels", m_PlaybackChannelList.size());
+ for (unsigned int i = 0; i < m_PlaybackChannelList.size(); ++i) {
+ QString s = m_PlaybackChannelList[i];
+ const StreamingJob *j = m_PlaybackChannels[s];
+
+ const SoundFormat &sf = j->getSoundFormat();
+ KURL url = j->getURL();
+ size_t buffer_size = j->getBufferSize();
+
+ sf.saveConfig("playback-channel-" + QString::number(i), c);
+ c->writeEntry("playback-channel-" + QString::number(i) + "-url", url.url());
+ c->writeEntry("playback-channel-" + QString::number(i) + "-buffer-size", buffer_size);
+ }
+
+ c->writeEntry("capture-channels", m_CaptureChannelList.size());
+ for (unsigned int i = 0; i < m_CaptureChannelList.size(); ++i) {
+ QString s = m_CaptureChannelList[i];
+ const StreamingJob *j = m_CaptureChannels[s];
+
+ const SoundFormat &sf = j->getSoundFormat();
+ KURL url = j->getURL();
+ size_t buffer_size = j->getBufferSize();
+
+ sf.saveConfig("capture-channel-" + QString::number(i), c);
+ c->writeEntry("capture-channel-" + QString::number(i) + "-url", url.url());
+ c->writeEntry("capture-channel-" + QString::number(i) + "-buffer-size", buffer_size);
+ }
+}
+
+void StreamingDevice::restoreState (KConfig *c)
+{
+ c->setGroup(QString("streaming-") + PluginBase::name());
+ setSoundStreamClientID(c->readEntry("soundstreamclient-id", getSoundStreamClientID()));
+
+ resetPlaybackStreams(false);
+ resetCaptureStreams(false);
+
+ int n = c->readNumEntry("playback-channels", 0);
+ for (int i = 0; i < n; ++i) {
+ SoundFormat sf;
+ sf.restoreConfig("playback-channel-" + QString::number(i), c);
+ QString url = c->readEntry("playback-channel-" + QString::number(i) + "-url", QString::null);
+ size_t buffer_size = c->readNum64Entry("playback-channel-" + QString::number(i) + "-buffer-size", 32*1024);
+
+ if (!url.isNull()) {
+ addPlaybackStream(url, sf, buffer_size, i == n-1);
+ }
+ }
+
+ n = c->readNumEntry("capture-channels", 0);
+ for (int i = 0; i < n; ++i) {
+ SoundFormat sf;
+ sf.restoreConfig("capture-channel-" + QString::number(i), c);
+ QString url = c->readEntry("capture-channel-" + QString::number(i) + "-url", QString::null);
+ size_t buffer_size = c->readNum64Entry("capture-channel-" + QString::number(i) + "-buffer-size", 32*1024);
+
+ if (!url.isNull()) {
+ addCaptureStream(url, sf, buffer_size, i == n-1);
+ }
+ }
+
+ if (!m_CaptureChannelList.size()) {
+ addCaptureStream("/dev/video24", SoundFormat(48000, 2, 16, true, BYTE_ORDER, "raw"), 65536);
+ }
+
+ emit sigUpdateConfig();
+}
+
+
+ConfigPageInfo StreamingDevice::createConfigurationPage()
+{
+ StreamingConfiguration *conf = new StreamingConfiguration(NULL, this);
+ QObject::connect(this, SIGNAL(sigUpdateConfig()), conf, SLOT(slotUpdateConfig()));
+ return ConfigPageInfo (conf,
+ i18n("Streaming"),
+ i18n("Streaming Device Options"),
+ "kradio_streaming");
+}
+
+
+AboutPageInfo StreamingDevice::createAboutPage()
+{
+ return AboutPageInfo();
+}
+
+
+
+bool StreamingDevice::preparePlayback(SoundStreamID id, const QString &channel, bool /*active_mode*/, bool start_immediately)
+{
+ if (id.isValid() && m_PlaybackChannels.find(channel)) {
+ m_AllPlaybackStreams.insert(id, channel);
+ if (start_immediately)
+ startPlayback(id);
+ return true;
+ }
+ return false;
+}
+
+
+bool StreamingDevice::prepareCapture(SoundStreamID id, const QString &channel)
+{
+ logDebug("StreamingDevice::prepareCapture");
+ if (id.isValid() && m_CaptureChannels.find(channel)) {
+ m_AllCaptureStreams.insert(id, channel);
+ return true;
+ }
+ return false;
+}
+
+bool StreamingDevice::releasePlayback(SoundStreamID id)
+{
+ if (id.isValid() && m_AllPlaybackStreams.contains(id)) {
+ stopPlayback(id);
+ if (!m_EnabledPlaybackStreams.contains(id))
+ m_AllPlaybackStreams.remove(id);
+ return true;
+ }
+ return false;
+}
+
+bool StreamingDevice::releaseCapture(SoundStreamID id)
+{
+ logDebug("StreamingDevice::releaseCapture");
+ if (id.isValid() && m_AllCaptureStreams.contains(id)) {
+ stopCapture(id);
+ if (!m_EnabledCaptureStreams.contains(id))
+ m_AllCaptureStreams.remove(id);
+ return true;
+ }
+ return false;
+}
+
+bool StreamingDevice::supportsPlayback() const
+{
+ return m_PlaybackChannels.size() > 0;
+}
+
+
+bool StreamingDevice::supportsCapture() const
+{
+ return m_CaptureChannels.size() > 0;
+}
+
+
+bool StreamingDevice::startPlayback(SoundStreamID id)
+{
+ if (id.isValid() && m_AllPlaybackStreams.contains(id)) {
+ m_EnabledPlaybackStreams.insert(id, m_AllPlaybackStreams[id]);
+ StreamingJob &x = *m_PlaybackChannels.find(m_AllPlaybackStreams[id]);
+ x.startPlayback();
+ return true;
+ } else {
+ return false;
+ }
+}
+
+
+bool StreamingDevice::pausePlayback(SoundStreamID /*id*/)
+{
+ //return stopPlayback(id);
+ return false;
+}
+
+
+bool StreamingDevice::stopPlayback(SoundStreamID id)
+{
+ if (id.isValid() && m_EnabledPlaybackStreams.contains(id)) {
+ StreamingJob &x = *m_PlaybackChannels.find(m_AllPlaybackStreams[id]);
+ if (x.stopPlayback()) {
+ m_EnabledPlaybackStreams.remove(id);
+ }
+ return true;
+ } else {
+ return false;
+ }
+}
+
+
+bool StreamingDevice::isPlaybackRunning(SoundStreamID id, bool &b) const
+{
+ if (id.isValid() && m_EnabledPlaybackStreams.contains(id)) {
+ b = true;
+ return true;
+ } else {
+ return false;
+ }
+}
+
+bool StreamingDevice::startCaptureWithFormat(SoundStreamID id,
+ const SoundFormat &proposed_format,
+ SoundFormat &real_format,
+ bool force_format)
+{
+ logDebug("StreamingDevice::startCaptureWithFormat");
+ if (id.isValid() && m_AllCaptureStreams.contains(id)) {
+ m_EnabledCaptureStreams.insert(id, m_AllCaptureStreams[id]);
+ StreamingJob &x = *m_CaptureChannels.find(m_AllCaptureStreams[id]);
+ x.startCapture(proposed_format, real_format, force_format);
+ return true;
+ } else {
+ return false;
+ }
+}
+
+
+bool StreamingDevice::stopCapture(SoundStreamID id)
+{
+ if (id.isValid() && m_EnabledCaptureStreams.contains(id)) {
+ StreamingJob &x = *m_CaptureChannels.find(m_AllCaptureStreams[id]);
+ if (x.stopCapture()) {
+ m_EnabledCaptureStreams.remove(id);
+ }
+ return true;
+ } else {
+ return false;
+ }
+}
+
+
+bool StreamingDevice::isCaptureRunning(SoundStreamID id, bool &b, SoundFormat &sf) const
+{
+ if (id.isValid() && m_EnabledCaptureStreams.contains(id)) {
+ StreamingJob &x = *m_CaptureChannels.find(m_AllCaptureStreams[id]);
+ sf = x.getSoundFormat();
+ b = true;
+ return true;
+ } else {
+ return false;
+ }
+}
+
+
+bool StreamingDevice::noticeSoundStreamClosed(SoundStreamID id)
+{
+ bool found = (stopCapture(id) && releaseCapture(id)) ||
+ (stopPlayback(id) && releasePlayback(id));
+ return found;
+}
+
+
+bool StreamingDevice::noticeSoundStreamRedirected(SoundStreamID oldID, SoundStreamID newID)
+{
+ bool found = false;
+ if (newID != oldID) {
+ if (m_AllPlaybackStreams.contains(oldID)) {
+ m_AllPlaybackStreams.insert(newID, m_AllPlaybackStreams[oldID]);
+ m_AllPlaybackStreams.remove(oldID);
+ found = true;
+ }
+ if (m_EnabledPlaybackStreams.contains(oldID)) {
+ m_EnabledPlaybackStreams.insert(newID, m_EnabledPlaybackStreams[oldID]);
+ m_EnabledPlaybackStreams.remove(oldID);
+ found = true;
+ }
+ if (m_AllCaptureStreams.contains(oldID)) {
+ m_AllCaptureStreams.insert(newID, m_AllCaptureStreams[oldID]);
+ m_AllCaptureStreams.remove(oldID);
+ found = true;
+ }
+ if (m_EnabledCaptureStreams.contains(oldID)) {
+ m_EnabledCaptureStreams.insert(newID, m_EnabledCaptureStreams[oldID]);
+ m_EnabledCaptureStreams.remove(oldID);
+ found = true;
+ }
+ }
+ return found;
+}
+
+
+bool StreamingDevice::noticeSoundStreamData(SoundStreamID id,
+ const SoundFormat &/*format*/,
+ const char *data, size_t size, size_t &consumed_size,
+ const SoundMetaData &/*md*/
+ )
+{
+ if (id.isValid() && m_EnabledPlaybackStreams.contains(id)) {
+ StreamingJob &x = *m_CaptureChannels.find(m_AllCaptureStreams[id]);
+ x.playData(data, size, consumed_size);
+ return true;
+ }
+ else {
+ return false;
+ }
+}
+
+bool StreamingDevice::noticeReadyForPlaybackData(SoundStreamID id, size_t free_size)
+{
+ if (!id.isValid() || !m_AllCaptureStreams.contains(id))
+ return false;
+ StreamingJob &x = *m_CaptureChannels.find(m_AllCaptureStreams[id]);
+
+ while (x.hasRecordedData() && free_size > 0) {
+ const char *buffer = NULL;
+ size_t size = SIZE_T_DONT_CARE;
+ size_t consumed_size = SIZE_T_DONT_CARE;
+ SoundMetaData meta_data(0,0,0, i18n("internal stream, not stored (%1)").arg(m_AllCaptureStreams[id]));
+ x.lockData(buffer, size, meta_data); // get pointer to data and meta-data content
+ if (size > free_size)
+ size = free_size;
+ notifySoundStreamData(id, x.getSoundFormat(), buffer, size, consumed_size, meta_data);
+ if (consumed_size == SIZE_T_DONT_CARE)
+ consumed_size = size;
+ x.removeData(consumed_size);
+ free_size -= consumed_size;
+ if (consumed_size < size) {
+ logWarning(i18n("StreamingDevice %1::notifySoundStreamData: Playback Clients skipped %2 bytes").arg(name()).arg(size-consumed_size));
+ break;
+ }
+ }
+ return true;
+}
+
+
+
+const QStringList &StreamingDevice::getPlaybackChannels() const
+{
+ return m_PlaybackChannelList;
+}
+
+
+const QStringList &StreamingDevice::getCaptureChannels() const
+{
+ return m_CaptureChannelList;
+}
+
+
+QString StreamingDevice::getSoundStreamClientDescription() const
+{
+ return i18n("Streaming Device %1").arg(PluginBase::name());
+}
+
+
+void StreamingDevice::logStreamError(const KURL &url, const QString &s)
+{
+ logError(i18n("Streaming Device %1, %2: %3").arg(name()).arg(url.url()).arg(s));
+}
+
+void StreamingDevice::logStreamWarning(const KURL &url, const QString &s)
+{
+ logWarning(i18n("Streaming Device %1, %2: %3").arg(name()).arg(url.url()).arg(s));
+}
+
+
+bool StreamingDevice::getPlaybackStreamOptions(const QString &channel, QString &url, SoundFormat &sf, size_t &buffer_size) const
+{
+ if (m_PlaybackChannels.find(channel)) {
+ const StreamingJob *j = m_PlaybackChannels[channel];
+ url = j->getURL();
+ sf = j->getSoundFormat();
+ buffer_size = j->getBufferSize();
+ return true;
+ }
+ return false;
+}
+
+
+bool StreamingDevice::getCaptureStreamOptions(const QString &channel, QString &url, SoundFormat &sf, size_t &buffer_size) const
+{
+ if (m_CaptureChannels.find(channel)) {
+ const StreamingJob *j = m_CaptureChannels[channel];
+ url = j->getURL();
+ sf = j->getSoundFormat();
+ buffer_size = j->getBufferSize();
+ return true;
+ }
+ return false;
+}
+
+void StreamingDevice::resetPlaybackStreams(bool notification_enabled)
+{
+ while (m_EnabledPlaybackStreams.begin() != m_EnabledPlaybackStreams.end()) {
+ sendStopPlayback(m_EnabledPlaybackStreams.begin().key());
+ }
+ while (m_AllPlaybackStreams.begin() != m_AllPlaybackStreams.end()) {
+ releasePlayback(m_AllPlaybackStreams.begin().key());
+ }
+ m_PlaybackChannelList.clear();
+ m_PlaybackChannels.clear();
+ if (notification_enabled) {
+ notifyPlaybackChannelsChanged(m_SoundStreamClientID, m_PlaybackChannelList);
+ }
+}
+
+
+void StreamingDevice::resetCaptureStreams(bool notification_enabled)
+{
+ while (m_EnabledCaptureStreams.begin() != m_EnabledCaptureStreams.end()) {
+ sendStopCapture(m_EnabledCaptureStreams.begin().key());
+ }
+ while (m_AllCaptureStreams.begin() != m_AllCaptureStreams.end()) {
+ releaseCapture(m_AllCaptureStreams.begin().key());
+ }
+ m_CaptureChannelList.clear();
+ m_CaptureChannels.clear();
+ if (notification_enabled) {
+ notifyCaptureChannelsChanged(m_SoundStreamClientID, m_CaptureChannelList);
+ }
+}
+
+
+void StreamingDevice::addPlaybackStream(const QString &url, const SoundFormat &sf, size_t buffer_size, bool notification_enabled)
+{
+ StreamingJob *x = new StreamingJob(url, sf, buffer_size);
+ connect(x, SIGNAL(logStreamError(const KURL &, const QString &)),
+ this, SLOT (logStreamError(const KURL &, const QString &)));
+
+ m_PlaybackChannelList.append(url);
+ m_PlaybackChannels.insert(url, x);
+ if (notification_enabled) {
+ notifyPlaybackChannelsChanged(m_SoundStreamClientID, m_PlaybackChannelList);
+ }
+}
+
+
+void StreamingDevice::addCaptureStream (const QString &url, const SoundFormat &sf, size_t buffer_size, bool notification_enabled)
+{
+ StreamingJob *x = new StreamingJob(url, sf, buffer_size);
+ connect(x, SIGNAL(logStreamError(const KURL &, const QString &)),
+ this, SLOT (logStreamError(const KURL &, const QString &)));
+
+ m_CaptureChannelList.append(url);
+ m_CaptureChannels.insert(url, x);
+ if (notification_enabled) {
+ notifyCaptureChannelsChanged(m_SoundStreamClientID, m_CaptureChannelList);
+ }
+}
+
+
+#include "streaming.moc"
diff --git a/kradio3/plugins/streaming/streaming.h b/kradio3/plugins/streaming/streaming.h
new file mode 100644
index 0000000..430ab7b
--- /dev/null
+++ b/kradio3/plugins/streaming/streaming.h
@@ -0,0 +1,145 @@
+/***************************************************************************
+ streaming.h - description
+ -------------------
+ begin : Sun Sept 3 2006
+ copyright : (C) 2006 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef _KRADIO_STREAMING_H
+#define _KRADIO_STREAMING_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "../../src/include/plugins.h"
+#include "../../src/include/soundformat.h"
+#include "../../src/include/soundstreamclient_interfaces.h"
+
+#include <qobject.h>
+#include <qdict.h>
+
+class StreamingJob;
+
+class StreamingDevice : public QObject,
+ public PluginBase,
+ public ISoundStreamClient
+{
+Q_OBJECT
+
+public:
+ StreamingDevice (const QString &name);
+ virtual ~StreamingDevice ();
+
+ virtual bool connectI(Interface *i);
+ virtual bool disconnectI(Interface *i);
+
+ bool getPlaybackStreamOptions(const QString &channel, QString &url, SoundFormat &sf, size_t &buffer_size) const;
+ bool getCaptureStreamOptions (const QString &channel, QString &url, SoundFormat &sf, size_t &buffer_size) const;
+
+ void resetPlaybackStreams(bool notification_enabled = true);
+ void resetCaptureStreams(bool notification_enabled = true);
+ void addPlaybackStream(const QString &url, const SoundFormat &sf, size_t buffer_size, bool notification_enabled = true);
+ void addCaptureStream (const QString &url, const SoundFormat &sf, size_t buffer_size, bool notification_enabled = true);
+
+ // PluginBase
+
+public:
+ virtual void saveState (KConfig *) const;
+ virtual void restoreState (KConfig *);
+
+ virtual QString pluginClassName() const { return "StreamingDevice"; }
+
+ virtual const QString &name() const { return PluginBase::name(); }
+ virtual QString &name() { return PluginBase::name(); }
+
+ virtual ConfigPageInfo createConfigurationPage();
+ virtual AboutPageInfo createAboutPage();
+
+ // ISoundStreamClient: direct device access
+
+RECEIVERS:
+ void noticeConnectedI (ISoundStreamServer *s, bool pointer_valid);
+ bool preparePlayback(SoundStreamID id, const QString &channel, bool active_mode, bool start_immediately);
+ bool prepareCapture(SoundStreamID id, const QString &channel);
+ bool releasePlayback(SoundStreamID id);
+ bool releaseCapture(SoundStreamID id);
+
+ANSWERS:
+ bool supportsPlayback() const;
+ bool supportsCapture() const;
+
+ QString getSoundStreamClientDescription() const;
+
+ // ISoundStreamClient: mixer access
+
+protected:
+
+ANSWERS:
+ const QStringList &getPlaybackChannels() const;
+ const QStringList &getCaptureChannels() const;
+
+ // ISoundStreamClient: generic broadcasts
+
+RECEIVERS:
+ bool startPlayback(SoundStreamID id);
+ bool pausePlayback(SoundStreamID id);
+ bool stopPlayback(SoundStreamID id);
+ bool isPlaybackRunning(SoundStreamID id, bool &b) const;
+
+ bool startCaptureWithFormat(SoundStreamID id,
+ const SoundFormat &proposed_format,
+ SoundFormat &real_format,
+ bool force_format);
+ bool stopCapture(SoundStreamID id);
+ bool isCaptureRunning(SoundStreamID id, bool &b, SoundFormat &sf) const;
+
+ bool noticeSoundStreamClosed(SoundStreamID id);
+ bool noticeSoundStreamRedirected(SoundStreamID oldID, SoundStreamID newID);
+
+ bool noticeReadyForPlaybackData(SoundStreamID id, size_t size);
+
+ bool noticeSoundStreamData(SoundStreamID id,
+ const SoundFormat &,
+ const char *data, size_t size, size_t &consumed_size,
+ const SoundMetaData &md
+ );
+
+public slots:
+
+ void logStreamError(const KURL &url, const QString &s);
+ void logStreamWarning(const KURL &url, const QString &s);
+
+signals:
+
+ void sigUpdateConfig();
+
+protected:
+
+ QStringList m_PlaybackChannelList,
+ m_CaptureChannelList;
+
+ QDict<StreamingJob>
+ m_PlaybackChannels,
+ m_CaptureChannels;
+
+ QMap<SoundStreamID, QString>
+ m_AllPlaybackStreams,
+ m_AllCaptureStreams,
+ m_EnabledPlaybackStreams,
+ m_EnabledCaptureStreams;
+};
+
+
+
+#endif
diff --git a/kradio3/plugins/timecontrol/Makefile.am b/kradio3/plugins/timecontrol/Makefile.am
new file mode 100644
index 0000000..0ac954f
--- /dev/null
+++ b/kradio3/plugins/timecontrol/Makefile.am
@@ -0,0 +1,17 @@
+SUBDIRS = po icons .
+
+INCLUDES = $(all_includes)
+METASOURCES = AUTO
+
+libkradio_LTLIBRARIES = libtimecontrol.la
+libtimecontrol_la_SOURCES = timecontrol-configuration.cpp \
+ timecontrol-configuration-ui.ui timecontrol.cpp
+libtimecontrol_la_LDFLAGS = -module -avoid-version $(KDE_RPATH) $(all_libraries)
+noinst_HEADERS = timecontrol-configuration.h timecontrol.h
+
+#messages: rc.cpp
+# $(XGETTEXT) *.cpp *.h -o po/kradio-timecontrol.pot
+
+messages: rc.cpp
+ $(EXTRACTRC) *.rc *.ui >> rc.cpp
+ $(XGETTEXT) rc.cpp *.h *.cpp -o po/kradio-timecontrol.pot
diff --git a/kradio3/plugins/timecontrol/icons/Makefile.am b/kradio3/plugins/timecontrol/icons/Makefile.am
new file mode 100644
index 0000000..b3f2583
--- /dev/null
+++ b/kradio3/plugins/timecontrol/icons/Makefile.am
@@ -0,0 +1,2 @@
+icons_ICON = AUTO
+iconsdir = $(kde_datadir)/kradio/icons
diff --git a/kradio3/plugins/timecontrol/icons/hi16-action-kradio_kalarm.png b/kradio3/plugins/timecontrol/icons/hi16-action-kradio_kalarm.png
new file mode 100644
index 0000000..d87e1c4
--- /dev/null
+++ b/kradio3/plugins/timecontrol/icons/hi16-action-kradio_kalarm.png
Binary files differ
diff --git a/kradio3/plugins/timecontrol/icons/hi16-action-kradio_zzz.png b/kradio3/plugins/timecontrol/icons/hi16-action-kradio_zzz.png
new file mode 100644
index 0000000..c7184d5
--- /dev/null
+++ b/kradio3/plugins/timecontrol/icons/hi16-action-kradio_zzz.png
Binary files differ
diff --git a/kradio3/plugins/timecontrol/icons/hi22-action-kradio_kalarm.png b/kradio3/plugins/timecontrol/icons/hi22-action-kradio_kalarm.png
new file mode 100644
index 0000000..874fa0a
--- /dev/null
+++ b/kradio3/plugins/timecontrol/icons/hi22-action-kradio_kalarm.png
Binary files differ
diff --git a/kradio3/plugins/timecontrol/icons/hi22-action-kradio_zzz.png b/kradio3/plugins/timecontrol/icons/hi22-action-kradio_zzz.png
new file mode 100644
index 0000000..f2184dd
--- /dev/null
+++ b/kradio3/plugins/timecontrol/icons/hi22-action-kradio_zzz.png
Binary files differ
diff --git a/kradio3/plugins/timecontrol/icons/hi32-action-kradio_kalarm.png b/kradio3/plugins/timecontrol/icons/hi32-action-kradio_kalarm.png
new file mode 100644
index 0000000..5547387
--- /dev/null
+++ b/kradio3/plugins/timecontrol/icons/hi32-action-kradio_kalarm.png
Binary files differ
diff --git a/kradio3/plugins/timecontrol/icons/hi32-action-kradio_zzz.png b/kradio3/plugins/timecontrol/icons/hi32-action-kradio_zzz.png
new file mode 100644
index 0000000..5ddb326
--- /dev/null
+++ b/kradio3/plugins/timecontrol/icons/hi32-action-kradio_zzz.png
Binary files differ
diff --git a/kradio3/plugins/timecontrol/icons/hi330-action-kradio_zzz.png b/kradio3/plugins/timecontrol/icons/hi330-action-kradio_zzz.png
new file mode 100644
index 0000000..bb4b6e3
--- /dev/null
+++ b/kradio3/plugins/timecontrol/icons/hi330-action-kradio_zzz.png
Binary files differ
diff --git a/kradio3/plugins/timecontrol/icons/hi48-action-kradio_kalarm.png b/kradio3/plugins/timecontrol/icons/hi48-action-kradio_kalarm.png
new file mode 100644
index 0000000..c3b8dd5
--- /dev/null
+++ b/kradio3/plugins/timecontrol/icons/hi48-action-kradio_kalarm.png
Binary files differ
diff --git a/kradio3/plugins/timecontrol/icons/hi48-action-kradio_zzz.png b/kradio3/plugins/timecontrol/icons/hi48-action-kradio_zzz.png
new file mode 100644
index 0000000..d443b05
--- /dev/null
+++ b/kradio3/plugins/timecontrol/icons/hi48-action-kradio_zzz.png
Binary files differ
diff --git a/kradio3/plugins/timecontrol/po/Makefile.am b/kradio3/plugins/timecontrol/po/Makefile.am
new file mode 100644
index 0000000..35fe6fd
--- /dev/null
+++ b/kradio3/plugins/timecontrol/po/Makefile.am
@@ -0,0 +1,2 @@
+PACKAGE = kradio-timecontrol
+POFILES = AUTO
diff --git a/kradio3/plugins/timecontrol/po/de.po b/kradio3/plugins/timecontrol/po/de.po
new file mode 100644
index 0000000..71a84f6
--- /dev/null
+++ b/kradio3/plugins/timecontrol/po/de.po
@@ -0,0 +1,129 @@
+# translation of de.po to
+# translation of kradio-timecontrol.po to
+# This file is put in the public domain.
+#
+# Ernst Martin Witte <emw@nocabal.de>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-11 18:43+0100\n"
+"PO-Revision-Date: 2006-11-06 01:16+0100\n"
+"Last-Translator: Ernst Martin Witte <emw@nocabal.de>\n"
+"Language-Team: <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. i18n: file timecontrol-configuration-ui.ui line 32
+#: rc.cpp:3 rc.cpp:68 timecontrol-configuration-ui.cpp:189
+#, no-c-format
+msgid "sleep countdown"
+msgstr "Schlummermodus"
+
+#. i18n: file timecontrol-configuration-ui.ui line 40
+#: rc.cpp:6 rc.cpp:71 timecontrol-configuration-ui.cpp:190
+#, no-c-format
+msgid " min"
+msgstr " min"
+
+#. i18n: file timecontrol-configuration-ui.ui line 117
+#: rc.cpp:9 rc.cpp:74 timecontrol-configuration-ui.cpp:191 timecontrol.cpp:270
+#, no-c-format
+msgid "Alarms"
+msgstr "Wecker"
+
+#. i18n: file timecontrol-configuration-ui.ui line 180
+#: rc.cpp:14 rc.cpp:79 timecontrol-configuration-ui.cpp:194
+#, no-c-format
+msgid "Date"
+msgstr "Datum"
+
+#. i18n: file timecontrol-configuration-ui.ui line 203
+#: rc.cpp:17 rc.cpp:82 timecontrol-configuration-ui.cpp:195
+#, no-c-format
+msgid "Time"
+msgstr "Uhrzeit"
+
+#. i18n: file timecontrol-configuration-ui.ui line 226
+#: rc.cpp:20 rc.cpp:85 timecontrol-configuration-ui.cpp:196
+#, no-c-format
+msgid "Volume"
+msgstr "Lautstärke"
+
+#. i18n: file timecontrol-configuration-ui.ui line 234
+#: rc.cpp:23 rc.cpp:88 timecontrol-configuration-ui.cpp:197
+#, no-c-format
+msgid " %"
+msgstr " %"
+
+#. i18n: file timecontrol-configuration-ui.ui line 263
+#: rc.cpp:26 rc.cpp:91 timecontrol-configuration-ui.cpp:198
+#, no-c-format
+msgid "enabled"
+msgstr "aktiv"
+
+#. i18n: file timecontrol-configuration-ui.ui line 331
+#: rc.cpp:50 rc.cpp:115 timecontrol-configuration-ui.cpp:207
+#, no-c-format
+msgid "daily"
+msgstr "täglich"
+
+#. i18n: file timecontrol-configuration-ui.ui line 341
+#: rc.cpp:53 rc.cpp:118 timecontrol-configuration-ui.cpp:208
+#, no-c-format
+msgid "Radio Station"
+msgstr "Sender"
+
+#. i18n: file timecontrol-configuration-ui.ui line 393
+#: rc.cpp:56 rc.cpp:121 timecontrol-configuration-ui.cpp:210
+#, no-c-format
+msgid "Start Playing"
+msgstr "Radio einschalten"
+
+#. i18n: file timecontrol-configuration-ui.ui line 401
+#: rc.cpp:59 rc.cpp:124 timecontrol-configuration-ui.cpp:211
+#, no-c-format
+msgid "Stop Playing"
+msgstr "Radio ausschalten"
+
+#. i18n: file timecontrol-configuration-ui.ui line 409
+#: rc.cpp:62 rc.cpp:127 timecontrol-configuration-ui.cpp:212
+#, no-c-format
+msgid "Start Recording"
+msgstr "Aufnahme starten"
+
+#. i18n: file timecontrol-configuration-ui.ui line 417
+#: rc.cpp:65 rc.cpp:130 timecontrol-configuration-ui.cpp:213
+#, no-c-format
+msgid "Stop Recording"
+msgstr "Aufnahme beenden"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Ernst Martin Witte"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "emw@nocabal.de"
+
+#: timecontrol-configuration.cpp:181
+msgid "<don't change>"
+msgstr "<nicht verändern>"
+
+#: timecontrol.cpp:42
+msgid "Time Control and Alarm Functions"
+msgstr "Zeitsteurungs- und Weckfunktionen"
+
+#: timecontrol.cpp:48
+msgid "TimeControl Plugin"
+msgstr "Zeitsteuerungs-Plugin"
+
+#: timecontrol.cpp:270
+msgid "Setup Alarms"
+msgstr "Wecker einrichten"
diff --git a/kradio3/plugins/timecontrol/po/ru.po b/kradio3/plugins/timecontrol/po/ru.po
new file mode 100644
index 0000000..6f95f37
--- /dev/null
+++ b/kradio3/plugins/timecontrol/po/ru.po
@@ -0,0 +1,129 @@
+# translation of ru.po to
+# translation of kradio-timecontrol.po to
+# This file is put in the public domain.
+# Алексей Кузнецов <Alexey.Kouznetsov@GMail.com>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-11 18:43+0100\n"
+"PO-Revision-Date: 2006-11-08 12:57+0300\n"
+"Last-Translator: Алексей Кузнецов <Alexey.Kouznetsov@GMail.com>\n"
+"Language-Team: <ru@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10\n"
+
+#. i18n: file timecontrol-configuration-ui.ui line 32
+#: rc.cpp:3 rc.cpp:68 timecontrol-configuration-ui.cpp:189
+#, no-c-format
+msgid "sleep countdown"
+msgstr "Период таймера отключения"
+
+#. i18n: file timecontrol-configuration-ui.ui line 40
+#: rc.cpp:6 rc.cpp:71 timecontrol-configuration-ui.cpp:190
+#, no-c-format
+msgid " min"
+msgstr " мин"
+
+#. i18n: file timecontrol-configuration-ui.ui line 117
+#: rc.cpp:9 rc.cpp:74 timecontrol-configuration-ui.cpp:191 timecontrol.cpp:270
+#, no-c-format
+msgid "Alarms"
+msgstr "Расписание"
+
+#. i18n: file timecontrol-configuration-ui.ui line 180
+#: rc.cpp:14 rc.cpp:79 timecontrol-configuration-ui.cpp:194
+#, no-c-format
+msgid "Date"
+msgstr "Дата"
+
+#. i18n: file timecontrol-configuration-ui.ui line 203
+#: rc.cpp:17 rc.cpp:82 timecontrol-configuration-ui.cpp:195
+#, no-c-format
+msgid "Time"
+msgstr "Время"
+
+#. i18n: file timecontrol-configuration-ui.ui line 226
+#: rc.cpp:20 rc.cpp:85 timecontrol-configuration-ui.cpp:196
+#, no-c-format
+msgid "Volume"
+msgstr "Громкость"
+
+#. i18n: file timecontrol-configuration-ui.ui line 234
+#: rc.cpp:23 rc.cpp:88 timecontrol-configuration-ui.cpp:197
+#, no-c-format
+msgid " %"
+msgstr " %"
+
+#. i18n: file timecontrol-configuration-ui.ui line 263
+#: rc.cpp:26 rc.cpp:91 timecontrol-configuration-ui.cpp:198
+#, no-c-format
+msgid "enabled"
+msgstr "Включено"
+
+#. i18n: file timecontrol-configuration-ui.ui line 331
+#: rc.cpp:50 rc.cpp:115 timecontrol-configuration-ui.cpp:207
+#, no-c-format
+msgid "daily"
+msgstr "Ежедневно"
+
+#. i18n: file timecontrol-configuration-ui.ui line 341
+#: rc.cpp:53 rc.cpp:118 timecontrol-configuration-ui.cpp:208
+#, no-c-format
+msgid "Radio Station"
+msgstr "Радиостанция"
+
+#. i18n: file timecontrol-configuration-ui.ui line 393
+#: rc.cpp:56 rc.cpp:121 timecontrol-configuration-ui.cpp:210
+#, no-c-format
+msgid "Start Playing"
+msgstr "Начать воспроизведение"
+
+#. i18n: file timecontrol-configuration-ui.ui line 401
+#: rc.cpp:59 rc.cpp:124 timecontrol-configuration-ui.cpp:211
+#, no-c-format
+msgid "Stop Playing"
+msgstr "Остановить воспроизведение"
+
+#. i18n: file timecontrol-configuration-ui.ui line 409
+#: rc.cpp:62 rc.cpp:127 timecontrol-configuration-ui.cpp:212
+#, no-c-format
+msgid "Start Recording"
+msgstr "Начать запись"
+
+#. i18n: file timecontrol-configuration-ui.ui line 417
+#: rc.cpp:65 rc.cpp:130 timecontrol-configuration-ui.cpp:213
+#, no-c-format
+msgid "Stop Recording"
+msgstr "Остановить запись"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Алексей Кузнецов"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "Alexey.Kouznetsov@GMail.com"
+
+#: timecontrol-configuration.cpp:181
+msgid "<don't change>"
+msgstr "<не менять>"
+
+#: timecontrol.cpp:42
+msgid "Time Control and Alarm Functions"
+msgstr "Функции таймера и работы по расписанию"
+
+#: timecontrol.cpp:48
+msgid "TimeControl Plugin"
+msgstr "Модуль ремени"
+
+#: timecontrol.cpp:270
+msgid "Setup Alarms"
+msgstr "Расписание"
diff --git a/kradio3/plugins/timecontrol/timecontrol-configuration-ui.ui b/kradio3/plugins/timecontrol/timecontrol-configuration-ui.ui
new file mode 100644
index 0000000..8b2b768
--- /dev/null
+++ b/kradio3/plugins/timecontrol/timecontrol-configuration-ui.ui
@@ -0,0 +1,452 @@
+<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
+<class>TimeControlConfigurationUI</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>TimeControlConfigurationUI</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>374</width>
+ <height>261</height>
+ </rect>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget" row="2" column="0" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>layout13</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>labelSleep</cstring>
+ </property>
+ <property name="text">
+ <string>sleep countdown</string>
+ </property>
+ </widget>
+ <widget class="QSpinBox">
+ <property name="name">
+ <cstring>editSleep</cstring>
+ </property>
+ <property name="suffix">
+ <string> min</string>
+ </property>
+ <property name="maxValue">
+ <number>200</number>
+ </property>
+ <property name="minValue">
+ <number>1</number>
+ </property>
+ <property name="lineStep">
+ <number>5</number>
+ </property>
+ <property name="value">
+ <number>30</number>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer6_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ <widget class="Line" row="1" column="0" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>line1</cstring>
+ </property>
+ <property name="frameShape">
+ <enum>HLine</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>Sunken</enum>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget" row="0" column="0">
+ <property name="name">
+ <cstring>layout15</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout14</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>labelAlarmList</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Alarms</string>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>buttonAlarmNew</cstring>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="iconSet">
+ <iconset>"filenew2"</iconset>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>buttonDeleteAlarm</cstring>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="iconSet">
+ <iconset>"editdelete"</iconset>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QListBox">
+ <property name="name">
+ <cstring>listAlarms</cstring>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QLayoutWidget" row="0" column="1">
+ <property name="name">
+ <cstring>layout17</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout28</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout27</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>labelAlarmDate</cstring>
+ </property>
+ <property name="text">
+ <string>Date</string>
+ </property>
+ </widget>
+ <widget class="QDateEdit">
+ <property name="name">
+ <cstring>editAlarmDate</cstring>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout28</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>labelAlarmTime</cstring>
+ </property>
+ <property name="text">
+ <string>Time</string>
+ </property>
+ </widget>
+ <widget class="QTimeEdit">
+ <property name="name">
+ <cstring>editAlarmTime</cstring>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout29</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>labelAlarmVolume</cstring>
+ </property>
+ <property name="text">
+ <string>Volume</string>
+ </property>
+ </widget>
+ <widget class="QSpinBox">
+ <property name="name">
+ <cstring>editAlarmVolume</cstring>
+ </property>
+ <property name="suffix">
+ <string> %</string>
+ </property>
+ <property name="maxValue">
+ <number>100</number>
+ </property>
+ <property name="minValue">
+ <number>-1</number>
+ </property>
+ <property name="value">
+ <number>-1</number>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout16</cstring>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QCheckBox" row="0" column="0">
+ <property name="name">
+ <cstring>checkboxAlarmEnable</cstring>
+ </property>
+ <property name="text">
+ <string>enabled</string>
+ </property>
+ </widget>
+ <spacer row="2" column="0">
+ <property name="name">
+ <cstring>spacer6</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>100</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="KListBox" row="0" column="1" rowspan="3" colspan="1">
+ <item>
+ <property name="text">
+ <string>Monday</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Tuesday</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Wednesday</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Thursday</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Friday</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Saturday</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Sunday</string>
+ </property>
+ </item>
+ <property name="name">
+ <cstring>listWeekdays</cstring>
+ </property>
+ <property name="selectionMode">
+ <enum>Multi</enum>
+ </property>
+ </widget>
+ <widget class="QCheckBox" row="1" column="0">
+ <property name="name">
+ <cstring>checkboxAlarmDaily</cstring>
+ </property>
+ <property name="text">
+ <string>daily</string>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>labelStationSelection</cstring>
+ </property>
+ <property name="text">
+ <string>Radio Station</string>
+ </property>
+ </widget>
+ <widget class="QComboBox">
+ <property name="name">
+ <cstring>comboStationSelection</cstring>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout20</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>pixmapAlarmStation</cstring>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="scaledContents">
+ <bool>true</bool>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer8</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>150</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ <widget class="QComboBox">
+ <item>
+ <property name="text">
+ <string>Start Playing</string>
+ </property>
+ <property name="pixmap">
+ <pixmap>"kradio_muteoff"</pixmap>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Stop Playing</string>
+ </property>
+ <property name="pixmap">
+ <pixmap>"kradio_muteon"</pixmap>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Start Recording</string>
+ </property>
+ <property name="pixmap">
+ <pixmap>"kradio_record"</pixmap>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Stop Recording</string>
+ </property>
+ <property name="pixmap">
+ <pixmap>"kradio_muteon"</pixmap>
+ </property>
+ </item>
+ <property name="name">
+ <cstring>comboAlarmType</cstring>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ </grid>
+</widget>
+<customwidgets>
+</customwidgets>
+<tabstops>
+ <tabstop>listAlarms</tabstop>
+ <tabstop>buttonAlarmNew</tabstop>
+ <tabstop>buttonDeleteAlarm</tabstop>
+ <tabstop>editAlarmDate</tabstop>
+ <tabstop>editAlarmTime</tabstop>
+ <tabstop>editAlarmVolume</tabstop>
+ <tabstop>checkboxAlarmDaily</tabstop>
+ <tabstop>checkboxAlarmEnable</tabstop>
+ <tabstop>comboStationSelection</tabstop>
+</tabstops>
+<includes>
+ <include location="global" impldecl="in implementation">kiconloader.h</include>
+</includes>
+<pixmapfunction>SmallIcon</pixmapfunction>
+<layoutdefaults spacing="6" margin="0"/>
+<includehints>
+ <includehint>klistbox.h</includehint>
+</includehints>
+</UI>
diff --git a/kradio3/plugins/timecontrol/timecontrol-configuration.cpp b/kradio3/plugins/timecontrol/timecontrol-configuration.cpp
new file mode 100644
index 0000000..4ea6bce
--- /dev/null
+++ b/kradio3/plugins/timecontrol/timecontrol-configuration.cpp
@@ -0,0 +1,425 @@
+/***************************************************************************
+ timecontrol-configuration.cpp - description
+ -------------------
+ begin : Sam Aug 2 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include <math.h>
+#include <algorithm>
+using std::sort;
+
+#include <qdatetime.h>
+#include <qlistbox.h>
+#include <qcombobox.h>
+#include <qdatetimeedit.h>
+#include <qlabel.h>
+#include <qspinbox.h>
+#include <qcheckbox.h>
+#include <qpushbutton.h>
+
+#include <klistbox.h>
+#include <klocale.h>
+
+#include "../../src/include/stationlist.h"
+#include "../../src/include/alarm.h"
+#include "../../src/include/errorlog-interfaces.h"
+#include "../../src/include/radiostation.h"
+
+#include "timecontrol-configuration.h"
+
+class DateTimeCmp
+{
+public:
+ bool operator() (const Alarm &a, const Alarm &b) {
+ return a.nextAlarm(true) < b.nextAlarm(true);
+ }
+
+};
+
+TimeControlConfiguration::TimeControlConfiguration (QWidget *parent)
+ : TimeControlConfigurationUI(parent),
+ ITimeControlClient(),
+ IRadioClient(),
+ ignoreChanges(false),
+ m_dirty(false)
+{
+
+ QObject::connect(checkboxAlarmDaily, SIGNAL(toggled(bool)), this, SLOT(slotDailyChanged(bool)));
+ QObject::connect(listWeekdays, SIGNAL(highlighted(int)), this, SLOT(slotWeekdaysChanged()));
+ QObject::connect(checkboxAlarmEnable, SIGNAL(toggled(bool)), this, SLOT(slotEnabledChanged(bool)));
+ QObject::connect(comboStationSelection, SIGNAL(highlighted(int)), this, SLOT(slotStationChanged(int)));
+ QObject::connect(listAlarms, SIGNAL(highlighted(int)), this, SLOT(slotAlarmSelectChanged(int)));
+ QObject::connect(editAlarmDate, SIGNAL(valueChanged(const QDate &)), this, SLOT(slotDateChanged(const QDate &)));
+ QObject::connect(editAlarmTime, SIGNAL(valueChanged(const QTime &)), this, SLOT(slotTimeChanged(const QTime &)));
+ QObject::connect(editAlarmVolume, SIGNAL(valueChanged(int)), this, SLOT(slotVolumeChanged(int)));
+ QObject::connect(buttonAlarmNew, SIGNAL(clicked()), this, SLOT(slotNewAlarm()));
+ QObject::connect(buttonDeleteAlarm, SIGNAL(clicked()), this, SLOT(slotDeleteAlarm()));
+ QObject::connect(comboAlarmType, SIGNAL(highlighted(int)), this, SLOT(slotAlarmTypeChanged(int)));
+
+ QObject::connect(checkboxAlarmDaily, SIGNAL(toggled(bool)), this, SLOT(slotSetDirty()));
+ QObject::connect(listWeekdays, SIGNAL(selectionChanged()), this, SLOT(slotSetDirty()));
+ QObject::connect(checkboxAlarmEnable, SIGNAL(toggled(bool)), this, SLOT(slotSetDirty()));
+ QObject::connect(comboStationSelection, SIGNAL(activated(int)), this, SLOT(slotSetDirty()));
+ QObject::connect(editAlarmDate, SIGNAL(valueChanged(const QDate &)), this, SLOT(slotSetDirty()));
+ QObject::connect(editAlarmTime, SIGNAL(valueChanged(const QTime &)), this, SLOT(slotSetDirty()));
+ QObject::connect(editAlarmVolume, SIGNAL(valueChanged(int)), this, SLOT(slotSetDirty()));
+ QObject::connect(buttonAlarmNew, SIGNAL(clicked()), this, SLOT(slotSetDirty()));
+ QObject::connect(buttonDeleteAlarm, SIGNAL(clicked()), this, SLOT(slotSetDirty()));
+ QObject::connect(comboAlarmType, SIGNAL(activated(int)), this, SLOT(slotSetDirty()));
+ QObject::connect(editSleep, SIGNAL(valueChanged(int)), this, SLOT(slotSetDirty()));
+}
+
+TimeControlConfiguration::~TimeControlConfiguration ()
+{
+}
+
+bool TimeControlConfiguration::connectI (Interface *i)
+{
+ bool a = ITimeControlClient::connectI(i);
+ bool b = IRadioClient::connectI(i);
+ return a || b;
+}
+
+
+bool TimeControlConfiguration::disconnectI (Interface *i)
+{
+ bool a = ITimeControlClient::disconnectI(i);
+ bool b = IRadioClient::disconnectI(i);
+ return a || b;
+}
+
+
+// ITimeControlClient
+
+bool TimeControlConfiguration::noticeAlarmsChanged(const AlarmVector &sl)
+{
+ int idx = listAlarms->currentItem();
+ int currentID = (idx >= 0 && (unsigned)idx < alarms.size()) ? alarms[idx].ID() : -1;
+
+ alarms = sl;
+ sort(alarms.begin(), alarms.end(), DateTimeCmp());
+
+ bool oldBlock = listAlarms->signalsBlocked();
+ listAlarms->blockSignals(true);
+
+ listAlarms->clear();
+ idx = -1;
+ int k = 0;
+ for (ciAlarmVector i = alarms.begin(); i != alarms.end(); ++i, ++k) {
+ listAlarms->insertItem(i->nextAlarm(true).toString());
+ if (i->ID() == currentID)
+ idx = k;
+ }
+ listAlarms->setCurrentItem(idx);
+
+ listAlarms->blockSignals(oldBlock);
+
+ slotAlarmSelectChanged(idx);
+ return true;
+}
+
+bool TimeControlConfiguration::noticeAlarm(const Alarm &)
+{
+ return false;
+}
+
+bool TimeControlConfiguration::noticeNextAlarmChanged(const Alarm *)
+{
+ noticeAlarmsChanged(alarms);
+ return true;
+}
+
+bool TimeControlConfiguration::noticeCountdownStarted(const QDateTime &/*end*/)
+{
+ return false;
+}
+
+bool TimeControlConfiguration::noticeCountdownStopped()
+{
+ return false;
+}
+
+bool TimeControlConfiguration::noticeCountdownZero()
+{
+ return false;
+}
+
+bool TimeControlConfiguration::noticeCountdownSecondsChanged(int n)
+{
+ editSleep->setValue((int)rint(n / 60));
+ return false;
+}
+
+
+// IRadioClient
+
+bool TimeControlConfiguration::noticePowerChanged(bool /*on*/)
+{
+ return false;
+}
+
+bool TimeControlConfiguration::noticeStationChanged (const RadioStation &, int /*idx*/)
+{
+ return false;
+}
+
+bool TimeControlConfiguration::noticeStationsChanged(const StationList &sl)
+{
+ comboStationSelection->clear();
+ stationIDs.clear();
+ comboStationSelection->insertItem(i18n("<don't change>"));
+ stationIDs.push_back(QString::null);
+
+ for (RawStationList::Iterator i(sl.all()); i.current(); ++i) {
+ comboStationSelection->insertItem(i.current()->iconName(),
+ i.current()->longName());
+ stationIDs.push_back(i.current()->stationID());
+ }
+ return true;
+}
+
+
+// Slots
+
+
+void TimeControlConfiguration::slotDateChanged( const QDate &d )
+{
+ if (ignoreChanges) return;
+
+ int idx = listAlarms->currentItem();
+ if (idx >= 0 && (unsigned)idx < alarms.size()) {
+ Alarm &a = alarms[idx];
+ a.setDate(d);
+
+ ignoreChanges = true;
+ bool oldBlock = listAlarms->signalsBlocked();
+ listAlarms->blockSignals(true);
+ noticeAlarmsChanged(alarms);
+ listAlarms->blockSignals(oldBlock);
+ ignoreChanges = false;
+ }
+}
+
+
+void TimeControlConfiguration::slotTimeChanged(const QTime &t)
+{
+ if (ignoreChanges) return;
+
+ int idx = listAlarms->currentItem();
+ if (idx >= 0 && (unsigned)idx < alarms.size()) {
+ Alarm &a = alarms[idx];
+ a.setTime(t);
+
+ ignoreChanges = true;
+ bool oldBlock = listAlarms->signalsBlocked();
+ listAlarms->blockSignals(true);
+ noticeAlarmsChanged(alarms);
+ listAlarms->blockSignals(oldBlock);
+ ignoreChanges = false;
+ }
+}
+
+
+void TimeControlConfiguration::slotDailyChanged (bool b)
+{
+ if (ignoreChanges) return;
+
+ int idx = listAlarms->currentItem();
+ if (idx >= 0 && (unsigned)idx < alarms.size()) {
+ Alarm &a = alarms[idx];
+ a.setDaily(b);
+
+ ignoreChanges = true;
+ bool oldBlock = listAlarms->signalsBlocked();
+ listAlarms->blockSignals(true);
+ noticeAlarmsChanged(alarms);
+ listAlarms->blockSignals(oldBlock);
+ ignoreChanges = false;
+
+ editAlarmDate ->setDisabled(b);
+ labelAlarmDate->setDisabled(b);
+ listWeekdays ->setDisabled(!b);
+ }
+}
+
+
+void TimeControlConfiguration::slotWeekdaysChanged ()
+{
+ if (ignoreChanges) return;
+
+ int mask = 0;
+ for (int i = 0; i < 7; ++i) {
+ if (listWeekdays->isSelected(i)) {
+ mask |= (1 << i);
+ }
+ }
+
+ int idx = listAlarms->currentItem();
+ if (idx >= 0 && (unsigned)idx < alarms.size()) {
+ Alarm &a = alarms[idx];
+ a.setWeekdayMask(mask);
+
+ ignoreChanges = true;
+ bool oldBlock = listAlarms->signalsBlocked();
+ listAlarms->blockSignals(true);
+ noticeAlarmsChanged(alarms);
+ listAlarms->blockSignals(oldBlock);
+ ignoreChanges = false;
+ }
+}
+
+
+void TimeControlConfiguration::slotEnabledChanged( bool b)
+{
+ int idx = listAlarms->currentItem();
+ if (idx >= 0 && (unsigned)idx < alarms.size()) {
+ alarms[idx].setEnabled(b);
+ }
+}
+
+
+void TimeControlConfiguration::slotStationChanged( int i )
+{
+ int idx = listAlarms->currentItem();
+ if ( idx >= 0 && (unsigned)idx < alarms.size()
+ && i >= 0 && (unsigned)i < stationIDs.size())
+ {
+ alarms[idx].setStationID( stationIDs[i] );
+ }
+}
+
+
+void TimeControlConfiguration::slotVolumeChanged( int v )
+{
+ int idx = listAlarms->currentItem();
+ if (idx >= 0 && (unsigned)idx < alarms.size()) {
+ alarms[idx].setVolumePreset(0.01 * (float)v);
+ }
+}
+
+
+void TimeControlConfiguration::slotAlarmTypeChanged(int t)
+{
+ int idx = listAlarms->currentItem();
+ if (idx >= 0 && (unsigned)idx < alarms.size()) {
+ alarms[idx].setAlarmType((Alarm::AlarmType)t);
+ }
+}
+
+
+void TimeControlConfiguration::slotAlarmSelectChanged(int idx)
+{
+ if (ignoreChanges) return;
+ ignoreChanges = true;
+
+ Alarm a;
+ bool valid = false;
+
+ if (idx >= 0 && (unsigned)idx < alarms.size()) {
+
+ a = alarms[idx];
+ valid = true;
+
+ }
+
+ editAlarmDate ->setDisabled(!valid || a.isDaily());
+ labelAlarmDate ->setDisabled(!valid || a.isDaily());
+ listWeekdays ->setDisabled(!valid ||!a.isDaily());
+ editAlarmTime ->setDisabled(!valid);
+ labelAlarmTime ->setDisabled(!valid);
+ labelAlarmVolume ->setDisabled(!valid);
+ editAlarmVolume ->setDisabled(!valid);
+ checkboxAlarmDaily ->setDisabled(!valid);
+ checkboxAlarmEnable ->setDisabled(!valid);
+ comboStationSelection->setDisabled(!valid);
+ labelStationSelection->setDisabled(!valid);
+ buttonDeleteAlarm ->setDisabled(!valid);
+ comboAlarmType ->setDisabled(!valid);
+
+ editAlarmDate ->setDate(a.alarmTime().date());
+ editAlarmTime ->setTime(a.alarmTime().time());
+ checkboxAlarmDaily ->setChecked(a.isDaily());
+ checkboxAlarmEnable ->setChecked(a.isEnabled());
+ editAlarmVolume ->setValue((int)rint(a.volumePreset() * 100));
+ comboAlarmType ->setCurrentItem(a.alarmType());
+
+ int k = 0;
+ const QString &sID = a.stationID();
+ for (int i = 0; !k && i < (int)stationIDs.size(); ++i)
+ if (stationIDs[i] == sID) k = i;
+ comboStationSelection->setCurrentItem(k);
+
+ int m = a.weekdayMask();
+ for (int i = 0; i < 7; ++i) {
+ listWeekdays->setSelected(i, m & (1 << i));
+ }
+
+ ignoreChanges = false;
+}
+
+
+void TimeControlConfiguration::slotNewAlarm()
+{
+ QDateTime dt(QDateTime::currentDateTime());
+ Alarm a(dt, false, false);
+ alarms.push_back(a);
+ listAlarms->insertItem(a.alarmTime().toString());
+ listAlarms->setSelected(listAlarms->count() - 1, true);
+ noticeAlarmsChanged(alarms);
+}
+
+
+void TimeControlConfiguration::slotDeleteAlarm()
+{
+ int idx = listAlarms->currentItem();
+
+ if (idx >= 0 && (unsigned)idx < alarms.size()) {
+ // unfortunately a function vector<>::erase(idx) does not exist
+ iAlarmVector i = alarms.begin();
+ for (int k = 0; k < idx; ++k)
+ ++i;
+ if (i != alarms.end())
+ alarms.erase(i);
+ listAlarms->removeItem(idx);
+ }
+}
+
+
+void TimeControlConfiguration::slotOK()
+{
+ if (m_dirty) {
+ sendAlarms(alarms);
+ sendCountdownSeconds(editSleep->value() * 60);
+ m_dirty = false;
+ }
+}
+
+void TimeControlConfiguration::slotCancel()
+{
+ if (m_dirty) {
+ noticeAlarmsChanged(queryAlarms());
+ noticeCountdownSecondsChanged(queryCountdownSeconds());
+ m_dirty = false;
+ }
+}
+
+void TimeControlConfiguration::slotSetDirty()
+{
+ if (!ignoreChanges) {
+ m_dirty = true;
+ }
+}
+
+
+#include "timecontrol-configuration.moc"
diff --git a/kradio3/plugins/timecontrol/timecontrol-configuration.h b/kradio3/plugins/timecontrol/timecontrol-configuration.h
new file mode 100644
index 0000000..ac4570f
--- /dev/null
+++ b/kradio3/plugins/timecontrol/timecontrol-configuration.h
@@ -0,0 +1,90 @@
+/***************************************************************************
+ timecontro-configuration.h - description
+ -------------------
+ begin : Sam Aug 2 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+#ifndef KRADIO_TIMECONTROL_CONFIGURATION_H
+#define KRADIO_TIMECONTROL_CONFIGURATION_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "../../src/include/radio_interfaces.h"
+#include "../../src/include/timecontrol_interfaces.h"
+#include "timecontrol-configuration-ui.h"
+
+class TimeControl;
+class QWidget;
+
+class TimeControlConfiguration : public TimeControlConfigurationUI,
+ public ITimeControlClient,
+ public IRadioClient
+{
+Q_OBJECT
+public :
+ TimeControlConfiguration (QWidget *parent);
+ ~TimeControlConfiguration ();
+
+ bool connectI (Interface *i);
+ bool disconnectI (Interface *i);
+
+// ITimeControlClient
+
+ bool noticeAlarmsChanged(const AlarmVector &sl);
+ bool noticeAlarm(const Alarm &);
+ bool noticeNextAlarmChanged(const Alarm *);
+ bool noticeCountdownStarted(const QDateTime &end);
+ bool noticeCountdownStopped();
+ bool noticeCountdownZero();
+ bool noticeCountdownSecondsChanged(int n);
+
+// IRadioClient
+
+ bool noticePowerChanged(bool on);
+ bool noticeStationChanged (const RadioStation &, int idx);
+ bool noticeStationsChanged(const StationList &sl);
+ bool noticePresetFileChanged(const QString &/*f*/) { return false; }
+
+ bool noticeCurrentSoundStreamIDChanged(SoundStreamID /*id*/) { return false; }
+
+protected slots:
+
+ void slotDailyChanged (bool daily);
+ void slotWeekdaysChanged ();
+ void slotEnabledChanged (bool enable);
+ void slotStationChanged (int idx);
+ void slotAlarmSelectChanged(int idx);
+ void slotDateChanged(const QDate &d);
+ void slotTimeChanged(const QTime &d);
+ void slotVolumeChanged(int v);
+ void slotAlarmTypeChanged(int idx);
+
+ void slotNewAlarm();
+ void slotDeleteAlarm();
+
+ void slotOK();
+ void slotCancel();
+ void slotSetDirty();
+
+protected:
+
+ AlarmVector alarms;
+ vector<QString> stationIDs;
+
+ bool ignoreChanges;
+ bool m_dirty;
+};
+
+#endif
diff --git a/kradio3/plugins/timecontrol/timecontrol.cpp b/kradio3/plugins/timecontrol/timecontrol.cpp
new file mode 100644
index 0000000..42441ac
--- /dev/null
+++ b/kradio3/plugins/timecontrol/timecontrol.cpp
@@ -0,0 +1,301 @@
+/***************************************************************************
+ timecontrol.cpp - description
+ -------------------
+ begin : Son Jan 12 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include <kaboutdata.h>
+#include <kconfig.h>
+
+#include "timecontrol.h"
+#include "timecontrol-configuration.h"
+#include "../../src/include/pluginmanager.h"
+#include "../../src/include/aboutwidget.h"
+
+//const char *AlarmListElement = "alarmlist";
+//const char *AlarmElement = "alarm";
+const char *AlarmDateElement = "date";
+const char *AlarmTimeElement = "time";
+const char *AlarmDailyElement = "daily";
+const char *AlarmWeekdayMaskElement = "weekdayMask";
+const char *AlarmEnabledElement = "enabled";
+const char *AlarmStationIDElement = "stationID";
+//const char *AlarmFrequencyElement = "frequency";
+const char *AlarmVolumeElement = "volume";
+const char *AlarmTypeElement = "type";
+
+
+///////////////////////////////////////////////////////////////////////
+//// plugin library functions
+
+PLUGIN_LIBRARY_FUNCTIONS(TimeControl, "kradio-timecontrol", i18n("Time Control and Alarm Functions"));
+
+///////////////////////////////////////////////////////////////////////
+
+
+TimeControl::TimeControl (const QString &n)
+ : PluginBase(n, i18n("TimeControl Plugin")),
+ m_waitingFor(NULL),
+ m_countdownSeconds(0),
+ m_alarmTimer(this),
+ m_countdownTimer(this)
+{
+ QObject::connect(&m_alarmTimer, SIGNAL(timeout()), this, SLOT(slotQTimerAlarmTimeout()));
+ QObject::connect(&m_countdownTimer, SIGNAL(timeout()), this, SLOT(slotQTimerCountdownTimeout()));
+}
+
+
+TimeControl::~TimeControl ()
+{
+ m_waitingFor = NULL;
+}
+
+bool TimeControl::connectI (Interface *i)
+{
+ bool a = ITimeControl::connectI(i);
+ bool b = PluginBase::connectI(i);
+ return a || b;
+}
+
+bool TimeControl::disconnectI (Interface *i)
+{
+ bool a = ITimeControl::disconnectI(i);
+ bool b = PluginBase::disconnectI(i);
+ return a || b;
+}
+
+bool TimeControl::setAlarms (const AlarmVector &al)
+{
+ if (m_alarms != al) {
+ m_waitingFor = NULL;
+
+ m_alarms = al;
+
+ slotQTimerAlarmTimeout();
+
+ notifyAlarmsChanged(m_alarms);
+ }
+ return true;
+}
+
+
+bool TimeControl::setCountdownSeconds(int n)
+{
+ int old = m_countdownSeconds;
+ m_countdownSeconds = n;
+ if (old != n)
+ notifyCountdownSecondsChanged(n);
+ return true;
+}
+
+
+bool TimeControl::startCountdown()
+{
+ m_countdownEnd = QDateTime::currentDateTime().addSecs(m_countdownSeconds);
+ m_countdownTimer.start(m_countdownSeconds * 1000, true);
+
+ notifyCountdownStarted(getCountdownEnd());
+
+ return true;
+}
+
+
+bool TimeControl::stopCountdown()
+{
+ m_countdownTimer.stop();
+ m_countdownEnd = QDateTime();
+
+ notifyCountdownStopped();
+
+ return true;
+}
+
+
+QDateTime TimeControl::getNextAlarmTime() const
+{
+ const Alarm *a = getNextAlarm();
+ if (a)
+ return a->nextAlarm();
+ else
+ return QDateTime();
+}
+
+
+const Alarm *TimeControl::getNextAlarm () const
+{
+ QDateTime now = QDateTime::currentDateTime(),
+ next;
+
+ const Alarm *retval = NULL;
+
+ for (ciAlarmVector i = m_alarms.begin(); i != m_alarms.end(); ++i) {
+ QDateTime n = i->nextAlarm();
+ if (n.isValid() && n > now && ( ! next.isValid() || n < next)) {
+ next = n;
+ retval = &(*i);
+ }
+ }
+
+ QDateTime old = m_nextAlarm_tmp;
+ m_nextAlarm_tmp = next;
+ if (old != m_nextAlarm_tmp) {
+ notifyNextAlarmChanged(retval);
+ }
+
+ return retval;
+}
+
+
+QDateTime TimeControl::getCountdownEnd () const
+{
+ if (m_countdownTimer.isActive())
+ return m_countdownEnd;
+ else
+ return QDateTime();
+}
+
+
+void TimeControl::slotQTimerCountdownTimeout()
+{
+ stopCountdown();
+
+ notifyCountdownZero();
+}
+
+
+void TimeControl::slotQTimerAlarmTimeout()
+{
+ if (m_waitingFor) {
+ notifyAlarm(*m_waitingFor);
+ }
+
+ QDateTime now = QDateTime::currentDateTime();
+ Alarm const *n = getNextAlarm();
+ QDateTime na = getNextAlarmTime();
+
+ m_waitingFor = NULL;
+
+ if (na.isValid()) {
+
+ int days = now.daysTo(na);
+ int msecs = now.time().msecsTo(na.time());
+
+ if (days > 1) {
+ m_alarmTimer.start(24 * 3600 * 1000, true);
+
+ } else if (days >= 0) {
+
+ if (days > 0)
+ msecs += days * 24 * 3600 * 1000;
+
+ if (msecs > 0) {
+ m_waitingFor = n;
+ m_alarmTimer.start(msecs, true);
+ }
+ }
+ }
+}
+
+
+void TimeControl::restoreState (KConfig *config)
+{
+ AlarmVector al;
+
+ config->setGroup(QString("timecontrol-") + name());
+
+ int nAlarms = config->readNumEntry ("nAlarms", 0);
+ for (int idx = 1; idx <= nAlarms; ++idx) {
+
+ QString num = QString().setNum(idx);
+ QDateTime d = config->readDateTimeEntry(AlarmTimeElement + num);
+ bool enable = config->readBoolEntry(AlarmEnabledElement + num, false);
+ bool daily = config->readBoolEntry(AlarmDailyElement + num, false);
+ int weekdayMask = config->readNumEntry(AlarmWeekdayMaskElement + num, 0x7F);
+ float vol = config->readDoubleNumEntry(AlarmVolumeElement + num, 1);
+ QString sid = config->readEntry(AlarmStationIDElement + num, QString::null);
+ int type = config->readNumEntry(AlarmTypeElement + num, 0);
+
+ enable &= d.isValid();
+
+ Alarm a ( d, daily, enable);
+ a.setVolumePreset(vol);
+ a.setWeekdayMask(weekdayMask);
+ a.setStationID(sid);
+ a.setAlarmType((Alarm::AlarmType)type);
+ al.push_back(a);
+ }
+
+ setAlarms(al);
+ setCountdownSeconds(config->readNumEntry("countdownSeconds", 30*60));
+}
+
+
+void TimeControl::saveState (KConfig *config) const
+{
+ config->setGroup(QString("timecontrol-") + name());
+
+ config->writeEntry("nAlarms", m_alarms.size());
+ int idx = 1;
+ ciAlarmVector end = m_alarms.end();
+ for (ciAlarmVector i = m_alarms.begin(); i != end; ++i, ++idx) {
+ QString num = QString().setNum(idx);
+ config->writeEntry (AlarmTimeElement + num, i->alarmTime());
+ config->writeEntry (AlarmEnabledElement + num, i->isEnabled());
+ config->writeEntry (AlarmDailyElement + num, i->isDaily());
+ config->writeEntry (AlarmWeekdayMaskElement + num, i->weekdayMask());
+ config->writeEntry (AlarmVolumeElement + num, i->volumePreset());
+ config->writeEntry (AlarmStationIDElement + num, i->stationID());
+ config->writeEntry (AlarmTypeElement + num, i->alarmType());
+ }
+
+ config->writeEntry("countdownSeconds", m_countdownSeconds);
+}
+
+
+ConfigPageInfo TimeControl::createConfigurationPage()
+{
+ TimeControlConfiguration *conf = new TimeControlConfiguration(NULL);
+ connectI(conf);
+ return ConfigPageInfo (conf, i18n("Alarms"), i18n("Setup Alarms"), "kradio_kalarm");
+}
+
+
+AboutPageInfo TimeControl::createAboutPage()
+{
+/* KAboutData aboutData("kradio",
+ NULL,
+ NULL,
+ I18N_NOOP("Time Control Plugin for KRadio."
+ "<P>"
+ "Provides Alarms and Sleep Countdown"
+ "<P>"),
+ KAboutData::License_GPL,
+ "(c) 2002-2005 Martin Witte, Klas Kalass",
+ 0,
+ "http://sourceforge.net/projects/kradio",
+ 0);
+ aboutData.addAuthor("Martin Witte", "", "witte@kawo1.rwth-aachen.de");
+ aboutData.addAuthor("Klas Kalass", "", "klas.kalass@gmx.de");
+
+ return AboutPageInfo(
+ new KRadioAboutWidget(aboutData, KRadioAboutWidget::AbtTabbed),
+ i18n("Alarms"),
+ i18n("Time Control Plugin"),
+ "kradio_kalarm"
+ );*/
+ return AboutPageInfo();
+}
+
+
+#include "timecontrol.moc"
diff --git a/kradio3/plugins/timecontrol/timecontrol.h b/kradio3/plugins/timecontrol/timecontrol.h
new file mode 100644
index 0000000..f38bae9
--- /dev/null
+++ b/kradio3/plugins/timecontrol/timecontrol.h
@@ -0,0 +1,95 @@
+/***************************************************************************
+ timecontrol.h - description
+ -------------------
+ begin : Son Jan 12 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_TIMECONTROL_H
+#define KRADIO_TIMECONTROL_H
+
+#include <qobject.h>
+#include <qtimer.h>
+
+#include "../../src/include/alarm.h"
+#include "../../src/include/plugins.h"
+#include "../../src/include/timecontrol_interfaces.h"
+
+// well, it has to be a QObject :( , but only for
+// receiving QTimer - timeouts
+
+class TimeControl : public QObject,
+ public PluginBase,
+ public ITimeControl
+{
+Q_OBJECT
+protected:
+ AlarmVector m_alarms;
+ Alarm const * m_waitingFor; // m_alarmTimer is exactly for this date/time
+
+ int m_countdownSeconds; // in seconds
+ QDateTime m_countdownEnd;
+
+ QTimer m_alarmTimer;
+ QTimer m_countdownTimer;
+
+ mutable QDateTime m_nextAlarm_tmp; // used to recognize nextAlarm changes
+
+public:
+ TimeControl (const QString &name);
+ ~TimeControl();
+
+ virtual QString pluginClassName() const { return "TimeControl"; }
+
+ virtual const QString &name() const { return PluginBase::name(); }
+ virtual QString &name() { return PluginBase::name(); }
+
+ virtual bool connectI (Interface *i);
+ virtual bool disconnectI (Interface *i);
+
+ // PluginBase
+
+public:
+ virtual void saveState (KConfig *) const;
+ virtual void restoreState (KConfig *);
+
+ virtual ConfigPageInfo createConfigurationPage();
+ virtual AboutPageInfo createAboutPage();
+
+
+ // ITimeControl Interface methods
+
+RECEIVERS:
+ bool setAlarms(const AlarmVector &sl);
+ bool setCountdownSeconds(int n);
+ bool startCountdown();
+ bool stopCountdown();
+
+ANSWERS:
+ QDateTime getNextAlarmTime () const;
+ const Alarm* getNextAlarm () const;
+ const AlarmVector & getAlarms () const { return m_alarms; }
+ int getCountdownSeconds () const { return m_countdownSeconds; }
+ QDateTime getCountdownEnd () const;
+
+
+ // slots for receiving timeout messages of timers
+
+protected slots:
+ virtual void slotQTimerAlarmTimeout();
+ virtual void slotQTimerCountdownTimeout();
+
+};
+
+
+#endif
diff --git a/kradio3/plugins/timeshifter/Makefile.am b/kradio3/plugins/timeshifter/Makefile.am
new file mode 100644
index 0000000..23da794
--- /dev/null
+++ b/kradio3/plugins/timeshifter/Makefile.am
@@ -0,0 +1,18 @@
+SUBDIRS = po icons .
+
+INCLUDES = $(all_includes)
+METASOURCES = AUTO
+
+libkradio_LTLIBRARIES = libtimeshifter.la
+libtimeshifter_la_SOURCES = timeshifter.cpp timeshifter-configuration-ui.ui \
+ timeshifter-configuration.cpp
+libtimeshifter_la_LDFLAGS = -module -avoid-version $(KDE_RPATH) $(all_libraries)
+
+noinst_HEADERS = timeshifter.h timeshifter-configuration.h
+
+#messages: rc.cpp
+# $(XGETTEXT) *.cpp *.h -o po/kradio-timeshifter.pot
+
+messages: rc.cpp
+ $(EXTRACTRC) *.rc *.ui >> rc.cpp
+ $(XGETTEXT) rc.cpp *.h *.cpp -o po/kradio-timeshifter.pot
diff --git a/kradio3/plugins/timeshifter/icons/Makefile.am b/kradio3/plugins/timeshifter/icons/Makefile.am
new file mode 100644
index 0000000..b3f2583
--- /dev/null
+++ b/kradio3/plugins/timeshifter/icons/Makefile.am
@@ -0,0 +1,2 @@
+icons_ICON = AUTO
+iconsdir = $(kde_datadir)/kradio/icons
diff --git a/kradio3/plugins/timeshifter/icons/hi16-action-kradio_pause.png b/kradio3/plugins/timeshifter/icons/hi16-action-kradio_pause.png
new file mode 100644
index 0000000..a5f47a7
--- /dev/null
+++ b/kradio3/plugins/timeshifter/icons/hi16-action-kradio_pause.png
Binary files differ
diff --git a/kradio3/plugins/timeshifter/icons/hi16-app-kradio_plus_pause.png b/kradio3/plugins/timeshifter/icons/hi16-app-kradio_plus_pause.png
new file mode 100644
index 0000000..320ba48
--- /dev/null
+++ b/kradio3/plugins/timeshifter/icons/hi16-app-kradio_plus_pause.png
Binary files differ
diff --git a/kradio3/plugins/timeshifter/icons/hi22-action-kradio_pause.png b/kradio3/plugins/timeshifter/icons/hi22-action-kradio_pause.png
new file mode 100644
index 0000000..69dfb9e
--- /dev/null
+++ b/kradio3/plugins/timeshifter/icons/hi22-action-kradio_pause.png
Binary files differ
diff --git a/kradio3/plugins/timeshifter/icons/hi22-app-kradio_plus_pause.png b/kradio3/plugins/timeshifter/icons/hi22-app-kradio_plus_pause.png
new file mode 100644
index 0000000..31a25ac
--- /dev/null
+++ b/kradio3/plugins/timeshifter/icons/hi22-app-kradio_plus_pause.png
Binary files differ
diff --git a/kradio3/plugins/timeshifter/icons/hi32-action-kradio_pause.png b/kradio3/plugins/timeshifter/icons/hi32-action-kradio_pause.png
new file mode 100644
index 0000000..8425c1c
--- /dev/null
+++ b/kradio3/plugins/timeshifter/icons/hi32-action-kradio_pause.png
Binary files differ
diff --git a/kradio3/plugins/timeshifter/icons/hi32-app-kradio_plus_pause.png b/kradio3/plugins/timeshifter/icons/hi32-app-kradio_plus_pause.png
new file mode 100644
index 0000000..9b42662
--- /dev/null
+++ b/kradio3/plugins/timeshifter/icons/hi32-app-kradio_plus_pause.png
Binary files differ
diff --git a/kradio3/plugins/timeshifter/icons/hi48-app-kradio_plus_pause.png b/kradio3/plugins/timeshifter/icons/hi48-app-kradio_plus_pause.png
new file mode 100644
index 0000000..efaa1e1
--- /dev/null
+++ b/kradio3/plugins/timeshifter/icons/hi48-app-kradio_plus_pause.png
Binary files differ
diff --git a/kradio3/plugins/timeshifter/icons/hi64-app-kradio_plus_pause.png b/kradio3/plugins/timeshifter/icons/hi64-app-kradio_plus_pause.png
new file mode 100644
index 0000000..fdd0aaf
--- /dev/null
+++ b/kradio3/plugins/timeshifter/icons/hi64-app-kradio_plus_pause.png
Binary files differ
diff --git a/kradio3/plugins/timeshifter/po/Makefile.am b/kradio3/plugins/timeshifter/po/Makefile.am
new file mode 100644
index 0000000..276fe4b
--- /dev/null
+++ b/kradio3/plugins/timeshifter/po/Makefile.am
@@ -0,0 +1,3 @@
+
+PACKAGE = kradio-timeshifter
+POFILES = AUTO
diff --git a/kradio3/plugins/timeshifter/po/de.po b/kradio3/plugins/timeshifter/po/de.po
new file mode 100644
index 0000000..66806f9
--- /dev/null
+++ b/kradio3/plugins/timeshifter/po/de.po
@@ -0,0 +1,91 @@
+# translation of de.po to
+# translation of kradio-timeshifter.po to
+# This file is put in the public domain.
+#
+# Ernst Martin Witte <emw@nocabal.de>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-12 18:41+0100\n"
+"PO-Revision-Date: 2006-11-12 18:24+0100\n"
+"Last-Translator: Ernst Martin Witte <emw@nocabal.de>\n"
+"Language-Team: <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. i18n: file timeshifter-configuration-ui.ui line 16
+#: rc.cpp:3 rc.cpp:22 timeshifter-configuration-ui.cpp:118
+#, no-c-format
+msgid "SetupDialogGeneral"
+msgstr "SetupDialogGeneral"
+
+#. i18n: file timeshifter-configuration-ui.ui line 72
+#: rc.cpp:6 rc.cpp:25 timeshifter-configuration-ui.cpp:119
+#, no-c-format
+msgid " MB"
+msgstr " MB"
+
+#. i18n: file timeshifter-configuration-ui.ui line 92
+#: rc.cpp:9 rc.cpp:28 timeshifter-configuration-ui.cpp:120
+#, no-c-format
+msgid "Maximum File Size"
+msgstr "maximale Dateigröße"
+
+#. i18n: file timeshifter-configuration-ui.ui line 100
+#: rc.cpp:12 rc.cpp:31 timeshifter-configuration-ui.cpp:121
+#, no-c-format
+msgid "Playback Mixer Device"
+msgstr "Wiedergabemixer"
+
+#. i18n: file timeshifter-configuration-ui.ui line 108
+#: rc.cpp:15 rc.cpp:34 timeshifter-configuration-ui.cpp:122
+#, no-c-format
+msgid "Temporary File"
+msgstr "Temporäre Datei"
+
+#. i18n: file timeshifter-configuration-ui.ui line 121
+#: rc.cpp:18 rc.cpp:37 timeshifter-configuration-ui.cpp:123
+#, no-c-format
+msgid "Playback Mixer Channel"
+msgstr "Wiedergabemixerkanal"
+
+#: timeshifter-configuration.cpp:138
+msgid "any ( * )"
+msgstr "alle ( * )"
+
+#: timeshifter-configuration.cpp:140
+msgid "TimeShifter Temporary File Selection"
+msgstr "Auswahl der temporären Datei für die zeitversetzte Wiedergabe"
+
+#: timeshifter-configuration.cpp:143
+msgid "Select TimeShifter Temporary File"
+msgstr "Auswahl der temporären Datei für die zeitversetzte Wiedergabe"
+
+#: timeshifter.cpp:31
+msgid "TimeShift Support"
+msgstr "Unterstützung für die Zeitversetzte Wiedergabe"
+
+#: timeshifter.cpp:36
+msgid "TimeShifter Plugin"
+msgstr "Plugin für die zeitversetzte Wiedergabe"
+
+#: timeshifter.cpp:121
+msgid "Timeshifter"
+msgstr "Zeitversetzte Wiedergabe"
+
+#: timeshifter.cpp:122
+msgid "Timeshifter Options"
+msgstr "Optionen für die zeitversetzte Wiedergabe"
+
+#: timeshifter.cpp:355
+msgid "TimeShifter::notifySoundStreamData: clients skipped %1 bytes. Data Lost"
+msgstr ""
+"TimeShifter::notifySoundStreamData: %1 bytes der Sounddaten wurden ignoriert "
+"und sind verloren"
+
+#: timeshifter.cpp:412
+msgid "internal stream, not stored"
+msgstr "interner, nicht aufgezeichneter Datenstrom"
diff --git a/kradio3/plugins/timeshifter/po/ru.po b/kradio3/plugins/timeshifter/po/ru.po
new file mode 100644
index 0000000..1f692e3
--- /dev/null
+++ b/kradio3/plugins/timeshifter/po/ru.po
@@ -0,0 +1,91 @@
+# translation of ru.po to
+# translation of kradio-timeshifter.po to
+# This file is put in the public domain.
+# Алексей Кузнецов <Alexey.Kouznetsov@GMail.com>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-12 18:20+0100\n"
+"PO-Revision-Date: 2006-11-08 12:19+0300\n"
+"Last-Translator: Алексей Кузнецов <Alexey.Kouznetsov@GMail.com>\n"
+"Language-Team: <ru@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10\n"
+
+#. i18n: file timeshifter-configuration-ui.ui line 16
+#: rc.cpp:3 rc.cpp:22 timeshifter-configuration-ui.cpp:118
+#, no-c-format
+msgid "SetupDialogGeneral"
+msgstr "SetupDialogGeneral"
+
+#. i18n: file timeshifter-configuration-ui.ui line 72
+#: rc.cpp:6 rc.cpp:25 timeshifter-configuration-ui.cpp:119
+#, no-c-format
+msgid " MB"
+msgstr " Мб"
+
+#. i18n: file timeshifter-configuration-ui.ui line 92
+#: rc.cpp:9 rc.cpp:28 timeshifter-configuration-ui.cpp:120
+#, no-c-format
+msgid "Maximum File Size"
+msgstr "Размер файла, не более"
+
+#. i18n: file timeshifter-configuration-ui.ui line 100
+#: rc.cpp:12 rc.cpp:31 timeshifter-configuration-ui.cpp:121
+#, no-c-format
+msgid "Playback Mixer Device"
+msgstr "Устройство воспроизведения"
+
+#. i18n: file timeshifter-configuration-ui.ui line 108
+#: rc.cpp:15 rc.cpp:34 timeshifter-configuration-ui.cpp:122
+#, no-c-format
+msgid "Temporary File"
+msgstr "Временный файл"
+
+#. i18n: file timeshifter-configuration-ui.ui line 121
+#: rc.cpp:18 rc.cpp:37 timeshifter-configuration-ui.cpp:123
+#, no-c-format
+msgid "Playback Mixer Channel"
+msgstr "Канал воспроизведения"
+
+#: timeshifter-configuration.cpp:138
+msgid "any ( * )"
+msgstr "Все ( * )"
+
+#: timeshifter-configuration.cpp:140
+msgid "TimeShifter Temporary File Selection"
+msgstr "Выбор временного файла для реализации приостановки вещания"
+
+#: timeshifter-configuration.cpp:143
+msgid "Select TimeShifter Temporary File"
+msgstr "Выберите временный файл"
+
+#: timeshifter.cpp:31
+msgid "TimeShift Support"
+msgstr "Поддержка приостановки вещания"
+
+#: timeshifter.cpp:36
+msgid "TimeShifter Plugin"
+msgstr "Модуль приостановки вещания"
+
+#: timeshifter.cpp:121
+msgid "Timeshifter"
+msgstr "Приостановка"
+
+#: timeshifter.cpp:122
+msgid "Timeshifter Options"
+msgstr "Параметры приостановки вещания"
+
+#: timeshifter.cpp:355
+msgid "TimeShifter::notifySoundStreamData: clients skipped %1 bytes. Data Lost"
+msgstr ""
+"TimeShifter::notifySoundStreamData: клиенты пропустили %1 байт. Данные "
+"утеряны."
+
+#: timeshifter.cpp:412
+msgid "internal stream, not stored"
+msgstr ""
diff --git a/kradio3/plugins/timeshifter/timeshifter-configuration-ui.ui b/kradio3/plugins/timeshifter/timeshifter-configuration-ui.ui
new file mode 100644
index 0000000..3e3f4e4
--- /dev/null
+++ b/kradio3/plugins/timeshifter/timeshifter-configuration-ui.ui
@@ -0,0 +1,225 @@
+<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
+<class>TimeShifterConfigurationUI</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>TimeShifterConfigurationUI</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>299</width>
+ <height>134</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>SetupDialogGeneral</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <widget class="QLayoutWidget" row="0" column="0">
+ <property name="name">
+ <cstring>layout10</cstring>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <spacer row="1" column="3">
+ <property name="name">
+ <cstring>spacer18_3_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Preferred</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>30</width>
+ <height>21</height>
+ </size>
+ </property>
+ </spacer>
+ <spacer row="1" column="1">
+ <property name="name">
+ <cstring>spacer18_3_2_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Preferred</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>104</width>
+ <height>21</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QSpinBox" row="1" column="2">
+ <property name="name">
+ <cstring>editTempFileSize</cstring>
+ </property>
+ <property name="suffix">
+ <string> MB</string>
+ </property>
+ <property name="maxValue">
+ <number>10000</number>
+ </property>
+ <property name="minValue">
+ <number>10</number>
+ </property>
+ <property name="lineStep">
+ <number>10</number>
+ </property>
+ <property name="value">
+ <number>100</number>
+ </property>
+ </widget>
+ <widget class="QLabel" row="1" column="0">
+ <property name="name">
+ <cstring>labelTempFileSize</cstring>
+ </property>
+ <property name="text">
+ <string>Maximum File Size</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="2" column="0">
+ <property name="name">
+ <cstring>labelPlaybackMixerDevice</cstring>
+ </property>
+ <property name="text">
+ <string>Playback Mixer Device</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="0" column="0">
+ <property name="name">
+ <cstring>labelTempFile</cstring>
+ </property>
+ <property name="text">
+ <string>Temporary File</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit" row="0" column="1" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>editTempFile</cstring>
+ </property>
+ </widget>
+ <widget class="QLabel" row="3" column="0">
+ <property name="name">
+ <cstring>labelPlaybackMixerChannel</cstring>
+ </property>
+ <property name="text">
+ <string>Playback Mixer Channel</string>
+ </property>
+ </widget>
+ <widget class="QPushButton" row="0" column="3">
+ <property name="name">
+ <cstring>buttonSelectTempFile</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>26</width>
+ <height>26</height>
+ </size>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="iconSet">
+ <iconset>"fileopen"</iconset>
+ </property>
+ </widget>
+ <widget class="QComboBox" row="2" column="1" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>comboPlaybackMixerDevice</cstring>
+ </property>
+ </widget>
+ <widget class="QComboBox" row="3" column="1" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>comboPlaybackMixerChannel</cstring>
+ </property>
+ </widget>
+ <spacer row="3" column="3">
+ <property name="name">
+ <cstring>spacer18_3</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Preferred</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>30</width>
+ <height>21</height>
+ </size>
+ </property>
+ </spacer>
+ <spacer row="2" column="3">
+ <property name="name">
+ <cstring>spacer18_3_4</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Preferred</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>30</width>
+ <height>21</height>
+ </size>
+ </property>
+ </spacer>
+ </grid>
+ </widget>
+ <spacer row="1" column="0">
+ <property name="name">
+ <cstring>spacer16</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>61</height>
+ </size>
+ </property>
+ </spacer>
+ </grid>
+</widget>
+<tabstops>
+ <tabstop>editTempFile</tabstop>
+ <tabstop>buttonSelectTempFile</tabstop>
+ <tabstop>comboPlaybackMixerChannel</tabstop>
+</tabstops>
+<includes>
+ <include location="global" impldecl="in implementation">kiconloader.h</include>
+ <include location="global" impldecl="in implementation">knuminput.h</include>
+</includes>
+<pixmapfunction>SmallIconSet</pixmapfunction>
+<layoutdefaults spacing="6" margin="0"/>
+</UI>
diff --git a/kradio3/plugins/timeshifter/timeshifter-configuration.cpp b/kradio3/plugins/timeshifter/timeshifter-configuration.cpp
new file mode 100644
index 0000000..828cc33
--- /dev/null
+++ b/kradio3/plugins/timeshifter/timeshifter-configuration.cpp
@@ -0,0 +1,203 @@
+/***************************************************************************
+ v4lradio-configuration.cpp - description
+ -------------------
+ begin : Fre Jun 20 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include <sys/ioctl.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <linux/soundcard.h>
+
+#include <qspinbox.h>
+#include <qlineedit.h>
+#include <qcombobox.h>
+#include <qlabel.h>
+#include <qfile.h>
+#include <qpushbutton.h>
+
+#include <kfiledialog.h>
+#include <knuminput.h>
+#include <klocale.h>
+
+#include "../../src/include/utils.h"
+#include "../../src/include/gui_list_helper.h"
+#include "timeshifter-configuration.h"
+#include "timeshifter.h"
+
+TimeShifterConfiguration::TimeShifterConfiguration (QWidget *parent, TimeShifter *shifter)
+ : TimeShifterConfigurationUI(parent),
+ m_ignoreGUIChanges(false),
+ m_myControlChange(0),
+ m_PlaybackMixerHelper(comboPlaybackMixerDevice, StringListHelper::SORT_BY_DESCR),
+ m_PlaybackChannelHelper(comboPlaybackMixerChannel),
+ m_Shifter(shifter),
+ m_dirty(true)
+{
+ QObject::connect(buttonSelectTempFile, SIGNAL(clicked()),
+ this, SLOT(selectTempFile()));
+ QObject::connect(comboPlaybackMixerDevice, SIGNAL(activated(int)),
+ this, SLOT(slotComboPlaybackMixerSelected(int)));
+
+ connect(editTempFile, SIGNAL(textChanged(const QString&)), this, SLOT(slotSetDirty()));
+ connect(editTempFileSize, SIGNAL(valueChanged(int)), this, SLOT(slotSetDirty()));
+ connect(comboPlaybackMixerChannel, SIGNAL(activated( int )), this, SLOT(slotSetDirty()));
+ connect(comboPlaybackMixerDevice, SIGNAL(activated( int )), this, SLOT(slotSetDirty()));
+ slotCancel();
+}
+
+
+TimeShifterConfiguration::~TimeShifterConfiguration ()
+{
+}
+
+
+bool TimeShifterConfiguration::connectI (Interface *i)
+{
+ bool a = ISoundStreamClient::connectI(i);
+ return a;
+}
+
+
+bool TimeShifterConfiguration::disconnectI (Interface *i)
+{
+ bool a = ISoundStreamClient::disconnectI(i);
+ return a;
+}
+
+void TimeShifterConfiguration::noticeConnectedI (ISoundStreamServer *s, bool pointer_valid)
+{
+ ISoundStreamClient::noticeConnectedI(s, pointer_valid);
+ if (s && pointer_valid) {
+ s->register4_notifyPlaybackChannelsChanged(this);
+ }
+}
+
+void TimeShifterConfiguration::noticeConnectedSoundClient(ISoundStreamClient::thisInterface *i, bool pointer_valid)
+{
+ if (i && pointer_valid && i->supportsPlayback() && m_Shifter) {
+ const QString &org_mid = m_Shifter->getPlaybackMixer();
+ bool org_present = m_PlaybackMixerHelper.contains(org_mid);
+ const QString &mid = org_present ? m_PlaybackMixerHelper.getCurrentItem() : org_mid;
+ const QString &org_ch = m_Shifter->getPlaybackMixerChannel();
+ const QString &ch = org_present ? m_PlaybackChannelHelper.getCurrentText() : org_ch;
+ setPlaybackMixer(mid, ch);
+ }
+}
+
+
+void TimeShifterConfiguration::noticeDisconnectedSoundClient(ISoundStreamClient::thisInterface *i, bool pointer_valid)
+{
+ if (i && pointer_valid && i->supportsPlayback()) {
+ setPlaybackMixer(m_Shifter->getPlaybackMixer(), m_Shifter->getPlaybackMixerChannel());
+ }
+}
+
+
+
+bool TimeShifterConfiguration::setPlaybackMixer(const QString &_mixer_id, const QString &Channel)
+{
+ QString mixer_id = _mixer_id;
+ bool old = m_ignoreGUIChanges;
+ m_ignoreGUIChanges = true;
+
+ m_PlaybackMixerHelper.setData(getPlaybackClientDescriptions());
+ m_PlaybackMixerHelper.setCurrentItem(mixer_id);
+ mixer_id = m_PlaybackMixerHelper.getCurrentItem();
+
+ ISoundStreamClient *mixer = getSoundStreamClientWithID(mixer_id);
+ if (mixer) {
+ m_PlaybackChannelHelper.setData(mixer->getPlaybackChannels());
+ m_PlaybackChannelHelper.setCurrentText(m_PlaybackChannelHelper.contains(Channel) ? Channel : m_Shifter->getPlaybackMixerChannel());
+ }
+ labelPlaybackMixerChannel->setEnabled(mixer != NULL);
+ comboPlaybackMixerChannel->setEnabled(mixer != NULL);
+
+ m_ignoreGUIChanges = old;
+ return true;
+}
+
+
+// GUI Slots
+
+
+void TimeShifterConfiguration::selectTempFile()
+{
+ KFileDialog fd("/tmp/",
+ i18n("any ( * )").ascii(),
+ this,
+ i18n("TimeShifter Temporary File Selection").ascii(),
+ TRUE);
+ fd.setMode(KFile::File);
+ fd.setCaption (i18n("Select TimeShifter Temporary File"));
+
+ if (fd.exec() == QDialog::Accepted) {
+ editTempFile->setText(fd.selectedFile());
+ }
+}
+
+
+void TimeShifterConfiguration::slotComboPlaybackMixerSelected(int /*idx*/)
+{
+ if (m_ignoreGUIChanges) return;
+ setPlaybackMixer(m_PlaybackMixerHelper.getCurrentItem(), m_PlaybackChannelHelper.getCurrentText());
+}
+
+
+void TimeShifterConfiguration::slotOK()
+{
+ if (m_Shifter && m_dirty) {
+ m_Shifter->setTempFile(editTempFile->text(), editTempFileSize->value() * (Q_UINT64)(1024 * 1024));
+ m_Shifter->setPlaybackMixer(m_PlaybackMixerHelper.getCurrentItem(),
+ m_PlaybackChannelHelper.getCurrentText());
+ m_dirty = false;
+ }
+}
+
+
+void TimeShifterConfiguration::slotCancel()
+{
+ if (m_Shifter && m_dirty) {
+ editTempFile->setText(m_Shifter->getTempFileName());
+ editTempFileSize->setValue(m_Shifter->getTempFileMaxSize() / 1024 / 1024);
+
+ setPlaybackMixer(m_Shifter->getPlaybackMixer(), m_Shifter->getPlaybackMixerChannel());
+ m_dirty = false;
+ }
+}
+
+
+bool TimeShifterConfiguration::noticePlaybackChannelsChanged(const QString & client_id, const QStringList &/*channels*/)
+{
+ if (m_PlaybackMixerHelper.getCurrentItem() == client_id) {
+ setPlaybackMixer(client_id, m_PlaybackChannelHelper.getCurrentText());
+ }
+ return true;
+}
+
+
+void TimeShifterConfiguration::slotSetDirty()
+{
+ if (!m_ignoreGUIChanges) {
+ m_dirty = true;
+ }
+}
+
+void TimeShifterConfiguration::slotUpdateConfig()
+{
+ slotSetDirty();
+ slotCancel();
+}
+
+#include "timeshifter-configuration.moc"
diff --git a/kradio3/plugins/timeshifter/timeshifter-configuration.h b/kradio3/plugins/timeshifter/timeshifter-configuration.h
new file mode 100644
index 0000000..7d34c3d
--- /dev/null
+++ b/kradio3/plugins/timeshifter/timeshifter-configuration.h
@@ -0,0 +1,83 @@
+/***************************************************************************
+ v4lradio-configuration.h - description
+ -------------------
+ begin : Fre Jun 20 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_TIMESHIFTER_CONFIGURATION_H
+#define KRADIO_TIMESHIFTER_CONFIGURATION_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "../../src/include/soundstreamclient_interfaces.h"
+#include "../../src/include/gui_list_helper.h"
+
+#include "timeshifter-configuration-ui.h"
+
+class QWidget;
+class TimeShifter;
+
+class TimeShifterConfiguration : public TimeShifterConfigurationUI,
+ public ISoundStreamClient
+{
+Q_OBJECT
+public :
+ TimeShifterConfiguration (QWidget *parent, TimeShifter *shifter);
+ ~TimeShifterConfiguration ();
+
+ bool connectI (Interface *i);
+ bool disconnectI (Interface *i);
+
+ void noticeConnectedSoundClient(ISoundStreamClient::thisInterface *i, bool pointer_valid);
+ void noticeDisconnectedSoundClient(ISoundStreamClient::thisInterface *i, bool pointer_valid);
+
+// ISoundStreamClient
+
+RECEIVERS:
+ void noticeConnectedI (ISoundStreamServer *s, bool pointer_valid);
+ bool noticePlaybackChannelsChanged(const QString & /*client_id*/, const QStringList &/*channels*/);
+
+protected:
+
+ bool setPlaybackMixer(const QString &_mixer_id, const QString &Channel);
+
+
+protected slots:
+
+ void selectTempFile();
+ void slotComboPlaybackMixerSelected(int idx);
+
+ void slotOK();
+ void slotCancel();
+ void slotSetDirty();
+ void slotUpdateConfig();
+
+protected:
+
+ bool m_ignoreGUIChanges;
+ int m_myControlChange;
+
+ typedef GUIListHelper<QComboBox, QString> StringListHelper;
+ typedef GUISimpleListHelper<QComboBox> ChannelListHelper;
+
+ StringListHelper m_PlaybackMixerHelper;
+ ChannelListHelper m_PlaybackChannelHelper;
+
+ TimeShifter *m_Shifter;
+ bool m_dirty;
+};
+
+#endif
diff --git a/kradio3/plugins/timeshifter/timeshifter.cpp b/kradio3/plugins/timeshifter/timeshifter.cpp
new file mode 100644
index 0000000..bff1851
--- /dev/null
+++ b/kradio3/plugins/timeshifter/timeshifter.cpp
@@ -0,0 +1,455 @@
+/***************************************************************************
+ timeshifter.cpp - description
+ -------------------
+ begin : Mon May 16 13:39:31 CEST 2005
+ copyright : (C) 2005 by Ernst Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <klocale.h>
+#include <linux/soundcard.h>
+
+#include "../../src/include/utils.h"
+#include "timeshifter.h"
+#include "timeshifter-configuration.h"
+
+///////////////////////////////////////////////////////////////////////
+
+PLUGIN_LIBRARY_FUNCTIONS(TimeShifter, "kradio-timeshifter", i18n("TimeShift Support"));
+
+///////////////////////////////////////////////////////////////////////
+
+TimeShifter::TimeShifter (const QString &name)
+ : PluginBase(name, i18n("TimeShifter Plugin")),
+ m_TempFileName("/tmp/kradio-timeshifter-tempfile"),
+ m_TempFileMaxSize(256*1024*1024),
+ m_PlaybackMixerID(QString::null),
+ m_PlaybackMixerChannel("PCM"),
+ m_orgVolume(0.0),
+ m_PlaybackMetaData(0,0,0),
+ m_PlaybackDataLeftInBuffer(0),
+ m_RingBuffer(m_TempFileName, m_TempFileMaxSize)
+{
+}
+
+
+TimeShifter::~TimeShifter ()
+{
+}
+
+
+bool TimeShifter::connectI (Interface *i)
+{
+ bool a = PluginBase::connectI(i);
+ bool b = ISoundStreamClient::connectI(i);
+ return a || b;
+}
+
+
+bool TimeShifter::disconnectI (Interface *i)
+{
+ bool a = PluginBase::disconnectI(i);
+ bool b = ISoundStreamClient::disconnectI(i);
+ return a || b;
+}
+
+
+void TimeShifter::noticeConnectedI (ISoundStreamServer *s, bool pointer_valid)
+{
+ ISoundStreamClient::noticeConnectedI(s, pointer_valid);
+ if (s && pointer_valid) {
+ s->register4_notifySoundStreamClosed(this);
+ s->register4_sendStartPlayback(this);
+ s->register4_sendStopPlayback(this);
+ s->register4_sendPausePlayback(this);
+ s->register4_notifySoundStreamData(this);
+ s->register4_notifyReadyForPlaybackData(this);
+ s->register4_querySoundStreamDescription(this);
+ s->register4_sendStartCaptureWithFormat(this);
+ s->register4_sendStopCapture(this);
+ }
+}
+
+
+void TimeShifter::saveState (KConfig *config) const
+{
+ config->setGroup(QString("timeshifter-") + name());
+
+ config->writeEntry("temp-file-name", m_TempFileName);
+ config->writeEntry("max-file-size", m_TempFileMaxSize / 1024 / 1024);
+
+ config->writeEntry("PlaybackMixerID", m_PlaybackMixerID);
+ config->writeEntry("PlaybackMixerChannel", m_PlaybackMixerChannel);
+}
+
+
+void TimeShifter::restoreState (KConfig *config)
+{
+ config->setGroup(QString("timeshifter-") + name());
+
+ QString fname = config->readEntry("temp-file-name", "/tmp/kradio-timeshifter-tempfile");
+ Q_UINT64 fsize = 1024 * 1024 * config->readNumEntry("max-file-size", 256);
+
+ QString mixerID = config->readEntry ("PlaybackMixerID", QString::null);
+ QString channel = config->readEntry ("PlaybackMixerChannel", "PCM");
+
+ setPlaybackMixer(mixerID, channel);
+ setTempFile(fname, fsize);
+
+ emit sigUpdateConfig();
+}
+
+
+ConfigPageInfo TimeShifter::createConfigurationPage()
+{
+ TimeShifterConfiguration *conf = new TimeShifterConfiguration(NULL, this);
+ QObject::connect(this, SIGNAL(sigUpdateConfig()), conf, SLOT(slotUpdateConfig()));
+ return ConfigPageInfo (conf,
+ i18n("Timeshifter"),
+ i18n("Timeshifter Options"),
+ "kradio_pause");
+}
+
+AboutPageInfo TimeShifter::createAboutPage()
+{
+ return AboutPageInfo();
+}
+
+
+bool TimeShifter::noticeSoundStreamClosed(SoundStreamID id)
+{
+ return stopPlayback(id);
+}
+
+bool TimeShifter::startPlayback(SoundStreamID id)
+{
+ if (id == m_OrgStreamID) {
+ m_StreamPaused = false;
+ return true;
+ }
+ return false;
+}
+
+bool TimeShifter::stopPlayback(SoundStreamID id)
+{
+ if (id == m_NewStreamID) {
+
+ return sendStopPlayback(m_OrgStreamID);
+
+ } else if (id == m_OrgStreamID) {
+
+ SoundStreamID tmp_newID = m_NewStreamID;
+ SoundStreamID tmp_orgID = m_OrgStreamID;
+
+ m_OrgStreamID.invalidate();
+ m_NewStreamID.invalidate();
+
+ sendStopCapture(tmp_newID);
+ closeSoundStream(tmp_newID);
+ stopPlayback(tmp_newID);
+ m_RingBuffer.clear();
+ m_PlaybackMetaData = SoundMetaData(0,0,0);
+ m_PlaybackDataLeftInBuffer = 0;
+ return true;
+ }
+ return false;
+}
+
+
+bool TimeShifter::pausePlayback(SoundStreamID id)
+{
+ if (!m_OrgStreamID.isValid()) {
+ SoundStreamID orgid = id;
+ SoundStreamID newid = createNewSoundStream(orgid, false);
+ m_OrgStreamID = orgid;
+ m_NewStreamID = newid;
+ notifySoundStreamCreated(newid);
+ notifySoundStreamRedirected(orgid, newid);
+ queryPlaybackVolume(newid, m_orgVolume);
+ sendMute(newid);
+ sendPlaybackVolume(newid, 0);
+
+ m_NewStreamID.invalidate();
+ sendStopPlayback(newid);
+ m_NewStreamID = newid;
+
+ m_StreamPaused = true;
+
+ m_RingBuffer.clear();
+ m_PlaybackMetaData = SoundMetaData(0,0,0);
+ m_PlaybackDataLeftInBuffer = 0;
+
+ sendStartCaptureWithFormat(m_NewStreamID, m_SoundFormat, m_realSoundFormat);
+
+ ISoundStreamClient *playback_mixer = searchPlaybackMixer();
+ if (playback_mixer) {
+ playback_mixer->preparePlayback(m_OrgStreamID, m_PlaybackMixerChannel, /*active*/true, /*startimmediately*/ true);
+ m_PlaybackMixerID = playback_mixer->getSoundStreamClientID();
+ }
+
+ return true;
+
+ } else if (id == m_OrgStreamID) {
+ m_StreamPaused = !m_StreamPaused;
+ if (!m_StreamPaused) {
+// sendStartPlayback(m_OrgStreamID);
+ sendUnmute(m_OrgStreamID);
+ sendPlaybackVolume(m_OrgStreamID, m_orgVolume);
+ } else {
+ queryPlaybackVolume(m_OrgStreamID, m_orgVolume);
+ }
+ return true;
+ }
+ return false;
+}
+
+
+size_t TimeShifter::writeMetaDataToBuffer(const SoundMetaData &md, char *buffer, size_t buffer_size)
+{
+ Q_UINT64 pos = md.position();
+ time_t abs = md.absoluteTimestamp();
+ time_t rel = md.relativeTimestamp();
+ size_t url_len = md.url().url().length() + 1;
+ size_t req_size = sizeof(req_size) + sizeof(pos) + sizeof(abs) + sizeof(rel) + sizeof(url_len) + url_len;
+ if (req_size <= buffer_size) {
+ *(size_t*)buffer = req_size;
+ buffer += sizeof(req_size);
+ *(Q_UINT64*)buffer = pos;
+ buffer += sizeof(pos);
+ *(time_t*)buffer = abs;
+ buffer += sizeof(abs);
+ *(time_t*)buffer = rel;
+ buffer += sizeof(rel);
+ *(size_t*)buffer = url_len;
+ buffer += sizeof(url_len);
+ memcpy(buffer, md.url().url().ascii(), url_len);
+ buffer += url_len;
+ return req_size;
+ } else if (buffer_size >= sizeof(req_size)) {
+ *(size_t*)buffer = sizeof(req_size);
+ return sizeof(req_size);
+ } else {
+ return 0;
+ }
+}
+
+size_t TimeShifter::readMetaDataFromBuffer(SoundMetaData &md, const char *buffer, size_t buffer_size)
+{
+ size_t req_size = 0;
+ Q_UINT64 pos = 0;
+ time_t abs = 0;
+ time_t rel = 0;
+ size_t url_len = 0;
+ KURL url;
+ if (buffer_size >= sizeof(req_size)) {
+ req_size = *(size_t*)buffer;
+ buffer += sizeof(req_size);
+ if (req_size > sizeof(req_size)) {
+ pos = *(Q_UINT64*)buffer;
+ buffer += sizeof(Q_UINT64);
+ abs = *(time_t*)buffer;
+ buffer += sizeof(abs);
+ rel = *(time_t*)buffer;
+ buffer += sizeof(rel);
+ url_len = *(size_t*)buffer;
+ buffer += sizeof(url_len);
+ url = buffer;
+ buffer += url_len;
+ }
+ }
+ md = SoundMetaData(pos, rel, abs, url);
+ return req_size;
+}
+
+
+bool TimeShifter::noticeSoundStreamData(SoundStreamID id, const SoundFormat &/*sf*/, const char *data, size_t size, size_t &consumed_size, const SoundMetaData &md)
+{
+ if (id == m_NewStreamID) {
+ char buffer_meta[1024];
+ size_t meta_buffer_size = writeMetaDataToBuffer(md, buffer_meta, 1024);
+ size_t packet_size = meta_buffer_size + sizeof(size) + size;
+ if (packet_size > m_RingBuffer.getMaxSize())
+ return false;
+ Q_INT64 diff = m_RingBuffer.getFreeSize() - packet_size;
+ while (diff < 0) {
+ skipPacketInRingBuffer();
+ diff = m_RingBuffer.getFreeSize() - packet_size;
+ }
+ m_RingBuffer.addData(buffer_meta, meta_buffer_size);
+ m_RingBuffer.addData((const char*)&size, sizeof(size));
+ m_RingBuffer.addData(data, size);
+ consumed_size = (consumed_size == SIZE_T_DONT_CARE) ? size : min(consumed_size, size);
+ return true;
+ }
+ return false;
+}
+
+
+void TimeShifter::skipPacketInRingBuffer()
+{
+ if (m_PlaybackDataLeftInBuffer > 0) {
+ m_RingBuffer.removeData(m_PlaybackDataLeftInBuffer);
+ } else {
+ size_t meta_size = 0;
+ m_RingBuffer.takeData((char*)&meta_size, sizeof(meta_size));
+ m_RingBuffer.removeData(meta_size - sizeof(meta_size));
+ size_t packet_size = 0;
+ m_RingBuffer.takeData((char*)&packet_size, sizeof(packet_size));
+ m_RingBuffer.removeData(packet_size - sizeof(packet_size));
+ }
+}
+
+
+bool TimeShifter::noticeReadyForPlaybackData(SoundStreamID id, size_t free_size)
+{
+ if (id == m_OrgStreamID && !m_StreamPaused) {
+
+ while (!m_RingBuffer.error() && m_RingBuffer.getFillSize() > 0 && free_size > 0) {
+ if (m_PlaybackDataLeftInBuffer == 0) {
+ char meta_buffer[1024];
+ size_t &meta_size = *(size_t*)meta_buffer;
+ meta_size = 0;
+ m_RingBuffer.takeData(meta_buffer, sizeof(meta_size));
+ if (meta_size && meta_size <= 1024) {
+ m_RingBuffer.takeData(meta_buffer + sizeof(meta_size), meta_size - sizeof(meta_size));
+ readMetaDataFromBuffer(m_PlaybackMetaData, meta_buffer, meta_size);
+ } else {
+ m_RingBuffer.removeData(meta_size - sizeof(meta_size));
+ }
+
+ m_PlaybackDataLeftInBuffer = 0;
+ m_RingBuffer.takeData((char*)&m_PlaybackDataLeftInBuffer, sizeof(m_PlaybackDataLeftInBuffer));
+ }
+
+ const size_t buffer_size = 65536;
+ char buffer[buffer_size];
+
+ while (!m_RingBuffer.error() && m_PlaybackDataLeftInBuffer > 0 && free_size > 0) {
+ size_t s = m_PlaybackDataLeftInBuffer < free_size ? m_PlaybackDataLeftInBuffer : free_size;
+
+ if (s > buffer_size)
+ s = buffer_size;
+ s = m_RingBuffer.takeData(buffer, s);
+
+ size_t consumed_size = SIZE_T_DONT_CARE;
+ notifySoundStreamData(m_OrgStreamID, m_realSoundFormat, buffer, s, consumed_size, m_PlaybackMetaData);
+ if (consumed_size == SIZE_T_DONT_CARE)
+ consumed_size = s;
+
+ free_size -= consumed_size;
+ m_PlaybackDataLeftInBuffer -= consumed_size;
+ if (consumed_size < s) {
+ logError(i18n("TimeShifter::notifySoundStreamData: clients skipped %1 bytes. Data Lost").arg(s - consumed_size));
+ free_size = 0; // break condition for outer loop
+ break;
+ }
+ }
+ }
+ return true;
+ }
+ return false;
+}
+
+
+
+ISoundStreamClient *TimeShifter::searchPlaybackMixer()
+{
+ ISoundStreamClient *playback_mixer = getSoundStreamClientWithID(m_PlaybackMixerID);
+
+ // some simple sort of autodetection if one mixer isn't present any more
+ if (!playback_mixer) {
+ QPtrList<ISoundStreamClient> playback_mixers = queryPlaybackMixers();
+ if (!playback_mixers.isEmpty())
+ playback_mixer = playback_mixers.first();
+ }
+ return playback_mixer;
+}
+
+
+bool TimeShifter::setPlaybackMixer(const QString &soundStreamClientID, const QString &ch)
+{
+ m_PlaybackMixerID = soundStreamClientID;
+ m_PlaybackMixerChannel = ch;
+
+ ISoundStreamClient *playback_mixer = searchPlaybackMixer();
+
+ float oldVolume;
+ if (m_OrgStreamID.isValid()) {
+ queryPlaybackVolume(m_OrgStreamID, oldVolume);
+ sendStopPlayback(m_OrgStreamID);
+ sendReleasePlayback(m_OrgStreamID);
+ }
+
+ if (playback_mixer)
+ playback_mixer->preparePlayback(m_OrgStreamID, m_PlaybackMixerChannel, /*active*/true, /*start_imm*/false);
+
+ if (m_OrgStreamID.isValid()) {
+ sendStartPlayback(m_OrgStreamID);
+ sendPlaybackVolume(m_OrgStreamID, oldVolume);
+ }
+
+ return true;
+}
+
+
+void TimeShifter::setTempFile(const QString &filename, Q_UINT64 s)
+{
+ m_RingBuffer.clear();
+ m_RingBuffer.resize(m_TempFileName = filename, m_TempFileMaxSize = s);
+ m_PlaybackMetaData = SoundMetaData(0,0,0, i18n("internal stream, not stored"));
+ m_PlaybackDataLeftInBuffer = 0;
+}
+
+bool TimeShifter::getSoundStreamDescription(SoundStreamID id, QString &descr) const
+{
+ if (id == m_NewStreamID) {
+ descr = name();
+ return true;
+ }
+ else {
+ return false;
+ }
+}
+
+bool TimeShifter::startCaptureWithFormat(
+ SoundStreamID id,
+ const SoundFormat &proposed_format,
+ SoundFormat &real_format,
+ bool force_format
+)
+{
+ if (id == m_OrgStreamID) {
+ if (force_format && m_realSoundFormat != proposed_format) {
+ sendStopCapture(m_NewStreamID);
+ sendStartCaptureWithFormat(m_NewStreamID, proposed_format, m_realSoundFormat);
+ }
+ real_format = m_realSoundFormat;
+ return true;
+ } else {
+ return false;
+ }
+}
+
+bool TimeShifter::stopCapture(SoundStreamID id)
+{
+ if (id == m_OrgStreamID) {
+ return true;
+ } else {
+ return false;
+ }
+}
+
+#include "timeshifter.moc"
diff --git a/kradio3/plugins/timeshifter/timeshifter.h b/kradio3/plugins/timeshifter/timeshifter.h
new file mode 100644
index 0000000..32c3837
--- /dev/null
+++ b/kradio3/plugins/timeshifter/timeshifter.h
@@ -0,0 +1,120 @@
+/***************************************************************************
+ timeshifter.h - description
+ -------------------
+ begin : May 16 2005
+ copyright : (C) 2005 Ernst Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_TIMESHIFTER_H
+#define KRADIO_TIMESHIFTER_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "../../src/include/plugins.h"
+#include "../../src/include/soundstreamclient_interfaces.h"
+#include "../../src/include/fileringbuffer.h"
+
+
+class TimeShifter : public QObject,
+ public PluginBase,
+ public ISoundStreamClient
+{
+Q_OBJECT
+public:
+ TimeShifter (const QString &name);
+ virtual ~TimeShifter ();
+
+ virtual bool connectI (Interface *);
+ virtual bool disconnectI (Interface *);
+
+ virtual QString pluginClassName() const { return "TimeShifter"; }
+
+ virtual const QString &name() const { return PluginBase::name(); }
+ virtual QString &name() { return PluginBase::name(); }
+
+ // config
+
+ const QString &getPlaybackMixer() const { return m_PlaybackMixerID; }
+ const QString &getPlaybackMixerChannel() const { return m_PlaybackMixerChannel; }
+ const QString &getTempFileName() const { return m_TempFileName; }
+ Q_UINT64 getTempFileMaxSize() const { return m_TempFileMaxSize; }
+
+ void setTempFile(const QString &filename, Q_UINT64 s);
+ bool setPlaybackMixer(const QString &soundStreamClientID, const QString &ch);
+
+ // PluginBase
+
+public:
+ virtual void saveState (KConfig *) const;
+ virtual void restoreState (KConfig *);
+
+ virtual ConfigPageInfo createConfigurationPage();
+ virtual AboutPageInfo createAboutPage();
+
+protected:
+
+ ISoundStreamClient *searchPlaybackMixer();
+
+ size_t writeMetaDataToBuffer(const SoundMetaData &md, char *buffer, size_t buffer_size);
+ size_t readMetaDataFromBuffer(SoundMetaData &md, const char *buffer, size_t buffer_size);
+ void skipPacketInRingBuffer();
+
+ // SoundStreamClient
+ void noticeConnectedI (ISoundStreamServer *s, bool pointer_valid);
+
+ bool startCaptureWithFormat(SoundStreamID id,
+ const SoundFormat &proposed_format,
+ SoundFormat &real_format,
+ bool force_format);
+ bool stopCapture(SoundStreamID id);
+ bool noticeSoundStreamClosed(SoundStreamID id);
+ bool startPlayback(SoundStreamID id);
+ bool stopPlayback(SoundStreamID id);
+ bool pausePlayback(SoundStreamID id);
+ bool noticeSoundStreamData(SoundStreamID id, const SoundFormat &sf, const char *data, size_t size, size_t &consumed_size, const SoundMetaData &md);
+ bool noticeReadyForPlaybackData(SoundStreamID id, size_t size);
+
+ bool getSoundStreamDescription(SoundStreamID id, QString &descr) const;
+
+ // FIXME: react on redirect request
+
+signals:
+
+ void sigUpdateConfig();
+
+protected:
+
+ QString m_TempFileName;
+ size_t m_TempFileMaxSize;
+ SoundFormat m_SoundFormat;
+ SoundFormat m_realSoundFormat;
+
+ QString m_PlaybackMixerID;
+ QString m_PlaybackMixerChannel;
+
+ QString m_StreamFile;
+ bool m_StreamPaused;
+ SoundStreamID m_OrgStreamID;
+ SoundStreamID m_NewStreamID;
+ SoundFormat m_RealSoundFormat;
+ float m_orgVolume;
+
+ SoundMetaData m_PlaybackMetaData;
+ size_t m_PlaybackDataLeftInBuffer;
+
+ FileRingBuffer m_RingBuffer;
+};
+
+#endif
diff --git a/kradio3/plugins/v4lradio/Makefile.am b/kradio3/plugins/v4lradio/Makefile.am
new file mode 100644
index 0000000..093d346
--- /dev/null
+++ b/kradio3/plugins/v4lradio/Makefile.am
@@ -0,0 +1,18 @@
+SUBDIRS = po .
+
+INCLUDES = $(all_includes)
+METASOURCES = AUTO
+
+libkradio_LTLIBRARIES = libv4lradio.la
+libv4lradio_la_SOURCES = v4lcfg_interfaces.cpp v4lradio-configuration.cpp \
+ v4lradio-configuration-ui.ui v4lradio.cpp
+libv4lradio_la_LDFLAGS = -module -avoid-version $(KDE_RPATH) $(all_libraries)
+
+noinst_HEADERS = v4lcfg_interfaces.h v4lradio-configuration.h v4lradio.h
+
+#messages: rc.cpp
+# $(XGETTEXT) *.cpp *.h -o po/kradio-v4lradio.pot
+
+messages: rc.cpp
+ $(EXTRACTRC) *.rc *.ui >> rc.cpp
+ $(XGETTEXT) rc.cpp *.h *.cpp -o po/kradio-v4lradio.pot
diff --git a/kradio3/plugins/v4lradio/linux/videodev.h b/kradio3/plugins/v4lradio/linux/videodev.h
new file mode 100644
index 0000000..e16a8a8
--- /dev/null
+++ b/kradio3/plugins/v4lradio/linux/videodev.h
@@ -0,0 +1,432 @@
+#ifndef __LINUX_VIDEODEV_H
+#define __LINUX_VIDEODEV_H
+
+#include <linux/types.h>
+#include <linux/version.h>
+//#include <linux/device.h>
+
+//#define HAVE_V4L2 1
+//#include <linux/videodev2.h>
+
+#ifdef __KERNEL__
+
+#include <linux/poll.h>
+#include <linux/mm.h>
+
+struct video_device
+{
+ /* device info */
+ struct device *dev;
+ char name[32];
+ int type; /* v4l1 */
+ int type2; /* v4l2 */
+ int hardware;
+ int minor;
+
+ /* device ops + callbacks */
+ struct file_operations *fops;
+ void (*release)(struct video_device *vfd);
+
+
+#if 1 /* to be removed in 2.7.x */
+ /* obsolete -- fops->owner is used instead */
+ struct module *owner;
+ /* dev->driver_data will be used instead some day.
+ * Use the video_{get|set}_drvdata() helper functions,
+ * so the switch over will be transparent for you.
+ * Or use {pci|usb}_{get|set}_drvdata() directly. */
+ void *priv;
+#endif
+
+ /* for videodev.c intenal usage -- please don't touch */
+ int users; /* video_exclusive_{open|close} ... */
+ struct semaphore lock; /* ... helper function uses these */
+ char devfs_name[64]; /* devfs */
+ struct class_device class_dev; /* sysfs */
+};
+
+#define VIDEO_MAJOR 81
+
+#define VFL_TYPE_GRABBER 0
+#define VFL_TYPE_VBI 1
+#define VFL_TYPE_RADIO 2
+#define VFL_TYPE_VTX 3
+
+extern int video_register_device(struct video_device *, int type, int nr);
+extern void video_unregister_device(struct video_device *);
+extern struct video_device* video_devdata(struct file*);
+
+#define to_video_device(cd) container_of(cd, struct video_device, class_dev)
+static inline void
+video_device_create_file(struct video_device *vfd,
+ struct class_device_attribute *attr)
+{
+ class_device_create_file(&vfd->class_dev, attr);
+}
+
+/* helper functions to alloc / release struct video_device, the
+ later can be used for video_device->release() */
+struct video_device *video_device_alloc(void);
+void video_device_release(struct video_device *vfd);
+
+/* helper functions to access driver private data. */
+static inline void *video_get_drvdata(struct video_device *dev)
+{
+ return dev->priv;
+}
+
+static inline void video_set_drvdata(struct video_device *dev, void *data)
+{
+ dev->priv = data;
+}
+
+extern int video_exclusive_open(struct inode *inode, struct file *file);
+extern int video_exclusive_release(struct inode *inode, struct file *file);
+extern int video_usercopy(struct inode *inode, struct file *file,
+ unsigned int cmd, unsigned long arg,
+ int (*func)(struct inode *inode, struct file *file,
+ unsigned int cmd, void *arg));
+#endif /* __KERNEL__ */
+
+#define VID_TYPE_CAPTURE 1 /* Can capture */
+#define VID_TYPE_TUNER 2 /* Can tune */
+#define VID_TYPE_TELETEXT 4 /* Does teletext */
+#define VID_TYPE_OVERLAY 8 /* Overlay onto frame buffer */
+#define VID_TYPE_CHROMAKEY 16 /* Overlay by chromakey */
+#define VID_TYPE_CLIPPING 32 /* Can clip */
+#define VID_TYPE_FRAMERAM 64 /* Uses the frame buffer memory */
+#define VID_TYPE_SCALES 128 /* Scalable */
+#define VID_TYPE_MONOCHROME 256 /* Monochrome only */
+#define VID_TYPE_SUBCAPTURE 512 /* Can capture subareas of the image */
+#define VID_TYPE_MPEG_DECODER 1024 /* Can decode MPEG streams */
+#define VID_TYPE_MPEG_ENCODER 2048 /* Can encode MPEG streams */
+#define VID_TYPE_MJPEG_DECODER 4096 /* Can decode MJPEG streams */
+#define VID_TYPE_MJPEG_ENCODER 8192 /* Can encode MJPEG streams */
+
+struct video_capability
+{
+ char name[32];
+ int type;
+ int channels; /* Num channels */
+ int audios; /* Num audio devices */
+ int maxwidth; /* Supported width */
+ int maxheight; /* And height */
+ int minwidth; /* Supported width */
+ int minheight; /* And height */
+};
+
+
+struct video_channel
+{
+ int channel;
+ char name[32];
+ int tuners;
+ __u32 flags;
+#define VIDEO_VC_TUNER 1 /* Channel has a tuner */
+#define VIDEO_VC_AUDIO 2 /* Channel has audio */
+ __u16 type;
+#define VIDEO_TYPE_TV 1
+#define VIDEO_TYPE_CAMERA 2
+ __u16 norm; /* Norm set by channel */
+};
+
+struct video_tuner
+{
+ int tuner;
+ char name[32];
+ unsigned long rangelow, rangehigh; /* Tuner range */
+ __u32 flags;
+#define VIDEO_TUNER_PAL 1
+#define VIDEO_TUNER_NTSC 2
+#define VIDEO_TUNER_SECAM 4
+#define VIDEO_TUNER_LOW 8 /* Uses KHz not MHz */
+#define VIDEO_TUNER_NORM 16 /* Tuner can set norm */
+#define VIDEO_TUNER_STEREO_ON 128 /* Tuner is seeing stereo */
+#define VIDEO_TUNER_RDS_ON 256 /* Tuner is seeing an RDS datastream */
+#define VIDEO_TUNER_MBS_ON 512 /* Tuner is seeing an MBS datastream */
+ __u16 mode; /* PAL/NTSC/SECAM/OTHER */
+#define VIDEO_MODE_PAL 0
+#define VIDEO_MODE_NTSC 1
+#define VIDEO_MODE_SECAM 2
+#define VIDEO_MODE_AUTO 3
+ __u16 signal; /* Signal strength 16bit scale */
+};
+
+struct video_picture
+{
+ __u16 brightness;
+ __u16 hue;
+ __u16 colour;
+ __u16 contrast;
+ __u16 whiteness; /* Black and white only */
+ __u16 depth; /* Capture depth */
+ __u16 palette; /* Palette in use */
+#define VIDEO_PALETTE_GREY 1 /* Linear greyscale */
+#define VIDEO_PALETTE_HI240 2 /* High 240 cube (BT848) */
+#define VIDEO_PALETTE_RGB565 3 /* 565 16 bit RGB */
+#define VIDEO_PALETTE_RGB24 4 /* 24bit RGB */
+#define VIDEO_PALETTE_RGB32 5 /* 32bit RGB */
+#define VIDEO_PALETTE_RGB555 6 /* 555 15bit RGB */
+#define VIDEO_PALETTE_YUV422 7 /* YUV422 capture */
+#define VIDEO_PALETTE_YUYV 8
+#define VIDEO_PALETTE_UYVY 9 /* The great thing about standards is ... */
+#define VIDEO_PALETTE_YUV420 10
+#define VIDEO_PALETTE_YUV411 11 /* YUV411 capture */
+#define VIDEO_PALETTE_RAW 12 /* RAW capture (BT848) */
+#define VIDEO_PALETTE_YUV422P 13 /* YUV 4:2:2 Planar */
+#define VIDEO_PALETTE_YUV411P 14 /* YUV 4:1:1 Planar */
+#define VIDEO_PALETTE_YUV420P 15 /* YUV 4:2:0 Planar */
+#define VIDEO_PALETTE_YUV410P 16 /* YUV 4:1:0 Planar */
+#define VIDEO_PALETTE_PLANAR 13 /* start of planar entries */
+#define VIDEO_PALETTE_COMPONENT 7 /* start of component entries */
+};
+
+struct video_audio
+{
+ int audio; /* Audio channel */
+ __u16 volume; /* If settable */
+ __u16 bass, treble;
+ __u32 flags;
+#define VIDEO_AUDIO_MUTE 1
+#define VIDEO_AUDIO_MUTABLE 2
+#define VIDEO_AUDIO_VOLUME 4
+#define VIDEO_AUDIO_BASS 8
+#define VIDEO_AUDIO_TREBLE 16
+#define VIDEO_AUDIO_BALANCE 32
+ char name[16];
+#define VIDEO_SOUND_MONO 1
+#define VIDEO_SOUND_STEREO 2
+#define VIDEO_SOUND_LANG1 4
+#define VIDEO_SOUND_LANG2 8
+ __u16 mode;
+ __u16 balance; /* Stereo balance */
+ __u16 step; /* Step actual volume uses */
+};
+
+struct video_clip
+{
+ __s32 x,y;
+ __s32 width, height;
+ struct video_clip *next; /* For user use/driver use only */
+};
+
+struct video_window
+{
+ __u32 x,y; /* Position of window */
+ __u32 width,height; /* Its size */
+ __u32 chromakey;
+ __u32 flags;
+ struct video_clip *clips; /* Set only */
+ int clipcount;
+#define VIDEO_WINDOW_INTERLACE 1
+#define VIDEO_WINDOW_CHROMAKEY 16 /* Overlay by chromakey */
+#define VIDEO_CLIP_BITMAP -1
+/* bitmap is 1024x625, a '1' bit represents a clipped pixel */
+#define VIDEO_CLIPMAP_SIZE (128 * 625)
+};
+
+struct video_capture
+{
+ __u32 x,y; /* Offsets into image */
+ __u32 width, height; /* Area to capture */
+ __u16 decimation; /* Decimation divider */
+ __u16 flags; /* Flags for capture */
+#define VIDEO_CAPTURE_ODD 0 /* Temporal */
+#define VIDEO_CAPTURE_EVEN 1
+};
+
+struct video_buffer
+{
+ void *base;
+ int height,width;
+ int depth;
+ int bytesperline;
+};
+
+struct video_mmap
+{
+ unsigned int frame; /* Frame (0 - n) for double buffer */
+ int height,width;
+ unsigned int format; /* should be VIDEO_PALETTE_* */
+};
+
+struct video_key
+{
+ __u8 key[8];
+ __u32 flags;
+};
+
+
+#define VIDEO_MAX_FRAME 32
+
+struct video_mbuf
+{
+ int size; /* Total memory to map */
+ int frames; /* Frames */
+ int offsets[VIDEO_MAX_FRAME];
+};
+
+
+#define VIDEO_NO_UNIT (-1)
+
+
+struct video_unit
+{
+ int video; /* Video minor */
+ int vbi; /* VBI minor */
+ int radio; /* Radio minor */
+ int audio; /* Audio minor */
+ int teletext; /* Teletext minor */
+};
+
+struct vbi_format {
+ __u32 sampling_rate; /* in Hz */
+ __u32 samples_per_line;
+ __u32 sample_format; /* VIDEO_PALETTE_RAW only (1 byte) */
+ __s32 start[2]; /* starting line for each frame */
+ __u32 count[2]; /* count of lines for each frame */
+ __u32 flags;
+#define VBI_UNSYNC 1 /* can distingues between top/bottom field */
+#define VBI_INTERLACED 2 /* lines are interlaced */
+};
+
+/* video_info is biased towards hardware mpeg encode/decode */
+/* but it could apply generically to any hardware compressor/decompressor */
+struct video_info
+{
+ __u32 frame_count; /* frames output since decode/encode began */
+ __u32 h_size; /* current unscaled horizontal size */
+ __u32 v_size; /* current unscaled veritcal size */
+ __u32 smpte_timecode; /* current SMPTE timecode (for current GOP) */
+ __u32 picture_type; /* current picture type */
+ __u32 temporal_reference; /* current temporal reference */
+ __u8 user_data[256]; /* user data last found in compressed stream */
+ /* user_data[0] contains user data flags, user_data[1] has count */
+};
+
+/* generic structure for setting playback modes */
+struct video_play_mode
+{
+ int mode;
+ int p1;
+ int p2;
+};
+
+/* for loading microcode / fpga programming */
+struct video_code
+{
+ char loadwhat[16]; /* name or tag of file being passed */
+ int datasize;
+ __u8 *data;
+};
+
+#define VIDIOCGCAP _IOR('v',1,struct video_capability) /* Get capabilities */
+#define VIDIOCGCHAN _IOWR('v',2,struct video_channel) /* Get channel info (sources) */
+#define VIDIOCSCHAN _IOW('v',3,struct video_channel) /* Set channel */
+#define VIDIOCGTUNER _IOWR('v',4,struct video_tuner) /* Get tuner abilities */
+#define VIDIOCSTUNER _IOW('v',5,struct video_tuner) /* Tune the tuner for the current channel */
+#define VIDIOCGPICT _IOR('v',6,struct video_picture) /* Get picture properties */
+#define VIDIOCSPICT _IOW('v',7,struct video_picture) /* Set picture properties */
+#define VIDIOCCAPTURE _IOW('v',8,int) /* Start, end capture */
+#define VIDIOCGWIN _IOR('v',9, struct video_window) /* Get the video overlay window */
+#define VIDIOCSWIN _IOW('v',10, struct video_window) /* Set the video overlay window - passes clip list for hardware smarts , chromakey etc */
+#define VIDIOCGFBUF _IOR('v',11, struct video_buffer) /* Get frame buffer */
+#define VIDIOCSFBUF _IOW('v',12, struct video_buffer) /* Set frame buffer - root only */
+#define VIDIOCKEY _IOR('v',13, struct video_key) /* Video key event - to dev 255 is to all - cuts capture on all DMA windows with this key (0xFFFFFFFF == all) */
+#define VIDIOCGFREQ _IOR('v',14, unsigned long) /* Set tuner */
+#define VIDIOCSFREQ _IOW('v',15, unsigned long) /* Set tuner */
+#define VIDIOCGAUDIO _IOR('v',16, struct video_audio) /* Get audio info */
+#define VIDIOCSAUDIO _IOW('v',17, struct video_audio) /* Audio source, mute etc */
+#define VIDIOCSYNC _IOW('v',18, int) /* Sync with mmap grabbing */
+#define VIDIOCMCAPTURE _IOW('v',19, struct video_mmap) /* Grab frames */
+#define VIDIOCGMBUF _IOR('v',20, struct video_mbuf) /* Memory map buffer info */
+#define VIDIOCGUNIT _IOR('v',21, struct video_unit) /* Get attached units */
+#define VIDIOCGCAPTURE _IOR('v',22, struct video_capture) /* Get subcapture */
+#define VIDIOCSCAPTURE _IOW('v',23, struct video_capture) /* Set subcapture */
+#define VIDIOCSPLAYMODE _IOW('v',24, struct video_play_mode) /* Set output video mode/feature */
+#define VIDIOCSWRITEMODE _IOW('v',25, int) /* Set write mode */
+#define VIDIOCGPLAYINFO _IOR('v',26, struct video_info) /* Get current playback info from hardware */
+#define VIDIOCSMICROCODE _IOW('v',27, struct video_code) /* Load microcode into hardware */
+#define VIDIOCGVBIFMT _IOR('v',28, struct vbi_format) /* Get VBI information */
+#define VIDIOCSVBIFMT _IOW('v',29, struct vbi_format) /* Set VBI information */
+
+
+#define BASE_VIDIOCPRIVATE 192 /* 192-255 are private */
+
+/* VIDIOCSWRITEMODE */
+#define VID_WRITE_MPEG_AUD 0
+#define VID_WRITE_MPEG_VID 1
+#define VID_WRITE_OSD 2
+#define VID_WRITE_TTX 3
+#define VID_WRITE_CC 4
+#define VID_WRITE_MJPEG 5
+
+/* VIDIOCSPLAYMODE */
+#define VID_PLAY_VID_OUT_MODE 0
+ /* p1: = VIDEO_MODE_PAL, VIDEO_MODE_NTSC, etc ... */
+#define VID_PLAY_GENLOCK 1
+ /* p1: 0 = OFF, 1 = ON */
+ /* p2: GENLOCK FINE DELAY value */
+#define VID_PLAY_NORMAL 2
+#define VID_PLAY_PAUSE 3
+#define VID_PLAY_SINGLE_FRAME 4
+#define VID_PLAY_FAST_FORWARD 5
+#define VID_PLAY_SLOW_MOTION 6
+#define VID_PLAY_IMMEDIATE_NORMAL 7
+#define VID_PLAY_SWITCH_CHANNELS 8
+#define VID_PLAY_FREEZE_FRAME 9
+#define VID_PLAY_STILL_MODE 10
+#define VID_PLAY_MASTER_MODE 11
+ /* p1: see below */
+#define VID_PLAY_MASTER_NONE 1
+#define VID_PLAY_MASTER_VIDEO 2
+#define VID_PLAY_MASTER_AUDIO 3
+#define VID_PLAY_ACTIVE_SCANLINES 12
+ /* p1 = first active; p2 = last active */
+#define VID_PLAY_RESET 13
+#define VID_PLAY_END_MARK 14
+
+
+
+#define VID_HARDWARE_BT848 1
+#define VID_HARDWARE_QCAM_BW 2
+#define VID_HARDWARE_PMS 3
+#define VID_HARDWARE_QCAM_C 4
+#define VID_HARDWARE_PSEUDO 5
+#define VID_HARDWARE_SAA5249 6
+#define VID_HARDWARE_AZTECH 7
+#define VID_HARDWARE_SF16MI 8
+#define VID_HARDWARE_RTRACK 9
+#define VID_HARDWARE_ZOLTRIX 10
+#define VID_HARDWARE_SAA7146 11
+#define VID_HARDWARE_VIDEUM 12 /* Reserved for Winnov videum */
+#define VID_HARDWARE_RTRACK2 13
+#define VID_HARDWARE_PERMEDIA2 14 /* Reserved for Permedia2 */
+#define VID_HARDWARE_RIVA128 15 /* Reserved for RIVA 128 */
+#define VID_HARDWARE_PLANB 16 /* PowerMac motherboard video-in */
+#define VID_HARDWARE_BROADWAY 17 /* Broadway project */
+#define VID_HARDWARE_GEMTEK 18
+#define VID_HARDWARE_TYPHOON 19
+#define VID_HARDWARE_VINO 20 /* SGI Indy Vino */
+#define VID_HARDWARE_CADET 21 /* Cadet radio */
+#define VID_HARDWARE_TRUST 22 /* Trust FM Radio */
+#define VID_HARDWARE_TERRATEC 23 /* TerraTec ActiveRadio */
+#define VID_HARDWARE_CPIA 24
+#define VID_HARDWARE_ZR36120 25 /* Zoran ZR36120/ZR36125 */
+#define VID_HARDWARE_ZR36067 26 /* Zoran ZR36067/36060 */
+#define VID_HARDWARE_OV511 27
+#define VID_HARDWARE_ZR356700 28 /* Zoran 36700 series */
+#define VID_HARDWARE_W9966 29
+#define VID_HARDWARE_SE401 30 /* SE401 USB webcams */
+#define VID_HARDWARE_PWC 31 /* Philips webcams */
+#define VID_HARDWARE_MEYE 32 /* Sony Vaio MotionEye cameras */
+#define VID_HARDWARE_CPIA2 33
+#define VID_HARDWARE_VICAM 34
+#define VID_HARDWARE_SF16FMR2 35
+#endif /* __LINUX_VIDEODEV_H */
+
+/*
+ * Local variables:
+ * c-basic-offset: 8
+ * End:
+ */
diff --git a/kradio3/plugins/v4lradio/linux/videodev2.h b/kradio3/plugins/v4lradio/linux/videodev2.h
new file mode 100644
index 0000000..c41831a
--- /dev/null
+++ b/kradio3/plugins/v4lradio/linux/videodev2.h
@@ -0,0 +1,940 @@
+#ifndef __LINUX_VIDEODEV2_H
+#define __LINUX_VIDEODEV2_H
+/*
+ * Video for Linux Two
+ *
+ * Header file for v4l or V4L2 drivers and applications, for
+ * Linux kernels 2.2.x or 2.4.x.
+ *
+ * See http://bytesex.org/v4l/ for API specs and other
+ * v4l2 documentation.
+ *
+ * Author: Bill Dirks <bdirks@pacbell.net>
+ * Justin Schoeman
+ * et al.
+ */
+
+#include <asm/types.h>
+#ifdef __KERNEL__
+#include <linux/time.h> /* need struct timeval */
+#endif
+
+/*
+ * M I S C E L L A N E O U S
+ */
+
+/* Four-character-code (FOURCC) */
+#define v4l2_fourcc(a,b,c,d)\
+ (((__u32)(a)<<0)|((__u32)(b)<<8)|((__u32)(c)<<16)|((__u32)(d)<<24))
+
+/*
+ * E N U M S
+ */
+enum v4l2_field {
+ V4L2_FIELD_ANY = 0, /* driver can choose from none,
+ top, bottom, interlaced
+ depending on whatever it thinks
+ is approximate ... */
+ V4L2_FIELD_NONE = 1, /* this device has no fields ... */
+ V4L2_FIELD_TOP = 2, /* top field only */
+ V4L2_FIELD_BOTTOM = 3, /* bottom field only */
+ V4L2_FIELD_INTERLACED = 4, /* both fields interlaced */
+ V4L2_FIELD_SEQ_TB = 5, /* both fields sequential into one
+ buffer, top-bottom order */
+ V4L2_FIELD_SEQ_BT = 6, /* same as above + bottom-top order */
+ V4L2_FIELD_ALTERNATE = 7 /* both fields alternating into
+ separate buffers */
+};
+#define V4L2_FIELD_HAS_TOP(field) \
+ ((field) == V4L2_FIELD_TOP ||\
+ (field) == V4L2_FIELD_INTERLACED ||\
+ (field) == V4L2_FIELD_SEQ_TB ||\
+ (field) == V4L2_FIELD_SEQ_BT)
+#define V4L2_FIELD_HAS_BOTTOM(field) \
+ ((field) == V4L2_FIELD_BOTTOM ||\
+ (field) == V4L2_FIELD_INTERLACED ||\
+ (field) == V4L2_FIELD_SEQ_TB ||\
+ (field) == V4L2_FIELD_SEQ_BT)
+#define V4L2_FIELD_HAS_BOTH(field) \
+ ((field) == V4L2_FIELD_INTERLACED ||\
+ (field) == V4L2_FIELD_SEQ_TB ||\
+ (field) == V4L2_FIELD_SEQ_BT)
+
+enum v4l2_buf_type {
+ V4L2_BUF_TYPE_VIDEO_CAPTURE = 1,
+ V4L2_BUF_TYPE_VIDEO_OUTPUT = 2,
+ V4L2_BUF_TYPE_VIDEO_OVERLAY = 3,
+ V4L2_BUF_TYPE_VBI_CAPTURE = 4,
+ V4L2_BUF_TYPE_VBI_OUTPUT = 5,
+ V4L2_BUF_TYPE_PRIVATE = 0x80
+};
+
+enum v4l2_ctrl_type {
+ V4L2_CTRL_TYPE_INTEGER = 1,
+ V4L2_CTRL_TYPE_BOOLEAN = 2,
+ V4L2_CTRL_TYPE_MENU = 3,
+ V4L2_CTRL_TYPE_BUTTON = 4
+};
+
+enum v4l2_tuner_type {
+ V4L2_TUNER_RADIO = 1,
+ V4L2_TUNER_ANALOG_TV = 2
+};
+
+enum v4l2_memory {
+ V4L2_MEMORY_MMAP = 1,
+ V4L2_MEMORY_USERPTR = 2,
+ V4L2_MEMORY_OVERLAY = 3
+};
+
+/* see also http://vektor.theorem.ca/graphics/ycbcr/ */
+enum v4l2_colorspace {
+ /* ITU-R 601 -- broadcast NTSC/PAL */
+ V4L2_COLORSPACE_SMPTE170M = 1,
+
+ /* 1125-Line (US) HDTV */
+ V4L2_COLORSPACE_SMPTE240M = 2,
+
+ /* HD and modern captures. */
+ V4L2_COLORSPACE_REC709 = 3,
+
+ /* broken BT878 extents (601, luma range 16-253 instead of 16-235) */
+ V4L2_COLORSPACE_BT878 = 4,
+
+ /* These should be useful. Assume 601 extents. */
+ V4L2_COLORSPACE_470_SYSTEM_M = 5,
+ V4L2_COLORSPACE_470_SYSTEM_BG = 6,
+
+ /* I know there will be cameras that send this. So, this is
+ * unspecified chromaticities and full 0-255 on each of the
+ * Y'CbCr components
+ */
+ V4L2_COLORSPACE_JPEG = 7,
+
+ /* For RGB colourspaces, this is probably a good start. */
+ V4L2_COLORSPACE_SRGB = 8
+};
+
+enum v4l2_priority {
+ V4L2_PRIORITY_UNSET = 0, /* not initialized */
+ V4L2_PRIORITY_BACKGROUND = 1,
+ V4L2_PRIORITY_INTERACTIVE = 2,
+ V4L2_PRIORITY_RECORD = 3,
+ V4L2_PRIORITY_DEFAULT = V4L2_PRIORITY_INTERACTIVE
+};
+
+struct v4l2_rect {
+ __s32 left;
+ __s32 top;
+ __s32 width;
+ __s32 height;
+};
+
+struct v4l2_fract {
+ __u32 numerator;
+ __u32 denominator;
+};
+
+/*
+ * D R I V E R C A P A B I L I T I E S
+ */
+struct v4l2_capability
+{
+ __u8 driver[16]; /* i.e. "bttv" */
+ __u8 card[32]; /* i.e. "Hauppauge WinTV" */
+ __u8 bus_info[32]; /* "PCI:" + pci_name(pci_dev) */
+ __u32 version; /* should use KERNEL_VERSION() */
+ __u32 capabilities; /* Device capabilities */
+ __u32 reserved[4];
+};
+
+/* Values for 'capabilities' field */
+#define V4L2_CAP_VIDEO_CAPTURE 0x00000001 /* Is a video capture device */
+#define V4L2_CAP_VIDEO_OUTPUT 0x00000002 /* Is a video output device */
+#define V4L2_CAP_VIDEO_OVERLAY 0x00000004 /* Can do video overlay */
+#define V4L2_CAP_VBI_CAPTURE 0x00000010 /* Is a VBI capture device */
+#define V4L2_CAP_VBI_OUTPUT 0x00000020 /* Is a VBI output device */
+#define V4L2_CAP_RDS_CAPTURE 0x00000100 /* RDS data capture */
+
+#define V4L2_CAP_TUNER 0x00010000 /* has a tuner */
+#define V4L2_CAP_AUDIO 0x00020000 /* has audio support */
+#define V4L2_CAP_RADIO 0x00040000 /* is a radio device */
+
+#define V4L2_CAP_READWRITE 0x01000000 /* read/write systemcalls */
+#define V4L2_CAP_ASYNCIO 0x02000000 /* async I/O */
+#define V4L2_CAP_STREAMING 0x04000000 /* streaming I/O ioctls */
+
+/*
+ * V I D E O I M A G E F O R M A T
+ */
+
+struct v4l2_pix_format
+{
+ __u32 width;
+ __u32 height;
+ __u32 pixelformat;
+ enum v4l2_field field;
+ __u32 bytesperline; /* for padding, zero if unused */
+ __u32 sizeimage;
+ enum v4l2_colorspace colorspace;
+ __u32 priv; /* private data, depends on pixelformat */
+};
+
+/* Pixel format FOURCC depth Description */
+#define V4L2_PIX_FMT_RGB332 v4l2_fourcc('R','G','B','1') /* 8 RGB-3-3-2 */
+#define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R','G','B','O') /* 16 RGB-5-5-5 */
+#define V4L2_PIX_FMT_RGB565 v4l2_fourcc('R','G','B','P') /* 16 RGB-5-6-5 */
+#define V4L2_PIX_FMT_RGB555X v4l2_fourcc('R','G','B','Q') /* 16 RGB-5-5-5 BE */
+#define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R','G','B','R') /* 16 RGB-5-6-5 BE */
+#define V4L2_PIX_FMT_BGR24 v4l2_fourcc('B','G','R','3') /* 24 BGR-8-8-8 */
+#define V4L2_PIX_FMT_RGB24 v4l2_fourcc('R','G','B','3') /* 24 RGB-8-8-8 */
+#define V4L2_PIX_FMT_BGR32 v4l2_fourcc('B','G','R','4') /* 32 BGR-8-8-8-8 */
+#define V4L2_PIX_FMT_RGB32 v4l2_fourcc('R','G','B','4') /* 32 RGB-8-8-8-8 */
+#define V4L2_PIX_FMT_GREY v4l2_fourcc('G','R','E','Y') /* 8 Greyscale */
+#define V4L2_PIX_FMT_YVU410 v4l2_fourcc('Y','V','U','9') /* 9 YVU 4:1:0 */
+#define V4L2_PIX_FMT_YVU420 v4l2_fourcc('Y','V','1','2') /* 12 YVU 4:2:0 */
+#define V4L2_PIX_FMT_YUYV v4l2_fourcc('Y','U','Y','V') /* 16 YUV 4:2:2 */
+#define V4L2_PIX_FMT_UYVY v4l2_fourcc('U','Y','V','Y') /* 16 YUV 4:2:2 */
+#define V4L2_PIX_FMT_YUV422P v4l2_fourcc('4','2','2','P') /* 16 YVU422 planar */
+#define V4L2_PIX_FMT_YUV411P v4l2_fourcc('4','1','1','P') /* 16 YVU411 planar */
+#define V4L2_PIX_FMT_Y41P v4l2_fourcc('Y','4','1','P') /* 12 YUV 4:1:1 */
+
+/* two planes -- one Y, one Cr + Cb interleaved */
+#define V4L2_PIX_FMT_NV12 v4l2_fourcc('N','V','1','2') /* 12 Y/CbCr 4:2:0 */
+#define V4L2_PIX_FMT_NV21 v4l2_fourcc('N','V','2','1') /* 12 Y/CrCb 4:2:0 */
+
+/* The following formats are not defined in the V4L2 specification */
+#define V4L2_PIX_FMT_YUV410 v4l2_fourcc('Y','U','V','9') /* 9 YUV 4:1:0 */
+#define V4L2_PIX_FMT_YUV420 v4l2_fourcc('Y','U','1','2') /* 12 YUV 4:2:0 */
+#define V4L2_PIX_FMT_YYUV v4l2_fourcc('Y','Y','U','V') /* 16 YUV 4:2:2 */
+#define V4L2_PIX_FMT_HI240 v4l2_fourcc('H','I','2','4') /* 8 8-bit color */
+
+/* compressed formats */
+#define V4L2_PIX_FMT_MJPEG v4l2_fourcc('M','J','P','G') /* Motion-JPEG */
+#define V4L2_PIX_FMT_JPEG v4l2_fourcc('J','P','E','G') /* JFIF JPEG */
+#define V4L2_PIX_FMT_DV v4l2_fourcc('d','v','s','d') /* 1394 */
+#define V4L2_PIX_FMT_MPEG v4l2_fourcc('M','P','E','G') /* MPEG */
+
+/* Vendor-specific formats */
+#define V4L2_PIX_FMT_WNVA v4l2_fourcc('W','N','V','A') /* Winnov hw compress */
+
+/*
+ * F O R M A T E N U M E R A T I O N
+ */
+struct v4l2_fmtdesc
+{
+ __u32 index; /* Format number */
+ enum v4l2_buf_type type; /* buffer type */
+ __u32 flags;
+ __u8 description[32]; /* Description string */
+ __u32 pixelformat; /* Format fourcc */
+ __u32 reserved[4];
+};
+
+#define V4L2_FMT_FLAG_COMPRESSED 0x0001
+
+
+/*
+ * T I M E C O D E
+ */
+struct v4l2_timecode
+{
+ __u32 type;
+ __u32 flags;
+ __u8 frames;
+ __u8 seconds;
+ __u8 minutes;
+ __u8 hours;
+ __u8 userbits[4];
+};
+
+/* Type */
+#define V4L2_TC_TYPE_24FPS 1
+#define V4L2_TC_TYPE_25FPS 2
+#define V4L2_TC_TYPE_30FPS 3
+#define V4L2_TC_TYPE_50FPS 4
+#define V4L2_TC_TYPE_60FPS 5
+
+/* Flags */
+#define V4L2_TC_FLAG_DROPFRAME 0x0001 /* "drop-frame" mode */
+#define V4L2_TC_FLAG_COLORFRAME 0x0002
+#define V4L2_TC_USERBITS_field 0x000C
+#define V4L2_TC_USERBITS_USERDEFINED 0x0000
+#define V4L2_TC_USERBITS_8BITCHARS 0x0008
+/* The above is based on SMPTE timecodes */
+
+
+/*
+ * C O M P R E S S I O N P A R A M E T E R S
+ */
+#if 0
+/* ### generic compression settings don't work, there is too much
+ * ### codec-specific stuff. Maybe reuse that for MPEG codec settings
+ * ### later ... */
+struct v4l2_compression
+{
+ __u32 quality;
+ __u32 keyframerate;
+ __u32 pframerate;
+ __u32 reserved[5];
+
+/* what we'll need for MPEG, extracted from some postings on
+ the v4l list (Gert Vervoort, PlasmaJohn).
+
+system stream:
+ - type: elementary stream(ES), packatised elementary stream(s) (PES)
+ program stream(PS), transport stream(TS)
+ - system bitrate
+ - PS packet size (DVD: 2048 bytes, VCD: 2324 bytes)
+ - TS video PID
+ - TS audio PID
+ - TS PCR PID
+ - TS system information tables (PAT, PMT, CAT, NIT and SIT)
+ - (MPEG-1 systems stream vs. MPEG-2 program stream (TS not supported
+ by MPEG-1 systems)
+
+audio:
+ - type: MPEG (+Layer I,II,III), AC-3, LPCM
+ - bitrate
+ - sampling frequency (DVD: 48 Khz, VCD: 44.1 KHz, 32 kHz)
+ - Trick Modes? (ff, rew)
+ - Copyright
+ - Inverse Telecine
+
+video:
+ - picturesize (SIF, 1/2 D1, 2/3 D1, D1) and PAL/NTSC norm can be set
+ through excisting V4L2 controls
+ - noise reduction, parameters encoder specific?
+ - MPEG video version: MPEG-1, MPEG-2
+ - GOP (Group Of Pictures) definition:
+ - N: number of frames per GOP
+ - M: distance between reference (I,P) frames
+ - open/closed GOP
+ - quantiser matrix: inter Q matrix (64 bytes) and intra Q matrix (64 bytes)
+ - quantiser scale: linear or logarithmic
+ - scanning: alternate or zigzag
+ - bitrate mode: CBR (constant bitrate) or VBR (variable bitrate).
+ - target video bitrate for CBR
+ - target video bitrate for VBR
+ - maximum video bitrate for VBR - min. quantiser value for VBR
+ - max. quantiser value for VBR
+ - adaptive quantisation value
+ - return the number of bytes per GOP or bitrate for bitrate monitoring
+
+*/
+};
+#endif
+
+struct v4l2_jpegcompression
+{
+ int quality;
+
+ int APPn; /* Number of APP segment to be written,
+ * must be 0..15 */
+ int APP_len; /* Length of data in JPEG APPn segment */
+ char APP_data[60]; /* Data in the JPEG APPn segment. */
+
+ int COM_len; /* Length of data in JPEG COM segment */
+ char COM_data[60]; /* Data in JPEG COM segment */
+
+ __u32 jpeg_markers; /* Which markers should go into the JPEG
+ * output. Unless you exactly know what
+ * you do, leave them untouched.
+ * Inluding less markers will make the
+ * resulting code smaller, but there will
+ * be fewer aplications which can read it.
+ * The presence of the APP and COM marker
+ * is influenced by APP_len and COM_len
+ * ONLY, not by this property! */
+
+#define V4L2_JPEG_MARKER_DHT (1<<3) /* Define Huffman Tables */
+#define V4L2_JPEG_MARKER_DQT (1<<4) /* Define Quantization Tables */
+#define V4L2_JPEG_MARKER_DRI (1<<5) /* Define Restart Interval */
+#define V4L2_JPEG_MARKER_COM (1<<6) /* Comment segment */
+#define V4L2_JPEG_MARKER_APP (1<<7) /* App segment, driver will
+ * allways use APP0 */
+};
+
+
+/*
+ * M E M O R Y - M A P P I N G B U F F E R S
+ */
+struct v4l2_requestbuffers
+{
+ __u32 count;
+ enum v4l2_buf_type type;
+ enum v4l2_memory memory;
+ __u32 reserved[2];
+};
+
+struct v4l2_buffer
+{
+ __u32 index;
+ enum v4l2_buf_type type;
+ __u32 bytesused;
+ __u32 flags;
+ enum v4l2_field field;
+ struct timeval timestamp;
+ struct v4l2_timecode timecode;
+ __u32 sequence;
+
+ /* memory location */
+ enum v4l2_memory memory;
+ union {
+ __u32 offset;
+ unsigned long userptr;
+ } m;
+ __u32 length;
+
+ __u32 reserved[2];
+};
+
+/* Flags for 'flags' field */
+#define V4L2_BUF_FLAG_MAPPED 0x0001 /* Buffer is mapped (flag) */
+#define V4L2_BUF_FLAG_QUEUED 0x0002 /* Buffer is queued for processing */
+#define V4L2_BUF_FLAG_DONE 0x0004 /* Buffer is ready */
+#define V4L2_BUF_FLAG_KEYFRAME 0x0008 /* Image is a keyframe (I-frame) */
+#define V4L2_BUF_FLAG_PFRAME 0x0010 /* Image is a P-frame */
+#define V4L2_BUF_FLAG_BFRAME 0x0020 /* Image is a B-frame */
+#define V4L2_BUF_FLAG_TIMECODE 0x0100 /* timecode field is valid */
+
+/*
+ * O V E R L A Y P R E V I E W
+ */
+struct v4l2_framebuffer
+{
+ __u32 capability;
+ __u32 flags;
+/* FIXME: in theory we should pass something like PCI device + memory
+ * region + offset instead of some physical address */
+ void* base;
+ struct v4l2_pix_format fmt;
+};
+/* Flags for the 'capability' field. Read only */
+#define V4L2_FBUF_CAP_EXTERNOVERLAY 0x0001
+#define V4L2_FBUF_CAP_CHROMAKEY 0x0002
+#define V4L2_FBUF_CAP_LIST_CLIPPING 0x0004
+#define V4L2_FBUF_CAP_BITMAP_CLIPPING 0x0008
+/* Flags for the 'flags' field. */
+#define V4L2_FBUF_FLAG_PRIMARY 0x0001
+#define V4L2_FBUF_FLAG_OVERLAY 0x0002
+#define V4L2_FBUF_FLAG_CHROMAKEY 0x0004
+
+struct v4l2_clip
+{
+ struct v4l2_rect c;
+ struct v4l2_clip *next;
+};
+
+struct v4l2_window
+{
+ struct v4l2_rect w;
+ enum v4l2_field field;
+ __u32 chromakey;
+ struct v4l2_clip *clips;
+ __u32 clipcount;
+ void *bitmap;
+};
+
+
+/*
+ * C A P T U R E P A R A M E T E R S
+ */
+struct v4l2_captureparm
+{
+ __u32 capability; /* Supported modes */
+ __u32 capturemode; /* Current mode */
+ struct v4l2_fract timeperframe; /* Time per frame in .1us units */
+ __u32 extendedmode; /* Driver-specific extensions */
+ __u32 readbuffers; /* # of buffers for read */
+ __u32 reserved[4];
+};
+/* Flags for 'capability' and 'capturemode' fields */
+#define V4L2_MODE_HIGHQUALITY 0x0001 /* High quality imaging mode */
+#define V4L2_CAP_TIMEPERFRAME 0x1000 /* timeperframe field is supported */
+
+struct v4l2_outputparm
+{
+ __u32 capability; /* Supported modes */
+ __u32 outputmode; /* Current mode */
+ struct v4l2_fract timeperframe; /* Time per frame in seconds */
+ __u32 extendedmode; /* Driver-specific extensions */
+ __u32 writebuffers; /* # of buffers for write */
+ __u32 reserved[4];
+};
+
+/*
+ * I N P U T I M A G E C R O P P I N G
+ */
+
+struct v4l2_cropcap {
+ enum v4l2_buf_type type;
+ struct v4l2_rect bounds;
+ struct v4l2_rect defrect;
+ struct v4l2_fract pixelaspect;
+};
+
+struct v4l2_crop {
+ enum v4l2_buf_type type;
+ struct v4l2_rect c;
+};
+
+/*
+ * A N A L O G V I D E O S T A N D A R D
+ */
+
+typedef unsigned long long v4l2_std_id;
+
+/* one bit for each */
+#define V4L2_STD_PAL_B ((v4l2_std_id)0x00000001)
+#define V4L2_STD_PAL_B1 ((v4l2_std_id)0x00000002)
+#define V4L2_STD_PAL_G ((v4l2_std_id)0x00000004)
+#define V4L2_STD_PAL_H ((v4l2_std_id)0x00000008)
+#define V4L2_STD_PAL_I ((v4l2_std_id)0x00000010)
+#define V4L2_STD_PAL_D ((v4l2_std_id)0x00000020)
+#define V4L2_STD_PAL_D1 ((v4l2_std_id)0x00000040)
+#define V4L2_STD_PAL_K ((v4l2_std_id)0x00000080)
+
+#define V4L2_STD_PAL_M ((v4l2_std_id)0x00000100)
+#define V4L2_STD_PAL_N ((v4l2_std_id)0x00000200)
+#define V4L2_STD_PAL_Nc ((v4l2_std_id)0x00000400)
+#define V4L2_STD_PAL_60 ((v4l2_std_id)0x00000800)
+
+#define V4L2_STD_NTSC_M ((v4l2_std_id)0x00001000)
+#define V4L2_STD_NTSC_M_JP ((v4l2_std_id)0x00002000)
+
+#define V4L2_STD_SECAM_B ((v4l2_std_id)0x00010000)
+#define V4L2_STD_SECAM_D ((v4l2_std_id)0x00020000)
+#define V4L2_STD_SECAM_G ((v4l2_std_id)0x00040000)
+#define V4L2_STD_SECAM_H ((v4l2_std_id)0x00080000)
+#define V4L2_STD_SECAM_K ((v4l2_std_id)0x00100000)
+#define V4L2_STD_SECAM_K1 ((v4l2_std_id)0x00200000)
+#define V4L2_STD_SECAM_L ((v4l2_std_id)0x00400000)
+
+/* ATSC/HDTV */
+#define V4L2_STD_ATSC_8_VSB ((v4l2_std_id)0x01000000)
+#define V4L2_STD_ATSC_16_VSB ((v4l2_std_id)0x02000000)
+
+/* some common needed stuff */
+#define V4L2_STD_PAL_BG (V4L2_STD_PAL_B |\
+ V4L2_STD_PAL_B1 |\
+ V4L2_STD_PAL_G)
+#define V4L2_STD_PAL_DK (V4L2_STD_PAL_D |\
+ V4L2_STD_PAL_D1 |\
+ V4L2_STD_PAL_K)
+#define V4L2_STD_PAL (V4L2_STD_PAL_BG |\
+ V4L2_STD_PAL_DK |\
+ V4L2_STD_PAL_H |\
+ V4L2_STD_PAL_I)
+#define V4L2_STD_NTSC (V4L2_STD_NTSC_M |\
+ V4L2_STD_NTSC_M_JP)
+#define V4L2_STD_SECAM (V4L2_STD_SECAM_B |\
+ V4L2_STD_SECAM_D |\
+ V4L2_STD_SECAM_G |\
+ V4L2_STD_SECAM_H |\
+ V4L2_STD_SECAM_K |\
+ V4L2_STD_SECAM_K1 |\
+ V4L2_STD_SECAM_L)
+
+#define V4L2_STD_525_60 (V4L2_STD_PAL_M |\
+ V4L2_STD_PAL_60 |\
+ V4L2_STD_NTSC)
+#define V4L2_STD_625_50 (V4L2_STD_PAL |\
+ V4L2_STD_PAL_N |\
+ V4L2_STD_PAL_Nc |\
+ V4L2_STD_SECAM)
+
+#define V4L2_STD_UNKNOWN 0
+#define V4L2_STD_ALL (V4L2_STD_525_60 |\
+ V4L2_STD_625_50)
+
+struct v4l2_standard
+{
+ __u32 index;
+ v4l2_std_id id;
+ __u8 name[24];
+ struct v4l2_fract frameperiod; /* Frames, not fields */
+ __u32 framelines;
+ __u32 reserved[4];
+};
+
+
+/*
+ * V I D E O I N P U T S
+ */
+struct v4l2_input
+{
+ __u32 index; /* Which input */
+ __u8 name[32]; /* Label */
+ __u32 type; /* Type of input */
+ __u32 audioset; /* Associated audios (bitfield) */
+ __u32 tuner; /* Associated tuner */
+ v4l2_std_id std;
+ __u32 status;
+ __u32 reserved[4];
+};
+/* Values for the 'type' field */
+#define V4L2_INPUT_TYPE_TUNER 1
+#define V4L2_INPUT_TYPE_CAMERA 2
+
+/* field 'status' - general */
+#define V4L2_IN_ST_NO_POWER 0x00000001 /* Attached device is off */
+#define V4L2_IN_ST_NO_SIGNAL 0x00000002
+#define V4L2_IN_ST_NO_COLOR 0x00000004
+
+/* field 'status' - analog */
+#define V4L2_IN_ST_NO_H_LOCK 0x00000100 /* No horizontal sync lock */
+#define V4L2_IN_ST_COLOR_KILL 0x00000200 /* Color killer is active */
+
+/* field 'status' - digital */
+#define V4L2_IN_ST_NO_SYNC 0x00010000 /* No synchronization lock */
+#define V4L2_IN_ST_NO_EQU 0x00020000 /* No equalizer lock */
+#define V4L2_IN_ST_NO_CARRIER 0x00040000 /* Carrier recovery failed */
+
+/* field 'status' - VCR and set-top box */
+#define V4L2_IN_ST_MACROVISION 0x01000000 /* Macrovision detected */
+#define V4L2_IN_ST_NO_ACCESS 0x02000000 /* Conditional access denied */
+#define V4L2_IN_ST_VTR 0x04000000 /* VTR time constant */
+
+/*
+ * V I D E O O U T P U T S
+ */
+struct v4l2_output
+{
+ __u32 index; /* Which output */
+ __u8 name[32]; /* Label */
+ __u32 type; /* Type of output */
+ __u32 audioset; /* Associated audios (bitfield) */
+ __u32 modulator; /* Associated modulator */
+ v4l2_std_id std;
+ __u32 reserved[4];
+};
+/* Values for the 'type' field */
+#define V4L2_OUTPUT_TYPE_MODULATOR 1
+#define V4L2_OUTPUT_TYPE_ANALOG 2
+#define V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY 3
+
+/*
+ * C O N T R O L S
+ */
+struct v4l2_control
+{
+ __u32 id;
+ __s32 value;
+};
+
+/* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */
+struct v4l2_queryctrl
+{
+ __u32 id;
+ enum v4l2_ctrl_type type;
+ __u8 name[32]; /* Whatever */
+ __s32 minimum; /* Note signedness */
+ __s32 maximum;
+ __s32 step;
+ __s32 default_value;
+ __u32 flags;
+ __u32 reserved[2];
+};
+
+/* Used in the VIDIOC_QUERYMENU ioctl for querying menu items */
+struct v4l2_querymenu
+{
+ __u32 id;
+ __u32 index;
+ __u8 name[32]; /* Whatever */
+ __u32 reserved;
+};
+
+/* Control flags */
+#define V4L2_CTRL_FLAG_DISABLED 0x0001
+#define V4L2_CTRL_FLAG_GRABBED 0x0002
+
+/* Control IDs defined by V4L2 */
+#define V4L2_CID_BASE 0x00980900
+/* IDs reserved for driver specific controls */
+#define V4L2_CID_PRIVATE_BASE 0x08000000
+
+#define V4L2_CID_BRIGHTNESS (V4L2_CID_BASE+0)
+#define V4L2_CID_CONTRAST (V4L2_CID_BASE+1)
+#define V4L2_CID_SATURATION (V4L2_CID_BASE+2)
+#define V4L2_CID_HUE (V4L2_CID_BASE+3)
+#define V4L2_CID_AUDIO_VOLUME (V4L2_CID_BASE+5)
+#define V4L2_CID_AUDIO_BALANCE (V4L2_CID_BASE+6)
+#define V4L2_CID_AUDIO_BASS (V4L2_CID_BASE+7)
+#define V4L2_CID_AUDIO_TREBLE (V4L2_CID_BASE+8)
+#define V4L2_CID_AUDIO_MUTE (V4L2_CID_BASE+9)
+#define V4L2_CID_AUDIO_LOUDNESS (V4L2_CID_BASE+10)
+#define V4L2_CID_BLACK_LEVEL (V4L2_CID_BASE+11)
+#define V4L2_CID_AUTO_WHITE_BALANCE (V4L2_CID_BASE+12)
+#define V4L2_CID_DO_WHITE_BALANCE (V4L2_CID_BASE+13)
+#define V4L2_CID_RED_BALANCE (V4L2_CID_BASE+14)
+#define V4L2_CID_BLUE_BALANCE (V4L2_CID_BASE+15)
+#define V4L2_CID_GAMMA (V4L2_CID_BASE+16)
+#define V4L2_CID_WHITENESS (V4L2_CID_GAMMA) /* ? Not sure */
+#define V4L2_CID_EXPOSURE (V4L2_CID_BASE+17)
+#define V4L2_CID_AUTOGAIN (V4L2_CID_BASE+18)
+#define V4L2_CID_GAIN (V4L2_CID_BASE+19)
+#define V4L2_CID_HFLIP (V4L2_CID_BASE+20)
+#define V4L2_CID_VFLIP (V4L2_CID_BASE+21)
+#define V4L2_CID_HCENTER (V4L2_CID_BASE+22)
+#define V4L2_CID_VCENTER (V4L2_CID_BASE+23)
+#define V4L2_CID_LASTP1 (V4L2_CID_BASE+24) /* last CID + 1 */
+
+/*
+ * T U N I N G
+ */
+struct v4l2_tuner
+{
+ __u32 index;
+ __u8 name[32];
+ enum v4l2_tuner_type type;
+ __u32 capability;
+ __u32 rangelow;
+ __u32 rangehigh;
+ __u32 rxsubchans;
+ __u32 audmode;
+ __s32 signal;
+ __s32 afc;
+ __u32 reserved[4];
+};
+
+struct v4l2_modulator
+{
+ __u32 index;
+ __u8 name[32];
+ __u32 capability;
+ __u32 rangelow;
+ __u32 rangehigh;
+ __u32 txsubchans;
+ __u32 reserved[4];
+};
+
+/* Flags for the 'capability' field */
+#define V4L2_TUNER_CAP_LOW 0x0001
+#define V4L2_TUNER_CAP_NORM 0x0002
+#define V4L2_TUNER_CAP_STEREO 0x0010
+#define V4L2_TUNER_CAP_LANG2 0x0020
+#define V4L2_TUNER_CAP_SAP 0x0020
+#define V4L2_TUNER_CAP_LANG1 0x0040
+
+/* Flags for the 'rxsubchans' field */
+#define V4L2_TUNER_SUB_MONO 0x0001
+#define V4L2_TUNER_SUB_STEREO 0x0002
+#define V4L2_TUNER_SUB_LANG2 0x0004
+#define V4L2_TUNER_SUB_SAP 0x0004
+#define V4L2_TUNER_SUB_LANG1 0x0008
+
+/* Values for the 'audmode' field */
+#define V4L2_TUNER_MODE_MONO 0x0000
+#define V4L2_TUNER_MODE_STEREO 0x0001
+#define V4L2_TUNER_MODE_LANG2 0x0002
+#define V4L2_TUNER_MODE_SAP 0x0002
+#define V4L2_TUNER_MODE_LANG1 0x0003
+
+struct v4l2_frequency
+{
+ __u32 tuner;
+ enum v4l2_tuner_type type;
+ __u32 frequency;
+ __u32 reserved[8];
+};
+
+/*
+ * A U D I O
+ */
+struct v4l2_audio
+{
+ __u32 index;
+ __u8 name[32];
+ __u32 capability;
+ __u32 mode;
+ __u32 reserved[2];
+};
+/* Flags for the 'capability' field */
+#define V4L2_AUDCAP_STEREO 0x00001
+#define V4L2_AUDCAP_AVL 0x00002
+
+/* Flags for the 'mode' field */
+#define V4L2_AUDMODE_AVL 0x00001
+
+struct v4l2_audioout
+{
+ __u32 index;
+ __u8 name[32];
+ __u32 capability;
+ __u32 mode;
+ __u32 reserved[2];
+};
+
+/*
+ * D A T A S E R V I C E S ( V B I )
+ *
+ * Data services API by Michael Schimek
+ */
+
+struct v4l2_vbi_format
+{
+ __u32 sampling_rate; /* in 1 Hz */
+ __u32 offset;
+ __u32 samples_per_line;
+ __u32 sample_format; /* V4L2_PIX_FMT_* */
+ __s32 start[2];
+ __u32 count[2];
+ __u32 flags; /* V4L2_VBI_* */
+ __u32 reserved[2]; /* must be zero */
+};
+
+/* VBI flags */
+#define V4L2_VBI_UNSYNC (1<< 0)
+#define V4L2_VBI_INTERLACED (1<< 1)
+
+
+/*
+ * A G G R E G A T E S T R U C T U R E S
+ */
+
+/* Stream data format
+ */
+struct v4l2_format
+{
+ enum v4l2_buf_type type;
+ union
+ {
+ struct v4l2_pix_format pix; // V4L2_BUF_TYPE_VIDEO_CAPTURE
+ struct v4l2_window win; // V4L2_BUF_TYPE_VIDEO_OVERLAY
+ struct v4l2_vbi_format vbi; // V4L2_BUF_TYPE_VBI_CAPTURE
+ __u8 raw_data[200]; // user-defined
+ } fmt;
+};
+
+
+/* Stream type-dependent parameters
+ */
+struct v4l2_streamparm
+{
+ enum v4l2_buf_type type;
+ union
+ {
+ struct v4l2_captureparm capture;
+ struct v4l2_outputparm output;
+ __u8 raw_data[200]; /* user-defined */
+ } parm;
+};
+
+
+
+/*
+ * I O C T L C O D E S F O R V I D E O D E V I C E S
+ *
+ */
+#define VIDIOC_QUERYCAP _IOR ('V', 0, struct v4l2_capability)
+#define VIDIOC_RESERVED _IO ('V', 1)
+#define VIDIOC_ENUM_FMT _IOWR ('V', 2, struct v4l2_fmtdesc)
+#define VIDIOC_G_FMT _IOWR ('V', 4, struct v4l2_format)
+#define VIDIOC_S_FMT _IOWR ('V', 5, struct v4l2_format)
+#if 0
+#define VIDIOC_G_COMP _IOR ('V', 6, struct v4l2_compression)
+#define VIDIOC_S_COMP _IOW ('V', 7, struct v4l2_compression)
+#endif
+#define VIDIOC_REQBUFS _IOWR ('V', 8, struct v4l2_requestbuffers)
+#define VIDIOC_QUERYBUF _IOWR ('V', 9, struct v4l2_buffer)
+#define VIDIOC_G_FBUF _IOR ('V', 10, struct v4l2_framebuffer)
+#define VIDIOC_S_FBUF _IOW ('V', 11, struct v4l2_framebuffer)
+#define VIDIOC_OVERLAY _IOW ('V', 14, int)
+#define VIDIOC_QBUF _IOWR ('V', 15, struct v4l2_buffer)
+#define VIDIOC_DQBUF _IOWR ('V', 17, struct v4l2_buffer)
+#define VIDIOC_STREAMON _IOW ('V', 18, int)
+#define VIDIOC_STREAMOFF _IOW ('V', 19, int)
+#define VIDIOC_G_PARM _IOWR ('V', 21, struct v4l2_streamparm)
+#define VIDIOC_S_PARM _IOWR ('V', 22, struct v4l2_streamparm)
+#define VIDIOC_G_STD _IOR ('V', 23, v4l2_std_id)
+#define VIDIOC_S_STD _IOW ('V', 24, v4l2_std_id)
+#define VIDIOC_ENUMSTD _IOWR ('V', 25, struct v4l2_standard)
+#define VIDIOC_ENUMINPUT _IOWR ('V', 26, struct v4l2_input)
+#define VIDIOC_G_CTRL _IOWR ('V', 27, struct v4l2_control)
+#define VIDIOC_S_CTRL _IOWR ('V', 28, struct v4l2_control)
+#define VIDIOC_G_TUNER _IOWR ('V', 29, struct v4l2_tuner)
+#define VIDIOC_S_TUNER _IOW ('V', 30, struct v4l2_tuner)
+#define VIDIOC_G_AUDIO _IOR ('V', 33, struct v4l2_audio)
+#define VIDIOC_S_AUDIO _IOW ('V', 34, struct v4l2_audio)
+#define VIDIOC_QUERYCTRL _IOWR ('V', 36, struct v4l2_queryctrl)
+#define VIDIOC_QUERYMENU _IOWR ('V', 37, struct v4l2_querymenu)
+#define VIDIOC_G_INPUT _IOR ('V', 38, int)
+#define VIDIOC_S_INPUT _IOWR ('V', 39, int)
+#define VIDIOC_G_OUTPUT _IOR ('V', 46, int)
+#define VIDIOC_S_OUTPUT _IOWR ('V', 47, int)
+#define VIDIOC_ENUMOUTPUT _IOWR ('V', 48, struct v4l2_output)
+#define VIDIOC_G_AUDOUT _IOR ('V', 49, struct v4l2_audioout)
+#define VIDIOC_S_AUDOUT _IOW ('V', 50, struct v4l2_audioout)
+#define VIDIOC_G_MODULATOR _IOWR ('V', 54, struct v4l2_modulator)
+#define VIDIOC_S_MODULATOR _IOW ('V', 55, struct v4l2_modulator)
+#define VIDIOC_G_FREQUENCY _IOWR ('V', 56, struct v4l2_frequency)
+#define VIDIOC_S_FREQUENCY _IOW ('V', 57, struct v4l2_frequency)
+#define VIDIOC_CROPCAP _IOR ('V', 58, struct v4l2_cropcap)
+#define VIDIOC_G_CROP _IOWR ('V', 59, struct v4l2_crop)
+#define VIDIOC_S_CROP _IOW ('V', 60, struct v4l2_crop)
+#define VIDIOC_G_JPEGCOMP _IOR ('V', 61, struct v4l2_jpegcompression)
+#define VIDIOC_S_JPEGCOMP _IOW ('V', 62, struct v4l2_jpegcompression)
+#define VIDIOC_QUERYSTD _IOR ('V', 63, v4l2_std_id)
+#define VIDIOC_TRY_FMT _IOWR ('V', 64, struct v4l2_format)
+#define VIDIOC_ENUMAUDIO _IOWR ('V', 65, struct v4l2_audio)
+#define VIDIOC_ENUMAUDOUT _IOWR ('V', 66, struct v4l2_audioout)
+#define VIDIOC_G_PRIORITY _IOR ('V', 67, enum v4l2_priority)
+#define VIDIOC_S_PRIORITY _IOW ('V', 68, enum v4l2_priority)
+
+/* for compatibility, will go away some day */
+#define VIDIOC_OVERLAY_OLD _IOWR ('V', 14, int)
+#define VIDIOC_S_PARM_OLD _IOW ('V', 22, struct v4l2_streamparm)
+#define VIDIOC_S_CTRL_OLD _IOW ('V', 28, struct v4l2_control)
+#define VIDIOC_G_AUDIO_OLD _IOWR ('V', 33, struct v4l2_audio)
+#define VIDIOC_G_AUDOUT_OLD _IOWR ('V', 49, struct v4l2_audioout)
+
+#define BASE_VIDIOC_PRIVATE 192 /* 192-255 are private */
+
+
+#ifdef __KERNEL__
+/*
+ *
+ * V 4 L 2 D R I V E R H E L P E R A P I
+ *
+ * Some commonly needed functions for drivers (v4l2-common.o module)
+ */
+#include <linux/fs.h>
+
+/* Video standard functions */
+extern unsigned int v4l2_video_std_fps(struct v4l2_standard *vs);
+extern int v4l2_video_std_construct(struct v4l2_standard *vs,
+ int id, char *name);
+
+/* prority handling */
+struct v4l2_prio_state {
+ atomic_t prios[4];
+};
+int v4l2_prio_init(struct v4l2_prio_state *global);
+int v4l2_prio_change(struct v4l2_prio_state *global, enum v4l2_priority *local,
+ enum v4l2_priority new);
+int v4l2_prio_open(struct v4l2_prio_state *global, enum v4l2_priority *local);
+int v4l2_prio_close(struct v4l2_prio_state *global, enum v4l2_priority *local);
+enum v4l2_priority v4l2_prio_max(struct v4l2_prio_state *global);
+int v4l2_prio_check(struct v4l2_prio_state *global, enum v4l2_priority *local);
+
+/* names for fancy debug output */
+extern char *v4l2_field_names[];
+extern char *v4l2_type_names[];
+extern char *v4l2_ioctl_names[];
+
+/* Compatibility layer interface -- v4l1-compat module */
+typedef int (*v4l2_kioctl)(struct inode *inode, struct file *file,
+ unsigned int cmd, void *arg);
+int v4l_compat_translate_ioctl(struct inode *inode, struct file *file,
+ int cmd, void *arg, v4l2_kioctl driver_ioctl);
+
+#endif /* __KERNEL__ */
+#endif /* __LINUX_VIDEODEV2_H */
+
+/*
+ * Local variables:
+ * c-basic-offset: 8
+ * End:
+ */
diff --git a/kradio3/plugins/v4lradio/po/Makefile.am b/kradio3/plugins/v4lradio/po/Makefile.am
new file mode 100644
index 0000000..6f04af2
--- /dev/null
+++ b/kradio3/plugins/v4lradio/po/Makefile.am
@@ -0,0 +1,3 @@
+
+PACKAGE = kradio-v4lradio
+POFILES = AUTO
diff --git a/kradio3/plugins/v4lradio/po/de.po b/kradio3/plugins/v4lradio/po/de.po
new file mode 100644
index 0000000..718cb19
--- /dev/null
+++ b/kradio3/plugins/v4lradio/po/de.po
@@ -0,0 +1,362 @@
+# translation of de.po to
+# translation of kradio-v4lradio.po to
+# This file is put in the public domain.
+#
+# Ernst Martin Witte <emw@nocabal.de>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-11 18:43+0100\n"
+"PO-Revision-Date: 2006-11-06 00:24+0100\n"
+"Last-Translator: Ernst Martin Witte <emw@nocabal.de>\n"
+"Language-Team: <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. i18n: file v4lradio-configuration-ui.ui line 16
+#: rc.cpp:3 rc.cpp:90 v4lradio-configuration-ui.cpp:328
+#, no-c-format
+msgid "SetupDialogGeneral"
+msgstr "SetupDialogGeneral"
+
+#. i18n: file v4lradio-configuration-ui.ui line 37
+#: rc.cpp:6 rc.cpp:93 v4lradio-configuration-ui.cpp:344
+#, no-c-format
+msgid "Devices"
+msgstr "Geräte"
+
+#. i18n: file v4lradio-configuration-ui.ui line 68
+#: rc.cpp:9 rc.cpp:96 v4lradio-configuration-ui.cpp:329
+#, no-c-format
+msgid "Playback Mixer Device"
+msgstr "Wiedergabe Mixer"
+
+#. i18n: file v4lradio-configuration-ui.ui line 76
+#: rc.cpp:12 rc.cpp:99 v4lradio-configuration-ui.cpp:330
+#, no-c-format
+msgid "Playback Mixer Channel"
+msgstr "Wiedergabe Mixerkanal"
+
+#. i18n: file v4lradio-configuration-ui.ui line 169
+#: rc.cpp:15 rc.cpp:102 v4lradio-configuration-ui.cpp:331
+#, no-c-format
+msgid "Radio Device"
+msgstr "Radio Gerät"
+
+#. i18n: file v4lradio-configuration-ui.ui line 196
+#: rc.cpp:19 rc.cpp:106 v4lradio-configuration-ui.cpp:333
+#, no-c-format
+msgid "Capture Mixer Device"
+msgstr "Aufnahme Mixer"
+
+#. i18n: file v4lradio-configuration-ui.ui line 217
+#: rc.cpp:22 rc.cpp:109 v4lradio-configuration-ui.cpp:334
+#, no-c-format
+msgid "Capture Mixer Channel"
+msgstr "Aufnahme Mixerkanal"
+
+#. i18n: file v4lradio-configuration-ui.ui line 249
+#: rc.cpp:25 rc.cpp:112 v4lradio-configuration-ui.cpp:336
+#, no-c-format
+msgid "test"
+msgstr "test"
+
+#. i18n: file v4lradio-configuration-ui.ui line 269
+#: rc.cpp:28 rc.cpp:115 v4lradio-configuration-ui.cpp:337
+#, no-c-format
+msgid "unknown v4l device"
+msgstr "Unbekanntes V4L-Gerät"
+
+#. i18n: file v4lradio-configuration-ui.ui line 315
+#: rc.cpp:31 rc.cpp:118 v4lradio-configuration-ui.cpp:338
+#, no-c-format
+msgid "Use active pla&yback by capturing"
+msgstr "Aktive &Wiedergabe verwenden (Aufgenommenes abspielen)"
+
+#. i18n: file v4lradio-configuration-ui.ui line 318
+#: rc.cpp:34 rc.cpp:121 v4lradio-configuration-ui.cpp:339
+#, no-c-format
+msgid "Alt+Y"
+msgstr "Alt+Y"
+
+#. i18n: file v4lradio-configuration-ui.ui line 334
+#: rc.cpp:37 rc.cpp:124 v4lradio-configuration-ui.cpp:340
+#, no-c-format
+msgid "Mute Play&back Channel on Power Off"
+msgstr "Wiedergabekanal beim Abschalten des Radios stummschalten"
+
+#. i18n: file v4lradio-configuration-ui.ui line 337
+#: rc.cpp:40 rc.cpp:127 v4lradio-configuration-ui.cpp:341
+#, no-c-format
+msgid "Alt+B"
+msgstr "Alt+B"
+
+#. i18n: file v4lradio-configuration-ui.ui line 353
+#: rc.cpp:43 rc.cpp:130 v4lradio-configuration-ui.cpp:342
+#, no-c-format
+msgid "Set Playback Channel Volume to &Zero on Power Off"
+msgstr "Wiedergabelautstärke beim Abschalten des Radios auf 0 setzen"
+
+#. i18n: file v4lradio-configuration-ui.ui line 356
+#: rc.cpp:46 rc.cpp:133 v4lradio-configuration-ui.cpp:343
+#, no-c-format
+msgid "Alt+Z"
+msgstr "Alt+Z"
+
+#. i18n: file v4lradio-configuration-ui.ui line 394
+#: rc.cpp:52 rc.cpp:139 v4lradio-configuration-ui.cpp:345
+#, no-c-format
+msgid "to"
+msgstr "bis"
+
+#. i18n: file v4lradio-configuration-ui.ui line 413
+#. i18n: file v4lradio-configuration-ui.ui line 443
+#. i18n: file v4lradio-configuration-ui.ui line 479
+#. i18n: file v4lradio-configuration-ui.ui line 413
+#. i18n: file v4lradio-configuration-ui.ui line 443
+#. i18n: file v4lradio-configuration-ui.ui line 479
+#: rc.cpp:55 rc.cpp:58 rc.cpp:64 rc.cpp:142 rc.cpp:145 rc.cpp:151
+#: v4lradio-configuration-ui.cpp:346 v4lradio-configuration-ui.cpp:347
+#: v4lradio-configuration-ui.cpp:349
+#, no-c-format
+msgid " kHz"
+msgstr " kHz"
+
+#. i18n: file v4lradio-configuration-ui.ui line 460
+#: rc.cpp:61 rc.cpp:148 v4lradio-configuration-ui.cpp:348
+#, no-c-format
+msgid "minimum signal quality"
+msgstr "Mindest-Signalpegel"
+
+#. i18n: file v4lradio-configuration-ui.ui line 499
+#: rc.cpp:67 rc.cpp:154 v4lradio-configuration-ui.cpp:350
+#, no-c-format
+msgid "station scan step"
+msgstr "Sendersuchschrittweite"
+
+#. i18n: file v4lradio-configuration-ui.ui line 507
+#: rc.cpp:70 rc.cpp:157 v4lradio-configuration-ui.cpp:351
+#, no-c-format
+msgid "allowed frequency range"
+msgstr "erlaubter Frequenzbereich"
+
+#. i18n: file v4lradio-configuration-ui.ui line 566
+#: rc.cpp:75 rc.cpp:162 v4lradio-configuration-ui.cpp:359
+#, no-c-format
+msgid "V4L Mixer Controls"
+msgstr "V4L Mixersteuerung"
+
+#. i18n: file v4lradio-configuration-ui.ui line 594
+#: rc.cpp:78 rc.cpp:165 v4lradio-configuration-ui.cpp:355
+#, no-c-format
+msgid "volume"
+msgstr "Lautstärke"
+
+#. i18n: file v4lradio-configuration-ui.ui line 684
+#: rc.cpp:81 rc.cpp:168 v4lradio-configuration-ui.cpp:356
+#, no-c-format
+msgid "treble"
+msgstr "Höhen"
+
+#. i18n: file v4lradio-configuration-ui.ui line 774
+#: rc.cpp:84 rc.cpp:171 v4lradio-configuration-ui.cpp:357
+#, no-c-format
+msgid "bass"
+msgstr "Tiefen"
+
+#. i18n: file v4lradio-configuration-ui.ui line 861
+#: rc.cpp:87 rc.cpp:174 v4lradio-configuration-ui.cpp:358
+#, no-c-format
+msgid "balance"
+msgstr "Balance"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Ernst Martin Witte"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "emw@nocabal.de"
+
+#: v4lradio-configuration.cpp:443
+msgid "any ( * )"
+msgstr "Alle ( * )"
+
+#: v4lradio-configuration.cpp:445
+msgid "Radio Device Selection"
+msgstr "Auswahl der Radio-Gerätedatei"
+
+#: v4lradio-configuration.cpp:448
+msgid "Select Radio Device"
+msgstr "Wählen Sie die Radio-Gerätedatei aus"
+
+#: v4lradio.cpp:56
+msgid "Support for V4L(2) Radio Devices"
+msgstr "Unterstützung für V4L(2)-Radiogeräte"
+
+#: v4lradio.cpp:61
+msgid "Video For Linux Plugin"
+msgstr "Video für Linux (V4L) Plugin"
+
+#: v4lradio.cpp:659
+msgid "invalid frequency %1"
+msgstr "ungültige Frequenz: %1"
+
+#: v4lradio.cpp:680 v4lradio.cpp:1358 v4lradio.cpp:1507
+msgid "don't known how to handle V4L-version %1"
+msgstr "Keine Ahnung, wie die V4L-Version %1 behandelt werden soll"
+
+#: v4lradio.cpp:686
+msgid "error setting frequency to %1 (%2)"
+msgstr "Fehler (%2) beim Einstellen der Frequenz auf %1."
+
+#: v4lradio.cpp:1004
+msgid ""
+"Device %1 does exist but is not readable/writable. Please check device "
+"permissions."
+msgstr ""
+"Das Gerät %1 existiert, ist aber nicht lesbar/schreibbar. Bitte überprüfen "
+"Sie die Einstellung der Zugriffsrechte für das Gerät."
+
+#: v4lradio.cpp:1014
+msgid "Could not find an accessible v4l(2) radio device."
+msgstr "Kann kein verwendbares V4L(2)-Radiogerät finden."
+
+#: v4lradio.cpp:1077
+msgid "V4L Radio"
+msgstr "V4L Radio"
+
+#: v4lradio.cpp:1078
+msgid "V4L Radio Options"
+msgstr "Optionen des V4L-Radios"
+
+#: v4lradio.cpp:1088
+msgid ""
+"V4L/V4L2 Plugin for KRadio.<P>Provides Support for V4L/V4L2 based Radio "
+"Cards<P>"
+msgstr ""
+"V4L/V4L2-Plugin für KRadio.<P>Dieses Plugin bindet vom V4L/V4L2-Treiber "
+"unterstützte Radio-Karten in KRadio ein.<P>"
+
+#: v4lradio.cpp:1103
+msgid "V4L/V4L2"
+msgstr "V4L/V4L2"
+
+#: v4lradio.cpp:1104
+msgid "V4L/V4L2 Plugin"
+msgstr "V4L/V4L2-Plugin"
+
+#: v4lradio.cpp:1135
+msgid "Cannot open radio device %1"
+msgstr "Die Radiogerätedatei %1 kann nicht geöffnet werden"
+
+#: v4lradio.cpp:1186
+msgid "cannot open %1"
+msgstr "%1 kann nicht geöffnet werden"
+
+#: v4lradio.cpp:1210
+msgid "audio caps = %1"
+msgstr "Audio-Fähigkeiten: %1"
+
+#: v4lradio.cpp:1224
+msgid "error reading V4L1 caps"
+msgstr "Fehler beim Lesen der V4L1-Fähigkeiten"
+
+#: v4lradio.cpp:1233
+msgid "V4L2 - Version: %1"
+msgstr "V4L2 - Version: %1"
+
+#: v4lradio.cpp:1253
+msgid "V4L2: Querying mute control failed"
+msgstr "V4L2: Die Abfrage des Stummschaltungs-Reglers schlug fehl"
+
+#: v4lradio.cpp:1260
+msgid "V4L2: Querying volume control failed"
+msgstr "V4L2: Die Abfrage des Lautstärke-Reglers schlug fehl"
+
+#: v4lradio.cpp:1268
+msgid "V4L2: Querying treble control failed"
+msgstr "V4L2: Die Abfrage des Höhen-Reglers schlug fehl"
+
+#: v4lradio.cpp:1276
+msgid "V4L2: Querying bass control failed"
+msgstr "V4L2: Die Abfrage des Bass-Reglers schlug fehl"
+
+#: v4lradio.cpp:1284
+msgid "V4L2: Querying balance control failed"
+msgstr "V4L2: Die Abfrage des Balance-Reglers schlug fehl"
+
+#: v4lradio.cpp:1288
+msgid "V4LRadio::readV4LCaps: Reading V4L2 caps failed"
+msgstr "V4LRadio::readV4LCaps: Das Lesen der V4L2-Fähigkeiten schlug fehl"
+
+#: v4lradio.cpp:1292
+msgid "V4L %1 detected"
+msgstr "V4L %1 wurde gefunden"
+
+#: v4lradio.cpp:1294
+msgid "V4L not detected"
+msgstr "Das Radiogerät unterstützt V4L nicht"
+
+#: v4lradio.cpp:1297
+msgid "Radio is mutable"
+msgstr "Das Radio kann stummgeschaltet werden"
+
+#: v4lradio.cpp:1297
+msgid "Radio is not mutable"
+msgstr "Das Radio kann nicht stummgeschaltet werden"
+
+#: v4lradio.cpp:1298
+msgid "Radio has Volume Control"
+msgstr "Das Radio hat einen Lautstärkeregler"
+
+#: v4lradio.cpp:1298
+msgid "Radio has no Volume Control"
+msgstr "Das Radio hat keinen Lautstärkeregler"
+
+#: v4lradio.cpp:1299
+msgid "Radio has Bass Control"
+msgstr "Das Radio hat einen Bass-Regler"
+
+#: v4lradio.cpp:1299
+msgid "Radio has no Bass Control"
+msgstr "Das Radio hat keinen Bass-Regler"
+
+#: v4lradio.cpp:1300
+msgid "Radio has Treble Control"
+msgstr "Das Radio hat einen Höhen-Regler"
+
+#: v4lradio.cpp:1300
+msgid "Radio has no Treble Control"
+msgstr "Das Radio hat keinen Bass-Regler"
+
+#: v4lradio.cpp:1365
+msgid "cannot get tuner info (error %1)"
+msgstr "Tuner-Informationen können nicht gelesen werden (Fehler %1)"
+
+#: v4lradio.cpp:1409
+msgid "error setting %1: %2"
+msgstr "Fehler %2 beim Setzen von %1"
+
+#: v4lradio.cpp:1417
+msgid "error reading %1: %2"
+msgstr "Fehler %2 beim Lesen von %1"
+
+#: v4lradio.cpp:1513
+msgid "error updating radio audio info (%1): %2"
+msgstr "Fehler %2 beim Updaten der Audio-Informationen (%1)"
+
+#: v4lradio.cpp:1514
+msgid "write"
+msgstr "Schreiben"
+
+#: v4lradio.cpp:1514
+msgid "read"
+msgstr "Lesen"
diff --git a/kradio3/plugins/v4lradio/po/ru.po b/kradio3/plugins/v4lradio/po/ru.po
new file mode 100644
index 0000000..dc57522
--- /dev/null
+++ b/kradio3/plugins/v4lradio/po/ru.po
@@ -0,0 +1,362 @@
+# translation of ru.po to
+# translation of kradio-v4lradio.po to
+# This file is put in the public domain.
+# Алексей Кузнецов <Alexey.Kouznetsov@GMail.com>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-11 18:43+0100\n"
+"PO-Revision-Date: 2006-11-08 11:59+0300\n"
+"Last-Translator: Алексей Кузнецов <Alexey.Kouznetsov@GMail.com>\n"
+"Language-Team: <ru@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10\n"
+
+#. i18n: file v4lradio-configuration-ui.ui line 16
+#: rc.cpp:3 rc.cpp:90 v4lradio-configuration-ui.cpp:328
+#, no-c-format
+msgid "SetupDialogGeneral"
+msgstr "SetupDialogGeneral"
+
+#. i18n: file v4lradio-configuration-ui.ui line 37
+#: rc.cpp:6 rc.cpp:93 v4lradio-configuration-ui.cpp:344
+#, no-c-format
+msgid "Devices"
+msgstr "Устройства"
+
+#. i18n: file v4lradio-configuration-ui.ui line 68
+#: rc.cpp:9 rc.cpp:96 v4lradio-configuration-ui.cpp:329
+#, no-c-format
+msgid "Playback Mixer Device"
+msgstr "Устройство воспроизведения"
+
+#. i18n: file v4lradio-configuration-ui.ui line 76
+#: rc.cpp:12 rc.cpp:99 v4lradio-configuration-ui.cpp:330
+#, no-c-format
+msgid "Playback Mixer Channel"
+msgstr "Канал воспроизведения"
+
+#. i18n: file v4lradio-configuration-ui.ui line 169
+#: rc.cpp:15 rc.cpp:102 v4lradio-configuration-ui.cpp:331
+#, no-c-format
+msgid "Radio Device"
+msgstr "Устройство радио"
+
+#. i18n: file v4lradio-configuration-ui.ui line 196
+#: rc.cpp:19 rc.cpp:106 v4lradio-configuration-ui.cpp:333
+#, no-c-format
+msgid "Capture Mixer Device"
+msgstr "Устройство записи"
+
+#. i18n: file v4lradio-configuration-ui.ui line 217
+#: rc.cpp:22 rc.cpp:109 v4lradio-configuration-ui.cpp:334
+#, no-c-format
+msgid "Capture Mixer Channel"
+msgstr "Канал записи"
+
+#. i18n: file v4lradio-configuration-ui.ui line 249
+#: rc.cpp:25 rc.cpp:112 v4lradio-configuration-ui.cpp:336
+#, no-c-format
+msgid "test"
+msgstr "проверка"
+
+#. i18n: file v4lradio-configuration-ui.ui line 269
+#: rc.cpp:28 rc.cpp:115 v4lradio-configuration-ui.cpp:337
+#, no-c-format
+msgid "unknown v4l device"
+msgstr "неизвестно"
+
+#. i18n: file v4lradio-configuration-ui.ui line 315
+#: rc.cpp:31 rc.cpp:118 v4lradio-configuration-ui.cpp:338
+#, no-c-format
+msgid "Use active pla&yback by capturing"
+msgstr "Захватывать звук и затем проигрывать его"
+
+#. i18n: file v4lradio-configuration-ui.ui line 318
+#: rc.cpp:34 rc.cpp:121 v4lradio-configuration-ui.cpp:339
+#, no-c-format
+msgid "Alt+Y"
+msgstr "Alt+Y"
+
+#. i18n: file v4lradio-configuration-ui.ui line 334
+#: rc.cpp:37 rc.cpp:124 v4lradio-configuration-ui.cpp:340
+#, no-c-format
+msgid "Mute Play&back Channel on Power Off"
+msgstr "Выключать звук на канале воспроизведения при выходе"
+
+#. i18n: file v4lradio-configuration-ui.ui line 337
+#: rc.cpp:40 rc.cpp:127 v4lradio-configuration-ui.cpp:341
+#, no-c-format
+msgid "Alt+B"
+msgstr "Alt+B"
+
+#. i18n: file v4lradio-configuration-ui.ui line 353
+#: rc.cpp:43 rc.cpp:130 v4lradio-configuration-ui.cpp:342
+#, no-c-format
+msgid "Set Playback Channel Volume to &Zero on Power Off"
+msgstr "Устанавливать &нулевую громкость воспроизведения при выходе"
+
+#. i18n: file v4lradio-configuration-ui.ui line 356
+#: rc.cpp:46 rc.cpp:133 v4lradio-configuration-ui.cpp:343
+#, no-c-format
+msgid "Alt+Z"
+msgstr "Alt+Z"
+
+#. i18n: file v4lradio-configuration-ui.ui line 394
+#: rc.cpp:52 rc.cpp:139 v4lradio-configuration-ui.cpp:345
+#, no-c-format
+msgid "to"
+msgstr "до"
+
+#. i18n: file v4lradio-configuration-ui.ui line 413
+#. i18n: file v4lradio-configuration-ui.ui line 443
+#. i18n: file v4lradio-configuration-ui.ui line 479
+#. i18n: file v4lradio-configuration-ui.ui line 413
+#. i18n: file v4lradio-configuration-ui.ui line 443
+#. i18n: file v4lradio-configuration-ui.ui line 479
+#: rc.cpp:55 rc.cpp:58 rc.cpp:64 rc.cpp:142 rc.cpp:145 rc.cpp:151
+#: v4lradio-configuration-ui.cpp:346 v4lradio-configuration-ui.cpp:347
+#: v4lradio-configuration-ui.cpp:349
+#, no-c-format
+msgid " kHz"
+msgstr " кГц"
+
+#. i18n: file v4lradio-configuration-ui.ui line 460
+#: rc.cpp:61 rc.cpp:148 v4lradio-configuration-ui.cpp:348
+#, no-c-format
+msgid "minimum signal quality"
+msgstr "Минимальный уровень сигнала"
+
+#. i18n: file v4lradio-configuration-ui.ui line 499
+#: rc.cpp:67 rc.cpp:154 v4lradio-configuration-ui.cpp:350
+#, no-c-format
+msgid "station scan step"
+msgstr "Шаг изменения частоты при поиске"
+
+#. i18n: file v4lradio-configuration-ui.ui line 507
+#: rc.cpp:70 rc.cpp:157 v4lradio-configuration-ui.cpp:351
+#, no-c-format
+msgid "allowed frequency range"
+msgstr "Допустимый частотный диапазон:\tот"
+
+#. i18n: file v4lradio-configuration-ui.ui line 566
+#: rc.cpp:75 rc.cpp:162 v4lradio-configuration-ui.cpp:359
+#, no-c-format
+msgid "V4L Mixer Controls"
+msgstr "Аппаратные регуляторы V4l"
+
+#. i18n: file v4lradio-configuration-ui.ui line 594
+#: rc.cpp:78 rc.cpp:165 v4lradio-configuration-ui.cpp:355
+#, no-c-format
+msgid "volume"
+msgstr "Громкость"
+
+#. i18n: file v4lradio-configuration-ui.ui line 684
+#: rc.cpp:81 rc.cpp:168 v4lradio-configuration-ui.cpp:356
+#, no-c-format
+msgid "treble"
+msgstr "ВЧ"
+
+#. i18n: file v4lradio-configuration-ui.ui line 774
+#: rc.cpp:84 rc.cpp:171 v4lradio-configuration-ui.cpp:357
+#, no-c-format
+msgid "bass"
+msgstr "НЧ"
+
+#. i18n: file v4lradio-configuration-ui.ui line 861
+#: rc.cpp:87 rc.cpp:174 v4lradio-configuration-ui.cpp:358
+#, no-c-format
+msgid "balance"
+msgstr "Стереобаланс"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Алексей Кузнецов"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "Alexey.Kouznetsov@GMail.com"
+
+#: v4lradio-configuration.cpp:443
+msgid "any ( * )"
+msgstr "Все ( * )"
+
+#: v4lradio-configuration.cpp:445
+msgid "Radio Device Selection"
+msgstr "Выбор устройства радио"
+
+#: v4lradio-configuration.cpp:448
+msgid "Select Radio Device"
+msgstr "Выберите устройство радиоприёмника"
+
+#: v4lradio.cpp:56
+msgid "Support for V4L(2) Radio Devices"
+msgstr "Поддержка устройств V4l(2)"
+
+#: v4lradio.cpp:61
+msgid "Video For Linux Plugin"
+msgstr "Модуль \"Видео для linux\""
+
+#: v4lradio.cpp:659
+msgid "invalid frequency %1"
+msgstr "Неправильная частота %1"
+
+#: v4lradio.cpp:680 v4lradio.cpp:1358 v4lradio.cpp:1507
+msgid "don't known how to handle V4L-version %1"
+msgstr "Не знаю что делать с версией V4l \"%1\""
+
+#: v4lradio.cpp:686
+msgid "error setting frequency to %1 (%2)"
+msgstr "Ошибка установки частоты %1 (%2)"
+
+#: v4lradio.cpp:1004
+msgid ""
+"Device %1 does exist but is not readable/writable. Please check device "
+"permissions."
+msgstr ""
+"Устройство %1 недоступно для чтения/записи. Проверьте права на устройство, а "
+"также не использует ли его другая программа."
+
+#: v4lradio.cpp:1014
+msgid "Could not find an accessible v4l(2) radio device."
+msgstr "Не найти доступное устройство V4l(2)."
+
+#: v4lradio.cpp:1077
+msgid "V4L Radio"
+msgstr "Радио V4l"
+
+#: v4lradio.cpp:1078
+msgid "V4L Radio Options"
+msgstr "Параметры устройства V4l"
+
+#: v4lradio.cpp:1088
+msgid ""
+"V4L/V4L2 Plugin for KRadio.<P>Provides Support for V4L/V4L2 based Radio "
+"Cards<P>"
+msgstr ""
+"Модуль V4l/V4l2 для KRadio. <P> Предоставляет поддержку плат радио, "
+"совместимых с V4l/V4l2<P>"
+
+#: v4lradio.cpp:1103
+msgid "V4L/V4L2"
+msgstr "V4L/V4LV2"
+
+#: v4lradio.cpp:1104
+msgid "V4L/V4L2 Plugin"
+msgstr "Модуль V4L/V4L2"
+
+#: v4lradio.cpp:1135
+msgid "Cannot open radio device %1"
+msgstr "Не могу открыть устройство радио: %1"
+
+#: v4lradio.cpp:1186
+msgid "cannot open %1"
+msgstr "Не могу открыть %1"
+
+#: v4lradio.cpp:1210
+msgid "audio caps = %1"
+msgstr "возможности звука = %1"
+
+#: v4lradio.cpp:1224
+msgid "error reading V4L1 caps"
+msgstr "Ошибка чтения возможностей V4l1"
+
+#: v4lradio.cpp:1233
+msgid "V4L2 - Version: %1"
+msgstr "Версия V4l2: %1"
+
+#: v4lradio.cpp:1253
+msgid "V4L2: Querying mute control failed"
+msgstr "V4L2: Не могу обратиться к выключателю звука платы"
+
+#: v4lradio.cpp:1260
+msgid "V4L2: Querying volume control failed"
+msgstr "V4L2: Не могу обратиться к регулятору громкости"
+
+#: v4lradio.cpp:1268
+msgid "V4L2: Querying treble control failed"
+msgstr "V4L2: Не могу обратиться к регулятору верхних частот"
+
+#: v4lradio.cpp:1276
+msgid "V4L2: Querying bass control failed"
+msgstr "V4L2: Не могу обратиться к регулятору нижних частот"
+
+#: v4lradio.cpp:1284
+msgid "V4L2: Querying balance control failed"
+msgstr "V4L2: Не могу обратиться к регулятору стереобаланса"
+
+#: v4lradio.cpp:1288
+msgid "V4LRadio::readV4LCaps: Reading V4L2 caps failed"
+msgstr "V4LRadio::readV4LCaps:Не могу узнать возможности устройства"
+
+#: v4lradio.cpp:1292
+msgid "V4L %1 detected"
+msgstr "Найдено устройство V4L: %1"
+
+#: v4lradio.cpp:1294
+msgid "V4L not detected"
+msgstr "Устройств V4L не обнаружено"
+
+#: v4lradio.cpp:1297
+msgid "Radio is mutable"
+msgstr "Радио не поддерживает выключения звука"
+
+#: v4lradio.cpp:1297
+msgid "Radio is not mutable"
+msgstr "Радио поддерживает выключение звука"
+
+#: v4lradio.cpp:1298
+msgid "Radio has Volume Control"
+msgstr "Есть регулировка громкости"
+
+#: v4lradio.cpp:1298
+msgid "Radio has no Volume Control"
+msgstr "Регулировки громкости нет"
+
+#: v4lradio.cpp:1299
+msgid "Radio has Bass Control"
+msgstr "Есть регулировка НЧ"
+
+#: v4lradio.cpp:1299
+msgid "Radio has no Bass Control"
+msgstr "Регулировки НЧ нет"
+
+#: v4lradio.cpp:1300
+msgid "Radio has Treble Control"
+msgstr "Есть регулировка ВЧ"
+
+#: v4lradio.cpp:1300
+msgid "Radio has no Treble Control"
+msgstr "Регулировки ВЧ нет"
+
+#: v4lradio.cpp:1365
+msgid "cannot get tuner info (error %1)"
+msgstr "Не могу получить информацию о тюнере (код ошибки %1)"
+
+#: v4lradio.cpp:1409
+msgid "error setting %1: %2"
+msgstr "Ошибка установки %1: %2"
+
+#: v4lradio.cpp:1417
+msgid "error reading %1: %2"
+msgstr "Ошибка чтения %1: %2"
+
+#: v4lradio.cpp:1513
+msgid "error updating radio audio info (%1): %2"
+msgstr "Ошибка %1: %2"
+
+#: v4lradio.cpp:1514
+msgid "write"
+msgstr "запись"
+
+#: v4lradio.cpp:1514
+msgid "read"
+msgstr "чтение"
diff --git a/kradio3/plugins/v4lradio/v4lcfg_interfaces.cpp b/kradio3/plugins/v4lradio/v4lcfg_interfaces.cpp
new file mode 100644
index 0000000..c679c76
--- /dev/null
+++ b/kradio3/plugins/v4lradio/v4lcfg_interfaces.cpp
@@ -0,0 +1,193 @@
+/***************************************************************************
+ v4lradio_interfaces.cpp - description
+ -------------------
+ begin : Sam Jun 21 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include <linux/soundcard.h>
+#include "v4lcfg_interfaces.h"
+
+///////////////////////////////////////////////////////////////////////
+
+V4LCaps::V4LCaps()
+ : version(0),
+ description(QString::null),
+ hasMute(false),
+ hasVolume(false),
+ minVolume(0),
+ maxVolume(65535),
+ hasTreble(false),
+ minTreble(0),
+ maxTreble(65535),
+ hasBass(false),
+ minBass(0),
+ maxBass(65535),
+ hasBalance(false),
+ minBalance(0),
+ maxBalance(65535)
+{
+}
+
+
+V4LCaps::V4LCaps(const V4LCaps &c)
+ : version(c.version),
+ description(c.description),
+ hasMute(c.hasMute),
+ hasVolume(c.hasVolume),
+ minVolume(c.minVolume),
+ maxVolume(c.maxVolume),
+ hasTreble(c.hasTreble),
+ minTreble(c.minTreble),
+ maxTreble(c.maxTreble),
+ hasBass(c.hasBass),
+ minBass(c.minBass),
+ maxBass(c.maxBass),
+ hasBalance(c.hasBalance),
+ minBalance(c.minBalance),
+ maxBalance(c.maxBalance)
+{
+}
+
+
+// IV4LCfg
+
+IF_IMPL_SENDER ( IV4LCfg::notifyRadioDeviceChanged(const QString &s),
+ noticeRadioDeviceChanged(s)
+ )
+IF_IMPL_SENDER ( IV4LCfg::notifyPlaybackMixerChanged(const QString &s, const QString &Channel),
+ noticePlaybackMixerChanged(s, Channel)
+ )
+IF_IMPL_SENDER ( IV4LCfg::notifyCaptureMixerChanged(const QString &s, const QString &Channel),
+ noticeCaptureMixerChanged(s, Channel)
+ )
+IF_IMPL_SENDER ( IV4LCfg::notifyDeviceVolumeChanged(float v),
+ noticeDeviceVolumeChanged(v)
+ )
+IF_IMPL_SENDER ( IV4LCfg::notifyCapabilitiesChanged(const V4LCaps &c),
+ noticeCapabilitiesChanged(c)
+ )
+
+IF_IMPL_SENDER ( IV4LCfg::notifyActivePlaybackChanged(bool a),
+ noticeActivePlaybackChanged(a)
+ )
+
+IF_IMPL_SENDER ( IV4LCfg::notifyMuteOnPowerOffChanged(bool a),
+ noticeMuteOnPowerOffChanged(a)
+ )
+
+IF_IMPL_SENDER ( IV4LCfg::notifyVolumeZeroOnPowerOffChanged(bool a),
+ noticeVolumeZeroOnPowerOffChanged(a)
+ )
+// IV4LCfgClient
+
+IF_IMPL_SENDER ( IV4LCfgClient::sendRadioDevice (const QString &s),
+ setRadioDevice(s)
+ )
+IF_IMPL_SENDER ( IV4LCfgClient::sendPlaybackMixer(const QString &s, const QString &ch),
+ setPlaybackMixer(s, ch)
+ )
+IF_IMPL_SENDER ( IV4LCfgClient::sendCaptureMixer(const QString &s, const QString &ch),
+ setCaptureMixer(s, ch)
+ )
+IF_IMPL_SENDER ( IV4LCfgClient::sendDeviceVolume(float v),
+ setDeviceVolume(v)
+ )
+
+IF_IMPL_SENDER ( IV4LCfgClient::sendActivePlayback(bool a),
+ setActivePlayback(a)
+ )
+
+IF_IMPL_SENDER ( IV4LCfgClient::sendMuteOnPowerOff(bool a),
+ setMuteOnPowerOff(a)
+ )
+
+IF_IMPL_SENDER ( IV4LCfgClient::sendVolumeZeroOnPowerOff(bool a),
+ setVolumeZeroOnPowerOff(a)
+ )
+
+static QString defaultRDev("/dev/radio");
+// static QString defaultMDev("/dev/mixer");
+
+IF_IMPL_QUERY ( const QString &IV4LCfgClient::queryRadioDevice (),
+ getRadioDevice(),
+ defaultRDev
+ )
+IF_IMPL_QUERY ( const QString &IV4LCfgClient::queryPlaybackMixerID (),
+ getPlaybackMixerID(),
+ QString::null
+ )
+IF_IMPL_QUERY ( const QString &IV4LCfgClient::queryCaptureMixerID (),
+ getCaptureMixerID(),
+ QString::null
+ )
+
+static const QString channel_line("Line");
+IF_IMPL_QUERY ( const QString &IV4LCfgClient::queryPlaybackMixerChannel(),
+ getPlaybackMixerChannel(),
+ channel_line
+ )
+IF_IMPL_QUERY ( const QString &IV4LCfgClient::queryCaptureMixerChannel(),
+ getCaptureMixerChannel(),
+ channel_line
+ )
+IF_IMPL_QUERY ( float IV4LCfgClient::queryDeviceVolume (),
+ getDeviceVolume(),
+ 0.0
+ )
+IF_IMPL_QUERY ( V4LCaps IV4LCfgClient::queryCapabilities(QString dev),
+ getCapabilities(dev),
+ V4LCaps()
+ )
+
+IF_IMPL_QUERY ( bool IV4LCfgClient::queryActivePlayback(),
+ getActivePlayback(),
+ false
+ )
+
+IF_IMPL_QUERY ( bool IV4LCfgClient::queryMuteOnPowerOff(),
+ getMuteOnPowerOff(),
+ false
+ )
+
+IF_IMPL_QUERY ( bool IV4LCfgClient::queryVolumeZeroOnPowerOff(),
+ getVolumeZeroOnPowerOff(),
+ false
+ )
+
+void IV4LCfgClient::noticeConnectedI (cmplInterface *, bool /*pointer_valid*/)
+{
+ noticeRadioDeviceChanged(queryRadioDevice());
+ noticePlaybackMixerChanged(queryPlaybackMixerID(), queryPlaybackMixerChannel());
+ noticeCaptureMixerChanged (queryCaptureMixerID(), queryCaptureMixerChannel());
+ noticeDeviceVolumeChanged(queryDeviceVolume());
+ noticeCapabilitiesChanged(queryCapabilities());
+ noticeActivePlaybackChanged(queryActivePlayback());
+ noticeMuteOnPowerOffChanged(queryMuteOnPowerOff());
+ noticeVolumeZeroOnPowerOffChanged(queryVolumeZeroOnPowerOff());
+}
+
+
+void IV4LCfgClient::noticeDisconnectedI (cmplInterface *, bool /*pointer_valid*/)
+{
+ noticeRadioDeviceChanged(queryRadioDevice());
+ noticePlaybackMixerChanged(queryPlaybackMixerID(), queryPlaybackMixerChannel());
+ noticeCaptureMixerChanged (queryCaptureMixerID(), queryCaptureMixerChannel());
+ noticeDeviceVolumeChanged(queryDeviceVolume());
+ noticeCapabilitiesChanged(queryCapabilities());
+ noticeActivePlaybackChanged(queryActivePlayback());
+ noticeMuteOnPowerOffChanged(queryMuteOnPowerOff());
+ noticeVolumeZeroOnPowerOffChanged(queryVolumeZeroOnPowerOff());
+}
+
+
diff --git a/kradio3/plugins/v4lradio/v4lcfg_interfaces.h b/kradio3/plugins/v4lradio/v4lcfg_interfaces.h
new file mode 100644
index 0000000..f2e1032
--- /dev/null
+++ b/kradio3/plugins/v4lradio/v4lcfg_interfaces.h
@@ -0,0 +1,151 @@
+/***************************************************************************
+ v4lradio_interfaces.h - description
+ -------------------
+ begin : Sam Jun 21 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_V4LCFG_INTERFACES_H
+#define KRADIO_V4LCFG_INTERFACES_H
+
+#include "../../src/include/interfaces.h"
+#include "math.h"
+
+struct V4LCaps
+{
+ int version;
+ QString description;
+
+ bool hasMute;
+
+ bool hasVolume;
+ int minVolume, maxVolume;
+ bool hasTreble;
+ int minTreble, maxTreble;
+ bool hasBass;
+ int minBass, maxBass;
+ bool hasBalance;
+ int minBalance, maxBalance;
+
+ V4LCaps();
+ V4LCaps(const V4LCaps &);
+
+ float volumeStep() const { return 1.0 / (float)(maxVolume - minVolume); }
+ float trebleStep() const { return 1.0 / (float)(maxTreble - minTreble); }
+ float bassStep() const { return 1.0 / (float)(maxBass - minBass); }
+ float balanceStep() const { return 1.0 / (float)(maxBalance - minBalance); }
+
+ void setVolume (int min, int max) { hasVolume = true; minVolume = min; maxVolume = max; }
+ void setTreble (int min, int max) { hasTreble = true; minTreble = min; maxTreble = max; }
+ void setBass (int min, int max) { hasBass = true; minBass = min; maxBass = max; }
+ void setBalance(int min, int max) { hasBalance = true; minBalance = min; maxBalance = max; }
+
+ void unsetVolume () { hasVolume = false; minVolume = 0; maxVolume = 65535; }
+ void unsetTreble () { hasTreble = false; minTreble = 0; maxTreble = 65535; }
+ void unsetBass () { hasBass = false; minBass = 0; maxBass = 65535; }
+ void unsetBalance() { hasBalance = false; minBalance = 0; maxBalance = 65535; }
+
+ int intGetVolume (float f) const { return (int)rint(minVolume + (maxVolume - minVolume ) * f); }
+ int intGetTreble (float f) const { return (int)rint(minTreble + (maxTreble - minTreble ) * f); }
+ int intGetBass (float f) const { return (int)rint(minBass + (maxBass - minBass ) * f); }
+ int intGetBalance(float f) const { return (int)rint(minBalance + (maxBalance - minBalance) / 2.0 * (1.0 + f)); }
+
+ float floatGetVolume (int i) const { return (float)(i - minVolume) * volumeStep(); }
+ float floatGetTreble (int i) const { return (float)(i - minTreble) * trebleStep(); }
+ float floatGetBass (int i) const { return (float)(i - minBass ) * bassStep(); }
+ float floatGetBalance(int i) const { return (float)(i - minBalance) * balanceStep() * 2.0 - 1.0; }
+};
+
+
+
+INTERFACE(IV4LCfg, IV4LCfgClient)
+{
+public:
+ IF_CON_DESTRUCTOR(IV4LCfg, -1)
+
+RECEIVERS:
+ IF_RECEIVER( setRadioDevice (const QString &s) )
+ IF_RECEIVER( setPlaybackMixer(const QString &soundStreamClientID, const QString &ch) )
+ IF_RECEIVER( setCaptureMixer (const QString &soundStreamClientID, const QString &ch) )
+ IF_RECEIVER( setDeviceVolume(float v) )
+ IF_RECEIVER( setActivePlayback(bool a) )
+ IF_RECEIVER( setMuteOnPowerOff(bool m) )
+ IF_RECEIVER( setVolumeZeroOnPowerOff(bool m) )
+
+SENDERS:
+ IF_SENDER ( notifyRadioDeviceChanged (const QString &s) )
+ IF_SENDER ( notifyPlaybackMixerChanged(const QString &soundStreamClientID, const QString &Channel) )
+ IF_SENDER ( notifyCaptureMixerChanged (const QString &soundStreamClientID, const QString &Channel) )
+ IF_SENDER ( notifyDeviceVolumeChanged (float v) )
+ IF_SENDER ( notifyCapabilitiesChanged (const V4LCaps &) )
+ IF_SENDER ( notifyActivePlaybackChanged (bool a) )
+ IF_SENDER ( notifyMuteOnPowerOffChanged (bool a) )
+ IF_SENDER ( notifyVolumeZeroOnPowerOffChanged (bool a) )
+
+ANSWERS:
+ IF_ANSWER ( const QString &getRadioDevice () const )
+ IF_ANSWER ( const QString &getPlaybackMixerID () const )
+ IF_ANSWER ( const QString &getCaptureMixerID () const )
+ IF_ANSWER ( const QString &getPlaybackMixerChannel() const )
+ IF_ANSWER ( const QString &getCaptureMixerChannel() const )
+ IF_ANSWER ( float getDeviceVolume() const )
+ IF_ANSWER ( V4LCaps getCapabilities(QString dev = QString::null) const )
+ IF_ANSWER ( bool getActivePlayback() const )
+ IF_ANSWER ( bool getMuteOnPowerOff() const )
+ IF_ANSWER ( bool getVolumeZeroOnPowerOff() const )
+};
+
+
+
+INTERFACE(IV4LCfgClient, IV4LCfg)
+{
+public:
+ IF_CON_DESTRUCTOR(IV4LCfgClient, 1)
+
+SENDERS:
+ IF_SENDER ( sendRadioDevice (const QString &s) )
+ IF_SENDER ( sendPlaybackMixer(const QString &soundStreamClientID, const QString &ch) )
+ IF_SENDER ( sendCaptureMixer (const QString &soundStreamClientID, const QString &ch) )
+ IF_SENDER ( sendDeviceVolume(float v) )
+ IF_SENDER ( sendActivePlayback(bool a) )
+ IF_SENDER ( sendMuteOnPowerOff(bool a) )
+ IF_SENDER ( sendVolumeZeroOnPowerOff(bool a) )
+
+RECEIVERS:
+ IF_RECEIVER( noticeRadioDeviceChanged(const QString &s) )
+ IF_RECEIVER( noticePlaybackMixerChanged(const QString &soundStreamClientID, const QString &Channel) )
+ IF_RECEIVER( noticeCaptureMixerChanged (const QString &soundStreamClientID, const QString &Channel) )
+ IF_RECEIVER( noticeDeviceVolumeChanged(float v) )
+ IF_RECEIVER( noticeCapabilitiesChanged(const V4LCaps &) )
+ IF_RECEIVER( noticeActivePlaybackChanged(bool a) )
+ IF_RECEIVER( noticeMuteOnPowerOffChanged(bool a) )
+ IF_RECEIVER( noticeVolumeZeroOnPowerOffChanged(bool a) )
+
+QUERIES:
+ IF_QUERY ( const QString &queryRadioDevice () )
+ IF_QUERY ( const QString &queryPlaybackMixerID () )
+ IF_QUERY ( const QString &queryCaptureMixerID () )
+ IF_QUERY ( const QString &queryPlaybackMixerChannel() )
+ IF_QUERY ( const QString &queryCaptureMixerChannel() )
+ IF_QUERY ( float queryDeviceVolume() )
+ IF_QUERY ( V4LCaps queryCapabilities(QString dev = QString::null) )
+ IF_QUERY ( bool queryActivePlayback() )
+ IF_QUERY ( bool queryMuteOnPowerOff() )
+ IF_QUERY ( bool queryVolumeZeroOnPowerOff() )
+
+RECEIVERS:
+ virtual void noticeConnectedI (cmplInterface *, bool /*pointer_valid*/);
+ virtual void noticeDisconnectedI (cmplInterface *, bool /*pointer_valid*/);
+};
+
+#endif
diff --git a/kradio3/plugins/v4lradio/v4lradio-configuration-ui.ui b/kradio3/plugins/v4lradio/v4lradio-configuration-ui.ui
new file mode 100644
index 0000000..2cc4cfd
--- /dev/null
+++ b/kradio3/plugins/v4lradio/v4lradio-configuration-ui.ui
@@ -0,0 +1,966 @@
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
+<class>V4LRadioConfigurationUI</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>V4LRadioConfigurationUI</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>512</width>
+ <height>357</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>SetupDialogGeneral</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <widget class="QTabWidget" row="0" column="0">
+ <property name="name">
+ <cstring>kTabWidget1</cstring>
+ </property>
+ <property name="currentPage">
+ <number>0</number>
+ </property>
+ <widget class="QWidget">
+ <property name="name">
+ <cstring>TabPage</cstring>
+ </property>
+ <attribute name="title">
+ <string>Devices</string>
+ </attribute>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <spacer row="1" column="2">
+ <property name="name">
+ <cstring>spacer18_3_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Preferred</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>40</width>
+ <height>21</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QLabel" row="2" column="0">
+ <property name="name">
+ <cstring>labelPlaybackMixerDevice</cstring>
+ </property>
+ <property name="text">
+ <string>Playback Mixer Device</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="3" column="0">
+ <property name="name">
+ <cstring>labelPlaybackMixerChannel</cstring>
+ </property>
+ <property name="text">
+ <string>Playback Mixer Channel</string>
+ </property>
+ </widget>
+ <spacer row="2" column="2">
+ <property name="name">
+ <cstring>spacer18_3_4</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Preferred</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>40</width>
+ <height>21</height>
+ </size>
+ </property>
+ </spacer>
+ <spacer row="3" column="2">
+ <property name="name">
+ <cstring>spacer18_3</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Preferred</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>40</width>
+ <height>21</height>
+ </size>
+ </property>
+ </spacer>
+ <spacer row="4" column="2">
+ <property name="name">
+ <cstring>spacer18_3_4_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Preferred</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>40</width>
+ <height>21</height>
+ </size>
+ </property>
+ </spacer>
+ <spacer row="5" column="2">
+ <property name="name">
+ <cstring>spacer18_3_5</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Preferred</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>40</width>
+ <height>21</height>
+ </size>
+ </property>
+ </spacer>
+ <spacer row="1" column="0">
+ <property name="name">
+ <cstring>spacer18_3_3</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Preferred</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>152</width>
+ <height>21</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QLabel" row="0" column="0">
+ <property name="name">
+ <cstring>labelRadioDevice</cstring>
+ </property>
+ <property name="text">
+ <string>Radio Device</string>
+ </property>
+ </widget>
+ <widget class="QPushButton" row="0" column="2">
+ <property name="name">
+ <cstring>buttonSelectRadioDevice</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>5</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="iconSet">
+ <iconset>"fileopen"</iconset>
+ </property>
+ </widget>
+ <widget class="QLabel" row="4" column="0">
+ <property name="name">
+ <cstring>labelCaptureMixerDevice</cstring>
+ </property>
+ <property name="text">
+ <string>Capture Mixer Device</string>
+ </property>
+ </widget>
+ <widget class="QComboBox" row="5" column="1">
+ <property name="name">
+ <cstring>comboCaptureMixerChannel</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>1</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <widget class="QLabel" row="5" column="0">
+ <property name="name">
+ <cstring>labelCaptureMixerChannel</cstring>
+ </property>
+ <property name="text">
+ <string>Capture Mixer Channel</string>
+ </property>
+ </widget>
+ <widget class="QComboBox" row="4" column="1">
+ <property name="name">
+ <cstring>comboCaptureMixerDevice</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>1</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <widget class="QComboBox" row="3" column="1">
+ <property name="name">
+ <cstring>comboPlaybackMixerChannel</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>1</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <widget class="QComboBox" row="2" column="1">
+ <item>
+ <property name="text">
+ <string>test</string>
+ </property>
+ </item>
+ <property name="name">
+ <cstring>comboPlaybackMixerDevice</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>1</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <widget class="QLabel" row="1" column="1">
+ <property name="name">
+ <cstring>labelDescription</cstring>
+ </property>
+ <property name="text">
+ <string>unknown v4l device</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit" row="0" column="1">
+ <property name="name">
+ <cstring>editRadioDevice</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <spacer row="9" column="1">
+ <property name="name">
+ <cstring>spacer15</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>5</width>
+ <height>5</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QCheckBox" row="6" column="0" rowspan="1" colspan="3">
+ <property name="name">
+ <cstring>m_checkboxActivePlayback</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>1</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Use active pla&amp;yback by capturing</string>
+ </property>
+ <property name="accel">
+ <string>Alt+Y</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox" row="7" column="0" rowspan="1" colspan="3">
+ <property name="name">
+ <cstring>m_checkboxMuteOnPowerOff</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>1</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Mute Play&amp;back Channel on Power Off</string>
+ </property>
+ <property name="accel">
+ <string>Alt+B</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox" row="8" column="0" rowspan="1" colspan="3">
+ <property name="name">
+ <cstring>m_checkboxVolumeZeroOnPowerOff</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>1</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Set Playback Channel Volume to &amp;Zero on Power Off</string>
+ </property>
+ <property name="accel">
+ <string>Alt+Z</string>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ <widget class="QWidget">
+ <property name="name">
+ <cstring>TabPage</cstring>
+ </property>
+ <attribute name="title">
+ <string>Options</string>
+ </attribute>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <widget class="QLayoutWidget" row="0" column="2">
+ <property name="name">
+ <cstring>layout37</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>labelFrequencyRange</cstring>
+ </property>
+ <property name="enabled">
+ <bool>true</bool>
+ </property>
+ <property name="text">
+ <string>to</string>
+ </property>
+ </widget>
+ <widget class="QSpinBox">
+ <property name="name">
+ <cstring>editMaxFrequency</cstring>
+ </property>
+ <property name="enabled">
+ <bool>true</bool>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>1</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="suffix">
+ <string> kHz</string>
+ </property>
+ <property name="maxValue">
+ <number>300000</number>
+ </property>
+ <property name="minValue">
+ <number>1</number>
+ </property>
+ <property name="lineStep">
+ <number>1000</number>
+ </property>
+ <property name="value">
+ <number>300000</number>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QSpinBox" row="1" column="1">
+ <property name="name">
+ <cstring>editScanStep</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>1</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="suffix">
+ <string> kHz</string>
+ </property>
+ <property name="maxValue">
+ <number>500</number>
+ </property>
+ <property name="minValue">
+ <number>1</number>
+ </property>
+ <property name="value">
+ <number>50</number>
+ </property>
+ </widget>
+ <widget class="QLabel" row="2" column="0">
+ <property name="name">
+ <cstring>labelSignalMinQuality</cstring>
+ </property>
+ <property name="text">
+ <string>minimum signal quality</string>
+ </property>
+ </widget>
+ <widget class="QSpinBox" row="0" column="1">
+ <property name="name">
+ <cstring>editMinFrequency</cstring>
+ </property>
+ <property name="enabled">
+ <bool>true</bool>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>1</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="suffix">
+ <string> kHz</string>
+ </property>
+ <property name="maxValue">
+ <number>2999999</number>
+ </property>
+ <property name="minValue">
+ <number>0</number>
+ </property>
+ <property name="lineStep">
+ <number>1000</number>
+ </property>
+ <property name="value">
+ <number>0</number>
+ </property>
+ </widget>
+ <widget class="QLabel" row="1" column="0">
+ <property name="name">
+ <cstring>labelScanStep</cstring>
+ </property>
+ <property name="text">
+ <string>station scan step</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="0" column="0">
+ <property name="name">
+ <cstring>labelMinMaxFrequency</cstring>
+ </property>
+ <property name="text">
+ <string>allowed frequency range</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="1" column="2">
+ <property name="name">
+ <cstring>textLabel1_3</cstring>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ </widget>
+ <widget class="QSpinBox" row="2" column="1">
+ <property name="name">
+ <cstring>editSignalMinQuality</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>1</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="value">
+ <number>75</number>
+ </property>
+ </widget>
+ <widget class="QLabel" row="2" column="2">
+ <property name="name">
+ <cstring>textLabel1_4_2</cstring>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ </widget>
+ <spacer row="3" column="1">
+ <property name="name">
+ <cstring>spacer16</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>5</height>
+ </size>
+ </property>
+ </spacer>
+ </grid>
+ </widget>
+ <widget class="QWidget">
+ <property name="name">
+ <cstring>TabPage</cstring>
+ </property>
+ <attribute name="title">
+ <string>V4L Mixer Controls</string>
+ </attribute>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <widget class="QLayoutWidget" row="0" column="0">
+ <property name="name">
+ <cstring>layout35</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>3</number>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>labelDeviceVolume</cstring>
+ </property>
+ <property name="text">
+ <string>volume</string>
+ </property>
+ <property name="alignment">
+ <set>AlignCenter</set>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout34</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <spacer>
+ <property name="name">
+ <cstring>spacer42</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QSlider">
+ <property name="name">
+ <cstring>sliderDeviceVolume</cstring>
+ </property>
+ <property name="maxValue">
+ <number>100</number>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer43</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>16</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ <widget class="KDoubleNumInput">
+ <property name="name">
+ <cstring>editDeviceVolume</cstring>
+ </property>
+ <property name="maxValue">
+ <number>1</number>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QLayoutWidget" row="0" column="1">
+ <property name="name">
+ <cstring>layout35_2</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>3</number>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>labelTreble</cstring>
+ </property>
+ <property name="text">
+ <string>treble</string>
+ </property>
+ <property name="alignment">
+ <set>AlignCenter</set>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout34_2</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <spacer>
+ <property name="name">
+ <cstring>spacer42_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QSlider">
+ <property name="name">
+ <cstring>sliderTreble</cstring>
+ </property>
+ <property name="maxValue">
+ <number>100</number>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer43_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>16</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ <widget class="KDoubleNumInput">
+ <property name="name">
+ <cstring>editTreble</cstring>
+ </property>
+ <property name="maxValue">
+ <number>1</number>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QLayoutWidget" row="0" column="2">
+ <property name="name">
+ <cstring>layout35_2_2</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>3</number>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>labelBass</cstring>
+ </property>
+ <property name="text">
+ <string>bass</string>
+ </property>
+ <property name="alignment">
+ <set>AlignCenter</set>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout34_2_3</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <spacer>
+ <property name="name">
+ <cstring>spacer42_2_3</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QSlider">
+ <property name="name">
+ <cstring>sliderBass</cstring>
+ </property>
+ <property name="maxValue">
+ <number>100</number>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer43_2_3</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>16</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ <widget class="KDoubleNumInput">
+ <property name="name">
+ <cstring>editBass</cstring>
+ </property>
+ <property name="maxValue">
+ <number>1</number>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QLayoutWidget" row="0" column="3">
+ <property name="name">
+ <cstring>layout51</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="spacing">
+ <number>3</number>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>labelBalance</cstring>
+ </property>
+ <property name="text">
+ <string>balance</string>
+ </property>
+ <property name="alignment">
+ <set>AlignCenter</set>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer40</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>33</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QSlider">
+ <property name="name">
+ <cstring>sliderBalance</cstring>
+ </property>
+ <property name="minValue">
+ <number>0</number>
+ </property>
+ <property name="maxValue">
+ <number>65535</number>
+ </property>
+ <property name="pageStep">
+ <number>1</number>
+ </property>
+ <property name="value">
+ <number>0</number>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer41</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>33</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="KDoubleNumInput">
+ <property name="name">
+ <cstring>editBalance</cstring>
+ </property>
+ <property name="minValue">
+ <number>-1</number>
+ </property>
+ <property name="maxValue">
+ <number>1</number>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ </grid>
+ </widget>
+ </widget>
+ </grid>
+</widget>
+<customwidgets>
+</customwidgets>
+<tabstops>
+ <tabstop>editRadioDevice</tabstop>
+ <tabstop>buttonSelectRadioDevice</tabstop>
+ <tabstop>comboPlaybackMixerChannel</tabstop>
+ <tabstop>editMinFrequency</tabstop>
+ <tabstop>editMaxFrequency</tabstop>
+ <tabstop>editSignalMinQuality</tabstop>
+</tabstops>
+<includes>
+ <include location="global" impldecl="in implementation">kiconloader.h</include>
+ <include location="global" impldecl="in implementation">knuminput.h</include>
+</includes>
+<pixmapfunction>SmallIconSet</pixmapfunction>
+<layoutdefaults spacing="6" margin="0"/>
+<includehints>
+ <includehint>ktabwidget.h</includehint>
+ <includehint>knuminput.h</includehint>
+ <includehint>knuminput.h</includehint>
+ <includehint>knuminput.h</includehint>
+ <includehint>knuminput.h</includehint>
+ <includehint>knuminput.h</includehint>
+ <includehint>knuminput.h</includehint>
+ <includehint>knuminput.h</includehint>
+ <includehint>knuminput.h</includehint>
+</includehints>
+</UI>
diff --git a/kradio3/plugins/v4lradio/v4lradio-configuration.cpp b/kradio3/plugins/v4lradio/v4lradio-configuration.cpp
new file mode 100644
index 0000000..f7472fc
--- /dev/null
+++ b/kradio3/plugins/v4lradio/v4lradio-configuration.cpp
@@ -0,0 +1,648 @@
+/***************************************************************************
+ v4lradio-configuration.cpp - description
+ -------------------
+ begin : Fre Jun 20 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include <sys/ioctl.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <linux/soundcard.h>
+
+#include <qspinbox.h>
+#include <qlineedit.h>
+#include <qcombobox.h>
+#include <qlabel.h>
+#include <qfile.h>
+#include <qpushbutton.h>
+#include <qslider.h>
+#include <qcheckbox.h>
+
+#include <kfiledialog.h>
+#include <knuminput.h>
+#include <klocale.h>
+#include <ktabwidget.h>
+
+#include "../../src/include/utils.h"
+#include "../../src/include/gui_list_helper.h"
+#include "v4lradio-configuration.h"
+#include "v4lradio.h"
+
+V4LRadioConfiguration::V4LRadioConfiguration (QWidget *parent, SoundStreamID ssid)
+ : V4LRadioConfigurationUI(parent),
+ m_SoundStreamID(ssid),
+ m_ignoreGUIChanges(false),
+ m_myControlChange(0),
+ m_orgTreble(-1),
+ m_orgBass(-1),
+ m_orgBalance(-2),
+ m_orgDeviceVolume(-1),
+ m_PlaybackMixerHelper(comboPlaybackMixerDevice, StringListHelper::SORT_BY_DESCR),
+ m_CaptureMixerHelper (comboCaptureMixerDevice, StringListHelper::SORT_BY_DESCR),
+ m_PlaybackChannelHelper(comboPlaybackMixerChannel),
+ m_CaptureChannelHelper (comboCaptureMixerChannel)
+{
+ QObject::connect(buttonSelectRadioDevice, SIGNAL(clicked()),
+ this, SLOT(selectRadioDevice()));
+ editRadioDevice->installEventFilter(this);
+ QObject::connect(editMinFrequency, SIGNAL(valueChanged(int)),
+ this, SLOT(guiMinFrequencyChanged(int)));
+ QObject::connect(editMaxFrequency, SIGNAL(valueChanged(int)),
+ this, SLOT(guiMaxFrequencyChanged(int)));
+
+ QObject::connect(editDeviceVolume, SIGNAL(valueChanged(double)),
+ this, SLOT(slotDeviceVolumeChanged(double)));
+ QObject::connect(editTreble, SIGNAL(valueChanged(double)),
+ this, SLOT(slotTrebleChanged(double)));
+ QObject::connect(editBass, SIGNAL(valueChanged(double)),
+ this, SLOT(slotBassChanged(double)));
+ QObject::connect(editBalance, SIGNAL(valueChanged(double)),
+ this, SLOT(slotBalanceChanged(double)));
+
+ QObject::connect(sliderDeviceVolume, SIGNAL(valueChanged(int)),
+ this, SLOT(slotDeviceVolumeChanged(int)));
+ QObject::connect(sliderTreble, SIGNAL(valueChanged(int)),
+ this, SLOT(slotTrebleChanged(int)));
+ QObject::connect(sliderBass, SIGNAL(valueChanged(int)),
+ this, SLOT(slotBassChanged(int)));
+ QObject::connect(sliderBalance, SIGNAL(valueChanged(int)),
+ this, SLOT(slotBalanceChanged(int)));
+
+ QObject::connect(comboPlaybackMixerDevice, SIGNAL(activated(int)),
+ this, SLOT(slotComboPlaybackMixerSelected(int)));
+ QObject::connect(comboCaptureMixerDevice, SIGNAL(activated(int)),
+ this, SLOT(slotComboCaptureMixerSelected(int)));
+
+ sliderBalance->installEventFilter(this);
+}
+
+
+V4LRadioConfiguration::~V4LRadioConfiguration ()
+{
+}
+
+
+bool V4LRadioConfiguration::connectI (Interface *i)
+{
+ bool a = IV4LCfgClient::connectI(i);
+ bool b = IFrequencyRadioClient::connectI(i);
+ bool c = IRadioDeviceClient::connectI(i);
+ bool d = ISoundStreamClient::connectI(i);
+ return a || b || c || d;
+}
+
+
+bool V4LRadioConfiguration::disconnectI (Interface *i)
+{
+ bool a = IV4LCfgClient::disconnectI(i);
+ bool b = IFrequencyRadioClient::disconnectI(i);
+ bool c = IRadioDeviceClient::disconnectI(i);
+ bool d = ISoundStreamClient::disconnectI(i);
+ return a || b || c || d;
+}
+
+void V4LRadioConfiguration::noticeConnectedI (ISoundStreamServer *s, bool pointer_valid)
+{
+ ISoundStreamClient::noticeConnectedI(s, pointer_valid);
+ if (s && pointer_valid) {
+ s->register4_notifyTrebleChanged(this);
+ s->register4_notifyBassChanged(this);
+ s->register4_notifyBalanceChanged(this);
+ s->register4_notifySignalMinQualityChanged(this);
+
+ s->register4_notifyPlaybackChannelsChanged(this);
+ s->register4_notifyCaptureChannelsChanged(this);
+ s->register4_notifySoundStreamCreated(this);
+ }
+}
+
+void V4LRadioConfiguration::noticeConnectedSoundClient(ISoundStreamClient::thisInterface *i, bool pointer_valid)
+{
+ if (i && pointer_valid && i->supportsPlayback()) {
+ const QString &org_mid = queryPlaybackMixerID();
+ bool org_present = m_PlaybackMixerHelper.contains(org_mid);
+ const QString &mid = org_present ? m_PlaybackMixerHelper.getCurrentItem() : org_mid;
+ const QString &org_ch = queryPlaybackMixerChannel();
+ const QString &ch = org_present ? m_PlaybackChannelHelper.getCurrentText() : org_ch;
+ noticePlaybackMixerChanged(mid, ch);
+ }
+ if (i && pointer_valid && i->supportsCapture()) {
+ const QString &org_mid = queryCaptureMixerID();
+ bool org_present = m_CaptureMixerHelper.contains(org_mid);
+ const QString &mid = org_present ? m_CaptureMixerHelper.getCurrentItem() : org_mid;
+ const QString &org_ch = queryCaptureMixerChannel();
+ const QString &ch = org_present ? m_CaptureChannelHelper.getCurrentText() : org_ch;
+ noticeCaptureMixerChanged(mid, ch);
+ }
+}
+
+
+void V4LRadioConfiguration::noticeDisconnectedSoundClient(ISoundStreamClient::thisInterface *i, bool pointer_valid)
+{
+ if (i && pointer_valid && i->supportsPlayback()) {
+ noticePlaybackMixerChanged(queryPlaybackMixerID(), queryPlaybackMixerChannel());
+ }
+ if (i && pointer_valid && i->supportsCapture()) {
+ noticeCaptureMixerChanged (queryCaptureMixerID(), queryCaptureMixerChannel());
+ }
+}
+
+// IV4LCfgClient
+
+bool V4LRadioConfiguration::noticeRadioDeviceChanged(const QString &s)
+{
+ bool old = m_ignoreGUIChanges;
+ m_ignoreGUIChanges = true;
+
+ editRadioDevice->setText(s);
+
+ m_ignoreGUIChanges = old;
+ return true;
+}
+
+
+bool V4LRadioConfiguration::noticePlaybackMixerChanged(const QString &_mixer_id, const QString &Channel)
+{
+ QString mixer_id = _mixer_id;
+ bool old = m_ignoreGUIChanges;
+ m_ignoreGUIChanges = true;
+
+ m_PlaybackMixerHelper.setData(getPlaybackClientDescriptions());
+ m_PlaybackMixerHelper.setCurrentItem(mixer_id);
+ mixer_id = m_PlaybackMixerHelper.getCurrentItem();
+
+ ISoundStreamClient *mixer = getSoundStreamClientWithID(mixer_id);
+ if (mixer) {
+ m_PlaybackChannelHelper.setData(mixer->getPlaybackChannels());
+ m_PlaybackChannelHelper.setCurrentText(m_PlaybackChannelHelper.contains(Channel) ? Channel : queryPlaybackMixerChannel());
+ }
+ labelPlaybackMixerChannel->setEnabled(mixer != NULL);
+ comboPlaybackMixerChannel->setEnabled(mixer != NULL);
+
+ m_ignoreGUIChanges = old;
+ return true;
+}
+
+
+bool V4LRadioConfiguration::noticeCaptureMixerChanged(const QString &_mixer_id, const QString &Channel)
+{
+ QString mixer_id = _mixer_id;
+ bool old = m_ignoreGUIChanges;
+ m_ignoreGUIChanges = true;
+
+ m_CaptureMixerHelper.setData(getCaptureClientDescriptions());
+ m_CaptureMixerHelper.setCurrentItem(mixer_id);
+ mixer_id = m_CaptureMixerHelper.getCurrentItem();
+
+ ISoundStreamClient *mixer = getSoundStreamClientWithID(mixer_id);
+ if (mixer) {
+ m_CaptureChannelHelper.setData(mixer->getCaptureChannels());
+ m_CaptureChannelHelper.setCurrentText(m_CaptureChannelHelper.contains(Channel) ? Channel : queryCaptureMixerChannel());
+ }
+ labelCaptureMixerChannel->setEnabled(mixer != NULL);
+ comboCaptureMixerChannel->setEnabled(mixer != NULL);
+
+ m_ignoreGUIChanges = old;
+ return true;
+}
+
+
+bool V4LRadioConfiguration::noticeDeviceVolumeChanged(float v)
+{
+ bool old = m_ignoreGUIChanges;
+ m_ignoreGUIChanges = true;
+ v = v > 1 ? 1 : v;
+ v = v < 0 ? 0 : v;
+
+ if (!m_myControlChange)
+ m_orgDeviceVolume = v;
+
+ editDeviceVolume ->setValue(v);
+ sliderDeviceVolume->setValue(m_caps.maxVolume - m_caps.intGetVolume(v));
+ m_ignoreGUIChanges = old;
+ return true;
+}
+
+
+bool V4LRadioConfiguration::noticeCapabilitiesChanged(const V4LCaps &c)
+{
+ bool old = m_ignoreGUIChanges;
+ m_ignoreGUIChanges = true;
+
+ labelDeviceVolume ->setEnabled(c.hasVolume);
+ editDeviceVolume ->setEnabled(c.hasVolume);
+ editDeviceVolume ->setRange(0, 1, c.volumeStep(), false);
+ sliderDeviceVolume->setMinValue(0);
+ sliderDeviceVolume->setMaxValue(c.maxVolume - c.minVolume);
+ sliderDeviceVolume->setEnabled(c.hasVolume);
+
+ labelTreble ->setEnabled(c.hasTreble);
+ editTreble ->setEnabled(c.hasTreble);
+ editTreble ->setRange(0, 1, c.trebleStep(), false);
+ sliderTreble->setMinValue(0);
+ sliderTreble->setMaxValue(c.maxTreble - c.minTreble);
+ sliderTreble->setEnabled(c.hasTreble);
+
+ labelBass ->setEnabled(c.hasBass);
+ editBass ->setEnabled(c.hasBass);
+ editBass ->setRange(0, 1, c.bassStep(), false);
+ sliderBass->setMinValue(0);
+ sliderBass->setMaxValue(c.maxBass - c.minBass);
+ sliderBass->setEnabled(c.hasBass);
+
+ labelBalance ->setEnabled(c.hasBalance);
+ editBalance ->setEnabled(c.hasBalance);
+ editBalance ->setRange(-1, 1, c.balanceStep(), false);
+ sliderBalance->setMinValue(0);
+ sliderBalance->setMaxValue(c.maxBalance - c.minBalance);
+ sliderBalance->setEnabled(c.hasBalance);
+
+ m_caps = c;
+
+ float tmp = 0;
+ noticeDeviceVolumeChanged(queryDeviceVolume());
+
+ queryTreble(m_SoundStreamID, tmp);
+ noticeTrebleChanged(m_SoundStreamID, tmp);
+
+ queryBass(m_SoundStreamID, tmp);
+ noticeBassChanged(m_SoundStreamID, tmp);
+
+ queryBalance(m_SoundStreamID, tmp);
+ noticeBalanceChanged(m_SoundStreamID, tmp);
+
+ m_ignoreGUIChanges = old;
+ return true;
+}
+
+bool V4LRadioConfiguration::noticeActivePlaybackChanged(bool a)
+{
+ bool old = m_ignoreGUIChanges;
+ m_ignoreGUIChanges = true;
+ m_checkboxActivePlayback->setChecked(a);
+ m_ignoreGUIChanges = old;
+ return true;
+}
+
+bool V4LRadioConfiguration::noticeMuteOnPowerOffChanged(bool a)
+{
+ bool old = m_ignoreGUIChanges;
+ m_ignoreGUIChanges = true;
+ m_checkboxMuteOnPowerOff->setChecked(a);
+ m_ignoreGUIChanges = old;
+ return true;
+}
+
+bool V4LRadioConfiguration::noticeVolumeZeroOnPowerOffChanged(bool a)
+{
+ bool old = m_ignoreGUIChanges;
+ m_ignoreGUIChanges = true;
+ m_checkboxVolumeZeroOnPowerOff->setChecked(a);
+ m_ignoreGUIChanges = old;
+ return true;
+}
+
+// IRadioDeviceClient
+
+bool V4LRadioConfiguration::noticeDescriptionChanged (const QString &s, const IRadioDevice */*sender*/)
+{
+ labelDescription->setText(s);
+ return true;
+}
+
+
+// IFrequencyRadioClient
+
+bool V4LRadioConfiguration::noticeFrequencyChanged(float /*f*/, const RadioStation */*s*/)
+{
+ return false; // we don't care
+}
+
+
+bool V4LRadioConfiguration::noticeMinMaxFrequencyChanged(float min, float max)
+{
+ editMinFrequency->setValue((int)rint(min*1000));
+ editMaxFrequency->setValue((int)rint(max*1000));
+ return true;
+}
+
+
+bool V4LRadioConfiguration::noticeDeviceMinMaxFrequencyChanged(float min, float max)
+{
+ editMinFrequency->setMinValue((int)rint(min*1000));
+ editMaxFrequency->setMaxValue((int)rint(max*1000));
+ return true;
+}
+
+
+bool V4LRadioConfiguration::noticeScanStepChanged(float s)
+{
+ editScanStep->setValue((int)rint(s * 1000));
+ return true;
+}
+
+
+// IRadioSoundClient
+
+bool V4LRadioConfiguration::noticeTrebleChanged(SoundStreamID id, float t)
+{
+ if (id != m_SoundStreamID)
+ return false;
+
+ bool old = m_ignoreGUIChanges;
+ m_ignoreGUIChanges = true;
+ t = t > 1 ? 1 : t;
+ t = t < 0 ? 0 : t;
+
+ if (!m_myControlChange)
+ m_orgTreble = t;
+
+ editTreble ->setValue (t);
+ sliderTreble->setValue(m_caps.maxTreble - m_caps.intGetTreble(t));
+ m_ignoreGUIChanges = old;
+ return true;
+}
+
+
+bool V4LRadioConfiguration::noticeBassChanged(SoundStreamID id, float b)
+{
+ if (id != m_SoundStreamID)
+ return false;
+
+ bool old = m_ignoreGUIChanges;
+ m_ignoreGUIChanges = true;
+ b = b > 1 ? 1 : b;
+ b = b < 0 ? 0 : b;
+
+ if (!m_myControlChange)
+ m_orgBass = b;
+
+ editBass ->setValue(b);
+ sliderBass->setValue(m_caps.maxBass - m_caps.intGetBass(b));
+ m_ignoreGUIChanges = old;
+ return true;
+}
+
+
+bool V4LRadioConfiguration::noticeBalanceChanged(SoundStreamID id, float b)
+{
+ if (id != m_SoundStreamID)
+ return false;
+
+ bool old = m_ignoreGUIChanges;
+ m_ignoreGUIChanges = true;
+ b = b > 1 ? 1 : b;
+ b = b < -1 ? -1 : b;
+
+ if (!m_myControlChange)
+ m_orgBalance = b;
+
+ editBalance ->setValue(b);
+ sliderBalance->setValue(m_caps.intGetBalance(b));
+ m_ignoreGUIChanges = old;
+ return true;
+}
+
+
+bool V4LRadioConfiguration::noticeSignalMinQualityChanged(SoundStreamID id, float q)
+{
+ if (id != m_SoundStreamID)
+ return false;
+
+ editSignalMinQuality->setValue((int)rint(q * 100));
+ return true;
+}
+
+
+bool V4LRadioConfiguration::noticeSoundStreamCreated(SoundStreamID id)
+{
+ if (id.HasSamePhysicalID(m_SoundStreamID)) {
+ m_SoundStreamID = id;
+ }
+ return true;
+}
+
+
+// GUI Slots
+
+
+void V4LRadioConfiguration::selectRadioDevice()
+{
+ KFileDialog fd("/dev/",
+ i18n("any ( * )").ascii(),
+ this,
+ i18n("Radio Device Selection").ascii(),
+ TRUE);
+ fd.setMode(KFile::File | KFile::ExistingOnly);
+ fd.setCaption (i18n("Select Radio Device"));
+
+ if (fd.exec() == QDialog::Accepted) {
+ editRadioDevice->setText(fd.selectedFile());
+ }
+}
+
+
+bool V4LRadioConfiguration::eventFilter(QObject *o, QEvent *e)
+{
+ if (e->type() == QEvent::FocusOut && o == editRadioDevice) {
+ slotEditRadioDeviceChanged();
+ }
+ if (e->type() == QEvent::MouseButtonDblClick && o == sliderBalance) {
+ slotBalanceCenter();
+ }
+ return false;
+}
+
+
+void V4LRadioConfiguration::slotEditRadioDeviceChanged()
+{
+ if (m_ignoreGUIChanges) return;
+ const QString &s = editRadioDevice->text();
+ if (s != queryRadioDevice() || !queryIsPowerOn()) {
+ V4LCaps c = queryCapabilities(s);
+ noticeDescriptionChanged(c.description);
+ } else {
+ noticeDescriptionChanged(queryDescription());
+ }
+}
+
+
+void V4LRadioConfiguration::slotComboPlaybackMixerSelected(int /*idx*/)
+{
+ if (m_ignoreGUIChanges) return;
+ QString id = m_PlaybackMixerHelper.getCurrentItem();
+ noticePlaybackMixerChanged(id, queryPlaybackMixerChannel());
+}
+
+
+void V4LRadioConfiguration::slotComboCaptureMixerSelected(int /*idx*/)
+{
+ if (m_ignoreGUIChanges) return;
+ QString id = m_CaptureMixerHelper.getCurrentItem();
+ noticeCaptureMixerChanged(id, queryCaptureMixerChannel());
+}
+
+
+void V4LRadioConfiguration::slotOK()
+{
+ sendMinFrequency(((float)editMinFrequency->value()) / 1000.0);
+ sendMaxFrequency(((float)editMaxFrequency->value()) / 1000.0);
+ sendSignalMinQuality(m_SoundStreamID, editSignalMinQuality->value() * 0.01);
+ sendRadioDevice(editRadioDevice->text());
+ sendScanStep(((float)editScanStep->value()) / 1000.0);
+
+ sendCaptureMixer (m_CaptureMixerHelper.getCurrentItem(),
+ m_CaptureChannelHelper.getCurrentText());
+ sendPlaybackMixer(m_PlaybackMixerHelper.getCurrentItem(),
+ m_PlaybackChannelHelper.getCurrentText());
+
+ sendActivePlayback(m_checkboxActivePlayback->isChecked());
+ sendMuteOnPowerOff(m_checkboxMuteOnPowerOff->isChecked());
+ sendVolumeZeroOnPowerOff(m_checkboxVolumeZeroOnPowerOff->isChecked());
+
+ queryTreble (m_SoundStreamID, m_orgTreble);
+ queryBass (m_SoundStreamID, m_orgBass);
+ queryBalance(m_SoundStreamID, m_orgBalance);
+ m_orgDeviceVolume = queryDeviceVolume();
+}
+
+
+void V4LRadioConfiguration::slotCancel()
+{
+ noticeRadioDeviceChanged(queryRadioDevice());
+ noticePlaybackMixerChanged(queryPlaybackMixerID(), queryPlaybackMixerChannel());
+ noticeCaptureMixerChanged (queryCaptureMixerID(), queryCaptureMixerChannel());
+ noticeMinMaxFrequencyChanged(queryMinFrequency(), queryMaxFrequency());
+ noticeActivePlaybackChanged(queryActivePlayback());
+ noticeMuteOnPowerOffChanged(queryMuteOnPowerOff());
+ noticeVolumeZeroOnPowerOffChanged(queryVolumeZeroOnPowerOff());
+
+ float q = 0;
+ querySignalMinQuality(m_SoundStreamID, q);
+ noticeSignalMinQualityChanged(m_SoundStreamID, q);
+ noticeScanStepChanged(queryScanStep());
+
+ sendTreble (m_SoundStreamID, m_orgTreble);
+ sendBass (m_SoundStreamID, m_orgBass);
+ sendBalance (m_SoundStreamID, m_orgBalance);
+ sendDeviceVolume(m_orgDeviceVolume);
+}
+
+
+void V4LRadioConfiguration::guiMinFrequencyChanged(int v)
+{
+ editMaxFrequency->setMinValue(v);
+}
+
+
+void V4LRadioConfiguration::guiMaxFrequencyChanged(int v)
+{
+ editMinFrequency->setMaxValue(v);
+}
+
+void V4LRadioConfiguration::slotDeviceVolumeChanged (double v) // for KDoubleNumInput, 0.0..1.0
+{
+ if (m_ignoreGUIChanges) return;
+ ++m_myControlChange;
+ sendDeviceVolume(v);
+ --m_myControlChange;
+}
+
+void V4LRadioConfiguration::slotTrebleChanged (double t) // for KDoubleNumInput, 0.0..1.0
+{
+ if (m_ignoreGUIChanges) return;
+ ++m_myControlChange;
+ sendTreble(m_SoundStreamID, t);
+ --m_myControlChange;
+}
+
+void V4LRadioConfiguration::slotBassChanged (double b) // for KDoubleNumInput, 0.0..1.0
+{
+ if (m_ignoreGUIChanges) return;
+ ++m_myControlChange;
+ sendBass(m_SoundStreamID, b);
+ --m_myControlChange;
+}
+
+void V4LRadioConfiguration::slotBalanceChanged(double b) // for KDoubleNumInput, -1.0..1.0
+{
+ if (m_ignoreGUIChanges) return;
+ ++m_myControlChange;
+ sendBalance(m_SoundStreamID, b);
+ --m_myControlChange;
+}
+
+
+void V4LRadioConfiguration::slotDeviceVolumeChanged (int v)
+{
+ if (m_ignoreGUIChanges) return;
+ ++m_myControlChange;
+ sendDeviceVolume(m_caps.floatGetVolume(m_caps.maxVolume - v));
+ --m_myControlChange;
+}
+
+void V4LRadioConfiguration::slotTrebleChanged (int t)
+{
+ if (m_ignoreGUIChanges) return;
+ ++m_myControlChange;
+ sendTreble(m_SoundStreamID, m_caps.floatGetTreble(m_caps.maxTreble - t));
+ --m_myControlChange;
+}
+
+void V4LRadioConfiguration::slotBassChanged (int b)
+{
+ if (m_ignoreGUIChanges) return;
+ ++m_myControlChange;
+ sendBass(m_SoundStreamID, m_caps.floatGetBass(m_caps.maxBass - b));
+ --m_myControlChange;
+}
+
+void V4LRadioConfiguration::slotBalanceChanged(int b)
+{
+ if (m_ignoreGUIChanges) return;
+ ++m_myControlChange;
+ sendBalance(m_SoundStreamID, m_caps.floatGetBalance(b));
+ --m_myControlChange;
+}
+
+
+void V4LRadioConfiguration::slotBalanceCenter()
+{
+ if (m_ignoreGUIChanges) return;
+ ++m_myControlChange;
+ sendBalance(m_SoundStreamID, 0);
+ --m_myControlChange;
+}
+
+
+bool V4LRadioConfiguration::noticePlaybackChannelsChanged(const QString & client_id, const QStringList &/*channels*/)
+{
+ if (m_PlaybackMixerHelper.getCurrentItem() == client_id) {
+ noticePlaybackMixerChanged(client_id, m_PlaybackChannelHelper.getCurrentText());
+ }
+ return true;
+}
+
+
+bool V4LRadioConfiguration::noticeCaptureChannelsChanged (const QString & client_id, const QStringList &/*channels*/)
+{
+ if (m_CaptureMixerHelper.getCurrentItem() == client_id) {
+ noticeCaptureMixerChanged(client_id, m_CaptureChannelHelper.getCurrentText());
+ }
+ return true;
+}
+
+
+
+#include "v4lradio-configuration.moc"
diff --git a/kradio3/plugins/v4lradio/v4lradio-configuration.h b/kradio3/plugins/v4lradio/v4lradio-configuration.h
new file mode 100644
index 0000000..bf41b54
--- /dev/null
+++ b/kradio3/plugins/v4lradio/v4lradio-configuration.h
@@ -0,0 +1,147 @@
+/***************************************************************************
+ v4lradio-configuration.h - description
+ -------------------
+ begin : Fre Jun 20 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_V4LRADIO_CONFIGURATION_H
+#define KRADIO_V4LRADIO_CONFIGURATION_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "../../src/include/radiodevice_interfaces.h"
+#include "../../src/include/soundstreamclient_interfaces.h"
+#include "../../src/include/gui_list_helper.h"
+
+#include "v4lradio-configuration-ui.h"
+#include "v4lcfg_interfaces.h"
+
+class V4LRadio;
+class QWidget;
+
+class V4LRadioConfiguration : public V4LRadioConfigurationUI,
+ public IV4LCfgClient,
+ public IFrequencyRadioClient,
+ public ISoundStreamClient,
+ public IRadioDeviceClient
+{
+Q_OBJECT
+public :
+ V4LRadioConfiguration (QWidget *parent, SoundStreamID id);
+ ~V4LRadioConfiguration ();
+
+ bool connectI (Interface *i);
+ bool disconnectI (Interface *i);
+
+ void noticeConnectedSoundClient(ISoundStreamClient::thisInterface *i, bool pointer_valid);
+ void noticeDisconnectedSoundClient(ISoundStreamClient::thisInterface *i, bool pointer_valid);
+
+// IV4LCfgClient
+
+RECEIVERS:
+ bool noticeRadioDeviceChanged(const QString &s);
+ bool noticePlaybackMixerChanged(const QString &soundStreamClientID, const QString &Channel);
+ bool noticeCaptureMixerChanged (const QString &soundStreamClientID, const QString &Channel);
+ bool noticeDeviceVolumeChanged(float v);
+ bool noticeCapabilitiesChanged(const V4LCaps &c);
+ bool noticeActivePlaybackChanged(bool a);
+ bool noticeMuteOnPowerOffChanged(bool a);
+ bool noticeVolumeZeroOnPowerOffChanged(bool a);
+
+// IRadioDeviceClient
+
+RECEIVERS:
+ bool noticePowerChanged (bool /*on*/, const IRadioDevice */*sender = NULL*/) { return false; }
+ bool noticeStationChanged (const RadioStation &, const IRadioDevice */*sender = NULL*/) { return false; }
+ bool noticeDescriptionChanged (const QString &, const IRadioDevice *sender = NULL);
+
+ bool noticeCurrentSoundStreamIDChanged(SoundStreamID /*id*/, const IRadioDevice */*sender*/) { return false; }
+
+// IFrequencyRadioClient
+
+RECEIVERS:
+ bool noticeFrequencyChanged(float f, const RadioStation *s);
+ bool noticeMinMaxFrequencyChanged(float min, float max);
+ bool noticeDeviceMinMaxFrequencyChanged(float min, float max);
+ bool noticeScanStepChanged(float s);
+
+// ISoundStreamClient
+
+RECEIVERS:
+ void noticeConnectedI (ISoundStreamServer *s, bool pointer_valid);
+
+ bool noticeTrebleChanged(SoundStreamID id, float t);
+ bool noticeBassChanged(SoundStreamID id, float b);
+ bool noticeBalanceChanged(SoundStreamID id, float b);
+ bool noticeSignalMinQualityChanged(SoundStreamID id, float q);
+
+ bool noticePlaybackChannelsChanged(const QString & /*client_id*/, const QStringList &/*channels*/);
+ bool noticeCaptureChannelsChanged (const QString & /*client_id*/, const QStringList &/*channels*/);
+ bool noticeSoundStreamCreated(SoundStreamID /*id*/);
+
+
+protected:
+
+ bool eventFilter(QObject *o, QEvent *e);
+
+protected slots:
+
+ void selectRadioDevice();
+ void slotEditRadioDeviceChanged();
+ void slotComboPlaybackMixerSelected(int idx);
+ void slotComboCaptureMixerSelected(int idx);
+
+ void slotOK();
+ void slotCancel();
+
+ void guiMinFrequencyChanged(int v);
+ void guiMaxFrequencyChanged(int v);
+
+ void slotDeviceVolumeChanged (double v); // for KDoubleNumInput, 0.0..1.0
+ void slotTrebleChanged (double t); // for KDoubleNumInput, 0.0..1.0
+ void slotBassChanged (double b); // for KDoubleNumInput, 0.0..1.0
+ void slotBalanceChanged(double b); // for KDoubleNumInput, -1.0..1.0
+
+ void slotDeviceVolumeChanged (int v); // for slider, 0..65535
+ void slotTrebleChanged (int t); // for slider, 0..65535
+ void slotBassChanged (int b); // for slider, 0..65535
+ void slotBalanceChanged(int b); // for slider, 0..65535
+ void slotBalanceCenter ();
+
+protected:
+
+ SoundStreamID m_SoundStreamID;
+
+ bool m_ignoreGUIChanges;
+
+ int m_myControlChange;
+ float m_orgTreble,
+ m_orgBass,
+ m_orgBalance,
+ m_orgDeviceVolume;
+
+ V4LCaps m_caps;
+
+ typedef GUIListHelper<QComboBox, QString> StringListHelper;
+ typedef GUISimpleListHelper<QComboBox> ChannelListHelper;
+
+ StringListHelper m_PlaybackMixerHelper,
+ m_CaptureMixerHelper;
+ ChannelListHelper m_PlaybackChannelHelper,
+ m_CaptureChannelHelper;
+};
+
+#endif
diff --git a/kradio3/plugins/v4lradio/v4lradio.cpp b/kradio3/plugins/v4lradio/v4lradio.cpp
new file mode 100644
index 0000000..fb1ee9f
--- /dev/null
+++ b/kradio3/plugins/v4lradio/v4lradio.cpp
@@ -0,0 +1,1621 @@
+/***************************************************************************
+ v4lradio.cpp - description
+ -------------------
+ begin : Don Mr 8 21:57:17 CET 2001
+ copyright : (C) 2002-2005 by Ernst Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <fcntl.h>
+#include <sys/ioctl.h>
+#include <unistd.h>
+
+#ifdef HAVE_V4L2
+#include "linux/videodev2.h"
+#endif
+#include "linux/videodev.h"
+#include <linux/soundcard.h>
+
+#include <string.h> // memcpy needed
+
+#include <qlayout.h>
+#include <qfile.h>
+#include <qfileinfo.h>
+#include <qvaluelist.h>
+
+#include <kconfig.h>
+#include <kiconloader.h>
+#include <kdialogbase.h>
+#include <kaboutdata.h>
+#include <klocale.h>
+
+#include "../../src/include/aboutwidget.h"
+#include "../../src/include/utils.h"
+#include "v4lradio.h"
+#include "v4lradio-configuration.h"
+
+#include "../../src/include/debug-profiler.h"
+
+struct _lrvol { unsigned char l, r; short dummy; };
+
+///////////////////////////////////////////////////////////////////////
+
+PLUGIN_LIBRARY_FUNCTIONS(V4LRadio, "kradio-v4lradio", i18n("Support for V4L(2) Radio Devices"));
+
+///////////////////////////////////////////////////////////////////////
+
+V4LRadio::V4LRadio(const QString &name)
+ : PluginBase(name, i18n("Video For Linux Plugin")),
+ m_treble(0.5),
+ m_bass(0.5),
+ m_balance(0),
+ m_deviceVolume(0.9),
+ m_muted(false),
+ m_signalQuality(0),
+ m_stereo(false),
+ m_minQuality(0.75),
+ m_minFrequency(87.0),
+ m_maxFrequency(108.0),
+ m_lastMinDevFrequency(87.0),
+ m_lastMaxDevFrequency(108.0),
+
+ m_defaultPlaybackVolume(0.5),
+
+ m_scanStep(0.05),
+
+ m_radioDev("/dev/radio0"),
+ m_radio_fd(-1),
+ m_useOldV4L2Calls(true),
+ m_pollTimer(this),
+
+ m_blockReadTuner(false),
+ m_blockReadAudio(false),
+
+ m_SoundStreamID(createNewSoundStream(false)),
+ m_PlaybackMixerID(QString::null),
+ m_CaptureMixerID(QString::null),
+ m_PlaybackMixerChannel(QString::null),
+ m_CaptureMixerChannel(QString::null),
+ m_ActivePlayback(false),
+ m_MuteOnPowerOff(false),
+ m_VolumeZeroOnPowerOff(false),
+ m_restorePowerOn(false)
+{
+ QObject::connect (&m_pollTimer, SIGNAL(timeout()), this, SLOT(poll()));
+ m_pollTimer.start(333);
+
+ m_audio = new video_audio;
+ bzero(m_audio, sizeof(video_audio));
+ m_tuner = new video_tuner;
+ bzero(m_tuner, sizeof(video_tuner));
+#ifdef HAVE_V4L2
+ m_tuner2 = new v4l2_tuner;
+ bzero(m_tuner2, sizeof(v4l2_tuner));
+#endif
+ m_caps.version = 0;
+
+ m_seekHelper = new FrequencySeekHelper(*this);
+ m_seekHelper->connectI(this);
+}
+
+
+V4LRadio::~V4LRadio()
+{
+ setPower(false);
+
+ if (m_seekHelper)
+ delete m_seekHelper;
+
+ if (m_audio) delete m_audio;
+ if (m_tuner) delete m_tuner;
+#ifdef HAVE_V4L2
+ if (m_tuner2) delete m_tuner2;
+#endif
+}
+
+
+bool V4LRadio::connectI (Interface *i)
+{
+ bool a = IRadioDevice::connectI(i);
+ bool b = ISeekRadio::connectI(i);
+ bool c = IFrequencyRadio::connectI(i);
+ bool d = IV4LCfg::connectI(i);
+ bool e = PluginBase::connectI(i);
+ bool f = ISoundStreamClient::connectI(i);
+ return a || b || c || d || e || f;
+}
+
+
+bool V4LRadio::disconnectI (Interface *i)
+{
+ bool a = IRadioDevice::disconnectI(i);
+ bool b = ISeekRadio::disconnectI(i);
+ bool c = IFrequencyRadio::disconnectI(i);
+ bool d = IV4LCfg::disconnectI(i);
+ bool e = PluginBase::disconnectI(i);
+ bool f = ISoundStreamClient::disconnectI(i);
+ m_seekHelper->disconnectI(i);
+ return a || b || c || d || e || f;
+}
+
+
+void V4LRadio::noticeConnectedI (ISoundStreamServer *s, bool pointer_valid)
+{
+ ISoundStreamClient::noticeConnectedI(s, pointer_valid);
+ if (s && pointer_valid) {
+ m_seekHelper->connectI(s);
+
+ s->register4_queryPlaybackVolume(this);
+ s->register4_sendTreble(this);
+ s->register4_sendBass(this);
+ s->register4_sendBalance(this);
+ s->register4_sendMute(this);
+ s->register4_sendUnmute(this);
+ s->register4_sendSignalMinQuality(this);
+ s->register4_sendStereo(this);
+
+ s->register4_queryTreble(this);
+ s->register4_queryBass(this);
+ s->register4_queryBalance(this);
+ s->register4_querySignalQuality(this);
+ s->register4_querySignalMinQuality(this);
+ s->register4_queryHasGoodQuality(this);
+ s->register4_queryIsStereo(this);
+ s->register4_queryIsMuted(this);
+
+
+ s->register4_sendPlaybackVolume(this);
+ s->register4_sendCaptureVolume(this);
+
+ s->register4_sendStopCapture(this);
+
+ s->register4_querySoundStreamDescription(this);
+ s->register4_querySoundStreamRadioStation(this);
+ s->register4_queryEnumerateSoundStreams(this);
+
+ notifySoundStreamCreated(m_SoundStreamID);
+ }
+}
+
+void V4LRadio::noticeConnectedSoundClient(ISoundStreamClient::thisInterface *i, bool pointer_valid)
+{
+ if (i && pointer_valid && i->getSoundStreamClientID() == m_PlaybackMixerID) {
+ setPlaybackMixer(m_PlaybackMixerID, m_PlaybackMixerChannel);
+ }
+ if (i && pointer_valid && i->getSoundStreamClientID() == m_CaptureMixerID) {
+ setCaptureMixer(m_CaptureMixerID, m_CaptureMixerChannel);
+ }
+}
+
+// IRadioDevice methods
+
+bool V4LRadio::setPower (bool on)
+{
+ return on ? powerOn() : powerOff();
+}
+
+void V4LRadio::searchMixers(ISoundStreamClient **playback_mixer, ISoundStreamClient **capture_mixer)
+{
+ if (playback_mixer) {
+ *playback_mixer = getSoundStreamClientWithID(m_PlaybackMixerID);
+ if (!*playback_mixer) {
+ QPtrList<ISoundStreamClient> playback_mixers = queryPlaybackMixers();
+ if (!playback_mixers.isEmpty())
+ *playback_mixer = playback_mixers.first();
+ }
+ }
+ if (capture_mixer) {
+ *capture_mixer = getSoundStreamClientWithID(m_CaptureMixerID);
+ if (!*capture_mixer) {
+ QPtrList<ISoundStreamClient> capture_mixers = queryCaptureMixers();
+ if (!capture_mixers.isEmpty())
+ *capture_mixer = capture_mixers.first();
+ }
+ }
+}
+
+
+bool V4LRadio::powerOn ()
+{
+ if (isPowerOn())
+ return true;
+
+ radio_init();
+
+ if (isPowerOn()) {
+ ISoundStreamClient *playback_mixer = NULL,
+ *capture_mixer = NULL;
+
+ searchMixers(&playback_mixer, &capture_mixer);
+
+ if (playback_mixer)
+ playback_mixer->preparePlayback(m_SoundStreamID, m_PlaybackMixerChannel, m_ActivePlayback, false);
+ if (capture_mixer)
+ capture_mixer->prepareCapture(m_SoundStreamID, m_CaptureMixerChannel);
+
+ sendStartPlayback(m_SoundStreamID);
+ float tmp_vol = 0;
+ queryPlaybackVolume(m_SoundStreamID, tmp_vol);
+ if (tmp_vol < 0.005)
+ sendPlaybackVolume(m_SoundStreamID, m_defaultPlaybackVolume);
+
+ if (m_ActivePlayback) {
+ SoundFormat sf;
+ sendStartCaptureWithFormat(m_SoundStreamID, sf, sf);
+ }
+
+ unmute(m_SoundStreamID);
+ notifyPowerChanged(true);
+ }
+
+ return true;
+}
+
+
+bool V4LRadio::powerOff ()
+{
+ if (! isPowerOn())
+ return true;
+
+ queryPlaybackVolume(m_SoundStreamID, m_defaultPlaybackVolume);
+ if (m_MuteOnPowerOff)
+ sendMute(m_SoundStreamID, true);
+ if (m_VolumeZeroOnPowerOff)
+ sendPlaybackVolume(m_SoundStreamID, 0.0);
+ mute(m_SoundStreamID);
+ radio_done();
+
+ sendStopPlayback(m_SoundStreamID);
+ sendStopCapture(m_SoundStreamID);
+ closeSoundStream(m_SoundStreamID);
+ m_SoundStreamID = createNewSoundStream(m_SoundStreamID, false);
+ notifySoundStreamCreated(m_SoundStreamID);
+
+ if (isPowerOff()) {
+ notifyPowerChanged(false);
+ }
+
+ return true;
+}
+
+
+bool V4LRadio::activateStation(const RadioStation &rs)
+{
+ const FrequencyRadioStation *frs = dynamic_cast<const FrequencyRadioStation*>(&rs);
+ if (frs == NULL)
+ return false;
+
+ if (setFrequency(frs->frequency())) {
+ m_currentStation = *frs;
+
+ if (frs->initialVolume() > 0)
+ setPlaybackVolume(m_SoundStreamID, frs->initialVolume());
+
+ return true;
+ }
+
+ return false;
+}
+
+
+
+bool V4LRadio::isPowerOn() const
+{
+ return m_radio_fd >= 0;
+}
+
+
+bool V4LRadio::isPowerOff() const
+{
+ return m_radio_fd < 0;
+}
+
+
+SoundStreamID V4LRadio::getSoundStreamID() const
+{
+ return m_SoundStreamID;
+}
+
+
+const RadioStation &V4LRadio::getCurrentStation() const
+{
+ return m_currentStation;
+}
+
+
+const QString &V4LRadio::getDescription() const
+{
+ return m_caps.description;
+}
+
+
+SoundStreamID V4LRadio::getCurrentSoundStreamID() const
+{
+ return m_SoundStreamID;
+}
+
+
+
+
+bool V4LRadio::setTreble (SoundStreamID id, float t)
+{
+ if (id != m_SoundStreamID)
+ return false;
+
+ if (t > 1.0) t = 1.0;
+ if (t < 0) t = 0.0;
+ if ((int)rint(m_treble*65535) != (int)rint(t*65535)) {
+ m_treble = t;
+ writeAudioInfo();
+ notifyTrebleChanged(id, t);
+ }
+ return true;
+}
+
+
+bool V4LRadio::setBass (SoundStreamID id, float b)
+{
+ if (id != m_SoundStreamID)
+ return false;
+
+ if (b > 1.0) b = 1.0;
+ if (b < 0) b = 0.0;
+ if ((int)rint(m_bass*65535) != (int)rint(b*65535)) {
+ m_bass = b;
+ writeAudioInfo();
+ notifyBassChanged(id, b);
+ }
+
+ return true;
+}
+
+
+bool V4LRadio::setBalance (SoundStreamID id, float b)
+{
+ if (id != m_SoundStreamID)
+ return false;
+
+ if (b > +1.0) b = +1.0;
+ if (b < -1.0) b = -1.0;
+ if ((int)rint(m_balance*32767) != (int)rint(b*32767)) {
+ m_balance = b;
+ writeAudioInfo();
+ notifyBalanceChanged(id, b);
+ }
+ return true;
+}
+
+
+bool V4LRadio::setDeviceVolume (float v)
+{
+ if (v > 1.0) v = 1.0;
+ if (v < 0) v = 0;
+ if ((int)rint(m_deviceVolume*65535) != (int)rint(v*65535)) {
+ m_deviceVolume = v;
+ writeAudioInfo();
+ notifyDeviceVolumeChanged(v);
+ }
+ return true;
+}
+
+
+bool V4LRadio::mute (SoundStreamID id, bool mute)
+{
+ if (id != m_SoundStreamID)
+ return false;
+
+ if (m_muted != mute) {
+ m_muted = mute;
+ bool r = writeAudioInfo();
+ if (r)
+ notifyMuted(id, m_muted);
+ return r;
+ }
+ return false;
+}
+
+
+bool V4LRadio::unmute (SoundStreamID id, bool unmute)
+{
+ return mute(id, !unmute);
+}
+
+
+bool V4LRadio::setSignalMinQuality (SoundStreamID id, float mq)
+{
+ if (id != m_SoundStreamID)
+ return false;
+ if (rint(mq*100) == rint(m_minQuality*100))
+ return true;
+
+ m_minQuality = mq;
+ notifySignalMinQualityChanged(id, m_minQuality);
+ return true;
+}
+
+
+bool V4LRadio::setStereo(SoundStreamID /*id*/, bool /*b*/)
+{
+ // FIXME if possible
+ return false; // we can't do that currently, not even switch stereo to mono
+}
+
+
+
+
+bool V4LRadio::getTreble (SoundStreamID id, float &t) const
+{
+ if (id != m_SoundStreamID)
+ return false;
+
+ readAudioInfo();
+ t = m_treble;
+ return true;
+}
+
+
+bool V4LRadio::getBass (SoundStreamID id, float &b) const
+{
+ if (id != m_SoundStreamID)
+ return false;
+
+ readAudioInfo();
+ b = m_bass;
+ return true;
+}
+
+
+bool V4LRadio::getBalance (SoundStreamID id, float &b) const
+{
+ if (id != m_SoundStreamID)
+ return false;
+
+ readAudioInfo();
+ b = m_balance;
+ return true;
+}
+
+
+float V4LRadio::getDeviceVolume () const
+{
+ readAudioInfo();
+ return m_deviceVolume;
+}
+
+
+
+bool V4LRadio::getSignalMinQuality(SoundStreamID id, float &q) const
+{
+ if (id != m_SoundStreamID)
+ return false;
+
+ q = m_minQuality;
+ return true;
+}
+
+
+bool V4LRadio::getSignalQuality(SoundStreamID id, float &q) const
+{
+ if (id != m_SoundStreamID)
+ return false;
+
+ readTunerInfo();
+ q = m_signalQuality;
+ return true;
+}
+
+
+bool V4LRadio::hasGoodQuality(SoundStreamID id, bool &good) const
+{
+ if (id != m_SoundStreamID)
+ return false;
+
+ float q = 0;
+ if (getSignalQuality(id, q))
+ good = q >= m_minQuality;
+ return true;
+}
+
+
+bool V4LRadio::isStereo(SoundStreamID id, bool &s) const
+{
+ if (id != m_SoundStreamID)
+ return false;
+
+ readAudioInfo();
+ s = m_stereo;
+ return true;
+}
+
+
+bool V4LRadio::isMuted(SoundStreamID id, bool &m) const
+{
+ if (id != m_SoundStreamID)
+ return false;
+
+ readAudioInfo();
+ m = m_muted;
+ return true;
+}
+
+
+// ISeekRadio
+
+bool V4LRadio::toBeginning()
+{
+ setFrequency(getMinFrequency());
+ return true;
+}
+
+bool V4LRadio::toEnd()
+{
+ setFrequency(getMaxFrequency());
+ return true;
+}
+
+bool V4LRadio::startSeekUp()
+{
+ return startSeek(true);
+}
+
+bool V4LRadio::startSeekDown()
+{
+ return startSeek(false);
+}
+
+bool V4LRadio::startSeek(bool up)
+{
+ if (isPowerOn() && m_seekHelper) {
+ m_seekHelper->start(m_SoundStreamID, up ? SeekHelper::up : SeekHelper::down);
+ return true;
+ } else {
+ return false;
+ }
+}
+
+bool V4LRadio::stopSeek()
+{
+ if (m_seekHelper) m_seekHelper->stop();
+ return true;
+}
+
+bool V4LRadio::isSeekRunning() const
+{
+ if (m_seekHelper)
+ return m_seekHelper->isRunning();
+ else
+ return false;
+}
+
+
+bool V4LRadio::isSeekUpRunning() const
+{
+ if (m_seekHelper)
+ return m_seekHelper->isRunningUp();
+ else
+ return false;
+}
+
+
+bool V4LRadio::isSeekDownRunning() const
+{
+ if (m_seekHelper)
+ return m_seekHelper->isRunningDown();
+ else
+ return false;
+}
+
+float V4LRadio::getProgress () const
+{
+ float min = getMinFrequency();
+ float max = getMaxFrequency();
+
+ return (getFrequency() - min) / (max - min);
+}
+
+
+// IFrequencyRadio
+
+bool V4LRadio::setFrequency(float freq)
+{
+// if (isSeekRunning())
+// stopSeek();
+
+ if (m_currentStation.frequency() == freq) {
+ return true;
+ }
+
+ float minf = getMinFrequency();
+ float maxf = getMaxFrequency();
+
+ if (isPowerOn()) {
+
+ bool oldMute = false;
+ isMuted(m_SoundStreamID, oldMute);
+ if (!oldMute && !m_ActivePlayback)
+ mute(m_SoundStreamID);
+
+
+ if (!m_tunercache.valid) readTunerInfo();
+ float df = m_tunercache.deltaF;
+
+ unsigned long lfreq = (unsigned long) rint(freq / df);
+
+ if (freq > maxf || freq < minf) {
+ logError("V4LRadio::setFrequency: " +
+ i18n("invalid frequency %1").arg(QString().setNum(freq)));
+ if (!oldMute && !m_ActivePlayback)
+ unmute(m_SoundStreamID);
+ return false;
+ }
+
+ int r = -1;
+ if (m_caps.version == 1) {
+ r = ioctl(m_radio_fd, VIDIOCSFREQ, &lfreq);
+ }
+#ifdef HAVE_V4L2
+ else if (m_caps.version == 2) {
+ v4l2_frequency tmp;
+ tmp.tuner = 0;
+ tmp.type = V4L2_TUNER_RADIO;
+ tmp.frequency = lfreq;
+ r = ioctl(m_radio_fd, VIDIOC_S_FREQUENCY, &tmp);
+ }
+#endif
+ else {
+ logError("V4LRadio::setFrequency: " +
+ i18n("don't known how to handle V4L-version %1")
+ .arg(m_caps.version));
+ }
+
+ if (r) {
+ logError("V4LRadio::setFrequency: " +
+ i18n("error setting frequency to %1 (%2)")
+ .arg(QString().setNum(freq))
+ .arg(QString().setNum(r)));
+ // unmute the old radio with the old radio station
+ if (!oldMute && !m_ActivePlayback)
+ unmute(m_SoundStreamID);
+ return false;
+ }
+
+ // unmute this radio device, because we now have the current
+ // radio station
+ if (!oldMute && !m_ActivePlayback)
+ unmute(m_SoundStreamID);
+ }
+
+ m_currentStation.setFrequency(freq);
+ notifyFrequencyChanged(freq, &m_currentStation);
+ notifyStationChanged(m_currentStation);
+ notifyProgress((freq - minf) / (maxf - minf));
+ notifySoundStreamChanged(m_SoundStreamID);
+ return true;
+}
+
+
+bool V4LRadio::setMinFrequency (float minF)
+{
+ float oldm = getMinFrequency();
+ m_minFrequency = minF;
+
+ float newm = getMinFrequency();
+ if (oldm != newm)
+ notifyMinMaxFrequencyChanged(newm, getMaxFrequency());
+
+ return true;
+}
+
+
+bool V4LRadio::setMaxFrequency (float maxF)
+{
+ float oldm = getMaxFrequency();
+ m_maxFrequency = maxF;
+
+ float newm = getMaxFrequency();
+ if (oldm != newm)
+ notifyMinMaxFrequencyChanged(getMinFrequency(), newm);
+
+ return true;
+}
+
+
+bool V4LRadio::setScanStep(float s)
+{
+ float old = m_scanStep;
+ m_scanStep = s;
+
+ if (old != s) notifyScanStepChanged(m_scanStep);
+ return true;
+}
+
+
+float V4LRadio::getFrequency() const
+{
+ return m_currentStation.frequency();
+}
+
+
+float V4LRadio::getMinFrequency() const
+{
+ return m_minFrequency ? m_minFrequency : getMinDeviceFrequency();
+}
+
+
+float V4LRadio::getMaxFrequency() const
+{
+ return m_maxFrequency ? m_maxFrequency : getMaxDeviceFrequency();
+}
+
+
+float V4LRadio::getMinDeviceFrequency() const
+{
+ if (!m_tunercache.valid)
+ readTunerInfo();
+
+ return m_tunercache.minF;
+}
+
+
+float V4LRadio::getMaxDeviceFrequency() const
+{
+ if (!m_tunercache.valid)
+ readTunerInfo();
+
+ return m_tunercache.maxF;
+}
+
+
+float V4LRadio::getScanStep() const
+{
+ return m_scanStep;
+}
+
+
+
+// IV4LCfg methods
+
+bool V4LRadio::setRadioDevice(const QString &s)
+{
+ if (m_radioDev != s) {
+ bool p = isPowerOn();
+ powerOff();
+ m_radioDev = s;
+
+ m_caps = readV4LCaps(m_radioDev);
+ notifyRadioDeviceChanged(m_radioDev);
+ notifyDescriptionChanged(m_caps.description);
+ notifyCapabilitiesChanged(m_caps);
+ setPower(p);
+ }
+ return true;
+}
+
+
+bool V4LRadio::setPlaybackMixer(const QString &soundStreamClientID, const QString &ch)
+{
+ bool change = m_PlaybackMixerID != soundStreamClientID || m_PlaybackMixerChannel != ch;
+ m_PlaybackMixerID = soundStreamClientID;
+ m_PlaybackMixerChannel = ch;
+
+
+ if (isPowerOn()) {
+ queryPlaybackVolume(m_SoundStreamID, m_defaultPlaybackVolume);
+ sendStopPlayback(m_SoundStreamID);
+ sendReleasePlayback(m_SoundStreamID);
+ }
+
+ ISoundStreamClient *playback_mixer = NULL;
+ searchMixers(&playback_mixer, NULL);
+ if (playback_mixer)
+ playback_mixer->preparePlayback(m_SoundStreamID, m_PlaybackMixerChannel, m_ActivePlayback, false);
+
+ if (isPowerOn()) {
+ sendStartPlayback(m_SoundStreamID);
+ sendPlaybackVolume(m_SoundStreamID, m_defaultPlaybackVolume);
+ if (m_ActivePlayback) {
+ SoundFormat sf;
+ sendStartCaptureWithFormat(m_SoundStreamID, sf, sf);
+ }
+ }
+
+ if (change)
+ notifyPlaybackMixerChanged(soundStreamClientID, ch);
+
+ return true;
+}
+
+
+bool V4LRadio::setCaptureMixer(const QString &soundStreamClientID, const QString &ch)
+{
+ bool change = m_PlaybackMixerID != soundStreamClientID || m_PlaybackMixerChannel != ch;
+ m_CaptureMixerID = soundStreamClientID;
+ m_CaptureMixerChannel = ch;
+
+ bool r = false;
+ SoundFormat sf;
+ queryIsCaptureRunning(m_SoundStreamID, r, sf);
+
+ float v = 0;
+ if (isPowerOn() && r) {
+ queryCaptureVolume(m_SoundStreamID, v);
+ sendStopCapture(m_SoundStreamID);
+ sendReleaseCapture(m_SoundStreamID);
+ }
+
+ ISoundStreamClient *capture_mixer = NULL;
+ searchMixers(NULL, &capture_mixer);
+ if (capture_mixer)
+ capture_mixer->prepareCapture(m_SoundStreamID, m_CaptureMixerChannel);
+
+ if (isPowerOn() && r) {
+ sendStartCaptureWithFormat(m_SoundStreamID, sf, sf);
+ sendCaptureVolume(m_SoundStreamID, v);
+ }
+
+ if (change)
+ notifyCaptureMixerChanged(soundStreamClientID, ch);
+
+ return true;
+}
+
+
+V4LCaps V4LRadio::getCapabilities(QString dev) const
+{
+ if (dev.isNull()) {
+ return m_caps;
+ } else {
+ return readV4LCaps(dev);
+ }
+}
+
+
+bool V4LRadio::setActivePlayback(bool a)
+{
+ if (a == m_ActivePlayback)
+ return true;
+
+
+ if (isPowerOn()) {
+ queryPlaybackVolume(m_SoundStreamID, m_defaultPlaybackVolume);
+ sendStopPlayback(m_SoundStreamID);
+ sendReleasePlayback(m_SoundStreamID);
+ if (m_ActivePlayback) {
+ sendStopCapture(m_SoundStreamID);
+ }
+ }
+
+ m_ActivePlayback = a;
+
+ ISoundStreamClient *playback_mixer = NULL;
+ searchMixers(&playback_mixer, NULL);
+ if (playback_mixer)
+ playback_mixer->preparePlayback(m_SoundStreamID, m_PlaybackMixerChannel, m_ActivePlayback, false);
+
+ if (isPowerOn()) {
+ sendStartPlayback(m_SoundStreamID);
+ sendPlaybackVolume(m_SoundStreamID, m_defaultPlaybackVolume);
+ if (m_ActivePlayback) {
+ SoundFormat sf;
+ sendStartCaptureWithFormat(m_SoundStreamID, sf, sf);
+ }
+ }
+
+ // FIXME: restart playback/capture
+ notifyActivePlaybackChanged(m_ActivePlayback);
+
+ return true;
+}
+
+bool V4LRadio::setMuteOnPowerOff(bool a)
+{
+ if (a != m_MuteOnPowerOff) {
+ m_MuteOnPowerOff = a;
+ notifyMuteOnPowerOffChanged(m_MuteOnPowerOff);
+ }
+ return true;
+}
+
+bool V4LRadio::setVolumeZeroOnPowerOff(bool a)
+{
+ if (a != m_VolumeZeroOnPowerOff) {
+ m_VolumeZeroOnPowerOff = a;
+ notifyVolumeZeroOnPowerOffChanged(m_VolumeZeroOnPowerOff);
+ }
+ return true;
+}
+
+// PluginBase methods
+
+void V4LRadio::saveState (KConfig *config) const
+{
+ config->setGroup(QString("v4lradio-") + name());
+
+ config->writeEntry("RadioDev", m_radioDev);
+
+ config->writeEntry("PlaybackMixerID", m_PlaybackMixerID);
+ config->writeEntry("PlaybackMixerChannel", m_PlaybackMixerChannel);
+ config->writeEntry("CaptureMixerID", m_CaptureMixerID);
+ config->writeEntry("CaptureMixerChannel", m_CaptureMixerChannel);
+
+ config->writeEntry("fMinOverride", m_minFrequency);
+ config->writeEntry("fMaxOverride", m_maxFrequency);
+ config->writeEntry("fLastDevMin", m_lastMinDevFrequency);
+ config->writeEntry("fLastDevMax", m_lastMaxDevFrequency);
+
+ config->writeEntry("defaultPlaybackVolume", m_defaultPlaybackVolume);
+
+ config->writeEntry("signalMinQuality", m_minQuality);
+
+ config->writeEntry("scanStep", m_scanStep);
+
+ config->writeEntry("Frequency", m_currentStation.frequency());
+ config->writeEntry("Treble", m_treble);
+ config->writeEntry("Bass", m_bass);
+ config->writeEntry("Balance", m_balance);
+ config->writeEntry("DeviceVolume", m_deviceVolume);
+
+ config->writeEntry("PowerOn", isPowerOn());
+ config->writeEntry("UseOldV4L2Calls", m_useOldV4L2Calls);
+
+ config->writeEntry("ActivePlayback", m_ActivePlayback);
+ config->writeEntry("MuteOnPowerOff", m_MuteOnPowerOff);
+ config->writeEntry("VolumeZeroOnPowerOff", m_VolumeZeroOnPowerOff);
+}
+
+
+void V4LRadio::restoreState (KConfig *config)
+{
+ BlockProfiler p("V4LRadio::restoreState");
+
+ config->setGroup(QString("v4lradio-") + name());
+
+ QString base_devname = "/dev/radio";
+
+ QStringList testlist (base_devname );
+ for (int i = 0; i < 9; ++i)
+ testlist.append(base_devname + QString::number(i));
+
+ QString found_devname(QString::null);
+ for (QValueListConstIterator<QString> it = testlist.begin(); it != testlist.end(); ++it) {
+ QFile f(*it);
+ if (f.exists()) {
+ QFileInfo info(f);
+ if (info.isReadable() && info.isWritable()) {
+ found_devname = *it;
+ break;
+ }
+ else {
+ if (found_devname.isNull())
+ found_devname = *it;
+ logWarning(i18n("Device %1 does exist but is not readable/writable. Please check device permissions.").arg(*it));
+ }
+ }
+ }
+
+ QString default_devname = found_devname.isNull() ? base_devname : found_devname;
+
+ QString devname = config->readEntry ("RadioDev", default_devname);
+
+ if (found_devname.isNull() && devname == default_devname) {
+ logError(i18n("Could not find an accessible v4l(2) radio device."));
+ }
+
+ setRadioDevice(devname);
+
+ QString PlaybackMixerID = config->readEntry ("PlaybackMixerID", QString::null);
+ QString PlaybackMixerChannel = config->readEntry ("PlaybackMixerChannel", "Line");
+
+ QString CaptureMixerID = config->readEntry ("CaptureMixerID", QString::null);
+ QString CaptureMixerChannel = config->readEntry ("CaptureMixerChannel", "Line");
+
+ m_ActivePlayback = config->readBoolEntry("ActivePlayback", false);
+ m_MuteOnPowerOff = config->readBoolEntry("MuteOnPowerOff", false);
+ m_VolumeZeroOnPowerOff = config->readBoolEntry("VolumeZeroOnPowerOff", false);
+
+ m_lastMinDevFrequency = config->readDoubleNumEntry ("fLastDevMin", 65.0);
+ m_lastMaxDevFrequency = config->readDoubleNumEntry ("fLastDevMax", 108.0);
+ m_minFrequency = config->readDoubleNumEntry ("fMinOverride", m_lastMinDevFrequency);
+ m_maxFrequency = config->readDoubleNumEntry ("fMaxOverride", m_lastMaxDevFrequency);
+
+ m_minQuality = config->readDoubleNumEntry ("signalMinQuality", 0.75);
+ m_scanStep = config->readDoubleNumEntry ("scanStep", 0.05);
+ m_defaultPlaybackVolume = config->readDoubleNumEntry ("defaultPlaybackVolume", 0.5);
+
+ setPlaybackMixer(PlaybackMixerID, PlaybackMixerChannel);
+ setCaptureMixer (CaptureMixerID, CaptureMixerChannel);
+ notifyDeviceMinMaxFrequencyChanged(m_lastMinDevFrequency, m_lastMaxDevFrequency);
+ notifyMinMaxFrequencyChanged(m_minFrequency, m_maxFrequency);
+ notifySignalMinQualityChanged(m_SoundStreamID, m_minQuality);
+ notifyScanStepChanged(m_scanStep);
+ notifyActivePlaybackChanged(m_ActivePlayback);
+ notifyMuteOnPowerOffChanged(m_MuteOnPowerOff);
+ notifyVolumeZeroOnPowerOffChanged(m_VolumeZeroOnPowerOff);
+
+ BlockProfiler p2("V4LRadio::restoreState2");
+
+ setFrequency(config->readDoubleNumEntry("Frequency", 88));
+ m_restorePowerOn = config->readBoolEntry ("PowerOn", false);
+
+ BlockProfiler p3("V4LRadio::restoreState3");
+
+ setTreble (m_SoundStreamID, config->readDoubleNumEntry("Treble", 0.5));
+ setBass (m_SoundStreamID, config->readDoubleNumEntry("Bass", 0.5));
+ setBalance (m_SoundStreamID, config->readDoubleNumEntry("Balance", 0.0));
+ setDeviceVolume( config->readDoubleNumEntry("DeviceVolume", 0.9));
+
+ m_useOldV4L2Calls = config->readBoolEntry("UseOldV4L2Calls", true);
+
+ if (isPowerOff())
+ notifyPlaybackVolumeChanged(m_SoundStreamID, m_defaultPlaybackVolume);
+}
+
+void V4LRadio::startPlugin()
+{
+ PluginBase::startPlugin();
+ setPower(m_restorePowerOn);
+}
+
+ConfigPageInfo V4LRadio::createConfigurationPage()
+{
+ V4LRadioConfiguration *v4lconf = new V4LRadioConfiguration(NULL, m_SoundStreamID);
+ connectI(v4lconf);
+ return ConfigPageInfo (v4lconf,
+ i18n("V4L Radio"),
+ i18n("V4L Radio Options"),
+ "package_utilities");
+}
+
+
+AboutPageInfo V4LRadio::createAboutPage()
+{
+ KAboutData aboutData("kradio",
+ NULL,
+ NULL,
+ I18N_NOOP("V4L/V4L2 Plugin for KRadio."
+ "<P>"
+ "Provides Support for V4L/V4L2 based Radio Cards"
+ "<P>"),
+ 0,
+ //KAboutData::License_GPL,
+ "(c) 2002-2005 Martin Witte, Klas Kalass",
+ 0,
+ "http://sourceforge.net/projects/kradio",
+ 0);
+ aboutData.addAuthor("Martin Witte", "", "witte@kawo1.rwth-aachen.de");
+ aboutData.addAuthor("Klas Kalass", "", "klas.kalass@gmx.de");
+
+ return AboutPageInfo(
+ new KRadioAboutWidget(aboutData, KRadioAboutWidget::AbtTabbed),
+ i18n("V4L/V4L2"),
+ i18n("V4L/V4L2 Plugin"),
+ "package_utilities"
+ );
+}
+
+////////////////////////////////////////
+// anything else
+
+void V4LRadio::radio_init()
+{
+ if (isSeekRunning())
+ stopSeek();
+
+ m_caps = readV4LCaps(m_radioDev);
+ notifyCapabilitiesChanged(m_caps);
+ notifyDescriptionChanged(m_caps.description);
+
+/* m_mixer_fd = open(m_mixerDev, O_RDONLY);
+ if (m_mixer_fd < 0) {
+ radio_done();
+
+ logError("V4LRadio::radio_init: " +
+ i18n("Cannot open mixer device %1").arg(m_mixerDev));
+ return;
+ }
+*/
+ m_radio_fd = open(m_radioDev.ascii(), O_RDONLY);
+ if (m_radio_fd < 0) {
+ radio_done();
+
+ logError("V4LRadio::radio_init: " +
+ i18n("Cannot open radio device %1").arg(m_radioDev));
+ return;
+ }
+
+ readTunerInfo();
+ writeAudioInfo(); // set tuner-audio config as used last time
+ readAudioInfo(); // reread tuner-audio and read-only flags (e.g. stereo)
+
+ // restore frequency
+ float old = getFrequency();
+ m_currentStation.setFrequency(0);
+ setFrequency(old);
+
+ // read volume level from mixer
+ // FIXME: do we still need this
+/* float v = 0;
+ getVolume(m_SoundStreamID, v)
+ setVolume (m_SoundStreamID, v);*/
+}
+
+
+void V4LRadio::radio_done()
+{
+ if (isSeekRunning())
+ stopSeek();
+
+ if (m_radio_fd >= 0) close (m_radio_fd);
+// if (m_mixer_fd >= 0) close (m_mixer_fd);
+
+ m_radio_fd = -1;
+// m_mixer_fd = -1;
+}
+
+
+
+
+
+#define CAPS_NAME_LEN 127
+V4LCaps V4LRadio::readV4LCaps(const QString &device) const
+{
+ char buffer[CAPS_NAME_LEN+1];
+ int r;
+ int fd;
+
+ V4LCaps c;
+ c.description = device;
+
+ fd = open(device.ascii(), O_RDONLY);
+
+ if (fd < 0) {
+ logError("V4LRadio::readV4LCaps: " +
+ i18n("cannot open %1").arg(device));
+ return c;
+ }
+
+ video_capability caps;
+ r = ioctl(fd, VIDIOCGCAP, &caps);
+ if (r == 0) {
+ c.version = 1;
+
+ size_t l = sizeof(caps.name);
+ l = l < CAPS_NAME_LEN ? l : CAPS_NAME_LEN;
+ memcpy(buffer, caps.name, l);
+ buffer[l] = 0;
+ c.description = buffer;
+
+ c.hasMute = false;
+ c.unsetVolume();
+ c.unsetTreble();
+ c.unsetBass();
+ c.unsetBalance();
+
+ video_audio audiocaps;
+ if (0 == ioctl(fd, VIDIOCGAUDIO, &audiocaps)) {
+ logDebug("V4LRadio::readV4LCaps: " +
+ i18n("audio caps = %1").arg(QString().setNum(audiocaps.flags)));
+ if ((audiocaps.flags & VIDEO_AUDIO_MUTABLE) != 0)
+ c.hasMute = true;
+ if ((audiocaps.flags & VIDEO_AUDIO_VOLUME) != 0)
+ c.setVolume (0, 65535);
+ if ((audiocaps.flags & VIDEO_AUDIO_TREBLE) != 0)
+ c.setTreble (0, 65535);
+ if ((audiocaps.flags & VIDEO_AUDIO_BASS) != 0)
+ c.setBass (0, 65535);
+ // at least my driver has support for balance, but the bit is not set ...
+ c.setBalance(0, 65535);
+ }
+ } else {
+ logError("V4LRadio::readV4LCaps: " +
+ i18n("error reading V4L1 caps"));
+ }
+
+#ifdef HAVE_V4L2
+ v4l2_capability caps2;
+ r = ioctl(fd, VIDIOC_QUERYCAP, &caps2);
+ if (r == 0) {
+ c.version = 2;
+
+ logDebug(i18n("V4L2 - Version: %1").arg(QString().sprintf("%08X", caps2.version)));
+
+ size_t l = sizeof(caps.name);
+ l = l < CAPS_NAME_LEN ? l : CAPS_NAME_LEN;
+ memcpy(buffer, caps.name, l);
+ buffer[l] = 0;
+ // c.description = buffer;
+
+ v4l2_queryctrl ctrl;
+
+ c.hasMute = false;
+ c.unsetVolume();
+ c.unsetTreble();
+ c.unsetBass();
+ c.unsetBalance();
+
+ ctrl.id = V4L2_CID_AUDIO_MUTE;
+ if (0 == ioctl(fd, VIDIOC_QUERYCTRL, &ctrl))
+ c.hasMute = !(ctrl.flags & V4L2_CTRL_FLAG_DISABLED);
+ else
+ logError(i18n("V4L2: Querying mute control failed"));
+
+ ctrl.id = V4L2_CID_AUDIO_VOLUME;
+ if (0 == ioctl(fd, VIDIOC_QUERYCTRL, &ctrl)) {
+ if (!(ctrl.flags & V4L2_CTRL_FLAG_DISABLED))
+ c.setVolume(ctrl.minimum, ctrl.maximum);
+ } else {
+ logError(i18n("V4L2: Querying volume control failed"));
+ }
+
+ ctrl.id = V4L2_CID_AUDIO_TREBLE;
+ if (0 == ioctl(fd, VIDIOC_QUERYCTRL, &ctrl)) {
+ if (!(ctrl.flags & V4L2_CTRL_FLAG_DISABLED))
+ c.setTreble(ctrl.minimum, ctrl.maximum);
+ } else {
+ logError(i18n("V4L2: Querying treble control failed"));
+ }
+
+ ctrl.id = V4L2_CID_AUDIO_BASS;
+ if (0 == ioctl(fd, VIDIOC_QUERYCTRL, &ctrl)) {
+ if (!(ctrl.flags & V4L2_CTRL_FLAG_DISABLED))
+ c.setBass(ctrl.minimum, c.maxBass = ctrl.maximum);
+ } else {
+ logError(i18n("V4L2: Querying bass control failed"));
+ }
+
+ ctrl.id = V4L2_CID_AUDIO_BALANCE;
+ if (0 == ioctl(fd, VIDIOC_QUERYCTRL, &ctrl)) {
+ if (!(ctrl.flags & V4L2_CTRL_FLAG_DISABLED))
+ c.setBalance(ctrl.minimum, ctrl.maximum);
+ } else {
+ logError(i18n("V4L2: Querying balance control failed"));
+ }
+
+ } else {
+ logWarning(i18n("V4LRadio::readV4LCaps: Reading V4L2 caps failed"));
+ }
+#endif
+ if (c.version > 0) {
+ logInfo(i18n("V4L %1 detected").arg(c.version));
+ } else {
+ logError(i18n("V4L not detected"));
+ }
+
+ logInfo(c.hasMute ? i18n("Radio is mutable") : i18n("Radio is not mutable"));
+ logInfo(c.hasVolume ? i18n("Radio has Volume Control") : i18n("Radio has no Volume Control"));
+ logInfo(c.hasBass ? i18n("Radio has Bass Control") : i18n("Radio has no Bass Control"));
+ logInfo(c.hasTreble ? i18n("Radio has Treble Control") : i18n("Radio has no Treble Control"));
+
+ close(fd);
+ return c;
+}
+
+
+bool V4LRadio::readTunerInfo() const
+{
+ if (m_blockReadTuner) return true;
+
+ float oldq = m_signalQuality;
+ float oldminf = m_tunercache.minF;
+ float oldmaxf = m_tunercache.maxF;
+
+ if (!m_tunercache.valid) {
+ m_tunercache.minF = m_lastMinDevFrequency;
+ m_tunercache.maxF = m_lastMaxDevFrequency;
+ m_tunercache.deltaF = 1.0/16.0;
+ m_tunercache.valid = true;
+ }
+
+ int r = 0;
+ if (isPowerOn()) {
+
+ // v4l1
+ if (m_caps.version == 1) {
+
+ r = ioctl(m_radio_fd, VIDIOCGTUNER, m_tuner);
+
+ if (r == 0) {
+ if ((m_tuner->flags & VIDEO_TUNER_LOW) != 0)
+ m_tunercache.deltaF = 1.0 / 16000.0;
+ m_tunercache.minF = float(m_tuner->rangelow) * m_tunercache.deltaF;
+ m_tunercache.maxF = float(m_tuner->rangehigh) * m_tunercache.deltaF;
+ m_tunercache.valid = true;
+ m_signalQuality = float(m_tuner->signal) / 32767.0;
+
+ }
+ }
+#ifdef HAVE_V4L2
+ // v4l2
+ else if (m_caps.version == 2) {
+
+ r = ioctl(m_radio_fd, VIDIOC_G_TUNER, m_tuner2);
+
+ if (r == 0) {
+ if ((m_tuner2->capability & V4L2_TUNER_CAP_LOW) != 0)
+ m_tunercache.deltaF = 1.0 / 16000.0;
+ m_tunercache.minF = float(m_tuner2->rangelow) * m_tunercache.deltaF;
+ m_tunercache.maxF = float(m_tuner2->rangehigh) * m_tunercache.deltaF;
+ m_tunercache.valid = true;
+ m_signalQuality = float(m_tuner2->signal) / 32767.0;
+ }
+ }
+#endif
+ else {
+ logError("V4LRadio::readTunerInfo: " +
+ i18n("don't known how to handle V4L-version %1")
+ .arg(QString().setNum(m_caps.version)));
+ }
+
+ if (r != 0) {
+ m_signalQuality = 0;
+ logError("V4LRadio::readTunerInfo: " +
+ i18n("cannot get tuner info (error %1)").arg(QString().setNum(r)));
+ }
+ } else {
+ m_signalQuality = 0;
+ }
+
+ // prevent loops, if noticeXYZ-method is reading my state
+ m_blockReadTuner = true;
+
+ if (oldminf != m_tunercache.minF || oldmaxf != m_tunercache.maxF)
+ notifyDeviceMinMaxFrequencyChanged(m_tunercache.minF, m_tunercache.maxF);
+ m_lastMinDevFrequency = m_tunercache.minF;
+ m_lastMaxDevFrequency = m_tunercache.maxF;
+
+ if ( ! m_minFrequency && (oldminf != m_tunercache.minF)
+ || ! m_maxFrequency && (oldmaxf != m_tunercache.maxF))
+ notifyMinMaxFrequencyChanged(getMinFrequency(), getMaxFrequency());
+
+
+ if (m_signalQuality != oldq)
+ notifySignalQualityChanged(m_SoundStreamID, m_signalQuality);
+ if ( (m_signalQuality >= m_minQuality) != (oldq >= m_minQuality))
+ notifySignalQualityBoolChanged(m_SoundStreamID, m_signalQuality > m_minQuality);
+
+ m_blockReadTuner = false;
+
+ return true;
+}
+
+
+
+#define V4L2_S_CTRL(what,val) \
+ { ctl.value = (val); \
+ ctl.id = (what); \
+ /* Problem: Current V4L2 development has changed the IOCTL-IDs for VIDIOC_S_CTRL */ \
+ /* => we must du "try and error" to figure out what version we should use */ \
+ r = ioctl (m_radio_fd, m_useOldV4L2Calls ? VIDIOC_S_CTRL_OLD : VIDIOC_S_CTRL, &ctl); \
+ /* in case this did not work, try the other version of the call */ \
+ if (r) { \
+ r = ioctl (m_radio_fd, !m_useOldV4L2Calls ? VIDIOC_S_CTRL_OLD : VIDIOC_S_CTRL, &ctl); \
+ if (!r) m_useOldV4L2Calls = !m_useOldV4L2Calls; \
+ } \
+ x = x ? x : r; \
+ if (r) \
+ logError(i18n("error setting %1: %2").arg(#what).arg(QString().setNum(r))); \
+ }
+
+#define V4L2_G_CTRL(what) \
+ { ctl.id = (what); \
+ r = ioctl (m_radio_fd, VIDIOC_G_CTRL, &ctl); \
+ x = x ? x : r; \
+ if (r) \
+ logError(i18n("error reading %1: %2").arg(#what).arg(QString().setNum(r))); \
+ }
+
+
+bool V4LRadio::updateAudioInfo(bool write) const
+{
+ if (m_blockReadAudio && !write)
+ return true;
+
+ bool oldStereo = m_stereo;
+ bool oldMute = m_muted;
+ int iOldDeviceVolume = m_caps.intGetVolume (m_deviceVolume);
+ int iOldTreble = m_caps.intGetTreble (m_treble);
+ int iOldBass = m_caps.intGetBass (m_bass);
+ int iOldBalance = m_caps.intGetBalance(m_balance);
+
+ if (isPowerOn()) {
+ int r = 0;
+ if (m_caps.version == 1) {
+ m_audio->audio = 0;
+ if (m_muted) m_audio->flags |= VIDEO_AUDIO_MUTE;
+ else m_audio->flags &= ~VIDEO_AUDIO_MUTE;
+
+ m_audio->volume = m_caps.intGetVolume (m_deviceVolume);
+ m_audio->treble = m_caps.intGetTreble (m_treble);
+ m_audio->bass = m_caps.intGetBass (m_bass);
+ m_audio->balance = m_caps.intGetBalance(m_balance);
+
+ r = ioctl(m_radio_fd, write ? VIDIOCSAUDIO : VIDIOCGAUDIO, m_audio);
+
+ m_stereo = (r == 0) && ((m_audio->mode & VIDEO_SOUND_STEREO) != 0);
+
+ m_muted = m_caps.hasMute &&
+ ((r != 0) || ((m_audio->flags & VIDEO_AUDIO_MUTE) != 0));
+
+ /* Some drivers seem to set volumes to zero if they are muted.
+ Thus we do not reload them if radio is muted */
+ if (!m_muted && !write) {
+ m_deviceVolume = m_caps.hasVolume && !r ? m_caps.floatGetVolume (m_audio->volume) : 1;
+ m_treble = m_caps.hasTreble && !r ? m_caps.floatGetTreble (m_audio->treble) : 1;
+ m_bass = m_caps.hasBass && !r ? m_caps.floatGetBass (m_audio->bass) : 1;
+ m_balance = m_caps.hasBalance && !r ? m_caps.floatGetBalance(m_audio->balance) : 0;
+ }
+ }
+#ifdef HAVE_V4L2
+ else if (m_caps.version == 2) {
+ v4l2_control ctl;
+ int x = 0; // x stores first ioctl error
+ if (write) {
+ if (m_caps.hasMute)
+ V4L2_S_CTRL(V4L2_CID_AUDIO_MUTE, m_muted);
+ if (m_caps.hasTreble)
+ V4L2_S_CTRL(V4L2_CID_AUDIO_TREBLE, m_caps.intGetTreble(m_treble));
+ if (m_caps.hasBass)
+ V4L2_S_CTRL(V4L2_CID_AUDIO_BASS, m_caps.intGetBass(m_bass));
+ if (m_caps.hasBalance)
+ V4L2_S_CTRL(V4L2_CID_AUDIO_BALANCE, m_caps.intGetBalance(m_balance));
+ if (m_caps.hasVolume)
+ V4L2_S_CTRL(V4L2_CID_AUDIO_VOLUME, m_caps.intGetVolume(m_deviceVolume));
+ } else {
+ if (m_caps.hasMute)
+ V4L2_G_CTRL(V4L2_CID_AUDIO_MUTE);
+ m_muted = m_caps.hasMute && ((r != 0) || ctl.value);
+
+ /* Some drivers seem to set volumes to zero if they are muted.
+ Thus we do not reload them if radio is muted */
+ if (!m_muted) {
+ if (m_caps.hasVolume)
+ V4L2_G_CTRL(V4L2_CID_AUDIO_VOLUME);
+ m_deviceVolume = m_caps.hasVolume && !r ? m_caps.floatGetVolume (ctl.value) : 1;
+ if (m_caps.hasTreble)
+ V4L2_G_CTRL(V4L2_CID_AUDIO_TREBLE);
+ m_treble = m_caps.hasTreble && !r ? m_caps.floatGetTreble (ctl.value) : 1;
+ if (m_caps.hasBass)
+ V4L2_G_CTRL(V4L2_CID_AUDIO_BASS);
+ m_bass = m_caps.hasBass && !r ? m_caps.floatGetBass (ctl.value) : 1;
+ if (m_caps.hasBalance)
+ V4L2_G_CTRL(V4L2_CID_AUDIO_BALANCE);
+ m_balance = m_caps.hasBalance&& !r ? m_caps.floatGetBalance(ctl.value) : 0;
+ }
+
+ r = ioctl (m_radio_fd, VIDIOC_G_TUNER, m_tuner2);
+ m_stereo = (r == 0) && ((m_tuner2->rxsubchans & V4L2_TUNER_SUB_STEREO) != 0);
+ x = x ? x : r;
+ }
+ r = x; // store first error back to r, used below for error message
+ }
+#endif
+ else {
+ logError("V4LRadio::updateAudioInfo: " +
+ i18n("don't known how to handle V4L-version %1")
+ .arg(QString().setNum(m_caps.version)));
+ }
+
+ if (r) {
+ logError("V4LRadio::updateAudioInfo: " +
+ i18n("error updating radio audio info (%1): %2")
+ .arg(write ? i18n("write") : i18n("read"))
+ .arg(QString().setNum(r)));
+ return false;
+ }
+ }
+
+ // prevent loops, if noticeXYZ-method is reading my state
+ bool oldBlock = m_blockReadAudio;
+ m_blockReadAudio = true;
+
+ // send notifications
+
+ if (oldStereo != m_stereo)
+ notifyStereoChanged(m_SoundStreamID, m_stereo);
+ if (oldMute != m_muted)
+ notifyMuted(m_SoundStreamID, m_muted);
+ if (iOldDeviceVolume != m_caps.intGetVolume(m_deviceVolume))
+ notifyDeviceVolumeChanged(m_deviceVolume);
+ if (iOldTreble != m_caps.intGetTreble(m_treble))
+ notifyTrebleChanged(m_SoundStreamID, m_treble);
+ if (iOldBass != m_caps.intGetBass(m_bass))
+ notifyBassChanged(m_SoundStreamID, m_bass);
+ if (iOldBalance != m_caps.intGetBalance(m_balance))
+ notifyBalanceChanged(m_SoundStreamID, m_balance);
+
+ m_blockReadAudio = oldBlock;
+
+ return isPowerOn();
+}
+
+
+
+
+void V4LRadio::poll()
+{
+ readTunerInfo();
+ readAudioInfo();
+}
+
+
+bool V4LRadio::setPlaybackVolume(SoundStreamID id, float volume)
+{
+ if (isPowerOff() && id == m_SoundStreamID) {
+ m_defaultPlaybackVolume = min(max(volume, 0.0), 1.0);
+ return true;
+ } else {
+ return false;
+ }
+}
+
+bool V4LRadio::getPlaybackVolume(SoundStreamID id, float &volume) const
+{
+ if (isPowerOff() && id == m_SoundStreamID) {
+ volume = m_defaultPlaybackVolume;
+ return true;
+ } else {
+ return false;
+ }
+}
+
+
+
+bool V4LRadio::getSoundStreamDescription(SoundStreamID id, QString &descr) const
+{
+ if (id == m_SoundStreamID) {
+ descr = name() + " - " + m_currentStation.name();
+ return true;
+ }
+ else {
+ return false;
+ }
+}
+
+
+bool V4LRadio::getSoundStreamRadioStation(SoundStreamID id, const RadioStation *&rs) const
+{
+ if (id == m_SoundStreamID) {
+ rs = &m_currentStation;
+ return true;
+ }
+ else {
+ return false;
+ }
+}
+
+
+bool V4LRadio::enumerateSoundStreams(QMap<QString, SoundStreamID> &list) const
+{
+ if (m_SoundStreamID.isValid()) {
+ QString tmp = QString::null;
+ getSoundStreamDescription(m_SoundStreamID, tmp);
+ list[tmp] = m_SoundStreamID;
+ return true;
+ }
+ return false;
+}
+
+
+// bool V4LRadio::stopCapture(SoundStreamID id)
+// {
+// if (id.isValid() && id == m_SoundStreamID && m_ActivePlayback) {
+// sendStopPlayback(id);
+// return true;
+// }
+// return false;
+// }
+
+#include "v4lradio.moc"
diff --git a/kradio3/plugins/v4lradio/v4lradio.h b/kradio3/plugins/v4lradio/v4lradio.h
new file mode 100644
index 0000000..4b86cb5
--- /dev/null
+++ b/kradio3/plugins/v4lradio/v4lradio.h
@@ -0,0 +1,265 @@
+/***************************************************************************
+ v4lradio.h - description
+ -------------------
+ begin : Jan 2002
+ copyright : (C) 2002-2005 Ernst Martin Witte, Klas Kalass
+ email : witte@kawo1.rwth-aachen.de, klas@kde.org
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_V4LRADIO_H
+#define KRADIO_V4LRADIO_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qtimer.h>
+
+#include "../../src/include/radiodevice_interfaces.h"
+#include "../../src/include/plugins.h"
+#include "../../src/include/frequencyradiostation.h"
+#include "../../src/include/frequencyseekhelper.h"
+#include "../../src/include/soundstreamclient_interfaces.h"
+#include "v4lcfg_interfaces.h"
+
+
+struct video_tuner;
+struct video_audio;
+#ifdef HAVE_V4L2
+struct v4l2_tuner;
+#endif
+
+class V4LRadio : public QObject,
+ public PluginBase,
+ public IRadioDevice,
+// public IRadioSound,
+ public ISeekRadio,
+ public IFrequencyRadio,
+ public ISoundStreamClient,
+ public IV4LCfg
+{
+Q_OBJECT
+public:
+ V4LRadio (const QString &name);
+ virtual ~V4LRadio ();
+
+ virtual bool connectI (Interface *);
+ virtual bool disconnectI (Interface *);
+
+ virtual QString pluginClassName() const { return "V4LRadio"; }
+
+ virtual const QString &name() const { return PluginBase::name(); }
+ virtual QString &name() { return PluginBase::name(); }
+
+ // PluginBase
+
+public:
+ virtual void saveState (KConfig *) const;
+ virtual void restoreState (KConfig *);
+ virtual void startPlugin();
+
+ virtual ConfigPageInfo createConfigurationPage();
+ virtual AboutPageInfo createAboutPage();
+
+ // IRadioDevice methods
+
+RECEIVERS:
+ virtual bool setPower(bool p);
+ virtual bool powerOn();
+ virtual bool powerOff();
+ virtual bool activateStation(const RadioStation &rs);
+
+ANSWERS:
+ virtual bool isPowerOn() const;
+ virtual bool isPowerOff() const;
+ virtual SoundStreamID getSoundStreamID() const;
+ virtual const RadioStation & getCurrentStation() const;
+ virtual const QString & getDescription() const;
+ virtual SoundStreamID getCurrentSoundStreamID() const;
+
+
+ // ISeekRadio
+
+RECEIVERS:
+ virtual bool toBeginning();
+ virtual bool toEnd();
+ virtual bool startSeek (bool up);
+ virtual bool startSeekUp();
+ virtual bool startSeekDown();
+ virtual bool stopSeek();
+
+ANSWERS:
+ virtual bool isSeekRunning() const;
+ virtual bool isSeekUpRunning() const;
+ virtual bool isSeekDownRunning() const;
+ virtual float getProgress () const;
+
+
+ // IFrequencyRadio
+
+RECEIVERS:
+ virtual bool setFrequency(float f);
+ virtual bool setMinFrequency(float mf);
+ virtual bool setMaxFrequency(float mf);
+ virtual bool setScanStep(float s);
+
+ANSWERS:
+ virtual float getFrequency() const;
+ virtual float getMinFrequency() const;
+ virtual float getMinDeviceFrequency() const;
+ virtual float getMaxFrequency() const;
+ virtual float getMaxDeviceFrequency() const;
+ virtual float getScanStep() const;
+
+
+ // ISoundStreamClient: mixer functions
+
+
+RECEIVERS:
+ void noticeConnectedI (ISoundStreamServer *s, bool pointer_valid);
+ void noticeConnectedSoundClient(ISoundStreamClient::thisInterface *i, bool pointer_valid);
+
+ bool setTreble (SoundStreamID, float v);
+ bool setBass (SoundStreamID, float v);
+ bool setBalance (SoundStreamID, float v);
+ bool mute (SoundStreamID, bool mute = true);
+ bool unmute (SoundStreamID, bool unmute = true);
+ bool setSignalMinQuality(SoundStreamID, float q);
+ bool setStereo(SoundStreamID, bool s);
+
+ bool getTreble(SoundStreamID, float &v) const;
+ bool getBass (SoundStreamID, float &v) const;
+ bool getBalance (SoundStreamID, float &b) const;
+ bool getSignalQuality(SoundStreamID, float &q) const;
+ bool getSignalMinQuality(SoundStreamID, float &q) const;
+ bool hasGoodQuality(SoundStreamID, bool &) const;
+ bool isStereo(SoundStreamID, bool &s) const;
+ bool isMuted(SoundStreamID, bool &m) const;
+
+ // ISoundStreamClient: generic stream handling (broadcasts)
+
+RECEIVERS:
+
+ bool getSoundStreamDescription(SoundStreamID id, QString &descr) const;
+ bool getSoundStreamRadioStation(SoundStreamID id, const RadioStation *&rs) const;
+ bool enumerateSoundStreams(QMap<QString, SoundStreamID> &list) const;
+
+// bool stopCapture(SoundStreamID id); // if active playback also call stopPlayback
+
+
+ // IV4LCfg
+RECEIVERS:
+ bool setRadioDevice (const QString &s);
+ bool setPlaybackMixer(const QString &soundStreamClientID, const QString &ch);
+ bool setCaptureMixer (const QString &soundStreamClientID, const QString &ch);
+ bool setDeviceVolume (float v);
+ bool setActivePlayback(bool a);
+ bool setMuteOnPowerOff(bool a);
+ bool setVolumeZeroOnPowerOff(bool a);
+
+ // if the radio is powered off, we will handle the volume by changing m_defaultPlaybackVolume
+ bool setPlaybackVolume(SoundStreamID id, float volume);
+ bool getPlaybackVolume(SoundStreamID id, float &volume) const;
+
+ANSWERS:
+ const QString &getRadioDevice () const { return m_radioDev; }
+ const QString &getPlaybackMixerID () const { return m_PlaybackMixerID; }
+ const QString &getCaptureMixerID () const { return m_CaptureMixerID; }
+ const QString &getPlaybackMixerChannel() const { return m_PlaybackMixerChannel; }
+ const QString &getCaptureMixerChannel () const { return m_CaptureMixerChannel; }
+ float getDeviceVolume () const;
+ V4LCaps getCapabilities(QString dev = QString::null) const;
+
+ bool getActivePlayback() const { return m_ActivePlayback; }
+ bool getMuteOnPowerOff() const { return m_MuteOnPowerOff; }
+ bool getVolumeZeroOnPowerOff() const { return m_VolumeZeroOnPowerOff; }
+
+ // anything else
+
+protected slots:
+ void poll();
+
+protected:
+ V4LCaps readV4LCaps(const QString &device) const;
+ void radio_init();
+ void radio_done();
+
+ bool readTunerInfo() const;
+ bool updateAudioInfo(bool write) const;
+ bool readAudioInfo() const { return updateAudioInfo(false); }
+ bool writeAudioInfo() const { return updateAudioInfo(true); }
+
+ void searchMixers(ISoundStreamClient **playback_mixer, ISoundStreamClient **capture_mixer);
+
+protected:
+
+ FrequencyRadioStation m_currentStation;
+ mutable float m_treble;
+ mutable float m_bass;
+ mutable float m_balance;
+ mutable float m_deviceVolume;
+ mutable bool m_muted;
+ mutable float m_signalQuality;
+ mutable bool m_stereo;
+
+ float m_minQuality;
+ float m_minFrequency;
+ float m_maxFrequency;
+ mutable float m_lastMinDevFrequency;
+ mutable float m_lastMaxDevFrequency;
+
+ float m_defaultPlaybackVolume;
+
+ FrequencySeekHelper *m_seekHelper;
+ float m_scanStep;
+
+ V4LCaps m_caps;
+ QString m_radioDev;
+ int m_radio_fd;
+
+ mutable bool m_useOldV4L2Calls;
+
+
+ mutable struct video_audio *m_audio;
+ mutable struct video_tuner *m_tuner;
+#ifdef HAVE_V4L2
+ mutable struct v4l2_tuner *m_tuner2;
+#endif
+
+ QTimer m_pollTimer;
+
+ struct TunerCache {
+ bool valid;
+ float deltaF;
+ float minF, maxF;
+ TunerCache() { valid = false; deltaF = minF = maxF = 0; }
+ };
+ mutable struct TunerCache m_tunercache;
+
+
+ mutable bool m_blockReadTuner,
+ m_blockReadAudio;
+
+ SoundStreamID m_SoundStreamID;
+ QString m_PlaybackMixerID;
+ QString m_CaptureMixerID;
+ QString m_PlaybackMixerChannel;
+ QString m_CaptureMixerChannel;
+
+ bool m_ActivePlayback;
+ bool m_MuteOnPowerOff;
+ bool m_VolumeZeroOnPowerOff;
+
+ bool m_restorePowerOn;
+};
+
+#endif
diff --git a/kradio3/presets/Makefile.am b/kradio3/presets/Makefile.am
new file mode 100644
index 0000000..979bffc
--- /dev/null
+++ b/kradio3/presets/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS = switzerland norway bulgaria new-zealand ireland sweden iceland italy portugal brazil germany russia catalonia usa australia finland lithuania england slovakia canada spain luxemburg turkey belgium argentina romania netherlands south-africa austria uruguay hungary poland czechia france
diff --git a/kradio3/presets/argentina/Makefile.am b/kradio3/presets/argentina/Makefile.am
new file mode 100644
index 0000000..f60c93b
--- /dev/null
+++ b/kradio3/presets/argentina/Makefile.am
@@ -0,0 +1,10 @@
+SUBDIRS =
+EXTRA_DIST = "buenos-aires.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/argentina/"
+ $(INSTALL_DATA) "$(srcdir)/buenos-aires.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/argentina/buenos-aires.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/argentina/buenos-aires.krp"
diff --git a/kradio3/presets/argentina/buenos-aires.krp b/kradio3/presets/argentina/buenos-aires.krp
new file mode 100644
index 0000000..05d23a7
--- /dev/null
+++ b/kradio3/presets/argentina/buenos-aires.krp
@@ -0,0 +1,159 @@
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Nicolas Padula &lt;nicolaspadula@gmail.com&gt;</maintainer>
+ <changed>2005-05-29T15:00:59</changed>
+ <country>Argentina</country>
+ <city>Buenos Aires</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>111739182322DBBEA782352786F1B4CB28FB65883ABF5C8DB9F395EBA9012FD056C64D9E72</stationID>
+ <name>La Isla</name>
+ <shortname>Isla</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1117391862ABDAE08413E8B30835F4598C4DF85C07CBE793796C33DD6B25D76033909CD5AE</stationID>
+ <name>La 2X4 Tango</name>
+ <shortname>2X4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1117392020A78BC30856F1FFD832B9999B2C6E785E476B49927C0347BBD680AFE7ED59B6FB</stationID>
+ <name>Disney</name>
+ <shortname>Disney</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10726426458AFBA05065095E1A28DADCB0FC67D9DFE8717ED43D6148847815FF91D7F0FE23</stationID>
+ <name>Metro</name>
+ <shortname>Metro</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>107264264035D11CB3A217C0B21A4971815FBB11576A863E1BD2C2E4417E322780F32EDD47</stationID>
+ <name>Rock&amp;Pop</name>
+ <shortname>R&amp;P</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1072642642C59405E620F0658E020C62AFE6FFAD24BE785EBE1DA6B9975615B3C8A0D6C31F</stationID>
+ <name>La Mega</name>
+ <shortname>Mega</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1072642643C18A4BEAEA8E050F2402DBCC892CE7780E63E33FF42F16F85D8E6F845262B8BE</stationID>
+ <name>La 100</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.8998</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11173920578678EBEFC5BBC9BA65ECD982959221177136DD7CA54B81A896EAFC3FF32EE1E1</stationID>
+ <name>Blue</name>
+ <shortname>Blue</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1117392147093955F2E6734FE8BB31535D7408EB8F8370B4CC0FE603ABEFF476AB526F662D</stationID>
+ <name>La Ciento Uno</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1072642644BE71110EE3AFCC6A1D1847BA64254632F21AD3DF94B3461E122B3C1B4795C0CE</stationID>
+ <name>Pop</name>
+ <shortname>Pop</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11173921845CA9FE43920A479406825B3F885FDDD1F9464E6ECE1A4CC85C17BF1ACA5499BE</stationID>
+ <name>KSK</name>
+ <shortname>KSK</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>111739222183D7A0324A3DFA726E6333741BC90F22B52C3C772B7DFCE0B29B88A4DFB83D80</stationID>
+ <name>Spica</name>
+ <shortname>Spica</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1072642647B72C0C7AB2F662475171E5EC69A27E4FFA05A98DF7B4FAA4EECCB9C1E561E0F2</stationID>
+ <name>FMHIT</name>
+ <shortname>Hit</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>111739057013F0871FDAC869CA323139EFC262901E904F7F7071B031F26810F1DC8790B73C</stationID>
+ <name>X4</name>
+ <shortname>X4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>111739226098E83E57AC600AF00DE834A869258A1835D86B53F337DA926047B66E623C753D</stationID>
+ <name>Milenium</name>
+ <shortname>Milenium</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1117390468D0377FD229413FD0F4147AB82C376822C86F78A1B39B1C4B45ABB914E9333FC6</stationID>
+ <name>Kabul</name>
+ <shortname>Kabul</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.9</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
diff --git a/kradio3/presets/australia/Makefile.am b/kradio3/presets/australia/Makefile.am
new file mode 100644
index 0000000..a332123
--- /dev/null
+++ b/kradio3/presets/australia/Makefile.am
@@ -0,0 +1,18 @@
+SUBDIRS =
+EXTRA_DIST = "brisbane-antenna-2.krp" "brisbane-antenna.krp" "brisbane.krp" "sydney2.krp" "sydney.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/australia/"
+ $(INSTALL_DATA) "$(srcdir)/brisbane-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/australia/brisbane-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/brisbane.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/australia/brisbane.krp"
+ $(INSTALL_DATA) "$(srcdir)/brisbane-antenna-2.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/australia/brisbane-antenna-2.krp"
+ $(INSTALL_DATA) "$(srcdir)/sydney.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/australia/sydney.krp"
+ $(INSTALL_DATA) "$(srcdir)/sydney2.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/australia/sydney2.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/australia/brisbane-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/australia/brisbane.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/australia/brisbane-antenna-2.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/australia/sydney.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/australia/sydney2.krp"
diff --git a/kradio3/presets/australia/brisbane-antenna-2.krp b/kradio3/presets/australia/brisbane-antenna-2.krp
new file mode 100644
index 0000000..8e36afe
--- /dev/null
+++ b/kradio3/presets/australia/brisbane-antenna-2.krp
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Warren Porter, &lt;wozza@humbug.org.au&gt;</maintainer>
+ <changed>2005-02-13T17:52:37</changed>
+ <country>Australia</country>
+ <city>Brisbane</city>
+ <media>antenna</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>11082832721CE8B1B8BEF2FFBC9D36F4AE63BB8CF483E0248FD5931370FBA5774D32E123C0</stationID>
+ <name>planet</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110828319395E26602DADDF2F6464D6C8DDFA1E4566E155588491ED6FE213D8394CBC5B361</stationID>
+ <name>SBS</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1108283146CC3E1C574A51CF5FAC07D7AF0192E28FB791FD0E996B18B0492C9173DFFB0711</stationID>
+ <name>River</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1108282767ACEF2E47C8ACAF54D588D28E41CE843BD738779BF98C02C469C4D3F6CA25EFEE</stationID>
+ <name>96five</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11082825570FBAF393126731AEE9FE31EFF63D8FCEF9C95FC79563B27DC08A56F92A02509F</stationID>
+ <name>97.3</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1108282665BC2838A817BBD925549E0A8596F4BC891785CA2472C84AA7F430A0780ECE9A76</stationID>
+ <name>4EB</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1108282266D5EC7A847D7ACD9FD3D502648B67D1D2A56B31E7C3E71EA7F4DF199A535656C2</stationID>
+ <name>NIRS</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110828203240528B7D69CEF4CB84DA80A8CF50CC562EF40A06FB761210D8EFB044FE8512A5</stationID>
+ <name>4ZZZ</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1108282031522C8D853C5E44EE82F02D80E1B2B6686EF6BCB8CBE916A9D5C5072CE8D1BFA7</stationID>
+ <name>4MBS</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1108281901F45A9EEF250B4D6FFEC8FA8A28A99E140416C0840D1948248DCDE2434AFAD507</stationID>
+ <name>4MMM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110828197536552C1D54AAF93FE7E748A5C33656F62E062BADE943AB2C86B5C4D62E0152C6</stationID>
+ <name>ABC</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1061048807D314D881E9E47C310AC5D9E15D173A57065D4C57269DF04958AF19975805CBF9</stationID>
+ <name>B105</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110828199884027DB4304FBFBED66B033D485D9423CF95663E7DF5B7E3DC2C2C40A804C941</stationID>
+ <name>Nova</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11082820312749DC660F257352CC20F6E2D682406D9AB002100A6CF3827FCD59C76CB5B411</stationID>
+ <name>4JJJ</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.7</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/australia/brisbane-antenna.krp b/kradio3/presets/australia/brisbane-antenna.krp
new file mode 100644
index 0000000..1ca0f3e
--- /dev/null
+++ b/kradio3/presets/australia/brisbane-antenna.krp
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Ken Holt, &lt;a1comp@overflow.net.au&gt;</maintainer>
+ <changed>2004-02-25T18:50:00</changed>
+ <country>Australia</country>
+ <city>Brisbane</city>
+ <media>antenna</media>
+ <comments>Its a pleasure to contribute something back!</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10912870595DEC6F3A45CAAEAF9305492CCAF6292F621BE7DECCA9B924CC05D5A65A3CAEA4</stationID>
+ <name>B105FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>105.300000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109128705980B68B3E28FEF36DC5825936604D241A7D13FD40FE973467007D3BDBA82AE375</stationID>
+ <name>97.3MIX</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>97.300000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091287059B6CE538273EDA445AEB2257FAD7103CF24884A45DF393D56ED08E5C90A6A7FE1</stationID>
+ <name>TripleM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>104.500000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091287059395579645CD97AA07C2444CCBB3A4613A4B045F4FE0A87BB62FAE18F68E62981</stationID>
+ <name>TripleJ</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>107.700000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091287059DBD4D5E157C5AA053C7D1AA845C2844F0B3EBF253912F4BB257AD41158D9C45E</stationID>
+ <name>98.9FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>98.940000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912870598ACCB92EC3CC6241D5414A1E678966701AB07849356FA50D6B13B6304CF0E863</stationID>
+ <name>94.9FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>94.940000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/australia/brisbane.krp b/kradio3/presets/australia/brisbane.krp
new file mode 100644
index 0000000..d8f5a37
--- /dev/null
+++ b/kradio3/presets/australia/brisbane.krp
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-1.0beta3b</creator>
+ <maintainer>Michael Anthon, &lt;michael@anthon.net&gt;</maintainer>
+ <changed>2005-03-14T09:18:12</changed>
+ <country>Australia</country>
+ <city>Brisbane</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1116455444D17CEB0B1C5871CDB168E79C1A2EBB52EF75B0F2F9320CE77C7491A332613C95</stationID>
+ <name>ABC FM</name>
+ <shortname>ABC</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11164554447F2A606CE2B35B3A92D7376766F98DD464F9FD97A3C4324A5EF21B90681C8121</stationID>
+ <name>4MBS</name>
+ <shortname>4MBS</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1116455444ACA486C37FBC53EE01B24A2D44A29A38320D99896AF84A3187049DD64176B12B</stationID>
+ <name>97.3</name>
+ <shortname>97.3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>111645544466E1BFA8403ABC2F9371F23379E139156D70187BBFBEACC459EB3963E4E540E7</stationID>
+ <name>B105</name>
+ <shortname>B105</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1116455444D65016C9C7CF5B3E866BCF0EDB63437C3351A4025D1ACE7D199E0EEAA3E2F0EB</stationID>
+ <name>4MMM</name>
+ <shortname>4MMM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.5</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
diff --git a/kradio3/presets/australia/sydney.krp b/kradio3/presets/australia/sydney.krp
new file mode 100644
index 0000000..65e6c87
--- /dev/null
+++ b/kradio3/presets/australia/sydney.krp
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Scott Gow, &lt;sc0ttg0w@gmail.com&gt;</maintainer>
+ <changed>2005-07-30T16:16:57</changed>
+ <country>Australia</country>
+ <city>Sydney</city>
+ <media>Antenna</media>
+ <comments>Radio Stations for Sydney, Australia</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1093054555EC27A416037A668A8A27C5D679B6BE97DB8DA20A7728D26F969F927AD7052607</stationID>
+ <name>ABC Classic FM</name>
+ <shortname>2ABCFM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1093256895C0DA908206434299C6CB61218AA6985541B49E11DA3A4F64A34C9AA9832F7B7A</stationID>
+ <name>fbi 94.5</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10930545595D4AC0788F72BFEAC7C9170407721D728384262FEF3144FB9FE94A7F6C3EDFA7</stationID>
+ <name>Nova</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.901</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1093054561E7681B0B607025F49E6FB2182ADF1D0FA5FBF716009DF92BF6CFC93325DB1ED7</stationID>
+ <name>SBS Radio 2</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>97.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1093054565022FBAC6BFF8F389BEDD6CAD53D5C3EDDCB3FE2E5C2DAB8827C5650628D3BF45</stationID>
+ <name>WS FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.696</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1093054567EB707C8420E0B4BDC50A757CE145DD018C98F571E4D63FFD46202ED28638AED0</stationID>
+ <name>2MBS FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.501</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1093054567EDF468D9201DFF21BB0009E4869399699802F9DC72F4188C288E57834945D029</stationID>
+ <name>FM103.2</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.226</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1093054569521EE396B76BB2E7DBD983072D3408144B2184153201F93AD6A70F3F0419B4F6</stationID>
+ <name>2 Day</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1093054570E36132422E2297F4D4DF6AAADB2C99BBA4CE6355DBA377F98EC629EBADCB430B</stationID>
+ <name>Triple M</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>104.901</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1093054571858266DF06860A250FAC50CD7B020C2167FB96D63E689FB8A5A9FDB2312A03D9</stationID>
+ <name>Triple J</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>105.706</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1093254455E652DCC02898AD7F1ED6C08322E9710019EFC8C629587F7EC2CFF7DB9196A41A</stationID>
+ <name>Mix</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>106.5</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
diff --git a/kradio3/presets/australia/sydney2.krp b/kradio3/presets/australia/sydney2.krp
new file mode 100644
index 0000000..f4a1919
--- /dev/null
+++ b/kradio3/presets/australia/sydney2.krp
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-1.0beta3b</creator>
+ <maintainer>Scott Gow, &lt;sc0ttg0w@gmail.com&gt;</maintainer>
+ <changed>2005-07-30T16:16:57</changed>
+ <country>Australia</country>
+ <city>Sydney</city>
+ <media>Antenna</media>
+ <comments>Radio Stations for Sydney, Australia</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1093054555EC27A416037A668A8A27C5D679B6BE97DB8DA20A7728D26F969F927AD7052607</stationID>
+ <name>ABC Classic FM</name>
+ <shortname>2ABCFM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1093256895C0DA908206434299C6CB61218AA6985541B49E11DA3A4F64A34C9AA9832F7B7A</stationID>
+ <name>fbi 94.5</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10930545595D4AC0788F72BFEAC7C9170407721D728384262FEF3144FB9FE94A7F6C3EDFA7</stationID>
+ <name>Nova</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.901</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1093054561E7681B0B607025F49E6FB2182ADF1D0FA5FBF716009DF92BF6CFC93325DB1ED7</stationID>
+ <name>SBS Radio 2</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>97.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1093054565022FBAC6BFF8F389BEDD6CAD53D5C3EDDCB3FE2E5C2DAB8827C5650628D3BF45</stationID>
+ <name>WS FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.696</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1093054567EB707C8420E0B4BDC50A757CE145DD018C98F571E4D63FFD46202ED28638AED0</stationID>
+ <name>2MBS FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.501</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1093054567EDF468D9201DFF21BB0009E4869399699802F9DC72F4188C288E57834945D029</stationID>
+ <name>FM103.2</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.226</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1093054569521EE396B76BB2E7DBD983072D3408144B2184153201F93AD6A70F3F0419B4F6</stationID>
+ <name>2 Day</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1093054570E36132422E2297F4D4DF6AAADB2C99BBA4CE6355DBA377F98EC629EBADCB430B</stationID>
+ <name>Triple M</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>104.901</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1093054571858266DF06860A250FAC50CD7B020C2167FB96D63E689FB8A5A9FDB2312A03D9</stationID>
+ <name>Triple J</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>105.706</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1093254455E652DCC02898AD7F1ED6C08322E9710019EFC8C629587F7EC2CFF7DB9196A41A</stationID>
+ <name>Mix</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>106.5</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
diff --git a/kradio3/presets/austria/Makefile.am b/kradio3/presets/austria/Makefile.am
new file mode 100644
index 0000000..297abf4
--- /dev/null
+++ b/kradio3/presets/austria/Makefile.am
@@ -0,0 +1,30 @@
+SUBDIRS =
+EXTRA_DIST = "breitenfurt-cable.krp" "gablitz-cable.krp" "graz-cable.krp" "kaltenleutgeben-cable.krp" "laab-wald-cable.krp" "linz-cable.krp" "mauerbach-cable.krp" "purkersdorf-cable.krp" "vienna-antenna.krp" "vienna-cable1.krp" "vienna-cable2.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/austria/"
+ $(INSTALL_DATA) "$(srcdir)/vienna-cable1.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/austria/vienna-cable1.krp"
+ $(INSTALL_DATA) "$(srcdir)/vienna-cable2.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/austria/vienna-cable2.krp"
+ $(INSTALL_DATA) "$(srcdir)/vienna-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/austria/vienna-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/gablitz-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/austria/gablitz-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/purkersdorf-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/austria/purkersdorf-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/kaltenleutgeben-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/austria/kaltenleutgeben-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/mauerbach-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/austria/mauerbach-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/breitenfurt-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/austria/breitenfurt-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/linz-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/austria/linz-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/graz-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/austria/graz-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/laab-wald-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/austria/laab-wald-cable.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/austria/vienna-cable1.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/austria/vienna-cable2.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/austria/vienna-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/austria/gablitz-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/austria/purkersdorf-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/austria/kaltenleutgeben-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/austria/mauerbach-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/austria/breitenfurt-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/austria/linz-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/austria/graz-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/austria/laab-wald-cable.krp"
diff --git a/kradio3/presets/austria/breitenfurt-cable.krp b/kradio3/presets/austria/breitenfurt-cable.krp
new file mode 100644
index 0000000..261084d
--- /dev/null
+++ b/kradio3/presets/austria/breitenfurt-cable.krp
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Manfred Zilka, &lt;kradio@tplus.at&gt;</maintainer>
+ <changed>2003-05-14T23:10:28</changed>
+ <country>Austria</country>
+ <city>Breitenfurt</city>
+ <media>cable</media>
+ <comments>Senderlist of Cableprovider www.tplus.at</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633854040530A49B58DF2A623346B2D83125C70CBC8CD5D56016CF45FD0CEC3B1A8980BD</stationID>
+ <name>88.6 Supermix fuer Wien</name>
+ <shortname>88.6</shortname>
+ <icon></icon>
+ <frequency>98.9271</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385404E7B9D4D1BFB0324F850576AE1ABB28C310E19351FAB45C74F3DE8DCB484193C6</stationID>
+ <name>Hitradio OE3</name>
+ <shortname>OE3</shortname>
+ <icon></icon>
+ <frequency>90.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854045AE8E6F611783C6F75CCDBD7CFE98468544B3ED55528DC9964D2E8F2C5D7EA49</stationID>
+ <name>Radio Wien</name>
+ <shortname>Radio Wien</shortname>
+ <icon></icon>
+ <frequency>89.1015</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854046329B9AF104AD853122CB7ACD6996A2C7B159A8FBDF17431216E1B7E5E590197</stationID>
+ <name>Radio Energy</name>
+ <shortname>Radio Energy</shortname>
+ <icon></icon>
+ <frequency>106.103</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854040D4BEBED2387EF489E3D4FBA68CE484DE44BE9151EF0074F6B1CDF8621AA1FB1</stationID>
+ <name>Antenne Wien</name>
+ <shortname>Antenne</shortname>
+ <icon></icon>
+ <frequency>99.4271</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385404A90763BA8547D4B79EA48426DDFE66F5687CCCC4ECB646C8343487A7ED0DA9B2</stationID>
+ <name>FM 4</name>
+ <shortname>FM 4</shortname>
+ <icon></icon>
+ <frequency>91.2016</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540489CD4D08B7DFA79FF801A4097E937BF21230972785EBD64664F3A6123116BABF</stationID>
+ <name>Krone Hitradio</name>
+ <shortname>Krone Hitradio</shortname>
+ <icon></icon>
+ <frequency>103.502</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540496F3458CA84FFE271C029C22F3DA0C5E861BE0D9043A4733BD806B4EE2C515FD</stationID>
+ <name>Radio Arabella</name>
+ <shortname>Radio Arabella</shortname>
+ <icon></icon>
+ <frequency>106.628</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385404BFC704D5821F46421F9FB8810342A36FADD808F6513475F4974644F360B6676E</stationID>
+ <name>OE1</name>
+ <shortname>OE1</shortname>
+ <icon></icon>
+ <frequency>88.1014</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854046389F646D2CC9ECE638495A6F428BB1E25E8539EACB53EA5412999DEE3B106FD</stationID>
+ <name>Radio Niederoesterreich</name>
+ <shortname>Radio NOE</shortname>
+ <icon></icon>
+ <frequency>89.5515</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540403F3F585A0E8ADB217F3F93BABE2FDEA712C1777BAB0BCCC0157B0BA901C36C5</stationID>
+ <name>Radio Burgendland</name>
+ <shortname>Radio Bgld</shortname>
+ <icon></icon>
+ <frequency>90.4016</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385404BB9F295FC5E0E7C7E0C96123FA4E662CBFD958F5733F17BA1607C4A3033D1C96</stationID>
+ <name>Evangeliums-Rundfunk</name>
+ <shortname>ERF</shortname>
+ <icon></icon>
+ <frequency>92.7017</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385404F3E2058A1248946293E79B4B1E91034BC6221C48EE44E310A33006F3ADEAC3E7</stationID>
+ <name>Radio Stephansdom</name>
+ <shortname>Radio Stephansdom</shortname>
+ <icon></icon>
+ <frequency>105.552</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385404B30C0459DC1115375E5D4AF253996B0D68B9A4FB1F8B7B445F7BAD85DC11BCD3</stationID>
+ <name>Bayern 3</name>
+ <shortname>Bayern 3</shortname>
+ <icon></icon>
+ <frequency>96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854040AC1C32E7DEA019BBC06F01CC79917402642017DF0634A3F587C4864C77D77F8</stationID>
+ <name>Bayern 4</name>
+ <shortname>Bayern 4</shortname>
+ <icon></icon>
+ <frequency>96.4269</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385404506DA34207C53BD2AA6D93BEF4C58079DBEFE18388613CA5A71B6C68618F9520</stationID>
+ <name>Radio Melody</name>
+ <shortname>Radio Melody</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385404B7B172C725D4BFE003454B3B355996A464054573CCB233A8C7204856938211D3</stationID>
+ <name>RTL Oldie</name>
+ <shortname>RTL Oldie</shortname>
+ <icon></icon>
+ <frequency>100.427</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385404103664CF4ACA32BE276FF5CC49EA6D527D722C235371CA509453A9B8FA5B8EFB</stationID>
+ <name>BBC World Service</name>
+ <shortname>BBC World</shortname>
+ <icon></icon>
+ <frequency>100.802</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540489CFC1B39B45368F8DEEA7787C179091B733B54CA1B5F193CBCE76177EE729F0</stationID>
+ <name>Radio Rai Uno</name>
+ <shortname>Rai Uno</shortname>
+ <icon></icon>
+ <frequency>101.202</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385404E14D46C77D86D129A19EAF71FD8A244D1863091B0E06D6D7589A9570B5C35BE6</stationID>
+ <name>Deutschlandr. Berlin</name>
+ <shortname>Deuschlandr. Berlin</shortname>
+ <icon></icon>
+ <frequency>101.602</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385404BB135F9F9DF48D37425A15F0D986CB0DCDD5662A9EA031E17D2EDE53A8F7BA4E</stationID>
+ <name>NDR 2</name>
+ <shortname>NDR 2</shortname>
+ <icon></icon>
+ <frequency>102.177</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540461E88D8784A2F6156EF582767CFC2696FB6AA54B0073555D6135340C1592C199</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik Radio</shortname>
+ <icon></icon>
+ <frequency>103.077</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854043909EC7910B1E546148C3671E88B1C2ED1FDF79D7DA761FB01AD75B732676AAB</stationID>
+ <name>WDR 2-Koeln</name>
+ <shortname>WDR 2-Koeln</shortname>
+ <icon></icon>
+ <frequency>104.552</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540429355C50BE3F8685F7C73F80975677CC62076C0A86BFF8BB8127868E2708455D</stationID>
+ <name>WDR 3</name>
+ <shortname>WDR 3</shortname>
+ <icon></icon>
+ <frequency>105.002</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/austria/gablitz-cable.krp b/kradio3/presets/austria/gablitz-cable.krp
new file mode 100644
index 0000000..26efb19
--- /dev/null
+++ b/kradio3/presets/austria/gablitz-cable.krp
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Manfred Zilka, &lt;kradio@tplus.at&gt;</maintainer>
+ <changed>2003-05-14T23:10:28</changed>
+ <country>Austria</country>
+ <city>Gablitz</city>
+ <media>cable</media>
+ <comments>Senderlist of Cableprovider www.tplus.at</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338540547BDAA782EC3CD2B6D2DE09A99916B6F9D3F0F28F0B9127FCED2B6F87AE1FF50</stationID>
+ <name>88.6 Supermix fuer Wien</name>
+ <shortname>88.6</shortname>
+ <icon></icon>
+ <frequency>98.9271</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405C8D73FEB32219A0D1DBC5309496654D2EB863F3E7649EC1CCD665E1E52CBC994</stationID>
+ <name>Hitradio OE3</name>
+ <shortname>OE3</shortname>
+ <icon></icon>
+ <frequency>90.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540538FF46C5BE9DC1B82C69EB80BE176275FAF9C5DA67F6BC1FACBC2128AB08EE26</stationID>
+ <name>Radio Wien</name>
+ <shortname>Radio Wien</shortname>
+ <icon></icon>
+ <frequency>89.1015</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405F067AF85AA566734440163BCA51AEBB24D4AB9F45F9C0AB9B02079F980F1EFDF</stationID>
+ <name>Radio Energy</name>
+ <shortname>Radio Energy</shortname>
+ <icon></icon>
+ <frequency>106.103</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405567BCB8AA53903F1D0E993CB4BE5447D2078D50A37B776C4AF7C1233CB6530F0</stationID>
+ <name>Antenne Wien</name>
+ <shortname>Antenne</shortname>
+ <icon></icon>
+ <frequency>99.4271</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405731D8CF72A8F3C5F8F231C3CB2B9B1B26D0871E4022A7E04C22008DA270BF126</stationID>
+ <name>FM 4</name>
+ <shortname>FM 4</shortname>
+ <icon></icon>
+ <frequency>91.2016</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540577122FE15DD05E5BA689787A98A41EAE3E6E26C095380308EC36BBC1054925BD</stationID>
+ <name>Krone Hitradio</name>
+ <shortname>Krone Hitradio</shortname>
+ <icon></icon>
+ <frequency>103.502</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854059DC2A5CCAC9ACBB6E49B84ACD057618A22A0C1DAF559557CD514D4BE774BA243</stationID>
+ <name>Radio Arabella</name>
+ <shortname>Radio Arabella</shortname>
+ <icon></icon>
+ <frequency>106.628</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854051C8B2554A3F2BA986C15142ED74DCAFA5137FD860A488D65091BDA5A6299F534</stationID>
+ <name>OE1</name>
+ <shortname>OE1</shortname>
+ <icon></icon>
+ <frequency>88.1014</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405347B362C9A86F930E4208EAAAECF4F3DC43C43CFE5711D0B55D8721EFD910BA8</stationID>
+ <name>Radio Niederoesterreich</name>
+ <shortname>Radio NOE</shortname>
+ <icon></icon>
+ <frequency>89.5515</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540504F087349DAAF6940CC679A3CEBC24DAF2B58AEF6860E75847EB03DEF68E6AE5</stationID>
+ <name>Radio Burgendland</name>
+ <shortname>Radio Bgld</shortname>
+ <icon></icon>
+ <frequency>90.4016</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854057441C2464D32E36EA6E353F76D095E4639ECEAF0B89D98B220700C8AE30D31B3</stationID>
+ <name>Evangeliums-Rundfunk</name>
+ <shortname>ERF</shortname>
+ <icon></icon>
+ <frequency>92.7017</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540588BD7BA55D6B5301EB4FFE4EE77C583D3C27D83055FB3EB3E54DE75030D13004</stationID>
+ <name>Radio Stephansdom</name>
+ <shortname>Radio Stephansdom</shortname>
+ <icon></icon>
+ <frequency>105.552</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540503F89899A3C078294D190871F0F1FD13B2E705571DA94E3EC039BD8459D93864</stationID>
+ <name>Bayern 3</name>
+ <shortname>Bayern 3</shortname>
+ <icon></icon>
+ <frequency>96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854050A70F2EDD5BE2B2CA3CF9737D2059CEB89AB52E6CE3D108DE53EFD22313258A2</stationID>
+ <name>Bayern 4</name>
+ <shortname>Bayern 4</shortname>
+ <icon></icon>
+ <frequency>96.4269</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405D817F6391FCB1F6E490CE947A9DB29DB717C396E588D497FB9CD6DFA1AB3E36C</stationID>
+ <name>Radio Melody</name>
+ <shortname>Radio Melody</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854054C4E33BDE5155EB669D858702C1E9FB85C974481216016208460A45AB7EA6A3C</stationID>
+ <name>RTL Oldie</name>
+ <shortname>RTL Oldie</shortname>
+ <icon></icon>
+ <frequency>100.427</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854059E243BB862BD8BFC9437BD83851D7DB6428FC2010DB7F0C6ABEED22866F0CEC9</stationID>
+ <name>BBC World Service</name>
+ <shortname>BBC World</shortname>
+ <icon></icon>
+ <frequency>100.802</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854054084307A1B644A9F396C6D7FF938D724C481F724FBC2513D8F3A5C2C49A02525</stationID>
+ <name>Radio Rai Uno</name>
+ <shortname>Rai Uno</shortname>
+ <icon></icon>
+ <frequency>101.202</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405674BD4A69A82D016DFD3FB17FA8864CDEE2EBB327E077ABF764A2626114E902D</stationID>
+ <name>Deutschlandr. Berlin</name>
+ <shortname>Deuschlandr. Berlin</shortname>
+ <icon></icon>
+ <frequency>101.602</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854050492AE43AB9C8884958D13BEE05E12773A58DE9FE3EF2148D0E056028C673422</stationID>
+ <name>NDR 2</name>
+ <shortname>NDR 2</shortname>
+ <icon></icon>
+ <frequency>102.177</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405D95139DC20CE75961AB9CACA83EA65A37AB8D002BA75331F9B25F14531D64B52</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik Radio</shortname>
+ <icon></icon>
+ <frequency>103.077</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405442E7252918C10AF2918B8BD5D45C5581504D6E86B9654F68DB93D964A6F77F7</stationID>
+ <name>WDR 2-Koeln</name>
+ <shortname>WDR 2-Koeln</shortname>
+ <icon></icon>
+ <frequency>104.552</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854055B7C897A5CA78435FD909B39132DAEA79108322193EB212848829F7066489DA9</stationID>
+ <name>WDR 3</name>
+ <shortname>WDR 3</shortname>
+ <icon></icon>
+ <frequency>105.002</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/austria/graz-cable.krp b/kradio3/presets/austria/graz-cable.krp
new file mode 100644
index 0000000..1ee8873
--- /dev/null
+++ b/kradio3/presets/austria/graz-cable.krp
@@ -0,0 +1,266 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-1.0beta3b</creator>
+ <maintainer>Martin Fimberger, &lt;martin.fimberger@gmx.at&gt;</maintainer>
+ <changed>2005-09-29T23:28:34</changed>
+ <country>Austria</country>
+ <city>Graz</city>
+ <media>UPC Kabel</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1128023310C98D42FC0BC57A1C1EB15AEDB9CDC43D5DC865E8F56F70DA22CB2F14669E5675</stationID>
+ <name>Radio Maria</name>
+ <shortname>RM</shortname>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1128023792B91EE6C6976B5E62A8A6B541DA5DD6F43F5D4B4B9F150EABCC7983DA10CBA215</stationID>
+ <name>Radio Slovenija 1</name>
+ <shortname>SI1</shortname>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11280251343D36391968BFFB9F3A19621DF99241CAE0EB259ADDBC8D2CBA3B03E60545BED7</stationID>
+ <name>Graz Soundportal 97,9 FM</name>
+ <shortname>97,9 FM</shortname>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1128025238E0E890555124B4223B05C1C68E76F747C871739E5FF0AE508E6BAEFCD5EDDF8F</stationID>
+ <name>Klassik Radio</name>
+ <shortname></shortname>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1128023982B3B91831529E0D5BB900C8A0636978671723542F68CA7CB120271D4C47A9F21B</stationID>
+ <name>RTL Radio Oldie</name>
+ <shortname></shortname>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11280253806956384A00E591B9D7310D4E4C1308FF3E2F6372F3FC94C43C27C112FBF5BB3C</stationID>
+ <name>MDR Sputnik</name>
+ <shortname></shortname>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11280257535BAE2E580EDB9B69C21919C9192025EB529F484B211729EC1700549DFA0C8020</stationID>
+ <name>NDR 2</name>
+ <shortname>NDR2</shortname>
+ <volumepreset>-1</volumepreset>
+ <frequency>92</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11280258133FE5356B1639CB06B4C0533214B0E483509EBF029CAE8FFB483B44B4FB007C12</stationID>
+ <name>ORF �</name>
+ <shortname>�</shortname>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11280258655F5AD9A96AB49634EEEB99F6F4620E36B3875111354447109DD715B66D9E0732</stationID>
+ <name>NDR Info</name>
+ <shortname></shortname>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>112802596066FC2DA6EEAB71EF2427BCA2D88DE376A2FFC23AFA54D20E18116B6401F52772</stationID>
+ <name>Antenne Steiermark</name>
+ <shortname></shortname>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1128026015D6F3837F53F8E065157129BEEB705A761DC80B8391C97968CE96583F48E04B57</stationID>
+ <name>Bayern 4 Klassik</name>
+ <shortname>B4</shortname>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1128026054ECCCBDCAAF1B682777C388DFA0DBF0380AF3F83DBD49551F942837B65CC4CB99</stationID>
+ <name>Radio Exterior Espana</name>
+ <shortname>REE</shortname>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1128023308E530966B76C8E3E382EE0301E2A4095B4D6A8F57EAE4094A303C22C25BDAE3B6</stationID>
+ <name>ORF FM4</name>
+ <shortname>FM4</shortname>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1128026348B4668E5F7CA5A25782088462D1C1123B59F96A69C5A1F117C7546E2CFFA99A6F</stationID>
+ <name>Jazz Radio Berlin</name>
+ <shortname>Jazz</shortname>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11280264407094B6C7AAA21B1527C91E2B5C005089DA56E4A931E9F039E19F1BA257E1A746</stationID>
+ <name>ORF � Steiermark</name>
+ <shortname>�</shortname>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1128026517CACD3039B525109C761186CD2C287E599DABB05761476ADD072FE22B66EABED7</stationID>
+ <name>RAI Radio Uno</name>
+ <shortname>RAI1</shortname>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>112802669010A1619AE6A83734D6CAAD80A4FEDE8772AF3589948A9D55C305A6426682371B</stationID>
+ <name>Radio �terreich International</name>
+ <shortname>ROI</shortname>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11280267624F087682BB72CE76269734C7B3176645B5A7A64140FAD589372629D8252F5BD2</stationID>
+ <name>ORF � Burgenland</name>
+ <shortname>� Bgld</shortname>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>112802682669CFB6ABBEDFF25C26B8882CE053981108F504FF248922B58E564A8539883248</stationID>
+ <name>Bayern 1</name>
+ <shortname>B1</shortname>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1128026905279D7EA93B7821E071F62A84BB128E2121A7936CEAE7BAA138E6D60F56DE5CFF</stationID>
+ <name>Bayern 2</name>
+ <shortname>B2</shortname>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1128027027662C9D0CC713E51160666A7114E896A53F4A8F37B58BCF3C3748C3B213EB4230</stationID>
+ <name>Radio France Internationale</name>
+ <shortname>RFI</shortname>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>112802720583057191F0600E4DAF449AFB1AA457982C4252ACC8A4DD4C34F05FB632A1F6F4</stationID>
+ <name>Bayern 3</name>
+ <shortname>B3</shortname>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11280272550E13BB993B514F3B28404EC78B66B4883F5426F8C44E7BA803A995B4E2F0DBD7</stationID>
+ <name>KroneHit</name>
+ <shortname></shortname>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>112802731601F0E4831F74F43294E52E5C056A78A3C4D05E97C147B8DE336A57148660B22E</stationID>
+ <name>Radio SI</name>
+ <shortname>SI</shortname>
+ <volumepreset>-1</volumepreset>
+ <frequency>104</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1128027373E9CEA2C77F84C323E33F91B6B8DC2A200C61E436D51BD2F7C6905E5A1708DBCA</stationID>
+ <name>BBC Wordl Radio</name>
+ <shortname>BBC</shortname>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11280274723302FB496354714151AADD6E110A114CFCAF501F85945386A76F76205A631C68</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DLF</shortname>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1128027592C2933F456209C4636672FE7DEFEA9854A08CD99A19AE066CA9C2E7965CBF187D</stationID>
+ <name>Radio Melodie</name>
+ <shortname></shortname>
+ <volumepreset>-1</volumepreset>
+ <frequency>106</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1128027690BBA367D4F3DA860A06F1BB5737A8732CF2E11BF2F13FF00FC07B5C2B13C7A5E3</stationID>
+ <name>WRN 3</name>
+ <shortname>WRN3</shortname>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1128027796814ED4C064999420F10BDADC568148E9DC7B1FF3C96EF5EA8F87ED1377063B08</stationID>
+ <name>� K�nten</name>
+ <shortname>� Ktn</shortname>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>112802617339B29728348FB8D172218EFDE8CD6BE4BE9060A9B438F2EE8CB982C25A0DD50B</stationID>
+ <name>ORF �</name>
+ <shortname>�</shortname>
+ <volumepreset>-1</volumepreset>
+ <frequency>95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11280279826ACC29E39BE245FD870D0C8E205054781F6B9EB278A3E86B72EC0BC497597E4A</stationID>
+ <name>DRS 1</name>
+ <shortname>DRS1</shortname>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.9</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
diff --git a/kradio3/presets/austria/kaltenleutgeben-cable.krp b/kradio3/presets/austria/kaltenleutgeben-cable.krp
new file mode 100644
index 0000000..5598f0d
--- /dev/null
+++ b/kradio3/presets/austria/kaltenleutgeben-cable.krp
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Manfred Zilka, &lt;kradio@tplus.at&gt;</maintainer>
+ <changed>2003-05-14T23:10:28</changed>
+ <country>Austria</country>
+ <city>Kaltenleutgeben</city>
+ <media>cable</media>
+ <comments>Senderlist of Cableprovider www.tplus.at</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385405DAA11071487D2052BE47D80B88AB242B34A41CED6A8D14107E0FB9B5E206F981</stationID>
+ <name>88.6 Supermix fuer Wien</name>
+ <shortname>88.6</shortname>
+ <icon></icon>
+ <frequency>98.9271</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854057D57242FE1E25A24267A745C2239871CB154860873F17DD5FC3158633E079314</stationID>
+ <name>Hitradio OE3</name>
+ <shortname>OE3</shortname>
+ <icon></icon>
+ <frequency>90.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405987E1FAFBDD637B4F2A8BCE09A4680B5A09985F4885AF1300240BFAF1574A607</stationID>
+ <name>Radio Wien</name>
+ <shortname>Radio Wien</shortname>
+ <icon></icon>
+ <frequency>89.1015</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405391FF0C3FF14F78AC34769470A33233BD5453B20751B4EE2EB87E16C693F8A73</stationID>
+ <name>Radio Energy</name>
+ <shortname>Radio Energy</shortname>
+ <icon></icon>
+ <frequency>106.103</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540588005C542B7718F3C1F7771CC136B78F95EDD4E6E4E8D8253D0C59A28A68D784</stationID>
+ <name>Antenne Wien</name>
+ <shortname>Antenne</shortname>
+ <icon></icon>
+ <frequency>99.4271</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854057775CA5E80E0B65B65E36436B791D541BC854A16EFB2B1FEF4D735A384656BE0</stationID>
+ <name>FM 4</name>
+ <shortname>FM 4</shortname>
+ <icon></icon>
+ <frequency>91.2016</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854057CAEDAE944611D0BAD7EFCEE08988A44AF45E5FA45DFBED48FABEAC2FD45AD82</stationID>
+ <name>Krone Hitradio</name>
+ <shortname>Krone Hitradio</shortname>
+ <icon></icon>
+ <frequency>103.502</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405E76527CF4CD3A8F7A0953306F710A1096A3195C53258E4AC8297C8673FD018E9</stationID>
+ <name>Radio Arabella</name>
+ <shortname>Radio Arabella</shortname>
+ <icon></icon>
+ <frequency>106.628</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540557373A569DCCE43C6B19B474ECA8906ABB19D6FD87CD38B151F02BA991BF50DE</stationID>
+ <name>OE1</name>
+ <shortname>OE1</shortname>
+ <icon></icon>
+ <frequency>88.1014</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405661F3EB0EE07A41AA7D4F21195A8D4CBCFC54670F0EB2C5B3F45523582981B50</stationID>
+ <name>Radio Niederoesterreich</name>
+ <shortname>Radio NOE</shortname>
+ <icon></icon>
+ <frequency>89.5515</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405AF3403FB0C2F57A2786BCB8C54EAD5601D00C1F558B3829846BEDFCAF247F6AB</stationID>
+ <name>Radio Burgendland</name>
+ <shortname>Radio Bgld</shortname>
+ <icon></icon>
+ <frequency>90.4016</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405F9473462356CB51B35A132A7988CF0503B97CD903C791C372A96A49C584A783C</stationID>
+ <name>Evangeliums-Rundfunk</name>
+ <shortname>ERF</shortname>
+ <icon></icon>
+ <frequency>92.7017</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405ABFC6061467EAAAD406CE2839553388964124137565B9281308E86E1F9516933</stationID>
+ <name>Radio Stephansdom</name>
+ <shortname>Radio Stephansdom</shortname>
+ <icon></icon>
+ <frequency>105.552</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540519C98C8B78D5B6EE89A480C77CF438A1F3F8D3EC295D938916ADD3A4D96F24C2</stationID>
+ <name>Bayern 3</name>
+ <shortname>Bayern 3</shortname>
+ <icon></icon>
+ <frequency>96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854058193F234CDDF49C8C1CEF16265EDD851581A6F924AA56CDD2537EB0C4DB1E406</stationID>
+ <name>Bayern 4</name>
+ <shortname>Bayern 4</shortname>
+ <icon></icon>
+ <frequency>96.4269</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854051FCE6DC1F32531B478B54627B1CB30032B9C942DF6322EC006ED66A70072D8FE</stationID>
+ <name>Radio Melody</name>
+ <shortname>Radio Melody</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854052055DBDC5CED72A5CEF1F76EC2CF602D47E635944085ED01D36971B5912126DD</stationID>
+ <name>RTL Oldie</name>
+ <shortname>RTL Oldie</shortname>
+ <icon></icon>
+ <frequency>100.427</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854054C38CA7116990FB5228793154877992283E8B4B8DDC4794C57A0286A147427B7</stationID>
+ <name>BBC World Service</name>
+ <shortname>BBC World</shortname>
+ <icon></icon>
+ <frequency>100.802</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854051A945591F14885D18FF06A8E58630E0FC54F4B22F7EFF80E27809FB09349B201</stationID>
+ <name>Radio Rai Uno</name>
+ <shortname>Rai Uno</shortname>
+ <icon></icon>
+ <frequency>101.202</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405377E1A9AA5CC6507C757FA61AF5CF203F40F5B3B92F39C90A515D6F94E2ABBBC</stationID>
+ <name>Deutschlandr. Berlin</name>
+ <shortname>Deuschlandr. Berlin</shortname>
+ <icon></icon>
+ <frequency>101.602</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854059C7B818AFB85D9245D4B52FE89D44AAE37CA7B3C9891E3840AB0322C77290DB3</stationID>
+ <name>NDR 2</name>
+ <shortname>NDR 2</shortname>
+ <icon></icon>
+ <frequency>102.177</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405CB702D570E6FF450CB153EB6440E5F589AECB081CCDF1BCBF50E4429248F3545</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik Radio</shortname>
+ <icon></icon>
+ <frequency>103.077</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854058D4AB63BAF90963A79A31A71E2A7CEC8AC11F4BCA5B89574F319CE795F189CAA</stationID>
+ <name>WDR 2-Koeln</name>
+ <shortname>WDR 2-Koeln</shortname>
+ <icon></icon>
+ <frequency>104.552</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405A4DA97C0DB7707C1BA269EBBB61BAABD9597E9094465988668CFE0B5F2F4CE11</stationID>
+ <name>WDR 3</name>
+ <shortname>WDR 3</shortname>
+ <icon></icon>
+ <frequency>105.002</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/austria/laab-wald-cable.krp b/kradio3/presets/austria/laab-wald-cable.krp
new file mode 100644
index 0000000..f039415
--- /dev/null
+++ b/kradio3/presets/austria/laab-wald-cable.krp
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Manfred Zilka, &lt;kradio@tplus.at&gt;</maintainer>
+ <changed>2003-05-14T23:10:28</changed>
+ <country>Austria</country>
+ <city>Laab/Wald</city>
+ <media>cable</media>
+ <comments>Senderlist of Cableprovider www.tplus.at</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385405FEAAC6A91F50084C2147B1E9717AF6CCA0CF2C398B9DE6A19EEE49AEC6E6940E</stationID>
+ <name>88.6 Supermix fuer Wien</name>
+ <shortname>88.6</shortname>
+ <icon></icon>
+ <frequency>98.9271</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854055EEFD50D09580144164B7B09B401838515411A405D2D572594AA35471000236A</stationID>
+ <name>Hitradio OE3</name>
+ <shortname>OE3</shortname>
+ <icon></icon>
+ <frequency>90.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405363D65DBD83743837D70C8B38075811F80A9948CCB9B6A1C4E9EDA5C74526DA9</stationID>
+ <name>Radio Wien</name>
+ <shortname>Radio Wien</shortname>
+ <icon></icon>
+ <frequency>89.1015</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854050F52D7AB0F1E92D0806E431DCF2C9E2416D6454C754971C809318BB0EA302DED</stationID>
+ <name>Radio Energy</name>
+ <shortname>Radio Energy</shortname>
+ <icon></icon>
+ <frequency>106.103</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405620B52B83FE6EA9A9E5EF8099DDB4266F2392BDF0CDE79A19A062E689E9EF83E</stationID>
+ <name>Antenne Wien</name>
+ <shortname>Antenne</shortname>
+ <icon></icon>
+ <frequency>99.4271</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854050A536EE405DC0E0B722246CE2B6365D7C9A365692978573DF6CBE6944EC2C718</stationID>
+ <name>FM 4</name>
+ <shortname>FM 4</shortname>
+ <icon></icon>
+ <frequency>91.2016</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540534881A862349897B2370C4889AC477AC53A9574D4CA208B6B74066FC883E5DD9</stationID>
+ <name>Krone Hitradio</name>
+ <shortname>Krone Hitradio</shortname>
+ <icon></icon>
+ <frequency>103.502</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854050F629ABFE3F9E28E5F004692BA50F660E0B7411F5E3C3A2562F3D8840CC02B49</stationID>
+ <name>Radio Arabella</name>
+ <shortname>Radio Arabella</shortname>
+ <icon></icon>
+ <frequency>106.628</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405906A76552BAD8C45CF7C912C4471A1D6B94E3AD4046879AB2C4B179D6AE7AB05</stationID>
+ <name>OE1</name>
+ <shortname>OE1</shortname>
+ <icon></icon>
+ <frequency>88.1014</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540553B9010827263F4D5855065B6FA9366BC3F66294A59BA6E79DB0936E86613798</stationID>
+ <name>Radio Niederoesterreich</name>
+ <shortname>Radio NOE</shortname>
+ <icon></icon>
+ <frequency>89.5515</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405A81029C4ED087A5DD5F4AE0F8C0BCFAD3D2F1629F424D9EA68B642DD26A2063C</stationID>
+ <name>Radio Burgendland</name>
+ <shortname>Radio Bgld</shortname>
+ <icon></icon>
+ <frequency>90.4016</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854052BBD708898FA901FF9D1FE0636241F5C4A2913ADB9D37A47591E98FC8810392E</stationID>
+ <name>Evangeliums-Rundfunk</name>
+ <shortname>ERF</shortname>
+ <icon></icon>
+ <frequency>92.7017</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405DA02CCFFD37A3F68E178203D54B88683EC2881B72695210961F9E1743AF630B8</stationID>
+ <name>Radio Stephansdom</name>
+ <shortname>Radio Stephansdom</shortname>
+ <icon></icon>
+ <frequency>105.552</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540583338EBF92EAA744407DBCA0121779392E6E5E49FD3F80379757AB7DCF4E5FB3</stationID>
+ <name>Bayern 3</name>
+ <shortname>Bayern 3</shortname>
+ <icon></icon>
+ <frequency>96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854053ADEFAF6722407A687E04D6C15686632FFAA0AB723C050058E0ACBBD23F20642</stationID>
+ <name>Bayern 4</name>
+ <shortname>Bayern 4</shortname>
+ <icon></icon>
+ <frequency>96.4269</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405852C66BFDFB245DAEFDFE7AE7CE40E8AB9EF58BED0DD680EBF433AAD0CF4443F</stationID>
+ <name>Radio Melody</name>
+ <shortname>Radio Melody</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405C3BE4F9E389A84767C97881DB998E9485D8154FCE031F6697A68898E15975160</stationID>
+ <name>RTL Oldie</name>
+ <shortname>RTL Oldie</shortname>
+ <icon></icon>
+ <frequency>100.427</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405BC9D2CCB1900EFB5BF2C548BAB3570C1F8BF57D8B8E2944E7D87FE5A10B79E70</stationID>
+ <name>BBC World Service</name>
+ <shortname>BBC World</shortname>
+ <icon></icon>
+ <frequency>100.802</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854052A42CEAAD6C8F0B8F3C1180D3D78EA2A16ED1E6C5611B4DDECA28EAF4E232975</stationID>
+ <name>Radio Rai Uno</name>
+ <shortname>Rai Uno</shortname>
+ <icon></icon>
+ <frequency>101.202</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854050B3F0044FCFFE6BDEA1A3DB208A27E8DD72A2B237E59BF1D8EE209AA1AC1D76D</stationID>
+ <name>Deutschlandr. Berlin</name>
+ <shortname>Deuschlandr. Berlin</shortname>
+ <icon></icon>
+ <frequency>101.602</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540511F5E4430465D12A5CA0C3F6415C41EAECBDAD62593B9C6BB66421119353010B</stationID>
+ <name>NDR 2</name>
+ <shortname>NDR 2</shortname>
+ <icon></icon>
+ <frequency>102.177</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854053B9282EE80E939A0BB9FD142D992C73948568781D156E85C1BCE07D6CCCBC298</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik Radio</shortname>
+ <icon></icon>
+ <frequency>103.077</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540591D173C693C25B6F3B63E97257063B83ADBB57F739761C1844C957A6292CF440</stationID>
+ <name>WDR 2-Koeln</name>
+ <shortname>WDR 2-Koeln</shortname>
+ <icon></icon>
+ <frequency>104.552</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405526F54492CBB36797B59246437276DF5BCCA33EA998F393FC39287C81AF70578</stationID>
+ <name>WDR 3</name>
+ <shortname>WDR 3</shortname>
+ <icon></icon>
+ <frequency>105.002</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/austria/linz-cable.krp b/kradio3/presets/austria/linz-cable.krp
new file mode 100644
index 0000000..31c6ee4
--- /dev/null
+++ b/kradio3/presets/austria/linz-cable.krp
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Parker Dexter &lt;dj701@nospam.gmx.net&gt;</maintainer>
+ <changed>2004-04-12T20:05:56</changed>
+ <country>Austria</country>
+ <city>Linz</city>
+ <media>Cable</media>
+ <comments>Radio Stations Liwest Linz</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10817921254AE0A9466FECE84DFE56053F1CE55F0963CA5BBBC3BC6C939E02F4E037C5E9D9</stationID>
+ <name>Radio Melodie</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1081792175C5D55EED5EC5A536F6AAEAF13EEADB95321A7F56C338EFF38977E6FBB2745B2E</stationID>
+ <name>FM4</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1081792190767B56BC8BCAEF625747C55CBCAAD810FEC6E6ADD46D9120C8509F0737DFE694</stationID>
+ <name>Ö3</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10817922092C9AB5A0CDC5201307F08F65C59A3BAD47519F80DBE2272FAEDE1575519A387B</stationID>
+ <name>Ö2 (Niederösterreich)</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1081792229616AC8EB49DBC98C616DEECC686B998CFA6AAADA97958F014A2770617952CE41</stationID>
+ <name>Ö2 (Oberösterreich)</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1081792248EC48CDE70D4FB24AD1AC2CEE3CB1806D9266F3E0F47CF64DD75CA09163F1E9D2</stationID>
+ <name>Radio Salzburg</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1081792276A3EF8B264C090A335615EB24E1D0924623EF8ADB863B1A8CB6E6607B929C6DBD</stationID>
+ <name>Bayern 1</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1081792301C4FAE225E6333CA8DCE627F5E120556FB15FE57B01B1BDCCE69622F637AC4844</stationID>
+ <name>Radio FRO</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1081792313E3CE892F9CB38EC68680FBBB83E586C185D24E6B815BCC122222F6CD005C1FA4</stationID>
+ <name>Bayern 3</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1081792328E20365AE7A26E7383B31A2EDD3D1C780D221801DC8122458DDDAC9F9AC477517</stationID>
+ <name>Bayern 4</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10817923393A0CAC0785176BEC6883430207CF8FF2FE22CA6F397C4A247A1EF7D11BD9FE18</stationID>
+ <name>Radio Horeb</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>108179235409E2F4BDBF4E15211FFA9977C61003922D5BA00D1ECFC506C8B6EB0CF00D5116</stationID>
+ <name>Antenne Bayern</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10817923736D7AB5F0B62610D5C7A2F7FB7F0DA2C193938014C6B91F885F987BAD796D5241</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10817923870059076808D65DEE2551ACB1F62E00F82E4EADA8D3D5CB1E90A17D9212266E80</stationID>
+ <name>RTL - Der Oldie-Sender</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>108179242026D0EE9B1A2EFA30C124A15828F1A5F620DCA24CA5456F62B201DC673205B693</stationID>
+ <name>Radio Maria</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1081792432DFE3D0BEB38241B212C5F1096F632F705909C73B5F6F92A3E88EEACE4F1CC791</stationID>
+ <name>BBC (engl.)</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1081792452648F190912A90A3FF47FD659EF3A8712F20F78E4D1BECC470E0996FFFC79B78A</stationID>
+ <name>Bayern 2</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1081792466D1DC135125CBB3240DE3E8A4B1F43A9556EC8D6145AF275B4E489FC1BE92395B</stationID>
+ <name>Radio Österreich International</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1081792493F41C72FA278C71377531ED83205FC64CE2E0B1F2D7BE06AD6676D506D4ACE54D</stationID>
+ <name>Ö1</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>108179250589696744E163D3616F3F41FD453A38A0CECAC8B4E8EF24593A26B9AAA795E2C2</stationID>
+ <name>Life Radio</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1081792523BA8C47786CA03F1756F8AB38F67EC480A362FACE14E41594D17FF89D376048E4</stationID>
+ <name>Krone Hitr@dio</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10817925432A77CE1FB86A17EDAF37F3EF513C5D91F778A474F93B5AB19C70EA813C903E26</stationID>
+ <name>Bayern 5</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.5</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/austria/mauerbach-cable.krp b/kradio3/presets/austria/mauerbach-cable.krp
new file mode 100644
index 0000000..f906f78
--- /dev/null
+++ b/kradio3/presets/austria/mauerbach-cable.krp
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Manfred Zilka, &lt;kradio@tplus.at&gt;</maintainer>
+ <changed>2003-05-14T23:10:28</changed>
+ <country>Austria</country>
+ <city>Mauerbach</city>
+ <media>cable</media>
+ <comments>Senderlist of Cableprovider www.tplus.at</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385405BF8DC6449346541EB1F798548DE9F66C8254A907B81B6204EDEC1D31B7C3244C</stationID>
+ <name>88.6 Supermix fuer Wien</name>
+ <shortname>88.6</shortname>
+ <icon></icon>
+ <frequency>98.9271</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854057CBF9127C51280C74E2F8BC64D6B12F0DE21166101DE21D3D1B6D773EFF93AED</stationID>
+ <name>Hitradio OE3</name>
+ <shortname>OE3</shortname>
+ <icon></icon>
+ <frequency>90.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405AE598568EEDF446FCA37BD360247E4608B676C1B6498594A5EB4008F691CFC8E</stationID>
+ <name>Radio Wien</name>
+ <shortname>Radio Wien</shortname>
+ <icon></icon>
+ <frequency>89.1015</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540565C5A6B793A8D0D7410908ED0CB664CA685F7DCFC15B291C8AEF3DE0185E0BB5</stationID>
+ <name>Radio Energy</name>
+ <shortname>Radio Energy</shortname>
+ <icon></icon>
+ <frequency>106.103</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854055F933EDA9EF04C93F99B861D099771FE7FAFEF0918F7E0447D873BDD20644B11</stationID>
+ <name>Antenne Wien</name>
+ <shortname>Antenne</shortname>
+ <icon></icon>
+ <frequency>99.4271</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540551D670357DD2DF49053EB000F3A7B430AFF453C45272BF0F9A77B513D7299133</stationID>
+ <name>FM 4</name>
+ <shortname>FM 4</shortname>
+ <icon></icon>
+ <frequency>91.2016</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540572EAD551DD1DCC2CCA4BD08EE50A18C4EE8A991263ADF89347A5486BD7A1A1FF</stationID>
+ <name>Krone Hitradio</name>
+ <shortname>Krone Hitradio</shortname>
+ <icon></icon>
+ <frequency>103.502</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405EA6FAD06A878D9445B6CE39D28422CC6C540246BB8D973D28FE4BAC09FA95BFE</stationID>
+ <name>Radio Arabella</name>
+ <shortname>Radio Arabella</shortname>
+ <icon></icon>
+ <frequency>106.628</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405A7BA4B9FCF092DDD1E53F2252D04541457F83149785F357145C4724FC6ABE36B</stationID>
+ <name>OE1</name>
+ <shortname>OE1</shortname>
+ <icon></icon>
+ <frequency>88.1014</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854051AE8BB9445FB18FB2DBBB2A7E8C2B0A72C1EA8679CBAA682FD641811A08274BD</stationID>
+ <name>Radio Niederoesterreich</name>
+ <shortname>Radio NOE</shortname>
+ <icon></icon>
+ <frequency>89.5515</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854051A2F60DB418F3710D4E2D810F5B7E4AFBCCFCA5C7601118EC1D55B2ADC89CC2A</stationID>
+ <name>Radio Burgendland</name>
+ <shortname>Radio Bgld</shortname>
+ <icon></icon>
+ <frequency>90.4016</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405CC3E9CDF68644BBA4FC24587E144CA81C569AB06907A8C4750672E459D33D925</stationID>
+ <name>Evangeliums-Rundfunk</name>
+ <shortname>ERF</shortname>
+ <icon></icon>
+ <frequency>92.7017</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540540F43730536BE3605E0FECCB1907715F122E1685781FDCD99E19661404E7B34E</stationID>
+ <name>Radio Stephansdom</name>
+ <shortname>Radio Stephansdom</shortname>
+ <icon></icon>
+ <frequency>105.552</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405B21823B3821A467E68AE01023A19E672C73FBF3BC0BE597727DB832EC9E28C42</stationID>
+ <name>Bayern 3</name>
+ <shortname>Bayern 3</shortname>
+ <icon></icon>
+ <frequency>96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540550431250CB0F1E05F70610FD2E795A464A9AF34C291642CC985319AEC06302B5</stationID>
+ <name>Bayern 4</name>
+ <shortname>Bayern 4</shortname>
+ <icon></icon>
+ <frequency>96.4269</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405951C8EED371DD9374E1C2A6D295AF0AB8AFD871676873AF6EFD696CF6D253A94</stationID>
+ <name>Radio Melody</name>
+ <shortname>Radio Melody</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405217F0EDC09BFE0F6E802ED2FDC06527D3862919CADDE92BA3F503C00F4DC1C92</stationID>
+ <name>RTL Oldie</name>
+ <shortname>RTL Oldie</shortname>
+ <icon></icon>
+ <frequency>100.427</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405E0FBCD6136C6969EE6FA7E37FDE7B7213B3FAC353898F031C9DA97022AC780F3</stationID>
+ <name>BBC World Service</name>
+ <shortname>BBC World</shortname>
+ <icon></icon>
+ <frequency>100.802</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405BC7E32F163036E92A246F30CDA3A798D3AD58394129FBE2E9B84AFE719947FD8</stationID>
+ <name>Radio Rai Uno</name>
+ <shortname>Rai Uno</shortname>
+ <icon></icon>
+ <frequency>101.202</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405429FFD11ACCF2A31E1DF4E188DFEFBB4508F9B8DA7DCAF7D74034ED4B23014FB</stationID>
+ <name>Deutschlandr. Berlin</name>
+ <shortname>Deuschlandr. Berlin</shortname>
+ <icon></icon>
+ <frequency>101.602</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405D5AFA438395E292B16700805E9CE0CB2A8200E9A43F47CF913F29E2015C2CB2A</stationID>
+ <name>NDR 2</name>
+ <shortname>NDR 2</shortname>
+ <icon></icon>
+ <frequency>102.177</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405F4E613B9865731FFA4432BBDC70D5DBFA9E300D0D3146D8DD30EC1C9F234ECE3</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik Radio</shortname>
+ <icon></icon>
+ <frequency>103.077</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405B068776E50FD140CF2A5869BCD1C1063AED8CEB9E14E06535017C5E99E748C32</stationID>
+ <name>WDR 2-Koeln</name>
+ <shortname>WDR 2-Koeln</shortname>
+ <icon></icon>
+ <frequency>104.552</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854057169384B0A2C765D2032850DF0F94F9C5E2080BFE01CD7116ECA09BB613B6B31</stationID>
+ <name>WDR 3</name>
+ <shortname>WDR 3</shortname>
+ <icon></icon>
+ <frequency>105.002</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/austria/purkersdorf-cable.krp b/kradio3/presets/austria/purkersdorf-cable.krp
new file mode 100644
index 0000000..f591127
--- /dev/null
+++ b/kradio3/presets/austria/purkersdorf-cable.krp
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Manfred Zilka, &lt;kradio@tplus.at&gt;</maintainer>
+ <changed>2003-05-14T23:10:28</changed>
+ <country>Austria</country>
+ <city>Purkersdorf</city>
+ <media>cable</media>
+ <comments>Senderlist of Cableprovider www.tplus.at</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385405350C1D1C3A806D73580D16415CAFBF256DFAEB8230D44931AEBFBEB69E9064C2</stationID>
+ <name>88.6 Supermix fuer Wien</name>
+ <shortname>88.6</shortname>
+ <icon></icon>
+ <frequency>98.9271</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405B88B3F7129CD6477F3C5EBD12743352E9DA8349191FCCA737068EE34DD341983</stationID>
+ <name>Hitradio OE3</name>
+ <shortname>OE3</shortname>
+ <icon></icon>
+ <frequency>90.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405B184874CAE542AFCF0F3C35C713090260A793CC07CEFCEFD71DF0248F4100F40</stationID>
+ <name>Radio Wien</name>
+ <shortname>Radio Wien</shortname>
+ <icon></icon>
+ <frequency>89.1015</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854052B87DBF33358AF740564DF0991D812F351F4DB29FC28A0077733672E460B9BE4</stationID>
+ <name>Radio Energy</name>
+ <shortname>Radio Energy</shortname>
+ <icon></icon>
+ <frequency>106.103</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405AC83846D68E78D079857936874D75A728C299B684C6B6CEF2F43E7CEADD01C01</stationID>
+ <name>Antenne Wien</name>
+ <shortname>Antenne</shortname>
+ <icon></icon>
+ <frequency>99.4271</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405CEB7138B412E7AC935352E7A20048D78192E9C8CA980C2290EA72A3BABB44336</stationID>
+ <name>FM 4</name>
+ <shortname>FM 4</shortname>
+ <icon></icon>
+ <frequency>91.2016</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854057595427E9841019F95DB6E357169D0665EC4DB309B2ECD9651D566AFEAB532C6</stationID>
+ <name>Krone Hitradio</name>
+ <shortname>Krone Hitradio</shortname>
+ <icon></icon>
+ <frequency>103.502</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405479765680C8618C46A5C28EC50DCEC9E2D099A9B3DA583FF4D6F3AA6EEC05763</stationID>
+ <name>Radio Arabella</name>
+ <shortname>Radio Arabella</shortname>
+ <icon></icon>
+ <frequency>106.628</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854057611011346AEF7C51898F4AF80D3433FB7F182E1102690EC3CFF0DCBA7C9B199</stationID>
+ <name>OE1</name>
+ <shortname>OE1</shortname>
+ <icon></icon>
+ <frequency>88.1014</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405535B0181864E59B95314A9249D885085943E742B11022638677FFD0F2F4158EA</stationID>
+ <name>Radio Niederoesterreich</name>
+ <shortname>Radio NOE</shortname>
+ <icon></icon>
+ <frequency>89.5515</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405B729309B6A7CF4B7945EB1F52A46B1CD9D3DADB4AD406F19CA4E14C8D24E869A</stationID>
+ <name>Radio Burgendland</name>
+ <shortname>Radio Bgld</shortname>
+ <icon></icon>
+ <frequency>90.4016</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405FADAA7181A4BFBC56F39346F019F4ED3DE316325D57968ACC8931F58EB9350E7</stationID>
+ <name>Evangeliums-Rundfunk</name>
+ <shortname>ERF</shortname>
+ <icon></icon>
+ <frequency>92.7017</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540549B3573736C8B42D7CF6713BE3177A2E1310BFB7A3456C65423D2E5A0BB341D7</stationID>
+ <name>Radio Stephansdom</name>
+ <shortname>Radio Stephansdom</shortname>
+ <icon></icon>
+ <frequency>105.552</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854052C07D1955C7B007047E92618C1E3E1E97F45F762CA5164BCFC589751BC0AE932</stationID>
+ <name>Bayern 3</name>
+ <shortname>Bayern 3</shortname>
+ <icon></icon>
+ <frequency>96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405A7FED8978E979871151B5BAE45408895EC4C88C0B42AF849112AA5F174175A3E</stationID>
+ <name>Bayern 4</name>
+ <shortname>Bayern 4</shortname>
+ <icon></icon>
+ <frequency>96.4269</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405FCEC802516868646C428ED9BEDEA6F21089A072133F16491852E79E012A968AB</stationID>
+ <name>Radio Melody</name>
+ <shortname>Radio Melody</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405DF84BE456E6F7F3CB219B47D100BB4F6CAB1697A61CE1F9585BDD479323FF5CE</stationID>
+ <name>RTL Oldie</name>
+ <shortname>RTL Oldie</shortname>
+ <icon></icon>
+ <frequency>100.427</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405EF17527A2120E0FFE6EC9E0F8C56F95CBD1C5E05BACB70A9A76E10DAE75B0118</stationID>
+ <name>BBC World Service</name>
+ <shortname>BBC World</shortname>
+ <icon></icon>
+ <frequency>100.802</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405DDCA9FDD613CC36A84A1F62E6A46869469D316809C6411E63D617E13219CBB08</stationID>
+ <name>Radio Rai Uno</name>
+ <shortname>Rai Uno</shortname>
+ <icon></icon>
+ <frequency>101.202</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405D53F458EDB8A6CD7AE8669A7BD3964A22F544C13D51960E03DE3ADB1823D44D0</stationID>
+ <name>Deutschlandr. Berlin</name>
+ <shortname>Deuschlandr. Berlin</shortname>
+ <icon></icon>
+ <frequency>101.602</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405F849B1BF223E193817871B48BAC149D0D4549E2678C7F867D8583F572DE4EE03</stationID>
+ <name>NDR 2</name>
+ <shortname>NDR 2</shortname>
+ <icon></icon>
+ <frequency>102.177</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405C9A72C6D9AED25F193C941EF31E0D27260FD89ADE40240849870AC6ECCA38DB4</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik Radio</shortname>
+ <icon></icon>
+ <frequency>103.077</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385405A0A7FC18BABD148A6F9993D1855D5CEA012667E05FD1FE54229A839DB1BAB81F</stationID>
+ <name>WDR 2-Koeln</name>
+ <shortname>WDR 2-Koeln</shortname>
+ <icon></icon>
+ <frequency>104.552</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854059BEA045534C513EFA63CE3E228D1F1287FEFD95E43A04A63474D58C8979C0CD9</stationID>
+ <name>WDR 3</name>
+ <shortname>WDR 3</shortname>
+ <icon></icon>
+ <frequency>105.002</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/austria/vienna-antenna.krp b/kradio3/presets/austria/vienna-antenna.krp
new file mode 100644
index 0000000..4ab5149
--- /dev/null
+++ b/kradio3/presets/austria/vienna-antenna.krp
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Philipp Droessler &lt;reo@gmx.at&gt;</maintainer>
+ <changed>2003-02-02T06:19:43</changed>
+ <country>Austria</country>
+ <city>Vienna</city>
+ <media>Antenna</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385406194BD1BF1700FD202C337DC3945BFD8B6D635ACE58062D8644244F18A4DFE2C1</stationID>
+ <name>88.6</name>
+ <shortname>88.6</shortname>
+ <icon></icon>
+ <frequency>88.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540627412A4269086777D5D106AB3C1FF627C7637EC8FAB0E0E1A1E7F8EFAA87DCF1</stationID>
+ <name>Radio Wien</name>
+ <shortname>Radio Wien</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385406CF8234C4375CDD314B92205CB903708B16F7C9F4B256B6F2C86B05C9D28CE9D8</stationID>
+ <name>OE1</name>
+ <shortname>OE1</shortname>
+ <icon></icon>
+ <frequency>92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540616DE7DA719F3192931EB55520760FC4AEC3B7DC70A7C14900F50478B5BC0A9D7</stationID>
+ <name>OE3</name>
+ <shortname>OE3</shortname>
+ <icon></icon>
+ <frequency>99.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385406F1F3ACF2AA43E1A898DA60E656977C6077A0293D6E1FF26D1811D7D1566CE5DF</stationID>
+ <name>FM4</name>
+ <shortname>FM4</shortname>
+ <icon></icon>
+ <frequency>103.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540624766AAC97B10089F4A82754EFCE6F5AEA17453C62561A04BF57DB157777780A</stationID>
+ <name>Krone Hit</name>
+ <shortname>Krone</shortname>
+ <icon></icon>
+ <frequency>105.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/austria/vienna-cable1.krp b/kradio3/presets/austria/vienna-cable1.krp
new file mode 100644
index 0000000..7711631
--- /dev/null
+++ b/kradio3/presets/austria/vienna-cable1.krp
@@ -0,0 +1,294 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>dp, &lt;apatsche@gmx.at&gt;</maintainer>
+ <changed>2003-05-03T19:54:30</changed>
+ <country>austria</country>
+ <city>vienna</city>
+ <media>cabel</media>
+ <comments>radio stations telekabel vienna</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385406955233D82F90299E11E3E6C4E523D861C4028A241C49DA9D1CD68D100E49535C</stationID>
+ <name>Radio Stephansdom</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>87.6875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540657AA5876E30BF1B30D88CC65D0722F8378EFEDCD078B288C06B07D41413D39EA</stationID>
+ <name>OE1</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385406956C07EE456D4E66E7E8782190832F5F0C48912963344F551684767DC1C92DC8</stationID>
+ <name>Radio Wien</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>89.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854067060E1226482529E8B855968A47EE1A565FD5E6302DD09B0364C2945D5BADE22</stationID>
+ <name>Radio Niedersterreich</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>89.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540656340462EE2462606FE9295759CF34F744B31983FCC03098BC274E2C9F106812</stationID>
+ <name>Radio Burgenland</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>90.4375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385406D338F5D57C37C8B993C6074F3132CFF02A9C14C4AC88A948246DAFD8132E705B</stationID>
+ <name>Hitradio OE3</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>90.8125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385406383749C6643CE238C64DF46CDB9A3EFDC60688FCB424546EC54775590953573C</stationID>
+ <name>FM 4</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>91.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385406592A3DF7620924F1BF8430B95ECE7D73BC5BB14718202FBC4971095920AC0C04</stationID>
+ <name>88,6 Der Musiksender</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>91.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854066FDB5DEEB35071B74BB5538CAA54972C95A5683F96D8B804304063154AFD08E9</stationID>
+ <name>Radio Arabella</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>92.3125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854064BCD574B6CDC4FAB98825343833FBC311285BCBF7AE1C7C028127F8CF3C55ABE</stationID>
+ <name>Orange 94,0</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>92.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385406CA10E76AFC95D0214B7B0375AD498C76ADC2C9BF460C0B35D6D2A97FA2B5D6F3</stationID>
+ <name>Krone Hit Radio</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>93.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540641DCCC3A85B9E2C864780773ED3957647EB10A7359BE91458C0375C38EF4EFC0</stationID>
+ <name>HR 2</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540638715E2356A6941AB4FACFCE1A485167DFA133B3F8337DAD4300004002178B31</stationID>
+ <name>Bayern 1</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>95.0625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540609F36B86D21B3FEE5B3BC7335D591CC77DC800C76F7EF69584F8542679D9B900</stationID>
+ <name>Bayern 2 Radio</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>95.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854060C409D7584E6D347BBFE4C19EF804D10507895AD6642317B1709BE8CF45FEED6</stationID>
+ <name>Bayern 3</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385406367A0E8F97CE918EFBE6C109CC4FD9D86717D046FF58C978336B21EF526D5607</stationID>
+ <name>Bayern 4 Klassik</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>96.4375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540648A8B6FD8C7D39A52C284705FA7C44127F20151EE84CA8FA2BD12FEC9A7C2F9C</stationID>
+ <name>B5 Aktuell</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>97.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854065F5207377B51424A6452BD34FC76404EDE0887D2F86019BC3B76771E55F04FA9</stationID>
+ <name>Radio Melodie</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>97.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854066D655FFF1E6F761F4A9E1AF8FE5557BFF6B26843608E5697935EA1112DCF1AC8</stationID>
+ <name>Deutsche Welle</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>98.3125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385406B50F7A6BDD940B18686738EDFAC9F682483E0E1414924F8550B83C843EB084A2</stationID>
+ <name>RFI</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>98.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385406721619104B6E10E505660E18FB2D658160301AD4845CA82D9E64188E4BF78329</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>99.4375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385406033268632CC6D8CAF575F5A657E74B10543E66766DC3A29AB6C5A5AC776B299C</stationID>
+ <name>RTL Radio Oldie</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>100.438</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385406464C5FFB26346008753D890DA19A51E5DC430D98ED995032E39AF17E01F319AE</stationID>
+ <name>BBC World Service</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>100.812</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540657CE8E7D24438A7C30CB0C1D2E7BB42DA2D5A503FFDFFE1F9BEEFE146CD4A9B1</stationID>
+ <name>Radio Energy</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>101.188</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385406EA4A1EAB2D88C0C22D3698311F276136D7DCB1F32D584AB7FA1B75EAD9634AE2</stationID>
+ <name>Deutschland Radio Berlin</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>101.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385406C1BA5117D195E190A56B51B23B75F16ABF0C942132CD6F7C4C61D54E5325396C</stationID>
+ <name>Radio Maria</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>102.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385406BE48FF31D02D3955689752C61A87AD1F1D69A7CB4918621E2A4D1B4F908E3B48</stationID>
+ <name>Klassik Radio</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>103.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385406EA3C487DBCD405039A92A036D993E44AF892E14A88AD26831452B44893F2580A</stationID>
+ <name>Nordwest Radio</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385406F8D8DDC87E1EECB36EA43FF6BEAC41FEE5AD63014A7FBDE00AECBC67D4A13237</stationID>
+ <name>WDR 3 Koeln</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540650C1EA08B2DCB9A8AD243179F58F4DACEEC3540B01F64726B9D4A2492BE0FF40</stationID>
+ <name>SWR 2</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>105</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540697CB73899B308EB6C321E26F4E5D30F80231D7DD0C3F9C07BC401475B9522975</stationID>
+ <name>DRS2</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385406F28DA55856489CC0DE1C5F04B7CB3983D15D01949D909B06817F7913E02CA758</stationID>
+ <name>Radio Österreich Intern. </name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>106.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385406D04B82F105C714DE122EC739E1B28B7D0D049C9D9E3BCA4931D5BE23FE92C201</stationID>
+ <name>WRN EuroMax</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>106.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385406D0A86ED956C1E48B984012C76BCD506B480115B27D00F359AAB91C705E2BD5A5</stationID>
+ <name>RNE Radio 1</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>107.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854065488826DE3A2A68C41D4CE9B17D89DD16414BE27D9E7551FBC1278912044631D</stationID>
+ <name>NPR Worldwide </name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>107.812</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/austria/vienna-cable2.krp b/kradio3/presets/austria/vienna-cable2.krp
new file mode 100644
index 0000000..d1fab64
--- /dev/null
+++ b/kradio3/presets/austria/vienna-cable2.krp
@@ -0,0 +1,323 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Wilhelm Rizek, &lt;a8025804@unet.univie.ac.at&gt;</maintainer>
+ <changed>2003-07-22T22:07:54</changed>
+ <country>Austria</country>
+ <city>Vienna</city>
+ <media>cable</media>
+ <comments>created from RDS-signal</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1063385406BD83E660F39C3CD449BCB38F73E2B0CE04D73BDCB870B0AF636D178DB3FEED33</stationID>
+ <name>Stephansdom</name>
+ <shortname>Dom</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>87.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633854069CA377E90734A0D7A45B2C162D158E347023702D3E2AE787DAD939AFBDEE4230</stationID>
+ <name>�terreich1</name>
+ <shortname>�</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>88.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385406CA94449D4370370678699C54E71AEA81373899EAE751E70005538E09F5D36AFE</stationID>
+ <name>� Wien</name>
+ <shortname>� W</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>89.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338540684B582651FB5E7CA8E358383D9784A2F038D1FF790A5C6BF9726079914CE0B95</stationID>
+ <name>� Nieder�terreich</name>
+ <shortname>� N</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>89.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385406626554E0FF4741FB61BB9C2C96455A7D6521AB061E3E1FEC60ECA3DEED9FFB1B</stationID>
+ <name>� Burgenland</name>
+ <shortname>� B</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>90.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385406967BAFE80B981A587EE0013833454E1CA6C4ECDAFF41BF9F25D19997236B5385</stationID>
+ <name>�</name>
+ <shortname>�</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>90.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633854063AF2B168D5CB6A27C5B592FB4A688E6D9F3009035B974D95D7A237875F7943E2</stationID>
+ <name>FM 4</name>
+ <shortname>FM 4</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>91.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338540639E62A6D315E4942B2A810792A8BC0F2346921F22E304EED9A0E3B8CD49A5B99</stationID>
+ <name>88,6</name>
+ <shortname>88,6</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>91.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385406651FDF963A35DCA19EA0393766F31BDE675AF76A15E6B0D77CCCC55652B488CB</stationID>
+ <name>Arabella</name>
+ <shortname>Ara</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>92.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633854067725CA6113EFC9ACA7E9AD166183342E18D1643D8150C5F627639CCCD7836A25</stationID>
+ <name>Radio Orange 94,0</name>
+ <shortname>RO</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>92.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633854060A16B60F48E79C345921161783D730D8E58152D8C55F9490671993600C5A4F74</stationID>
+ <name>Kronehit</name>
+ <shortname>Krone</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>93.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633854063A95BD1E039F5D1329E925B0E20E7DB9D58631AA22CAE46D1D7DD20A8B5E02A0</stationID>
+ <name>Hessen 2</name>
+ <shortname>HR 2</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>94.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633854063D3098DC8C3FF14D459F3F513626EA37DE94D8CDDF1AB6DBD81242DCE8ADDD0D</stationID>
+ <name>Bayern 1</name>
+ <shortname>BR 1</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338540628A2CA0DCE4B123CC5A39C97556829FBE589EDB5F5E632A3A96DD47699C182EA</stationID>
+ <name>Bayern 2 Radio</name>
+ <shortname>BR 2</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>95.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633854069C141649AFB40B04055E185661FE230A111996938B4BC061C003D31BECA6BEBF</stationID>
+ <name>Bayern 3</name>
+ <shortname>BR 3</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>96</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385406D3B1F8300CF3FACC1826C1B5C7038AEC45FBD80D92B69FA54AE63EC84C57CE93</stationID>
+ <name>Bayern 4 Klassik</name>
+ <shortname>BR 4</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>96.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633854060EFFC7AF5D94C41B826DF4E015FE74CE47C90F43F2FE9FF2698BCEA54EB0DC9B</stationID>
+ <name>Bayern 5 Aktuell</name>
+ <shortname>BR 5</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>97.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385406D9FFFCB60BAFB8B24CFD56349ADA87189D3A0793DE5EB68700254C2D4CBDC0E0</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Melodie</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>97.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633854069C67CB393C3E1CC5B0979859ABCC2E3636214741A2D102B87909681B7F6BC431</stationID>
+ <name>Radio France International</name>
+ <shortname>RFI</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>98.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633854069D772F496606AC3B27B40F82C44C6650E2FAFC206CFA065119FB75F523CACD8E</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>99.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338540614595316923D500A028F8742F31E6AC39ABF1059B5F1A14921347977B39085F1</stationID>
+ <name>RTL Radio Oldie</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>100.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633854060D260E6BF99AB4AAB580FCAB54FC31955F59253CF75D54685D7406E24431E46C</stationID>
+ <name>BBC World Service</name>
+ <shortname>BBC</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>100.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385406B8B0A4447AFE9A1D74E1D12F58E58CE05DEBD8E5ECCBDEE371FD66E0C59366D4</stationID>
+ <name>Radio Energy</name>
+ <shortname>Energy</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>101.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385406A0FC50ADB6A75EF2F525D3C41243BA5723CA911B855D29FEB0C2E0257C1FB780</stationID>
+ <name>Deutschlandradio Berlin</name>
+ <shortname>DLR</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>101.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385406D702A24003CE65A3F2B3FC12DA8CE0CAF930B6212FFE2BF8B7FBD0CD77453838</stationID>
+ <name>Radio Maria</name>
+ <shortname>Maria</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>102.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385406BC1DFC1580E7C99FC5560852B19B6F59F6FBC17D9E7615C8417D214ED2E31A22</stationID>
+ <name>Klassik Radio</name>
+ <shortname>KR</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>103.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633854068375B4DDCBAACB8464806E0F17F3E8660E0B95175623C1FEED1ECEDC5775C47D</stationID>
+ <name>Nordwest Radio</name>
+ <shortname>RB 2</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>103.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633854064BC27C6AD1AB84EED3E6D85F52FD7EF166A206DD21D58C9DF0F4CCB73C4DC3EB</stationID>
+ <name>WDR K�n</name>
+ <shortname>WDR 3</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>104.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633854065F7907355F78A991E798A7031139D293E44D1BF821125476E78ACA4E474E1503</stationID>
+ <name>SWR 2</name>
+ <shortname>SWR 2</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>105</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633854063DCE5D16B21745619E4BBB7FE6979AE4B12497B7577D0A78478C6D7CA273C99C</stationID>
+ <name>DRS 2</name>
+ <shortname>DRS 2</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>105.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633854067DDE3F5CE0D7A660FCA292603F3F4C936A6AE7BDF272937060E58CFF26795D71</stationID>
+ <name>Radio �terreich International</name>
+ <shortname>R�</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>106.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385406E469095328414924C7E4BC48EC42825AC2F048DC0D5B0EB735ED2C4AD73CCA20</stationID>
+ <name>World Radio Network Euro Max</name>
+ <shortname>WRN 1</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>106.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385406DF53078E0823549661357AE5B2CD1D68644C1D111DB77FD1A87621BD3E6B86F4</stationID>
+ <name>Radio Nacional De Espania Uno</name>
+ <shortname>RNE Uno</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>107.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385406BFCD51633FC2EF019E77F3AF262975BB516FE75C3048C8D2000B424E17559FF4</stationID>
+ <name>National Public Radio</name>
+ <shortname>NPR</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>107.8</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
diff --git a/kradio3/presets/belgium/Makefile.am b/kradio3/presets/belgium/Makefile.am
new file mode 100644
index 0000000..6897943
--- /dev/null
+++ b/kradio3/presets/belgium/Makefile.am
@@ -0,0 +1,14 @@
+SUBDIRS =
+EXTRA_DIST = "buellingen-antenna.krp" "ieper-cable.krp" "limburg-cable.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/belgium/"
+ $(INSTALL_DATA) "$(srcdir)/ieper-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/belgium/ieper-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/limburg-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/belgium/limburg-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/buellingen-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/belgium/buellingen-antenna.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/belgium/ieper-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/belgium/limburg-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/belgium/buellingen-antenna.krp"
diff --git a/kradio3/presets/belgium/buellingen-antenna.krp b/kradio3/presets/belgium/buellingen-antenna.krp
new file mode 100644
index 0000000..57a6abf
--- /dev/null
+++ b/kradio3/presets/belgium/buellingen-antenna.krp
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Bernard Heinen, &lt;heinen.b@belgacom.net&gt;</maintainer>
+ <changed>2005-10-14T20:43:01</changed>
+ <country>Belgium</country>
+ <city>Büllingen</city>
+ <media>Radio FM</media>
+ <comments>Empfang über Antenne und Pinneacle PC TV-Karte</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>113310325643C34509CA1FD657E1FDCB90EAF79DE61AEB7B6B4E1D964C54311509007C0DFA</stationID>
+ <name>SWR 3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032568BC93945F269AD16E4E33911B6E824A759947C5B03298968E96C2A1F7F041A7B</stationID>
+ <name>WDR 2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>101</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256F448221774C59F152227AAB1EC76089012D0F79148B9C13EECB8D896BD82D41C</stationID>
+ <name>BRF</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113310325640A881FE826055F2513D0F2E355E71670F342B540A2B8A0AD907CB0CD879DBA8</stationID>
+ <name>SWR 1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>91.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032562D580494D651E35C2AD603182AD9482A5E768A18D5D36A7D7765286B7497A3F0</stationID>
+ <name>1 life</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032563B6EC378F7568BFD70531D80BEF8D973FD14F19859E00A6004691FEA0A6006BD</stationID>
+ <name>RTL Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113310325612BFB253A8F305EC708EBE00C60A33D1F1F5FCA4893BB6D00B5EFCDCF8AF3E50</stationID>
+ <name>BRF 2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032567E58C7358EA3B7B515B7A996EFD6F29612CBCD9CFDA78A6C8E413F9B243DD066</stationID>
+ <name>Radio 21</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>95.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256AB3544FA4CD5F1D558EFB734D796DBC0B34AC2C5811D6ED310AF035176401463</stationID>
+ <name>RPR 1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256CEC65DA39CA2DF8A4DB92904FF2AE24C828D6AC1FE1E82C7F10D93BD0FEEC353</stationID>
+ <name>Sud Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>105.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256CB82EEE9609B7999198C44FFB5A008E9C7E6CEB7DA42C5A2A5C3E3A38AFFADC5</stationID>
+ <name>Big FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>106.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256968CCD9229F8251BB79B49CD9D633408F5B94D21509019B0F0E8520B487A443B</stationID>
+ <name>SWR 2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>93.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256885577DFA955D380E8272BE6478685EF32234FED880E1819281941026079C8BE</stationID>
+ <name>SWR 4</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>93.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113310325630E0BCDE59874ABBB39F591C970D56F3D40B1E432D26B1BB2E743A89EF857845</stationID>
+ <name>Bleu FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>106.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113310325673DC8919F70B82199FAF1D3318698040D5DFF747D6CA7CBBF0F8ED540B0E33EE</stationID>
+ <name>Vivacite</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256D2F79F5782AE09DD57272E8C15BB138774BADBDF55FED59D0153E9BD36C7A640</stationID>
+ <name>RTB</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>87.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032560F07E68E30EF97289F8FA84B930D6F759585937D71DE7046AF3AE4E3CA8E1777</stationID>
+ <name>RTB Classic</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032564B30973094C57301BBD66C72B761F547A4293AE8C364D8422EA132E211C2B4E2</stationID>
+ <name>Luxbg Platt</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256DD3C678D7F221E6871219CE6D555073EB031AB6571D77A8AF4DD4A9D30DA1C83</stationID>
+ <name>Radio Kontakt</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113310325664170E546DC680B87DC6C7220A263C67D807DB4D8E32D1199C4EA8E0E3E04963</stationID>
+ <name>New Station</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>0</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032567813D970DFCF66427F04227BE0394E23DE59E66E60E7AE6E07544410E9E5BA8A</stationID>
+ <name>radio contact fr.</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113310325668993EDBA0BE30B887155B1D95AAE4438C487EFEBA9195E3ABA693B22271B929</stationID>
+ <name>RTB 2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/belgium/ieper-cable.krp b/kradio3/presets/belgium/ieper-cable.krp
new file mode 100644
index 0000000..f97d824
--- /dev/null
+++ b/kradio3/presets/belgium/ieper-cable.krp
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Jos Baudrez, &lt;jos.baudrez@pandora.be&gt;</maintainer>
+ <changed>2003-01-15T18:50:00</changed>
+ <country>Belgium</country>
+ <city>Ieper</city>
+ <media>cable</media>
+ <comments>Frequencies</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>113310325689DA2E08CF0E6A90941C9DD71A139C984DAEBB1564C1D990FD55FB63A13DF68A</stationID>
+ <name>927 Live</name>
+ <shortname>921 Live</shortname>
+ <icon></icon>
+ <frequency>107.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113310325617EC41CB94FEA9AAE6B42FBB3C98D45FF70BDA027AA7E3AC46983BFD2B07A65E</stationID>
+ <name>VRT Radio 1</name>
+ <shortname>VRT 1</shortname>
+ <icon></icon>
+ <frequency>90.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032560A6067A9597E8ABBB6B1F1A3356ADA08A2514191E3EABBBFFF8E1191DDBBBC2F</stationID>
+ <name>VRT Radio 2 W-Vl</name>
+ <shortname>VRT WVl</shortname>
+ <icon></icon>
+ <frequency>90.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256A41F272ACC2C723143BD5BCA096535336CB2AD34AFA5B49A873FA7DD334772B8</stationID>
+ <name>Klara</name>
+ <shortname>Klara</shortname>
+ <icon></icon>
+ <frequency>91.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256CFCBF307E6575B0C4EADF6AA3002814D330368396DE37998A70C1CF69B5BFE7D</stationID>
+ <name>RTBF Classic 21</name>
+ <shortname>Classic 21</shortname>
+ <icon></icon>
+ <frequency>87.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256770A6DB8A59AFE2F9F1D50A2439444F2F3FF4B4FF8A669718722926568C0D54C</stationID>
+ <name>RTBF La Premiere</name>
+ <shortname>La 1re</shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256C5309BF8071C78D6C6C051219A75633073DCC397C2FEEEF855B8839B89C9EC34</stationID>
+ <name>RTBF VivaCite</name>
+ <shortname>VivaCite</shortname>
+ <icon></icon>
+ <frequency>88.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256ED434AF670798A11ACCA96A619BE45303D7794A633371262A8A90948ADFA5FA7</stationID>
+ <name>Musique 3</name>
+ <shortname>Mus 3</shortname>
+ <icon></icon>
+ <frequency>89</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256F2E4BFAA5FF775EDEDD4942F0A21AEE8E31B058C27BC613A8C7D4A8F90D464CD</stationID>
+ <name>France Inter</name>
+ <shortname>FInfo</shortname>
+ <icon></icon>
+ <frequency>95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256DFDEE9E5909489D734C955C7B3295B65DA814F0A28B54FF67C02D8CEDDFD57AE</stationID>
+ <name>Frequence Nord</name>
+ <shortname>FNrd</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032560DB918E95965F697CD88C18344974896ABA56D3E5478E4FDAEA42E46985863B4</stationID>
+ <name>France Musique</name>
+ <shortname>FMus</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256F8432FA75577EBB068893FF3DED363DCC2340B8573770B772A42054E42648A17</stationID>
+ <name>France Culture</name>
+ <shortname>FCult</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256EA2371854701B9417798D11C3F1263778EA4036377E68EA2B1F8334459958C3F</stationID>
+ <name>Nozema 1(NDR)</name>
+ <shortname>Ned 1</shortname>
+ <icon></icon>
+ <frequency>96.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032566935FEF03E5AA5BC818566E8548CC36D66CD5AA6FD6713BA437EF5093B6B869E</stationID>
+ <name>Nozema 2</name>
+ <shortname>Ned 2</shortname>
+ <icon></icon>
+ <frequency>97.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256267FE28C0DC4A2CB6ADA5069C6234345876BF237253D4B259167B1BA058A6DCC</stationID>
+ <name>Nozema 3</name>
+ <shortname>Ned 3</shortname>
+ <icon></icon>
+ <frequency>97.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256E33E9B35A732F84D456B4F295F809DEB141A5C705A4FC998213B53EA853B9808</stationID>
+ <name>Nozema 4</name>
+ <shortname>Ned 4</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032561480954FC6F7D24A63635BDFA2A9DBA485C2812BB8AADDDEC179240B0E2EB315</stationID>
+ <name>BBC World Service</name>
+ <shortname>BBC WS</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256560EAC04180C05422D8395521EBE0679FAF1F7C23A3C1E22C7F12AF86C4820A9</stationID>
+ <name>BBC Radio 2</name>
+ <shortname>BBC 2</shortname>
+ <icon></icon>
+ <frequency>98.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032562D000EC74BE15495CBA82DA529DA46D6077784CC8B77126F9DED16F3513F9023</stationID>
+ <name>BBC Radio 3</name>
+ <shortname>BBC 3</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032567519536EA40666BA84314B21FF7EC05DD778D36114C39152C7996CF188B5635C</stationID>
+ <name>WDR 3</name>
+ <shortname>WDR 3</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256953B8A03DBCAC9CE352434D7D3FDE22F5DF636AEBA63144F4E852D07BB83E733</stationID>
+ <name>Radio Donna</name>
+ <shortname>Donna</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032565763CFB1FC32E7822A95CC72715D1B8107348328ED3B8E4F1FB66DA742C926AE</stationID>
+ <name>Studio Brussel</name>
+ <shortname>StuBru</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256739F12017291E76C3989F6C9139895177C33B075EB97943717688AD8A6DF4B34</stationID>
+ <name>Radio Vlaanderen Int.</name>
+ <shortname>RVI</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/belgium/limburg-cable.krp b/kradio3/presets/belgium/limburg-cable.krp
new file mode 100644
index 0000000..640559a
--- /dev/null
+++ b/kradio3/presets/belgium/limburg-cable.krp
@@ -0,0 +1,222 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Roeland Moors</maintainer>
+ <changed>2004-04-22T10:19:21</changed>
+ <country>Belgie</country>
+ <city>Bilzen</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1082619533D0EF312578B2C12F4D76EE3E45054110BED5B081ABF144AEAE7E0E23E51FCEB6</stationID>
+ <name>Q-Music</name>
+ <shortname>qmusic</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10826195610A775A75595FDD614377142AB1E7ABDF68B6543FD0584A713D32743C2EA00489</stationID>
+ <name>BBC World Service</name>
+ <shortname>bbc</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>108261962639A66AB376DD9D27E80149D2D61AD239DE63E146218662585E31EB0248D397D6</stationID>
+ <name>927Live</name>
+ <shortname>927live</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1082619671DE233A2BB89F80A07E33B805CA9959B4E4E74D0DAEEACBA8E07ED71ED65610F6</stationID>
+ <name>WDR 3</name>
+ <shortname>wdr3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1082620910B45786FF083AC616D0A0A6D78C946102170D9B2E9474E793A8BDF538DB390AFE</stationID>
+ <name>Nederland - Radio 3</name>
+ <shortname>ned3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>108262095178C3CCA1F5DB0428D4E592D9B93DFA3D2E7E76616E0C427BBCE298AC1E9FB01D</stationID>
+ <name>VRT - Radio1</name>
+ <shortname>radio1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10826209750CF79B635B04F5242D968212984DDC10C866D6DABAD9E6468814DFE0E33CE9E9</stationID>
+ <name>VRT - Radio2</name>
+ <shortname>radio2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10826210136C048B28291F1F530C2A22B034352FB399B1CD237D3BCDB58979305CACDEA605</stationID>
+ <name>EINS LIVE (WDR 1)</name>
+ <shortname>wdr1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1082621051C51956125BCE00D5FBB8FAC8CA61396B7DF6142C49E44B116D70670051B2D6A0</stationID>
+ <name>VRT - Klara</name>
+ <shortname>klara</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1082621159C95FEB6B921F3E353C632F25F5937EBEACE8018AE4F95507A6F8E2975D8D4664</stationID>
+ <name>Nederland - Radio 4</name>
+ <shortname>ned4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1082621184E588E86CC742675E56379F71AC9217B0B1CD3AF86504D06A17E3EBEAE612484C</stationID>
+ <name>WDR 5</name>
+ <shortname>wdr5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>108262120834EC43958CB3D6FC5B96BD601D518A64B951386EAB749DEAAD3AC0768D2E1792</stationID>
+ <name>RTBF - Musiq&apos;3</name>
+ <shortname>musiq3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1082621275D14657D22ECE8AD866159CB6300AEC26A48CCB38D8B8F7D9C2008ADF51DBAF8F</stationID>
+ <name>WDR 2</name>
+ <shortname>wdr2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10826212908F42B476DEFEE309D349ACF7FEC53D26961AD55328A4DF6FBC4FBC80CAD21A2A</stationID>
+ <name>Nederland - Radio 1 (Nationaal)</name>
+ <shortname>ned1-nat</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>108262135668FCD27F092C05D9216B9104F66FF73AEBDCDA2E741BE69AD6C30701DD985FB3</stationID>
+ <name>Nederland - Radio 2</name>
+ <shortname>ned2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1082621414CC973051A7B9E0A4697AA562869A3131D27324D91297B241033C2D98563D5744</stationID>
+ <name>BRF</name>
+ <shortname>brf</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1082619235DC5FD7D34AE69B0A0C50E5D9E6C699305922E4ADFDA83B7435EA7AB8AFA6414E</stationID>
+ <name>Studio Brussel</name>
+ <shortname>StuBru</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1082621438A45CD2C0240208C9A0968F76099A67C33CD535FC84C4DE430C28BA86498A8E91</stationID>
+ <name>Radio Vlaanderen Internationaal</name>
+ <shortname>vlint</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>108262148239F9C8F4FDC6691E9AF9B68110AFF6A254FDFB957E819A504F9F147AD2CE5E5B</stationID>
+ <name>RTBF - Classic 21</name>
+ <shortname>classic21</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>108262152926A4973D4F980A88B27B823F034AF6AE61D4983ADAC7B4CA6B24AE11C0481F02</stationID>
+ <name>4FM</name>
+ <shortname>4fm</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10826215663DCEB2AA176C09035A6E1DE5CD1B3BF88E3EECE82363AEB39DB536854709FA45</stationID>
+ <name>Nederland - Radio 1 (met L1)</name>
+ <shortname>ned1l1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1082621616F77C4DEE7B04511C753709AF93DB58E8E8AC832D1A52A728B458AB2D8BA55C10</stationID>
+ <name>Klara Continuo</name>
+ <shortname>klaracont</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1082621659B048F3CB12829B25BA647C7E71B4CD8B4C0A53E0396BB0DB95A9E5A556C22A3F</stationID>
+ <name>WDR 4</name>
+ <shortname>wdr4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1082621675C7B920487D8A8DE7C2179028C13643BA22798F49170CC5C5CC923B4895E419F8</stationID>
+ <name>RTBF - Viva Cité</name>
+ <shortname>vivacite</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1082621707308F4B23C7CFB73FF3B07AE9CF58B1CF2006000A17BDC3F54F67D8201B801F09</stationID>
+ <name>Radio Donna</name>
+ <shortname>Donna</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>108262172679DC7B7D5BE9C24004202CF0FAAB1A6728E1A1A2DB09288D818CF2E3D354215B</stationID>
+ <name>RTBF - La Première</name>
+ <shortname>laprem</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.4</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/brazil/Makefile.am b/kradio3/presets/brazil/Makefile.am
new file mode 100644
index 0000000..1ba8e1a
--- /dev/null
+++ b/kradio3/presets/brazil/Makefile.am
@@ -0,0 +1,14 @@
+SUBDIRS =
+EXTRA_DIST = "brasilia.krp" "rio-de-janeiro.krp" "sao-paulo.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/brazil/"
+ $(INSTALL_DATA) "$(srcdir)/rio-de-janeiro.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/brazil/rio-de-janeiro.krp"
+ $(INSTALL_DATA) "$(srcdir)/sao-paulo.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/brazil/sao-paulo.krp"
+ $(INSTALL_DATA) "$(srcdir)/brasilia.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/brazil/brasilia.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/brazil/rio-de-janeiro.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/brazil/sao-paulo.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/brazil/brasilia.krp"
diff --git a/kradio3/presets/brazil/brasilia.krp b/kradio3/presets/brazil/brasilia.krp
new file mode 100644
index 0000000..a42155d
--- /dev/null
+++ b/kradio3/presets/brazil/brasilia.krp
@@ -0,0 +1,255 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-snapshot_2005_11_27</creator>
+ <maintainer>Allan Gomes &lt;allan.cassaro@gmail.com&gt;</maintainer>
+ <changed>2006-04-30T22:41:55</changed>
+ <country>Brazil</country>
+ <city>Brasilia</city>
+ <media></media>
+ <comments>Principais radios de Brasilia: http://pt.wikipedia.org/wiki/Lista_de_r%C3%A1dios_brasileiras</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>114640622650ED44514EC07A88BAC089D8C0B4C1FE9C692E81E358676F50D2E3B00D29C430</stationID>
+ <name>Rede TV</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.8251</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>114644920843F640B412A06D7CCF43EE6B077B732ACB368AF703340F05D7DF6B2B3AF8ADA5</stationID>
+ <name>Nossa FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1146449255B079887271C24A51AF29DF45497DBC1F8B2230CF54926BEC0FD2C7D0EC643CE7</stationID>
+ <name>Mix</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1146449276E46E31832E25D711875D5EE9670DD5BA82736A2D981D97E3165C5BF6C663FAE7</stationID>
+ <name>Super Rádio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>114644929908FA07A01278DD4D12E97E5281A9A9FDADDF2771E22A8538C08BB029E03BA159</stationID>
+ <name>Rede Boa Vontade</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11464493262AD51E3DBCE5228C0BED15206F2BCC521A774488B429057AA6112342B9E18F89</stationID>
+ <name>Mega</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11464476754703E0C9D768EFED71357FA8A7FC98E597864A98EE4929B02CE2CFDA084DAA80</stationID>
+ <name>Justiça</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.1003</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11464493871C0619185ADFDF8B293D4478C3D4CBC80EE32F6DE32096938CD2EF2D7A9999E7</stationID>
+ <name>89 A Rádio Rock</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1146449371F7B79F596799E7CC73DCD3AB27968EB2EEACF7FA5FC0FB869C188D81486B910C</stationID>
+ <name>Senado</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1146449414A405F152148835656392230F0FBD6A69B270FDB694964F83C3EC49D0AC62BBF1</stationID>
+ <name>Rede Boas Novas</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11464483973598385BF79217B2542A57E2C8876D12AAC5773AEBA9E83D1CA5B4F7E5F2EAAD</stationID>
+ <name>Antena 1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11464494364FB257199E448149365B09192ED09A638B3B6F260371CF69F1D4CF4D2F63F0AA</stationID>
+ <name>Kiss</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1146449451C811039EE2F0EC3CFE8FF7BD2C84428EECC9EDB5E1456BDFC9F64D45AF17095C</stationID>
+ <name>94,5 FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11464484164A973C9B4098EFFFFC766BB35B87ADC8CC878A9D228DD7696C6F6FA15E36E2EC</stationID>
+ <name>CBN</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1146447682A3C775A6F653023515CBF825CC932DC4C44C5CCBC7BDD4B315E56A6E2AACC72D</stationID>
+ <name>Nacional</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1146406332C31473FBABC5466F2329D8E2C2AC6AEA7C7D411492B513C04DA003D29C50ECD7</stationID>
+ <name>Câmara</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.896</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11464074456CFF0B46DFCA27EB7B6FA3E87CA1EA6A4F3577BDAC55B1CEA5926D2A8427E761</stationID>
+ <name>Nova Brasil</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1146449529F92030A07301BEAE46B96011F918433929793E0E3A1E9E88CF05B7EBB869D1BA</stationID>
+ <name>Tupi</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>114640638313218177520060C4733909373E2D05167F0D81CCB9E8AAC6E59F21D0907C83E6</stationID>
+ <name>Verde Oliva</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>114644955919AB4BF2430AC76D10D9AC9CACBFCE63FF15323B78BAE4B8A9AAF40D7070EC6A</stationID>
+ <name>Rede Aleluia</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11464495745B10ADC477684D760AB993ABD4434E81695B67E62258407AB997B349CD42D332</stationID>
+ <name>Sara Brasil</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1146406403EF9A859F523CC0ABF580B5CD9798C5ED0431A2DCCD739EEFFDA4E3B61E451A39</stationID>
+ <name>Transamerica</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11464495938FD9C94B1AB973F44968A2DACDA928EC3A6F284CAC108277055A88E26B0C3E50</stationID>
+ <name>Cultura</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>114640642705A5DC823D7254102F0C073043B5DC641D5666E0F8BD5ECE3C7A15DC8259AFFF</stationID>
+ <name>Executiva</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1146449615570084D7508D1D89ABA582667CFEB69E181BD8FB081AD0F964F69C94BFCB71B4</stationID>
+ <name>Nova Aliança</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1146448483D893DC9168321B55307CACF5E91EF5DB8094040DFEB76E2065FDB15F32E1EE78</stationID>
+ <name>OK FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1146447809116C8117F6E021D4E50AC17C5BE6B2EA78FB836CACC8AD1502C766330B0373A6</stationID>
+ <name>105 FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>114640645114F461955AA9D24236D3E46B614BC9DF8C650A91E441A8EDEA73EBA746B1C225</stationID>
+ <name>Jovem Pan 2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1146447857AD57C0E1C6C15A977C8B5F9ED979582E9ECD6D7622E8752504134181EC66CE0C</stationID>
+ <name>Atividade</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11464476978D4368BABB0F560DF9B99993AEC4B9D9AB2672EDD5D23A663420D00FF756D881</stationID>
+ <name>JK</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.901</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/brazil/rio-de-janeiro.krp b/kradio3/presets/brazil/rio-de-janeiro.krp
new file mode 100644
index 0000000..60bea72
--- /dev/null
+++ b/kradio3/presets/brazil/rio-de-janeiro.krp
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Bruno Buys, &lt;brunobuys-at-gmail.com&gt;</maintainer>
+ <changed>2005-02-16T00:57:11</changed>
+ <country>Brasil</country>
+ <city>Rio de Janeiro</city>
+ <media>FM</media>
+ <comments>"Jesus" means religious-only radio stations. Rede
+TV is actually a TV.</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>110852260463B1FF53E1CD96CF530D5073BBDC2E5E6D4E3CAB9B34065943518B4BAD5410A9</stationID>
+ <name>Rede TV</name>
+ <shortname>Rede TV</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.775</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1108522606CF0E16071B00E33871043B85546C70AA2AF543A71B4C24B9B04E1817131E5CCC</stationID>
+ <name>Jesus</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.3001</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11085226079713E38261AB9287D23763C4D825CBFAB4756409F233A41E405EDAAFF360E6CA</stationID>
+ <name>Radio MPB FM</name>
+ <shortname>Radio MPB FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.3502</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1108522610E1E698C5DE74602CACD88D4BD92DB5A333FF31F77FACA15E10ACA36575E5B882</stationID>
+ <name>Globo FM</name>
+ <shortname>Globo FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.5503</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110852261107A4883E351F621F0ADEBADCF0BD45E7877F69B1DB48282598F8F6D0556C88BA</stationID>
+ <name>Jesus</name>
+ <shortname>Jesus</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.3754</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11085226135301AB1B95E41ACE07478D6F2C86942A06944D1BDD11C73CED9D3A56D0850081</stationID>
+ <name>Fluminense FM</name>
+ <shortname>Fluminense FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.9255</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1108522615798A0B2E248B18387E6433FD51190E66587E9A13EEA19E005588B98DAFEFC51F</stationID>
+ <name>Nativa FM</name>
+ <shortname>Nativa FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.5506</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110852261861A65E9E025217236634A2FED71D33BA90B39E7DBB47F575E638DDD14D6AA426</stationID>
+ <name>Radio MEC</name>
+ <shortname>Radio MEC</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.9507</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1108522619C23DF4E4945D4514733F38BD25957B583A8AE4F1BB703CFCE6E675892585D4FB</stationID>
+ <name>JB FM</name>
+ <shortname>JB FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.7008</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1108522621C91B5E7DFEC5C77575BF0B195FD21551C5BBB8A413C1CF0A129C7004CC7D7163</stationID>
+ <name>Transamerica</name>
+ <shortname>Transamerica</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.326</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11085226228543DC58DACD263E20C489701FB95A1815555AB77BDA2BEF2D8F524D2CDC0680</stationID>
+ <name>Jovem Pan</name>
+ <shortname>Jovem Pan</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.126</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1108522623AA9FD006C835CEB5488A4806543277E5A79D0C98EB07A1A0C4D39E223B5636D0</stationID>
+ <name>Cidade FM</name>
+ <shortname>Cidade FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.926</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1108522624E2D9B6ED883B4EAB1CE5CF9F97016D7D3AD176F6E2998D9765721D682E0937C2</stationID>
+ <name>Antena Um</name>
+ <shortname>Antena Um</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.751</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1108522625CCA35BA2EE3A557BCCB3286C12658116BBC858D6673C1D88CA89B156851EE570</stationID>
+ <name>Jesus</name>
+ <shortname>Jesus</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.576</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1108522628F19FBF0FD0B62A4A7781AF7D8603BEB1215F1819E5028AA008748BBABFC34D39</stationID>
+ <name>Jesus</name>
+ <shortname>Jesus</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.751</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11085226298BC8211EE7A66460385578D487B6729DA83550DF85F2517F514D9C019A93FF34</stationID>
+ <name>Jesus</name>
+ <shortname>Jesus</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.901</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/brazil/sao-paulo.krp b/kradio3/presets/brazil/sao-paulo.krp
new file mode 100644
index 0000000..576f3ee
--- /dev/null
+++ b/kradio3/presets/brazil/sao-paulo.krp
@@ -0,0 +1,230 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Everton B. G. &lt;dante.ebg@ig.com.br&gt;</maintainer>
+ <changed>2003-10-05T15:19:56</changed>
+ <country>Brazil</country>
+ <city>São Paulo</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1068544851063A4998A78195FDC4F511AD5E39A77EDF4A99545FEFEE1BA09A5159FB2DFC85</stationID>
+ <name>Gazeta</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068544851FA44B51067379B772E91D69C3F36BFD1BE373BFAAB02FB267BB9E79745D094DD</stationID>
+ <name>89</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>89.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106854485192E7A1C2D349D37CBD77495D3ADB558CD7D921C3160003AE475BF39F3F0CA024</stationID>
+ <name>Nova</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068544851D8831804C6159634263FC359AE57CB8B96FF009B4FB4CB79FF39DB2CBF31EEBF</stationID>
+ <name>CBN</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10685448518D7B45F6186E596C2A56A3F91C4FC1B773F7133E30BC2AA6FE1898DB34D5F4BA</stationID>
+ <name>Manchete</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10685448519B29A95C1A4F8B221A919B011D9296D15B5227225A5A7E27C9DA6703B1E3469A</stationID>
+ <name>Eldorado</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10685448517DD84085761847C094F78696B91D9B023BA80862F534827883165058CD06133E</stationID>
+ <name>USP</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068544851707ADA489310244DA5D4FAB004D99CD01601FA9FF7F5424A4660A53D88D5ECBE</stationID>
+ <name>Antena 1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068544851C9201AFEE47247B9A616E705AEAB7E3DAE707A43BD1824390AE427C12EB9B9FB</stationID>
+ <name>Nativa</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068544851C5394861FBDFCE6794363776BC90E7F84124E8816818200879AD3CA2859D9632</stationID>
+ <name>Band</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068544851D0289AC2B0AEFDED22C4D9341F534BF08DF140FE238FEA37C8A72639352C846D</stationID>
+ <name>Sucesso</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068544851F9AFD5FC0F3384511069DC8DCF2220A0F7A12D5501388F4D66F8A72180CF7873</stationID>
+ <name>Melodia</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10685448518696F96431246C0E8811A76A86CE07D3ADEF74C0D19B888A8B826160DBFD203C</stationID>
+ <name>Energia</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068544851A8F04BB0725196CA919E38D5B9EF9A0DF5F0FF0C920636BFE7466E5C6FAF623E</stationID>
+ <name>Metropolitana</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10685448512EF7D6A7AF70B101A36763BE25A3FB5C486C40C0B9BC29B17EBF2EA27536562E</stationID>
+ <name>Aleluia</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10685448518BB559FF1125C773021E9DE13BA19BED84E488D4B73448D879DE9ECFF21C5DE7</stationID>
+ <name>RCP</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106854485184EF62D3E00617144EDB7EF0E3160F9A94464D4E529D28B4E160C5A0B44A45D8</stationID>
+ <name>Transamérica</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10685448515838BB6F8E6831C577DB6BEF8B55E18F5A2179AE031EC4C4A76B809918137072</stationID>
+ <name>Joven Pan</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068544851337DE5C347B8E19FF0E880A2B9E38392C48EE37BEF918272CCCCF4E084AFE46F</stationID>
+ <name>Alfa</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10685448513711C1C26ADA91953A177554A9796A2B4BF879C198A82715BAB4D241F0BB73E6</stationID>
+ <name>Cultura</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10685448516A0B12A86C5DAD2C72F95B4991D5A9B5D1A490DFF605544AD7972C0A484A0A5A</stationID>
+ <name>Tupi</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068544851AF15E6AD95800F485702F159914B0A93E46E5CD68DDB11EB583B3C37F08F02F4</stationID>
+ <name>Transcontinental</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10685448519842A5E231775F250B013D3604832F184655D2BCEA1CFD1DCA1B572B9F26A4B3</stationID>
+ <name>Musical</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106854485168590AD0DB7DB99C33772D5B362AB8C2575DB634C5F44FE18158E50FDD895B3B</stationID>
+ <name>Mix</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068544851BDAF9DFE698BB91435D5C87510098BC54A6B834354B76112E5DB9F191BA03DAC</stationID>
+ <name>Meridional</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068544851218C33FE44396A6CDD072A46BFE3A2F19DF815140048DD499C8AF8CEFE4A2A70</stationID>
+ <name>Brasil 2000</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068544851D6B3C38519AC4F100AFBFF40437A2A057346EDF60B8807F52960204DD1CE389D</stationID>
+ <name>Tropical</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/bulgaria/Makefile.am b/kradio3/presets/bulgaria/Makefile.am
new file mode 100644
index 0000000..e1ae108
--- /dev/null
+++ b/kradio3/presets/bulgaria/Makefile.am
@@ -0,0 +1,12 @@
+SUBDIRS =
+EXTRA_DIST = "sofia.krp" "stara-zagora.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/bulgaria/"
+ $(INSTALL_DATA) "$(srcdir)/stara-zagora.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/bulgaria/stara-zagora.krp"
+ $(INSTALL_DATA) "$(srcdir)/sofia.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/bulgaria/sofia.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/bulgaria/stara-zagora.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/bulgaria/sofia.krp"
diff --git a/kradio3/presets/bulgaria/sofia.krp b/kradio3/presets/bulgaria/sofia.krp
new file mode 100644
index 0000000..f00d798
--- /dev/null
+++ b/kradio3/presets/bulgaria/sofia.krp
@@ -0,0 +1,259 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Svilen Ivanov &lt;svilen@tkzs.org&gt;</maintainer>
+ <changed>2003-05-08T22:11:53</changed>
+ <country>Bulgaria</country>
+ <city>Sofia</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1063385407E05886942B080C70E9095C4F9EF8862C65C78A24F00C860909A8F2DF1D8E4276</stationID>
+ <name>Romantika</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633854072B0E0DC480808BDB1B13DE7C9EAD8922118AA2308E8EAE5734F497B27D0E5CA4</stationID>
+ <name>Alma Mater</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385407138E78FCFFE9A1D097B41EA58E1C539A7D2B326A56171014C23CE58955251616</stationID>
+ <name>Praktika</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385407BAC77165139F07C89AC054801FFCC28D35D934283F02B9BCED437CEE6AC0714E</stationID>
+ <name>Classic FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338540734A200C587C92B80A77C200463AB2E267EC19752C4A9437DEB5F536717B94D20</stationID>
+ <name>Sport</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338540752061A546AA001A586665BCB54004C1C1347298E7283572C82D64949DBE9C957</stationID>
+ <name>Signal +</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.0015</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633854076453138F76391F38AB129A608316C5D09E32485167705CA7955F77678A2940A0</stationID>
+ <name>BBC</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385407C1E6152C11A5C05EC1A9B26344BC96855CB5499B0FE9A34778570B790E42D350</stationID>
+ <name>BG Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633854074684F1C732220572385076AA324545DAA6F665760E56C87A810D7993A286798F</stationID>
+ <name>Atlantic</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385407C2FDA891449DE0C03E5E7932F799722FAA4FF13B03CBE4C99A0917B6C7ADD6DB</stationID>
+ <name>Hristo Botev</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633854075A7010C56169D354DA3EF48A44A96CD0A0D0E37B3901BE8D3BB0A8C463EFC47B</stationID>
+ <name>Viva</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385407DE46F8206EF76187D23429152202A1B933189E4B1058E32A2F9B4CA7633CAC14</stationID>
+ <name>FM+</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385407B76A1FDD10FBFF5530744D064D6BAA8B830B25EF0A574F0392AA52CC9B12C6E8</stationID>
+ <name>Express</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385407925B3F89E35DCA26D0FDD23B201FB3B5D913150A0B2ED13406D4550A8F225EE7</stationID>
+ <name>Gong</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338540763F9B74ECB3A3738307E1F8CAC58922C79D914D1A19D9DE507FB9F0AF73D481F</stationID>
+ <name>Vitosha</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385407BBFCDA7EEB359F7449A9AB09788E3B61611A75A52A0132D62A97345D4AE5120E</stationID>
+ <name>Retro</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385407EC895CE1ED4BA554256C9675503A14AE0A16204C31C96D1EF8DA5F5EAE1CDCE4</stationID>
+ <name>Veselina</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633854073984D438913EB6D843C930D9E3C759F66D5D6844F62CD0B9BC13DE9D088D0E06</stationID>
+ <name>City</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385407B773C66DE987BF3F6C54397272705D41947595F1627E186C69EC4869070517B5</stationID>
+ <name>Fresh</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385407B228FAD8A17D52BDE57D2ED4B2BB66F580440A578ACB4348B27EC643BD311E19</stationID>
+ <name>Mila Gold</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1097440937C315B67747A306C466CCCF55B8F055176DFD6A2061AADC235FD95FE5259545E3</stationID>
+ <name>Nova</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338540776AB993148427CF32961DF65E082B3746EE579B7F51228015D2C0AFEE5FE3B18</stationID>
+ <name>Horizont</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633854072EF5E4D39CD2686DC398799C6BC06B33C6CF5AF8F49EF08AB2DDE87A1DF28CB5</stationID>
+ <name>Jazz FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633854070216B895699C7066D736450D9AB7CE21915CEDEE4160943B05558B7DCA595F8B</stationID>
+ <name>Darik</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385407AB576AA44702FE7EAEC5D0BCA297403CAF3A14DF68F7DA4226603CE19212942B</stationID>
+ <name>Info</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633854071478BD92C574B64FDBA76C9119824E667233561B14D83189029E268B8F450830</stationID>
+ <name>Radio 1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385407B364D20C095E208175C40582AF362B2AFF3BA446358B43A75D885C7089181318</stationID>
+ <name>Radio Net</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.9</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
diff --git a/kradio3/presets/bulgaria/stara-zagora.krp b/kradio3/presets/bulgaria/stara-zagora.krp
new file mode 100644
index 0000000..b115c69
--- /dev/null
+++ b/kradio3/presets/bulgaria/stara-zagora.krp
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-snapshot_2005_12_04</creator>
+ <maintainer>PhobosK, &lt;phobosk@phobosk.befree.dyndns.tv&gt;</maintainer>
+ <changed>2005-12-09T13:14:15</changed>
+ <country>Bulgaria</country>
+ <city>Stara Zagora</city>
+ <media></media>
+ <comments>Radio Stations in Stara Zagora</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1116822677AF4B50AA7F4C03AE11319AB76676AB3C6E525865EE698F4BE81766DC27A974AF</stationID>
+ <name>������ / ���� ��/name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>88.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1116822678B65BD646432A6EF4EEA0CEB6DF044BF6AE96B05D63F4CCB8C6B8270E7F1FFC5F</stationID>
+ <name>���1</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1116822679DBA24DDCD339509A321FE00A79384B176B0DB5A109C54CDE514A75FD014B7971</stationID>
+ <name>��</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>89.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11168251031026776A837DA4F604CD3E3EB4F86A5318E98F5AC018C905925DF1D31EC3A8DD</stationID>
+ <name>FM+</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>90.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11168226804E39423CF117F8B2A1D02F0A41AE2C462CA5425842A79FE5F8C045489B7692B5</stationID>
+ <name>���/name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>90.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>111702055687F233F56E48B3684484EB28CD06DB98B45B32640739D27E8E071664D8B0547E</stationID>
+ <name>� ���/name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1116822686EB5B47A0F6EDB468B4344BF7AE9EB68085FAF13854EF1FCBAFE4504D030FE2E7</stationID>
+ <name>����</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1116822687CA5F55C4550DA0674E1DC65296EA1DDB4B0875521C6435AE1066C7AD235DDC55</stationID>
+ <name>��</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1116952642BCF52971D3B05FA66C2AE74B6579E0D5E4B20AAE072D1AEE31D8D8C739A9437C</stationID>
+ <name>��</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1116822689CA066977FD32BEE8B816138075D4205D32AE2EEA6BC5C4C1ADF8552C0CDC1AB1</stationID>
+ <name>��� �����/name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>111682269192A5455645FBDEC94A7C6A176C7BDA3A0CAB0357E4814203CAA83530E15F11E2</stationID>
+ <name>Classic FM / �� ��� / BBC</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11168226955F46A912C558D2487463469D0F33A58D4B92B1973E25EBC59645ECE828D1FCFE</stationID>
+ <name>���/name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>111682269637919F08C7BDBAD72C1DD74D400FEE8950060436D150542C254F26FEBA3E0081</stationID>
+ <name>Fresh!</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1116953304E072377978A7EEEA5380DD80E9E8D1ACA983EA3E26C3D5C8E2865BA48AA28396</stationID>
+ <name>����</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11168226983ED07236DD890935BEDBE95F4E2B2997177A9F8DA3DEB9B207D9E7A1799489AC</stationID>
+ <name>Jass FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>111682269942FEBBD9BDBC9D7D7266F09CC8062C0E963D28789FD4F224E5901837297D08E2</stationID>
+ <name>������/name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.801</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/canada/Makefile.am b/kradio3/presets/canada/Makefile.am
new file mode 100644
index 0000000..01db051
--- /dev/null
+++ b/kradio3/presets/canada/Makefile.am
@@ -0,0 +1,10 @@
+SUBDIRS =
+EXTRA_DIST = "montreal-antenna.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/canada/"
+ $(INSTALL_DATA) "$(srcdir)/montreal-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/canada/montreal-antenna.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/canada/montreal-antenna.krp"
diff --git a/kradio3/presets/canada/montreal-antenna.krp b/kradio3/presets/canada/montreal-antenna.krp
new file mode 100644
index 0000000..ffd6889
--- /dev/null
+++ b/kradio3/presets/canada/montreal-antenna.krp
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-1.0beta3b</creator>
+ <maintainer>Benoit Frigon &lt;benoitfrigon@videotron.ca&gt;</maintainer>
+ <changed>2006-05-13T15:13:34</changed>
+ <country>Canada</country>
+ <city>Montreal</city>
+ <media>antenna</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1147546096DB3139EB544A96C3933C10E422D2E2CA68D5AD777F3E855986B8FB1F05E423EF</stationID>
+ <name>CBC Radio One</name>
+ <shortname>CBMF</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>88.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1147546327FB30D8C000B434EDF0B41A44D96A517CE6AF929255DABFDB61BBFD71AF9DA0A0</stationID>
+ <name>CISM</name>
+ <shortname>CISM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1147546346915F407CB00740E5C7F955525F0EE1C0FBC51277930694ADBEC2A3C0DE74E3F2</stationID>
+ <name>CKUT</name>
+ <shortname>CKUT</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11475463624E7E94ABA9E3B94B641EF0A5EADD44C36B33E4244B48F4018B3E5B257EE1B45D</stationID>
+ <name>Radio Ville-Marie</name>
+ <shortname>CIRA</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1147546393F6C31C2E1B8AE8B2B1901DCD1DEE71E4F06F80D4A8209DACEAD89086DA77428E</stationID>
+ <name>Couleur Jazz</name>
+ <shortname>CKLX</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11475464316160C8342536A8B265EBC37ED3EF5158BCB938E6852387460A9759BBE495113C</stationID>
+ <name>Q92</name>
+ <shortname>CFQR</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11475464784A0411CCBEAFF2C1082BDA169C207E00EA50FB6F95DD6421D9B62E5180766BCA</stationID>
+ <name>CBC Radio Two</name>
+ <shortname>CBM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11475465065A9B9E821E82C9722520671A2F5B0FC0361A67BF39EE2F539A3EBF4A98D30569</stationID>
+ <name>Radio-Energie</name>
+ <shortname>CKMF</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1147546632D7301D95C61FDB9407BBF266F094B271C5F4492D2DC4F802807D46C7E3DDB44C</stationID>
+ <name>Radio-Canada, Premiere Chaine</name>
+ <shortname>CBF</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1147546665262AE5C04AA3DF16E4C50A2BDB4E9847B21219C8CA4DB2942552C32890EED466</stationID>
+ <name>Mix 96</name>
+ <shortname>CJFM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1147546693CC52802241DAA193B589AE4A5137A34052964533407B72B077BBA9CE0AEDDD05</stationID>
+ <name>CKOI FM</name>
+ <shortname>CKOI</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1147546711A53AE33373572A4486AA793438EA0145959E259CB7A91CB6DF1C394EC8137BC3</stationID>
+ <name>CHOM FM</name>
+ <shortname>CHOM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11475467276BB2692ED4F09C4FB99B8B2F6CE91C2153FFF9DE4A8A5F36A4E7BEE615ADE23C</stationID>
+ <name>98,5 FM</name>
+ <shortname>CHMP</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11475467449A57F1812DBED9F7D6497C06607945E649CBFD47A70CD1C7C71CF965020E62E9</stationID>
+ <name>Radio Classique</name>
+ <shortname>CJPX</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1147546769F59818FCA77780D281D709063DA16E607AA764AC1551F7A422A7B6CB563D3A31</stationID>
+ <name>Radio-Canada, Espace Musique</name>
+ <shortname>CBF-FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1147546797650286559C51B3C062DC239C72B687927F4B5754EC9B6EDEA598096A534613C6</stationID>
+ <name>La Radio Libre</name>
+ <shortname>CIBL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11475468231D4C387889B09C1BB1071A55EB1483C8D53087BF24116867A78ADFA41B6399FF</stationID>
+ <name>Radio Centre-Ville</name>
+ <shortname>CINQ</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11475468877EFBE6187CDC5178B6561D4D8A08A16D84C24CF5B1A889ED1B9BE6811797DF7D</stationID>
+ <name>Rythme FM</name>
+ <shortname>CKDG</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11475469131E5057A646848E9A86B56F13FAA6B42FE158E0B0BACFA95A9B9253E760AC1DE7</stationID>
+ <name>Cite Rock Detente</name>
+ <shortname>CITE</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.3</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
diff --git a/kradio3/presets/catalonia/Makefile.am b/kradio3/presets/catalonia/Makefile.am
new file mode 100644
index 0000000..1384e63
--- /dev/null
+++ b/kradio3/presets/catalonia/Makefile.am
@@ -0,0 +1,14 @@
+SUBDIRS =
+EXTRA_DIST = "barcelona2.krp" "barcelona.krp" "sabadell-antenna.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/catalonia/"
+ $(INSTALL_DATA) "$(srcdir)/barcelona2.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/catalonia/barcelona2.krp"
+ $(INSTALL_DATA) "$(srcdir)/barcelona.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/catalonia/barcelona.krp"
+ $(INSTALL_DATA) "$(srcdir)/sabadell-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/catalonia/sabadell-antenna.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/catalonia/barcelona2.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/catalonia/barcelona.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/catalonia/sabadell-antenna.krp"
diff --git a/kradio3/presets/catalonia/barcelona.krp b/kradio3/presets/catalonia/barcelona.krp
new file mode 100644
index 0000000..7489585
--- /dev/null
+++ b/kradio3/presets/catalonia/barcelona.krp
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Eduard Pertíñez, eduardp@tango04.net</maintainer>
+ <changed>2003-02-19T12:14:44</changed>
+ <country>Catalunya</country>
+ <city>Barcelona</city>
+ <media>Catalan Radio Stations</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385401B5ABDDEDD972C97A6A8711EE01AB389F80111E0547B75F5A496DC714FC462D91</stationID>
+ <name>M80 Ràdio</name>
+ <shortname>3</shortname>
+ <frequency>90.5266</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401AEBC3A1C2D2C12825F9BD47297616CF1AB0971608DDAD7CFE75731CB07752AD6</stationID>
+ <name>Com Ràdio</name>
+ <shortname>4</shortname>
+ <frequency>91.0016</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401AB74BBE531649A8A3C3DCC299B9DE202C1272929D1236D42FF723CD2633426D8</stationID>
+ <name>Ràdio Barcelona 2 40 principales</name>
+ <shortname>6</shortname>
+ <frequency>93.9268</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854015A820B47A54149B706322A6363CF6765106555C6E63FF69289209FDA4A0F8082</stationID>
+ <name>Ràdio Barcelona</name>
+ <shortname>7</shortname>
+ <frequency>96.9019</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854016A34613A3660E1A2793F055B501739BF24620D0E2D3C11147A38ABCDBB07CDA3</stationID>
+ <name>Ràdio 4</name>
+ <shortname>11</shortname>
+ <frequency>100.802</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401170923D3DFDDE8182D86A372004EE5A51F85918D14F24133065BF40873559D5A</stationID>
+ <name>Ràdio DOS 84 Hostalric</name>
+ <shortname>12</shortname>
+ <frequency>105.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401C5AB5B0B23C4407FCA0B0A57BDA432CE32279902B9CC3E18D7E668FB406BAEDF</stationID>
+ <name>Catalunya Informació 2</name>
+ <shortname>13</shortname>
+ <frequency>106.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401F6C943B691E462FB190031109959116945867752F19F05289343247F30CF9BA0</stationID>
+ <name>Catalunya Ràdio</name>
+ <shortname></shortname>
+ <frequency>102.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401753D5016140F1C88A0C63EEC3B5253DCF3EA99BD0EFC2C497FF059CB8056528A</stationID>
+ <name>Catalunya Informació</name>
+ <shortname>2</shortname>
+ <frequency>92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854019462AF210007A26DA71010F56D7E32556597D4926C12963623ADE027EB2B2C59</stationID>
+ <name>RAC1</name>
+ <shortname>3</shortname>
+ <frequency>87.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401F292813E30A009852BEB6CD4297988664D4CD59911E7E086C66F51FAEA8F0A86</stationID>
+ <name>Catalunya Cultura</name>
+ <shortname></shortname>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401CA7EC18C1691E16ECB39EF223D417E60CE2174FEF312B9DBCAD387AE5FEC534C</stationID>
+ <name>Flaix FM Catalunya Central</name>
+ <shortname>10</shortname>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854017D3EF4946F4E20A530D0A8D80246226FCC38DEE76A1C8659DB4085629C6DB7AB</stationID>
+ <name>Ona Catalana Barcelona</name>
+ <shortname></shortname>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854010B10BD88EB36A51862508CF008C29234933820EB04D42A280C93268A201ABC8C</stationID>
+ <name>Ona Música</name>
+ <shortname></shortname>
+ <frequency>96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540166481A8A787350C2AF619659AE2EFF9CC869A44C3BB75CCA34AD5A96971E5D6A</stationID>
+ <name>Onda Rambla</name>
+ <shortname></shortname>
+ <frequency>89.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/catalonia/barcelona2.krp b/kradio3/presets/catalonia/barcelona2.krp
new file mode 100644
index 0000000..6248e2c
--- /dev/null
+++ b/kradio3/presets/catalonia/barcelona2.krp
@@ -0,0 +1,418 @@
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Sergi Coll &lt;sergi@sim00.net&gt;</maintainer>
+ <changed>2003-10-05T18:38:56</changed>
+ <country>Catalunya</country>
+ <city>Barcelona</city>
+ <media>Catalan Radio Stations</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1065375579F246EBC3FB54A275F81CD8E9E86FCF0351489073A23436623A0894F3A2189447</stationID>
+ <name>RAC 1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065375637D848CBB39FC176EF7504637CEB2D80E0183C3AC6975F9ADA475D9CE72507303A</stationID>
+ <name>Radio Union Catalunya</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106537568394CDCECDDE4FE87D3C2D4454151741C0575C285BF39648985C4575C11DB262B2</stationID>
+ <name>RNE 1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10653721188C3EBE989EA7DD70FB8C6C8D43369C38E4AE8B0D57BB19D1CE96181B8977C000</stationID>
+ <name>Rdio RM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065375786DC7E5E2865670028220626EB390FC2DC89D5787B829914971CA6523C2BDD171B</stationID>
+ <name>Rdio Salut / Europa FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065372149A12092034A3C49367301C4D5F08FBAEE5688669CB2249E8DC7437ADE3E4893AD</stationID>
+ <name>Onda Rambla / Onda Cero</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065372168FAB4E52E800307E67BDABA26E73B6AF5BB17B57DDA5B432752573DA83B7008C6</stationID>
+ <name>M-80 Rdio</name>
+ <shortname>M80</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065372189041BAC523700A51FCF2F315CF70811D8A1D74D7F7021E1D8DA65265DD787637F</stationID>
+ <name>Rdio Pica</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106537220318DE9665D17D1176D8E588B0AE65CE822D1C828769D044FC2523B625AF77BB9D</stationID>
+ <name>Catalunya Informaci</name>
+ <shortname>CATINFO</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106537223096DC1B7F4BAB5E82CF31452011A430C31492A19A764F2835C15D32E07734D1FC</stationID>
+ <name>Catalunya Cultura</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10653722426342839699BB645460F1E9C09DC8B08B0DBCEB735E07AD0B10B412010A139749</stationID>
+ <name>RNE Clssica</name>
+ <shortname>RNE2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10653735889671447576B18D3D5644D53F00B70A80F9046545F28ABD18A6AC98A85E557784</stationID>
+ <name>93_250</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10653722626123BF401DC0F2347189D019EA4E33E7834FDC4AAE5560197E74F0B50E71166C</stationID>
+ <name>InterEconomia</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065372277A0894473DF339185E3B82F80E7648703DE087B1B34607A2394F4C89924F2BA3D</stationID>
+ <name>Los 40 Principales</name>
+ <shortname>CAD40P</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065372309F1211862B3A0CFC39CE44262DBB141EBC30261233A04FB79D6A1396A8ACBE6C5</stationID>
+ <name>Rdio Sabadell</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065372323786443C94ABB28AE502B1116FA5776CE69E28D71D8048B614E3AB019F0D2609B</stationID>
+ <name>HitRdio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065373827026D718BFAE3C5B8899F2A5CE05F91EF2A292018ED2BF9C30C1E7E939CD2B1CA</stationID>
+ <name>Radio Club 25</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10653723438F131947E70EB9802885C5DB4A02901D63BD14E92F5C1101377A160F5F5C4C37</stationID>
+ <name>Ona Msica</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065372101B115F1DCD6B46254803FECB1130BACDA9AE4559A81387EA1A83E9ECFC62B02AB</stationID>
+ <name>Rdio L&apos;Hospitalet</name>
+ <shortname>R.L&apos;H</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065374206723116E3EFD80FC80C8756F07B1E1E4100BDC3364EFA30A9A278D063A1076D86</stationID>
+ <name>Radio Gladys Palmera</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065374336E0970CC5FD67DC555E32120DDD76621365247745FF172EC54E822E31B318D30B</stationID>
+ <name>Cadena SER Barcelona</name>
+ <shortname>SER</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065374481B1D1977641BE9EBF9D56A2223F5BE8538763FBE3EBB849FEE1EDD08BFA72D158</stationID>
+ <name>97_200</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065372480D1722872D57E05A8A86E3EABFB5E4416DCFB37DE79176B4F61E62204000867DC</stationID>
+ <name>Rdio Tele Taxi</name>
+ <shortname>RTT</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065374604165CDFA4FAC472BB77766A6F5054729DA14F4B2ED659BC1A78EC073C7DB7B5B6</stationID>
+ <name>Rdio Nou Barris</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065372503DAD0C44F6140BFAA197B1511FBB938716EA88D846C90C55F9E9E734B05136D76</stationID>
+ <name>RNE 3 Barcelona</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10653747052B68560694A7A8EE1C1B89D3DBE51FA50D493789697C1D73D6246B869128343B</stationID>
+ <name>99_000</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065372521A122842CD7C1EAF3BB87180C7E311B17C014EE16F0353374AF8D5655CFBF1046</stationID>
+ <name>Cadena Dial</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10653725378F90CB5AC94E3919D6E83EF4EB1C9AEB6C2E73CD666655510684BF6567F16F1C</stationID>
+ <name>Cadena 100</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10653725502372700BA0E2F7858B9A26ED45308A5C3C3DDEF6BF5479EFDFF6EFD5D7976BE7</stationID>
+ <name>Rdio 4</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10653725696CF7A270FBC9C6D7922E1C43DE63140F41C71F7D3A28A8E5795AFCBEC983523D</stationID>
+ <name>Catalunya Msica</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065372580B413B0F931C6E3132D524212ECE7F37370516B9411E19BCF2707B0BFDBFD13EA</stationID>
+ <name>Cadena COPE Barcelona</name>
+ <shortname>COPE</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10653748899EF9990AA3B2249C1650A2E8A213FD07532E2DBDECFE5C5DB3DC4E8376C221C8</stationID>
+ <name>102_400</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065372601FBCDDC67902819313AE3C28D3AE56C304F6ADC1781511E855C2CAD793FEA780A</stationID>
+ <name>Catalunya Rdio Barcelona</name>
+ <shortname>CATRADIO</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10653749828B4D63B0468FD94217ABC2C2E48BF16935ED94455811A7D8059F1044820DBF0F</stationID>
+ <name>Rdio Sants</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065372624D14A14FC050155A56D11C71CFA24027AE8FC35778DCDC65BAC1E37D55A00BD66</stationID>
+ <name>Ona Catalana</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106537263938A647128AD752CB3A0BAAFED79C1F0ED2D77C9CC42CDBD2035149617345D947</stationID>
+ <name>Mxima FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10653726579A9130F13C400EBC73CC1242A7B44F53CF14DA1EFB64A0AC02D615D08665C7A5</stationID>
+ <name>Radio Associaci de Catalunya</name>
+ <shortname>RAC105</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065375099500A48F65CFF00CE030E4A04A3912E539D91E2C3F40B9E82CFB3A45AD688FD09</stationID>
+ <name>Radio France Interncacional</name>
+ <shortname>RFI</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106537267643050867AC316AB4740759845C31A6057794E45AD45D19C95BCB8470314A183B</stationID>
+ <name>Flaix FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106537269064E974D213549DF132CD17848D8DEDB5035E42818874B84AEAB591AB5D25A370</stationID>
+ <name>Rdio FlaixBac</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106537271660EE4172EBD06B2CAC621E8557FA68C337FF5E7FCE5B412346BE4876A04C22C7</stationID>
+ <name>Rdio Estel</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065375166650940E321A4B11E1BBB65EBCD9F5DA0ECC332128318724536C9EE08CD95E4C9</stationID>
+ <name>Rdio Kanal Barcelona</name>
+ <shortname>RKB</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106537521897939AF6F9010015629766EDCCF8D6D103C564116F08B73B8C666B3F672C9E87</stationID>
+ <name>107_100</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065375287877A959348962756D40DD7D4ED003A927D70F7D7A7FBA3824BC611FA38DB9E72</stationID>
+ <name>Grama Rdio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10653753663FAADA1BBA034A3B4ED94569D9D9A5A6BC447C736104D7459986DE3CF09668A9</stationID>
+ <name>Rdio Grcia</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.7</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/catalonia/sabadell-antenna.krp b/kradio3/presets/catalonia/sabadell-antenna.krp
new file mode 100644
index 0000000..4dde28a
--- /dev/null
+++ b/kradio3/presets/catalonia/sabadell-antenna.krp
@@ -0,0 +1,365 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Toni Vall</maintainer>
+ <changed>2005-12-27T20:24:10</changed>
+ <country>Catalonia</country>
+ <city>Sabadell</city>
+ <media>Antenna</media>
+ <comments>Emissores ordenades per tem�ica (catal� castell� msica
+cl�sica i msica en general). Localitzaci� Sabadell, Vall� Occidental,
+Barcelona</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>11063402709E3166B78A5B5D1322CA981D7E17F9221B7315E2A43A09BA3D021AB11792E21F</stationID>
+ <name>-- Generalistes (Catal� --</name>
+ <shortname>*****</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.82</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11063369766D71631CDC72A83BFC5CF2790CDBF4E34D2ACE2443FA43BF7A965857AC8176AE</stationID>
+ <name>RAC1</name>
+ <shortname>RAC1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110633715159A20FF30C1AFF942A0E3BC31C3F7A5B36090736B794E96DD8047069B8BBA8ED</stationID>
+ <name>COM R�io</name>
+ <shortname>COM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11063371988EADBFCB922B4322B47980BF683605B1D6B7235AE90ED489CF5175E54AF3CC1C</stationID>
+ <name>Catalunya Informaci�/name>
+ <shortname>CATINFO</shortname>
+
+<icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110633721824872DABFD66C8552A56AD3BB19B1DBC3EFA72B2196E3CA1728FB12956427B8A</stationID>
+ <name>Catalunya Cultura</name>
+ <shortname>CATCUL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1106337310663A4885298C38D1F99B42085BC2D0C9AE9053C6F8CD8811ACC038B8C6FC44E2</stationID>
+ <name>R�io Sabadell</name>
+ <shortname>SBD</shortname>
+
+<icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1106337651949BDD6A1AA2BD4DC2F098B9A075DB38F6B037544C8F4E789082A56B587973C1</stationID>
+ <name>RNE4 - R�io 4</name>
+ <shortname>RNE4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1106337738AC382CCD4545E85BD002004265E5784982DF52BF725B3917876AB90C5C000CD4</stationID>
+ <name>Catalunya R�io</name>
+ <shortname>CATRADIO</shortname>
+
+<icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1106337759C7233FFD795FD90B6B1E92A88215145560C27F019C36458DB90D540A718B9931</stationID>
+ <name>Ona Catalana</name>
+ <shortname>ONA</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110633986638952692BF8D8B4AD7B72A8BE83F5A1FF86E39556CD86FFF7C23B0749998C4DF</stationID>
+ <name>-- Generalistes (Castell� --</name>
+ <shortname>*****</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.92</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11063369944A2806AF488A167F48BA4DAC1696A28F2A60B380E2368340F354504E164C86AC</stationID>
+ <name>RNE1 - Radio 1</name>
+ <shortname>RNE1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110633704834C389D2DBFE24A0E26CF79BDF9219364892AF64DF6348FC964A90EA6144F6FC</stationID>
+ <name>Radio Marca</name>
+ <shortname>MARCA</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11063370920C3A1201B464BAE23C8862D3D4921EFC1F2E66978D35E685FC69E28595ABB5F0</stationID>
+ <name>Onda Rambla - Punto Radio</name>
+ <shortname>PUNTO</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110633741915EBDE0533C9C5068EAA90490380D6B32CFEC8822D82DB2487DB78F611A46F06</stationID>
+ <name>R�io Barcelona-2 - Cadena SER</name>
+ <shortname>SER</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1106337717F30645D5939770F716C61186C83FDE0757A6EBE50B494F62C03D6383D57F97D1</stationID>
+ <name>Cadena COPE</name>
+ <shortname>COPE</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1106340073AC9BA097FBAC9D70500B8B153A1D639AE211E1E3568321286FFF84252D3606EA</stationID>
+ <name>-- Msica (Cl�sica) --</name>
+ <shortname>*****</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.52</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1106337233D690111E21A6F20E4D48D88F4D1F8BD36318A57B504C357FFCD92F7019B9CEB7</stationID>
+ <name>RNE2 - Radio Cl�ica</name>
+ <shortname>RNE2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110633769043CF963F995A46DE3D7C13457F81D58CB03642988E0279FCB748D822CDA0AFBA</stationID>
+ <name>Catalunya Msica</name>
+ <shortname>CATMUS</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1106340124EFD6E959FC3BA7D6622D2FCC864A389BF0AEB3CC0DE9C46C63987BCD88B5578F</stationID>
+ <name>-- Msica --</name>
+ <shortname>*****</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.52</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11063370687D56D96504BBC3E634076F8039DC1F5422EFC3375B1F6A00C29716AEFC073D18</stationID>
+ <name>Vall� FM</name>
+ <shortname>VALL�</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1106337135CC04B8482ED9709ED6E1F7DD6AC78A83CD5C6AE3883162D85CA7914AFD101BCA</stationID>
+ <name>M-80</name>
+ <shortname>M80</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1106337169A43D8558D9BAC401774418660307A242189343A790AD926074CDAC25B0EC7D55</stationID>
+ <name>R�io Sant Cugat</name>
+ <shortname>CUGAT</shortname>
+
+<icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1106337259172602FA960DCDC4844067662583F09CEA4D635C7C566188EF79B953CDC0849D</stationID>
+ <name>Intereconomia</name>
+ <shortname>IE</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1106337286F45FED1A3352255BD25D56EEBDA1C2194586537B204DA08E053C93AB4E798249</stationID>
+ <name>40 Principales</name>
+ <shortname>Los 40</shortname>
+
+<icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1106337336F097C6CD0171FCC19C27404C0966FC2F6216E178D8A5ED9CE3874D3C850898BE</stationID>
+ <name>Europa FM</name>
+ <shortname>EUROPA</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1106337373A1D0CE216497DDA13E0F054B901A381732D970307C4FF53CCC94C351DBBEAA25</stationID>
+ <name>R�io Club 25</name>
+ <shortname>CLUB25</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1106337394C861F94A9361B622EFD99942B20D844F6AFAA1345CEE72BDF4729EC593568EC0</stationID>
+ <name>Radio Ol�/name>
+ <shortname>OLE</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11063374791086EE25F5C66232CA7E1C9CD35F02F3388B78C7FE3F34C18FE8984429D8B5F5</stationID>
+ <name>R�io Taxi</name>
+ <shortname>TAXI</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110633750874BD2F8CC80AAF769F4DCAE9DA25CBF8DA46053ED5EFB9B857EBAB53DD6E7FE0</stationID>
+ <name>RNE3 - Radio 3</name>
+ <shortname>RNE3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110633758124D5AAF18CE18388D1B784AE70509F54211E2D5EE988B8128C79ACEAF975D87D</stationID>
+ <name>Cadena Dial</name>
+ <shortname>DIAL</shortname>
+
+<icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1106337619D5E4C399E9263694DB0C59C2BAE4DB58699BC6EE55F0B59321F90ABE2D87139C</stationID>
+ <name>Cadena 100 - COPE</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110633778640539149B13AB01A29EEE1BA93240278A9B33224EB1D453522D02C588BC77F9B</stationID>
+ <name>M�ima FM</name>
+ <shortname>M�IMA</shortname>
+
+<icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11063378177E2834D73C5E6A965EC1F7B0DBCCC11E3D26F7AC22D9D7C1CB4CA863B9D75B7D</stationID>
+ <name>RAC 105</name>
+ <shortname>RAC105</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11063378432A2238BFF56DD6D611272D123A66468C09CE310DD62503DCA98E1C1B47CB17A3</stationID>
+ <name>Flaix FM</name>
+ <shortname>FLAIX</shortname>
+
+<icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11063378593C0DE6605A20A190309692910C313C493D1EAD952824C6DCC6A0E84FFAD7916B</stationID>
+ <name>Flaixbac</name>
+ <shortname>FLAIXBAC</shortname>
+
+<icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11063378761322944A0A6BB826CE49B820121821E2E6F3FC43A53E5DFEE77ACE7C210CC32B</stationID>
+ <name>R�io Estel</name>
+ <shortname>ESTEL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11063378956CFF8CD6D6B1FE424369EA76096C4140447FED4BD3FDDA9F2045BB2FA583DF20</stationID>
+ <name>Grama R�io</name>
+ <shortname>GRAMA</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.4</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+--
+Toni
+unelement@gmail.com
+
+
+
diff --git a/kradio3/presets/czechia/Makefile.am b/kradio3/presets/czechia/Makefile.am
new file mode 100644
index 0000000..04a93e7
--- /dev/null
+++ b/kradio3/presets/czechia/Makefile.am
@@ -0,0 +1,16 @@
+SUBDIRS =
+EXTRA_DIST = "ostrava-antena.krp" "plzen-antenna.krp" "plzen-cable.krp" "prague-antenna.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/czechia/"
+ $(INSTALL_DATA) "$(srcdir)/plzen-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/czechia/plzen-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/prague-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/czechia/prague-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/plzen-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/czechia/plzen-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/ostrava-antena.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/czechia/ostrava-antena.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/czechia/plzen-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/czechia/prague-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/czechia/plzen-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/czechia/ostrava-antena.krp"
diff --git a/kradio3/presets/czechia/ostrava-antena.krp b/kradio3/presets/czechia/ostrava-antena.krp
new file mode 100644
index 0000000..4969ccb
--- /dev/null
+++ b/kradio3/presets/czechia/ostrava-antena.krp
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Petr Ruzicka, &lt;ruzickap@volny.cz&gt;</maintainer>
+ <changed>2004-02-21T12:10:43</changed>
+ <country>Czech Republic</country>
+ <city>Ostrava</city>
+ <media>Air</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1076015095DA72DF8F1909DF276A4F1DB50F2A8CF4BE695A556737DE273BB024E90BDC62EB</stationID>
+ <name>Impuls</name>
+ <shortname>Impuls</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1076012741168597074D8BE2820B403152E492D0FFFA1B50A6AB157629CA3B220058B5347F</stationID>
+ <name>Kiss</name>
+ <shortname>Kiss</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10760151406A140C2782636C2CC74D88498A2E9952D6488670EBD094C1837F62EA68C93210</stationID>
+ <name>Frekvence 1</name>
+ <shortname>Frekvence 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1076012262D83C47DD1718D420937D19D78BB6D1B9017DAC5326E892F3719C924B5A15A4B1</stationID>
+ <name>Cas</name>
+ <shortname>Cas</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10760149887B60EC1CC213067136A407BF4FA78F1FF5ED97D637BFEBA0175BF0E16B86C2C2</stationID>
+ <name>Hey</name>
+ <shortname>Hey</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077361767828E47606457176D651DBFBBA94157668620269B7E03202B47D935E8A81612DF</stationID>
+ <name>Evropa 2</name>
+ <shortname>Evropa 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077361730614082A79A138FB3BE0DA5196FC9CF51F2CE0EB2949A53188E5CEF04CA2E8ED0</stationID>
+ <name>Radiozurnal</name>
+ <shortname>Radiozurnal</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1076012491C17FC53CB28EA774CD1C1E4B8E0F563BECBB75009C5C0970599D4051CB9E111A</stationID>
+ <name>Orion</name>
+ <shortname>Orion</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077361712FDC0BC3527086272361ADF7A79D4F40A1830C1DD9ACE95FCD976E110D700A4F8</stationID>
+ <name>Vltava</name>
+ <shortname>Vltava</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107736168580773B62CEA410C5EEC861F04A0F05B8ADACF1D096FBE92D25A2D5A7EBEEA579</stationID>
+ <name>BBC World</name>
+ <shortname>BBC World</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.3</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/czechia/plzen-antenna.krp b/kradio3/presets/czechia/plzen-antenna.krp
new file mode 100644
index 0000000..3cc4ebb
--- /dev/null
+++ b/kradio3/presets/czechia/plzen-antenna.krp
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-snapshot_2005_11_27</creator>
+ <maintainer>Michal Hruby</maintainer>
+ <changed>2006-06-05T10:41:25</changed>
+ <country>Czech Republic</country>
+ <city>Pilsen-city/Plzen-mesto (Jizni predmesti)</city>
+ <media>tv antennae</media>
+ <comments>enjoy!</comments>
+ </info>
+ <FrequencyRadioStation>
+
+ <stationID>1149493840F6EA11DCF81C17C308D3FA7459752F9C13264F8F3AC2BD4AEBF620F98D26F94A</stationID>
+ <name>Evropa2</name>
+ <shortname>E2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>11494938676952E8E98346EEDE1C923B465E3FE13FE79D69116C03978D5C7260C8528CA041</stationID>
+ <name>Kissproton</name>
+ <shortname>Kiss</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1149493977656D92CE2021E7CC3868202161EFBD8A7F9262EA154B29D0910C6E1E0ED3E6CD</stationID>
+ <name>FMPlus</name>
+ <shortname>FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1149494844D7F89C68A75C5CA79BB1E7BC259E49A75D8896837C8F3DF8963A4DC4021A603B</stationID>
+ <name>umava</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.85</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1149494749C1D6282C3D714BAA5054A4558DFD2AB9B72D4D4EFC2875F0D81C925900FD201B</stationID>
+ <name>Frekvence 1</name>
+ <shortname>F1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>11494948335BDE319D88FD766E3543DD1CF4D906DB6D63730669D28CF2234997C4700D0252</stationID>
+ <name>Impuls</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1149494907A6EEBF8E968610F8BF77B64FC9EB191F7363DB8E4B1F8E0EF3359D47EBC4336E</stationID>
+ <name>R�io �sko (BBC)</name>
+ <shortname>R�/shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1149494883DF19D8997DB617596EE8D8D3662277DDC7708C98B2538C4B04A3E5ADE1DCA943</stationID>
+ <name>Karol�a</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1149494669960C6F8B0D255F11ECBD3B8E526BD5E639AB6B4DB69B6CD8767CD27EDC6D133B</stationID>
+ <name>�sk rozhlas 1 - Radiourn�</name>
+ <shortname>�o</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>114949487268456F448DD2A9D96F5DDE9D838063B0FB6964B5292E50F7D08EF6BEC815FFB3</stationID>
+ <name>�sk rozhlas 3 - Vltava</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1149493747128F11410D2002609BDFAD57E33E3D9C5D4685A94D9CF69823FCDB80396B945A</stationID>
+ <name>�sk rozhlas Plze�/name>
+ <shortname>�oP</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.0516</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
diff --git a/kradio3/presets/czechia/plzen-cable.krp b/kradio3/presets/czechia/plzen-cable.krp
new file mode 100644
index 0000000..3824955
--- /dev/null
+++ b/kradio3/presets/czechia/plzen-cable.krp
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Zdenek Proskovec, &lt;z.proskovec@volny.cz&gt;</maintainer>
+ <changed>2003-04-13T18:40:16</changed>
+ <country>Czech Republic</country>
+ <city>Plzen</city>
+ <media>cable - Kabel Plus</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385403040544DA85B8582041241D2F9C3B8F39917F64D4F97F46163FDBBF4D7F7A1B7A</stationID>
+ <name>Valz Live</name>
+ <shortname>Valz Live</shortname>
+ <icon></icon>
+ <frequency>88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854037D5ECB9EE601DE1848532469EE66DDF853586711D8A07A51201BDFC95DA5DF24</stationID>
+ <name>Valz 1 Gold</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854036309B1E3C4D1373ABC3DB33841186078F21F8E0F7AF3D88E4DD9F1E314BA7602</stationID>
+ <name>Praha</name>
+ <shortname>Praha</shortname>
+ <icon></icon>
+ <frequency>90.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854034E0160B89BE18D9EC241185E986606E4575FC65FDF28704BF4359303BDED6E99</stationID>
+ <name>Valz 2 Country</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>91.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385403ED6C27D4B17017D694557B3BCEB546AD31E5BCC1FAABBF9897231905FF579434</stationID>
+ <name>Valz 3 Hit</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>91.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540371E65E8FCF6818F961B67EE3A49EEB126E63332E5108562CD12120C968EC4B5E</stationID>
+ <name>Karolina</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854038174EFC459C21A81576ED4C4565DDA1FC5DE40C8B10C06D3982827B7B87E8A43</stationID>
+ <name>Radiojournal</name>
+ <shortname>Radiojournal</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385403958D71D300890E8DDB97F537052545859EDA76E19E636F06B4E3BA55911A9133</stationID>
+ <name>Regina</name>
+ <shortname>Regina</shortname>
+ <icon></icon>
+ <frequency>93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540334D8974C79FC9259E9B1B9E3CEF7864F648526F5512645EBC9955DB100354B41</stationID>
+ <name>Vltava</name>
+ <shortname>Vltava</shortname>
+ <icon></icon>
+ <frequency>93.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854034D5FD9F47375885A5BA94D40AA2006D4A5053B55061C950955B82A8C4CCF08FD</stationID>
+ <name>Impuls</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385403A6847BAA0880A4051C335EC82B9C906C384816DF8A6BA48E68038583B1AA9E4B</stationID>
+ <name>BBC</name>
+ <shortname>BBC</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385403F5FC8AC4CAE2BDBF679B6D20731C6D282915426A51096B69846E81617B19AF89</stationID>
+ <name>Frekvence 1</name>
+ <shortname>Frekvence 1</shortname>
+ <icon></icon>
+ <frequency>96.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385403A6DE90872EC6A1DA632295BA23BD4BD1600EAD3D722D3F35C09DDAEC78C17F80</stationID>
+ <name>Bayern 4</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>97.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385403FEB6B08714326ABFA3CAC1438042B0F09CFC059BEF3F1C5B2E9F365D444EC573</stationID>
+ <name>Valz 4 Rock</name>
+ <shortname>Valz Rock</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385403A754F2B9885A5EEC9B6530ED6D86CDD1C01B585BB8F3327854D9ADBA9C7183BC</stationID>
+ <name>Valz 5 Classic</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854039D4A34040441D830CBC5313FB9E56FA5379D4830F288B00CCA58D7B8DBDA87AE</stationID>
+ <name>Valz 6 Valcarka</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854039A3264B62EDD5406C49AB6D960FD1005EE7C4E18082B3C75BEEC313D4A331040</stationID>
+ <name>Radio West</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>103</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385403618DBDC6B1E5288496C184BB14B77FFC6F3B0C7A32695DC2713C1AC1D4FD1BE6</stationID>
+ <name>FM Plus</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>103.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385403A92CB3F151C0BE7A95449C2B3D21DA38836E938E3C93CC2D8FAD72FE7A6BC7BD</stationID>
+ <name>Kiss</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385403C8807F2B98EEEB9A63B7AAF5BDCA1400E8C2645352991A45DE6D420D26124F4D</stationID>
+ <name>Sumava</name>
+ <shortname>Sumava</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854033588E687198DF6FA98F387F236F6DBCF65A15841D5390A5BE98C6AF0B98C5290</stationID>
+ <name>Bayer Eins Live</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>107.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854034FB8038375A158B927456399E725500473EC8473CA275F798C5BF614B9C82639</stationID>
+ <name>Antenne Bayern</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/czechia/prague-antenna.krp b/kradio3/presets/czechia/prague-antenna.krp
new file mode 100644
index 0000000..feabdde
--- /dev/null
+++ b/kradio3/presets/czechia/prague-antenna.krp
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Radek Vendelberger, &lt;rakerihoo@vol.cz&gt;</maintainer>
+ <changed>2003-07-27T10:38:30</changed>
+ <country>Czech Republic</country>
+ <city>Prague</city>
+ <media>Air</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385403D98BA3B7FB3DC5CA926A04D419AB7829A75F01DEAE637DFD40A8E9A0130F1E86</stationID>
+ <name>Radio 1</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854030E0AA3576D9B5CF710A7875F2281F117EAB52EC8D8EC81F81D929DDA101B61C3</stationID>
+ <name>Bonton</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540310540939359F150DC3FF0879C3EDDA71A996F46DAAC5B525F8B8281E03E09DCD</stationID>
+ <name>Country Radio</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>89.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385403F45071B55C11FA1F7EED4CA9C6F8A8DDB4868431304902613B3CB2DF03C47334</stationID>
+ <name>Regina</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>92.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385403E386A0E06667CDC7D05490717FE2AE002DC73A68C42ADCF86EE13519E9BF148D</stationID>
+ <name>Expres</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>90.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854038A9E13A968BAC1C7D8358B12C3851C435FCEC3116811C63C82F1B3155A93B0AB</stationID>
+ <name>Fajn Radio</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>97.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385403C965374EACB39F50EAD49603FB741DCC76E39D2D454262C65883DCA827D2A6F1</stationID>
+ <name>Kiss</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385403772724F42055820971C4E31EAE83768CF4D2D602885D2E8C05B0BD8C9EFE02C7</stationID>
+ <name>Beat</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385403D99526F382C0397DAB05F5987D913A284662B2958C7DFFC335E0A82D36C08A39</stationID>
+ <name>City</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385403FF3F733AEEEA8AF872A9B0747BD6FB87B853BD72E3E16A917FE8FDC7FF5FE2B1</stationID>
+ <name>Classic FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385403374679EF3BC5603CA7E62369DD0E4C5B0FA12C40FF7ED52B845DFCA0969EC252</stationID>
+ <name>France Int</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854035B7C4E159C4FACD763B3FF39684BAADCFAC09278EDA483F411D12761268A19E2</stationID>
+ <name>Hey Praha</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854030676D225F3C4DB65FAF234E4EF96F1A89238B970B0BF46DE40788542FA7E9A3E</stationID>
+ <name>Info</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540374CC23BA78CFF0B9E6671513F113DDEE46A55AE7D8866F374E686B9207EC84C7</stationID>
+ <name>Olympic</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385403E844201510D076848169DA8166983BCC4ADDB490A85E25C56029C1AC022A17BB</stationID>
+ <name>Twist</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/england/Makefile.am b/kradio3/presets/england/Makefile.am
new file mode 100644
index 0000000..1715c21
--- /dev/null
+++ b/kradio3/presets/england/Makefile.am
@@ -0,0 +1,18 @@
+SUBDIRS = buckinghamshire
+EXTRA_DIST = "exeter-antenna.krp" "leeds-antenna.krp" "london.krp" "newcastle-upon-tyne.krp" "sheffield.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/england/"
+ $(INSTALL_DATA) "$(srcdir)/london.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/england/london.krp"
+ $(INSTALL_DATA) "$(srcdir)/newcastle-upon-tyne.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/england/newcastle-upon-tyne.krp"
+ $(INSTALL_DATA) "$(srcdir)/exeter-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/england/exeter-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/sheffield.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/england/sheffield.krp"
+ $(INSTALL_DATA) "$(srcdir)/leeds-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/england/leeds-antenna.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/england/london.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/england/newcastle-upon-tyne.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/england/exeter-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/england/sheffield.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/england/leeds-antenna.krp"
diff --git a/kradio3/presets/england/buckinghamshire/Makefile.am b/kradio3/presets/england/buckinghamshire/Makefile.am
new file mode 100644
index 0000000..7be98ee
--- /dev/null
+++ b/kradio3/presets/england/buckinghamshire/Makefile.am
@@ -0,0 +1,10 @@
+SUBDIRS =
+EXTRA_DIST = "milton_keynes.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/england/buckinghamshire/"
+ $(INSTALL_DATA) "$(srcdir)/milton_keynes.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/england/buckinghamshire/milton_keynes.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/england/buckinghamshire/milton_keynes.krp"
diff --git a/kradio3/presets/england/buckinghamshire/milton_keynes.krp b/kradio3/presets/england/buckinghamshire/milton_keynes.krp
new file mode 100644
index 0000000..aa1af72
--- /dev/null
+++ b/kradio3/presets/england/buckinghamshire/milton_keynes.krp
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Ian Hay, &lt;ian@rotodyne.co.uk&gt;</maintainer>
+ <changed>2003-01-25T22:35:18</changed>
+ <country>England</country>
+ <city>Milton Keynes, BUCKS</city>
+ <media>Antenna</media>
+ <comments>A poorly served and weak area for reception</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385353C6B88DA43D60485F93CE285F49666657543D54E610AB347EB1D73FDA2FC7C510</stationID>
+ <name>BBC Radio 2</name>
+ <shortname>BBC Radio 2</shortname>
+ <icon></icon>
+ <frequency>88.6097</frequency>
+ <volumepreset>0.8</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853532D933FCEF3A7613BDDD56EBF088F9B6362B69E0FCABB21DFFC26D9AC81DC28BD</stationID>
+ <name>BBC Radio 3</name>
+ <shortname>BBC Radio 3</shortname>
+ <icon></icon>
+ <frequency>90.8185</frequency>
+ <volumepreset>1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385353C8BE87758A09C21FC727E3B7C8DE412595703F2E19438F5B7FBCD509531751D5</stationID>
+ <name>BBC Radio 3</name>
+ <shortname>BBC Radio 3</shortname>
+ <icon></icon>
+ <frequency>90.8634</frequency>
+ <volumepreset>1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853533F24308814CEC86F7F2D451AF6CE0ADAA1EBBDED5507D7E1ED04AF7BB93C5E2C</stationID>
+ <name>BBC Radio 4</name>
+ <shortname>BBC Radio 4</shortname>
+ <icon></icon>
+ <frequency>93.0197</frequency>
+ <volumepreset>1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385353606298F24CB48B4D31470EF41B4AF40F4BF19AF4CA0019E972419C5E5FDF2A7B</stationID>
+ <name>Classic FM</name>
+ <shortname>Classic FM</shortname>
+ <icon></icon>
+ <frequency>100.446</frequency>
+ <volumepreset>0.8</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385353E2F2EB1467A831526FB14696A5FE35FAD1623929349D8A8C9DC7F9A3EFB87F93</stationID>
+ <name>Horizon FM</name>
+ <shortname>Horizon FM</shortname>
+ <icon></icon>
+ <frequency>103.324</frequency>
+ <volumepreset>0.8</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853535F8DF276212D9521388835FE08AFEA463B8A2AE6BDFBD3B6AC34D330F9EE2613</stationID>
+ <name>BBC 3 Counties Radio</name>
+ <shortname>BBC 3 Counties Radio</shortname>
+ <icon></icon>
+ <frequency>104.518</frequency>
+ <volumepreset>0.8</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/england/exeter-antenna.krp b/kradio3/presets/england/exeter-antenna.krp
new file mode 100644
index 0000000..d31509b
--- /dev/null
+++ b/kradio3/presets/england/exeter-antenna.krp
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Matthew Churcher &lt;M.Churcher@exeter.ac.uk&gt;</maintainer>
+ <changed>2003-06-08T16:55:48</changed>
+ <country>England</country>
+ <city>Exeter</city>
+ <media>Broadcast</media>
+ <comments>as from Exeter University. May nead adjusting around
+Devon.</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338535304D1CCEE3C42B21A1CDBEB76EFDB5A2DBCAEE0EC758C3A6259415A8F09F4C59D</stationID>
+ <name>Gemini FM (Mixed Network)</name>
+ <shortname>Gemini</shortname>
+ <icon></icon>
+ <frequency>97.027</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853530DDFFAF51B94CC78A5166188CE6E007765FDBC58E2C038210C4FBAD3CF6460FD</stationID>
+ <name>BBC Radio DEVON</name>
+ <shortname>Devon</shortname>
+ <icon></icon>
+ <frequency>95.8269</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385353ECF6799F9284D28B7658830F2BD034E4479F7C9BDDCF2E9E5876ADFE735B0509</stationID>
+ <name>BBC Radio ONE</name>
+ <shortname>BBC 1</shortname>
+ <icon></icon>
+ <frequency>97.727</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535376747E6FA2361BBEF1AD30EF5B8011A93F19F144FB67E441E48D8AA38129500C</stationID>
+ <name>BBC Radio TWO</name>
+ <shortname>BBC 2</shortname>
+ <icon></icon>
+ <frequency>89.0265</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385353FF81FE55DE9E8CAB5B022C277FEE3D8D7BDFE86C0E728FD1ECCC326EFC0A537C</stationID>
+ <name>BBC Radio THREE</name>
+ <shortname>BBC 3</shortname>
+ <icon></icon>
+ <frequency>90.3015</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535395FCF3BD1E55A7C7F361655B4E2F521413EC835A4886870020D9CEC70E3115FC</stationID>
+ <name>BBC Radio FOUR</name>
+ <shortname>BBC 4</shortname>
+ <icon></icon>
+ <frequency>93.4017</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385353B0443D91803AE528F3B80ADABD79F3E35EC060DAC60DD480C1F9E320CB4DFA37</stationID>
+ <name>Classic FM</name>
+ <shortname>Classic</shortname>
+ <icon></icon>
+ <frequency>99.9771</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853530B417707400B1AC4BE776310076934D8C1647D501027FFC8A2828DE8D8CC1DD9</stationID>
+ <name>Gemini FM (Mixed Network) [alternative Frequency)</name>
+ <shortname>Gemini[2]</shortname>
+ <icon></icon>
+ <frequency>103</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/england/leeds-antenna.krp b/kradio3/presets/england/leeds-antenna.krp
new file mode 100644
index 0000000..2bb0b95
--- /dev/null
+++ b/kradio3/presets/england/leeds-antenna.krp
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Vincent sanders, vince@kyllikki.org</maintainer>
+ <changed>2003-01-15T18:50:00</changed>
+ <country>England</country>
+ <city>Leeds</city>
+ <media>antenna</media>
+ <comments>Discovered by channel hopping</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853536BE99952C2C5006D3776369BC823910A71BB9E9C68763B199D81808F62CEE234</stationID>
+ <name>BBC Radio 1</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>98.900000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853537192A9F7EB747E4B3492C2922F10B84C4B8F480FBD3C874B16AA2F878130617F</stationID>
+ <name>BBC Radio 2</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>89.300000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385353DB24C677CBFBF6C601A4A32EB31A7714E95CD5AE72ADE3DEB1E9F7BFDA3A0C40</stationID>
+ <name>BBC Radio 3</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>91.500000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853534601454B2647D08E2F17126301103B1FC66724D7F1EBA30447108AF5EE6A3C04</stationID>
+ <name>BBC Radio 4</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>93.700000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385353827547B5966CD449DC0B374EFFFADF8EC99CE54DAFD7C83F53345E63F08A810B</stationID>
+ <name>BBC Radio Leeds</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>92.400000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535310A4763D720967666B5B47CF5B5F0F80E4C75BB9AEE1AF08543354B538D7C19C</stationID>
+ <name>Classic FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>101.100000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535352AB1A7AE5A14C2051E451DBA15ED4722A097F988D29525FACCAA58133492276</stationID>
+ <name>Pulse</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>102.500000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385353DCFC4B9D8AEEBAEA2AED62E21A38A7B3989C2F579345398C53048E08FD0440A2</stationID>
+ <name>Galaxy 105</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>105.100000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853535E4E574FD3306ABF640F644E4D4E237FEE633900772FA6B85296B03622506206</stationID>
+ <name>Aire FM (central leeds only)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>96.300000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853535947B911D447265C4CF5CCCEEEA6A450A8B2FBA11F1A16984138B96E46C4CF48</stationID>
+ <name>Ridings (good antemma required)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>106.800000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853532A2CA0AB1390E0F3635533C4B2A5960C303325FDC004BB411D5F9FF5088B7607</stationID>
+ <name>Century FM (good antemma required)</name>
+ <shortname>Century</shortname>
+ <icon></icon>
+ <frequency>105.400000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/england/london.krp b/kradio3/presets/england/london.krp
new file mode 100644
index 0000000..7a30a05
--- /dev/null
+++ b/kradio3/presets/england/london.krp
@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Cristi Mitulescu &lt;cmit37@yahoo.co.uk&gt;</maintainer>
+ <changed>2004-02-10T13:36:18</changed>
+ <country>UK</country>
+ <city>London</city>
+ <media></media>
+ <comments>other stations are available but I could not tune in to them from
+my location</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>10764189910D7D5E9E20B504DD0519000A1B52751F62F4AA92E89D0EE1771EF132B562B59E</stationID>
+ <name>Capital FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>107641913793723589CAC4B7B890869E5436E9BF30CD30A7E9F84AD28954887055971BCF07</stationID>
+ <name>Heart FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1076419272ABF539783BE66F62429E42C3699BE0E29ABE5BD561C38A506D06D64CEAF5A15C</stationID>
+ <name>Kiss FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1076419369CEDA06FC64270C6D8C78629043B6391B9E1F0822E32AFCB659A4DEDEDE434EF6</stationID>
+ <name>BBC Radio 2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1076419412FF1710384BE8FF2E745BB5BF948A1F3FDCE455D37C7F278DAA90E1076ED2C917</stationID>
+ <name>BBC Radio 3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1076419453693F9DE61CCC8F5CAA1AFE6C9ADCA96B1B263021D8AB054898328DF3D16D6E29</stationID>
+ <name>BBC Radio 4</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10764194876D9C49D57D397E7F0443001CDDC3BBE23CABB2C8CAF15C1E27063329E92BE254</stationID>
+ <name>BBC London</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1076419619D6BB41F70A4213E5F552FABA58CFC344818D97A361A646FAAD44E55893237366</stationID>
+ <name>Choice FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10764196599F0EA44347E5F185D0F127FFA67BF311D40DF7FEBFF5B3FFA1E8CF34F840EB63</stationID>
+ <name>ITN News Direct</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1076419698959C91E8992A8FAA6F7262FC04B85EEEB8A4D6E96C0E2B2DD7ADB9E205DD3070</stationID>
+ <name>BBC Radio 1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10764197312860599119C8F4F288270AF39AA604F44C03824B4654FB711D6BE53C0B083EF3</stationID>
+ <name>Classic FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1076419776D62E1B69807652795C0932B13E39C4F5FD4DD815C4E543F07A15732063116CF9</stationID>
+ <name>Jazz FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1076419867541C8F5BD89083989D588A6E102CDD989AFDFAF2ADCFDCF7881062E5858495BB</stationID>
+ <name>Xfm</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10764198878A32DE422FDA83EE5F919B9C255032758DAEA82BDE8AF78BEF5E181D0D645196</stationID>
+ <name>Magic</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1076419909000D2E6A6270D9203CFB626CEAB6B63045397FD994EB67854B967555ED5800FF</stationID>
+ <name>Virgin</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10764199495DEDF68A284F05D1A24B29119D906910DEAE49916B3E6A3C3D295992B6784F1F</stationID>
+ <name>Millenium FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1076419971672612B131F6AF8CA64D030C666E0DE2324CA64C48F59D05CBA2E8302AC5E572</stationID>
+ <name>FLR</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.3</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
diff --git a/kradio3/presets/england/newcastle-upon-tyne.krp b/kradio3/presets/england/newcastle-upon-tyne.krp
new file mode 100644
index 0000000..2bb877c
--- /dev/null
+++ b/kradio3/presets/england/newcastle-upon-tyne.krp
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Will Stephenson, &lt;lists@stevello.free-online.co.uk&gt;</maintainer>
+ <changed>2003-07-21T17:28:00</changed>
+ <country>United Kingdom</country>
+ <city>Newcastle upon Tyne</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385353638B6FBB64523F455121BCB27D0C342EDCEB05C4E7C1E0765F31B94B56E57119</stationID>
+ <name>BBC Radio 1</name>
+ <shortname>R1</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535341FFC7BCD10F2EA4335ECB1900399776B3569191D283D4A0A603D2C0A662E6C9</stationID>
+ <name>BBC Radio 2</name>
+ <shortname>R2</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385353CF930D9522B10393ADDE8D100E8E034DC21EF8573ADD1757C80895BEAB0E1093</stationID>
+ <name>BBC Radio 3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853537723EC241AF20B3F2AF337D83CA5259820F181C42D054095A73823447A6579DA</stationID>
+ <name>BBC Radio 4</name>
+ <shortname>R4</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535320DBDD2EA53187B7B2DAC47A86363B6E7960F15BABC212FDF4748EF9940B0905</stationID>
+ <name>Metro</name>
+ <shortname>Metro</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385353E9C32519D211402D18AE2517A7E49A9BF88364A399DFD5AB5FD8894B83BC42E3</stationID>
+ <name>Radio Newcastle</name>
+ <shortname>Newcastle</shortname>
+ <icon></icon>
+ <frequency>95.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/england/sheffield.krp b/kradio3/presets/england/sheffield.krp
new file mode 100644
index 0000000..9e149ec
--- /dev/null
+++ b/kradio3/presets/england/sheffield.krp
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>David Bellamy &lt;dbellamy@dbellamy.solis.co.uk&gt;</maintainer>
+ <changed>2935093-02-28T00:00:00</changed>
+ <country>UK</country>
+ <city>Sheffield</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853535FBCB1269E0C56D20A7B6F351F9BE2A92E59F3DC4BC5016E3789542D6FE396F5</stationID>
+ <name>Radio Sheffield</name>
+ <shortname>Sheff</shortname>
+ <icon></icon>
+ <frequency>88.6014</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853537A9D116DE031FAAD32AD670BB721C064393E63E78907EDB527B43BCB6B1E50A2</stationID>
+ <name>Radio 2</name>
+ <shortname>BBC2</shortname>
+ <icon></icon>
+ <frequency>89.9265</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385353277FF6606B5FD5280F68089E7F1F80361CE6124B75DA52384C498B28011E3787</stationID>
+ <name>Radio 3</name>
+ <shortname>BBC3</shortname>
+ <icon></icon>
+ <frequency>92.1267</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535370EFAB3180B2F058B51D9335A8C1D2275825CD92BE9061CCEB0FD7D0576AC2AD</stationID>
+ <name>Radio 4</name>
+ <shortname>BBC4</shortname>
+ <icon></icon>
+ <frequency>94.2768</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385353353CE83E91D16A01DD34EC4F33ABB87B35E6B0722C6C1832784F83BA63056FDD</stationID>
+ <name>Classic FM</name>
+ <shortname>FM</shortname>
+ <icon></icon>
+ <frequency>101.727</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535382F316DB0B9A6EA8B6556D4DB39379301CED8A18CFD06E65E1F25219BB4A1193</stationID>
+ <name>new station 5</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>97.427</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853531FB4F53A1D94A66C9A1E934D60497D3D844C851FF527FFF7CA65B2CE73EC1D63</stationID>
+ <name>new station 6</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>97.527</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853530AAE3F2D8BA5F95883A8C61FE730B32DD1097408F6FD777FCCE25806706D61D5</stationID>
+ <name>new station 7</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>99.5271</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853536A0C1A8CB8D15EE777BABA30F611AC2EF0AFE30BCAE80825657FFA0E30310EE0</stationID>
+ <name>Galaxy</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>105.577</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385353FFB4B23D89FC8A8EB21811A36DEFE11E20EFBC4BA9712E76758489EA28E61FB9</stationID>
+ <name>Galaxy</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>105.627</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/finland/Makefile.am b/kradio3/presets/finland/Makefile.am
new file mode 100644
index 0000000..a7f8272
--- /dev/null
+++ b/kradio3/presets/finland/Makefile.am
@@ -0,0 +1,10 @@
+SUBDIRS =
+EXTRA_DIST = "helsinki-cable.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/finland/"
+ $(INSTALL_DATA) "$(srcdir)/helsinki-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/finland/helsinki-cable.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/finland/helsinki-cable.krp"
diff --git a/kradio3/presets/finland/helsinki-cable.krp b/kradio3/presets/finland/helsinki-cable.krp
new file mode 100644
index 0000000..eea9bc3
--- /dev/null
+++ b/kradio3/presets/finland/helsinki-cable.krp
@@ -0,0 +1,185 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Esa Rautiainen &lt;esa.rautiainen@kolumbus.fi&gt;</maintainer>
+ <changed>2004-02-19T14:38:21</changed>
+ <country>Finland</country>
+ <city>Helsinki and surroundings</city>
+ <media>cable</media>
+ <comments>analog radio requencies</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>10739990147127D5C8DA80521A05899AA48D261A84E7508B79DE1DE625B27194AADD27D6AA</stationID>
+ <name>Radio NJR Energy</name>
+ <shortname>NJR</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>93.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1073999014A742B2F0E694A850A4EB0C11BCAD5B46DB2B061D97F8C681692B9092B82EB2C8</stationID>
+ <name>Kiss FM</name>
+ <shortname>KissFM</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>101.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>107399901433E9504ECF524E767F0A7FBB75F783E0B640E90368EF6577CEC6C5E375E037DA</stationID>
+ <name>Radio Nova</name>
+ <shortname>Nova</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>93.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>107399901492DD99A4E22607633D9799457181C00FE51DF947C81BE623AFC5D833A9364FBA</stationID>
+ <name>Radio City</name>
+ <shortname>Radio City</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>99.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10739990141A1843E229119FF210CD35E8C34887B7C27DA8806AE3D992D33EBEE06F8E9855</stationID>
+ <name>Radio Suomipop</name>
+ <shortname>Suomipop</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>103.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>107399901489267097D47CC755E5DB3D1FAAD422FFEFA9644BAFAF0DBD16DFB6FA2788E275</stationID>
+ <name>Classic Radio</name>
+ <shortname>Classic FM</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>106.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1073999014E945AF879AD01C22AAA9DE6F51D9168A228F14200C791E043DF27C4B6976578E</stationID>
+ <name>YLEX</name>
+ <shortname>YLEX</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>95.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>107399901433C185BF75ADEA1606B48FBC5ABED0D45180FD7DBED1B31119F59ECE6EDA9692</stationID>
+ <name>S�elradio</name>
+ <shortname>S�elradio</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>105.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1073999014DEFE55179F037B26FB11577695AA46BF16ADB28C83A9A3642E8664323EBB5CA0</stationID>
+ <name>Yle Radio 1</name>
+ <shortname>Ylen 1</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>92.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10739990146A62B609AD6D53A67AA9089AE484F0B14B5403BA9238F39FA61749A8E5050B3D</stationID>
+ <name>YLEQ</name>
+ <shortname>YLEQ</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>102.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>107399901496294C213FA5E672EF4C81A23BA27FFC0430F58F3350BB4E73E7EE9E6785CD06</stationID>
+ <name>YLE Radio Suomi</name>
+ <shortname>Radio Suomi</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>88.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1073999014E9569A27FE72958B4CDA8D155ACE130B59535BE18E90F99B3E0D558570542BB3</stationID>
+ <name>Radio Vega</name>
+ <shortname>Radio Vega</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>89.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1073999014CC3589BC61B0B37B339831D4A3E10E8721E59CFF9D3EFD2DBE10C5C6E08DA92F</stationID>
+ <name>Capital FM</name>
+ <shortname>Capital FM</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>107.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1077195106B86E97C0AD805E7B3F9E87075220428D7533B535DD4E23A9276D682014329A2A</stationID>
+ <name>Radio Helsinki</name>
+ <shortname>Radio Helsinki</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1077195252F4C081F968F29D06C141AEFB788333D0D32489B0FFD37DEE1D58C82D11F3CB0E</stationID>
+ <name>Iskelm�adio</name>
+ <shortname>Iskelm�adio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1077195292FB6E34E276347805C6E7F394ED8754065DA986217B534F2D4C16CBE9C8EA36E4</stationID>
+ <name>Radio Dei</name>
+ <shortname>Radio Dei</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10771953269A44C358FA19084B88FDF721D78C8364E36ED022370F6CB1ED41E4FE153E0A30</stationID>
+ <name>SuomiPLUS</name>
+ <shortname>SuomiPLUS</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10739990140E59527F797E61B32E6E84AFEB7F01770E1C6882A4A61A272BF0B000E7C1C733</stationID>
+ <name>Groove FM</name>
+ <shortname>Groove FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1077195470BA26486BDFD4443EF34AFD669333412FC41BA8BA8C9A472F5E3D0D54ACDC79E5</stationID>
+ <name>Radio Extrem</name>
+ <shortname>Radio Extrem</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/france/Makefile.am b/kradio3/presets/france/Makefile.am
new file mode 100644
index 0000000..1512679
--- /dev/null
+++ b/kradio3/presets/france/Makefile.am
@@ -0,0 +1,18 @@
+SUBDIRS =
+EXTRA_DIST = "angers.krp" "lille-antenna.krp" "paris-antenna.2.krp" "paris-antenna.krp" "rennes.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/france/"
+ $(INSTALL_DATA) "$(srcdir)/paris-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/france/paris-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/lille-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/france/lille-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/angers.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/france/angers.krp"
+ $(INSTALL_DATA) "$(srcdir)/rennes.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/france/rennes.krp"
+ $(INSTALL_DATA) "$(srcdir)/paris-antenna.2.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/france/paris-antenna.2.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/france/paris-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/france/lille-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/france/angers.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/france/rennes.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/france/paris-antenna.2.krp"
diff --git a/kradio3/presets/france/angers.krp b/kradio3/presets/france/angers.krp
new file mode 100644
index 0000000..64b77e4
--- /dev/null
+++ b/kradio3/presets/france/angers.krp
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Peyruchaud Matthieu, &lt;matthieu_peyruchaud@yahoo.fr&gt;</maintainer>
+ <changed></changed>
+ <country>France</country>
+ <city>Angers</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1128332075F10E7CF3438649BA98C99849CD77196C7E0B7F85B481874D1E7A5CF9F61C65EA</stationID>
+ <name>France Inter</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1128333310CBAE15A34209FACDC27F0B9DAD1789FEAD82F83F0CCAA03944BB9D9D653FBEBF</stationID>
+ <name>France Musique</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>112836676273AFAA1AECB383D7A35CA86B298D639AE63774BAE75687433B7CC13EEC6CDD70</stationID>
+ <name>France Culture</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11283333917E9F58183720D1BAC7BA7CBFD6E1C0EDFE436F4F0B16ACC1871C4E28F40680D9</stationID>
+ <name>France Info</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11285080897F57570AB5F91EC9C881A9E4DCD64E85767C5BFBC778A6CABA93F479AA6AC918</stationID>
+ <name>Radio Nova</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11283333452B4C09B20859676BB42871661BDC9F2722866A827264CC05F86ECE14E1BDAA54</stationID>
+ <name>Chérie FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/france/lille-antenna.krp b/kradio3/presets/france/lille-antenna.krp
new file mode 100644
index 0000000..227adfb
--- /dev/null
+++ b/kradio3/presets/france/lille-antenna.krp
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Patrick Barriere &lt;barriere.patrick@tele2.fr&gt;</maintainer>
+ <changed>2004-09-13T01:32:24</changed>
+ <country>France</country>
+ <city>Lille (59)</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>109491824961F26B9A842A26B3F6C0458DC596D2EE525E84FEFDCC05F46147D86D1BF7F60B</stationID>
+ <name>France Bleue Nord</name>
+ <shortname>France Bleue Nord</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1095033315F5070869DBAAFE905829E7E53BC826DF8BAE7BD62A9B48DB0DE823C65DBC46AA</stationID>
+ <name>Radio Classique</name>
+ <shortname>Radio Classique</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1094918253BC65747C232308051E250A080048E970C3C2241F45B95C712B8DB792559E5611</stationID>
+ <name>France Musique</name>
+ <shortname>France Musique</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10949182550C05387BF50EDA544B1038D11CD52F7AD513812A089E5D1708CC691B14EEB4CF</stationID>
+ <name>RTL 2 - Nord - Pas de Calais</name>
+ <shortname>RTL 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10949182576361E74ABB4351B351A20CE2CDCF0652DC8F20D225F868F7C6214E27A244D5E9</stationID>
+ <name>Boomerang</name>
+ <shortname>Boomerang</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109491826227BF8258D5DCDF10A73FFAF9B2595FDBF0D29A069B30DEA5FC9188789F256247</stationID>
+ <name>Le Mouv&apos;</name>
+ <shortname>Le Mouv&apos;</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1094918264C72AE0FF1FB0A0BA5B3085AFE299955E1D95B8B3DE574ACAF77250DD1B824C4C</stationID>
+ <name>Contact FM</name>
+ <shortname>Contact FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1094918266190E083F187A6232CEC2CFF4623171FD868FCB693E2E890A3EF21EF1825DC955</stationID>
+ <name>Europe 2</name>
+ <shortname>Europe 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1094918269545944ED886689EC0FC13E93980FC641212D01DA6E1957E42808F08293590C89</stationID>
+ <name>Europe 1</name>
+ <shortname>Europe 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10949182717D64B159C64282004C4B38926C29D5629E21A5439D3029D03BC0C91626D84D81</stationID>
+ <name>RTL</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109491827274A705521D494B15216CC1CE91BE378AB6F2F932D615B429E96C8EBE0A8EF016</stationID>
+ <name>Nostalgie</name>
+ <shortname>Nostalgie</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1095033386E4F4E4233453B20524CE6D763D829F2335579DF05291505847153C1DF1FAE004</stationID>
+ <name>Chérie FM Lille</name>
+ <shortname>Chérie FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10949182777F1DE1A3FAD4229F701058EE0FC859678859D98BF7A127F26E02BE5D327F4A79</stationID>
+ <name>Skyrock Lille</name>
+ <shortname>Skyrock</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1094918278815405F587D769ED19F82C6BB179FFDB8C700D8A2853A0B66D0F89138315FAC5</stationID>
+ <name>France Bleue Nord</name>
+ <shortname>France Bleue Nord</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1094918282564F6C5A8AD4532ADC3B7080E4F18D84DAF4B154A63400A9E3C303815B94133F</stationID>
+ <name>VRT Radio 1</name>
+ <shortname>VRT Radio 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10950335317AA126DCAF6D38FDDD45C012791FF1503BC9C325521D5214CA6481DA34385457</stationID>
+ <name>RFM Nord</name>
+ <shortname>RFM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109491828519081D1AB85F68C79A8968F680BE4AEB5BE783F3B92614716B8F0796D713FBC2</stationID>
+ <name>BFM</name>
+ <shortname>BFM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1094918287EE49B8A51052C87EDF1E9D77DD09E4CB9363BD1A4AE7113F0AC2B36F25097666</stationID>
+ <name>Fun Radio</name>
+ <shortname>Fun Radio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10949182902B34F6E4361280283D118732E69891EEC5ECDC7374B09B469FCF4DBAB9359735</stationID>
+ <name>Roc FM</name>
+ <shortname>Roc FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.6507</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10949182923389707F50F7139904E15F9A80E983BFC3D472B39D954D16FD779D866609636D</stationID>
+ <name>France Culture</name>
+ <shortname>France Culture</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1094918295FB6A9C40F808A4426A2B8BD5C67768BBA7E5875F71C0EE887CE2FF3CCA53AD8A</stationID>
+ <name>VRT radio 2</name>
+ <shortname>VRT radio 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109491829714A308AF13C521602E6AB4764882B5AD75B3BAC7E238B1EDC0BF3881915E6FCA</stationID>
+ <name>Radio Pacot Lambersart</name>
+ <shortname>RPL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.001</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1094918299F3DB269B60490E8E90CFA78B97FEBABE221F423C13FA17CAB61EBDB7D8DA34A8</stationID>
+ <name>Pastel FM</name>
+ <shortname>Pastel FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109503310445C46A6D9B14BCD3EE53C9BCDF1F5AC6E38E6B4690E4AAEB51244DC17045C3C5</stationID>
+ <name>Mona FM</name>
+ <shortname>Mona FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1094918302C891F61E85F257833493974731B260EF93E3F38B2E0CC0DA23375073F82FEBFB</stationID>
+ <name>VRT radio 2</name>
+ <shortname>VRT radio 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1094918307683B2697EA4D63CFF55C97EFE82DC36AAAFC2B8A0F286CD3B8CFB6D997EFBB8A</stationID>
+ <name>NRJ</name>
+ <shortname>NRJ</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1094918309CA8AAF74B0F249AF9A31785A8091CFFC8DD044DC740DC429F45C40D540DB2B3B</stationID>
+ <name>RTBF fréquence Wallonie</name>
+ <shortname>RTBF fréquence Wallonie</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10949183137CF4C3614C4CA6A5F77A29F2145B4F9E2FC6249A3B68FE5FDEF18C14CD326BE1</stationID>
+ <name>RTBF Musique 3</name>
+ <shortname>RTBF Musique 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1094918316BE80F022970986E21A8A4C04E9CBB5E8B6E3AB736CD63FAE4D73D07743DFDB9F</stationID>
+ <name>Radio Télédiffusion Triomphe</name>
+ <shortname>Radio Télédiffusion Triomphe</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1094918317BB70A06938043190AEDF5DDAE9A1B27CB3A2D4085A95B4A5549877AE30D7CB43</stationID>
+ <name>France Inter</name>
+ <shortname>France Inter</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1094918321C91CCC217A815918345DE156C4DB0CE597B0D572CF8E2F2CB3FA8D8FC0E5CDE1</stationID>
+ <name>Radio 21</name>
+ <shortname>Radio 21</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10949183240B288CF85074199CC3F6FFAE16BBA9B2C977E87B97C205016772A0DFAA3A89B0</stationID>
+ <name>France Info</name>
+ <shortname>France Info</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1094918327FB459AC18F3B323F0987ACA8515599DAADE604DC9AA543718BABC3D177C7C05C</stationID>
+ <name>RTBF La première</name>
+ <shortname>RTBF La première</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109503293282848B3296A0096DCABEF48E8B99DDAAB46DF3BA076CFCBB27836DE86CD6464E</stationID>
+ <name>Campus</name>
+ <shortname>Campus</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.6</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/france/paris-antenna.2.krp b/kradio3/presets/france/paris-antenna.2.krp
new file mode 100644
index 0000000..8b8e61b
--- /dev/null
+++ b/kradio3/presets/france/paris-antenna.2.krp
@@ -0,0 +1,520 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Erjon Seferi, &lt;erseferi@wanadoo.fr&gt;</maintainer>
+ <changed>2004-07-06T20:12:45</changed>
+ <country>France</country>
+ <city>Paris</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1089138126B5FD674221AD43D7B1A0934C0556EFC4BCB64AA6C500E0B2BDF700CE194A6524</stationID>
+ <name>France Inter</name>
+ <shortname>France Inter</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108913821654177FB636865FC5AD669D035E60646EE038B8EC0DE47FB2DD6B8FE0DCE6A369</stationID>
+ <name>G��ations Paris jazz</name>
+ <shortname>G��ations Paris jazz</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1089138332F5BF9A263FE82B5BBA0AFEC036892989D1F579E4D26B2A022E0292CCC261E4A2</stationID>
+ <name>Radio soleil</name>
+ <shortname>Radio soleil</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108913829711B740D35FB622F7F8EAD13A57738FEE97CFD342029478F3AD3CEB09A1F81DB0</stationID>
+ <name>Radio M�iterran�</name>
+ <shortname>Radio M�iterran�</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108913774023DA0A4DB0D20DCF8F83F985FBDA11E96267184D0E30C566832CF737D6502E28</stationID>
+ <name>Radio France internationale</name>
+ <shortname>RFI</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1089138580236595E786A7E9E99F8726E226C4EAEE9033DCF15F151043620FE0C9F631894D</stationID>
+ <name>Radio libertaire</name>
+ <shortname>Radio libertaire</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10891387555932B91A8A03AE2B093A1FB3F23A0A8BC36DFDE20D5F3CC7CF83512394A2DFE9</stationID>
+ <name>TSF</name>
+ <shortname>TSF</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108913890828976772FBC9EF290C65A6A4A5646EC966F864C1B0D5810A06B0C5AC9F1A80B1</stationID>
+ <name>Nostalgie Paris</name>
+ <shortname>Nostalgie</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10891389558695D5E749470BADF83DEB459DA829F84FD341DD30E4FD6D9892FEA160C74258</stationID>
+ <name>Chante France</name>
+ <shortname>Chante France</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10891389992D0B440630BCF2BBC4BCAD741F0AA8ADB36252B7692574C2DF4213C934FC7731</stationID>
+ <name>Ch�ie FM Paris</name>
+ <shortname>Ch�ie FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1089139044BE39A8E18E25CC5AEBFFC6BBD35022F4133BC267CBEC05AB84B7DE12DF969CB5</stationID>
+ <name>France musiques</name>
+ <shortname>France musiques</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10891391797DC614ADC7F3A5806E8F0007967AF5DF1F8C171345EA94E60EC2F5BECD11AE9D</stationID>
+ <name>Le mouv&apos;</name>
+ <shortname>Le mouv&apos;</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10891392952119222748B2B0885AC1F182369B40D67C410831D50BAC440C6638B1CF52F11D</stationID>
+ <name>M�ia tropical</name>
+ <shortname>M�ia tropical</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1089139352FFA26444C76F05E6507ACCE49073E3C2FAC0116A5328116F5F7673CB8A5B46AC</stationID>
+ <name>Radio pays</name>
+ <shortname>Radio pays</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1089139433C941FAB808B665ACAF4A9CB93E7CC3237C9FB1A3BB96631F1AB8E8E0CD495A67</stationID>
+ <name>Aligre FM</name>
+ <shortname>Aligre FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10891395944D4C52B951A41288CAA87668596906EB583B6D3146E7AE6A4D4B27A9364ECE6C</stationID>
+ <name>France culture</name>
+ <shortname>France culture</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1089139735C271F22072C6E96BF75078404AF5F27017FAA2946FB3264CA4B23F401E2A8143</stationID>
+ <name>Radio Orient</name>
+ <shortname>Radio Orient</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1089139863ABC2F5BB9B8820E2D6707F08F34BBAC35B31DFFD24FA69E39064ACEA835E8A71</stationID>
+ <name>Radio J</name>
+ <shortname>Radio J</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108914008534A04101F6A39465BCF8F0E4A250A9B052C5586F2A0468F27934561A78E452E6</stationID>
+ <name>RCJ</name>
+ <shortname>RCJ</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1089139979E02F197F6A0894B21552231752CD9FE37F7A44B8FFA35FB7B24A7EE13E590050</stationID>
+ <name>Juda�ues FM</name>
+ <shortname>Juda�ues FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108914019353ABA0EA92CCD7FDDA400792732127B87B9929A84ED12A759E3247F15DACA3BA</stationID>
+ <name>Radio shalom</name>
+ <shortname>Radio shalom</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1089140241F9C659240A1762006DBA0F70899C084747AD1B9591140E1EDC2A909BEBFA163A</stationID>
+ <name>Radio ici et maintenant</name>
+ <shortname>Radio ici et maintenant</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1089140296121DF903C160B7308197E9518200FB51FE4D389D69F1003B270B71B8C1B49FD0</stationID>
+ <name>Radio N�</name>
+ <shortname>Radio N�</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1089140360518649DB4773B104BBD1F1A03E6CCF051521C3C415C03A9B414A87953E8920BD</stationID>
+ <name>Radio courtoisie</name>
+ <shortname>Radio courtoisie</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1089140478EB127140EF0F2579E1DB0D4A71FF7E10ABD184718AEA4C34D9A87FB5A55037B5</stationID>
+ <name>Skyrock</name>
+ <shortname>Skyrock</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108914051114D8EF4E16A2BF21E4ABE7F74BEB6FC3A9ECD256BA71CCBA90674875782D4BFC</stationID>
+ <name>BFM</name>
+ <shortname>BFM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1089140541B3C33166DB8B1B2A3679F3C5C32708AB489E9E0346FEB73082766F941A5F822B</stationID>
+ <name>Voltage</name>
+ <shortname>Voltage</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1089140574FCEF1A5BB3D1EFF413B16C14436EC2BFA3798CB70A8133ECD1F895A9F3695DE0</stationID>
+ <name>Rire et chansons Paris</name>
+ <shortname>Rire et chansons</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1089140611AF509A6C04962C3922343AC1743C52C33B8ABECD6BD3E7DED262F23FAE7FEA61</stationID>
+ <name>Ado FM</name>
+ <shortname>Ado FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1089140649910BE6A7E73E24EEF19DAC44D49E413498A316C3D081B8A263A9BA549C83D559</stationID>
+ <name>Radio FG</name>
+ <shortname>Radio FG</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1089140692867D89E935F3CF5DE133AF5D256FEC05944305A889C7ED06970850C7F8C65708</stationID>
+ <name>Radio Alfa</name>
+ <shortname>Radio Alfa</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108914073980FBFD5218BBEEF1B0699445B345377605E2EDC60DBC21697425B91DE5914194</stationID>
+ <name>Radio latina</name>
+ <shortname>Radio latina</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1089140848865277E75BDA0F15DCC337C19A45BA355DE902ABCA42D350A45E1CCA84511CFB</stationID>
+ <name>France Maghreb</name>
+ <shortname>France Maghreb</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10891409112DBE0DB76B8E78F7CA3BC8ECADA71E4B0745B222ECAE77B6F69A6CF592F77E99</stationID>
+ <name>AYP FM</name>
+ <shortname>AYP FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10891410072386FF191485A4103AFFEACD3D28BF376B6F318062953C0192045EA1C6F2FEE6</stationID>
+ <name>Sport FM</name>
+ <shortname>Sport FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10891410410FE6ABA131B32F2F625172F5C3A4CABE49B46135A88C175316B54A5AEAF3F644</stationID>
+ <name>NRJ Paris</name>
+ <shortname>NRJ Paris</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1089141079D31EC162FA4D6EBE2F639599A7E182189651EE3C8BAB320CB74D64FD5B75BAC0</stationID>
+ <name>Radio Notre Dame</name>
+ <shortname>Radio Notre Dame</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108914110304F2991C92BB43C58FC9C913DDDE186C20565B1792D04BD2E20ADA4FE549DBF0</stationID>
+ <name>Fr�uence protestante</name>
+ <shortname>Fr�uence protestante</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1089137667BB6E813632B6B756784BEB846F1D118A8F995EBDD30AE08E4AB90D5AC3CC1AD0</stationID>
+ <name>Radio classique</name>
+ <shortname>Radio classique</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1089141308C151E94ECC035ECFDF6E74723393C886BCAC0B4A68C703E394E0C6A6056E2EAB</stationID>
+ <name>Radio nova</name>
+ <shortname>Radio nova</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1089141424CA5C8FEF18ACF79CD30E85C743D70476346BA49F2DDA29B00633AD6EBEBAFB82</stationID>
+ <name>Fun radio</name>
+ <shortname>Fun radio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1089141459F603A0D00D464397B090F7E982EF479CECF3D76A8450982AAC0BD89A96F313DC</stationID>
+ <name>Oui FM</name>
+ <shortname>Oui FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10891414957EA5B4417C3E7BAF9B07CB7E80E8D6146D1821BFFF907491BC9E125E0E9FDEC6</stationID>
+ <name>M&apos;FM</name>
+ <shortname>M&apos;FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108914152775ECD857A50C83FBF954DBBCAED785AE033F72E98FDC233EB545AA09D2A88FA3</stationID>
+ <name>RMC Info</name>
+ <shortname>RMC Info</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1089141562BEA2EC1FD7269CE400863348D81DD1EF05C75C99A1D5DB529B771AE6C0E0FA09</stationID>
+ <name>Europe 2 Paris</name>
+ <shortname>Europe 2 Paris</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1089141605E0E86B81FD1C67E927360D38997324EC0C6CE708468EF5BB2F8B3B56098AF531</stationID>
+ <name>RFM</name>
+ <shortname>RFM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1089141640A8D8B93999791DFF1D90E23BDDB8B458C5FDCCD39362BB4248AF3C2C1AFBF2A7</stationID>
+ <name>RTL</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1089141669688A17F55674D092EF6BEC9DF385CCCC3578CA245EA43C9EF6398DB2CC98C2D0</stationID>
+ <name>Europe 1</name>
+ <shortname>Europe 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1089141705BEC4ADC5302603E19781753983C96F74403EE88DC9F19CE4024DA283FB166496</stationID>
+ <name>FIP Paris</name>
+ <shortname>FIP Paris</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108914195237B9E98B30A667E7E293B37C1B5226CFB478F741EB6827DA7E158A3B0C9B2BA6</stationID>
+ <name>France info</name>
+ <shortname>France info</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10891419875136A73F7DA87144FD9E8795B29CB2F7EEA8C5AA56AFBFC3D6C1220864223ACE</stationID>
+ <name>RTL 2</name>
+ <shortname>RTL 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1089142018347DA5DC5BA771571EE227CE8266A309C8E47CD57C74D7FE170E202B4503C40B</stationID>
+ <name>Fr�uence Paris plurielle</name>
+ <shortname>Fr�uence Paris plurielle</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10891420417D232E258EFBE512FE29A9B065C74743DC55165FB7E7EB22AECF6A686A3BBCED</stationID>
+ <name>Beur FM</name>
+ <shortname>Beur FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1089142068AC16D15775B61B85E6E4CFD1CC5B573DD1748C0B41B4B0063E5282F0C2055E4A</stationID>
+ <name>La city radio</name>
+ <shortname>La city radio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108914209617C824ADE0187680D45A33658BA9305B7E10B4918E03D0FCB316C2C1051C27F7</stationID>
+ <name>Africa n1</name>
+ <shortname>Africa n1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108914217388159A1FFD89254458CCD85C761F888C6903700BFFF8531C44D8DFB3CA131A04</stationID>
+ <name>107.7 FM</name>
+ <shortname>107.7 FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.7</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
diff --git a/kradio3/presets/france/paris-antenna.krp b/kradio3/presets/france/paris-antenna.krp
new file mode 100644
index 0000000..9661c52
--- /dev/null
+++ b/kradio3/presets/france/paris-antenna.krp
@@ -0,0 +1,462 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Baptiste Maisonnier &lt;bmaisonnier@visitmail.com&gt;</maintainer>
+ <changed>2004-01-08T23:15:39</changed>
+ <country>France</country>
+ <city>Paris</city>
+ <media>FM</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10735984390298EA64AA86E757988DA8EBA9257838A080E8A919F9E10E107C2DA0EDD62C1F</stationID>
+ <name>France inter</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1073598483A5500FC3D1B2B835F3A86AE1DC2107071C804C358EF0E697376E7D41380ADF61</stationID>
+ <name>Générations</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1073598500F8CE6744F980CF9F041ADE7EB5DA7818031E825EA037ED0D82C2A9BF15ED5493</stationID>
+ <name>Paris jazz</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107359850702809627B646891F9AB1035C53F0F46BEE51F7945104A41D67C0F45E202A2E38</stationID>
+ <name>Radio Méditerranée</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1073598579862878B3650FE3F6F490015E53391C9C6E9A4082D03DF14F2E004CBBBEEDBD93</stationID>
+ <name>Radio soleil</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10735985852EFB1C3CA4B36D64E74572C680663BE9C759A6EE47FB4CC65A90D3CB92C33855</stationID>
+ <name>Radio France internationale</name>
+ <shortname>RFI</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1073598628CD1D087739AA638AD0ECD67EFCD1C6441CFF70D55E5A84571CDCD761999E451E</stationID>
+ <name>Radio libertaire</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107359864292E008BC93F0494D2F39E2C5FA3F2C2025DE10BA987605AF1ABFB802842AEB4E</stationID>
+ <name>TSF</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1073598659DCBC89052A4CEE9622230B4253DCD0305CAA116E9F8D84EF0C86F77BB0F4FA5B</stationID>
+ <name>Nostalgie Paris</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107359979096B370E537A8F00384702A765FBC662F5FCCA7BD61535F39EBBFD448A5678C79</stationID>
+ <name>Chante France</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1073598666AFF5843E2E79C0202F83085A9891C0CD3990ED1F082622AC66BBE2AD40973BD3</stationID>
+ <name>Chérie FM Paris</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1073598677573D6DE73704530ADBF558B53B317AC04EB1B5F44B73D7B64481D2DAA4C65CC2</stationID>
+ <name>France musiques</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1073598691B30350A7A2FF4D11DD573FE6B21178F0D6217EE55D8CACF74ADB66F836448C17</stationID>
+ <name>Le mouv&apos;</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107359872467964EE760610A08656DB975AC9E35F77E26D374A0A4E3F4ACB1E458EF38E019</stationID>
+ <name>Média tropical</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107359873714A276BB45C79E30CF0EBDD6F6E24CDE2CF4DFB6801A0F96171372CD56D97E8D</stationID>
+ <name>Radio pays</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1073598747BA0BF61F50444315D9E8B50A47753601971054B307EBF1F0A2A5DF714B65580B</stationID>
+ <name>Aligre FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1073598757BFFDA519742438DEA428953300F34ED1CB10616BD6EFDED24C3D11196CDF914B</stationID>
+ <name>France culture</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10735987655E2D0CF46DEFD616BDCD0E8CE226C5EA6E13C418539D0E446991243F36FD4382</stationID>
+ <name>Radio Orient</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1073599036B46ED995D1932F7D4DB2E6BC7D023927CEE9D95A9485DF7A21744972A0F24419</stationID>
+ <name>Radio J</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1073598789552847275289C521595011C7777C46EAA434D4AD28B5ABCC63E7FE6A19E0DF3E</stationID>
+ <name>Judaïques FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1073598850105FB6ED4762F0A7F7D740EF16D92C0C378BBF974A936D498BD9C830F487CA9C</stationID>
+ <name>Radio shalom</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107359886888A3A44ED66525654C60D8571618E363E10B896A363B2CBC7D52FB9A6F613D2B</stationID>
+ <name>Radio ici et maintenant</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1073599068912FA056DF76C2DA8C31E2A917AC85585B3F587B9A04D5D412B6E426200ABD71</stationID>
+ <name>Radio Néo</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1073599087F258859DB2D1E3347400C3821666BBD5A841E88B7267279582C07B8835BBB0BC</stationID>
+ <name>Radio courtoisie</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1073599952F35C44A30357C7BA2C3DDE7A896D05803D667C29485939508AF4D336F81E7D4D</stationID>
+ <name>Skyrock</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10677047764A5C8F024C85061920B5BAEF8C3A8E39F4D46745BF1B25D05B9634742E5CF94E</stationID>
+ <name>BFM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10735989055C3D28DCBA3F312C6DEE7C6CDE13C1BD2B720A684D1206CF4319723FE938F6DD</stationID>
+ <name>Voltage FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1073599209538760C1ABD4D887970D7E8455C368BA2378084EFCFAFCA4558E9A60F74E2524</stationID>
+ <name>Rire et chansons Paris</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1073599218F5D61AB4F5B65851B617927E9A826DAEA9AAE7351B6491B02717BA9737735E0B</stationID>
+ <name>Ado FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1073599231366325C16B5937D6BA549C61584AD6FD5C7ECE7197C7A34CF24BFF635DC80991</stationID>
+ <name>Radio FG</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10735992422CC04EF85D7CAB0D2DED9AD0D2A68E380B65DCA2EFFCBF2EBEC688AB926F6D85</stationID>
+ <name>Radio Alfa</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10735992521C135EDAB8532DF1E3E897CE40795D54E606880B83D3B74DDB62AC30E72BEFBD</stationID>
+ <name>Radio latina</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10735992655C3D7CA4830E790A8B7DE4DAA88DF4B86E0BC09A7E24D19617C3F94C40E7A2CD</stationID>
+ <name>France Maghreb</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1073599275764212BA4692D849EBCAE352F0A3AEB0E4726DA0FB249A58A110DAF1E8D4EABC</stationID>
+ <name>AYP FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107359929187976474E17F6FE4A9F5E8125B8B9065947C34D927838FB5B87E82D38F83F022</stationID>
+ <name>Sport O&apos;FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107359931205616474B2F298E05DEB1E2FEA4463EE119F2ADB92EBCA666033E47812217FAD</stationID>
+ <name>NRJ</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10735993442E6C7982DFE54B698C5BB4ED51952159E101E1DA03E74D9EE4C77757BDB84B08</stationID>
+ <name>Radio Notre Dame</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107359935204BF0B0DF1664F3C167FDECE0C931ED2ADA2C26442D7F2604E281C9C1A8B1691</stationID>
+ <name>Fréquence protestante</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1073599365CF1263FFF558BB9CD777B446253389C3DD842A97EBBB142AFECBEEC463C7C20D</stationID>
+ <name>Radio classique</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1073599376850925D3EAF38D9F37E8E876860E59A73DC2E76527D8812C2E2A332E190EA936</stationID>
+ <name>Radio nova</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1073599387F8852B7DD49C0F017E7D33ACD77377DDF158810F664856FBF27A733C6FE69C87</stationID>
+ <name>Fun radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107359939920E769E7C60F377741FC545D67AA884EA0B1AE6EA6930260FAFFF86A68D6994A</stationID>
+ <name>Oui FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10735994075A4DB99B0E19F5B0DEDE29801C5F1C1C1F2094746124EB0592BF66C36CBBC611</stationID>
+ <name>M&apos;FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10735994459D6B725C281759B8ED709C8CA3B9D0A926C4DA1A98661444A35605EB18E05724</stationID>
+ <name>RMC Info</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10735994540271C35ED62F6B6B794F599895363E0844404F12C07EE5BA5861AA3D73D4107E</stationID>
+ <name>Europe 2 Paris</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1073599465EDD4CA45E4E3FC4C69A0DE02D9D0D394ED3C27C8E0F53519C8CC1DC39A9DD6E0</stationID>
+ <name>RFM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1073599475B4374B1434F2F4B00E40CBEFAD18E40AD82FE637BE1CC163B5EE553C9915D3AD</stationID>
+ <name>RTL</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1073599633A11AF0789E76DEFE8F1892C0C9677C1F9A23F37E55C8E308A9359D82DFED9E89</stationID>
+ <name>Europe 1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107359964227F2A1F09665E2F20C8CAF9E9F206871BB30BAB79B01A2A5B4621EA0ED662DB7</stationID>
+ <name>FIP Paris</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107359965712D7D9058F5897F24C5621F50761856CF7ADED4BDD1407B04A743EA9FAA35931</stationID>
+ <name>France info</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10735996726DA481AAF1324FB56F54C5B6277E975C49CA1D7699B3A768CB6B896DD531AB8C</stationID>
+ <name>RTL 2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10735996836ADDD396D0A0EC225385A3F20341AFEA2FA97236CD15AF6BDF5BFA6F94A1FAD7</stationID>
+ <name>Fréquence Paris plurielle</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1073599694D2FB508DC0820A23FC128F232B4F01A133B00C17D9B1BED629ADD0316782F0C8</stationID>
+ <name>Beur FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1073599703ADD422390FF18E5F850856E26F10245E09B907088EA18E863662B9FE7BB74671</stationID>
+ <name>France bleu</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1073599719F08E63846D03170305890930422D97118D063C8BD79F0F64CDA640ABFDC8E3C5</stationID>
+ <name>Africa n°1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10735997434D6E5EE65B860F5B72BFB541AB96BF1B15484D0D4A82CD6AC8F00CE067E7C5D0</stationID>
+ <name>107.7 FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.7</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/france/rennes.krp b/kradio3/presets/france/rennes.krp
new file mode 100644
index 0000000..58514b2
--- /dev/null
+++ b/kradio3/presets/france/rennes.krp
@@ -0,0 +1,223 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Fran�is-Xavier Payet, &lt;Francois-Xavier.Payet@ens.insa-rennes.fr&gt;</maintainer>
+ <changed>2005-02-07T17:13:18</changed>
+ <country>France</country>
+ <city>Rennes</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1107790414F72F9D60485BCD8324B1B38FE66FB6E04F41DA839D071A336F72CE3E95F620ED</stationID>
+ <name>France Inter</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11077905923D40F8AA02969477F4A1190EBFF8D2CBCE899FCAE0369BD99AFDC799D14DA636</stationID>
+ <name>RTL2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11077911087F7804860F4E9A07E10693A82304760460C6E4D611B968D3AB71D6E08ADFBBB1</stationID>
+ <name>France Info</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110779061839358C0A661F131A88BA40ECCCDE4371505E7F79A57ED917BA7F73D386E55CFA</stationID>
+ <name>Europe 2 / Fr�uence Rennes</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11077906424FA311AE28C39C7ACBE7721351E4751B62B3C932312E3B5C71F639CCC90643AE</stationID>
+ <name>Skyrock</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107790653AD27882D2B3DAA2EBD88D3115FE23E6E6E60BBE8BCDA6473190AC23A3FA5B63F</stationID>
+ <name>France Musique</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107790664492B8045B06A67F98CF53E0CC30944ECB83D815BF2EC1C097E01391F976B9415</stationID>
+ <name>Caroline</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110779084992F40A4CD09FDAAB8FB1C70EA37EAA1E674B1CBE54DA090D735C908F62793BAA</stationID>
+ <name>Radio Classique</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11077908761B8547A424B15AB00A27BB431AC893C2DBA196DDB627FBE6DE52846D6610BBF8</stationID>
+ <name>Canal B</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110779090774F75729C25D35DE588D361694ECDA4C34B8E3AA7BCF8C3DE2F330E730EA9767</stationID>
+ <name>Fun Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107790921BB77FAD4D783653BC3F2A7A1DDC918105526DA9FD0B3BB85FD50079FF35DFEE9</stationID>
+ <name>RCF Alpha</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110779093660858A27B639DEF5836623135EDFD705331546DF526666243658F958937C40D4</stationID>
+ <name>RFM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107790955CAD4BB17702B5E6207D18A042A9E2B6A101A54174C1616446F7092D3BDBA8E01</stationID>
+ <name>Nostalgie</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107790978CE96BF8F631EE7E4CE215B02634F2F7BD5DCE49155A9C41E89C758A43D007E53</stationID>
+ <name>France Culture</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11077909948D502EF971B0DAB23692EDB6FE73DAE60244499722C6351ABA2EFA49B4C71533</stationID>
+ <name>Fr�uence �le</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110779100968E47B46C84FDD9B9A66CA00E68090E453403889E0B092825620887FE228F87B</stationID>
+ <name>Radio Rennes</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107791023CA8511513672AA36383F2DAAD4C8ADF7A3C388E9CC6343063ADE7B707AA3ECF0</stationID>
+ <name>France Bleue Armorique</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107791073FB4C861B0CB34C3075DFC5B0EE73A0CA7FBB62BC25463856E15AB97EC2093F35</stationID>
+ <name>NRJ</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107791085FF2614789527B02068EDDDAEBBCF8DC5A4522AD5A075F191B5D3F847D7AAD83D</stationID>
+ <name>RTL</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11077910962DD0C27A373D4DEFB2D9AD6A44907CD06BAFE73BD9FED318B053A4A9C7571E9B</stationID>
+ <name>Europe 1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107791124C415F30C160AB92BC7E07134332B7575209BBB5F6C04E800FC04785D3D6EA22B</stationID>
+ <name>RMC</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107791133CACAF8AD5BE40E642591FDAE0B8DC18C6D6F0BCAB0F6C4175D1D2015D58782D4</stationID>
+ <name>Ch�ie FM / Cit�/name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107791147EB733C9194A6CBEAFB1540F22B9A5D531EAF10FAC6145C325B6A4BDE838AE902</stationID>
+ <name>Le Mouv&apos;</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.3</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
diff --git a/kradio3/presets/germany/Makefile.am b/kradio3/presets/germany/Makefile.am
new file mode 100644
index 0000000..677375c
--- /dev/null
+++ b/kradio3/presets/germany/Makefile.am
@@ -0,0 +1,244 @@
+SUBDIRS =
+EXTRA_DIST = "aachen-antenna.krp" "aachen-cable-2.krp" "aachen-cable-3.krp" "aachen-cable.krp" "aichach-cable.krp" "aschaffenburg-cable.krp" "augsburg-cable.krp" "berlin-adlershof-antenna.krp" "berlin-antenna.2.krp" "berlin-antenna.krp" "berlin-cable.2.krp" "berlin-cable.krp" "bielefeld-cable.krp" "bochum-cable.krp" "bonn-antenna.krp" "bottenhorn-antenna.krp" "braunschweig2-cable.krp" "braunschweig-cable.krp" "bremen-cable.krp" "bremerhaven-antenna.krp" "bruchkoebel-cable.krp" "chemnitz-cable.krp" "cologne-cable-2.krp" "cologne-cable.krp" "cologne.krp" "dortmund-cable-2.krp" "dortmund-cable.krp" "dresden-cable.krp" "duesseldorf-cable.krp" "duesseldorf.krp" "emsdetten-cable.krp" "erfurt-cable.2.krp" "erfurt-cable.krp" "erlangen-cable.krp" "erlensee-cable.krp" "erwitte-lippstadt.krp" "essen-cable.krp" "fischbachau-cable.krp" "freiburg-cable.krp" "gelsenkirchen-cable.krp" "gerolsbach-cable.krp" "hamburg-antenna.krp" "hamburg-cable1.krp" "hamburg-cable-2.krp" "hamburg-cable2.krp" "hamburg-cable-3.krp" "hamburg-cable3.krp" "hamburg-cable4.krp" "hamburg-cable5.krp" "hamburg-cable.alternative.krp" "hamburg-cable.krp" "hanau-cable.krp" "hannover-antenna.krp" "hannover-cable.2.krp" "hannover-cable.krp" "heidelberg-cable.krp" "herzogenrath-cable.krp" "hilden-cable.krp" "ingolstadt-cable.krp" "juelich-cable.krp" "karlsruhe-cable.krp" "karlsruhe-noerdlicher-landkreis-cable.krp" "kiel-antenna.krp" "kirchzarten-cable.krp" "klingenthal-antenna.krp" "koeln-antenne.krp" "koeln-cable.2.krp" "koeln-cable.krp" "koeln-loevenich-cable.krp" "langenfeld-cable.krp" "langenselbold-cable.krp" "leer-ostfriesland-cable.krp" "leichlingen-cable.krp" "leipzig-cable.2.krp" "leipzig-cable.krp" "lennestadt-cable.krp" "leverkusen-cable.krp" "ludwigsburg-antenna.krp" "luedenscheid-cable.krp" "maintal-cable.krp" "mainz-cable.krp" "mannheim-cable.krp" "meerbusch-struemp-cable.krp" "moenchengladback-cable.krp" "monheim-cable.krp" "muenchen-2.krp" "muenchen-antenna.krp" "muenchen-cable-2.krp" "muenchen-cable.krp" "muenchen-forstenried-antenna.krp" "muenchen.krp" "muenster-cable.krp" "muenster.krp" "muensterland-antenna.krp" "neuberg-cable.krp" "neuoetting.krp" "nuernberg-cable-2.krp" "nuernberg-cable.krp" "oldenburg-cable.krp" "olpe-antenna.krp" "owen-cable.krp" "pfaffenhofen-ilm-cable.krp" "rheine-mesum-antenna.krp" "rodenbach-cable.krp" "saarbruecken-antenna.krp" "schifferstadt-cable.krp" "schwerte-cable.krp" "st.georgen-cable.krp" "stuttgart-cable-2.krp" "stuttgart-cable.krp" "tuebingen-cable.krp" "ulm-cable.2.krp" "ulm-cable.krp" "weilheim-iOB.krp" "weingarten-cable.krp" "weinstadt-beutelsbach-cable.krp" "wernigerode-antenna.krp" "worfelden-cable.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/"
+ $(INSTALL_DATA) "$(srcdir)/weilheim-iOB.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/weilheim-iOB.krp"
+ $(INSTALL_DATA) "$(srcdir)/moenchengladback-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/moenchengladback-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/bremerhaven-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/bremerhaven-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/muenchen-2.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/muenchen-2.krp"
+ $(INSTALL_DATA) "$(srcdir)/weingarten-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/weingarten-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/hamburg-cable3.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/hamburg-cable3.krp"
+ $(INSTALL_DATA) "$(srcdir)/aichach-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/aichach-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/ingolstadt-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/ingolstadt-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/karlsruhe-noerdlicher-landkreis-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/karlsruhe-noerdlicher-landkreis-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/muenchen.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/muenchen.krp"
+ $(INSTALL_DATA) "$(srcdir)/chemnitz-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/chemnitz-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/duesseldorf.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/duesseldorf.krp"
+ $(INSTALL_DATA) "$(srcdir)/pfaffenhofen-ilm-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/pfaffenhofen-ilm-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/worfelden-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/worfelden-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/leer-ostfriesland-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/leer-ostfriesland-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/leipzig-cable.2.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/leipzig-cable.2.krp"
+ $(INSTALL_DATA) "$(srcdir)/muenchen-cable-2.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/muenchen-cable-2.krp"
+ $(INSTALL_DATA) "$(srcdir)/erlangen-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/erlangen-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/hanau-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/hanau-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/hamburg-cable-3.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/hamburg-cable-3.krp"
+ $(INSTALL_DATA) "$(srcdir)/saarbruecken-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/saarbruecken-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/koeln-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/koeln-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/bonn-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/bonn-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/nuernberg-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/nuernberg-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/langenfeld-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/langenfeld-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/augsburg-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/augsburg-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/herzogenrath-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/herzogenrath-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/cologne-cable-2.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/cologne-cable-2.krp"
+ $(INSTALL_DATA) "$(srcdir)/ulm-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/ulm-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/muenster-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/muenster-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/meerbusch-struemp-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/meerbusch-struemp-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/hamburg-cable-2.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/hamburg-cable-2.krp"
+ $(INSTALL_DATA) "$(srcdir)/schifferstadt-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/schifferstadt-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/olpe-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/olpe-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/dresden-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/dresden-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/hamburg-cable5.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/hamburg-cable5.krp"
+ $(INSTALL_DATA) "$(srcdir)/lennestadt-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/lennestadt-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/monheim-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/monheim-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/kirchzarten-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/kirchzarten-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/hamburg-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/hamburg-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/berlin-cable.2.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/berlin-cable.2.krp"
+ $(INSTALL_DATA) "$(srcdir)/aschaffenburg-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/aschaffenburg-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/dortmund-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/dortmund-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/braunschweig-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/braunschweig-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/oldenburg-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/oldenburg-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/berlin-antenna.2.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/berlin-antenna.2.krp"
+ $(INSTALL_DATA) "$(srcdir)/hamburg-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/hamburg-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/owen-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/owen-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/ulm-cable.2.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/ulm-cable.2.krp"
+ $(INSTALL_DATA) "$(srcdir)/luedenscheid-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/luedenscheid-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/duesseldorf-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/duesseldorf-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/hamburg-cable1.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/hamburg-cable1.krp"
+ $(INSTALL_DATA) "$(srcdir)/bremen-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/bremen-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/schwerte-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/schwerte-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/leipzig-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/leipzig-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/st.georgen-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/st.georgen-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/tuebingen-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/tuebingen-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/karlsruhe-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/karlsruhe-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/erfurt-cable.2.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/erfurt-cable.2.krp"
+ $(INSTALL_DATA) "$(srcdir)/aachen-cable-2.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/aachen-cable-2.krp"
+ $(INSTALL_DATA) "$(srcdir)/koeln-loevenich-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/koeln-loevenich-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/langenselbold-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/langenselbold-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/muenchen-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/muenchen-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/muenchen-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/muenchen-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/weinstadt-beutelsbach-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/weinstadt-beutelsbach-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/berlin-adlershof-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/berlin-adlershof-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/wernigerode-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/wernigerode-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/neuoetting.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/neuoetting.krp"
+ $(INSTALL_DATA) "$(srcdir)/juelich-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/juelich-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/fischbachau-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/fischbachau-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/stuttgart-cable-2.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/stuttgart-cable-2.krp"
+ $(INSTALL_DATA) "$(srcdir)/gelsenkirchen-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/gelsenkirchen-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/muensterland-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/muensterland-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/leverkusen-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/leverkusen-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/berlin-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/berlin-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/muenster.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/muenster.krp"
+ $(INSTALL_DATA) "$(srcdir)/erfurt-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/erfurt-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/mannheim-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/mannheim-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/erlensee-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/erlensee-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/heidelberg-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/heidelberg-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/bielefeld-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/bielefeld-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/bottenhorn-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/bottenhorn-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/erwitte-lippstadt.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/erwitte-lippstadt.krp"
+ $(INSTALL_DATA) "$(srcdir)/cologne.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/cologne.krp"
+ $(INSTALL_DATA) "$(srcdir)/koeln-antenne.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/koeln-antenne.krp"
+ $(INSTALL_DATA) "$(srcdir)/mainz-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/mainz-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/neuberg-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/neuberg-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/bochum-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/bochum-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/dortmund-cable-2.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/dortmund-cable-2.krp"
+ $(INSTALL_DATA) "$(srcdir)/nuernberg-cable-2.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/nuernberg-cable-2.krp"
+ $(INSTALL_DATA) "$(srcdir)/leichlingen-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/leichlingen-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/ludwigsburg-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/ludwigsburg-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/cologne-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/cologne-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/braunschweig2-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/braunschweig2-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/emsdetten-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/emsdetten-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/aachen-cable-3.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/aachen-cable-3.krp"
+ $(INSTALL_DATA) "$(srcdir)/freiburg-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/freiburg-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/maintal-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/maintal-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/hannover-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/hannover-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/hannover-cable.2.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/hannover-cable.2.krp"
+ $(INSTALL_DATA) "$(srcdir)/rodenbach-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/rodenbach-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/gerolsbach-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/gerolsbach-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/hannover-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/hannover-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/stuttgart-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/stuttgart-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/hamburg-cable.alternative.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/hamburg-cable.alternative.krp"
+ $(INSTALL_DATA) "$(srcdir)/koeln-cable.2.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/koeln-cable.2.krp"
+ $(INSTALL_DATA) "$(srcdir)/klingenthal-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/klingenthal-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/hamburg-cable2.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/hamburg-cable2.krp"
+ $(INSTALL_DATA) "$(srcdir)/aachen-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/aachen-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/bruchkoebel-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/bruchkoebel-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/hilden-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/hilden-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/aachen-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/aachen-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/hamburg-cable4.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/hamburg-cable4.krp"
+ $(INSTALL_DATA) "$(srcdir)/kiel-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/kiel-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/berlin-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/berlin-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/rheine-mesum-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/rheine-mesum-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/muenchen-forstenried-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/muenchen-forstenried-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/essen-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/essen-cable.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/weilheim-iOB.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/moenchengladback-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/bremerhaven-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/muenchen-2.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/weingarten-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/hamburg-cable3.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/aichach-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/ingolstadt-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/karlsruhe-noerdlicher-landkreis-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/muenchen.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/chemnitz-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/duesseldorf.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/pfaffenhofen-ilm-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/worfelden-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/leer-ostfriesland-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/leipzig-cable.2.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/muenchen-cable-2.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/erlangen-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/hanau-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/hamburg-cable-3.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/saarbruecken-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/koeln-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/bonn-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/nuernberg-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/langenfeld-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/augsburg-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/herzogenrath-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/cologne-cable-2.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/ulm-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/muenster-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/meerbusch-struemp-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/hamburg-cable-2.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/schifferstadt-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/olpe-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/dresden-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/hamburg-cable5.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/lennestadt-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/monheim-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/kirchzarten-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/hamburg-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/berlin-cable.2.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/aschaffenburg-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/dortmund-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/braunschweig-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/oldenburg-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/berlin-antenna.2.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/hamburg-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/owen-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/ulm-cable.2.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/luedenscheid-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/duesseldorf-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/hamburg-cable1.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/bremen-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/schwerte-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/leipzig-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/st.georgen-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/tuebingen-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/karlsruhe-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/erfurt-cable.2.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/aachen-cable-2.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/koeln-loevenich-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/langenselbold-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/muenchen-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/muenchen-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/weinstadt-beutelsbach-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/berlin-adlershof-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/wernigerode-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/neuoetting.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/juelich-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/fischbachau-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/stuttgart-cable-2.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/gelsenkirchen-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/muensterland-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/leverkusen-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/berlin-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/muenster.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/erfurt-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/mannheim-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/erlensee-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/heidelberg-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/bielefeld-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/bottenhorn-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/erwitte-lippstadt.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/cologne.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/koeln-antenne.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/mainz-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/neuberg-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/bochum-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/dortmund-cable-2.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/nuernberg-cable-2.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/leichlingen-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/ludwigsburg-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/cologne-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/braunschweig2-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/emsdetten-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/aachen-cable-3.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/freiburg-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/maintal-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/hannover-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/hannover-cable.2.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/rodenbach-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/gerolsbach-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/hannover-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/stuttgart-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/hamburg-cable.alternative.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/koeln-cable.2.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/klingenthal-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/hamburg-cable2.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/aachen-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/bruchkoebel-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/hilden-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/aachen-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/hamburg-cable4.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/kiel-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/berlin-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/rheine-mesum-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/muenchen-forstenried-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/germany/essen-cable.krp"
diff --git a/kradio3/presets/germany/aachen-antenna.krp b/kradio3/presets/germany/aachen-antenna.krp
new file mode 100644
index 0000000..8520d54
--- /dev/null
+++ b/kradio3/presets/germany/aachen-antenna.krp
@@ -0,0 +1,262 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Jens Hektor, &lt;hektor@rz.rwth-aachen.de&gt;</maintainer>
+ <changed>2003-07-07T07:05:07</changed>
+ <country>Germany</country>
+ <city>Aachen</city>
+ <media>antenna</media>
+ <comments>not all stations named, some are weak at my site</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385351E92938030A82333E9372C7B2A6E2769DF6CE132917FF7F4384E9EEA7DA8510B0</stationID>
+ <name>Eins Live</name>
+ <shortname>Eins Live</shortname>
+ <icon></icon>
+ <frequency>106.427</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853516D1812743616056350A3293CA44D0FAE7DA487C52CC1CB00EA96B784F1B02A1A</stationID>
+ <name>WDR 2</name>
+ <shortname>WDR 2</shortname>
+ <icon></icon>
+ <frequency>100.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535148E46B22EB9A1C1E9E0F5899DD535A44388619BFE9D83D9458D6118526A31074</stationID>
+ <name>WDR 3</name>
+ <shortname>WDR 3</shortname>
+ <icon></icon>
+ <frequency>95.9375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351BF73B6ABF7026FF2FA0562593A6AB2CDF0F0922C5EE96A2F0BCC5A7EAC58FD65</stationID>
+ <name>WDR 4 (schwach)</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>93.7266</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535109A0E4910069F56BCC0B5658EF0F5595445801BACA39AC137452A21960BB910C</stationID>
+ <name>WDR 5</name>
+ <shortname>WDR 5</shortname>
+ <icon></icon>
+ <frequency>101.938</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535123549D860C17E90266FD0F73B9D4FC33C9D7B43752EB2FCC9D8974EAC03E516E</stationID>
+ <name>100,1</name>
+ <shortname>100,1</shortname>
+ <icon></icon>
+ <frequency>100.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351DF8CAE3DF17D9C731B067D4A4E015B60F7B2A63DBE1E4FC5A36995BCE40B22E2</stationID>
+ <name>100,5 Das Hitradio</name>
+ <shortname>100,5</shortname>
+ <icon></icon>
+ <frequency>100.502</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351DA411FE39AFD9408202EB953CEFFB5E24EC002942CF62EA8527C149E74E8B689</stationID>
+ <name>107,8 Antenne AC</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>107.802</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853511605948331D5345831F813D63BDB253FD72DD529B25673FFF5A38D00ACDA707E</stationID>
+ <name>Hitradio Kontakt</name>
+ <shortname>Hitradio Kontakt</shortname>
+ <icon></icon>
+ <frequency>107.027</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351A7C759D28C8E12DC913381C50A8A7206F3B8456C5168CF8CEF8A6D39116A4319</stationID>
+ <name>Deutschland Radio Berlin</name>
+ <shortname>Deutschland Radio Berlin</shortname>
+ <icon></icon>
+ <frequency>104.227</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351F6AAE5172E3C1D3F6BC5E80271CC07A06B794539C17932CAC9E08677602A65E2</stationID>
+ <name>SWR 3</name>
+ <shortname>SWR 3</shortname>
+ <icon></icon>
+ <frequency>91.8765</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351C94253137811D2518DBFE5BDB974AC85B9D28C5C2582A0FB5D10A88DC7293811</stationID>
+ <name>RBR 2</name>
+ <shortname>RBR 2</shortname>
+ <icon></icon>
+ <frequency>88.2762</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351BF9413181A3F398F1EB300F2D3F40CB1FCD436AC327F2BF16C540222B8667C4D</stationID>
+ <name>RTL Radio</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <frequency>90.3764</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351600195D381CA54B84AB37771A6AE4005DA2E2FDEF9F238FD72D8E790BF7CFEC3</stationID>
+ <name>RSK</name>
+ <shortname>RSK</shortname>
+ <icon></icon>
+ <frequency>95.3767</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853515594748CCE34F4C6A161E73C28358C4C1C9EBBF08F59FC2E4B176A810A034CB4</stationID>
+ <name>Jazz City?</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>97.4768</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351BC2B395BF983E14B038D33E6F33F7F6DF3771D93705B271E3062570CBDCBAA36</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>Deutschlandfunk</shortname>
+ <icon></icon>
+ <frequency>102.702</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853516AE9D80C8B0E2403911C4CC9E4340DA4E6E2C9073FCEAFAB44A8170214A6245D</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Radio Melodie</shortname>
+ <icon></icon>
+ <frequency>102.302</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853510BC665F31AB91F0A9029A2A494E678A1CA7C466177097C42CD63EBABEFA744F0</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik Radio</shortname>
+ <icon></icon>
+ <frequency>87.6012</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351C2EC6AB20C5E8F0B2DFF58467F66ABEC9BC56AEB91616A9A82931842377C6BC6</stationID>
+ <name>stumm 1</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>70.9754</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535176DDADE520AAB9A9B0179A58F6ED71D33195B1E7E1E238D7CED3D3D783E145C3</stationID>
+ <name>stumm 2</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>80.1007</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351E629629013B17A00B1C49FEA92D82B547A196094FD36AFEBE13D9379131BFC94</stationID>
+ <name>Eins Live (schwach)</name>
+ <shortname>Eins Live</shortname>
+ <icon></icon>
+ <frequency>88.7763</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351DD51D2FC85B7FD9FE47E6AC8DD01FD579A980A53CFC1AFA1BE7A50C2CA2BEA2D</stationID>
+ <name>100,1 (schwach)</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>87.8262</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853518C38507250DEC7FDE6831DB5C6165EC38BB705ECCC6F9C2696577DD1EC6B7448</stationID>
+ <name>WDR 5 (schwach)</name>
+ <shortname>WDR 5</shortname>
+ <icon></icon>
+ <frequency>90.8764</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853515E2F82A266241308A3C0239513C8ABD2E54D116D8238F77301A8C9E66D5CCA9C</stationID>
+ <name>WDR 3 (schwach)</name>
+ <shortname>WDR 3</shortname>
+ <icon></icon>
+ <frequency>91.2764</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853519C234FA64348348EEA03941527AFAAF6377E0A73A3762A4666C74ED134C6DB90</stationID>
+ <name>englisch - new station 19</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>94.9016</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853512EF484E18C570B9AE1ADE13C2684F480C7922CC254B6DE7BFBA0DE83FCDEF2DA</stationID>
+ <name>nl - rock new station 12</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>90.1013</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853516917AEB5EF08738573DCEA32E2760C878C2F76E21C2ED50525D78F6D0A048C32</stationID>
+ <name>nl - new station 22</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>96.3767</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535199ED79B49E1F8EA47F4C303BC2354A801B64B7F304DC03407657299E68566900</stationID>
+ <name>nl - new station 23</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>96.7768</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853519A02054A568CFDE076602C022D63F87B20DB5BBB147D4F75CEFF42E59B2AD380</stationID>
+ <name>nl - new station 30</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>101.427</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351C08462B179A439E5671CBF6B0F5DFEE142FECA5113FFA03B065FC2FB4C87143E</stationID>
+ <name>nl - pop new station 36</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>103.927</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535121BA3EF86D710AAB6DFDF07AB54693831513FDF6B88701774C7F3A75961CE1FF</stationID>
+ <name>nl - new station 38</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>105.302</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/aachen-cable-2.krp b/kradio3/presets/germany/aachen-cable-2.krp
new file mode 100644
index 0000000..289c9e8
--- /dev/null
+++ b/kradio3/presets/germany/aachen-cable-2.krp
@@ -0,0 +1,303 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Rudolf Mattner &lt;info@rudolfmattner.de&gt;</maintainer>
+ <changed>2004-10-11T17:31:47</changed>
+ <country>Germany</country>
+ <city>Aachen</city>
+ <media>cable</media>
+ <comments>got data from http://rincewind.rol3.com/service/prod/puek/
+verfueg.php</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1116455444FD809522888DF52778901DB9FFE7F453C83FC3B3536C8F04143261A3FED0171F</stationID>
+ <name>Eins Live</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554441953AA19CE120E85AA64C06452A6E03F335CB211C42E75FD66FA3CF10C80D704</stationID>
+ <name>WDR 2 - Aachen</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>92.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544487F2C8E548F43C109AADA0AC1A1E70C5531074A444173278383D2F9A9A95CB2F</stationID>
+ <name>WDR 3</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>91.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444C119C82951BF8DEAD8E589B31398F09751FFB32589046623CE202608F9EEA816</stationID>
+ <name>WDR 4</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>89.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544414E755E9AE01F45B5B4DD0699FBC95456CE5D6E3980607464B6469BA548C3E65</stationID>
+ <name>WDR Radio 5</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>90.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444DC7CD50A8782E6AEDDA65EDEFF02623ECBE7B8667817001ADD8F33C64CD43E9F</stationID>
+ <name>WDR Radio 5 Funkhaus Europa</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>106.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444B4CB734BC751DB18F993824BB551747A31E29C6E9234A0AE9F2CC91EA388CEE4</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>100.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544427CCDED560DC532B6364FFEAAE4B9E676850CB04C09A2EF688CB21B566A1CC64</stationID>
+ <name>Deutschlandradio Berlin</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544445B661F1EB980F9F61D3D1C5DEABD1CE3C732399F8487C47CB718DB9A8912F9E</stationID>
+ <name>Klassikradio</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>87.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444213718E33123FC1B39FEB27DCDCD7BD07BA6E45EEF08203EC54819C92410AE6E</stationID>
+ <name>SWR1 - Rheinland-Pfalz</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>99.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444A11A19CFB8F0ABDCDF12AC70C486A3CFC247783650BE0B840FD6C178110D8B7C</stationID>
+ <name>SWR3</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>91.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444C51E2E8510861CDB4C59453047DCAC0B487904A6464770190D1C8B2542F31C90</stationID>
+ <name>SWR4 - Rheinland</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>93.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554443EAEDBF3BFB5FD49DC7C5F3EB38BDCD51CDFAEC17DC8F076EE9E909BE5FBE50E</stationID>
+ <name>RPR2</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>88.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554443664E6DAA889182A7521C4093B8C54626CD21B6962B9709F860A38B67F1D6964</stationID>
+ <name>RPR1 - Rheinland</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>105</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444DCF5933183EF7043559B440FEBFBC33486964B057010390B98F454007D12305D</stationID>
+ <name>Antenne AC</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>103.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444E1A48D11C0B7926B966067EAD5D7DE580BEA025F0EB2A9565BA5B103DD062EC4</stationID>
+ <name>Radio Aachen</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>87.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444C810F2E2D6FD5D216001473E25A48F370275CACEEB16A3A88B6F516A254A9592</stationID>
+ <name>100,5 DAS HITRADIO</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>104.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554446441F6F45A70008D8D3A0F41F76C7536234A1F82F1CFEB5F688CFE80E0F1A1F0</stationID>
+ <name>BFBS</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>94.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544420E85C5F214A393EE81286AB271D944720F6B914ED74E389B2E2185BAE9A7F68</stationID>
+ <name>Belgischer Rundfunk (deutsch)</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>97.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444C659E2848E311EE5FF26D8A2A7F4608F4F6C4C66BE507CED34CA3A0C7EBF99E8</stationID>
+ <name>VRT RA 1</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>107.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444C4440E172858DCBABFF5EB01C5D55F23AAECDBF7211D479E3D722AC9F4105C84</stationID>
+ <name>VRT RA 2</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>106.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444B93D8B0EF4B4943276ECB7675F03E76B5AEE3F7E6E58260CFA6B826A2C1DADB4</stationID>
+ <name>VRT RA 3</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>96.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444C74BD010657D65DC1AA4E4F975EFD0BD282AC10AF5D5758C12F75C6427616F5E</stationID>
+ <name>NL1</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>96.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544435E634C61457A9F0BBB92BC2E6E08F1D38E67CA75D25E47872A1AD867FFC99BA</stationID>
+ <name>NL2</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>90.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554442D38FE503C546BF13FEBB4DA2B38377C3239704F141A8ABFD8CC23E220315E9F</stationID>
+ <name>NL3</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>93.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444B7F2B5B026B4D008A6DF8C55F4EDB4C68BD6F42BFB3F5C9368D8E3B8B0AE7393</stationID>
+ <name>NL4</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>95.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444CF30228E0345A30EF963BC878E261D3F5F468F80CBF346D3E0E34D8A989A3B45</stationID>
+ <name>RTBF - Frequence Wallonie</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>101.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444D669C02933B5D847C5566EACEEEFD947193A6752C0CD38370BC17F52F4AABAB7</stationID>
+ <name>RTBF - Musique Trois</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>101.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444B53BBBA62ABCF27F6F45B491E8F925BF657BE560330D249F3368E07407F8D882</stationID>
+ <name>RTBF - Radio 21</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>102.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544411E54289D3B78443DB4A923EFBAE52A61D6AFB0D6C6D0E224E488F4B4A10C3C5</stationID>
+ <name>JAM-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>97.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554444B906ABF17705A577A82CD7E2C43464DAAD5AFA4B4EFB3689F222F4CC8775454</stationID>
+ <name>sunshine live</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>92.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444A3FF980E2882FA6CBE48EEB7121D811CB2424C5F04B27B0D4EA50915DFBE9135</stationID>
+ <name>Radio Contact Eupen</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>99.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444C72FB001943DF7A11ED1C1C19CE5F5873323FEFD5F8AB52710A573F8F7FA141F</stationID>
+ <name>Radio Fantasy Raeren</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>105.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554449B032BC35E74E8E29AECB403795BEF357EEB2059A77E53BE604DD758337867A1</stationID>
+ <name>Radio Melodie - Heimatfunk mit Herz</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>102.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544408AC82B79382FCB268BF8C2FF06FB62471DF05A5B2479761C9925F2889B89720</stationID>
+ <name>Radio Ostbelgien</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>95.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554441B00F6944DBF43BBE5F45C4557EA2CBDABF7064A053E099AB6292751614B21C9</stationID>
+ <name>RTL - Der Oldie-Sender</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>90.375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/aachen-cable-3.krp b/kradio3/presets/germany/aachen-cable-3.krp
new file mode 100644
index 0000000..4e1b8a0
--- /dev/null
+++ b/kradio3/presets/germany/aachen-cable-3.krp
@@ -0,0 +1,303 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>DC Grey, &lt;dcgrey000@mac.com&gt;</maintainer>
+ <changed>2003-01-16T01:42:00</changed>
+ <country>Germany</country>
+ <city>Aachen</city>
+ <media>cable</media>
+ <comments>got data from
+http://rincewind.rol3.com/service/prod/puek/verfueg.php</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1133103256706261D5BB5A85E4918F15B13BF4BC8A3C0D6199754405C5AABD32563F605E7E</stationID>
+ <name>Eins Live</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256AFE4E0E70BB147CADCD7F1FCF930A75BF31253CE823A220DF5E32796DFA0C85F</stationID>
+ <name>WDR 2 - Aachen</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>92.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256B2B3E97A822CA95A84C9D0DC002434ED0D3AEF48AD731728EE05FAA8F3752B3B</stationID>
+ <name>WDR 3</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>91.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032565436C302E091E3B0B3186FF684283BCA6367A15A908E59F7AD6F8D0334380B5F</stationID>
+ <name>WDR 4</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>89.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113310325637D89BE66BF4A5FF0C803BCAD9B428FA2557641845A08790B6FA8D233D2E3ED7</stationID>
+ <name>WDR Radio 5</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>90.85</frequency>
+ <volumepreset>0</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032565E055932B8BE000393276C46393272347CCEC836D6F52CCBC1B144070769B04F</stationID>
+ <name>WDR Radio 5 Funkhaus Europa</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>106.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032565CF58654F1C7672370EF21D5BCB07AE51FA0ECD934A59472C16599294EE1F01A</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>100.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256EF0D8DB01D9590AA6B166FAD9E79223127FDF098FD1254913425FAB2FF3CA459</stationID>
+ <name>Deutschlandradio Berlin</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256DE9B610FA4A292ED40548E699475AF2B30F17D94995B75661D029296C4F9E1FF</stationID>
+ <name>Klassikradio</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>87.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032568D602F9AD37D0B344EBF9402DD587322CA862598D4C1539B260F1376A22C41A5</stationID>
+ <name>SWR1 - Rheinland-Pfalz</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>99.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256DCAEA87A252F17B53EA9653469AF817B38FE2368122A58A63219B75A0499BA4C</stationID>
+ <name>SWR3</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>91.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032565FA8EBDD845DEA761C333D9C6C56D98D6CC9415AA74904C8F90D77AA137B75C4</stationID>
+ <name>SWR4 - Rheinland</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>93.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113310325636F67222FDF5B9DEA44840C790B0E1B4B3E52D1001DAAD8D2F7F962F5E8B58F6</stationID>
+ <name>RPR2</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>88.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032561F2102E49DC2AC93AB53D00D508930EF76B2B17E59418A41BE298FB20EF722EC</stationID>
+ <name>RPR1 - Rheinland</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>105</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256FF75EAABCDB48A073D2F27A9FA1547BEF6326147B10B247B2EB00D79BA479A84</stationID>
+ <name>Antenne AC</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>103.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256CE36CCA6123EA9576E945B2987168899609EF4D98544FFDDBD734BAC76991F2D</stationID>
+ <name>Radio Aachen</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>87.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113310325693EF2DC67CD2C07007814215DD7942F44680B62E5FD65325277C8CE1B905A044</stationID>
+ <name>100,5 DAS HITRADIO</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>104.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256D6035112A87F97E92504BBE462EB28E1167A3AB30B3A4827E1100124C180EF5B</stationID>
+ <name>BFBS</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>94.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256F2C0C5C01FD3C1E3E6C8B2D0C431DA41D1A54E55101FC5F4A8CAB774CD77F486</stationID>
+ <name>Belgischer Rundfunk (deutsch)</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>97.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256D0C9F32F4D65E74EB363913616020856B067A0D53F7C383D107910840A0C657F</stationID>
+ <name>VRT RA 1</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>107.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032562C8499737D2ECBE7BE40D365CC7A800CAD62F076CCAA44816289FA34AC4E4D17</stationID>
+ <name>VRT RA 2</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>106.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032569D8FBFD647F79C470007025678BE676DB2880F34E2DE5A70A5A9222282334E49</stationID>
+ <name>VRT RA 3</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>96.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256462135D1A12B01479EB988FD04785F80EB1FE7778CE92455B3E3276BAEE40F7C</stationID>
+ <name>NL1</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>96.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256A628CD998914566600457BB02BBB8DB9F7CF14F1767445D39AA9D625A3CC8287</stationID>
+ <name>NL2</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>90.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032561B4944EA68B876EFE898E406BD4272CB009E9B08D45D84B43E67D8E388F2B775</stationID>
+ <name>NL3</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>93.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256AF3F59B9A7EF8735BE9C3E602CDE5C2712AE2F1504B9C62B5315D7391E5DCE86</stationID>
+ <name>NL4</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>95.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256F9B551AFEC670EC89676E1079216068EFAA8DF5D51AAFC96093D5A967AE6A602</stationID>
+ <name>RTBF - Frequence Wallonie</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>101.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256190C5F8C637B0921F44A09DFBE8A9B1CBA1AA98F8FC120C2C70F7020D37D4EF9</stationID>
+ <name>RTBF - Musique Trois</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>101.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256B79AA82CB477E3BD2C68E627CAB948505FC49F4FAB82B0D628E3AF0497D36270</stationID>
+ <name>RTBF - Radio 21</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>102.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113310325613361755E2EF513CB09F814DA1C37218AC96C28870A26790745F1180CDDCB574</stationID>
+ <name>JAM-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>97.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256DEB97F388A8F188F7D8A22BC6AE07C2C7456BE82F1B86226F2C5AD04304392F1</stationID>
+ <name>sunshine live</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>92.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032560BD902DCD19C9F867ED4AE6E44DADD1415DA61C3ACB59B0679BEC11258ABE5B5</stationID>
+ <name>Radio Contact Eupen</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>99.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113310325655C4BFE6AB7457334ED2A43A9DDFD9E458EFC39876B88F13C93C264B05E7C8C0</stationID>
+ <name>Radio Fantasy Raeren</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>105.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256D9B3B4374A6B6C83CFB5887681B206CD6F6F3A46BE0F7198CA33299F1EF5A183</stationID>
+ <name>Radio Melodie - Heimatfunk mit Herz</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>102.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032568FBC6DE3BD3C6AF8365E5E1B8218CE2CA8765F4AE6E9BB1B7A74B3D1FEC54211</stationID>
+ <name>Radio Ostbelgien</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>95.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256D1D71769AD14DFDF2EBDE31E47BD7AA10CA5AE8AD4DA03A98A9FB48C1459B449</stationID>
+ <name>RTL - Der Oldie-Sender</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>90.375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/aachen-cable.krp b/kradio3/presets/germany/aachen-cable.krp
new file mode 100644
index 0000000..11184bb
--- /dev/null
+++ b/kradio3/presets/germany/aachen-cable.krp
@@ -0,0 +1,302 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Ernst Martin Witte, witte@kawo1.rwth-aachen.de</maintainer>
+ <changed>2003-01-16T01:42:00</changed>
+ <country>Germany</country>
+ <city>Aachen</city>
+ <media>cable</media>
+ <comments>got data from http://rincewind.rol3.com/service/prod/puek/verfueg.php</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853450C792B9B16ADE2E8B4662E585A1A2528B9BA87BB7EB2766107E43E75400E416F</stationID>
+ <name>Eins Live</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.750000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534500CF9EA62668E50F51BEA590DE2A32E4091AD95117F49DACD94FCE38F710D140</stationID>
+ <name>WDR 2 - Aachen</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>92.550003</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853456949D4D9A19F09E608852CD244DF234BD35285AFB0766F7A6CC63A884F822AE9</stationID>
+ <name>WDR 3</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>91.250000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853450F0C556DCB20717BEF390DBCD2D956DFE29139E76E1C3497A524F9B09CAEE874</stationID>
+ <name>WDR 4</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>89.349998</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853453BA79F3B140DECB8D773905E8DD2ECA4F49837DAEF961F43A00EE917200F7241</stationID>
+ <name>WDR Radio 5</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>90.849998</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534546E3DCA1DCBDC7E89789AA81AC4A9AF08AF775D280063147AB53E45D4ED3D429</stationID>
+ <name>WDR Radio 5 Funkhaus Europa</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>106.849998</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853450740D0754DB5859ACFBD8D76D06CE518DD5FC75E3CA259BAE78A5F6DA55B17B2</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>100.550003</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853458F7E3991BB61E0097316F10942981B8F9F88B72E46CBA6D8D565A83E76C0BC1A</stationID>
+ <name>Deutschlandradio Berlin</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>104.300003</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385345D5F86136AF62133A50398F2C4DB257AB298D86447AD4B78E452E186B238E975E</stationID>
+ <name>Klassikradio</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>87.550003</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385345E455F0C4D60CB9DB6FF8BB60D5C41A714DD26574B44A3CA657A57B835834AE79</stationID>
+ <name>SWR1 - Rheinland-Pfalz</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>99.599998</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385345B56C61404F554746CA7AB7D28AA4F303C22644B27CE91E454132CB9CE55E0630</stationID>
+ <name>SWR3</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>91.849998</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853455413FE0AAF7D4DC45EC6C62FF31625C17A668FB092701163D3B04D874E0DA8C9</stationID>
+ <name>SWR4 - Rheinland</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>93.449997</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853451963F157342914FE3B5F0FAB3B93C11F58C14FC966E852BAA5DB48BF7828D670</stationID>
+ <name>RPR2</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>88.250000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853451F0FF3610DBBEA9E6F85D3A33D4D3A340274E26F0BFC771106853A125DD144FC</stationID>
+ <name>RPR1 - Rheinland</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>105.000000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853450718851C2AA526326B522A3EDCE36D33B8128578E8C87FFB62D52ABDC50F7F3C</stationID>
+ <name>Antenne AC</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>103.800003</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534582EC4D0C14D2FA3DABA5EF9392500F2DA39A174D05888F703DBCAA9D130A1E21</stationID>
+ <name>Radio Aachen</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>87.849998</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385345B772E033CCF32287EE2EAB9C05BB27316C291FFC500B02AB1B91C0AB4EA44B3C</stationID>
+ <name>100,5 DAS HITRADIO</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>104.599998</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853455C17881B031ABDA55A34E9C27466B58DE7D30B33A42D1CE4D1B10E4FB0918F55</stationID>
+ <name>BFBS</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>94.849998</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534560B2BB8F69EF5C883C78A2F40E5ADF21BB19A458FB2B82433911F6FB8773801A</stationID>
+ <name>Belgischer Rundfunk (deutsch)</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>97.250000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853456A585CDE037AE2E3E20F96E4B916BF012B4746AD53D008676964FAD38937C6B7</stationID>
+ <name>VRT RA 1</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>107.650002</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534501EED104A25699AA574594C7E8DA380028023D3881D6A152BA706B3A6641490C</stationID>
+ <name>VRT RA 2</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>106.550003</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853456265DE281A88BF67B3F7F0ED267BE359A68C342551E612ABF52FB11052984749</stationID>
+ <name>VRT RA 3</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>96.750000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385345615B47F31FC2FA43DEC5299344D5E862F7FC24BC2AAC4AB9A2C68A0BCC623CB3</stationID>
+ <name>NL1</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>96.349998</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385345DF21275A04472B7DC51B61ECF18F6C16973A21E60AF014BDB13960397FA5E56D</stationID>
+ <name>NL2</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>90.050003</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534533F0527D83A53F822B169204BA18196A0ECA97F471314A6652778C927D75D5C8</stationID>
+ <name>NL3</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>93.750000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534561A21AD424D746C50A84E3959FBB7F45F34E48EBB61AB65ADC8CA539BC57DFEF</stationID>
+ <name>NL4</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>95.650002</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534592B818139913ECE9A5CB6379A1C8EF803A6406E4953366C8328776778A5D5CA6</stationID>
+ <name>RTBF - Frequence Wallonie</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>101.750000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385345FD377B3F4C0F85AF78148DBE2D3F4A360C9D62469F1ADFE5159AED6925A2BBEA</stationID>
+ <name>RTBF - Musique Trois</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>101.349998</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853451E22CFA271771000FCB4BCF8BE6078F89A7CE59C0B67882FE58765E8A4344FF9</stationID>
+ <name>RTBF - Radio 21</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>102.849998</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534539BDE51919EA26EBC9CC47CABCFC733398A3B08536BD6C52A335068783442109</stationID>
+ <name>JAM-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>97.550003</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534577E76206F8F7C5CC8DDAAFB768EEE45D2C8BAC6CF7A1F54BE095A21F759A2A6A</stationID>
+ <name>sunshine live</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>92.949997</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853453F150F309026F23335CCF4797F761AC2C422F9ED46A3A991B9A317710304AA5D</stationID>
+ <name>Radio Contact Eupen</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>99.150002</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534527472CFD7324710624A2E54E541206E989CD6AB86C74815F1596A7DC7ED72C60</stationID>
+ <name>Radio Fantasy Raeren</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>105.849998</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534504272A961C9D2074F9EC0D37D5EE3788815261FA72F09CACAD2415FE3E929040</stationID>
+ <name>Radio Melodie - Heimatfunk mit Herz</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>102.250000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385345C262A9FDB6741E47F7A69B0D6D16309C88EFA98ECCF4C0CB5A292B5B25100ED3</stationID>
+ <name>Radio Ostbelgien</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>95.349998</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385345903CE4A7AB8C5D59DAFE9F6B9DC80D41892013EC2DB93EC9CD52E718C3827A63</stationID>
+ <name>RTL - Der Oldie-Sender</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>90.375000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/aichach-cable.krp b/kradio3/presets/germany/aichach-cable.krp
new file mode 100644
index 0000000..a4725bc
--- /dev/null
+++ b/kradio3/presets/germany/aichach-cable.krp
@@ -0,0 +1,318 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Helmut Weymann &lt;Helmut.Weymann<at>web.de&gt;</maintainer>
+ <changed>2003-10-18T22:21:43</changed>
+ <country>Germany</country>
+ <city> Aichach, Augsburg</city>
+ <media>Cable</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106854594138350F110D4FB2FF6AC1E4FDBD329A06AB0924AA9136201BDC0EBBA9467E213B</stationID>
+ <name>Radio Galaxy</name>
+ <shortname>Galaxy</shortname>
+ <icon></icon>
+ <frequency>87.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10685459416F750EC6927D2F3EFA06F5BA597123011A41970DA1401D29A1578E64711902C0</stationID>
+ <name>sunshine live</name>
+ <shortname>sunshine</shortname>
+ <icon></icon>
+ <frequency>87.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10685459417C3C71D8A2BDBEEEC412DF53D5FCD1CEDEED40AC58AF92AD1CBF0550EDFA59E8</stationID>
+ <name>BR2 - Schwaben</name>
+ <shortname>BR 2</shortname>
+ <icon></icon>
+ <frequency>88.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068545941643647B2E0C93C4301634E630D61156E8FB6B222DCD46A2D7551BB407E82974E</stationID>
+ <name>Bayern 4 Klassik</name>
+ <shortname>nn4</shortname>
+ <icon></icon>
+ <frequency>88.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10685459415FB736187AE99B04188C62D77A3D9F3F0D4FEA25EE8444EF22A77363FD2D0DFB</stationID>
+ <name>Bayern 3</name>
+ <shortname>BR 3</shortname>
+ <icon></icon>
+ <frequency>89.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106854594118F5AEB07764E8E98F2C8F1C1D4E53F8F30562CA7B818244A660029524A7B1DE</stationID>
+ <name>B5 aktuell</name>
+ <shortname>nn6</shortname>
+ <icon></icon>
+ <frequency>89.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068545941489F36FFC602C7E0730E9D215AE410DB38B21769D21F15418958FF24BEC1A1E6</stationID>
+ <name>BR1 - Schwaben</name>
+ <shortname>BR1 </shortname>
+ <icon></icon>
+ <frequency>90</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10685459411E049D0E848509DA7190E9E0001D3AFC1436821929B300FD6906E883264CA15F</stationID>
+ <name>Antenne Bayern</name>
+ <shortname>Antenne</shortname>
+ <icon></icon>
+ <frequency>90.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068545941B00350EFAAD84471D46C1BF77BBBF7B51B6ED72DE21E9E0C237903B20B9509F0</stationID>
+ <name>Schweizer Radio DRS 2</name>
+ <shortname>DRS 2</shortname>
+ <icon></icon>
+ <frequency>91.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068545941CB4AD0C6B9DE36E52A83DD98DDD9F40B1EBF1503CB30D6A3E7416C04C08961F7</stationID>
+ <name>Schweizer Radio DRS 3</name>
+ <shortname>DRS 3</shortname>
+ <icon></icon>
+ <frequency>91.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068545941F673D8BC8AB340328918CD137C430A1D76867215420993880DF2DC3FB3E1FBF7</stationID>
+ <name>Österreich 1</name>
+ <shortname>Ö1</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10685459410ACA0F58C7EC36A14276600E1AB57547D85A3F2BCADAE9433207643A79DA9DF6</stationID>
+ <name>FM4</name>
+ <shortname>FM4</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068545941E5D47CCB3B2B946A9E18A1F713FC71A6AC16C6F1C1338F9BE702B6E6C4E66343</stationID>
+ <name>Österreich 3</name>
+ <shortname>Ö3</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106854594101C7D717158B1E0A0B1381AA43B19F4A8C5C5DBBAF2F4818A074829F22B77A2A</stationID>
+ <name>SWR 3</name>
+ <shortname>SWR 3</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10685459417EADB901EFD01D47BF33F4CD87ED4C9DC9C49B1FC10B0C2F53A6F924205D500D</stationID>
+ <name>SWR 1 - Baden-Württemberg</name>
+ <shortname>SWR 1</shortname>
+ <icon></icon>
+ <frequency>94.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068545941C99D2C3A9D6BA988BA78EF285F00E748CC97EBD96AA7AC939AFF5F9D6E3DF191</stationID>
+ <name>SWR2 - Baden-Württemberg</name>
+ <shortname>SWR2 </shortname>
+ <icon></icon>
+ <frequency>94.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10685459414F4A5FC81592AB7B1C8A18C814574C65829A747599A7B77DC0D75B8C65A88202</stationID>
+ <name>Fantasy Bayern</name>
+ <shortname>FantasyB</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068545941660E9AB7E70A51BC5E63B060B263623954121ED50EF332ACC983E9A68AB1B20F</stationID>
+ <name>Oldie Radio RT.2</name>
+ <shortname>RT.2</shortname>
+ <icon></icon>
+ <frequency>96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10685459412F17AD556576D8FC2672CBA18F743094A99C3B36491240FBBA314FC9E40D2D82</stationID>
+ <name>SWR4 - Schwabenradio</name>
+ <shortname>SWR4</shortname>
+ <icon></icon>
+ <frequency>96.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068545941802919D0582E6FCB6AF92773BEDC51861897B67E70D4FEA9E3202D1DC19F38BB</stationID>
+ <name>Radio 7 - Ulm</name>
+ <shortname>Radio 7</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068545941D6AFCAF81FFC14078AC8AD1CDAC913AAA20EB802A87591CC2C8415B41CEB343E</stationID>
+ <name>Schweizer Radio DRS 1</name>
+ <shortname>DRS 1</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10685459412EF9053F75D113A70BFEB6F111057709D18AC066398B9F2DB0FCB9AA0204820F</stationID>
+ <name>Rock Antenne</name>
+ <shortname>Rock</shortname>
+ <icon></icon>
+ <frequency>98.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068545941E7F060D054BC06F450668408D144DBB34ABB0D0801C4D3771A7BAD768B83DC31</stationID>
+ <name>Radio FFB 106.4</name>
+ <shortname>FFB</shortname>
+ <icon></icon>
+ <frequency>98.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106854594158C37F9EB937889942A2E02C8AD5796F7A7DDF65E680A8F6E26F13EDC50C587E</stationID>
+ <name>Radio RT.1 (Augsburg)</name>
+ <shortname>RT1</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068545941B5605DB81F1435C06ADCE18A23A76E301DAB10D439096C6016BE6D18EBDC22F6</stationID>
+ <name>Radio Fantasy</name>
+ <shortname>Fantasy</shortname>
+ <icon></icon>
+ <frequency>100.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10685459411E3ED84C5A0BC2A63B82F9EE85679B11D6F554502155EB5093D9B1ECCC3AE28F</stationID>
+ <name>Radio Gong München</name>
+ <shortname>Gong</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068545941D9DF661953EDCC3CFF6266C25A0789B4B6C2563D1B1535FDF70FBBBB62692FB4</stationID>
+ <name>Radio ARABELLA</name>
+ <shortname>ARABELLA</shortname>
+ <icon></icon>
+ <frequency>101.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10685459418C0B3077BA896A2FE3AA20D1B65649AA391FE4A41D02211F044DBAC1FAB1494E</stationID>
+ <name>Feierwerk / LORA / afk</name>
+ <shortname>many</shortname>
+ <icon></icon>
+ <frequency>101.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068545941E8D01DFF49742A177335F7987BC1CE343480938FF753EAF6F7710A704D4865D8</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10685459414C24B12DDBC0340FBB9F41C15E0806E8D3C212AFBC21C06A6CFE506CF4D3678B</stationID>
+ <name>RTL RADIO - DIE GRÖSSTEN OLDIES</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <frequency>103.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068545941BD0C2AE4F9F5AD25829D07F2FEB23F84268BAC81628233AB224F8F2EF3F329C3</stationID>
+ <name>Smart Radio</name>
+ <shortname>Smart</shortname>
+ <icon></icon>
+ <frequency>103.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10685459417CAC1B65BCEA92BF899A494BB1BE076B2632C0A14F63D1284B3AC6155A8BEFC4</stationID>
+ <name>Radio Augsburg</name>
+ <shortname>104.05</shortname>
+ <icon></icon>
+ <frequency>104.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068545941AA708B043096EAF4AAB6B07CC3A2E641B5288F93B8FB32D8854C646899511533</stationID>
+ <name>Radio Melodie - Heimatfunk mit Herz</name>
+ <shortname>Melodie</shortname>
+ <icon></icon>
+ <frequency>104.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10685459415C02C4403471C7E83697AE2D0AAF5A69C0E3B1183BCCB58E6580C87375A04F7C</stationID>
+ <name>JAM-FM</name>
+ <shortname>JAM</shortname>
+ <icon></icon>
+ <frequency>105.35</frequency>
+ <volumepreset>1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10685459410E269C41FA83F9B1C527C970723D1CB4249244A8770D8C599E7AEF49F69BA0C1</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>DLR</shortname>
+ <icon></icon>
+ <frequency>105.85</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10685459411321817CE3B26DA9FD4A1D23928078F17B8BB0CCD41F8D0650108212902A7858</stationID>
+ <name>radio horeb</name>
+ <shortname>horeb</shortname>
+ <icon></icon>
+ <frequency>106.45</frequency>
+ <volumepreset>0.8</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068545941AA51B2475FEF64367460F31A58DF44EAC15731E5A12B955EB737F57458257DDC</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <frequency>107.15</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10685459413C15FD1A5AB8006FFB9E5D14DE39A99F3EF8A0A642D99E8B6B9B2CBB44B6547B</stationID>
+ <name>Fantasy Aktuell</name>
+ <shortname>FantasyA</shortname>
+ <icon></icon>
+ <frequency>107.45</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/aschaffenburg-cable.krp b/kradio3/presets/germany/aschaffenburg-cable.krp
new file mode 100644
index 0000000..7942b8c
--- /dev/null
+++ b/kradio3/presets/germany/aschaffenburg-cable.krp
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Dominik Paulus &lt;Dominik-Paulus@gmx.de&gt;</maintainer>
+ <changed>2003-01-16T01:42:00</changed>
+ <country>Germany</country>
+ <city>Aschaffenburg</city>
+ <media>Cable</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1077144985F3BC100BD276A1F56150B950316C9F826E36BBF2A780DC9E819BE5C3BAAFF8DB</stationID>
+ <name>new station 1</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>67.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985159A978CD5998EA6FCBC69239757B68B97F1A1FCBBAADE915D0653BCD96AD69E</stationID>
+ <name>new station 2</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498552BE0FB004D155920BF300C40937316F56C3507284112044B32F3F431458D5AF</stationID>
+ <name>new station 3</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>80.1875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985447B6977FCF0571E1E512E48EAC560E033FA1F7808BB7D4DDA89D6EB2823B16C</stationID>
+ <name>Rock Antenne</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>87.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449858C575278C52DEBBDDF0C4E4296D004FB6A4CA2A992D8441D7178F2E18179B24C</stationID>
+ <name>WDR 2 - Siegen</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>88.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985F0FB21C404F363952939235965C7207FD315B8D4088325608F319912794E66C3</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>89.5625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498519CFB9F54A5CE1DF939426720B77D56A857B858EA536C53CC914725CCCBAC72F</stationID>
+ <name>Radio GALAXY Aschaffenburg</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>89.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498540D5AF72484BDECA91CBA8D4859455FE20C1D25973B334CE0C590B2F3E9FE5B2</stationID>
+ <name>Klassik Radio</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>90.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449853C54243167ACA91BF0CDDDD29D6E52E71B9CBCBA8AD2E3A62702F14230A54697</stationID>
+ <name>SWR4 - Pfalz</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>90.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985ED71A56179CC656DCCA239DC96D49DFC7DB6A5ACE8473A5575B317EDBEB83BBF</stationID>
+ <name>ANTENNE BAYERN</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>91.375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449859EE394F9B828F333C045AE5C508D366807A3CA0837F67601560F0CBDD4CFBE7C</stationID>
+ <name>BR1 - Main/Franken</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>92.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449858F52103F490F64D0ABAA337F7DBBF941FFDD846F7751B47AE41F45957DEBF980</stationID>
+ <name>BR2 - Main/Franken</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>92.4375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985A1E85FF2C684058A8CD80EAC46945ABD9431C9198BC4615CF9AE75DE60123B28</stationID>
+ <name>Bayern 3</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>92.9375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449850747C361DC4AE3C06BFA4EB81209A68F92A7539A2A67590F5AD4A9ABADDC8996</stationID>
+ <name>Bayern 4 Klassik</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>93.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449854BAFE22068A311513C736D7E06917826441085D692653D2820AB4EF2159785FC</stationID>
+ <name>B5 aktuell</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>94.0625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449857A0B9B43AC607539002B1A26BF3E29A447966A9AABE0769508B3CBC3DEC89CF3</stationID>
+ <name>AFN - Frankfurt</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>94.5625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498584E51497A375E3634BAC8DD0618514087F0C345CE8F7897A7159F1EBDB4ABA38</stationID>
+ <name>RTL RADIO - DIE GR?STEN OLDIES</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>94.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985E876BBE7918D22D1A783E6520A96E5B1CB36ECA328D803013E02F591BC4C7699</stationID>
+ <name>JAM-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>95.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449856BF154C295629D9C6CD79C42D4ACE2BF92DD848B30C7CE28B966B16B3FA811CD</stationID>
+ <name>SWR3</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>96.1875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449851E3158691478666606B03FBA00719A440C8F8605CE555C6C5FF0754CCCF9E3AF</stationID>
+ <name>hr1</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>97.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449853BD933EC1A52C7B7CF78D679321E687FEF79BB2FDEA3E9ADE8F21A01B2247E76</stationID>
+ <name>Radio Primavera</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>97.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985DFF5C3F6C450F3B665F186899EB2ECE2B495A964D87096E81E7BF34E15EDE8AD</stationID>
+ <name>hr2</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>99.1875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985C26BA289A5A38FA11A80BFD95F87EED4C86B21E80B9822824AC8B363B027981A</stationID>
+ <name>hr3</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>100.812</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498525C92AAC118DC607FBC440398045BA3AD4FE438CA0B8E28792D9DA23E7DA60E5</stationID>
+ <name>SWR2 - Rheinland-Pfalz</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>101.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449853B7CDB53805AB97C9C1EC805077706FB2B605F029AD30D45078403A970FDE92C</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>101.812</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985BBF2ECED13AD46394B5C983B7D3CC5A39BCA18B34381A2B2C8813A6D6D5301D9</stationID>
+ <name>radio horeb</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>102.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985D8AA17B0D2475956BD6BE6D078C6CCFDE4625E64639F162CF58A788390AF0201</stationID>
+ <name>WDR Radio 5</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>103.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449850D47C3E30DC8135EC771C2E5C4363915AF26BFE53E5F05E7151C377D9E70B80C</stationID>
+ <name>sunshine live</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>104</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985343BD15EF54003AB01CFABE5FB2B0E1C501AA3CB4D6639793A38D8F13B75DEFE</stationID>
+ <name>SWR1 - Rheinland-Pfalz</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>104.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985C168D956AB7162A27C62A77D5F8E55B093B88A3C784F8C802FD538445D696D3B</stationID>
+ <name>Radio Melodie - Heimatfunk mit Herz</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>105.438</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985E5C7AE3AF00B991A26BCC59FC09934BC8CD61709430611A7F69F3016F555D0F5</stationID>
+ <name>WDR 3</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449850BD272570DAF10E4B99079ED2F942EEB369913DC032CC0F9146A90157BA4755D</stationID>
+ <name>RPR Zwei</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985998C7D899FDF4FB3071439147306930E462F9FDB35C7C109C33053F52FFF7BC1</stationID>
+ <name>hr4-Rhein-Main-Journal</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>106.688</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449854CE70B441C8C156380FDD58B738731DD48911D6FF07D6025E1CC255B69CCAC1D</stationID>
+ <name>HIT RADIO FFH - Rhein/Main</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>107.188</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/augsburg-cable.krp b/kradio3/presets/germany/augsburg-cable.krp
new file mode 100644
index 0000000..baf7e02
--- /dev/null
+++ b/kradio3/presets/germany/augsburg-cable.krp
@@ -0,0 +1,338 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Christoph &apos;ChrisDi&apos; Dietz, &lt;chrisdi@flossolis.de&gt;</maintainer>
+ <changed>2004-04-12T11:36:37</changed>
+ <country>Deutschland</country>
+ <city>Augsburg</city>
+ <media>Kabel</media>
+ <comments>Belegung anhand www.kabel-deutschland.de erstellt</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1081762519ADEFDC7C5AE1309B1C401D543C10B737AD70096A667DFFE8B060F0F246907C79</stationID>
+ <name>Radio Galaxy</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108176252088B075D3B7E8BEAEBFA5A98BC2E049DCC62B6317564BA03EDE56C69AE25BCF83</stationID>
+ <name>sunshine live</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108176252298FD5071D2D5E01C6C4137808BA1D531192FC5CAFF77A779033432F749791281</stationID>
+ <name>BR2 - Schwaben</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10817625249FFEF4A1CC04603BA35A0541293B75705FA03EBE5A5A8219A051D1F3E663A111</stationID>
+ <name>Bayern 4 Klassik</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1081762527C58E998EFA99AC8A21F7B248B00E465A4BAB32AEDBC2CEFCCE09F472B581A0FA</stationID>
+ <name>B5 aktuell</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108176252814D92D4D82EF329F1D3C8E244976C74F915E43A5AEB532FCC9C2958C4B270911</stationID>
+ <name>BR1 - Schwaben</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1081762530E966A11E359FCB880272F4028C001DB75CD5029832C7739508B790020BF9E753</stationID>
+ <name>Antenne Bayern</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1081762532C96C9D2D4426ADE4C56A38BCCD1CE4B67A7DB9A993D85067A294963645B9CB1F</stationID>
+ <name>Schweizer Radio DRS 2</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1081762534BD7A3790F715C7B6B83C59334485918594E49B61C8F9FE96AC683794F826CA37</stationID>
+ <name>Schweizer Radio DRS 3</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1081762536D1413CBE9E85441C13D784634F78D85BE4C84C54FE6B01646AC6CD4896E689DC</stationID>
+ <name>�terreich 1</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108176253749CD083855417A6BA41198CAF73173CF8560E443AF2D654A4533D8427DF5F0F5</stationID>
+ <name>FM4</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10817625402877F140E24BA249150C4F46815335E6D4FA87F1693CBD80E8F085FE591C96B9</stationID>
+ <name>�terreich 3</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1081762544AF39F2F11E384337D6205BE900A23EF0C0475BCABAD8C3D4A55BFBFE4F471399</stationID>
+ <name>SWR3</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10817625434B549F0E8C9577AA4AEA6DBDBD7D8118A2E96D36EFB4D067D1586C0A89116139</stationID>
+ <name>SWR1 - Baden-Wrttemberg</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.4505</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1081763516834248D6273A9A3B11FCB32F2EE87458AA93F6CA70F0C4188EA54A018307B89E</stationID>
+ <name>SWR2 - Baden-Wrttemberg</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1081762547EC56131452458E305AB9B3EA2542A59C34D3198E2602679AB471620FA067C83B</stationID>
+ <name>Fantasy Bayern</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.5505</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1081762548BFB2FA4184ADC715886B47CD75D2BA40D18AE0714D48B33AC74BC364F27B8F48</stationID>
+ <name>Oldie Radio RT.2</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108176255025C6ED752182AAE75E1F152A329260FFF4DDF42D03A1A8077BB5A7C900CCB3F1</stationID>
+ <name>SWR4 - Schwabenradio</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108176255211657A40CACC2A7EAEA9C005A45AA9A3B7BBA3CE8F6D45D3F64534C09FEDCBE5</stationID>
+ <name>Radio 7 - Ulm</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1081762553CBA818C79D77DABBAC37CB74F42B5FBC42304001EE39E5311FB050F657082479</stationID>
+ <name>Schweizer Radio DRS 1</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1081762556283B11CFA01F304E7FFAF78ECE6F2139D4C0121877064E3F3DBF86C5B2ABAD2E</stationID>
+ <name>Rock Antenne</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10817625572E047E5B04636F2BB72F7C7DC633E76FB35CBB98A0FE7A288AB6A82F1DCC2581</stationID>
+ <name>Radio FFB 106.4</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1081762559EA45D74A7927E911F2DAC82C81F873AFCD7C57DCEF163EDD5C608DFF46C9918E</stationID>
+ <name>Radio RT.1</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1081762563072171093E25844199CD6E20F7BE85E36AD80850079873781B648C5FB209C199</stationID>
+ <name>Radio Fantasy</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1081762564AFD1F01D29AC9344A7D7B21E90BF4B6DA35F3DA16AE4C3273C91267203938CAB</stationID>
+ <name>Radio Gong Mnchen</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1081762566FCB7E89C918962AC265BD4B7DA2FBB58AD89BD070FDEF854A6F90359CD02BF02</stationID>
+ <name>Radio ARABELLA</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108176362153B0B2B5273544161FDB406E1A0F5551E0F46D779E26BEAA08C225A6B93F7113</stationID>
+ <name>Feierwerk / LORA / afk</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10817625692FB50A19D11462EA411DF1D3049FAB31289F8AAC0866B0D830A302E820A4DBF9</stationID>
+ <name>Klassik Radio</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1081762571CB5B3E11886FEC9974E3347EBC63F3013AAE300447EFF5DEA80105194EB5DC2F</stationID>
+ <name>RTL RADIO - DIE GR�STEN OLDIES</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1081762573776AE4ACF78B5686435BC6FBB8C97DFF0846A54E9CF569C31B40EE748B9E3A1C</stationID>
+ <name>Smart Radio</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108176257590BD5A5E82DB7FD1BEBBF02C50FDBDF6B1E508CCC230FF10CFFBD210235867E6</stationID>
+ <name>Radio Augsburg</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1081762577CFE5E1BAC67A702A57C0A8DA017065B54F150DFF50AB8F41177D424F0C878E70</stationID>
+ <name>Radio Melodie - Heimatfunk mit Herz</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1081762579B9A14E18FBF01F3260C44DAB0FBAD62DB6D8F8FEC6BD4B6EAA659A3BE2A96064</stationID>
+ <name>JAM-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108176258118C0735548AEEF9A9380F7A135730218FDB8F2B3CE4F627A1EA233BB55D0246B</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.85</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10817625833ABDE5BBA0B045316AB3B007042B9F9235436C831CEC506DED496FBD2FB4B959</stationID>
+ <name>radio horeb</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10817625851CABD8A25F186338C54C1B69BBC32822AF5C367E699762EF4D301AF617A2E1D2</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.15</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/berlin-adlershof-antenna.krp b/kradio3/presets/germany/berlin-adlershof-antenna.krp
new file mode 100644
index 0000000..0a89c24
--- /dev/null
+++ b/kradio3/presets/germany/berlin-adlershof-antenna.krp
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Sarah Bransdor, sarah@spooky-online.de</maintainer>
+ <changed>2004-09-13T16:17:20</changed>
+ <country>Deutschland</country>
+ <city>Berlin-Adlershof</city>
+ <media>Antenne</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>10950842211D0754CC070EB977900122F99C3080BFAA1BFA650423CF987404C57735963D67</stationID>
+ <name>StarFM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385349B2E89A194C3869E9531178AE980E92F2325E4CE87E266E08C81F25E51AB12AEB</stationID>
+ <name>SFB Stadtradio</name>
+ <shortname>SFB Stadtradio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.8501</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385349500109B663095C9C81FD9B9E19C08F2462A324F57EFF089DFEC3C07F15677C52</stationID>
+ <name>Deutschland Radio Berlin</name>
+ <shortname>D Radio Berlin</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.6252</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338534902C553EE52365D10F1C25910829C9DECD0770CD7632E60C51EAB474C133C5FAB</stationID>
+ <name>BBC</name>
+ <shortname>BBC</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.2502</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853499DFD7248C61C6F4F795C5440DFED8C4744AD618CFA1781B66D7ED8E9DC210C77</stationID>
+ <name>Berliner Rundfunk</name>
+ <shortname>Berliner Rundfunk</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.4253</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1095084342F7FDCE9F2F2DE4E0F3B7F62037E8A79F1C26418F84F992C62AB2B22E6525C5E5</stationID>
+ <name>Kultur Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1095084424A13855469F995570917C7AA1A36DD8CC2F7541B3ED91A9E5118ED1E33EC81A33</stationID>
+ <name>Info Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385349C823A5F5E57010677432AC9E8B4333062CA7EEED70DDFEBD3618F03AE55F75DF</stationID>
+ <name>RS 2</name>
+ <shortname>RS2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.3504</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1094931586E779D76AE9828E3F3AAE93131ACFFB1A67B410A762B2C9B62D2FDE4D7E2BCEFE</stationID>
+ <name>JamFM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.6254</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385349041D5648D887F0125564EC2D6FDF91854072197C70FE807650B386BCF2DE0A05</stationID>
+ <name>Radio 1</name>
+ <shortname>Radio1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.8505</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853490BA33F7F5740683BAF6DFF30E1F67A54A08B0C4CE3CECA2DB4ED5DAA36E431E4</stationID>
+ <name>RBB Radio 3</name>
+ <shortname>Radio3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.3256</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385349D4DF6E4B5006F825A3F02F7D13EDA5BE50B8F4101E6F029829BA064FD24087F9</stationID>
+ <name>Deutschland Funk</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.7507</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>109508453464CE6BE470B49A6D3A5EA8CFAD33B3EEEEDBD372D7876660C900DE99CDE8AE6B</stationID>
+ <name>paradiso</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853493FAC5D7FC15132D2E24D74E70764FC73DAB596C44753039A13F62748518BC94E</stationID>
+ <name>kissFM</name>
+ <shortname>kiss</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.85</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853490F847F6119712D26A7530E7B8B35A87D4C5272C3768C8DAFA851ECBFB0783470</stationID>
+ <name>Antenne Brandenburg</name>
+ <shortname>Antenne BRB</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.7008</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10881766538E16F7FC9A37C7E1FDED43C1EEE9BD1BC045C1A8962112F3115A6BEE59D52B45</stationID>
+ <name>privates Radio</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.651</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10950854130A2EDBCB3DCD86B02D67B7A14221E7D35BC390FE795B56F2328D5FBED35458D7</stationID>
+ <name>Klassik radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1095085514AD677A1C78F5ED84309ABC3AC8675D2625315AF2B123222EC38B7ABECEC0BE2F</stationID>
+ <name>jazzRadio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385349A62419FB7D8DA8D2452C3F7A8F23B3DAFD792B487134B59411A571BF65227BE1</stationID>
+ <name>Fritz</name>
+ <shortname>Fritz</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.625</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385349E8469B9834E0D7C87AD69EA743CB4CBB21B71C194B2566B98E3E998AB5C7886B</stationID>
+ <name>Radio Energy</name>
+ <shortname>nErgy</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.438</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1095085762F9881B63B14BB58001E879D577D4520E57F0B84A6C9C01FCF593069A375B43F9</stationID>
+ <name>joyFM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385349A509F7710E705BB097DDBF8F4E00F0AB6722CF31B53768F44A2CE0F07BB01919</stationID>
+ <name>RTL</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.651</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1094931470029C2FBBF1F2176B19BBE48F3324B14428DC83AB1FCD289D382851ABD57C7F5E</stationID>
+ <name>Spree Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.5</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/berlin-antenna.2.krp b/kradio3/presets/germany/berlin-antenna.2.krp
new file mode 100644
index 0000000..c991f8d
--- /dev/null
+++ b/kradio3/presets/germany/berlin-antenna.2.krp
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Roland Penzin &lt;roland@penzin.de&gt;</maintainer>
+ <changed>2004-01-01T04:47:23</changed>
+ <country>Germany</country>
+ <city>Berlin</city>
+ <media>Antenne</media>
+ <comments>Das ist das, was ich empfangen kann; es gibt noch mehr,
+aber der scanner rutscht drüber weg. (wird demnächst noch verbessert)</
+comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10771449853B6A8C902D02523B3F69FDE284AB1D5597E65EC6736010F35012801DFA9DE44D</stationID>
+ <name>Rock StarFM</name>
+ <shortname>StarFM</shortname>
+ <icon></icon>
+ <frequency>87.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985A69EF0667EBD63A301023B4710DE1CAAD7516DE9C6A4E6048E7330735218D6E5</stationID>
+ <name>88 acht</name>
+ <shortname>88 acht</shortname>
+ <icon></icon>
+ <frequency>88.8125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985CDC6F87E2ECB55F2DEC76436C2012862DEEA96B523018B1B5BA2810E1407C786</stationID>
+ <name>Deutschlandradio</name>
+ <shortname>DLR</shortname>
+ <icon></icon>
+ <frequency>89.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985C36B658ED20EB618A5DDD41B01D0BBAEF7FA60C26130BB6797F4EC3D3766318D</stationID>
+ <name>BBC</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>90.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985E8AE5C2C862ECBD13066630089561F194C803AD6B81920D12EA2E394B985513A</stationID>
+ <name>Beliner Rundfunk</name>
+ <shortname>91.4</shortname>
+ <icon></icon>
+ <frequency>91.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985B5F0B583A76A3879B3D555E8B294C16895E357419CD3DA5C0612513C629F735F</stationID>
+ <name>F.A.Z</name>
+ <shortname>FAZ</shortname>
+ <icon></icon>
+ <frequency>93.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449852D347E640644D8E5AC7C8DBD893AF8E02AAEE801EACF88C973CE2139A0FF7DD3</stationID>
+ <name>r.s.2</name>
+ <shortname>r.s.2</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449853EDBCB0875C1C21C48D00249351F04A9EFC628C3C4099B70B66E4F8755284D17</stationID>
+ <name>radio eins </name>
+ <shortname>radio 1</shortname>
+ <icon></icon>
+ <frequency>95.8125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498593090B20A0494A7E9F43807804227BB7349327D4BFFE60DEC13CFE3E427D9DC6</stationID>
+ <name>Radio Drei</name>
+ <shortname>radio 3</shortname>
+ <icon></icon>
+ <frequency>96.3125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449854B72715BAAAC91778FB0593AA55FCF05CEDEAB8665E1180AC407765B658CAAA7</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <frequency>97.6875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985560BBFC0819671C7283AD50B3CF24DB160AE4676868D7E3AAC8CED3E5BC7D2FA</stationID>
+ <name>Kiss FM</name>
+ <shortname>KissFM</shortname>
+ <icon></icon>
+ <frequency>98.8125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498564B70D5286BB7B46EDD84F9573EA263DF1C42610B2DF05A8D19A6DA4511C2CAC</stationID>
+ <name>Antenne Brandenburg</name>
+ <shortname>AntenneBRB</shortname>
+ <icon></icon>
+ <frequency>99.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985F02046B800B700C0003007BD58359EE2645235058F9CD2BCBD959DE4050F8182</stationID>
+ <name>Hundert,6</name>
+ <shortname>Hundert,6</shortname>
+ <icon></icon>
+ <frequency>100.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985A0C1BF2FC57655BEB0BFFC7EC93C970C12E4B0359BA61D9C32B12CC8A2238BDE</stationID>
+ <name>Klassic Radio</name>
+ <shortname>Klassic Radio</shortname>
+ <icon></icon>
+ <frequency>101.312</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449856E8C689B2E99236793510ED48C5B788FA482D2F1ABC91A3C2F81D3E85C97B15D</stationID>
+ <name>Fritz</name>
+ <shortname>Fritz</shortname>
+ <icon></icon>
+ <frequency>102.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985D4BA0BD5425B027AC9C147D8DA4D64BE04A3500CD73E2DFCE0F0A2A13D2820EC</stationID>
+ <name>Radio Energy</name>
+ <shortname>Energy</shortname>
+ <icon></icon>
+ <frequency>103.438</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985669860836101EBF972159B073A7C0C550B7CA10BF561E07EFB9DAE973224758F</stationID>
+ <name>RTL</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <frequency>104.688</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985828B109A4F632F35DC8A8B377C057F976AA60ADAC106DFA092C42C76F7AD852B</stationID>
+ <name>Spree Radio</name>
+ <shortname>Spree Radio</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985B855228F725BB61F8D290EEF9F6F3759BC52BE65ABD699064A66B85596684C6F</stationID>
+ <name>RFI (frz.)</name>
+ <shortname>RFI</shortname>
+ <icon></icon>
+ <frequency>106.062</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/berlin-antenna.krp b/kradio3/presets/germany/berlin-antenna.krp
new file mode 100644
index 0000000..e20e386
--- /dev/null
+++ b/kradio3/presets/germany/berlin-antenna.krp
@@ -0,0 +1,231 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Rolf Kottenhagen &lt;rolf.kottenhagen@t-online.de&gt;</maintainer>
+ <changed>2003-05-20T18:00:00</changed>
+ <country>Germany</country>
+ <city>Berlin</city>
+ <media>Antenne</media>
+ <comments>frequencies checked manually by list from
+http://www.frequenzliste.de</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853497E51C999793C9F1D5D7ED26CDFD8CC6529141225347C696E992D1AFD30199ACF</stationID>
+ <name>87.9 STAR FM</name>
+ <shortname>StarFM</shortname>
+ <icon></icon>
+ <frequency>87.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534985561459BB3EFCC1310B57492D8120EAFAADFD5AAC012B64DC8634B3D5B7D922</stationID>
+ <name>RBB Berlin 88,8</name>
+ <shortname>RBB Bln</shortname>
+ <icon></icon>
+ <frequency>88.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349A25E5BBEB22090841BC470600D0C3C25C77D311679E73203BCF3F0D7C4626315</stationID>
+ <name>DLR Berlin</name>
+ <shortname>DLR Berlin</shortname>
+ <icon></icon>
+ <frequency>89.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349AB372F7B39FD100A6F0CB5BA2C6B1C03A33BE5B3C3721321FAC4DE4408A4E518</stationID>
+ <name>BBC World</name>
+ <shortname>BBC</shortname>
+ <icon></icon>
+ <frequency>90.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853493FD3962EF9AF439B933D60B56FEF25BC628E85E885C11CC3FA22EB0C3268BDC7</stationID>
+ <name>Berliner Rundfunk</name>
+ <shortname>BLRfk</shortname>
+ <icon></icon>
+ <frequency>91.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853495FC82B1636D2274B54E2ACFEAB2AF4BC0EE6E07F0FAC7D3A4C10B3B74C74B594</stationID>
+ <name>RBB Radio Kultur</name>
+ <shortname>Kultur</shortname>
+ <icon></icon>
+ <frequency>92.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853495A62FD726D2C7DAFE2439DE7B92BB1A96363985D6413CE9B957FBCFDE550DE3D</stationID>
+ <name>RBB Inforadio</name>
+ <shortname>Inforadio</shortname>
+ <icon></icon>
+ <frequency>93.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853495C9FCFAA28A57410F1955EABEBE27EB95B9A9DB696B11C43E118C2F8119951B2</stationID>
+ <name>JAM FM</name>
+ <shortname>JAM</shortname>
+ <icon></icon>
+ <frequency>93.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349825CCBD239C2176E7CD7C97C34DCA895D87EEE8D7855F9982F3B6AC0CCD31312</stationID>
+ <name>94.3 rs2</name>
+ <shortname>rs2</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853499770EEC2A033A446501B43CC0BBA8718045B456EDFF05F09DE10EBA418C96780</stationID>
+ <name>Metropol FM</name>
+ <shortname>Metropol</shortname>
+ <icon></icon>
+ <frequency>94.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853498830E32C4AD9AC6A90169FAE087CBA3EB1852EDA69AA664A7B0FE1A950E5D6A3</stationID>
+ <name>RBB Radio Eins</name>
+ <shortname>Radio Eins</shortname>
+ <icon></icon>
+ <frequency>95.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534951E41F04040AD8E175ABEEF97FDEA9108765295A152550DF44A8DF2773FA2C77</stationID>
+ <name>RBB Radio 3</name>
+ <shortname>Radio 3</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534959F47016D01EA0BF93D98723978689D8CD574FBB1B4518C5220558FEE5742BF9</stationID>
+ <name>Veranstaltungsfunk</name>
+ <shortname>Veranstaltung 1</shortname>
+ <icon></icon>
+ <frequency>97.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534993BB9BC42B21D86C47150EA0B8D52A28EB861496D34C1CC7629CA1158B43BDA8</stationID>
+ <name>Deutschlandfunk Kln</name>
+ <shortname>DLF Kln</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349A361CF41DB776BA1ED5F989B9F44DDD1DE8F8EED7C33B6431F0F74897304B7B6</stationID>
+ <name>Radio Paradiso</name>
+ <shortname>Paradiso</shortname>
+ <icon></icon>
+ <frequency>98.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349F56325FCFE38A716DECA90DC8AF8D2888EDB2E8F150FFF1053B7CAFE61685F78</stationID>
+ <name>KISS FM</name>
+ <shortname>KISS FM</shortname>
+ <icon></icon>
+ <frequency>98.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349951A3B6EBD890E73C0521DDE838497CA9784D14F779FE940AEBCF771A308CA0F</stationID>
+ <name>Antenne Brandenburg</name>
+ <shortname>Antenne Bbg.</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853499B852157347D91E6155944505005E236B9D20E29A6C5F36C7AC82321AFE907D7</stationID>
+ <name>Huntert,6</name>
+ <shortname>Hundert,6</shortname>
+ <icon></icon>
+ <frequency>100.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349D7037F27506E173E8EBABD63F7D7844C2A73EA2C615437DC8F084416805C5141</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik Radio</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534984D9B16DA424BF6DCB26D496C2A1DB29E43E757D80CADCA3872359B9DFA9C868</stationID>
+ <name>RBB Fritz</name>
+ <shortname>Fritz</shortname>
+ <icon></icon>
+ <frequency>102.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349014C2A38A72D15848B4C5F6ACCD28C209D4790F67CED40E9ACC88EF7B91A8F19</stationID>
+ <name>Energy</name>
+ <shortname>Energy</shortname>
+ <icon></icon>
+ <frequency>103.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853494243B31B9918C2B6F71E76B3FCE239100E0C4AEE0E3E62E2FAF717ECD13B1C11</stationID>
+ <name>Veranstaltungsfunk</name>
+ <shortname>Veranstaltung 2</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534946D3BCCACACD6B8043412C260857942ECFD0CFF28288C8F2C2B49C2F01261BF9</stationID>
+ <name>104.6 RTL Berlin</name>
+ <shortname>RTL Berlin</shortname>
+ <icon></icon>
+ <frequency>104.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853495E944FD7695C0CF2A728564554761C41998C04AF8A8EF35795F9AC51B740D60D</stationID>
+ <name>SpreeRadio</name>
+ <shortname>SpreeRadio</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349895D241FA00A7032D7DF1213E06BD5C2A59CB90431EBA27EF9369EA59DDEAFEB</stationID>
+ <name>Radio France International</name>
+ <shortname>France Inter</shortname>
+ <icon></icon>
+ <frequency>106</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350C0971CF7C340D4DC04FA48DB2B27461778D2699109FE1DA81059ACEF36EECF3D</stationID>
+ <name>Radio Multikulti</name>
+ <shortname>Multikulti</shortname>
+ <icon></icon>
+ <frequency>106.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853500D84E42BBE8E8CC2A4025782F3DB39BB715340F161CC75C3DA0A26891E0C4220</stationID>
+ <name>BB Radio</name>
+ <shortname>BB Radio</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/berlin-cable.2.krp b/kradio3/presets/germany/berlin-cable.2.krp
new file mode 100644
index 0000000..cff22ce
--- /dev/null
+++ b/kradio3/presets/germany/berlin-cable.2.krp
@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Olaf Beyer, &lt;olaf.beyer@gmx.net&gt;</maintainer>
+ <changed>2004-05-02T11:18:23</changed>
+ <country>Germany</country>
+ <city>Berlin</city>
+ <media>cable</media>
+ <comments>Radio stations on cable in Berlin</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1091290560A5505189C9EE36A2376EB37B436DFC526394AAB8BB8D802B6D6BCC2FF9A0A1F3</stationID>
+ <name>BBC</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>87.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560913F88E4309323534DBB2E92E29140CA308F6AE2FADA149780C21C76D2D49D3C</stationID>
+ <name>RTL Oldie</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.0625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560CDDC73FA2CFC24B012DC2E70E90C41F5E5D0A665B94D916BF6E135B825A912AF</stationID>
+ <name>Klassik Radio</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>88.375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056045DCE326AAF6137CE90631BAD58FD330270ABE265383583DEBF719741184803D</stationID>
+ <name>100,6</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>89.0625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560C737C65AAF3115021B1826EB67E32C2CC4646A334DB4C3CFE60DA91AE0EDC567</stationID>
+ <name>Fritz</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>89.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560B0BC6374AF652216648A87E2FD6316CC77772AA28E335AE8831930C5C74EA115</stationID>
+ <name>Engergy</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>90.4375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056096106A3064BC468A7A3A677908751B057A0E854120ABF384A152E6C69072A909</stationID>
+ <name>Radio Melody</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>90.8125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560A786636DD592CB8764D3CE7890656FC20E74D276A25379D288329489A14C4286</stationID>
+ <name>SFB4 Multikulti</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>0.09</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560404F4BFB06B2C1461CCCBC36CDB05EAA27A063D34F38A6107B0814055034F958</stationID>
+ <name>Info Radio</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>92.0625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905609B90C7A304D2FC3B43977B8D12EB08E26B931E138A29F58A50C2F02F488B9F87</stationID>
+ <name>Metropol</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>92.9375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560A48C1F7E1C7DDAB9739547FD57882882C7D5791ACC0F6BFD56F4BEB8D76E3250</stationID>
+ <name>World Radio Network</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>93.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905609884DAFED70CD3E858F88A6F3AA384CE4177CB335F07FD0789A9742894964D08</stationID>
+ <name>Rock-Star FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>94.5625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905607A4FEF6527B106522E556140B1B477FF314D6F2638397F55F586BC5E5D05A57F</stationID>
+ <name>88,8</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>94.9375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056034AE38DE1BD81BE5774C4A56F64E8EE745663AC027203CEFD2F487F5BE4B8110</stationID>
+ <name>RadioKultur</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>95.375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560EDE7589363960727A146967472237FA42A4CD93329A78ED715E4BD5872B22C14</stationID>
+ <name>Radio Paradiso</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>96.5625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560BC28813AD7C3D94BE703F4ABC70F4601011BFB301A15FC50C9F6763ACD7644DC</stationID>
+ <name>Radio 3</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>96.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905604A99A80E354EF13B30896FAB4258696C46A2C412A62976F4135C927CA73DF76C</stationID>
+ <name>D- Radio</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560D11CCAEDF54DAD5F5B6AE37D1B216BD0A769BE1C44CCCDF5EB60F3A201D7123E</stationID>
+ <name>Kiss FMM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>97.9375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560744A24912F03395F5ED4B266D6BCFEAA0F84D1C19B718AB8997F9B272028BD80</stationID>
+ <name>B- Rundfunk</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>99.3125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560BFDBA9718D5ADC4CB0454105E0BFA9EBD0E99BB311D7A2734191424D8E92728F</stationID>
+ <name>Radio 1</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>100</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560AF246F9B97C05B096DD7BAFD757330E59CA16C5878F30C53C8F7A3E79D87C1C7</stationID>
+ <name>MDR Sputnik</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>100.312</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560768E89279B2F4E7061883F1D3280150AD871D61D487B3BAC1F27B996194912F6</stationID>
+ <name>r.s.2</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>100.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905609499BDB7328D36A5AC7D940C9EB4FAC882B1F6AE6D56B4F5F975527F694790CE</stationID>
+ <name>Antenne Brandenburg</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>101.688</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560A92C5072E6CBA949CFBB5A7BB94DDDC9888E7F1EB14BA236707C81D78DC4E82F</stationID>
+ <name>D-funk</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>102</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905604ECD104D0ED5A36F61A8D2B9536F0AF97A75BE44BF7035E17BDB67ED34CAA244</stationID>
+ <name>Jazzradio</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560B4522CB32DA36B1CB89B1E7D910264F8A4BC65304E2D7E6550517481D9A48D90</stationID>
+ <name>F.A.Z</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>103.812</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560691BF1FA98B1F29063D19CDFE69AFEFBC1F6E095EB86E04BA81CE83875923272</stationID>
+ <name>RTL</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>104.062</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905602E27ACEFA0159960ECEB4911F0EAC6686739BA3793D074E8E7013913B8226F26</stationID>
+ <name>SWR3</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>104.938</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905609ED22C296985209C1EB2CC3A10558CF0FC7918A193BFB2F009C4FFB412A67476</stationID>
+ <name>FAM FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>105.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056054E6D7DE208F2000235DC93F00E28EDD54BDAD68A13F5C1BFFEAF4522D4A3388</stationID>
+ <name>RFI</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>106.188</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560733DCEAC0CBAAA1307B5FCDD8EAC933AE2E0E9EB66093A254C73B50746C064C9</stationID>
+ <name>WDR2</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>106.938</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905602AC24A2173B027D5AF931E14206B3D3545E3003C4BA2AD86B7AF821FC26EA345</stationID>
+ <name>SWR2</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>107.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/berlin-cable.krp b/kradio3/presets/germany/berlin-cable.krp
new file mode 100644
index 0000000..3398d5b
--- /dev/null
+++ b/kradio3/presets/germany/berlin-cable.krp
@@ -0,0 +1,323 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Herbert Lischka &lt;Lischka_Herbert@t-online.de&gt;</maintainer>
+ <changed>2003-12-30T14:40:00</changed>
+ <country>Germany</country>
+ <city>Berlin</city>
+ <media>Cable</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1072791566EE4FC1594E6E6DC394DB75EEA2E9938CA67BA6682313127E3DC8CFD562686A13</stationID>
+ <name>BBC Worldservice</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.575</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10727915677F9936FA0BAB670FB58F07C35C232BF6C8F65DB1C7A491480937848532CBB384</stationID>
+ <name>RTL RADIO</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <volumepreset>0.82</volumepreset>
+ <frequency>88.0751</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1072791567CC15FD02795828846ABF82393E35836D35535ACE3BE8DE23A3D666764EC92EEE</stationID>
+ <name>Klassik Radio</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>88.4001</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10727915686667AAF2ABA643A8427136F1FF23B13680686E00AC029D20C746F82110E15883</stationID>
+ <name>Radio Hundert,6</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>89.0501</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>107279157082D00D133FC0C7F0A736DF9DA658240AE74C45890AE0A3E2E074448807441213</stationID>
+ <name>Fritz</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.9002</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10727915708CED28FBC443431F076E8E377DDFECDC96801422442D7A89DBD4567F05E915A8</stationID>
+ <name>Radio Energie Berlin</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>90.4752</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10727915716F7ED9C758E6C5CC9F58FBFA5957EA22BFF20B19CCBE47E9741A6A6C0E5ADF57</stationID>
+ <name>Radio Melodie</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.8252</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10727915727A649C66B9C75FF3ED4CB90B686BF3ADE3F27A658F1446CA1DB599E759B2719B</stationID>
+ <name>RADIOMultiKulti</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>91.6503</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1072791573F82AE782CEEEBD775EB38501C64B71B14C8DFEC95D001474317959E6581A1F8E</stationID>
+ <name>infoRADIO</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.1003</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>107279157430C736B8ED87C5571B6FDEB10504E28CCD9486F62DF082CFD590A699C3E0248E</stationID>
+ <name>Offener Kanal Berlin</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.6503</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>107279157482B2FA653974785D4655257398C16A26A4B8EFFB21FADE3262D2159C55F235AE</stationID>
+ <name>94,8 Metropol FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.9504</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1072791575013759401591C315632A40F3F6734FC75048A4345ACBB02D99067C5CF553DBC3</stationID>
+ <name>World Radio Network</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.9004</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>107279157688C1348A5C55ACED6747F7B0FDBD4863B36F11EFA5C80443FFE52355AE8C7EDC</stationID>
+ <name>Star FM / uniRadio</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>94.6005</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1072791577C45B6C9771EA973DF94328D91A5FDFF87B11790B23AD6001B218FC777E6CE2F1</stationID>
+ <name>88acht RBB Stadtradio</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.9255</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>107279157865A27D18F805B7F2DF9873794B299DEF581B7AB615949944EB0A232683FCAD38</stationID>
+ <name>KulturRadio</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.4005</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>107279157937EE7B714C71289579A1C99C508664996231F58F92529F7FE46E2B38FBF06657</stationID>
+ <name>BB Radio Havelland</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.0256</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1072791579332D9366F17BD87251985FC7C429E2952A69E06EFDD85D254BB4DDF8816A4408</stationID>
+ <name>Radio Paradiso</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.5756</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10727915801AC51F36D9DB58534B0CC40DF6055C0717ADE6B59776D1C04AF4C5E0E33D7718</stationID>
+ <name>KulturRadio</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.9006</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1072791581F1329D24372E9ED5171891011B1D34792BB423B640A0DD0248E6D82A403FA220</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.5256</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>107279158182E86933E311515E8355B8D72F1AE2E65F5887BF78E9F5B84BE1155BCABDCC8D</stationID>
+ <name>98,8 KISS 99 FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.9507</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10727915836948510D2C8FE10382E670931472C2D1CFFF6D2F80A617CDA8483EB678FA4321</stationID>
+ <name>Berliner Rundfunk</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.3008</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10727915848BC80E6D186BC53D388A41307E314B3C977185BB7BB24B0D86F329BEB29D1003</stationID>
+ <name>RADIO EINS</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.9508</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>107279158571AE18245596E9390E46457F573BBC152F4A7DCD02C52641CE192E727E60CD69</stationID>
+ <name>mdr SPUTNIK</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.351</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>107279158593519FA971426F180D2376830F7095EA51761ED137E43058D7B80A638CF58620</stationID>
+ <name>94 3 r.s.2</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.776</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1072791587EA7AA8881EF9FFE900E6B0BED14F01B38BA22CBC16526397AEDD3FB7D38C2758</stationID>
+ <name>Antenne Brandenburg</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.726</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10727915873FF901E6FC22915B56137882D60DEE023706BDB5FCF368209061582D2614758B</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.051</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1072791588378E9D932C33F1231837B9A2014E604CDE9DF44EAB8EB5FB2B55B5A6E9E3A1DB</stationID>
+ <name>Jazz Radio</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.476</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1072791589A310930786205964A1A672504FEFCFE0C3FC34AE2A43CCEC4345556C6167B580</stationID>
+ <name>Spreeradio</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.051</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>107279159044714ABF2F837EFA328827AD05695552023C89D6B4DC728EB175EE1BAC4A4D8C</stationID>
+ <name>104,6 RTL Berlin</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.076</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10727915928FF2DFF1847AC9ACEF507F3353229A2B67EFF320AB9712C200E002F37A28895F</stationID>
+ <name>SWR3</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.951</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1072791593C28480C8972B00751352BBA74BC446B3A7338BF5E581C0C38BBA95C063B479BA</stationID>
+ <name>JAM-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.876</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1072791593A55AE94E136B46AC1EF61FF2A8AA2DA703EA17189BA6C7B18BD9506CB4EB6DC5</stationID>
+ <name>Radio France Internationale</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.251</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1072791594E4FCB64702D7F3190369EE339FF4229396A4791AA1A1446012FA58BE91F25A95</stationID>
+ <name>WDR 2</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.876</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1072791596546338507FEBC23B2130D3E3BC0F909B6C7047EEDA64CF7EB6BD2938F03DA3A0</stationID>
+ <name>SWR2 - Baden-Wuerttemberg</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.876</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
diff --git a/kradio3/presets/germany/bielefeld-cable.krp b/kradio3/presets/germany/bielefeld-cable.krp
new file mode 100644
index 0000000..27eb68e
--- /dev/null
+++ b/kradio3/presets/germany/bielefeld-cable.krp
@@ -0,0 +1,230 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Viktor Walz&lt;L.V.Walz@t-online.de&gt;</maintainer>
+ <changed>2003-07-28T14:02:35</changed>
+ <country>Germany</country>
+ <city>Bielefeld</city>
+ <media>cable</media>
+ <comments>Stand Juli 2003</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338534721F575BDC275EA04DE8EB1822573BBF78CAC79BE4F5C7C4A1E8856B51A3BEB3E</stationID>
+ <name>Eins Live (WDR)</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>87.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853479C99169491CB9E205EE37C0CEEE60CCAA4D92C95599C33620FE5FABB431DE05E</stationID>
+ <name>WDR 4</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>87.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385347096E194DECF982EF0E203FCCB65A7865CA375479ED23333FE4B6355FC5314CC4</stationID>
+ <name>WDR 3</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>88.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853471B0AB0EB630C78AAFDC5D74D846015F37D2D8F5B63EB66AB1912AC45FE271C00</stationID>
+ <name>WDR 2 - Bielefeld</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>88.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534745150C4C391CE8CE6752152286C465D3E6D9F8C2EDC4AC8BC51534D18B3594CE</stationID>
+ <name>WDR Radio 5</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>89.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853471702D95E5DDE9D6EF080C59D2945B3E2A62DE4CDAF3AE54CD4EE3C1EA95337BD</stationID>
+ <name>NDR 1 Radio NDS - Südwest</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>90.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853470867E5554B4B21CCA421EB004735AB85918DE497C6E4EA20FEB5367AE2122CE9</stationID>
+ <name>NDR 2</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>90.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385347E112394DCB518377C15C262FCF1A783DD3C2C5E116831FD01FE8CD8790D587BF</stationID>
+ <name>Hit-Radio Antenne Sachsen-Anhalt</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853475955BD46B9457E53618AFCC2987C5603E39C3146CE8932E475E8F1E3C2B2FBB3</stationID>
+ <name>Radio 3</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>92.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853476AA4E4C6E14B26EE052233CD70E4896DBE7CBB4E7721777AFE8E65097FA086F2</stationID>
+ <name>Radio Melodie - Heimatfunk mit Herz</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>93.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385347D64F5115B7B0700C8FEF07E79B781B97F52CB909BF8D4C094F0B76BB0E93A725</stationID>
+ <name>NordwestRadio</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>94.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853474DEDBE2FEF0C70BB1D12824AF49C823909BFC17252C6B2D5B5637FA66CF3C100</stationID>
+ <name>bremen eins</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853471258DE41AF8FAD2712D058EAD645DE6EA6C2AA9EEA2530FF876B1F333E6F3B6A</stationID>
+ <name>hr1</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385347E0AC142E137B3B8CAC25909C1A27C184480122831D1BC14A375ECF97B6964CAA</stationID>
+ <name>hr3</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>97.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385347D147FCBA36E54B7C98C025FE3B1E58BF2CDD33434FB66733057A4E589CCF43C4</stationID>
+ <name>Radio Bielefeld</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385347F0D7926F9FC1F4F12750C7E77FF57495CD7AE1602576AA490F8B0E70D519E36D</stationID>
+ <name>radio ffn - Ostfriesland</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>99.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385347ACE1AA7A980A8DB8DDEBE15C8E0AE9C79476E53C5917E17CD8C0701A370F4D03</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>99.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385347D8318D15D7709DF4597FC9FDDF7BDAB28DD68E71D0AEEB14F22125D82034481C</stationID>
+ <name>NDR Info</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853470F784D0DF948B38E2AA957AE05534D006CA1A3DE49A4965292E5EE211671AAC2</stationID>
+ <name>Radio Gütersloh</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>101.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385347E0649FE6AA10478E0040153EFE29B7A0238D4E9384CD374A08C15C6A9127C59C</stationID>
+ <name>JAM-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>102.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853475C610F3C79A8AC7AC8F4CEE5B0DB7BF935C01B747889FCB933618CD56B015ED8</stationID>
+ <name>Hit-Radio Ant. Niedersachsen - OS</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>103.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385347D72F89D266D4188DE47B3C9E594C65BF8199B0A6E604799DEE83D82D0B4A6A2B</stationID>
+ <name>BFBS (engl)</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>104.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853479212494FDD15730E95D793D46EA0B53F9D57D93F9D941C95D99AC84BB851504E</stationID>
+ <name>JUMP</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>105.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385347F45BD794758B5B00EA10B1325E7FFDE0094582A22736125A1B1E246D4E341C0F</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853472217D4249CAA651B573FE3245294173962BAD1C58A2705210E74A73F2BD6DBB3</stationID>
+ <name>RTL RADIO - DIE GRÖSSTEN OLDIES</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853470254F73C29F9CC877723303C757756F68B70C65E07D61248ED4E5C46A0F223EA</stationID>
+ <name>sunshine live</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385347E605782281879AF70B85A3F9AC3E0D945C2F6BE6F4D92BBC901C39E58EF772A5</stationID>
+ <name>Klassik Radio</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>107.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/bochum-cable.krp b/kradio3/presets/germany/bochum-cable.krp
new file mode 100644
index 0000000..9b8c27f
--- /dev/null
+++ b/kradio3/presets/germany/bochum-cable.krp
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Uwe Buckesfeld, &lt;u.buckesfeld@gmx.de&gt;</maintainer>
+ <changed>2003-05-02</changed>
+ <country>Germany</country>
+ <city>Bochum</city>
+ <media>cable</media>
+ <comments>ish-Kabel, Altenbochum</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10912905602BFF04CB19670BC456A5A92D39EFACAAC87731AB0BCB4A74FC78D6F04CBFE524</stationID>
+ <name>NDR 1</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.950000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560FF85D911FC8F03A98BC433DB18C74595861442D25EBA431E581BE58D051F2B47</stationID>
+ <name>WDR 4</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.250000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560F283ABA7E153C0A42CCC86C0F2E646DCFA4FC48F8993D3AC220439AA21882BB1</stationID>
+ <name>WDR 3</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>89.300000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560980E4FDFEB8F37B7D16A37BC946C26B7C77FD944AF1D35341117788E8A202669</stationID>
+ <name>WDR 2 Rhein-Ruhr</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>89.750000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560C3D8E22B03F70EBF8E8DFFAE87D4937362569B4E0A7584231769629E4C8F293F</stationID>
+ <name>Eins Live</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>90.500000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056053ACECB379C9D37D4DC01AE3E92ECD20D40624BE3A42A53DA3BFC89DE0EEC792</stationID>
+ <name>c.t. - Das Radio</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>90.800000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905604E0B3D64CE40929723C40959F87DEF03AC2496629512231C7DCBD139B0CBCBAD</stationID>
+ <name>NDR 2</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>91.700000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560C3AEFE1C7EA0C876D2F1053950A0CA83375B20C35DA05133C915185E6A8888D9</stationID>
+ <name>NDR Kultur</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>92.150000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560A0327E63F8870F6324EB7E0EA8BB00192ADB2B61C5B15A7562BAA741670478D5</stationID>
+ <name>hr1</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>92.900000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560B5A1713E887FF41A9C0CCB25E056330FEAF08BADD3BEA9B8E083B52D894C4AC4</stationID>
+ <name>ERF (Evangeliumsrundfunk)</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>93.800000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905606FE0E629AA9A8C006CF42C9EA9F1DE2739E3A3B9C608E2AE439D392BFF3F33B2</stationID>
+ <name>hr3</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>94.100000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905607640D9AE9E8DA0867217BBFD6DDD7D652997FAE1B9388BB174376A03D5DC7896</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>95.450000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560FCD985A682D43549E7FD111FFE55E98B0C3810D3D1E26E135F2756554939A866</stationID>
+ <name>BFBS</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>96.000000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560ADB849E84B92F21694215165B3A130E345312CB7ABD30DC2576C82303F08EDBB</stationID>
+ <name>Radio 4 (niederl.)</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>97.200000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560D2A3DE7FCF28F738311AEFBCE92B2A4BA53A83650A9D3A9334BBA3B95F59897A</stationID>
+ <name>WDR 5</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>97.850000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560D70BB8DE632EFE3A5F0D80D945EC9CF3B499AD2707D11A80D123424935A6B5B6</stationID>
+ <name>Radio 98.5</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>99.400000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560BB8663A39E4FCFCF9FD1E9F85CA634993F6FCF7BB8CEA2DF830358DF7900E131</stationID>
+ <name>RTL Radio</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>100.150000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560581DED91B29F1A55CA2BF331AB48B0B57E8748F9D846FED427C98A838145D0B9</stationID>
+ <name>Klassik Radio</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>100.750000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560BD23501AE95DF819BD2BA51A82562C3B6156C82F6BC4D55D90A697228B94536C</stationID>
+ <name>SWR 1</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>101.850000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056019709B8AFA2C101DD38A6C874D908E223C469F22244AF405A8BD3F1958C1D291</stationID>
+ <name>domradio</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>102.150000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905601346434423CE7F07908FB59C32BAF3CA7A18488B03E6CF87E0465961E579E60B</stationID>
+ <name>sunshine live</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>102.600000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905608FD68A5C95D035390A73E4D863183A6F59F7A837B066A0CEC28825D4F4A2EE3D</stationID>
+ <name>SWR 4</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>103.750000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905602F067AF25FD949E4049B9491A84BAD599C78884E3A7F7363F472E93760EEBB46</stationID>
+ <name>SWR 3</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>104.050000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905600EE35D3A27BB03BF4BD862F9D6EB768A9905304CA0EB457ACBB786F45F192324</stationID>
+ <name>Radio Melodie</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>105.150000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560C3187C7C93886E48186EB8FE292F56B42221C257CAB3006488E462B081130D34</stationID>
+ <name>JAM-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>105.600000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560076212002D3FFD33B1F2B7C66B5955DF9AB63F4238D97E0C91CF1796159CA4A9</stationID>
+ <name>Deutschlandradio Berlin</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>106.300000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056059BCA311582DB502C7E1E3B38F67B6678DFBB6DCDCDCEE9F2C09A1F311E21DE4</stationID>
+ <name>bigFM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>107.150000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560420DB3FA26E17BC136A218484F82CB48740D924A401A52125C3D5C0D2FA63355</stationID>
+ <name>WDR 5 Funkhaus Europa</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>107.700000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/bonn-antenna.krp b/kradio3/presets/germany/bonn-antenna.krp
new file mode 100644
index 0000000..9047dfe
--- /dev/null
+++ b/kradio3/presets/germany/bonn-antenna.krp
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Dirk Meetschen, dmeetschen@web.de</maintainer>
+ <changed>2003-01-15T14:49:00</changed>
+ <country>Germany</country>
+ <city>Bonn</city>
+ <media>Antenna</media>
+ <comments>Bad receiving conditions in Schwarzrheindorf</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853456AB646102CCE56D1EBF48E721A8DDA7539A598B256C0A7FAF37BB408EA0CE9A1</stationID>
+ <name>EinsLive</name>
+ <shortname>EinsLive</shortname>
+ <frequency>102.438</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534518AAB679C75EE47F7E4C95D9051848DB75554A8CB43ABAD9458137B11054722E</stationID>
+ <name>WDR2</name>
+ <shortname>WDR2</shortname>
+ <frequency>100.438</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853455572559BD234348ABB0D40856E418F6E76AC9B2D83BE0C05625CBDF3CAFBCC3B</stationID>
+ <name>WDR3</name>
+ <shortname>WDR3</shortname>
+ <frequency>93.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385345647E088F83C5FB4BC0635274329C43322E0274E0C99D5164FF69E4BBFD3FDDD1</stationID>
+ <name>WDR4</name>
+ <shortname>WDR4</shortname>
+ <frequency>90.6875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853455A4783BB0059F8F25D072E7DC79AF115C5C5D3F02C49B326FE1AFE37798ADE82</stationID>
+ <name>WDR5</name>
+ <shortname>WDR5</shortname>
+ <frequency>88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385345190692A58FE101646E33493D3AAD119EF14DEAF0293D66EE7B1496BACC1FA8DC</stationID>
+ <name>Radio Bonn/RheinSieg</name>
+ <shortname>BonnRheinSieg</shortname>
+ <frequency>98.9375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385345AEB8476A4B78FCB2443AC8AAAF65A49422B1EDF3136BDE89AADE372B8BBF2BCC</stationID>
+ <name>BFBS</name>
+ <shortname>BFBS</shortname>
+ <frequency>97.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385345765C9482BE22C59D227BF8769C15994A27E234DB996AF779F1DDC173A251793C</stationID>
+ <name>SWR3</name>
+ <shortname>SWR3</shortname>
+ <frequency>94.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534527B78011CB9CE1E91DA5454AF3C6DF54474A57B26A5D95115692362E44DA36BF</stationID>
+ <name>DLF</name>
+ <shortname>DLF</shortname>
+ <frequency>89.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/bottenhorn-antenna.krp b/kradio3/presets/germany/bottenhorn-antenna.krp
new file mode 100644
index 0000000..62853ff
--- /dev/null
+++ b/kradio3/presets/germany/bottenhorn-antenna.krp
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Christoph Acker &lt;linux@schnurgasse.de&gt;</maintainer>
+ <changed>2003-10-18T17:32:03</changed>
+ <country>Germany</country>
+ <city>35080 Bottenhorn</city>
+ <media>antenna</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1068545867A0EA4353E0E7D22A37A3D347F5B9A699DB282E90874626F2A960E8801C049C43</stationID>
+ <name>HR3</name>
+ <shortname>HR3</shortname>
+ <icon></icon>
+ <frequency>87.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068545867B961E9D1E96C0FA98AA0A8CE821D2F265F13998DBF5CDB3687D3106EFCF1AD54</stationID>
+ <name>FFH</name>
+ <shortname>FFH</shortname>
+ <icon></icon>
+ <frequency>100.062</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10685458674706734C20E09CD5D06C74A65F68A2855CB05BE817D71885439E0AABE6C70A28</stationID>
+ <name>WDR2</name>
+ <shortname>WDR2</shortname>
+ <icon></icon>
+ <frequency>92.3125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068545867D8F238C5677597FE8B3E1B14E1FB6545F599713BD192B5732A09DBAC3BDCAA6E</stationID>
+ <name>HR1</name>
+ <shortname>HR1</shortname>
+ <icon></icon>
+ <frequency>91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106854586705E4A57121069F221D9D2D0CC81741049428AC87185A3E2E059B20D43E53DF81</stationID>
+ <name>HR2</name>
+ <shortname>HR2</shortname>
+ <icon></icon>
+ <frequency>99.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10685458670314B1748A0E0E8FD34CEC8081495B69B346CD2FDD933B487A31552B61273184</stationID>
+ <name>HR4</name>
+ <shortname>HR4</shortname>
+ <icon></icon>
+ <frequency>104.312</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10685458679B13E7A85CA25098AADD0D6ACE32F9E422F7A4ECFD88831F138BEECA91475A13</stationID>
+ <name>xxx</name>
+ <shortname>xxxx</shortname>
+ <icon></icon>
+ <frequency>88.6875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/braunschweig-cable.krp b/kradio3/presets/germany/braunschweig-cable.krp
new file mode 100644
index 0000000..438aeae
--- /dev/null
+++ b/kradio3/presets/germany/braunschweig-cable.krp
@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Christian Koot &lt;koot@m2.uni-hannover.de&gt;</maintainer>
+ <changed>2004-01-04T10:27:44</changed>
+ <country>Germany</country>
+ <city>Braunschweig</city>
+ <media>cable</media>
+ <comments>Netz der Kabelcom Braunschweig GmbH</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1077144985478CCB974572BC27143C3B9FB649933E47A17B4AFDD959ECECB333D9EA8AF6F7</stationID>
+ <name>WDR 5</name>
+ <shortname>0</shortname>
+ <icon></icon>
+ <frequency>87.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498566A46CD67C541FE2075472419B3E88A2051CAFA059B025F9D1118788B5C13298</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>87.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985DD118CFCAA874DADA55D0479E20FD40E93905C37CAADDD6D1EFA54052380A8D6</stationID>
+ <name>Nordwestradio</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985D01E551AADBC9876E3C002A0652E429D28091802F784796DD2F8C07A452C65D1</stationID>
+ <name>NDR 2</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>89.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985307C5235B3C9B007CBCA2B04CFCC1270EAD5B2DBBE37B0D8609852184888D1DB</stationID>
+ <name>MDR 1 Radio Sachsen-Anhalt</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>89.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498571FD73CDABD6C1AF04DA0DC633C4C8D51E9AE7E172FDE9E239424A0F69E7CCF6</stationID>
+ <name>89.0 RTL</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>90.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985B6635CBBE4680E395B8E018A3ED5EB76D9B0F7763A76A8B9A5DA467DDB6CD83F</stationID>
+ <name>Radio Melodie</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>90.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985FD3F2904153D89435274CE5819767E12CAA709D5A69089DF3CBE2771D218FA4E</stationID>
+ <name>MDR Kultur</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>91.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449857719C875D8D53477880EFCDCBB4069488C9337179C282B16C9983C8E83E6A872</stationID>
+ <name>N-JOY</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>91.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449859EE9B3ACCA35855CCD668611BFBF4D93F9287DE04408E999CB71CD9329CECB38</stationID>
+ <name>DLF</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>92.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985EDF0762A7FA5DEA1D859949AF7748C5766DB89249856F8D98A5499C2E1F8A522</stationID>
+ <name>Radio 21</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>93.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985CC5F9330E41CF2D24ED9C485289541663AF6592EE7F8D7E79ECABF63C91E8EFD</stationID>
+ <name>WDR 2</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>94.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985089AF1FD17D7416E9E8A83A48FDCAD04AEC3F56BE6B029E43B0E4C5DA20B2603</stationID>
+ <name>FFN</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>95.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498596C0E192467591890F2C691BA43EA63CD7F4B04D7CEED5A5954D3A996D428C98</stationID>
+ <name>NDR Info</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>95.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498518BDCEE927DFC747530F58E986CE62D7DADF241F0399FF93D23E0FA1A52E324F</stationID>
+ <name>HR 2</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985DFD1B6707567467ED3BEDAB6B33A507A7DE3930E1396590992B863BF26335457</stationID>
+ <name>JAM FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>96.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498516FE70C54663E26FAE64687A2ACA5F5BC26C029B3E38BE383A9BBC6F701420BF</stationID>
+ <name>JUMP</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>97.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449853ADFE8EA3887B2676D904B44F1EF73B5566F705BADF81366756899EA96EA98F5</stationID>
+ <name>Klassik Radio</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>98.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985C09D4F4CCF145DA17B9C5DB7F7743054565FCE1BF5522FCFCB1920B5CBDFB056</stationID>
+ <name>NDR 1 Niedersachsen</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>98.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985F1A97C9451003785F2D642069CA5B100233F362E853A75335F52054BA66DDEC7</stationID>
+ <name>WDR 3</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>99.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985F55ED30B38A1B29FA4C846EE51C3FD3D27608DD84DDC5DD0BE0D0B93ECF70E40</stationID>
+ <name>NDR Kultur</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449856046EA8F284C12F54FA8B5C2AB679EDEE2A2F1C59C3464814BBCD12ABA36BA10</stationID>
+ <name>BFBS R1</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>100.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985FDC4A294619B2240DC32452F1CC1FD34E8A12FDC678CEC668579BB3590E0EAC3</stationID>
+ <name>Okerwelle</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>101.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985C606766C857F37C436B18EB9C945C3498A228AB7FDC2ABE532653ADF66131AFD</stationID>
+ <name>Bremen 1</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>102.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449855375308BC31433898E16DA888075A2E387F8733ED66757ED666356561F8D3517</stationID>
+ <name>HR 3</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>102.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498556646B670AAF0BBD51CE216066395C8ECC8B5EB856ADA24FB93803BC6E93F815</stationID>
+ <name>Radio SAW</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>103.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498571A1EA71C8C0991C932D0786EF3AA9FEE489F1C74C0F781DC10E710FE4D3DD13</stationID>
+ <name>WDR 4</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>104.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985D71BA09E4F126E0DDC72F9D92080E400E216B8D1F1B5258970AD805C45A1A9AF</stationID>
+ <name>EinsLive</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>105</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449852B4FA3357CFD971AC00A629745D7E9CA36BA18439683906772108EC0D814C6B3</stationID>
+ <name>HR 1</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985AE9E6F2F1F153CCABC3F161F3A00CD9E5056F8CAE2C6A065CD2012543B7BCB27</stationID>
+ <name>RTL Radio</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985FA2E2F1624F50D5D1B4972D2D1455F42524C3D6530A01965223D53FDDAFEA22B</stationID>
+ <name>Sunshine Live</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>107.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985F81FE6707D09C78687E4F3D1EB76B3E0441D68D1977F233A0A16C43CF178EC04</stationID>
+ <name>Hit Radio Antenne</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>107.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/braunschweig2-cable.krp b/kradio3/presets/germany/braunschweig2-cable.krp
new file mode 100644
index 0000000..0c68551
--- /dev/null
+++ b/kradio3/presets/germany/braunschweig2-cable.krp
@@ -0,0 +1,306 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-1.0beta3b</creator>
+ <maintainer>Axel Zechner</maintainer>
+ <changed>2006-06-01T00:00:00</changed>
+ <country>Germany</country>
+ <city>Braunschweig</city>
+ <media>Kabelcom</media>
+ <comments>current settings; differ minimally from krp preset</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>11568437377AFE6DF94E5F38851554AF6FC99D375FE8C766C1B6030685A8B6B69E9BDEE7D0</stationID>
+ <name>WDR Radio 5</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1156843738E5E4BC76AACF2E15431673580487666667892FED5BA39AD6B86C761AD38C5E3F</stationID>
+ <name>Deutschland Radio Kultur</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.9751</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1156843740BF845D7E45677E9B8AEFC271ECFA13E31AE0C9CE7373195E3D953D6DF13046C8</stationID>
+ <name>mdr Radio Sachsen-Anhalt Magdeburg</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.7501</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11568437415415D9981A315CD63A84A17F7270DEE444B82B0011CF80163F8B6DC317A794DA</stationID>
+ <name>NDR2</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.2251</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11568437444D544E1DDF75F427C722C32AF75EF40890748AFCE111894D7FC1D68D762A54A1</stationID>
+ <name>89.0 RTL</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.1002</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11568437466C520C9E83E80DE2A96B25C79E3EDCE9C35DFC5B73ECC1DAF1DFECF930CB6E55</stationID>
+ <name>Radio Melodie - Heimatkotz</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.8252</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1156843747F2498A4FD9C7F7C8178FEF9707E6620052978F973CA44A7F44E898B2CC81771D</stationID>
+ <name>mdr FIGARO</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.3003</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1156843748E4FF9B038672582837037A9D7C83381918F3603E40B7897F152AC218729E8814</stationID>
+ <name>N-JOY</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.8003</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11568437500156365F849B634C2EAE8774E7AC8938682DA5EA5A317FDE9742F7F740730B09</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.4753</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1156843753539AB14F59A2315FE17F8FAABAA52F90F595F17AD7789E65E20577E77C9CC198</stationID>
+ <name>Radio 21</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.6504</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1156843754585C44A1727EDBA7F848990E146D1BB578AC665F630362B030B34E431667CA93</stationID>
+ <name>WDR 2 Bielefeld</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.1754</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>115684375678347F601D52154003832A2E7B65C72A45056A6D13DDC37715ABA51D03B842AB</stationID>
+ <name>Hit Radio FFH</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.8255</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1156843757C199BF3AEA2EACFCE962694AA26764C47C667B6A2E91AE43CE04A5ECEB0E38E1</stationID>
+ <name>radio ffn</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.2755</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>115684375855EEA7EE0F1730C451430CD944DF99D0899DAED58224A16312162CEC1A21F641</stationID>
+ <name>NDR 4 Spezial</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.6005</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1156843760E0589FACCAFA6BEAF13883DDCABE740387980AE93DC4903062BC7AF8D1C5BC33</stationID>
+ <name>hr2</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.1006</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1156843761F8FD6EA87EECC7EF93BB668660D1DB56C07086A143D6F0B9B7E1C84A68ADD89B</stationID>
+ <name>JAM-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.7756</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1156843763CBE1B66699A458BB8A9E8882EE8AD95D57A75F2680EDC1105903195D4CC04482</stationID>
+ <name>JUMP</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.6006</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11568437652552F8396BE3860174949D91E3301C0FE9B750452F32C96126F30EEEDA4FBB4A</stationID>
+ <name>Klassik Radio</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.4507</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1156843767590854DB334B46FC6168C1B3B05D45CCDEF5A444D0D2C9DD8228CD639DC3C750</stationID>
+ <name>NDR 1</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.8757</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>115684376844BCB6546D10A9D3C8F62EBBC53977879930D889D943C3372267D7FCA9F1B339</stationID>
+ <name>WDR 3</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.6508</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1156843770E0B5E58DD229188754012AF89EEAEDFFBEDCFF825152E35514558623EC519F29</stationID>
+ <name>NDR Kultur</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.101</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>115684651035148582470BD3561A0B8EAD3A50E1C82E9C7663182708C7876577182B94B872</stationID>
+ <name>BFBS</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1156846641F8937A3D3BA59994C8ABF4D89DB02751DD2F22E2E96D7B65F1450A544C4B75C3</stationID>
+ <name>NDR Info</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11568437743DCDDFD4F420BBD4312B84F97675ADC6BFDCC6624D64FA807AF3E048E79B4BB1</stationID>
+ <name>Radio Okerwelle</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.676</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>115684669799BAFD55186D5B325A3BBFF11FAA1C77936AF55DC4C106E8AEEA37C42C7C453E</stationID>
+ <name>Radio SAW</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1156843777C09B2173D168B1A2930E5A6A46BF0364FCA4826A9E608F54CFDFF8E51527A474</stationID>
+ <name>hr3</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.776</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11568437802035E2AC7670848C443D060C0751447C9CEE16CD065FAD3BF292CC800913371C</stationID>
+ <name>WDR 4</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.201</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11568437827399F4202566CAEAB9877B94B330C87B057E0AD21CAAB3ABEF6C1618ABFDD6D4</stationID>
+ <name>Eins Live</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.026</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1156843784DA047DB41CEA557F6024873289ED1B11F281C90DB887A155130631F731789FCE</stationID>
+ <name>hr1</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.726</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1156843786E9EFF08AFC46C27588803B3D9999E78278C2BB1C225A7C65B11AD1262EA4961D</stationID>
+ <name>RTL RADIO</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.551</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>115684378814578FEF5D5C1A423541866A2B0578C4342B91B1B33D5AD4134C10DFC53D2919</stationID>
+ <name>sunshine live</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.176</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11568437898AFC35C90CAF6A0597D4F5CCFF714041FD8CD6FF4717210066EA8EAF85472BDE</stationID>
+ <name>Hit-Radio-Antenne Nds</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.651</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
diff --git a/kradio3/presets/germany/bremen-cable.krp b/kradio3/presets/germany/bremen-cable.krp
new file mode 100644
index 0000000..35410e4
--- /dev/null
+++ b/kradio3/presets/germany/bremen-cable.krp
@@ -0,0 +1,278 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Stefan Carstens &lt;scarstens@nord-com.net&gt;</maintainer>
+ <changed>2003-11-16T11:47:16</changed>
+ <country>Germany</country>
+ <city>Bremen</city>
+ <media>Kabel</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10771449858D8FE58279E5E6D44A8CD9C5110C714898122F50F269FDCCA7388B98C85E7A0E</stationID>
+ <name>nordwestRadio</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>106.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985E13659C87ABDDCF56D95A54A65DD5B3FA372FB2225E53819E204B87A788DD5A4</stationID>
+ <name>Radio Bremen 1</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>87.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498555097D7171CCDF7812E6EFB8985C9C9AE921E9AC9CC173CB8B9898F44E40B84E</stationID>
+ <name>89.0 RTL</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449851BA8EAB6953207EC9D637C20F9D9673EED9CD62314825096E6AEEBD30825F06B</stationID>
+ <name>Funkhaus Europa</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>88.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985D623F2F44A6E27D930CBD5D5CE8C0CA13F3194287293D91BE3211A1986CB748E</stationID>
+ <name>Radio Bremen 4</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>89.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449858CFAC715CB96A887883A922FCB40CB11B7BB266EA349BA11D48D6B597DDBA29B</stationID>
+ <name>JAM-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>89.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985C44470AB48472D74EC90023A83BA34BA2F419524F634546049CB6FEE4563EB51</stationID>
+ <name>NDR 1 Radio NDS - Nordwest</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>90.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985C7310454C71468BEB0224B2A7C3DE4FFB37E933CB138512B10F3045049D376D3</stationID>
+ <name>NDR 2</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>90.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498594D4D57B93014C58A448929831B1E0A2494B92463D875EF8270787122159F3B4</stationID>
+ <name>NDR Kultur</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>91.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498570DAA3ADD3858AAEE2C41827DC14B6A55CB9D7CB0605D175A1F16A1182CCF2C2</stationID>
+ <name>NDR 90,3</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>92.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449850A5C75017328E0CDBFCB116222CAC93CBCA860DBD5795C99E3E4F16AFEC2C989</stationID>
+ <name>radio ffn - Oldenburg/Bremen</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>92.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449858BAE01791DF0BCEEAEC6D7AF71071C3FFB7B662EBFA3462450229C7F54F89E59</stationID>
+ <name>Radio Bremen Parlamentswelle/NDR 4</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>92.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449855063F9516508780A9BC383C6717060EA500FE5372537C66BB5B4B5AC8C492624</stationID>
+ <name>Radio Melodie - Heimatfunk mit Herz</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>93.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498579D1F7601255AD5799C8AFB564F132F2AAAEB5054B2A44C41E291BF33A37D4FF</stationID>
+ <name>WDR 3</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>94.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449856F5337F25D69AD6736867F7D570FAB6B64713F34640938FEC397964E5F8A197A</stationID>
+ <name>Eins Live (WDR)</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>94.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449851B42B0D8D1CC18397AE2F1E6B3C0D67F8CF1E8D6098BA59930689825DB5D8966</stationID>
+ <name>WDR Radio 5</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>95.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449851A0C244D6852F486F645D5E94C7AD43AE7BCCA2DB6D6B5D1C832D6A9BFE259C3</stationID>
+ <name>Klassik Radio</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>96.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498518D1785DF61547515A7909F64AE54BA2A7A6F4545FD20A941E5A86E2A2822915</stationID>
+ <name>Hit-Radio Antenne Niedersachsen - Ostfriesland</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>96.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449854C405C169E03A57A34B35E97C78F19D175267967835D364F3CDBBD9DE07B9AA8</stationID>
+ <name>sunshine live</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>97.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449857BFA6A8963BCEEC0C70020318B7AA44A4F6A6B113A2AC58BD3395918C25FDB54</stationID>
+ <name>Offener Kanal Oldenburg</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>97.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449859C31BE591DA0F65B25DA68E89004F6052EF82BB60C8465FF4360BADC74730EC1</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>98.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985357308FBBD5A805D6F964F30FD6D578B834C24821B196E34E8FE2054AE1869A0</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>99.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449859DE1286421F95B8435C445BC053DCF08DA9EEDCE5F5C5B2D8B1C914404B003F7</stationID>
+ <name>JUMP</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>99.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985823939E25C1566F6BABE194899333F7E9741A99BCAC6C8C0B80928D453297B3E</stationID>
+ <name>mdr1 RADIO SACHSEN-ANHALT/Magdeburg</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>100.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985A526F47A6E16D882CA73C5572C9B56B21742E6046EBF60D681A2DD4241A5227E</stationID>
+ <name>WDR 2 - Rhein-Ruhr</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>101.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985C8A90025F545BC30312C33F2C9F11A93B2821BAACF43DCB08A99C0B8FC574C03</stationID>
+ <name>Offener Kanal Bremen</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>101.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449855DBE33E538CE16F5A5E3DF13F5BE87169DB278D5E2E05319B7E70F1833890D9A</stationID>
+ <name>NDR Info</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498572DBEF7C65458B70FBF805BB598B270AFFEAB2C2E20623FC7009844C2161F019</stationID>
+ <name>Radio Wir von hier-Unser Sender HB</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>103.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449853F19AC908867A64CD3F7A067CAF855199050E786D85C62BDD9F2EB26D62229A3</stationID>
+ <name>BFBS (engl.)</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>104.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449851CF91B98DE42AC55AD51459F7F7BBFEE91D79E13377AA4B62261235ADBB64733</stationID>
+ <name>Radio Hamburg</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>105.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985C190AD307FAC3585C17E58B0BDF40067C325A3AE148F34A03E8CDA72A54AA185</stationID>
+ <name>N-JOY</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>107.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>station preset file
+ <FrequencyRadioStation>
+ <stationID>10771449854BF4C6C3751542B93EDBA6CE12F95921F01A67EA18659652C557461E79CBB5C7</stationID>
+ <name>WDR 4</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>87.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985E0D83001D056636EEE6B2544B29236DFE3EE20F4CBC4AEA013E4259F9397F8EE</stationID>
+ <name>RTL RADIO - DIE GRÖSSTEN OLDIES</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/bremerhaven-antenna.krp b/kradio3/presets/germany/bremerhaven-antenna.krp
new file mode 100644
index 0000000..68f919e
--- /dev/null
+++ b/kradio3/presets/germany/bremerhaven-antenna.krp
@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Tim Gollnik, &lt;Tim.Gollnik@t-online.de&gt;</maintainer>
+ <changed>2004-06-09T11:18:14</changed>
+ <country>Germany</country>
+ <city>Bremerhaven</city>
+ <media>antenna</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1091290560F19DCAC9442D72D89504676F5CED64569520089652BE8A8A468E3AE29FBDFA1E</stationID>
+ <name>NDR 2</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>87.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560DCC0EEE1C09CE8C77AF9C4363AB86860E2B729254B6CBB23609E01FB38AB2C11</stationID>
+ <name>NDR 1 Niedersachsen</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>88.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905603BB0C169D59130A7E4CDB50299B30B4CBAE3140C2E30208DB3BA1D7CA865DDC3</stationID>
+ <name>NDR 4 / Parlament</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>88.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905609C9242B6154C7E571A4C9E1836EBA6E697BFC7228FDBAC875A7C485BAA697684</stationID>
+ <name>NDR 90,3</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>89.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056091591890E743FC62C0FE220A787BDAFD61AC8C983B8D81A36B97886C7BFCA512</stationID>
+ <name>NDR Info Spezial (MW)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905607D32CC781625CA4804D255AE88896A46524D21EDD358490CD2985F9A7F94BCD6</stationID>
+ <name>NDR Kultur</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>90.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560A2E30DF5AF74EC8699A380BEFF08A942ACF65417DD305FECEA447369716BDB90</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>91.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056092E86276D7410E5C7CC3D2B9F4463DD63CEE5C9363D732181E089F37D0EB7D7A</stationID>
+ <name>Radio Bremen 1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>92.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056009982D289707EE2CCBABFBD81A2074A64E056DFF11E2E9BBD05CDE64A851D141</stationID>
+ <name>Nordwest Radio</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>93.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560D51AC5807AB56AEC3A4BF76F14C190DA9E6569068F1CF7AF25E3144075EA9E41</stationID>
+ <name>Funkhaus Europa</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>94</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560B66E310EC16F9DE501DA13CFCC5040FF0B31D62247C7CEFE5628C4A3F36A85C6</stationID>
+ <name>Radio Bremen 4</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>94.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905602AC2A9C53F9B6E6EFE9E1674878400E7FF5C7F124684CC7F57C9C216A0E01366</stationID>
+ <name>Energy Bremen</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560E610CC27C3CF08B84731FA4FF3C98EC6CB82AD5443E30049E539A2F3443F4202</stationID>
+ <name>Radio HH</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>95.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905600334C7216171F1A43051A8A499453CB86833E4DD3268FC448073E63423DD667C</stationID>
+ <name>Radio ffn</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>96.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905603085269311505B713B67522CA258791BE5E96E28D39638B55DC412A103BFC178</stationID>
+ <name>OFFENER KANAL</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>96.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905606EC5591E60AB4673DCEB558470C77BCB246DA9FB755D7283719019CC0E270E4E</stationID>
+ <name>AFN Power Network</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>97.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560D30C88E8D43940B11373590F658CC96DDD2658EB06EC3F1581B777F852321E5D</stationID>
+ <name>Delta Radio</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>97.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560BA5ECFEDAEB193F5B8630C1C38A93A85304BBAB9AAC1D47661E3ED92077A6B02</stationID>
+ <name>Radio RSH</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560252B8C5FD95DDBE48DAEF86135F2BF2FA4398FD7C7B37FF425BCCFF321514FD6</stationID>
+ <name>HitRadio Antenne Niedersachsen</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905602ECB0B3F03E29CEFD2E07F844BF99621F08CE8B99DBDC6519D813891CE76C734</stationID>
+ <name>BFBS Radio 1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>101.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560F205062F8746603F2F1CF3C697878D9E82833AA5871AD5F89740068468DC299F</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>102.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560645B2E7C0C5F1DD65A0426497CA4618735145E5928DDFA824957C964EE27DCC2</stationID>
+ <name>Alster Radio</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560F63220989D5D33B98DFA024203D01D1D4BC59C3226C715A5C44A28159791C189</stationID>
+ <name>sunshine live</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>103.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056099FECBDC47A1044EBE759AB969D64FBF1B2590C8AEBA9179E76649818E61AE4C</stationID>
+ <name>RTL Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>103.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560D5DCC73CD877D51CDFB6975B7A4074A9A26D257267DE6527CBF8C3FBFE793DE4</stationID>
+ <name>n-joy radio</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560E53E10FEF4C1654C3F4D497D8F8EAA4BEAACB473F1C7500D277349F4D7514844</stationID>
+ <name>Klassik Radio</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>104.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905608D35FCB469CB01369E584315BBADAABD9D7B9C8B9D1C1837372BD88FBAC7AB6B</stationID>
+ <name>JAM-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560C494E867489FA592C07DE70CF3C1216B4F5E6D1C0C42987E3FC457B4B9E8B5FC</stationID>
+ <name>Radio Melodie</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056054E0EC549A20C823CC67874F7909A856ED54416CDD24B65DE1C12AD39B5B5EFE</stationID>
+ <name>WDR 3</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>107.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/bruchkoebel-cable.krp b/kradio3/presets/germany/bruchkoebel-cable.krp
new file mode 100644
index 0000000..fd43479
--- /dev/null
+++ b/kradio3/presets/germany/bruchkoebel-cable.krp
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-1.0beta3b</creator>
+ <maintainer>Werner Muehl, &lt;info@ib-muehl.de&gt;</maintainer>
+ <changed>2003-10-05T21:35:53</changed>
+ <country>Germany</country>
+ <city>Erlensee</city>
+ <media>Cabel</media>
+ <comments>Stations/Frequencies for Hanau, Bruchkoebel, Maintal, Erlensee,
+Rodenbach, Neuberg, Langenselbold</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>106854525432A288014DF7C85A99EB501E082B06B4F96949EBAE12DD4A859C19C3636C7101</stationID>
+ <name>Antenne Bayern</name>
+ <shortname>Antenne Bayern</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254739FC26D6EA0AFF43BCC062A18F2B696DD53495A4DB3E0CE961695FDE6CF251C</stationID>
+ <name>AFN</name>
+ <shortname>AFN</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254A4F642897A3A7A2FDCF75CC91EC34AB83409A44E520926B65616CB71A888A632</stationID>
+ <name>Bayerischer Rundfunk 1 (Main / Franken)</name>
+ <shortname>BR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452545BFB673861F03BE773365B16486F1312D0E67EE191A44D3E6E8A2EDE9CFF860B</stationID>
+ <name>Bayerischer Rundfunk 2 (Main / Franken)</name>
+ <shortname>BR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254A50C8E4F463384279978E9990FE99AD5E8D02892DC85239B19FF5D03D0B2D2E6</stationID>
+ <name>Bayerischer Rundfunk 3</name>
+ <shortname>BR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452542B850A62AFBC32E86A8AEEAFB6ADDB4471C997F6EC31B99A4705C034891FF15F</stationID>
+ <name>Bayerischer Rundfunk 4 Klassik</name>
+ <shortname>BR 4 KLassik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254AFA422E0A4F4D99F24FFC42C2EA3E5563D518014CAAD3D29F69BC15105EA2B8D</stationID>
+ <name>Bayerischer Rundfunk 5</name>
+ <shortname>BR 5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452544B20BEB753EDDA4B34C42E483252E211C5BCB770258F801EE1840268FD85CCA2</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>DLR Berlin</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254870A846605C88985C8D465AA421B30FF35FDBEBB55A43E57FCAFD16154206359</stationID>
+ <name>Hessischer Rundfunk 1</name>
+ <shortname>HR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254933EFC46CF2BFFE13CC182D4B05FF2D2461E6F6D7589DDAF3C87DA473962E186</stationID>
+ <name>Hessischer Rundfunk Klassik</name>
+ <shortname>HR Klasik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11367224732DD9647905D1A0E3003D6727D6C6A468489AE8E1B8349C8BDE108A1BE864F4DF</stationID>
+ <name>Hessischer Rundfunk - Info</name>
+ <shortname>HR - Info</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525467DD7BA14D8A886573BE9AED9A64A86C9F8E5AF487245E4146D0307E1EBAFF45</stationID>
+ <name>Hessischer Rundfunk 2</name>
+ <shortname>HR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254702E9C08B12CD8B1420A2124B447183B0A668DFCB197EE89DF93E6ACF98E9812</stationID>
+ <name>Hessischer Rundfunk 3</name>
+ <shortname>HR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452546CFB27CC9962BF5D8977046D34628F539AA5D68B836F03732D03EC4943541F6C</stationID>
+ <name>Hessischer Rundfunk 4 Rhein-Main</name>
+ <shortname>HR 4 Rhein-Main</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452549B0EB616A99AF727280D11B619234DFFABDAA8F588578B31D946064A1E4F0CE1</stationID>
+ <name>Hit-Radio FFH Rhein-Main</name>
+ <shortname>FFH</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1136724537075C78FBD2816E19C6B77CC4DAFDC888A9DC10DEBA65983A0B76537048067AE1</stationID>
+ <name>JAM-FM</name>
+ <shortname>JAM-FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525483F9405C61CE3EED8B1790B72AE42D9ECF45255D65635DCCA1A185EDB0876D34</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11367244420E0433EBB9A7933AE1DFCAE9AC5968416B2B9C1718E31FED01DFD0676DC2505B</stationID>
+ <name>MAIN FM</name>
+ <shortname>MAIN FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254D0CE4F17DAD846DDC36D7DC42608C19C2F18B4885EC251CE790C84C41CB27447</stationID>
+ <name>Planet Radio</name>
+ <shortname>Planet</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254AC687063AB78F567A8746D9C8C6B2122EDD6595C51D4BE060F507045CE72F2C3</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Melodie</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1136724286E5985147114BB716FE9E15FA357C38BBB0CB331B5396CEB9EBDBCE94915F4A18</stationID>
+ <name>Radio RPR Eins</name>
+ <shortname>RPR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525437C470CE8A4CDE8335D5C2F7734E80C021240F03A3CAAEE3012CD289EDC275EC</stationID>
+ <name>RTL Radio</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452541FF3CA5C607D5DE6797DC299B2145287B967056B74590104E2C042A49CDF62B6</stationID>
+ <name>Sunshine Live</name>
+ <shortname>Sunshine</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254C3EDE8BB17AC69C6BFAE1D0C57D3226A907A7420C6B2B792CF8EA9D2844D5BFC</stationID>
+ <name>SWR 1-Rheinland-Pfalz</name>
+ <shortname>SWR 1-Rh.Pfalz</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525444FF41C1C7E711CF7C74D8AC38A735064E85E5376AC0F57D568D429B9E913BD5</stationID>
+ <name>SWR 2-Rheinland-Pfalz</name>
+ <shortname>SWR 2-Rh.Pfalz</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254CC505A9B2AEF4B7C6BDA243798B7AED04B2D39569524C28CC4BE3EC0CA46D765</stationID>
+ <name>SWR 3</name>
+ <shortname>SWR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254355DB6BC4C4A688C5E1FEF7DBF78B7FB62C40545D488ADA1A4CCF51AF702F839</stationID>
+ <name>SWR 4 - Pfalz</name>
+ <shortname>SWR 4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1136724325091824FE3A7B2E74B15CCE068D71760C4BA8271CE5F3511F5BA9F69098A9C9C8</stationID>
+ <name>WDR 2 (Siegen)</name>
+ <shortname>WDR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525406B343319F3EC21170A752D910A7C6C26670A13961C9F0CC9652DF5D53695E68</stationID>
+ <name>WDR 3</name>
+ <shortname>WDR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11367226162FF388CE9717148283756F57FE37EEE28DD6148247865CBD8BC64CF3C8EF3A01</stationID>
+ <name>YOU FM</name>
+ <shortname>Y</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.8</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/chemnitz-cable.krp b/kradio3/presets/germany/chemnitz-cable.krp
new file mode 100644
index 0000000..8a4441a
--- /dev/null
+++ b/kradio3/presets/germany/chemnitz-cable.krp
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Stephan Grodde &lt;st.grodde@gmx.de&gt;</maintainer>
+ <changed>2003-06-18T18:40:30</changed>
+ <country>Deutschland</country>
+ <city>Chemnitz</city>
+ <media>Kabel</media>
+ <comments>RFC Breitbandkabelanlage Chemnitz</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385349D407A13FA2644FC6D7D7848ADD50770D0E6F1753CF4981400B49932396C1B2EF</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <frequency>90.85</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349158E9E54C0E414EFF65CFA9DE9805D39AD11B12FBEE146186089DFFA1897472D</stationID>
+ <name>Deutschlandradio Berlin</name>
+ <shortname>DLR</shortname>
+ <icon></icon>
+ <frequency>97.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853491FDBBD5CC61D321610150FE4C1A0062A85EB5D07FD3EC15EEC5715BCCC38E73C</stationID>
+ <name>Radio Chemnitz</name>
+ <shortname>Chemnitz</shortname>
+ <icon></icon>
+ <frequency>106.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853491F5ECBE9F4BF40490FD7F66E60945AE992DE668EAB0166286DE907A1F536BFD7</stationID>
+ <name>MDR 1 Radio Sachsen</name>
+ <shortname>MDR 1 Sachsen</shortname>
+ <icon></icon>
+ <frequency>88.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349E469F2505FF697D1D78AA6A9642AD51F15FE160540F1F1A19DB3CA425A682E09</stationID>
+ <name>MDR 1 Radio Thüringen</name>
+ <shortname>MDR 1 Thüringen</shortname>
+ <icon></icon>
+ <frequency>99.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534974D864189261322AA5719E8DD0DE8E09C62D8A19BA342F83BF1B6E8B5BF91B0D</stationID>
+ <name>MDR Kultur</name>
+ <shortname>MDR Kultur</shortname>
+ <icon></icon>
+ <frequency>89.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349114D1C537739BF94FFEA19A4ED66D6F07E3D420723FF93462CFF70829DA33CF0</stationID>
+ <name>MDR Sputnik</name>
+ <shortname>MDR Sputnik</shortname>
+ <icon></icon>
+ <frequency>103.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853494D4730E9DA7B562FCD270526067F0B3D8861F854E446BF2EB23D619BA40D6E44</stationID>
+ <name>Antenne Sachsen</name>
+ <shortname>Ant. Sachsen</shortname>
+ <icon></icon>
+ <frequency>98.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349D94932ED1665AF14D8E32F1B607D1C5B42652A6FA6F0AEADAECB1FFC424687D5</stationID>
+ <name>Antenne Sachs.-Anhalt</name>
+ <shortname>Ant. Sa.-A.</shortname>
+ <icon></icon>
+ <frequency>91.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349E4430785227604A5CEA002F212D57C1CE5043245BCE02AAEE480B118D117F887</stationID>
+ <name>Antenne Bayern</name>
+ <shortname>Ant. Bayern</shortname>
+ <icon></icon>
+ <frequency>95.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349E8A755BC9EB95FF95466F0D325F54A7392A90BF8C730EE205CFDCF9FEE0A4D79</stationID>
+ <name>RTL Radio</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534908EB104366C088F3FB539B6D2F78F45B5A6A62978FB2483EE184A24394A69D68</stationID>
+ <name>R.SA</name>
+ <shortname>R.SA</shortname>
+ <icon></icon>
+ <frequency>102.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349AA8CDB938E8013628C5F0FAA43ECCB9DE97C2806DE2499A0DA686360B1D320A5</stationID>
+ <name>Jump</name>
+ <shortname>Jump</shortname>
+ <icon></icon>
+ <frequency>88.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349B7A6202C1A540A1FA51DBD47AB7DD4065B3040791FB795E448E967EB5B26D501</stationID>
+ <name>Radio Energy</name>
+ <shortname>Energy</shortname>
+ <icon></icon>
+ <frequency>107.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534926BE0221463D729182AEE9AA8139847B30B11B0C8339570D47DE818AB06171F2</stationID>
+ <name>Radio PSR</name>
+ <shortname>Radio PSR</shortname>
+ <icon></icon>
+ <frequency>90.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853498BD6B5631310F4A4F974E2BD8DC49F3A578227177CA1CCFF362F69A5C7F4A256</stationID>
+ <name>Bayern 1</name>
+ <shortname>Bayern 1</shortname>
+ <icon></icon>
+ <frequency>92.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349819BFA83547610BFC648648342A6050ACE9B761964C501079E5D1048D5D8BB51</stationID>
+ <name>Bayern 2</name>
+ <shortname>Bayern 2</shortname>
+ <icon></icon>
+ <frequency>93.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853495E197B10F4CD7FA7D0E9B4B34D75E6F98BE699855D11E04A8F432C088E588285</stationID>
+ <name>Bayern 3</name>
+ <shortname>Bayern 3</shortname>
+ <icon></icon>
+ <frequency>93.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534925E52C3DDF19832B8B89002F8128EA07E491B99DE25D40A264C74C7B24756A23</stationID>
+ <name>Radio SAW</name>
+ <shortname>SAW</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853497D96D5C24CC7FC067B93E5F2CAF1BBB3D1D6CF02946841993C872BCC77D2AC6B</stationID>
+ <name>NDR 2</name>
+ <shortname>NDR 2</shortname>
+ <icon></icon>
+ <frequency>101.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853498125884E49A8373A0A1A21554491A9B3CD4E65EFD7795A8E4E472EF39C5EBE86</stationID>
+ <name>SWF 3</name>
+ <shortname>SWF 3</shortname>
+ <icon></icon>
+ <frequency>104.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853494C2714C9CEFDDB93D5FD1B90B1915E24CE7A6AC712A26D24EFF36581274FAA2E</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik</shortname>
+ <icon></icon>
+ <frequency>104.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534902D492327B9057412F0A23A8E63AE6B7505E98C614BB6C46919254358519EB91</stationID>
+ <name>Radio Melody</name>
+ <shortname>Melody</shortname>
+ <icon></icon>
+ <frequency>107.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/cologne-cable-2.krp b/kradio3/presets/germany/cologne-cable-2.krp
new file mode 100644
index 0000000..42097e3
--- /dev/null
+++ b/kradio3/presets/germany/cologne-cable-2.krp
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Torsten Kleinz, &lt;torsten.kleinz@web.de&gt;</maintainer>
+ <changed>Feb 25th, 2005</changed>
+ <country>Germany</country>
+ <city>Cologne</city>
+ <media>Cable</media>
+ <comments>Netcologne Multikabel</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1116455444CE9F7B81EA9432FAF8672A7AE7581F4A96B9CFD1540C34BB21937E50C24E094E</stationID>
+ <name>1Live</name>
+ <shortname>1Live</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444FB385BD69C846052D7B784AC66CC7CB5DE4A73992C923CA2FFE8FEFCE8855E0C</stationID>
+ <name>WDR2</name>
+ <shortname>WDR2</shortname>
+ <icon></icon>
+ <frequency>98.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544447A9517A85ADEA3E54BC30854754DC51B46F0B761D103849DD78C3C7CB12D75A</stationID>
+ <name>WDR3</name>
+ <shortname>WDR3</shortname>
+ <icon></icon>
+ <frequency>94.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544494A877244A82EFEE3C4815D05DE7440AC889C6C31B37E8ECA873920F96FB7F43</stationID>
+ <name>WDR4</name>
+ <shortname>WDR4</shortname>
+ <icon></icon>
+ <frequency>91.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544430055FF0D19F89075684F434E45F0B103A1F087191439F772E0C48507E83A4FF</stationID>
+ <name>WDR Radio 5</name>
+ <shortname>WDR 5</shortname>
+ <icon></icon>
+ <frequency>95.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444B169AB25095D1C964275D5A367763454D0CF6C49621A73B9FE1CBAEC502DD721</stationID>
+ <name>WDR Funkhaus Europa</name>
+ <shortname>WDR5 - FH</shortname>
+ <icon></icon>
+ <frequency>91.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544480B51626DD3FC823C76528719E9719EF9963C935952BDC82FF9634D771D77259</stationID>
+ <name>SWR1</name>
+ <shortname>SWR1</shortname>
+ <icon></icon>
+ <frequency>87.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544439E0DA5B46DC74C1D5ACD20E4DA28DE08F16E4C8D75D5A140632D55ACD624931</stationID>
+ <name>S2 Kultur</name>
+ <shortname>S2</shortname>
+ <icon></icon>
+ <frequency>90.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554444BDC0951D31A0878BB10C213B1AC5449CB7E7F92D1C97DA2A047385254268496</stationID>
+ <name>SWR3</name>
+ <shortname>SWR3</shortname>
+ <icon></icon>
+ <frequency>103.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544429DA863632617DC15A9B6DCD977EDE585AB92574E324DED342B2A6F20DE541FD</stationID>
+ <name>SWR4</name>
+ <shortname>SWR4</shortname>
+ <icon></icon>
+ <frequency>88.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444F02E89EBEA86B22579E0AD3E0CF1C49D4AC2CE310603F1F7BDCB129CA1D11630</stationID>
+ <name>RPR1</name>
+ <shortname>RPR1</shortname>
+ <icon></icon>
+ <frequency>103.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554442B8B6E4815824FE01308DF45F8DD25CD022DC1191270491390C0E965A6A9B037</stationID>
+ <name>bigFM</name>
+ <shortname>bigFM</shortname>
+ <icon></icon>
+ <frequency>107.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554447B34DFB2869E6E477E322A989AC099D6923E2F9821A96D2D6F52A3D7DAA62E2C</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <frequency>102.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444762EF11A39EFE2BA3F901391F5AC2F21BAC8FEBFBB3C993EFE2810E5D76A3145</stationID>
+ <name>Radio Koeln</name>
+ <shortname>Koeln</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554447FC2B67B6287665C5D5D053FA281CEA307C932D87084494D7741681B717C21E9</stationID>
+ <name>Radio Erft</name>
+ <shortname>Erft</shortname>
+ <icon></icon>
+ <frequency>105.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444500E9CEDEFEE152F50E7D97354D6B1CD5AC89AFABA78416EF1F56D62EC04C0C8</stationID>
+ <name>BFBS</name>
+ <shortname>BFBS</shortname>
+ <icon></icon>
+ <frequency>103.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/cologne-cable.krp b/kradio3/presets/germany/cologne-cable.krp
new file mode 100644
index 0000000..cacd591
--- /dev/null
+++ b/kradio3/presets/germany/cologne-cable.krp
@@ -0,0 +1,311 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Thomas Braun, &lt;grothesk@gmail.com&gt;</maintainer>
+ <changed></changed>
+ <country>Germany</country>
+ <city>Cologne</city>
+ <media>ish-Cable</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1113750604896907F040D4C71DF827E7A33E47AA90E7307875D0B1FEC55BBAB052625E7F82</stationID>
+ <name>RTL Radio - Die besten Hits mit Gefhl</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.563</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11137506041CB7ED6F6BF2300516A09F1BB7F976C268199C27378A0C43FB6C897605270DBA</stationID>
+ <name>Radio Erft</name>
+ <shortname>Erft</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.8125</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11137506043DB5111F414F1AE12CD8A9E370570D7145AF18E81E124032D1F7B85CF4619B63</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1113750604E1E0E8DA13FA455D8F1F2C0A743068F5396E8CE6A727E566C811C590E26BD076</stationID>
+ <name>VRT Radio 2</name>
+ <shortname>VRT</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>111375060417F71D2C33ACEA4AF8775EAE25920DDE3B50649DEE17D22A58BF15BCECF304B4</stationID>
+ <name>SWR1</name>
+ <shortname>SWR1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11137506046292EF0D4B50FEBB0788F24A753DC78ABBB3883DEA0973E1930F40D132E2D2A9</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Melodie</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.9375</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11137506048A1A74E535667CEFA6853FCC6143C4FAF4153957ACA8AFE072028FA16D08A904</stationID>
+ <name>K�ncampus</name>
+ <shortname>Campus</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1113750604528D731B1D55E6BDBC169D299E5975FBC5BAEF4ED200BF85A09F27E62486D754</stationID>
+ <name>ERF</name>
+ <shortname>ERF</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.8125</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1113750604CCFF76DC94B8AE64D7CAF758319E94516281E1956692C77774FFC0F074643796</stationID>
+ <name>WDR Radio 5</name>
+ <shortname>WDR 5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.3125</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1113750604C78CA0DCD8F9D3D679B933234A8302F08AEE62EB25DDD43105572FB016295369</stationID>
+ <name>WDR 4</name>
+ <shortname>WDR 4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1113750604443B0BEB29AD6AF2392C37351901A2994DB39C46DF763CEE2F4CD1A0CF7A62A6</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>dradio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.3125</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1113750604FC672C8A5F9C53A8B6CA291430218D3B4F33E8E75A4151D1FC7B7A5E841E64B5</stationID>
+ <name>SWR4 - Rheinland</name>
+ <shortname>SWR4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.375</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1113750604B9E8D6B880833BD137B81EA75494F676E709F3DABF8B65A0F324ADBDB0655E29</stationID>
+ <name>BFBS</name>
+ <shortname>BFBS</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.125</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11137506043888F407E3B5B4B19BCE898B6172C4E2DD1465CAA01C67D7B80D35B5BF85AE4F</stationID>
+ <name>SWR3</name>
+ <shortname>SWR3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.625</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>111375060450BE6772EA3B46FABD028997A3EEBC751D42F0C061420F7D3FD3B57B3B2A57BB</stationID>
+ <name>FM 3</name>
+ <shortname>FM3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.375</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11137506043B147D5858DEC7E9BCDCF80F198AB129EBA8CE4787904A1D85741CF1F6B0ED43</stationID>
+ <name>domradio</name>
+ <shortname>dom</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1113750604B2D17BE4ACCC2F22B75947312C4D5DF91FE991091A4F6D6182DBEB0278063440</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1113750604FC8861415D3B87A0F80CAB02D7B2EDAE6BE061C007DC160711FBD2B5B55ACF86</stationID>
+ <name>WDR 2 - K�n</name>
+ <shortname>WDR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.9375</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11137506043C860F8F890EB0FEEF81B4C459A3651BEA4270E670524551A3F8C9AF271ECEA3</stationID>
+ <name>sunshine live</name>
+ <shortname>sunshine</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11137506048C69A6E0FC83CB5F1C2732080ED30B15FE664381398E13A1C851FD8A6B5720BC</stationID>
+ <name>JAM-FM</name>
+ <shortname>JAM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.0625</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11137506045409FEA8F2CC41D5DB0DA623837820F5D28CB0ACDF9DAABF215A275D648BF2DD</stationID>
+ <name>WDR 3</name>
+ <shortname>WDR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>111375060400CC08D1FF509DFE68A0A38A1ECC989B722830895778412F5659DBFDA8FB56BC</stationID>
+ <name>Radio 2</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.062</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1113750604E8178AFC9899701DEF365EC76322C4DA5977B653715412DE2AEE8781B94FBA02</stationID>
+ <name>bigFM - Rheinland-Pfalz</name>
+ <shortname>big</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.688</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1113750604D7AC759D3880D186C6387515367F32FABE6AC89990C915FB6E0E1E1A3618B33C</stationID>
+ <name>hr3</name>
+ <shortname>hr3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.188</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>111375060447AF3354B250F12463A7B1EE7FBF2F085C4CF1E83C1715C4E4CB52A29F71DB74</stationID>
+ <name>WDR Radio 5 Funkhaus Europa</name>
+ <shortname>FH Europa</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.188</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11137506046D5CE1C4A2919892054AE5B5A44BE315D8F58DC85D175A9C9E98A739D729D6A5</stationID>
+ <name>RTBF - Musique Trois</name>
+ <shortname>Q3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>111375060419A7FE4141F4D87E2E6DC7DC6BBF2B539F7334682A8A076F163EE3D0F0D5CF28</stationID>
+ <name>Radio RPR Eins - Rheinland</name>
+ <shortname>RPR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.938</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1113750604936D6752BBAFF39968F7CB02F8BE89D6361E8BE5BCC883DE797803E28B4AFFFD</stationID>
+ <name>hr2</name>
+ <shortname>hr2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.438</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11137506044E02DC9A08A9F6D89C9A075DCDD998907CF458494960B109DFB600D1A752954B</stationID>
+ <name>Eins Live</name>
+ <shortname>L1VE</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.312</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11137506045349E53F5DBD5E06B3F0FAB82665B219B351CEB5C60CFEFF4E55426ED2CE948F</stationID>
+ <name>hr1</name>
+ <shortname>hr1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.938</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11137506040A19836C856A23BF0E55BCB36D24ADE718E773EF3079C7C3DBE4135DCCD011CD</stationID>
+ <name>Radio 4</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.438</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11137506041FCD1ED786E788C3F69357A6BB68F860C29F8A111BA677521B402D8D55BF22E6</stationID>
+ <name>RTBF - Frequence Wallonie</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.812</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11137506045A151A3433E3BCEF8BC7B40547A8BC65A7BA81D2D62B6EA41EBE1A533F4FBD82</stationID>
+ <name>Radio K�n</name>
+ <shortname>K�n</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.5</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/cologne.krp b/kradio3/presets/germany/cologne.krp
new file mode 100644
index 0000000..bb79624
--- /dev/null
+++ b/kradio3/presets/germany/cologne.krp
@@ -0,0 +1,295 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Fabian Schaechter, &lt;fabian@schaechter-online.de&gt;</maintainer>
+ <changed>2004-12-13T13:23:15</changed>
+ <country>Nordrhein-Westfalen</country>
+ <city>K�n</city>
+ <media>Kabel Netcolgone</media>
+ <comments>Netcologne fr K�n, evtl. auch andere St�te...</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1102792185A724C4EA69BDAF18746CBB88F9D546BDB3681982C0DD98AEE6ADDDFD12284939</stationID>
+ <name>Radio Melodie</name>
+ <shortname>RM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1102792185726C07E98064179DBF36A5B5A348977E60254197A6CC68A3834AC6AC2D8BE15B</stationID>
+ <name>SWR 1</name>
+ <shortname>SWR1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.8751</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11027921860D8F38AFB9AE4D3790E9EE2DC92682EC7B5205E5EEB6BCCC3F04587723FC72A9</stationID>
+ <name>SWR 4</name>
+ <shortname>SWR4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.3001</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110279218739DD1295AB44104C94C7FAC1706EC4F6F7EE5A1492CD0CA4AA0266AE731D2ED4</stationID>
+ <name>RTL Radio Oldie</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.9251</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1102792188953F8D96F9495F4687E6CAD51B1D246C028980310D2A993C5BD915E57D2FCBBE</stationID>
+ <name>Deutschland Radio Berlin</name>
+ <shortname>DR</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.5002</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110279218867093F7E1A0B19EE6E884E459889A9A87821839535CCEB601DD348CC934764DC</stationID>
+ <name>Dom Radio</name>
+ <shortname>Dom</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.8252</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1102792189D01F026FCF9A062BF80FF748992B816E820085C3986C83AFC91E02A26464E5B4</stationID>
+ <name>S 2 Kultur</name>
+ <shortname>S2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.9002</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1102792190DC7990B6E50309D7CD2192C341BEEA9C47A5CF4995905A82700B9DD30F490388</stationID>
+ <name>WDR 4</name>
+ <shortname>WDR4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.4503</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11027921916A9F77D07E5C1E4851AEF6016A0F35917B76425458C7086012B634519E620D6A</stationID>
+ <name>WDR Funkhaus Europa</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.7253</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1102792191BB38264BD99A0D617A3FEECA9E211CAA5B8C36C06F9E51CD26CE5318AF4A580B</stationID>
+ <name>Bayern 4 Klassik</name>
+ <shortname>B4K</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.2253</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1102792192F55EC717F86B7A1B72D77163082B262793348F0279E40566494D94C94946B080</stationID>
+ <name>HR 2</name>
+ <shortname>HR2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.0504</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11027921934B5C36A6681CFC2EC6C0F2C06A716E7EB63644EE2E24CB96E2530C3433DBCD83</stationID>
+ <name>Deutsche Welle</name>
+ <shortname>DW</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.5754</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11027921944982BF5889E814AEA6BD55BEC47FB1285B4BFAB5BD9376F2C1EE316263736F4D</stationID>
+ <name>MDR Sputnik</name>
+ <shortname>Spu</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.0004</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11027921952CD1749FA86D113C947D9A22D38C0A1B894F95FBA85E8E683B354994789E93C4</stationID>
+ <name>WDR 3</name>
+ <shortname>WDR3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.6505</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1102792195E9FA66288DE972FFB5E2083E09319B8E725AB29EFA66BD0F36B6107A866EBC53</stationID>
+ <name>WDR Radio 5</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.3755</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1102792196A3D46A74B9C600331C8BD60FB9790C5AD895CC786B1120BFA9EF1FBA756C99E5</stationID>
+ <name>Sunshine Live</name>
+ <shortname>SL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.2506</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1102792198015802DF33DFC7137F754B61E48AE508605D90994734037BD1B921BD7D32DD40</stationID>
+ <name>HR 3</name>
+ <shortname>HR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.6757</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1102792200D8A360818DB7A5BDF829BCA580D1A6D028702D345CFDD2AFDCD37F672F261266</stationID>
+ <name>WDR 2K</name>
+ <shortname>WDR2K</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.8007</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11027922000C929937F37C51C9714A493F537F4EE4A7A2FA04FFA11F886ECF5D2A28537F6F</stationID>
+ <name>Eins Live</name>
+ <shortname>1L</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.1257</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11027922019717C7717E3A9B5F4D4A4F06CC7AD834A070ED8E3745C82F027CB546C1FF19A4</stationID>
+ <name>Bonn / Rhein Sieg</name>
+ <shortname>BRS</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.8008</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1102792202538D1A065F6F193BE6DC826B4D453E6249822C452283AE1DE224BD922C5EFDEC</stationID>
+ <name>Klassik Radio</name>
+ <shortname>KR</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.376</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110279220304AD30EB19B560D40AE012143FCF8D54B6DDD6ACBCCC51D83D91A517D0DEC600</stationID>
+ <name>RVI 2</name>
+ <shortname>RVI2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.076</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1102792204CB5C1C5891BB6F27B9866878E6CD0DCCB0F502EB6F1D43FF3E9C78A0EF958994</stationID>
+ <name>JAM-FM</name>
+ <shortname>JAM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.976</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1102792205F068DF0824E0C6FA27B9D81C91D36F93973D6EE48642E1968EFA83A311E3C87C</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.651</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110279220598059C68C9C0D4A6F922F32A2C15AA3D3C0B1EC61CD13BD1B0AFBF9421BB3E33</stationID>
+ <name>RPR 1</name>
+ <shortname>RPR1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.101</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1102792206E694F1294AD015107488593EF619434D2803CBA75C1BA657B0953395E2145E08</stationID>
+ <name>British For British Soldiers</name>
+ <shortname>BFBS</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.451</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110279220702CA3D330B98673334441063C514187A4E7FA4C5F9CAE4D16A324F24062D7F6E</stationID>
+ <name>SWR 3</name>
+ <shortname>SWR3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.976</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110279220998CA941949E6475B42F33595F3944D88DBB74A42DDDD046B0F3D2F1414904B75</stationID>
+ <name>Radio Erft</name>
+ <shortname>RE</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.501</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11027922108FE6CBFBED3AA884CB307B02DF90411FF3860C068D35EA9AB8E47A9FA8E81EA4</stationID>
+ <name>HR 1</name>
+ <shortname>HR1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.851</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1102792211C753EF7C092D0AAC079017ACEC37553DED73D2C76DAA1304E6E94AD0C713AE11</stationID>
+ <name>Radio K�n</name>
+ <shortname>RK</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.376</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11027922112D6CB6EAE8CC39B35A9CA484652B301AB36E63B5A86F90334CB623000B084584</stationID>
+ <name>bigFM</name>
+ <shortname>big</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.851</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
diff --git a/kradio3/presets/germany/dortmund-cable-2.krp b/kradio3/presets/germany/dortmund-cable-2.krp
new file mode 100644
index 0000000..0cbd03f
--- /dev/null
+++ b/kradio3/presets/germany/dortmund-cable-2.krp
@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Manfred Hülsmann, &lt;m.huelsmann@gmx.net&gt;</maintainer>
+ <changed>2005-04-29T18:01:23</changed>
+ <country>Deutschland</country>
+ <city>Dortmund</city>
+ <media>ish Kabel analog</media>
+ <comments>NRW</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1116455444881F8E24F12188C19E45C801377A9C993D4C582B2840626971226B20A832E491</stationID>
+ <name>RTL Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>87.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544423FA3AB1D816D972A1D4D583D0C19ACF38B3E01F96A6EFA164CE9332B48C636D</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>87.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544404B591386F83A4D7636ADA39BA9CD059CD3E10FE2A2280BF287B251E60F31A3E</stationID>
+ <name>eldoradio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>88.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444C79632904E782CE01F8925A58DBFDD9A56949C58C0B4897DC6DAFF9B9ED3A084</stationID>
+ <name>sunshine live</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>89</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554442484FC693B7A7EB6420A003F62F81AAFCB61D698313693C0B40244997BAD7163</stationID>
+ <name>Klassik Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>89.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444F1D8549E4F455E340DB45B04EDED8B084CAE0BF02B954431A187D998BFEE95C9</stationID>
+ <name>domradio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444A84E52638ABE3EF42C00F89541240C652C5D04AEB9A22EBECFA2DBD77A67290B</stationID>
+ <name>Radio Melodie</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444D863291F76B965CD4A23ED20971B279030C68C532DF9B4E4AD5EA46731597BE8</stationID>
+ <name>ERF (Evangeliums-Rundfunk)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>91.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444B0C8A5B47FF77C1274859D19DBD75AF45B48E27A5F6129790840B75D2F9A67EE</stationID>
+ <name>Radio 91,2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>92.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444C26043557CB25A381BAB3666AACF4933CB477185A78483CFBB2DEA6847032798</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>93.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544471CA41131905667683F2708AFF39DA8B82DC5B3659EC37510DD6A136A2EB7DEE</stationID>
+ <name>Hit Radio Vest</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>93.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444A0D7D4D174726260BCAACBE3D6E0D0366B000602547EBD1A7FAE3B58095B0EBF</stationID>
+ <name>WDR Radio 5</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554448CE058D35F931B4C9B37EF34AAF2F418F43F65BEA1263637D6BA26CDFE1D7815</stationID>
+ <name>WDR 5 Funkhaus Europa</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444514E30011337C389C6010112917D757B285CA73FD4D9EFDF13CBEE8A50E01894</stationID>
+ <name>WDR 2 - Dortmund</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>95.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544405C7B5FD49C6B4D9C8CD51735D8C928682909D938614F157FE70A2E8E776FE1F</stationID>
+ <name>WDR 3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>96.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444BAA3893E0EF4F8FD07740627DF8470ECE46A7A3731FD1E2EC99C893850D8AA44</stationID>
+ <name>WDR 4</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>97.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554440866801614F2B28A99FADBA26F4ECB35D8978E53C78B8DEA6529FCA32A2B3F74</stationID>
+ <name>Eins Live (WDR)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544422ACC5066CAB385F87D5317974EE3D406755E8DCA6BD280610408356EDFEFCF8</stationID>
+ <name>hr1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554446A4FEFE27921537C0611C8B8FA95BF69E636A92E5A3CA3CA8FDBCDEC13EDD12E</stationID>
+ <name>hr2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>98.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554449B5CD1DA6ED6C6C90613016724BDAC4966E4FA6B53546FF54734DC24B99C0B76</stationID>
+ <name>hr3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>99.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444418DEAB47B466E1CE9459CAD3B07965252EC15BE99B3EA571AD6361FA0FE3ED1</stationID>
+ <name>JAM-FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544485D133E3C04885D95936D47E9359673CA4A410FC6372F6FACAE09A108FD32571</stationID>
+ <name>SWR4 - Rheinland</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>102.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544416A15A7AAC9A99425E649981E9749C3EFA0ED46117CA1CA5B732CE5E87AC8EB7</stationID>
+ <name>SWR3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>103.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444DD9519EA86DE4D53FDF563F7B946ABD36CF6EDCFD32DE90B0C56D70D3E8A4F1D</stationID>
+ <name>NDR 1 Radio NDS - Südwest</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>103.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444A127B69D34D620577E4BF1442EE0FC0E94C79400B6DFEE10A170655C860F7FDB</stationID>
+ <name>NDR 2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>103.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444F7EC6FAC734532F0D645750C300C90AAC3F2D80967A724EC08A230A473755B37</stationID>
+ <name>NDR Kultur</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>105.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444171645FFDCE0C1FCB2C7503F77946911EE37D2F58FCD3127308556DDDADAE554</stationID>
+ <name>FM 3 (niederl.)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>106.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544401157A2D6880EDAD509AB853A155993B48AB2F3692138EB8F8FC887EFF1DABB2</stationID>
+ <name>Radio 2 (niederl.)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>107.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554443FAC44D9EE175882FA777660CFE5E44D9F77D790D220F7DDEC5799BB964FB0A1</stationID>
+ <name>BFBS (engl.)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>107.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/dortmund-cable.krp b/kradio3/presets/germany/dortmund-cable.krp
new file mode 100644
index 0000000..6c770fb
--- /dev/null
+++ b/kradio3/presets/germany/dortmund-cable.krp
@@ -0,0 +1,222 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Bernhard Schumacher &lt;berschu@sagor.prima.de&gt;</maintainer>
+ <changed>2004-10-11T13:24:56</changed>
+ <country>Germany</country>
+ <city>Dortmund</city>
+ <media>Kabel</media>
+ <comments>ish</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>11164554447D3D6B8D1FA931852E642735D6B2DBFB787D517DB5251ED519BA521D07B1688A</stationID>
+ <name>Deutschland Radio</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544491D8330DD623EB1DF94047AA7825CBFD5D90DC3D60B8B610A1532DD670D1F56C</stationID>
+ <name>eldoradio</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.4375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444C448DF2BD54FA227CC3D909CA2F6F9F67317F7195987BCA706A5F0ECD86ED69F</stationID>
+ <name>shunshine</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>89.0625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444A7D73716E6B5EF8C3162B0B89F6C0F0B483CCE87CDC96511E155C0F3A3CDAB7C</stationID>
+ <name>klassik radio</name>
+ <shortname>klassik radio</shortname>
+ <icon></icon>
+ <frequency>89.9375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444C53727AEDC55E3FFFA352818A3F9BA2D6851C6636A71E9DAB7893BF24359E3B6</stationID>
+ <name>radio melodie</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>90.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444B5DC68AFDB5FE43CBAC50FBB6057542DDA63449BFB3F1927CBE84538E875E4E3</stationID>
+ <name>radio 91,2</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.1875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444F2C47215A4554CCF4382215FB5550B4A00D7194F6BA90860AF8E640BD3DAC682</stationID>
+ <name>deutschlandfunk</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>93.6875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554444FC972106E7CE648927C2FB5D14AD4D99963D9D4102DCFC713726C053F6D16D9</stationID>
+ <name>radio fiv</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>94</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554447F86A7577DDD7A882321A3059D0056EFAF1DEB9EF2B7CAE9D6223117E18D08A6</stationID>
+ <name>wdr 5</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>94.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444C6919FEFAA0492B80A1CC556410D47ABB2BF08AA9982306EC546D38D8D629A2A</stationID>
+ <name>wdr 5 europa</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>95.3125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544485753B4FAE48B549A8650F81A07762B92B3F7F295D9223A74DEE933AF995D5B7</stationID>
+ <name>wdr 2</name>
+ <shortname>wdr 2</shortname>
+ <icon></icon>
+ <frequency>96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554445B24F4C46285E1C6CD287D852EBCA97CA3E7886FD8398778AA3C2AA16DB83F88</stationID>
+ <name>wdr 3</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>96.8125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554449845A5FB1B6C0602323B51A400C3B6F2C40996304C61E27D711582BFD456F841</stationID>
+ <name>wdr 4</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>97.1875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444666E67224C8C66647EE3F772DA9D364646643412315A838C67C696A1BA42962D</stationID>
+ <name>eins life</name>
+ <shortname>eins life</shortname>
+ <icon></icon>
+ <frequency>97.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544463635218CB945B9378A3993AB876722B04FBAF3BBED9B5F767CD3A0BD3208807</stationID>
+ <name>hr 1</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>98.5625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444DB9A8504AD56D9293DC456BA430E179A92E708B75D3BC41390380F8847C30947</stationID>
+ <name>hr 2</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>98.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554442C5B21D391A76140A63D72B9953905C54F74EE5A7AC6635F4420E007C53B1964</stationID>
+ <name>hr 3</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554448760BCBD26A964D021AAE0CBDADEF0502F32569DA5781473F8FC87A3EB0EC9C1</stationID>
+ <name>jam fm</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>101.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444A4ADBC86C612DEA3BD301B8933DF841E0A437786AB7BB954E1D06050BF5652B4</stationID>
+ <name>swr 4</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>102.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444834F0425797B1318A704F496217991BA6F7DB186F168F679FF13049556591930</stationID>
+ <name>swr 3</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>103.188</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544439165598F0F86482E9C6ABD57C5DB603DD6BBEBE31A87A55B1F24D652A8A1AA7</stationID>
+ <name>ndr 1</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>103.688</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554448767BC6600F043FD04678B5388F35AF0A542E1FDF5FB8CE65F4BD6539F247293</stationID>
+ <name>ndr 2</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>104</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444590A69471C4E8888991CE905B0BF577C6992493EE297BAFE29CB2A36C30556BA</stationID>
+ <name>ndr kultur</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>105.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444881AD3A87AA68D34DA4C0FEE01D001491DB54DE978D37C8FA5FD52F08D1FCD34</stationID>
+ <name>fm3</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>106.375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554443E5D0534682AF5DA294E980394873CC48D39B8EC74B92B48BF1C23600840D146</stationID>
+ <name>radio 2</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>107.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444DC67C7F10026EA313B593285A4F811E56B81F7EB96936BF83667C528F09D5CDF</stationID>
+ <name>bfbs</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>107.688</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/dresden-cable.krp b/kradio3/presets/germany/dresden-cable.krp
new file mode 100644
index 0000000..a114833
--- /dev/null
+++ b/kradio3/presets/germany/dresden-cable.krp
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Babara</maintainer>
+ <changed>2006-06-06T21:23:42</changed>
+ <country>Deutschland</country>
+ <city>Dresden</city>
+ <media>cable</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1149620985EBEB2E99ACB5933B19641C66145933E7ABAB0CC0F0CAD9CB784C7E8FB5968536</stationID>
+ <name>MDR 1 - Radio Sachsen</name>
+ <shortname>MDR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11496210482BD823A661455FD5BC72CA45DEE1AB4453E3C4E94D97B4A2197E012F58A1E07D</stationID>
+ <name>MDR Jump</name>
+ <shortname> Jump</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1102367919AE48FF7100123FA7E76FCA850BDC3CE7CFC2B49645579927B8131B42FC6394AA</stationID>
+ <name>DLR Berlin</name>
+ <shortname>DLR</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.3751</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11023679194A872BE24791C3E7EF70258B89ECDE72EE080C061D88DDF1751A4C170B851334</stationID>
+ <name>MDR Figaro</name>
+ <shortname>Figaro</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.9751</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11023679206A7A024D0076B105CE6674065814E119F71695B77251FA467C222E97D2A21A72</stationID>
+ <name>Radio 3</name>
+ <shortname>Radio 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.7002</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1149621154A7C58A84EEBB9CC1751745BC5469217B1A512F0C08027AAD0112AD2F613DFCEA</stationID>
+ <name>PSR</name>
+ <shortname>PSR</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1102367922147548C3672A359431B0725E89198C41206B02DF88C3EF330D294AD61F954B34</stationID>
+ <name>Dresden 103,5</name>
+ <shortname>Dresden</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.1753</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>110236792491672D14BCD05B2B6B860E2037DFDA6185E819B92B42DB8A320E1482BAD295C9</stationID>
+ <name>RS 2</name>
+ <shortname>RS 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.4253</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11023679254F81FFBCC9E41B82955112C301E71C7D097B0CA1871D2AC1978AAA128CEB54BE</stationID>
+ <name>Inforadio Berlin</name>
+ <shortname>Info Berlin</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.7754</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1102367926B268428A36544EA8D51A33F9495CDBFCCFB86758578E9A628821B47DE9DFB7F7</stationID>
+ <name>Antennne Brandenburg</name>
+ <shortname>Ant. Brb</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.8004</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1149621208196132008507B9DD2B30001D30F48EDDD5D259EFDE93E7199870258A0DC745C0</stationID>
+ <name>Radio Eins</name>
+ <shortname>Radio Eins</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11496212803D7A5AB99D8A8C5E3C1662C971CA23CB83BCB40DEEBF7990F7A600F317E246C7</stationID>
+ <name>MDR Info</name>
+ <shortname>MDR Info</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.85</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1149621490FF71E791C45E571183D7AF96DF9E1DA0B6ACED8DF9AB4B326226E7D1D8A09E7A</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11023679305D2B65EE86094237DC231B31320BD85AD95373D42C0CD5371A2AD91D2D8043B9</stationID>
+ <name>Energy Dresden</name>
+ <shortname>NRG Dresden</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.3006</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>110236793173C154818B63992B1C88BB2981027CBBCC9A61AAFA9DD4DDF1815A229053FF5E</stationID>
+ <name>Berliner Rundfunk</name>
+ <shortname>B Rundfunk</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.1006</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>110236793338A64BDC65364C866F4F30EF909885B7359656FD5510D94335A5FE6979547753</stationID>
+ <name>Fritz</name>
+ <shortname>Fritz</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.8507</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11023679346DEA29F1DC8A9646C4F8D8B7A7897227824B2601A5A391B09EA80312C91CBBAF</stationID>
+ <name>Antenne Sachsen</name>
+ <shortname>Ant. Sachs</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.3758</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1102367936C33366A05EEEE13A3B4D0CE6B32B17038988E70D93575D627CB3A47F90F25739</stationID>
+ <name>BB Radio</name>
+ <shortname>BB Radio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.601</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>110236793741AA420F94D0620A9928B39401164E2529375238533DABA3C31BE44E38AACCBE</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Melodie</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.476</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>114962154897439D778A0A405E651765F400ACA2D41EC1BC8191809E44425BD3C3BC927D65</stationID>
+ <name>Oldie FM</name>
+ <shortname>Oldie FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1102367941F08FB3F322DA2645A9022F1441672132BFBC06B9B29C4ED91AFBD304126DC0C6</stationID>
+ <name>Project 89.0 digital</name>
+ <shortname>89.0 dig</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.301</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>110236794240E495D21836A9F79DD48D3BA29B14D2FEE01F550ACC96DDB79A95D52C44C827</stationID>
+ <name>Jam FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.751</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1102367943BD68DC565F9F451F9932EA8810C58E28B52F76FF865CA6CF26D5ED0FDFB30A49</stationID>
+ <name>RTL Radio</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.726</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11023679446BC72A64CBE91EACCCD2680263531F0F9343306758A3CC2E7B19D414118C146B</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.301</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>110236794552EAB6EF82F811DF41A913D721F989ECB5E14D6764F5F278679736284767899A</stationID>
+ <name>MDR Sputnik</name>
+ <shortname>Sputnik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.176</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1102367946E30C9A75D1C03B16299490921303704DD662D5FA00D143BB3306B663314E568D</stationID>
+ <name>Sunshine</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.501</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
+
diff --git a/kradio3/presets/germany/duesseldorf-cable.krp b/kradio3/presets/germany/duesseldorf-cable.krp
new file mode 100644
index 0000000..1120f9c
--- /dev/null
+++ b/kradio3/presets/germany/duesseldorf-cable.krp
@@ -0,0 +1,239 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-1.0beta3b</creator>
+ <maintainer>NN</maintainer>
+ <changed>2005-12-04T14:08:49</changed>
+ <country>Germany</country>
+ <city>Dsseldorf (Nord/Kaiserswerth)</city>
+ <media>ISH Kabel</media>
+ <comments>Contains merged Data</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853503E8E8092F57F4BAB7B8B590C9B7270FCFD49391545F3790A9ADCFA3CF53E1CAE</stationID>
+ <name>bigFM - Hot Music Radio</name>
+ <shortname>bigFM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350FF6EB382B2D07E3C39543256AE8B6E5DA5B020D9EC034B6E501644FE0B1C2A3E</stationID>
+ <name>ERF (Evangeliums-Rundfunk)</name>
+ <shortname>ERF</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350F6137A544DF1D978A2A4EA2BD5C52C8DB59F8AB9F517E9A83FCB507B717947A7</stationID>
+ <name>Radio RPR Eins - Rheinland</name>
+ <shortname>RPR</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.3751</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535054638C8ABF94E96CB989E246C4D61A8D21F6E2B7FB3CD27F643115822972281E</stationID>
+ <name>DeutschlandRadio Kultur</name>
+ <shortname>DR</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853504735A4AB96FA66F881F2A846178CFCAD2FB70D62415B852D1625D194CE994A5B</stationID>
+ <name>Belgischer Rundfunk</name>
+ <shortname>BRF</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350DE3FD95EE294620D75D1A79796CB451365C940DC77E7EDC68074230F0B8D73B3</stationID>
+ <name>Hochschulradio Dsseldorf</name>
+ <shortname>HRD</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853507532E279D8DF2DCF9098DBC79C6D453E5A9268E226BA380390A92BFB08440A95</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.5753</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853507DE0F7E0539B02D933E8250F5F68A34DC7CED2C5CD3F9418C4C9C932E8B6D1DD</stationID>
+ <name>British Forces Broadcasting Service</name>
+ <shortname>BFBS</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853501B68293ADDD4980B123CCA0DEA2C3FC3E51322BF35222F087A98797024F81B8F</stationID>
+ <name>JAM-FM</name>
+ <shortname>JAM-FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350FBD6932C463E71B6F5B85FBCF42A3D03A6CF6F3891426A3343FFFE3463081F67</stationID>
+ <name>Antenne Dsseldorf</name>
+ <shortname>Antenne</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350795D740FF96BBD1D7A5FBEA57BBB24DD11E91B61A0652D10968D705DD2013285</stationID>
+ <name>Eins Live (WDR)</name>
+ <shortname>WDR1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853505C5B4E3A3CB2098DE9B2A5D9614A225D970E1C1711AADF1DBE80908A43F78AFD</stationID>
+ <name>WDR 2 - Rhein-Ruhr</name>
+ <shortname>WDR2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350F96B999ABEFDE3E914F9086CECD710E10933B165CD869D4D7F255D4E32563057</stationID>
+ <name>WDR 3</name>
+ <shortname>WDR3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350B8584EFB8C659D15C4DC61CE2D90258FF92B3406D4AFB2F7B25FDD605959FBE5</stationID>
+ <name>WDR 4</name>
+ <shortname>WDR4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535032A1B0880D148888CE8209EF077F858A9A0E65316E94D158AE7E037B8DBBC639</stationID>
+ <name>WDR Radio 5</name>
+ <shortname>WDR5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350C7F3DB89DA5CC98D6178F09C6A6018D71B3F41301A23D1AA6ED8399D915E36CE</stationID>
+ <name>SWR1 - Rheinland-Pfalz</name>
+ <shortname>SWR1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350BD23FBC4BA0624D599B6E258EE043A87C23CB8DC05EA47DE3DF6C573CB3E686C</stationID>
+ <name>SWR4 - Rheinland</name>
+ <shortname>SWR4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853509DEC681F88F2F0220D4AE0247A6F0BFA97858FB56A594ED89B1BC31042FE240E</stationID>
+ <name>SWR3</name>
+ <shortname>SWR3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535025D650C9F4D19FFC50CC239B82ED4C7CB9AD62FA39A2D70E8762DDECA7EDE03C</stationID>
+ <name>Radio 2</name>
+ <shortname>Radio2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.676</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350542221DEA0570A035E412BF9C1975C26E7517F7FBB49613D4778C2D86F118F33</stationID>
+ <name>FM 3</name>
+ <shortname>FM3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.451</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853505B8FAF528D4BF2BCC034BC1BF1CAD7C49361359FD49DBC5A4F33186A755693B0</stationID>
+ <name>Radio 4</name>
+ <shortname>Radio4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853507E80ADD7E5ADCAD28CB84FCEA2177E8E02276EA706D81FA155ED2C7A048A52D4</stationID>
+ <name>RTL Radio</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853502C3F1C6F34DC7050A1F8622E8ABF5744B9BDF00F0A78ECF3EF672752522505FD</stationID>
+ <name>domradio</name>
+ <shortname>Dom</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350E0F1D71E10E45D8BEBEBC1B6FAFF70006D5825C41ECDE7DE6830747EFF03C153</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350039BCF32C381AB556AD216907F652D18701938F503AB182ACFC55F10B606D410</stationID>
+ <name>sunshine live</name>
+ <shortname>Sunshine</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350EAC52E9C61FBBA86E5CEDF795524281244DE43B5DD02A2A2570DA8FBB4592290</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Melodie</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350C8E983F0C25B1A13A09334402D29C187652C017688FCDC0A94399A692BE30282</stationID>
+ <name>WDR Radio 5 Funkhaus Europa</name>
+ <shortname>FHEuropa</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.101</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350DF38AC6A9A0F71AA1D5BD79ABE98F8ED36B51B0680C23ED9207E5E2C17486484</stationID>
+ <name>Radio Neandertal</name>
+ <shortname>Neandertal</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.851</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/duesseldorf.krp b/kradio3/presets/germany/duesseldorf.krp
new file mode 100644
index 0000000..a9d8f2f
--- /dev/null
+++ b/kradio3/presets/germany/duesseldorf.krp
@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Gerd S. Reschka &lt;Gerd.Reschka@t-online.de&gt;</maintainer>
+ <changed>2935093-02-28T00:00:00</changed>
+ <country>Germany</country>
+ <city>Düsseldorf</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853503E8E8092F57F4BAB7B8B590C9B7270FCFD49391545F3790A9ADCFA3CF53E1CAE</stationID>
+ <name>SWR1 - Rheinland-Pfalz</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>87.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350FF6EB382B2D07E3C39543256AE8B6E5DA5B020D9EC034B6E501644FE0B1C2A3E</stationID>
+ <name>SWR4 - Rheinland</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>87.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350F6137A544DF1D978A2A4EA2BD5C52C8DB59F8AB9F517E9A83FCB507B717947A7</stationID>
+ <name>SWR3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>88.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535054638C8ABF94E96CB989E246C4D61A8D21F6E2B7FB3CD27F643115822972281E</stationID>
+ <name>WDR 2 - Wuppertal</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>88.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853504735A4AB96FA66F881F2A846178CFCAD2FB70D62415B852D1625D194CE994A5B</stationID>
+ <name>JAM-FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350DE3FD95EE294620D75D1A79796CB451365C940DC77E7EDC68074230F0B8D73B3</stationID>
+ <name>WDR 2 - Rhein-Ruhr</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853507532E279D8DF2DCF9098DBC79C6D453E5A9268E226BA380390A92BFB08440A95</stationID>
+ <name>WDR 3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853507DE0F7E0539B02D933E8250F5F68A34DC7CED2C5CD3F9418C4C9C932E8B6D1DD</stationID>
+ <name>WDR 4</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>92.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853501B68293ADDD4980B123CCA0DEA2C3FC3E51322BF35222F087A98797024F81B8F</stationID>
+ <name>Radio Neandertal</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350FBD6932C463E71B6F5B85FBCF42A3D03A6CF6F3891426A3343FFFE3463081F67</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>93.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350795D740FF96BBD1D7A5FBEA57BBB24DD11E91B61A0652D10968D705DD2013285</stationID>
+ <name>Eins Live (WDR)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853505C5B4E3A3CB2098DE9B2A5D9614A225D970E1C1711AADF1DBE80908A43F78AFD</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350F96B999ABEFDE3E914F9086CECD710E10933B165CD869D4D7F255D4E32563057</stationID>
+ <name>RTL RADIO - Die grössten Oldies</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350B8584EFB8C659D15C4DC61CE2D90258FF92B3406D4AFB2F7B25FDD605959FBE5</stationID>
+ <name>WDR Radio 5 Funkhaus Europa</name>
+ <shortname>WDR 5</shortname>
+ <icon></icon>
+ <frequency>96.7519</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535032A1B0880D148888CE8209EF077F858A9A0E65316E94D158AE7E037B8DBBC639</stationID>
+ <name>Klassik Radio</name>
+ <shortname>KR</shortname>
+ <icon></icon>
+ <frequency>97.077</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350C7F3DB89DA5CC98D6178F09C6A6018D71B3F41301A23D1AA6ED8399D915E36CE</stationID>
+ <name>Radio Berg</name>
+ <shortname>RB</shortname>
+ <icon></icon>
+ <frequency>98.7771</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350BD23FBC4BA0624D599B6E258EE043A87C23CB8DC05EA47DE3DF6C573CB3E686C</stationID>
+ <name>HR3</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>99.4771</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853509DEC681F88F2F0220D4AE0247A6F0BFA97858FB56A594ED89B1BC31042FE240E</stationID>
+ <name>BFBS (GB)</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>99.9521</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535025D650C9F4D19FFC50CC239B82ED4C7CB9AD62FA39A2D70E8762DDECA7EDE03C</stationID>
+ <name>Radio 3 (NL)</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>100.902</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350542221DEA0570A035E412BF9C1975C26E7517F7FBB49613D4778C2D86F118F33</stationID>
+ <name>Belgischer Rundfunk (deutsch)</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>101.627</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853505B8FAF528D4BF2BCC034BC1BF1CAD7C49361359FD49DBC5A4F33186A755693B0</stationID>
+ <name>sunshine live</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>102.002</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853507E80ADD7E5ADCAD28CB84FCEA2177E8E02276EA706D81FA155ED2C7A048A52D4</stationID>
+ <name>Radio Melodie</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>102.502</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853502C3F1C6F34DC7050A1F8622E8ABF5744B9BDF00F0A78ECF3EF672752522505FD</stationID>
+ <name>SWR2 - Rheinland Pfalz</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>103.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350E0F1D71E10E45D8BEBEBC1B6FAFF70006D5825C41ECDE7DE6830747EFF03C153</stationID>
+ <name>Radio RPR Eins - Rheinland</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350039BCF32C381AB556AD216907F652D18701938F503AB182ACFC55F10B606D410</stationID>
+ <name>Radio RSG</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>104.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350EAC52E9C61FBBA86E5CEDF795524281244DE43B5DD02A2A2570DA8FBB4592290</stationID>
+ <name>RPR Zwei</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>105.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350C8E983F0C25B1A13A09334402D29C187652C017688FCDC0A94399A692BE30282</stationID>
+ <name>Radio 2 (NL)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>106.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350DF38AC6A9A0F71AA1D5BD79ABE98F8ED36B51B0680C23ED9207E5E2C17486484</stationID>
+ <name>Radio 4 (NL)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>106.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350E5CFCBBEAAF19D75C5F70AE198C0FBF2D2F81EDB67521CB2EE9FA98CE8040231</stationID>
+ <name>domradio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>107.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/emsdetten-cable.krp b/kradio3/presets/germany/emsdetten-cable.krp
new file mode 100644
index 0000000..3c400ed
--- /dev/null
+++ b/kradio3/presets/germany/emsdetten-cable.krp
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Thomas Festring &lt;thomas.festring@gmx.de&gt;</maintainer>
+ <changed>2003-11-14T19:45:07</changed>
+ <country>Germany</country>
+ <city>Emsdetten</city>
+ <media>Kabelprogramm ish</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1077144985C6A441D5B5FAC31E8265593F2240ED2D98771F7D2D1AFAC5D1FEF25543190A5B</stationID>
+ <name>NordwestRadio</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985989D2A3F033ABF0BA87B660F34F232D80B72E043F0DE45E3CADCE00DD0BC361A</stationID>
+ <name>RTL Radio</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>88.375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985E53BB0ABA4842B74276E20F2B2BFCCC5FC415C6493F6D6F2590214082C530A1D</stationID>
+ <name>BFBS</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>90.375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449852DA8CAEE7E1E692EE35773844D4ADA2A25F56D95BE6D4DDCDC3FAB5F7FE5DE92</stationID>
+ <name>radio RST</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>91.1875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498570B39801BFEFEBB76CD1D30137290977489284B99C0CBC37910543CFE7BE8E7E</stationID>
+ <name>JAM-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>91.4375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985CD6D59553C619393BB31DE81A2DD6B8E9AB8C6936A48F317786241263DB05361</stationID>
+ <name>HR 2</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985F85838CF627C153D1698A2FEE29ACF427F333220B45B86164187707EB99C6B14</stationID>
+ <name>HR 1</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>93.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985CE6399CFDBFEF176E870FD446AC322C74FCF384393BF9F00CE9F6B2FD94CD327</stationID>
+ <name>Radio 4 (NL)</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>93.4375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449854926E0AA85E2553BE3EADFBA55A396E7BB658789A1603C171812902FCEAAA1FD</stationID>
+ <name>FM 3 (NL)</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>93.8125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985DEDC27FCADD68CAF7F10BC7E38B5A06AD8368956491175FDB1BC1931C97A1E2F</stationID>
+ <name>Radio 1 (NL)</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>94.8125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449854138FE7E14CFA0A14D513D2A029C5DF20F3628B8F146F29AD5F6B7B0B7C087C3</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>95.375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985D8413D82DA4AAFBCBA385EE703B8F96866BF3CACEF14C7A29FBBCEDE2751AF2A</stationID>
+ <name>Eins Live</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>95.8125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449857B4ACEC1CC9EE77D7720A8478F73918EC4D8851DA9CF1FDC6E75561EC94E2418</stationID>
+ <name>NDR Info</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>96.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449850A2660DBBDE5DCC75EBD176BC8AA2BA8A4C162137E6A3AAA8B9AEDAFB1939982</stationID>
+ <name>sunshine live</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>97.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498559B7C6AF15C96A22C6358ACAE52D7501762C037506C99F76D22A5AF8AD2CD1A9</stationID>
+ <name>Radio FFN</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>97.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985F85610BE3B71C3B5CB1D5AB74C9355E2996456053213D6334D85EA0DA6B8F446</stationID>
+ <name>NDR 1 Radio Niedersachsen Südwest</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>98.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498564FC5B6FF3EFE86AC1251BD88D9F96614A95CF1FDA3A84A7FAB5761F6FCE9844</stationID>
+ <name>NDR 2</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>99.3125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985157FBACDB28B8C4B3C7AD680E6E9B6E021CE3661EC71C91A8BDE80101CFE29C7</stationID>
+ <name>NDR Kultur</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>99.6875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985FA64CB632C2CFC394EA15DBD4932CCBCB70878DB62115BD1BDF053BD29F15490</stationID>
+ <name>Radio Melodie</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>100.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985C299A89717659E6FCD893D40DE63216EAA444F1613A7DC72E5289589F8ACB879</stationID>
+ <name>WDR 4</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>100.938</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498569F7EEE5A95536E5850574B6FF30C8F651E0B1354F0645D8FB02A71312ACC3C0</stationID>
+ <name>HR 3</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>101.188</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498593C7FF780353CF1975F1D41231A2054BF2DA01BAD95E8A7D9E6D06D043FF0DEC</stationID>
+ <name>WDR 3</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>102.312</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449858B30D47CA661D15A6F2BDE2E594D0843F2FC5BB1EBD5D70D1D49A25EEE3355F6</stationID>
+ <name>WDR 2 Münster</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>102.688</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985645114FB3717AE08485112B4E512C3A5A2EC6B4681081AA17486A607D74803A0</stationID>
+ <name>WDR Radio 5</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>103.688</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985E11CC9A963DBE009CC0118B4DAC3C187BFFE1DC5049755FE55D91C0ED660BE30</stationID>
+ <name>JUMP</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>105.188</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498565CBCBE135F473A4ADB253A66584219B02AB88A78DB0938085EFADA0A5739EC3</stationID>
+ <name>89.0 RTL</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>105.688</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449852FCAC517AEF577C434D2CD14C64799824BEA7DF8A746EFC30414174E53B5B77A</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>106.688</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449853E55DC7DE1BBBC8AE9F4CAE72E72E02786263034CBEA10ADCB34C8E8DEAB8D08</stationID>
+ <name>Hit-Radio Antenne Niedersachsen (Osnabrück)</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>107.438</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/erfurt-cable.2.krp b/kradio3/presets/germany/erfurt-cable.2.krp
new file mode 100644
index 0000000..beea8ff
--- /dev/null
+++ b/kradio3/presets/germany/erfurt-cable.2.krp
@@ -0,0 +1,307 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Andreas Krause, &lt;nak@andreas-krause.info&gt;</maintainer>
+ <changed>2004-05-06T13:02:26</changed>
+ <country>Germany</country>
+ <city>Erfurt</city>
+ <media>Cable</media>
+ <comments>Die Liste ist in Frequenz-Order und entspricht bis auf einen Sender den Angaben von
+ http://www.kabelanschluss.com/ fuer meine Adresse (und wohl das gesamte Thueringer
+ Kabel?), wobei die gefundenen Frequenzen minimal abweichen. </comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1083841317558A647E268F41C2E4F3AD4356865A026C9A074B96A7B0AC112B16361BB5D180</stationID>
+ <name>Klassik Radio</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.575</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>108384131831D2F423201946BB50BCB4BDBF03A7FE1C76BB219C0DD808E5CA445C80EF5528</stationID>
+ <name>hr4-Nordhessen-Journal</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.0751</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1083841318CA73CAC8DF7DE5C08F724CF6998EA72224C73BA6A0561FAA8E905C574033232F</stationID>
+ <name>hr1</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.3751</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1083841319E8B9D1D1C907182CA5E5DB5DEBFCD21AC293F2D86C812A5B94706B03DBE51043</stationID>
+ <name>mdr FIGARO</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.7751</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1083841320D1009B437233B496C6E92185871CB8D888D0E5FCB925C37284D2C05E637BDAF3</stationID>
+ <name>radio TOP 40</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.3501</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>108384132141247D249165AA250CD1F4242CD77119D9B5587DB6FA8122674053A474C5B609</stationID>
+ <name>Radio FUNKWERK</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.4502</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10838413212A65E08E5969ABB3DDBB62745ACF8FC18D460647208D7F76995E1C813F6A8E1B</stationID>
+ <name>radio SAW - Halle/Leipzig</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.7752</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10838413229B00248CB82F85D0D2A320A0AC7793768AB06FDC797CC4D404EAE8DE479F58C9</stationID>
+ <name>mdr1 RADIO THÜRINGEN - Weimar</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.2003</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>108384132332214CFAEE61905FAB3CB984E7A357148D298CE0FC755866D1C28603513FCD1C</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.9753</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1083841324EA8C04A2CCF0AEF3095A5996523F0C7E907D7684D63EB440428EBEE6E5C4C2F1</stationID>
+ <name>HIT RADIO FFH - Nordhessen</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.7003</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10838413258102D60594C161C2EA411A64372414EBF5B13C1E115B7F68FA7ED86324310A39</stationID>
+ <name>mdr1 RADIO SACHSEN-ANHALT/Magdeburg</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.0004</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10838413254E91C38958DE6E15CC3249CF884B8F87375909E13D41EF05FCC882EACA1E811D</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.4504</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10838413260C241FD13CE76037976C49B46E1FA26078B7E108DF01836F6CEF70DA58736D62</stationID>
+ <name>Hit-Radio Ant. Niedersachsen-BS/SZ</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.9004</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>108384132730CA3E24EA5F26A232398DB4928A140DC30C61CFC91FBC30E67036D6F90BDB4D</stationID>
+ <name>LandesWelle THÜRINGEN - WEST</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.8755</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1083841328C0624E8DE44A3CEE76989589944F5E05224FF4CF609FD128DFEC2ADDF11AF464</stationID>
+ <name>Bayern 4 Klassik</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.2005</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1083841328B9A0B412940778BB60C80D59599164AD85571AEBD549CAE7DE465B3F7758286E</stationID>
+ <name>Radio Melodie - Heimatfunk mit Herz</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.5755</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1083841329C63EF478204683985D5C33941E667A20E476D3EE90195DF87C61A397881D31A5</stationID>
+ <name>mdr1 RADIO SACHSEN - Leipzig</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.0756</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>108384133091A526B9E9E1DEC82416CD1ADFB0A1DDF4369521CDA3F74FC4C2AC6316AA8CA3</stationID>
+ <name>hr3</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.7006</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1083841331641A4EFCC76EC8F081E2D5D12A31A3F8017F3AB4C986E68CD4A5520733790BE5</stationID>
+ <name>JAM-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.5506</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>108384133157C737B8B1408CA532DEEE41DE3A13776B8B99360C9BB05459C14B1BA760F89E</stationID>
+ <name>NDR 1 Radio NDS - Südost</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.0007</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10838413320835C08F297D4C85C105EF2E10761294D0BFD248C9B7A74CAC4BDEC6F9BB82C9</stationID>
+ <name>NDR 2</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.6507</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10838413331AE4B1EFD5A039699AFE13E2B387D21466EE11311D7793001C3E3DEA3A2A3ECA</stationID>
+ <name>NDR Info</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.9257</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10838413330D1BF27BF059BCDFD756089CDBEA95A9234CAAE6129794BD893808D9CC1192CA</stationID>
+ <name>ANTENNE THÜRINGEN</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.3258</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10838413340CD0DDD4567260F4CA6FE6B4477F43690939B1D9701BE997326D6640ACA5DA99</stationID>
+ <name>JUMP</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.9758</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1083841335A38EA568617026B28188006599F612A878ADAE66F99B7898D53B45AF0D88D5F3</stationID>
+ <name>Hit-Radio Antenne Sachsen - Leipzig</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.451</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1083841336A9D30347AE6B76E2E9EFD68737DAD3958C17E380914FB2BC623A992FB66ACC37</stationID>
+ <name>hr2</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.626</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1083841337937FE5294A58851F042EAD2600C13E02C29D39D08236ED011F5F52CBB566EDD9</stationID>
+ <name>BR2 - Oberfranken/Mittelfranken</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.076</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1083841337BBB8D28C550BD0DCA7EEF5F78A755DE49E2889B89415F1B96317D163F9F15ADE</stationID>
+ <name>Bayern 3</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.401</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1083841338FCD0961D85840062709AE388F094CBADA957E10D1721B0318ED6A314A7CFF46A</stationID>
+ <name>RADIO PSR - Leipzig</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.976</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1083841340C8390E3680734914FF4043DD32639B6708312ECA7EE1564ADCC1BA2E61AC699C</stationID>
+ <name>mdr info</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.351</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10838413408AF6A522EEA50A621622E8D43292367F8745E571B14D31F2323A29E822E45373</stationID>
+ <name>ANTENNE BAYERN</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.776</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1083841341DB0078389B20DAB49D233A4BD5BB3A807BF6902A148C482DAFDA04983AB81EF8</stationID>
+ <name>BR1 - Oberfranken/Mittelfranken
+
+
+105.05</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.076</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>108384134244199F1427208F1D86B4C54C93426EC9CD383102498543DC85C727631DAFC511</stationID>
+ <name>RTL RADIO - DIE GRÖSSTEN OLDIES</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.076</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1083841343E6D60F22203B198DA6D73969E800FFDAE47764D2B38CE51A68BF5B275D42D466</stationID>
+ <name>radio ffn - Braunschweig/Salzgitter</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.501</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1083841344582FE1D6E5BED3E7044751214D4C430E0ADD1BF1212224D0F4D0BB385A38C461</stationID>
+ <name>NDR Kultur</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.151</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>108384134534331E60654B4BE7F11EA240065A425D6BEC619A94C09141B99804095738BEAD</stationID>
+ <name>ROCKLAND SACHSEN-ANHALT</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.876</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/erfurt-cable.krp b/kradio3/presets/germany/erfurt-cable.krp
new file mode 100644
index 0000000..27eed4b
--- /dev/null
+++ b/kradio3/presets/germany/erfurt-cable.krp
@@ -0,0 +1,337 @@
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Heiko Berberich &lt;heiko@berberich-is.de&gt;</maintainer>
+ <changed>2003-11-03T22:11:09</changed>
+ <country>Deutschland</country>
+ <city>Erfurt</city>
+ <media>Kabel</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>10678923516BEF27042B212BF120189596CAC4F4A49692309ED9D842AC9399917B7760542E</stationID>
+ <name>Klassik Radio</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10678923527AD9BE1EF933918782BA1A223379EBC0617AA06135B88845F75E5AAEC7645DE6</stationID>
+ <name>hr4-Nordhessen-Journal</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.1001</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1067892353C8931CEBC3328ED1ED8E2AF9E624BDA6FD391B8A3F10F88CD3A5D7FBC118A8E9</stationID>
+ <name>hr1</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.4001</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10678923549C572201AB9B496837BE9A33271A50E4F1B7AA9B57BCEE90888E56D12B644739</stationID>
+ <name>mdr Kultur</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.7751</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10678923569D8B292B9FEDC3713B01E976C8DD8EB2A32B4805ED6F4EA41D28BC4B2B76AA78</stationID>
+ <name>Radio TOP 40</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.4001</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106789235855135FBF722A07626C99335DE889324AEE1A8718C5CE8A902065E112192674C6</stationID>
+ <name>Radio Funkwerk</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.5002</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1067892359502A58CC39AAC83706B2DEABC4496E04A80D7B5CF78306A5C09D58E10EF90884</stationID>
+ <name>Radio SAW - Hallo/Leipzig</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.7752</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10678923609E31258DDBB4775FEB6F3F2768F8935ACCA38EF12ECEC3D3E0D0FCF528FC07B4</stationID>
+ <name>mdr1 Radio Thringen - Weimar</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.2253</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10678923627652BE0E1BCC02AEA95FDD3C2C69A65AA664964100C7C1529544239D4843C183</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.9753</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1067892364BAD6D2A4EA0259B8B3074991D8077BF63B17D3FFCCD2C463DC00179F8B7896A8</stationID>
+ <name>Hit Radio FFH - Nordhessen</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.7003</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1067892365C9A36B639B343E81ABF97B2BECF4FD1573475BDCD528B38B6C9EE53914DE6B8B</stationID>
+ <name>mdr1 Radio Sachsen-Anhalt/Magdeburg</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.0004</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106789236627BE5D0E24D9D8E0A34B07461A68C46D4764B8D1C7D0F23D7A68387CAF1DF851</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.4754</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10678923676F55F28317D3C093D39DF391B8237F63EF6DDCEB4730A4B6CBEF6020B89154EE</stationID>
+ <name>Hit Radio Antenne Niedersachsen-BS/SZ</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.9004</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1067892369CF499BB70D8669077C130AD33C5D3B57303FA561AC0881A015D3A83181D0C808</stationID>
+ <name>Landeswelle Thringen-West</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.4255</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1067892370508B0087DC73D61C85C446C72C863FB27C330CBDE8AAA0AB6C35020CB7630119</stationID>
+ <name>Bayern 4 Klassik</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.7505</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1067892371E4965BD86BEB7DE95300D8C6072C2B50CBEA1E050A7371D46E21D83F86C2F348</stationID>
+ <name>Radio Melodie - Heimatfunk mit Herz</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.1505</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1067892372605625B1941D40ED966098831A85CB16DACBCBD18F47CFB94BFECD7B5976D2EF</stationID>
+ <name>mdr1 Radio Sachsen-Leipzig</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.6005</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1067892373691763E6281491F1947E54F90A5C1F003A0C5E5ED82BC736E545A185E63D6C48</stationID>
+ <name>hr3</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.1006</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1067892375070C6DD0C38ADFFC757383C08E51063EF67D7F6B9A65FA99E98CC67519405EB2</stationID>
+ <name>JAM-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.7006</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10678923781A7553AFAF02A65639F8D54C0E0758F71E08FAC1B0346FCBF8F3F31EA05D0704</stationID>
+ <name>NDR1 Radio NDS-Sdost</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.1507</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1067892380E2CFAE10FC20E0A70F12F3CE17AC227DA5B9CEE96266372FE5B9303E271BF7C5</stationID>
+ <name>NDR 2</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.6507</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10678923813E353B5E69F0BEB7830F179BE071F0A20A2EA9DC7B053D45B8949127A1B33135</stationID>
+ <name>NDR Info</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.9507</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10678923825E73D5FB86297A35BEFE0CD7822F78D40C465AF856BF8F99FFAA98C64A273DB5</stationID>
+ <name>Antenne Thringen</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.3508</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1067892383C271D381CA96928B343BD1B078DDE8BB6CF39E4E272F0EC7EF585222305B7A82</stationID>
+ <name>JUMP</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.9508</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1067892385395F29F61C9ED742F07FBE8AD515BA544205356B7BC24938DE57ADC24F5F971B</stationID>
+ <name>Hit-Radio Antenne Sachsen-Leipzig</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.451</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106789238821797AC93D359246B5F029F0166F6435051E2D82C5A0F64A2CA57C3B3C0F5AEC</stationID>
+ <name>hr2</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.651</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1067892389B784B23565F155F7C4627214844A4F1D6DF773866A5544B624550F4BC79C5B0B</stationID>
+ <name>BR2 Oberfranken/Mittelfranken</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.101</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10678923904A2D05B8989D85BF2B84811CA3C8631E211815996034D5F8B7C64FC17BDAAF30</stationID>
+ <name>Bayern 3</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.401</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1067892391C478336854A8947F1EF92D624B9CEB3B5323A455CDC00CAA52415619613BC0FC</stationID>
+ <name>Radio PSR-Leipzig</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.001</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1067892395569EB89A1DF547D9511DF75F57638BD33E337AD90285EE75950D131A68BFD091</stationID>
+ <name>mdr Info</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.401</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1067892396ABF71F9EA620D8EFE9922B5776DAD65B6690E3EA2AB705CBBD1A41CE5F860E20</stationID>
+ <name>Antenne Bayern</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.801</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10678923970D8348BC0AEBFA03AE3935441208C07ADC4D5A33DA7BE5FB5BFC7766CF1966DC</stationID>
+ <name>BR1 Oberfranken/Mittelfranken</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.101</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106789239967281D61B43DB2193367B42E693357CF7CCEB5810F79DBC3F7ED5773818D38CF</stationID>
+ <name>RTL Radio</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.101</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10678924006B3D53E4E70BCCCFCEF2FB311908B876A83D5E0F6A417919702737A949EF7B46</stationID>
+ <name>Radio FFN Braunschweig/Salzgitter</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.501</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1067892402CD99D5C0B11EFB46525A934E3572BC117429529864E009B403A5EFB6999AFDCC</stationID>
+ <name>NDR Kultur</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.151</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106789240396024BE06BBAEF787D4AA82CB0DF824BF4B7089A4E3053647D5E407F62B398F8</stationID>
+ <name>Rockland Sachsen-Anhalt</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.901</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/erlangen-cable-2.krp b/kradio3/presets/germany/erlangen-cable-2.krp
new file mode 100644
index 0000000..2637268
--- /dev/null
+++ b/kradio3/presets/germany/erlangen-cable-2.krp
@@ -0,0 +1,311 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-1.0beta3b</creator>
+ <maintainer>Christian Koot &lt;christian.koot@tiscali.de&gt;</maintainer>
+ <changed>2006-04-30T11:03:30</changed>
+ <country>Germany</country>
+ <city>Erlangen</city>
+ <media>Kabel Deutschland (Stadtzentrum)</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>11463855175392B78E1C2C4CF86B42FB342F792B7ED4FCEB59DFEA45480FFD216AFDE33DD6</stationID>
+ <name>Radio Galaxy</name>
+ <shortname>Galaxy</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11463855245A813B0185C6337FF8B4A54216B5ACFEBD165CC89091245F0ED891CD19A9BE98</stationID>
+ <name>Vil Radio</name>
+ <shortname>Vil</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11463856238F4B2EF2F05EA4A427DB1327BA010868FFC71C561B93E0260C65716CC84DE2FA</stationID>
+ <name>BR1 - Niederbayern/Oberpfalz</name>
+ <shortname>BR1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>114638565835DEB04E77897CFD26B5A4D751DFAF0EEF79DE114B486D30A7C2D57718496BF3</stationID>
+ <name>SWR1 - Baden-Württemberg</name>
+ <shortname>SWR1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>114638572667143AF9638D3D20F522CA7094CC393FEBBDCAEFCE826A038E8BA54FE2CCC88E</stationID>
+ <name>SWR2 - Baden-Württemberg</name>
+ <shortname>SWR2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1146385764346647C3961BAD90641F7B2F83A64C6CF503F4DBA56B072667991878D08049EA</stationID>
+ <name>SWR3</name>
+ <shortname>SWR3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.85</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1146385878F30114AA2DF9A0F4D86A8A78B7F2D00ADC6CFF51FA33AA6CE4A1FCD358CB2802</stationID>
+ <name>MDR Figaro</name>
+ <shortname>MDR Figaro</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11463859033E2A41D0021E0A9124FAF760A64CF8814BC2EAB02BD297262BB64B1A45010CE6</stationID>
+ <name>MDR1 Radio Thüringen (Suhl)</name>
+ <shortname>MDR1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1146385942043AC9CFBB3D34609E117D0C8DB7D02DF6FA3E1A608D04808D0387EC1398D743</stationID>
+ <name>MDR JUMP</name>
+ <shortname>JUMP</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1146385960BB062D63666B7D7AB592D46763A6DE6DE4DF963943A1182F15BC145376E6A70C</stationID>
+ <name>BR2 - Niederbayern/Oberpfalz</name>
+ <shortname>BR2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1146386373E902F0F98DE3AE90A51EA542C523341F09E4060645A2161572986F2E8C1B93C8</stationID>
+ <name>Bayern 4 Klassik</name>
+ <shortname>BR4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1146386413F4B9FF07A8B22454195D871F06FA8E93A179543BD9F868EA89031BF11FBC6E61</stationID>
+ <name>B5 Aktuell</name>
+ <shortname>B5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1146386494F264D29C36E6C99FEC6D984DBEE213A2C4E26DD16492DCDD52E2BA6813A92887</stationID>
+ <name>BR1 - Oberfranken/Mittelfranken</name>
+ <shortname>BR1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1146386546C91BDFC65BFC94C59B25BE9C67345E5F1D01E2918BDB0D8051387511E933DF27</stationID>
+ <name>BR2 - Oberfranken/Mittelfranken</name>
+ <shortname>BR2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11463866094A6E2A59FEE9295B36A64F829817A34F06C8998D18C837B962EF32E251B9E08F</stationID>
+ <name>Pirate Radio</name>
+ <shortname>Pirate</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1146386629BEFEB680FD8BAE89959B3BEFD9954AC57107DCBEE97CA2AB49F093120B594301</stationID>
+ <name>Bayern 3</name>
+ <shortname>BR3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>114638666786C5202E497B14DABC9A93AF96E96063CEB922FD8DC4109A861333DD412502DC</stationID>
+ <name>Truck Radio</name>
+ <shortname>Truck</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>114638668565B2BF74EC08F793E0A84CE64CE15C536996E96350A8FB8D9A188F3FF108C7E3</stationID>
+ <name>Deutschlandradio Kultur</name>
+ <shortname>Dradio Kultur</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1146386808559CE6C707E236691BCFB23B463D9054EF43538A2E668D44173FECB2EDD782CC</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11463868617E6F406CC6949E1D3B17C6D0BE7034DC86D40EEBE329A1D23E16AD5D42DFE6C5</stationID>
+ <name>STAR FM</name>
+ <shortname>STAR FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1146386885653D251E38CEC58872E9060335CF290BC7B78228AEE78AAEB30FBF118F2EDE4C</stationID>
+ <name>Antenne Bayern</name>
+ <shortname>Antenne</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11463869423E9FF9A90FF35D13A8959F6595F4584700EB77B2D9D2AAAF06DD52FBBFF5EFC3</stationID>
+ <name>Radio F / Jazztime Nürnberg</name>
+ <shortname>F / Jazztime</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11463869747BFD11DDE1E2A510BEDAFFB06975B93197BEC7E1B195F7EFB7820276182B3AF7</stationID>
+ <name>Radio Charivari Neumarkt</name>
+ <shortname>Charivari NM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11463870257241C0E05C66BC5422BBE7ED3B290A8A7ABED3494E64955417EF589A52C33DCB</stationID>
+ <name>Hit Radio N1</name>
+ <shortname>N1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1146387079995DB205B3437FEA543A6787B5519284302D6A57EE78CB77FB00EB028EAE171A</stationID>
+ <name>Radio Z</name>
+ <shortname>Radio Z</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>114638709723F211857FB4AF743AA6258EE941E2CD7435179EFB2535F730BFB8C19488C894</stationID>
+ <name>Radio Gong Nürnberg</name>
+ <shortname>Gong</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>114638719276CA366403BD8079B8B5D94AC0E8C7EA97D9BD3F22D9EF83382F2B87AD04E3AB</stationID>
+ <name>Radio Charivari Nürnberg</name>
+ <shortname>Charivari N</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1146387227F20F626E7D2E119FF2AA436EFFACBD0B653FAC9F8EE3037DFB90BF70ED1847B4</stationID>
+ <name>Radio 8</name>
+ <shortname>Radio 8</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>114638724283A7F73DE853E3B32899A99C989EF01BA476BCC724E22B4287A584BE9C02A107</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1146387277C1A29480D7CFC644343CC59B1EC4973E9C270569969C4021F01E630F645EDFAF</stationID>
+ <name>max 91,0</name>
+ <shortname>max 91,0</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1146387306E3C59F37B7C7A2D634C586ACF753B5A0661EA21CF1A5AAB7B7394B8722CACFF1</stationID>
+ <name>JAM FM</name>
+ <shortname>JAM FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1146387332493468E0C41C955204B6F9CA2266C574A76EB08F54DB9A080FE30D58AD5E737D</stationID>
+ <name>Radio Horeb</name>
+ <shortname>Radio Horeb</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11463873527224DB476A717C6AC86C368CE9CB1E2A97632865B7189B9165C48E037E654089</stationID>
+ <name>Radio Energy Nürnberg</name>
+ <shortname>Energy</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1146387498C14477EE0238C59C06C9008E54987586BE2EC7A60CCBB96955740FB8729A4CD3</stationID>
+ <name>RTL Radio</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>114638756924D60E1B5C6F3773E6E4F2E39C431B390ED00A52621DDD856A7730A4055EA641</stationID>
+ <name>Fantasy Bayern</name>
+ <shortname>Fantasy</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1146387586CBE53074AE5119D11A283011E1221F7BBD5BF9D9A1DBDF76E57085F3CDF2B424</stationID>
+ <name>Rock Antenne</name>
+ <shortname>Rock Antenne</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11463876116B0DC413D5F0C6AE4163050F32D6F58165CF109FD11AA769E4494294AAFAFE72</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Melodie</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.6</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/erlangen-cable.krp b/kradio3/presets/germany/erlangen-cable.krp
new file mode 100644
index 0000000..b1c4438
--- /dev/null
+++ b/kradio3/presets/germany/erlangen-cable.krp
@@ -0,0 +1,349 @@
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Wilhelm Kleinder &lt;wilhelm.kleinoeder@fen-net.de&gt;</maintainer>
+ <changed>2003-09-24T00:00:05</changed>
+ <country>Germany</country>
+ <city>Erlangen</city>
+ <media>ewt-Cable Erlangen Sd</media>
+ <comments>Fortsetzung folgt - alle Angaben ohne Gewhr!</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>10633853465851F3236E7DC0DAFBECCED1130E570557E2731A178AC29B44D4425617DA3915</stationID>
+ <name>B5 Aktuell</name>
+ <shortname>B5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853461AC74552ACC54AF335CFD8E9536F7D07E46E2B3182B42E2A91EB83B7D4C8981B</stationID>
+ <name>BR1 Ober-/ Mittelfranken</name>
+ <shortname>BR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385346693040D0A995FA25033CEBA7F248127912B9B3BEC3D015E4E223A475FF478E57</stationID>
+ <name>BR 2 Ober- /Mittelfranken</name>
+ <shortname>BR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338534679924A469D03054D31DBC450C87E5915A97F38BBD43E7C3C3E0A0DEEF945DD66</stationID>
+ <name>Bayern 3</name>
+ <shortname>BR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853462BE14044001654D1DD362BB73417117BBC34708B9934046DE9DFC7DA6CC2E0E5</stationID>
+ <name>Bayern 4 Klassik</name>
+ <shortname>BR 4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.85</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853468151FD26E80E7B35711A8FCBACBD9CCAFB5CB82D50A244B91C609AAF29361FD2</stationID>
+ <name>Deutschland Radio Berlin</name>
+ <shortname>D-Radio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.85</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338534611AEC4BD76AF3B8EA51A9E1E7B401FD4EA330B5FE040945567678AE810A2F65B</stationID>
+ <name>ERF 1 (Evangeliums Rundfunk 1)</name>
+ <shortname>ERF 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853467AF6C25D4772224E17CD5B64F87CCB4B2B79FA77BE85E98A5F86584FFB39B225</stationID>
+ <name>Fritz</name>
+ <shortname>Fritz</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385346CC16BCE3DCAD009EE3310E3B8B537A68C174B5134A2683FF7DB352E21348E9B1</stationID>
+ <name>Radio Bamberg</name>
+ <shortname>Bamberg</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385346CBFF6077498403A4F79A4BEF526A05B7A240C4B7166289AB197775DDE0B4F9D1</stationID>
+ <name>ERF 2 (Evangeliums Rundfunk 2)</name>
+ <shortname>ERF 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853463C432BFCE038D3D18711ABF2805C7C85AD87C2E7574C9E85FFD30528552B5851</stationID>
+ <name>HR 4</name>
+ <shortname>HR 4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385346433869F617FB7F121ECA9B6FCF6102E6420B31CE34748C2784F11874B8822018</stationID>
+ <name>Charivari Neumarkt</name>
+ <shortname>Chariv. Neum.</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853462511F920A1F88C6AFCD395AA85A39ED64E1E976610614C126EA2A58C4A2FE967</stationID>
+ <name>JAM FM</name>
+ <shortname>JAM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385346F7FC4E5AA5AEA09E8E51765F359F930CAE02346B320748C140427F73E0B1CE2E</stationID>
+ <name>Elvira</name>
+ <shortname>Elvira</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385346B6C64D05D2B652B2DB81D06CE17B0730DF467007DF4AE4CC5FB6B1A248F84417</stationID>
+ <name>JUMP</name>
+ <shortname>JUMP</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385346BC59F96FE5E2814F3FEB5F98709BB1B5136DD84FF8DCF733AA1D6DD76211CFF5</stationID>
+ <name>Antenne Bayern</name>
+ <shortname>Antenne </shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385346B2A2F1DD042B1ED2D80B9D58BEF67D4CA39490277ECB6F96804ED210FE53F978</stationID>
+ <name>Radio Charivari/ Radio aladin</name>
+ <shortname>Charivari</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385346FA8B760FD4E0372F46975F22A3963ACB3D78B38C26AB27BE541EB76249E53944</stationID>
+ <name>Radio Energy Nbg. / Radio Z</name>
+ <shortname>Energy</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338534601BFE0E8DF66604DBE08877CD189B632991E6B3648337FE96342237C6E75940B</stationID>
+ <name>Radio F / Jazztime Nrnberg</name>
+ <shortname>Radio F</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385346BAA62A82BA4AA03B6E8B83B2833E1371BA73C0345A48640DE64AE53837F6C342</stationID>
+ <name>Radio N1</name>
+ <shortname>N1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853460AEE60D8369327972970E28FF4C26D5753FC6D487DAF461840940E1CFF41D810</stationID>
+ <name>Radio Gong Nrnberg</name>
+ <shortname>Gong</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338534617657033723A8777852A43A33172DA9FA4893465C0692ED36E96E6F32A6D8FD2</stationID>
+ <name>AFN</name>
+ <shortname>AFN</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853464330E784936FB845EAA6A85883ED1F98B93D3900CA4DCEFB4721C30B3E7E9399</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853465DF14A7CBCB52945A125E3C169FBE1CF9433823C7DC0D6AB0CA47E6FF31F9D7C</stationID>
+ <name>SWR 1 Baden Wrttemberg</name>
+ <shortname>SWR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385346565B7D96226B5002F8FEEA25A6CDE720D94FD27DA96666B79C9B8CAC3D268196</stationID>
+ <name>HR 1</name>
+ <shortname>HR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853466EDB8F6E7091694B9B6F3341D781CDFCF00F409B79559E65562B5016EA2812B6</stationID>
+ <name>VIL Radio Nrnberg</name>
+ <shortname>VIL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853462F154C893FB6E3C16509B2E5BA5579F6E5AD3529FA2200F86651365FD19D1B4C</stationID>
+ <name>SWR 2 Baden Wrttemberg</name>
+ <shortname>SWR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338534614483235C1E41ED0FB25603C42C80C868D0C4A1F5C11F3885DC5F93B90F5727B</stationID>
+ <name>SWR 3 Baden Wrttemberg</name>
+ <shortname>SWR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338534616764C8D6FA06CDAF95987BB31E49A73072E2E3E2A19E8AAC32085CEB9A5C900</stationID>
+ <name>Rock Antenne</name>
+ <shortname>Rock</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385346775F8FE3FCB221801DEDCF69DE780BB5524D31792A5C424F1440C1F1D64A7D9C</stationID>
+ <name>RTL Radio</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338534698C7695144255D43BF6F8DEC0552C0551DCC51A50B726FEDBAC0287787D8C9E9</stationID>
+ <name>MDR Kultur</name>
+ <shortname>MDR Kult.</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853463C38CE325CF7709C4477BB9F3FF43B86462742340320D63AB15188DEAF244242</stationID>
+ <name>Star Sat Radio</name>
+ <shortname>Star</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853464EC07302C53894B8E4ED9E70F1EC384111CF77249E98537ABA96CC94387A226F</stationID>
+ <name>MDR Info</name>
+ <shortname>MDR Info</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385346FD753E4FF8FCF849BFCEC9823CFFEF5E13032C4D57A489A8765CC4AEDE935468</stationID>
+ <name>Radio Eins</name>
+ <shortname>Eins</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385346F80589A7BF0747EC865E25C57FB50B9120929CF74D2610B025251BB222F45970</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Melodie</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385346978586CB40155BF2E888A1970DD0E7466D90C0310A3F003CA78B997C98DA4562</stationID>
+ <name>MDR Sputnik</name>
+ <shortname>Sputnik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853469E3830B364B67C6D5F5AC145C725ADCBF84A7B2C074EFBB7029E9840F5AC66FE</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.7</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
diff --git a/kradio3/presets/germany/erlensee-cable.krp b/kradio3/presets/germany/erlensee-cable.krp
new file mode 100644
index 0000000..fd43479
--- /dev/null
+++ b/kradio3/presets/germany/erlensee-cable.krp
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-1.0beta3b</creator>
+ <maintainer>Werner Muehl, &lt;info@ib-muehl.de&gt;</maintainer>
+ <changed>2003-10-05T21:35:53</changed>
+ <country>Germany</country>
+ <city>Erlensee</city>
+ <media>Cabel</media>
+ <comments>Stations/Frequencies for Hanau, Bruchkoebel, Maintal, Erlensee,
+Rodenbach, Neuberg, Langenselbold</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>106854525432A288014DF7C85A99EB501E082B06B4F96949EBAE12DD4A859C19C3636C7101</stationID>
+ <name>Antenne Bayern</name>
+ <shortname>Antenne Bayern</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254739FC26D6EA0AFF43BCC062A18F2B696DD53495A4DB3E0CE961695FDE6CF251C</stationID>
+ <name>AFN</name>
+ <shortname>AFN</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254A4F642897A3A7A2FDCF75CC91EC34AB83409A44E520926B65616CB71A888A632</stationID>
+ <name>Bayerischer Rundfunk 1 (Main / Franken)</name>
+ <shortname>BR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452545BFB673861F03BE773365B16486F1312D0E67EE191A44D3E6E8A2EDE9CFF860B</stationID>
+ <name>Bayerischer Rundfunk 2 (Main / Franken)</name>
+ <shortname>BR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254A50C8E4F463384279978E9990FE99AD5E8D02892DC85239B19FF5D03D0B2D2E6</stationID>
+ <name>Bayerischer Rundfunk 3</name>
+ <shortname>BR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452542B850A62AFBC32E86A8AEEAFB6ADDB4471C997F6EC31B99A4705C034891FF15F</stationID>
+ <name>Bayerischer Rundfunk 4 Klassik</name>
+ <shortname>BR 4 KLassik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254AFA422E0A4F4D99F24FFC42C2EA3E5563D518014CAAD3D29F69BC15105EA2B8D</stationID>
+ <name>Bayerischer Rundfunk 5</name>
+ <shortname>BR 5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452544B20BEB753EDDA4B34C42E483252E211C5BCB770258F801EE1840268FD85CCA2</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>DLR Berlin</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254870A846605C88985C8D465AA421B30FF35FDBEBB55A43E57FCAFD16154206359</stationID>
+ <name>Hessischer Rundfunk 1</name>
+ <shortname>HR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254933EFC46CF2BFFE13CC182D4B05FF2D2461E6F6D7589DDAF3C87DA473962E186</stationID>
+ <name>Hessischer Rundfunk Klassik</name>
+ <shortname>HR Klasik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11367224732DD9647905D1A0E3003D6727D6C6A468489AE8E1B8349C8BDE108A1BE864F4DF</stationID>
+ <name>Hessischer Rundfunk - Info</name>
+ <shortname>HR - Info</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525467DD7BA14D8A886573BE9AED9A64A86C9F8E5AF487245E4146D0307E1EBAFF45</stationID>
+ <name>Hessischer Rundfunk 2</name>
+ <shortname>HR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254702E9C08B12CD8B1420A2124B447183B0A668DFCB197EE89DF93E6ACF98E9812</stationID>
+ <name>Hessischer Rundfunk 3</name>
+ <shortname>HR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452546CFB27CC9962BF5D8977046D34628F539AA5D68B836F03732D03EC4943541F6C</stationID>
+ <name>Hessischer Rundfunk 4 Rhein-Main</name>
+ <shortname>HR 4 Rhein-Main</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452549B0EB616A99AF727280D11B619234DFFABDAA8F588578B31D946064A1E4F0CE1</stationID>
+ <name>Hit-Radio FFH Rhein-Main</name>
+ <shortname>FFH</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1136724537075C78FBD2816E19C6B77CC4DAFDC888A9DC10DEBA65983A0B76537048067AE1</stationID>
+ <name>JAM-FM</name>
+ <shortname>JAM-FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525483F9405C61CE3EED8B1790B72AE42D9ECF45255D65635DCCA1A185EDB0876D34</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11367244420E0433EBB9A7933AE1DFCAE9AC5968416B2B9C1718E31FED01DFD0676DC2505B</stationID>
+ <name>MAIN FM</name>
+ <shortname>MAIN FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254D0CE4F17DAD846DDC36D7DC42608C19C2F18B4885EC251CE790C84C41CB27447</stationID>
+ <name>Planet Radio</name>
+ <shortname>Planet</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254AC687063AB78F567A8746D9C8C6B2122EDD6595C51D4BE060F507045CE72F2C3</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Melodie</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1136724286E5985147114BB716FE9E15FA357C38BBB0CB331B5396CEB9EBDBCE94915F4A18</stationID>
+ <name>Radio RPR Eins</name>
+ <shortname>RPR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525437C470CE8A4CDE8335D5C2F7734E80C021240F03A3CAAEE3012CD289EDC275EC</stationID>
+ <name>RTL Radio</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452541FF3CA5C607D5DE6797DC299B2145287B967056B74590104E2C042A49CDF62B6</stationID>
+ <name>Sunshine Live</name>
+ <shortname>Sunshine</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254C3EDE8BB17AC69C6BFAE1D0C57D3226A907A7420C6B2B792CF8EA9D2844D5BFC</stationID>
+ <name>SWR 1-Rheinland-Pfalz</name>
+ <shortname>SWR 1-Rh.Pfalz</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525444FF41C1C7E711CF7C74D8AC38A735064E85E5376AC0F57D568D429B9E913BD5</stationID>
+ <name>SWR 2-Rheinland-Pfalz</name>
+ <shortname>SWR 2-Rh.Pfalz</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254CC505A9B2AEF4B7C6BDA243798B7AED04B2D39569524C28CC4BE3EC0CA46D765</stationID>
+ <name>SWR 3</name>
+ <shortname>SWR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254355DB6BC4C4A688C5E1FEF7DBF78B7FB62C40545D488ADA1A4CCF51AF702F839</stationID>
+ <name>SWR 4 - Pfalz</name>
+ <shortname>SWR 4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1136724325091824FE3A7B2E74B15CCE068D71760C4BA8271CE5F3511F5BA9F69098A9C9C8</stationID>
+ <name>WDR 2 (Siegen)</name>
+ <shortname>WDR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525406B343319F3EC21170A752D910A7C6C26670A13961C9F0CC9652DF5D53695E68</stationID>
+ <name>WDR 3</name>
+ <shortname>WDR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11367226162FF388CE9717148283756F57FE37EEE28DD6148247865CBD8BC64CF3C8EF3A01</stationID>
+ <name>YOU FM</name>
+ <shortname>Y</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.8</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/erwitte-lippstadt.krp b/kradio3/presets/germany/erwitte-lippstadt.krp
new file mode 100644
index 0000000..5154f6b
--- /dev/null
+++ b/kradio3/presets/germany/erwitte-lippstadt.krp
@@ -0,0 +1,279 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-1.0beta3b</creator>
+ <maintainer>Michael Skutek &lt;grf-chz@gmx.de&gt;</maintainer>
+ <changed>2006-04-08T15:32:26</changed>
+ <country>Germany</country>
+ <city>Erwitte/Lippstadt</city>
+ <media>cable</media>
+ <comments>Stand April 2006</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>114450340207C9EC019103333DD933DB3D41B013A5DBCD356C7C0156EC2621FFE73E2E1422</stationID>
+ <name>Hellweg Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1144503177C8A5D98DDB3ED0B43879B15EF0B0309C784282588046494579B47173B27B3AB2</stationID>
+ <name>WDR Radio 5 Funkhaus Europa</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1144503221A3F0A811E98DFAD506565CF678B6042CD6F3F959B0768E49BA6BBE19E1299E4E</stationID>
+ <name>WDR Radio 5</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1144503239B591C38EA2DF3808E561FCB7E119F99A7AE39B01E2F7B5905CB34D8CF7A12D06</stationID>
+ <name>WDR 2 - Siegen</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11445034593C2A2C62824A6F362383ADF9368424D379E27147CD856706814828BBE70B1598</stationID>
+ <name>WDR 3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11445034994B32F84D1CA5662B6AADDD1AEAFEBDEFC57A5F3217306A9AA0AEB290F2135AA2</stationID>
+ <name>WDR 4</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338534721F575BDC275EA04DE8EB1822573BBF78CAC79BE4F5C7C4A1E8856B51A3BEB3E</stationID>
+ <name>Eins Live (WDR)</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>114450351711A669E87FF76F9FD8C16E36D79A55198ADC8986D9EEF580823DB8156C620F2C</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1144503530C321C15A56AEDE55C776E4C6EFD87110C882AC1087925D5D659F90D9197B76B7</stationID>
+ <name>domradio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1144503545F4385BA0856A72FDFA1C75E0CCFE2C9B22C1D5B369D41FB32011F2DD54DF5848</stationID>
+ <name>NDR 1 Radio NDS - Suedwest</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>114450357173AF7E03293E48B79510DF51D6322BADEF1CF1B9D1A62219455A4A27560AA811</stationID>
+ <name>NDR 2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11445036547683CFA36B42D0D281456AE87305EA30C74333243408C9173CD6D553FB23FA06</stationID>
+ <name>NDR Kultur</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11445036686F4B7057C708F45509DB72E367184C00495B3E61F355ADB35562CC2606DAA2CA</stationID>
+ <name>Radio Melodie</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.85</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>114450368257F6CF38A35DB918CFECCEA406E46D964EC42B63BE2AFEFD5C07CD1A4E5DC28F</stationID>
+ <name>hr1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>114450369949868713C46D3ABDB4C09A4A1B5A433D9969C894AFBC69EE749D2DFA2A9A7602</stationID>
+ <name>hr2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11445037115E6D778157501A23CB02BAF4B3A3C65FEFCB559EC1480584C07B6A2DB845C74E</stationID>
+ <name>hr3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1144503723BBA21C00CCDEDAACB0233620026F50562616DD0704B45C6F2E174407B7BB4CB4</stationID>
+ <name>hr4-Rhein-Main-Journal</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1144503748A5A75144BA9E773C011B305520F557DAC24D44A3094C397EEAD1985BD0368A6D</stationID>
+ <name>RTL-Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1144503762F3E4D28E45803602B90BC5DA0159A9F772058B3345C21DE13623714A3000AB63</stationID>
+ <name>SWR1 - Rheinland-Pfalz</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.85</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1144503785ADB70B77D39CF6F4B7B6E854FBBAE58FCEB43FB2DAC48F0282B7F444D89BFCD9</stationID>
+ <name>SWR 2 - Rheinland-Pfalz</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1144503815FA42673F93F06684F5DB916E9E0C4D97ABC6A9E56E68291FF12A56B479F068E8</stationID>
+ <name>SWR 3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11445038346BC51D7DB6199D6CBCC05B11C616AE17228647A412911209AF7AB4AA50BCF2CB</stationID>
+ <name>sunshine live</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11445038482C0D9E3355EA85615DC1C01B99DF6073A99A98F00965C84DECCA519A22BD2E5F</stationID>
+ <name>JAM FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1144503862B3093EA27B18BF2F29FCEE06B444A4A2525BE35FFFD53BCBAAFB66100DBE4E18</stationID>
+ <name>ERF (Evangeliums-Rundfunk)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1144503885F715FA5FEBECD2F58CBD10097C7F7E03F8AA28111FBB8E61A5FA1F8381A5CBBF</stationID>
+ <name>JUMP</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1144503900271D2AA802A76C35B378CA9D827D8711953B51ABBB1A2D9E9DE0948D518D159A</stationID>
+ <name>Deutschlandradio Kultur</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11445039206B5BE5E423DAE54BDBF965CFEE5D71FDEACAEAC9CB0CE97341B135D19EBB6A9D</stationID>
+ <name>BFBS (engl.)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1144503943A2AE71E70920730334B17420376AE51046BE7E7E02BF50821E254A111F35D0EB</stationID>
+ <name>Klassik Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11445039568806EAE4BB09B8F5641DE611D606CF65DDA1F2C9ED1FA3350721D7F16C9C9EFE</stationID>
+ <name>Radio 4 (niederl.)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.2</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
diff --git a/kradio3/presets/germany/essen-cable.krp b/kradio3/presets/germany/essen-cable.krp
new file mode 100644
index 0000000..91e0f02
--- /dev/null
+++ b/kradio3/presets/germany/essen-cable.krp
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Uwe Thaler, &lt;Uwe.Thaler@t-online.de&gt;</maintainer>
+ <changed>2003-12-23T22:02:09</changed>
+ <country>Deutschland</country>
+ <city>Essen</city>
+ <media>Kabel</media>
+ <comments>Liste Radio Kabelcom Essen</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>111645544461FE8EC7D53496B0149CC2169AFF2BE5A321887F26EA65C4C52540225748C2DE</stationID>
+ <name>RTL Radio</name>
+ <shortname>RTL R</shortname>
+ <icon></icon>
+ <frequency>87.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444132EC8910552A076B2263EB4FB6DA83828A0EDE6BACD06C3147D3D1D432A0B84</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <frequency>88.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444C33A968EE2BF1BB48608049D2CF4CF12067F88AD3A8399924505353DC2F8C1B1</stationID>
+ <name>WDR 4</name>
+ <shortname>WDR 4</shortname>
+ <icon></icon>
+ <frequency>89.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554441C32631CB6263AF15048C040D027B28AFFC9380A2B9027721DAC470EFF0F2B13</stationID>
+ <name>WDR Eins Live</name>
+ <shortname>Eins Live</shortname>
+ <icon></icon>
+ <frequency>89.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444EC9767FF57C695D2BC57D4E9960583C198339CBC10C280ADC8967430FA73362C</stationID>
+ <name>Deutschland Radio Berlin</name>
+ <shortname>DR</shortname>
+ <icon></icon>
+ <frequency>90.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554447E69E7F5DC8891C1EC85A6BABE9DA55BF3F972E92D42A27D94189964F338DAEF</stationID>
+ <name>WDR III</name>
+ <shortname>WDR III</shortname>
+ <icon></icon>
+ <frequency>90.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544489F961FBA68B91A2590ED0348782FD901D630C4B10247EE161FF365EDA52A0A4</stationID>
+ <name>Funkhaus Europa - WDR 5</name>
+ <shortname>WDR 5 FHE</shortname>
+ <icon></icon>
+ <frequency>91.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444C642B187F86FE3A63D21E82AE649DB78DA6A62FC9F13CC0F7A426AAC9DCBAE19</stationID>
+ <name>Radio Essen</name>
+ <shortname>Esssen</shortname>
+ <icon></icon>
+ <frequency>92.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554447D2214728E8C6A0FE7F397222627101A4A4186A81B2C51C0D9C9E66A4A91DE81</stationID>
+ <name>wdr II</name>
+ <shortname>wdr ii</shortname>
+ <icon></icon>
+ <frequency>92.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444DCD947F01824F0A55659C25B627F517E6ADDF5B00B3FB2A658F738A482055810</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik</shortname>
+ <icon></icon>
+ <frequency>93.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554446002034B38BC07A94EDA8819EF2177282B18B46232A19A5ECE0901DF6A0D4D85</stationID>
+ <name>NDR 2</name>
+ <shortname>NDR 2</shortname>
+ <icon></icon>
+ <frequency>95.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444B6F7C6375D08F52073F4D132CEC84048966F773C1492E82A05585CCA2C11A891</stationID>
+ <name>HR 3</name>
+ <shortname>HR 3</shortname>
+ <icon></icon>
+ <frequency>95.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544479D905B9328F1AC358A01F714EE8C17400018AE87DBED4CE5C7F625F914B5FDB</stationID>
+ <name>domradio</name>
+ <shortname>dom</shortname>
+ <icon></icon>
+ <frequency>96.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544480377316E6435D71F5EB8AA0402FB46031174B80C5AC418AE0C0CCDAEDA937A2</stationID>
+ <name>bigFM Rheinland-Pfalz</name>
+ <shortname>bigFM</shortname>
+ <icon></icon>
+ <frequency>97.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554449784A88F4B6C63A7C41D755BE911D687B4C687070880F5B28605E85AECA30754</stationID>
+ <name>SWR 4 Rheinland</name>
+ <shortname>SWR 4</shortname>
+ <icon></icon>
+ <frequency>97.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444D5E482E6616E9D6E5D5BDFE5A04193005823CE44E87B48484DF749B8FF8D035B</stationID>
+ <name>SWR 3</name>
+ <shortname>SWR 3</shortname>
+ <icon></icon>
+ <frequency>98.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554440A3113553BB364D4A20AE066334DE449CA5C17CCA426E8FA1D1EDCCB375D94B6</stationID>
+ <name>SWR 1 Rheinland-Pfalz</name>
+ <shortname>SWR 1</shortname>
+ <icon></icon>
+ <frequency>99.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554448C55B30C07AB17EDB1D15D07C86D7E062F8182AC802C2A83ABAD8C5EE5CFA69D</stationID>
+ <name>radio 4 NL</name>
+ <shortname>radio 4 NL</shortname>
+ <icon></icon>
+ <frequency>100.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444D01BDDFCEFA6676B8F8C98F3E1FBAD95CA6FE0B9C150FFDD6795189B64BF63EB</stationID>
+ <name>FM 3 NL</name>
+ <shortname>FM 3 NL</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554447A369B21CFC99C0BF2B72914C742BE496DFDFCD025658A93E387411759BBFA9D</stationID>
+ <name>sunshine live</name>
+ <shortname>Sunshine</shortname>
+ <icon></icon>
+ <frequency>102.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444C55AFCD21C815FB71F984EABA23B215432E193FCC8D4F77B9722D39CCA020CF2</stationID>
+ <name>BFBS</name>
+ <shortname>BFBS</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544418C2B1594DAF8F9AD98E1A3D4EC894D3A74B163377373AA0D594B4690538B502</stationID>
+ <name>WDR 5</name>
+ <shortname>WDR 5</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554446B06F6FC468822B3823EA87329E6F0A6F352A325BC2618FB8037056CC8A53191</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Melodie</shortname>
+ <icon></icon>
+ <frequency>105.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554442AB08FEB430CC8F7FEBDDDEFC34C50E880E99A6071127F03D3A761CBF07573B6</stationID>
+ <name>FAM - FM</name>
+ <shortname>JAM</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/fischbachau-cable.krp b/kradio3/presets/germany/fischbachau-cable.krp
new file mode 100644
index 0000000..b7b9846
--- /dev/null
+++ b/kradio3/presets/germany/fischbachau-cable.krp
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="UTF8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Matthias Meinecke &lt;mm@meinecke58.de&gt;</maintainer>
+ <changed>2003-09-07T16:13:48</changed>
+ <country>Germany</country>
+ <city>Fischbachau</city>
+ <media>cable</media>
+ <comments>Landkreis Miesbach</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1062942857F48329AABDF648B51AFFF53870D88E869E6EFA59515AD27B7F7A74E04577B48A</stationID>
+ <name>BR1 - Oberbayern</name>
+ <shortname>BR1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.2016</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1062942857ACAF4F56EA733F200A9DA79C70F507B4C618C7AFCC4129A1B903778870D0BB67</stationID>
+ <name>BR2 - Oberbayern</name>
+ <shortname>BR2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.4517</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1062942857737FF51B88678FEF71F78015E302C23186DFDA2A19D9B6704A7A78D701F3B097</stationID>
+ <name>Bayern 3</name>
+ <shortname>BR3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.8516</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1062942857ABEB45089645CA1909238CD02203DED98DDF24CE575ED0FF69C2D436694B7936</stationID>
+ <name>Bayern 4 Klassik</name>
+ <shortname>BR4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106294285722717846BF65E64A7AD1450528478BCFD5C71E5B8A533348C9B9382408983769</stationID>
+ <name>B5 aktuell</name>
+ <shortname>BR5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1062942857A0A360BBB3C055B8BD1CA0221DDC6910F762C46860315C7B588967770E389881</stationID>
+ <name>Radio Alpenwelle</name>
+ <shortname>Alpenwelle</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.5264</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1062942857AB4BD84E66BD127D6126E32B806451F5A575DAE397B54404F48E9AD162AF005B</stationID>
+ <name>Radio Arabella</name>
+ <shortname>Arabella</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.2264</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1062942857B16903EA2DBF73409CF027028AFB0DB3520A54B0EF22AF2D950FFE89BC6AA876</stationID>
+ <name>Antenne Bayern</name>
+ <shortname>Antenne</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.8015</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106294285766E088A059DF4DF4A8F8224AAAF9D4FBFB0DC966B960F691F571BAA35A458E36</stationID>
+ <name>Radio Charivari Mnchen</name>
+ <shortname>Charivari</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.5518</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1062942857A61C1748F9F334F9F5F22A6EE8AD216C40BC145D02775EDC168F2A773AB3E028</stationID>
+ <name>Feierwerk/Lora/afk</name>
+ <shortname>afk</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1062942857A0F37CEE038A9FA7D8B5A2F5A7E8B05CA23EAC10C2DC6546C866257E643C4569</stationID>
+ <name>Radio Gong Mnchen</name>
+ <shortname>Gong</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106294285770A0C120C6C7682F84489BAE62FFB9D30088836F4FEE56C6A89B86D28CCB6EC0</stationID>
+ <name>Radio Energy Mnchen</name>
+ <shortname>Energy</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.1519</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106294285751E827721F2C8FCA9633BD0A96099C336C4CCFF3DDB735242FC032CA295A67EE</stationID>
+ <name>Radio 2DAY / radio herb</name>
+ <shortname>2DAY</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.6019</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106294285715C5C8A9C8058825B99FAA42A1F11A3B6A51BE43375E9DDDA519B2811694922D</stationID>
+ <name>FM4</name>
+ <shortname>FM4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.352</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1062942857B733F99D02B6B64C7159785E48EFB7677220AA90AC7BFF5A94F7A16E5D68022C</stationID>
+ <name>�tereich 1</name>
+ <shortname>�</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.652</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10629428572F44C92D89917AF16D5716009830906416ECBE4A91441C0E9D39B7E401546BF9</stationID>
+ <name>�tereich 3</name>
+ <shortname>�</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10629428575732B8A58AC7E73598F07AFECB367DF0C11977270001C91216275E4ADC4DC435</stationID>
+ <name>� - Radio Salzburg</name>
+ <shortname>�-S</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.0521</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1062942857C23BC88E669D176D677D212EB84A0E7281CE58E3D84AA1ED8C710FD9F590D6C0</stationID>
+ <name>� - Radio Oberstereich</name>
+ <shortname>�-O</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.8271</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1062942857DBD3D6C9011EC869A2A5903B401827527D6A75CDDC10E40ACA35DBACE7452C17</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DF</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10629428575BD7DB1E117A82F1EE1857DA483DA9031ECA30ABB14F5B31E223492D74156C76</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>DRB</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1062942857C4212F5A31D1F99C2862E4F22E43081D731585FEA1524EA826F941A9C3AE2BAA</stationID>
+ <name>Radio Melodie - Heimatfunk mit Herz</name>
+ <shortname>Melodie</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.502</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106294285722F7076464D498378B895A03EBD15D3E6BF92102AF3151FA13714E69BA697137</stationID>
+ <name>RTL Radio - Die Gr�ten Oldies</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.952</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10629428577924B1CC89FEFA596423D348F618A3EE3D728B6243AC83B5A68AD22AD01FFDEF</stationID>
+ <name>JAM-FM</name>
+ <shortname>JAM-FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.752</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106294285718E54AD1D6436933E7DAFE27889B1D86902E5F1E9C3BB7FDFE84F9FF5EF88EBB</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik Radio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.452</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10629428579FC4B1AEA0AE4EAF0B536BFBD3FDDD80DF2F6C5CF7BBA5D95C18F91B5CE25364</stationID>
+ <name>sunshine live</name>
+ <shortname>sunshine</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.028</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
diff --git a/kradio3/presets/germany/freiburg-cable.krp b/kradio3/presets/germany/freiburg-cable.krp
new file mode 100644
index 0000000..c929e9a
--- /dev/null
+++ b/kradio3/presets/germany/freiburg-cable.krp
@@ -0,0 +1,254 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Mathias Heier, mathias.heier@pluto.uni-freiburg.de</maintainer>
+ <changed>2003-01-19T17:57:14</changed>
+ <country>Deutschland</country>
+ <city>Freiburg</city>
+ <media>Kabel</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385346589FA7744DEBE6F8C9150C97C31499ECC8327FF3838449D4034B318C48F48083</stationID>
+ <name>SWR 1 Baden-Württemberg</name>
+ <shortname>SWR 1</shortname>
+ <icon></icon>
+ <frequency>99.6875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853465183D660C419CF8EA80EF7D610B8F4A93B66AE49321C7F1E061CC45B28C1765A</stationID>
+ <name>SWR 2 Baden-Wuerttemberg</name>
+ <shortname>SWR 2</shortname>
+ <icon></icon>
+ <frequency>100.188</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346C2952C98ACF25AE64A097B6156181B728C39D299F335D87D42D0C7E02F539CD2</stationID>
+ <name>SWR 3</name>
+ <shortname>SWR 3</shortname>
+ <icon></icon>
+ <frequency>100.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534650F6F56ECE0EFE1BD47841941BC24879A44EEA965A3EFC2C403A9DE6B810031D</stationID>
+ <name>SWR 4 Breisgau</name>
+ <shortname>SWR 4</shortname>
+ <icon></icon>
+ <frequency>101.812</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853467AB14C28EDBB6E737D964D8EFA0BA4F72280A9201EAED71DFF8FA6D37F94862F</stationID>
+ <name>Radio Regenbogen Freiburg</name>
+ <shortname>Regenbogen</shortname>
+ <icon></icon>
+ <frequency>92.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853464A2B9385A4EB9981927340D5847C11AE431F3615087805C755F9BD58FFAE5DA7</stationID>
+ <name>Radio Regenbogen Karlsruhe</name>
+ <shortname>Regenbogen</shortname>
+ <icon></icon>
+ <frequency>94.0625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853464BF8BD84BF035C610A278B27C14677A4DD96337F93570FAE8EE831A77FCDAF79</stationID>
+ <name>Radio Freiburg</name>
+ <shortname>FR 1</shortname>
+ <icon></icon>
+ <frequency>87.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346685660E1594B6D549662B63E6E539CDA04B9197B4D8DE1B95BA094473CFBE81A</stationID>
+ <name>Radio Dreyeckland</name>
+ <shortname>Dreyeckland</shortname>
+ <icon></icon>
+ <frequency>93.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853463706275AE785233A1151E6731581174E361E186A85478D2E71B88BB41BB62D18</stationID>
+ <name>SR 3 Saarlandwelle</name>
+ <shortname>SR 3</shortname>
+ <icon></icon>
+ <frequency>89.3125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853462630F4CC52DC4A5CAC55343A3CAC32A902801B391F908844F58167AC8BF6DE3B</stationID>
+ <name>Chart Radio</name>
+ <shortname>Chart Radio</shortname>
+ <icon></icon>
+ <frequency>90.375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853464E8343AB0113CBEE963048B13C4C5954901C8D15993BE6BF67FAF1C95A9FFFB7</stationID>
+ <name>JAM-FM</name>
+ <shortname>JAM-FM</shortname>
+ <icon></icon>
+ <frequency>97.4375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346F9359AB3844A3E8FF4E656B7DD7829AD86A884A060763989379FE774E6A3FC08</stationID>
+ <name>RTL RADIO - Die groessten Oldies</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <frequency>97.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534681997ACC769C29D79D3EAD6F6B342BD01C549D0606C1DEEB7B736477FF1D8B80</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <frequency>88.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346BF045C7519EB8CD0CB3FEEF5E85E3197137EF3C46A96B923CFB4DF13D29EC81A</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>DLR</shortname>
+ <icon></icon>
+ <frequency>104.062</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346DBE3A53B74367DAAB1266C1362793A39FF8424B18BA1FB4CF3A6884B78D48F2B</stationID>
+ <name>Oestereich 1</name>
+ <shortname>Oestereich 1</shortname>
+ <icon></icon>
+ <frequency>95.1875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346BA00D9EBC795CA96016150236C9E66B26AB8772213AF0EA253C785E6777932AE</stationID>
+ <name>Oestereich 2 - Radio Vorarlberg</name>
+ <shortname>Oestereich 2</shortname>
+ <icon></icon>
+ <frequency>95.8125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346512B072BD1C644B5B8DAB6D0FF5A5050EE4582E763498DF6B0745DEF1CB7E127</stationID>
+ <name>Oestereich 3</name>
+ <shortname>Oestereich 3</shortname>
+ <icon></icon>
+ <frequency>96.3125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346C4BA32F836FE1C36CFC3AF2C9F6055B3FE2B1D3ABBC76BB9B3A8A2DA293C7A4E</stationID>
+ <name>sunshine live</name>
+ <shortname>sunshine</shortname>
+ <icon></icon>
+ <frequency>97.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346B55D5E7B23BF5A983DA758630F42E862D04F679C94A14DD71683C6AC41AA8C6C</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik Radio</shortname>
+ <icon></icon>
+ <frequency>103.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534688EDDF43E3755C126BBD2B574FDA46D1AE2913B018E220EBD22035D6A214FC19</stationID>
+ <name>Radio Horeb</name>
+ <shortname>Radio Horeb</shortname>
+ <icon></icon>
+ <frequency>98.6875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853461A792125FB811635ADC13DC62D7284EFA0A5CFC4CA6C0F28E7FF5FACCC1126BC</stationID>
+ <name>ERF 1 Evangeliumsrundfunk Wetzlar</name>
+ <shortname>ERF 1</shortname>
+ <icon></icon>
+ <frequency>92.0625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534622C2231DED4FCB4E3144C23717B285D175ABC22C08FC839925B42063057BED0B</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Radio Melodie</shortname>
+ <icon></icon>
+ <frequency>94.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534649E77BE5E924E14DE0A636B28211C3795CFD1A1E0ABA6B41B6751A1D2F586FB9</stationID>
+ <name>Radio Suisse Romande 2</name>
+ <shortname>RSR 2</shortname>
+ <icon></icon>
+ <frequency>106.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346819CF374041AE2204112BF924596DD533AEE0A3B965AD06272ABFE0AD9B8783B</stationID>
+ <name>Radio Suisse Romande 3</name>
+ <shortname>RSR 3</shortname>
+ <icon></icon>
+ <frequency>87.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346A4382DD036570764D1FA706545B43DEBA6432FA5743FDE02E692FA75C913BACE</stationID>
+ <name>Radio France Inter</name>
+ <shortname>France Inter</shortname>
+ <icon></icon>
+ <frequency>93.0625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853466295ABB2B044EB00EDC3ABBA7F6944695CB6D2FB2D733237B6DBE0B3374A5BCD</stationID>
+ <name>France Musique</name>
+ <shortname>France Musique</shortname>
+ <icon></icon>
+ <frequency>90.0625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853462E0CA21BB59AF268A4B6172B5897B1CD6EB6C03ED26DF453A0387BD4410868F4</stationID>
+ <name>France Culture</name>
+ <shortname>France Culture</shortname>
+ <icon></icon>
+ <frequency>105.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853461C4606E647A461665D2B2CEDE380F7B2731F927487D842F203CAA1A3AC19E537</stationID>
+ <name>Radio France Alsace</name>
+ <shortname>France Alsace</shortname>
+ <icon></icon>
+ <frequency>106.688</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853463D75C1D533DB6EF73F407C51740A9C77230C991CA8DFD36C4FD1A14A9EA66D9A</stationID>
+ <name>TOP Music</name>
+ <shortname>TOP Music</shortname>
+ <icon></icon>
+ <frequency>101.188</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346C5E6C85B61F123C46E5D2DD634E0BF01E7DCE4119427F946FA90A0EDFFC05427</stationID>
+ <name>Radio Iris</name>
+ <shortname>Radio Iris</shortname>
+ <icon></icon>
+ <frequency>91.375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/gelsenkirchen-cable.krp b/kradio3/presets/germany/gelsenkirchen-cable.krp
new file mode 100644
index 0000000..4fe7b49
--- /dev/null
+++ b/kradio3/presets/germany/gelsenkirchen-cable.krp
@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Dietmar Rehberg &lt;dietmar.rehberg@uni-essen.de&gt;</maintainer>
+ <changed>2003-12-21T14:49:00</changed>
+ <country>Germany</country>
+ <city>Gelsenkirchen</city>
+ <media>Cable</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10720129499571BE57465FA97369FEE743DA9A22C089E10875B8953163B77610BEF6A74E58</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534518AAB679C75EE47F7E4C95D9051848DB75554A8CB43ABAD9458137B11054722E</stationID>
+ <name>Hessischer Rundfunk 1</name>
+ <shortname>HR1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1072012964E548053C80E833D6D48BC4810F7B6D9D6CBDC1CBD1E39392372AEA5205A8A2D4</stationID>
+ <name>Hessischer Rundfunk 2</name>
+ <shortname>HR2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10720131581C3D2B857952E8972AD6C1BB3172F542EA5DEA30A29823226BFEBEE0158FFCDE</stationID>
+ <name>Hessischer Rundfunk 3</name>
+ <shortname>HR3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10720132010055D1C9D46D7EAAF7619F4B80213155CAFB0E6CAE03D18906CD831910094545</stationID>
+ <name>NDR 1 Radio NDS - Südwest</name>
+ <shortname>NDR1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10720132296F8C735561324BF47E2114165A2872D5C069D8A22D6319A52D3DCD2C4E171C66</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Radio Melodie</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1072013258CB8CE331FFD3A74DD872891333FE2E094BD839324E8B2DF0F1D82C689891AAA7</stationID>
+ <name>NDR Kultur</name>
+ <shortname>NDR Kultur</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1072013283E0336401E73DC621E95B2725BF4459F69F20A904A81915B4CCC7B14F753F0500</stationID>
+ <name>Deutschland Radio Berlin</name>
+ <shortname>DRB</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107201331660B8EBA17A57652BF5265EC7FEC2CAAF54C7690C542CA44F02EFDD39D7541358</stationID>
+ <name>Eins Live (WDR)</name>
+ <shortname>Eins Live</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10720133451E8D5F519B474DC314AA81747F36DE0454890DEBD2592B82CBDAE36F396A4A7C</stationID>
+ <name>Radio FiV</name>
+ <shortname>FIV</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1072013368F19C0AC40209D26F213A0B8CA6E7DA9CB0B953AAA56C96191822830DFF09B19B</stationID>
+ <name>WDR 2 - Rhein-Ruhr</name>
+ <shortname>WDR2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107201346474153CFB21DAFB0E23B5417CA2C607EE641C14A01BE28096A56599905AD77246</stationID>
+ <name>WDR 3</name>
+ <shortname>WDR3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10720134975E5C66B8B85CA8013E6C55526FDCF1716844EDECC9084F3EFD3E9FC18DF8AA0B</stationID>
+ <name>RTL Radio - Die besten Hits m. Gefühl</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10720135485274B3330F88F5961B419F6E5A045EEFC3FAA160F7CD3699C9203BD3008C8B55</stationID>
+ <name>WDR 4</name>
+ <shortname>WDR4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1072013583711F9DDB3579A33609C6E3A83963F6B9C2717DFA5D10EE9E41FAE62FC1CA4042</stationID>
+ <name>SWR 1 - Rheinland-Pfalz</name>
+ <shortname>SWR1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10720136082F110FDDB828A2AE42E7A25B7F97D265B977D321032CD02432CEF746D1ABCA6E</stationID>
+ <name>SWR 4 - Rheinland</name>
+ <shortname>SWR4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1072013632A57266AAB6DD35663DE86B284BDDAEB6FDD0B90FC4E716CC2716A98DE677CEEC</stationID>
+ <name>sunshine live</name>
+ <shortname>sunshine</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.438</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10720136832FDD771013437A789E45E5F9EC6391721B62CC3E3C997419D28101B5FA8DF9FE</stationID>
+ <name>Radio Emscher-Lippe</name>
+ <shortname>REL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1072013814FBB9B5017E6F11B88BC44738AEFF15F7B17CC809DE433EE55C5C6E6D330BF4C0</stationID>
+ <name>SWR 3</name>
+ <shortname>SWR3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1072013866169F812A2852CE0FB51B6CD7A64798A75B0CB4C823B2D3BDF8FF8FCACD221240</stationID>
+ <name>BFBS (engl.)</name>
+ <shortname>BFBS</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1072013898EDCB06527BE6ABCFD1B8833102434FEE00B76D00B2E491015E000CF7DD62A582</stationID>
+ <name>Radio 4 (niederl.)</name>
+ <shortname>Radio4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.85</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1072013921AE7302A6868593971B06C9C1C0D2B794A39446F9BB4B593F2F19FD198DE6EA37</stationID>
+ <name>Radio 1 (niederl.)</name>
+ <shortname>Radio 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10720139509F8B3B32C41D471FBCDD91C3A02A4EDC81DE5700B1E84575FCE993B6DDD5ECFC</stationID>
+ <name>FM 3 (niederl.)</name>
+ <shortname>FM3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10720139725DCAE2AAF82BB769524AA1674D09FDE983577EB51B7C061FF0A7E59090C9E170</stationID>
+ <name>VRT Radio 2 (Belgien, flämisch)</name>
+ <shortname>VRT Radio 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1072014011444DE25E752B99A93446CB7AA287408C8E6B1C64E8CF6DC62C0C27C7A0B7E294</stationID>
+ <name>VRT Radio Klara (Belgien, flämisch)</name>
+ <shortname>VRT Radio Klara</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1072014056C06BA78C18494D4EE196359E5E928F87472FEFEB78B6650AB4E1C91C9EC6C988</stationID>
+ <name>WDR Radio 5 Funkhaus Europa</name>
+ <shortname>WDR 5 Europa</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1072014093E413E6F8A53B776AA8744469CBB8060362B90B08E01B2DEF4030BF072858B2F6</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik Radio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1072014125330EFF3DD410F04F9F769391F1D94EAECEFA1C9D073E4E220BA5E0ABA5474E11</stationID>
+ <name>WDR Radio 5</name>
+ <shortname>WDR 5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1072014160179C108B277B45285B6E9A308D8218FBF03BBCFD6548FFD1A45CDE4BBE0969B4</stationID>
+ <name>JAM-FM</name>
+ <shortname>JAM-FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.85</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/gerolsbach-cable.krp b/kradio3/presets/germany/gerolsbach-cable.krp
new file mode 100644
index 0000000..0e8f394
--- /dev/null
+++ b/kradio3/presets/germany/gerolsbach-cable.krp
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Andreas Müller &lt;andreas@poipoi.de&gt;</maintainer>
+ <changed>2003-10-19T15:16:00</changed>
+ <country>Germany</country>
+ <city>Gerolsbach</city>
+ <media>wire antenna</media>
+ <comments>Bt878 Audio/Video-Capture Card </comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1068546027E72252A7A65340E0866630631E4DF72B03E6D19C6F2DD7DA5B135E547A9E341D</stationID>
+ <name>Bayern 1</name>
+ <shortname>B1</shortname>
+ <icon></icon>
+ <frequency>93.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10685460273B42E0D495D6544DE3FE56501988A03341ED33E8E6A06CBEA9AC727037B06A4E</stationID>
+ <name>B4 Klassik</name>
+ <shortname>B4</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068546027D67C2B9F942D77B3F5F156D5D135BB50F92BDC649D9E79FA6E444C2F06D3E38E</stationID>
+ <name>Antenne Bayern</name>
+ <shortname>Ant.</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106854602753B1890BBF95CD2B3A571BE498D56CB5547A7C0A79725769A587D2C4AF991161</stationID>
+ <name>Radio Inn</name>
+ <shortname>Inn</shortname>
+ <icon></icon>
+ <frequency>104.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068546027477907628FE8F21B2E06842E37952261183ECA93E4FA3A9EAA873ABF8EB60D32</stationID>
+ <name>B5 aktuell</name>
+ <shortname>B5</shortname>
+ <icon></icon>
+ <frequency>105.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068546027A65CDCD5B9572A1EED57264FEBBCA1541F860E164F7842511376F80F34FA5F5F</stationID>
+ <name>Radio 106.4</name>
+ <shortname>106.4</shortname>
+ <icon></icon>
+ <frequency>106.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068546027030663F9E80B9D521AF4CC2F2783EABAC2B6159924FF9057417B32D59A3895A8</stationID>
+ <name>Antenne Bayern</name>
+ <shortname>Antenne</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068546027FDBDC9494CFD4E048F51A8F5193E99A7D785E63740205A669DE19F7BE121E39E</stationID>
+ <name>Bayern 3</name>
+ <shortname>B3</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068546027F7113E50F3FCCD0855F885E1110194F596F3BAE33BEF6985332BC5B8EBF8DE51</stationID>
+ <name>B4 Klassik</name>
+ <shortname>B4</shortname>
+ <icon></icon>
+ <frequency>103.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/hamburg-antenna.krp b/kradio3/presets/germany/hamburg-antenna.krp
new file mode 100644
index 0000000..1cc898d
--- /dev/null
+++ b/kradio3/presets/germany/hamburg-antenna.krp
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Klas Kalass, klas@kde.org</maintainer>
+ <changed>2003-01-15T18:50:00</changed>
+ <country>Germany</country>
+ <city>Hamburg</city>
+ <media>antenna</media>
+ <comments>Frequencies taken from http://www.dampf-radio.de/Frequenzen/frequenzen.html</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338534634E1B92A1EC5E46E9C7BEAEF2BCC1031AB0A615274059B2786EAA15674DD1E0E</stationID>
+ <name>NDR 2</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>87.550003</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346467E9A484371C0FFC9EC4D936C0EF32FBD09CDCE39F47CC4AD27E46E3AD7DBEB</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.699997</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346AD065609EB6F432F2A414E72CBBF0966FA07A138116CB1A4EAF4A4D4D2E17AA3</stationID>
+ <name>Deutschlandradio Berlin</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>89.099998</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346D2887CCD5095D166AA2DC06F924BA5E2A8A76AEC482AD3FAD97B7A44EFBE341F</stationID>
+ <name>NDR 90.3 </name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>90.312500</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853466B9FE8132918001DBE295E05B0E1BD0A8B24E1A070B9ECA27AE5E4B4A7B50138</stationID>
+ <name>NDR 4 Info</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.300003</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346602217707AFB0CCC76A4C0A2C174A9F0F74B261FF0FD75C73A8F83885B022611</stationID>
+ <name>Freies Sender Kombinat</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>93.000000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346032950DD30C2C8E4AB5341CE64B63D9E6947162CE3808D5C97828C2D0120B24A</stationID>
+ <name>Delta Radio</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>93.437500</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346D17B2E9175E866BD49FE6FF6EA7A5B55FEBB7E2AFF82F28CC64B117073EA9011</stationID>
+ <name>N-Joy</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>94.199997</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534616B382299842413DA752DA8F8D1348480163705955C04248E1D7E79043E7E13B</stationID>
+ <name>Oldie 95</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>95.000000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853465A295FD715B6022960BBB47B22D443673D404F49DA5A012298C8391A0D100CEE</stationID>
+ <name>Offener Kanal Hamburg</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>96.000000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346FC680CC42018E3F068AD85E1B02D4F23CBF73204CF8AC577FAB848D2B6C4F3A1</stationID>
+ <name>Energy 97.1 Hamburg</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>97.099998</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534637C10C307E04BEC9E6B45C1F4BFB4245DFE9C346A415E83BAEB4EF1A205AD14D</stationID>
+ <name>Klassik Radio</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>98.125000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534628BA52DA1F921C810DCA325E86ED3FF38CC7B5F157115542DEB6BD047541109C</stationID>
+ <name>Radio 3 (NDR)</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>99.199997</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346B9E3C45C5FA49A8D708FF4CD6320CF6B322717F320398654201E3F1EF6920DBB</stationID>
+ <name>Radio Schleswig Holstein</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>100.062500</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534657AA78D8D4A97586788A5EFF867B74C5E8C7BC685D49C32D4A00BC84A63A4C3C</stationID>
+ <name>Radio Hamburg</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>103.625000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534640BCCCE614C400A963278994C530262615FB9968A4080CC8F8106E355E3366C4</stationID>
+ <name>Radio Hamburg City 104</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>104.000000</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853466AC898C0B6868C3806DD8A5E289B4F47C66C539BF061B63C81500BC865C9A83E</stationID>
+ <name>Alster Radio</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>106.812500</frequency>
+ <volumepreset>-1.000000</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/hamburg-cable-2.krp b/kradio3/presets/germany/hamburg-cable-2.krp
new file mode 100644
index 0000000..34d2e27
--- /dev/null
+++ b/kradio3/presets/germany/hamburg-cable-2.krp
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Pál Schmitt, &lt;palph@web.de&gt;</maintainer>
+ <changed>2004-10-16T11:58:57</changed>
+ <country>Germany</country>
+ <city>Hamburg</city>
+ <media>Cable</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>11164554446EC15581D0F5BB4A4290FE5B11737B03C632D19C9E57D30FDEEB5A1E8F9BBC0C</stationID>
+ <name>NDR2</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>87.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444A3292449AEC7D470A72A4588EEE7571C0895C97FE667BFC2EDBF43C419CCED25</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444397038A5210E98DDF30A2B94BB36FD5DF6F8005FC9BAA31183792FC26558CE9C</stationID>
+ <name>NDR1 Welle Nord</name>
+ <shortname>NDR1</shortname>
+ <icon></icon>
+ <frequency>89.5625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554440727175853ECBDB5428D32D1A5C847BEF27871E7BA179CEB9A961AF6997AB6D4</stationID>
+ <name>90Komma3</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>90.375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544485EFDFD9F03E4A3480EF20A6F3F902B8F3A03B494DF912F4529C64D3B1AD7BEA</stationID>
+ <name>NDR Info</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.375</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444B7CEE381BD04EEC55A65E957A9C4C6F0D03260B4A3337BE1C663C323BB6A19AE</stationID>
+ <name>Oldie95</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>95.0625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554442F6DD649A75AC12DFFC9BFA7FED83BA70C444422F57316BF669A112E0AC26918</stationID>
+ <name>NDRKultur</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>99.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554447A67D0DF608DA3314F2F025AC5DDE2F9BA906914231469D1D7FC1AD2F5DC4FFB</stationID>
+ <name>FFN</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>100.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544408803E50207965E6F653E32CEA93712570F0759CB5839C6B5C658A63884F5F77</stationID>
+ <name>NDR1</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>103.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554443AA02AB8DB9BEFEC94FF8161652C6328EB4C8025FB904C9EC9F83A7E7E8A5E27</stationID>
+ <name>Radio Hamburg</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>103.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554448EB94E45169949566ED9B434828FA7351D65EFBF3480E23A27B88AD36AE8A998</stationID>
+ <name>HitRadioAntenne</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>105.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554445C020A502001939BE0B80DD07C961E164FB90BFD2B491D15EDC30050C34BFD5B</stationID>
+ <name>Hundertsechsacht</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>106.812</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/hamburg-cable-3.krp b/kradio3/presets/germany/hamburg-cable-3.krp
new file mode 100644
index 0000000..857b1da
--- /dev/null
+++ b/kradio3/presets/germany/hamburg-cable-3.krp
@@ -0,0 +1,302 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Bernd Wegner, &lt;bernd.wegner@hamburg.de&gt;</maintainer>
+ <changed>2004-10-20T21:28:09</changed>
+ <country>Deutschland</country>
+ <city>Hamburg</city>
+ <media>WinTV PCI FM</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1116455444ED0DF318A63A7E3A4130F263DAA65B83260389FCFC3EA75A95D9299624661969</stationID>
+ <name>Radio Hamburg</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.0625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554440A6A8F279742F3F59A818F49A75504AD6653BF5F437ED975C23CECEDFE2D1ECE</stationID>
+ <name>Deutschland-Radio Berlin</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544434ACEC68DBD4F0BA4FCFC4DBCB43EFA7C0CFCC069A9B3793390A38401AB71D69</stationID>
+ <name>NDR 1 Niedersachsen</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>89.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554444296BE372391AD566156677C8FC7ECCB8C5ECC1475B6D06615955C801DC73DB0</stationID>
+ <name>NDR 1 Welle Nord-Sd</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>89.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544429EC5365848151EE05AD31CB7D5792687F7A807EBA272CDD2E3EF6BE3734FE6F</stationID>
+ <name>NDR 4 Spezial</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>90.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544446F22783677143E7479BAED89AF03D77FA72EBBFF7ABAA2BF309DE4DA87FEE81</stationID>
+ <name>N-JOY</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>90.5625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444B8B53CE6FE07BF20519D90AD2F7A7452E2BA602418C86B24E14A12C0CA68A19C</stationID>
+ <name>sinshine live</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>91.375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444C12112B121BBAF1090F488E23C479FDB84C06697F752C6D1652A03D53314D714</stationID>
+ <name>Radio Hamburg Cityfunk</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>91.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444690AC77FCDE17FDC7A321F0016C83314FC05B8A04399D29E78D43A3245673C15</stationID>
+ <name>NDR 90,3</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>93.1875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444AFE40D1FD16AF2BAE81D156B6EFAF41368FB6FFBF34E15961EB188723F939E38</stationID>
+ <name>Klassik-Radio</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>93.5625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444C232A76E0B946737BFC925C1D20EFA7B9341E2F0DEC0E01A60B0C68C0E345308</stationID>
+ <name>NDR Info</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>94.0625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444A50CAE8FF738F7EC62B9CC62E56B10196649B01B700657694B11D8A018BFD8FD</stationID>
+ <name>NDR 2</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>94.6875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554441217788C075C4E5184C6F307A613F2E7E69AF9BF099C539115F11668566BCF4F</stationID>
+ <name>Offener Kanal Hamburg / HLR</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>95.4375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444ABF018C22C9291F4D724A563AD1A4A861E98E6388AB351B78190AE1C97D21E43</stationID>
+ <name>NDR Kultur</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>95.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444381B24C88CA870957B96A338F9DCF0020B928ED09CF7069F8BC95538F509D9A2</stationID>
+ <name>Jazz Radio</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>96.1875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544418BC92EA0BD94A97F7D5418AEC6EA3B40AFA94A32320FB28A8AA9BD573E5880F</stationID>
+ <name>Alsterradio</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>96.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444E503517E3D14EA48AB4A9C58BF99986E3C15610B0CAC1CED693848607AC2BCD1</stationID>
+ <name>Oldie 95</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>97.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444AE11407E6559616C5A10C5718E1FA2292AE8103F6A95E0D0508CFF31FEE853B2</stationID>
+ <name>Bremen 1</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>97.5625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444D1D015BF9CC532F37EAA048C73B59757DB531855B0F307F383F4E2D3EC5981FF</stationID>
+ <name>RTL Radio</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>98.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444CC929CED13F562EF324A63C7A4A6AB591A366F67AE86E60E26154FCE8703CF75</stationID>
+ <name>Radio Nora</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>98.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554442CC71C3A07B5FA058FD1C4E030D51E0CF0F0BA5197909A84A1B12B612BB0B784</stationID>
+ <name>Radio ffn - Hamburg/Lneburg</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>99.375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444EF21A7BA0E3CC73FC77606FC30CAB8CDC7B1D95495817C7CBC504127CBAAE819</stationID>
+ <name>Energy 97,1</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>99.6875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544427432F70BB927F689FE2C917CD7E32CAD1B5467C362708D2B7FFB83ED3B738B7</stationID>
+ <name>NDR 1 Radio MV - Schwerin/Wismar</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>100.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544438A81A92090258A050AF76BE508FB5C876811FF5EDCCB0EEF00E6E45924276B7</stationID>
+ <name>BBC Worldservice</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>100.688</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444D49352442CD5267C1CF154F8EC0955EC66DD9AD26EE86B866887A966FAC8552A</stationID>
+ <name>Freies Sender-Kombinat</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>101.312</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444EA8CF8087A5D8019904E4506F12E229FB3EA99D1B5B02906092E5BABF3E9487C</stationID>
+ <name>Megaradio</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>101.438</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444285A1E2C4D25A014DA3ADD3C696EE5C234452D304CAC9F0EAB34CB53CF0A1D28</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>102.312</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554449D3F39848355ECDCB3173304206C09121FD9F46E50A92A5D2A8AD702543594E1</stationID>
+ <name>Hit-Radio Ant. Niedersachsen HH/LG</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>102.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444328150310B3B2566068F48E2072E1F70262BE527ACFECE4C4494E3D0EC2EEB15</stationID>
+ <name>Delta-Radio</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>103.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544456FED50B0C9DCE246427D2166A1217AE7D2D16E0868E617458D169AF832048BF</stationID>
+ <name>Radio Schleswig-Holstein - Sd</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>104.438</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554448633DC9BED942A453C066FF03D7805CF338DEEB930425785FEAA0700A9CA157C</stationID>
+ <name>Radio 21</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>105.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544479076E4BD08F74CE63652F8B6C3DAEAF48903F71870246B3FA9A63369FDCC5C0</stationID>
+ <name>Radio Melodie - Heimatfunk mit Herz</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554441D2C8DD3CD3C735D61EC645D92BBEBD5EA098B24312A27EC649F99A20E4AE0A0</stationID>
+ <name>Antenne Mecklenburg-Vorpommern</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>105.938</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444DE61F3BD0C841311049BB2B73460F71E319AEE926B1BFAB5B7889644415AD294</stationID>
+ <name>BFBS</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>107.062</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554448FE78E6C05895C3ACB39FD874FD44E93E31F142B2DE8A7874D81931F4B9C3335</stationID>
+ <name>JAM-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>107.312</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544439E658BCCAD43EB09797A1DEB1D3E95134E5AEABCD7BAAD3C697C604D5164FA8</stationID>
+ <name>Radio Bremen 4</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>107.812</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/hamburg-cable.alternative.krp b/kradio3/presets/germany/hamburg-cable.alternative.krp
new file mode 100644
index 0000000..b09332c
--- /dev/null
+++ b/kradio3/presets/germany/hamburg-cable.alternative.krp
@@ -0,0 +1,294 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Thies Möller, &lt;thies.moeller@hanse.net&gt;</maintainer>
+ <changed>2003-05-29T19:25:24</changed>
+ <country>Germany</country>
+ <city>Hamburg</city>
+ <media>cable</media>
+ <comments>Frequencies taken from http://www.ham-online.de</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385352C77FEF21E4D8438BD62D2007784DED19AE141E9A6B339AFC4A191DBBAFBB48D0</stationID>
+ <name>Radio Hamburg</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>88.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352E76A9A632CA60A61E0AD14F6855BBE8950173909D14550617CF55E2A74B3271D</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352E4C0DDF6FED06955D3F5719BDBFEFCA8827F0C45689FCD6B8BDBA6C94B266836</stationID>
+ <name>NDR 1 Radio Niedersachsen</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>89.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352D5BE6D210A2194575705CFB8C344E8B6871D906B23C96A3A84DF8ABA563E2D22</stationID>
+ <name>NDR 1 Welle Nord</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>89.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352D8BB62AB2545C9A10550116111E3811FAC7DC2A1CB30C66C5C1B9B001ABA7902</stationID>
+ <name>NDR Info Spezial (Mittelwelle)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853520FA17670A24E5DD4748591142DCA23842B92CE91ABCDD9466A4A5C1967E1F3D2</stationID>
+ <name>N-Joy</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853524CBC044E434528635FE3D68BE9A3EDFF5B18DE930754FDE94859DFEBE0028524</stationID>
+ <name>sunshine live</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535242C5DB2085811FCF7096814FE5415D89D6562CD74ADE32FA243A7BB22290FD41</stationID>
+ <name>Radio Hamburg mit City-Fenster</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>91.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352F564FAEC21919489BFE14CB40317B00A7CB8F5A28251664B9A91F6435A1A5C0E</stationID>
+ <name>NDR 90.3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>93.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352AF1315EABF9E71C79FDF9E6A561B5C8759AD44F2A9DB76A805B0697F8855BB64</stationID>
+ <name>Klassik Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>93.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352F4A63999EA99D0A1F9B233F448E642B3CBB8117E9278AB506053F9A0092DBACA</stationID>
+ <name>NDR Info</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352BAD4B51CDD6F0CEB1C45B29C61204383E96F0736B6C69D7FDA4757EF84C53FE8</stationID>
+ <name>NDR 2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535222CEDD6541032261F798C652A7106C340661C4F7EC66DC1BF4E7F87FE891D8EB</stationID>
+ <name>Offener Kanal Hamburg</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>95.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853529886D9A14C18F04640E8BA5557E49CB67567A373262CE7506AA298793A4F98FF</stationID>
+ <name>NDR Kultur</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>95.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352B3C0DFE36F9496BBBE4CFA31C8DF0A0B70D0C30652B5243DDA12AB11859C5C10</stationID>
+ <name>Jazz Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>96.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853524F1FAE5B6631FAF93E7C6AE9EFF3BDC2C353CC3EB9EA8081494AA6110A4A4724</stationID>
+ <name>alster radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>96.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352E02CB53C607FB883D93CD69B5E1CBE2D377F7A303A32F3E0AB9D0A0AE68D2557</stationID>
+ <name>Oldie 95</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>97.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352887473E4B8F445529743D524E59BA863BE2E8DDA71DAFF4533A12E76B71F5471</stationID>
+ <name>bremen eins</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>97.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535205892AE7A51D571A6BDE05471817FBC0082251670B9C3F153A9DC941CAA2802F</stationID>
+ <name>RTL Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>98.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535226743E19B4BAFAE1AC9B26BE143DC2C5E2608D692B6119636A97969B93059ADF</stationID>
+ <name>RADIO NORA</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>98.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352F1082A26821C957C7DCB4A28206E76FEE8393E99AAA4A2B9D104DFEA58F47F21</stationID>
+ <name>radio ffn</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>99.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352EA0ADF2BB47180C9EDE51014B6BB221C34C9F22557FAB893D4CBAEC3F9B7E637</stationID>
+ <name>ENERGY 97.1 Hamburg</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>99.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352AC11B834BF63242432393978130D0D45BC03B9ACFCF4782516A93A2E06E5850E</stationID>
+ <name>NDR 1 Radio MV</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>100.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352BB06374267A3EC54EA85B26B1F56F6EF1885909BBF0ED79CC15FF01A6036314A</stationID>
+ <name>FSK</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>101.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853522AF6AD03D768D77966BEF31A434A8CEBC8C05C5B7DD28740A3E0CF8713BE58A5</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853528F92200EE41021121D6E51CAA05CBB8F85C23ECF15B27EBF38B72948267DC014</stationID>
+ <name>BBC</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352B628B1766B29BFE4D5DC0C4C21FA957D5D8DB91EE1D3CCCB0B69E6404CD83049</stationID>
+ <name>Hit-Radio Antenne</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>102.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352C3F5A9821B5DA488DA5E8FFFA4BB6052D1E27C885D91E745B0B56189F6BD265F</stationID>
+ <name>delta radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>103.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352C6BF7D6C8D6FE3328EB47FAFB7F07297EB2578AA91D0234C088868CF0FAEB885</stationID>
+ <name>R.SH Radio Schleswig-Holstein</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>104.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535267007D5D2284494AE1949484E04EA532A622DC11C140F0F1EDD52AA66CD4AE1A</stationID>
+ <name>Radio 21</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>105.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352B7A949B126487CF8EAA3AFD0B056F346D3A84CD04152BBBC36AAF52D55DED5BA</stationID>
+ <name>Radio Melodie</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853524C67D69E5E8C5062F262913C0F4612F653F17CD6CB1029D2F7D536BC67F5828E</stationID>
+ <name>Antenne Mecklenburg-Vorpommern</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853529C2B2B6C76C548F8D5BC73785B2E6EA1EB44B51F62EE4D837A144689250163AD</stationID>
+ <name>BFBS</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>107</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853521EF759082A204329E8F187EB2FF2B6B8E7DD973A26CBB2360130B20C12CBEE13</stationID>
+ <name>JAM-FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853529A6C6B3CEEE965667D1702C9B0F393C11D9AA735FD0A3E750B5BEC92738C8DDF</stationID>
+ <name>bremen vier</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>107.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/hamburg-cable.krp b/kradio3/presets/germany/hamburg-cable.krp
new file mode 100644
index 0000000..9c7052d
--- /dev/null
+++ b/kradio3/presets/germany/hamburg-cable.krp
@@ -0,0 +1,318 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Björn Friebel dragon5@uni.de</maintainer>
+ <changed>2003-04-27T05:50:29</changed>
+ <country>Germany</country>
+ <city>Hamburg</city>
+ <media>cable</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853524B791DBBE8F462D7A489E2C03754E74F2F1B3163A346EF525C760CAC317519C8</stationID>
+ <name>NDR 2</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>87.5625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853521A12D36F5156EB0AF90699B5A43F9C5DE381C98E1BC1D929182FE944E605082E</stationID>
+ <name>Radio Hamburg</name>
+ <shortname>RHH </shortname>
+ <icon></icon>
+ <frequency>88.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352B7AAC7DB3E49EAB1AE26BF6EBDBA439355A8366F1FD9A3C0A2E120FB651BBF20</stationID>
+ <name>Deutschlandradio Berlin</name>
+ <shortname>DRB</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853522C5021576B9B36CF8EA0D65759E35200D1039C7124A378F7141AB68B4B57D3C1</stationID>
+ <name>NDR 1 Radio Niedersachsen</name>
+ <shortname>NDR 1 RN</shortname>
+ <icon></icon>
+ <frequency>89.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352BB37D97942DBC3AD47184DE1C51AD44A290673681932E6C1B07AF6D72325E431</stationID>
+ <name>NDR 1 Welle Nord</name>
+ <shortname>NDR1 WN</shortname>
+ <icon></icon>
+ <frequency>89.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853528C34D7FB50D468BEC503BF9C0243A842DBEF3CC4AD99950911DDFED36E86FA7E</stationID>
+ <name>NDR 4 Info Spezial</name>
+ <shortname>NDR 4</shortname>
+ <icon></icon>
+ <frequency>90.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853524CA5DBF57450BCD91AB67C27DEA0005DBCFB7DE43DA3D565F60E387D2B4AF65E</stationID>
+ <name>N-Joy Radio</name>
+ <shortname>N-Joy</shortname>
+ <icon></icon>
+ <frequency>90.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352CDFC2329183FC2A53BF6F2BE7E8D13BBA6157975B299FA85514766F77C9B1C08</stationID>
+ <name>Sunshine Live</name>
+ <shortname>Sunshine Live</shortname>
+ <icon></icon>
+ <frequency>91.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853526FECE6BBF06B6A9EFF639CF8D82385E616A73B0D93197FCA9057A44CB58E152F</stationID>
+ <name>Radio Hamburg Cityfunk</name>
+ <shortname>RHH City</shortname>
+ <icon></icon>
+ <frequency>91.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352BB5082A979CE3387504E8FBDFF50CF0CAEFB5E0C0C31C83F66A4DBCBA1DE7C22</stationID>
+ <name>NDR Info</name>
+ <shortname>NDR Info</shortname>
+ <icon></icon>
+ <frequency>92.3125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352CA62C5BC975515CB39F1FDED2361A029A8C9A22DC72C837074986E2999FD00B0</stationID>
+ <name>NDR Hamburg-Welle 90,3</name>
+ <shortname>NDR HW</shortname>
+ <icon></icon>
+ <frequency>93.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352092B4EA198081C6E39A66A71D1F08F8BC76ED8DC0293CD855330B68A8196C809</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik Radio</shortname>
+ <icon></icon>
+ <frequency>93.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352FE1F5240D9C40ABA001BA5BA1FAA65D0E8D24F460E8E684A036D6E0F10AA166B</stationID>
+ <name>NDR 4 Info</name>
+ <shortname>NDR 4 Info</shortname>
+ <icon></icon>
+ <frequency>94.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352D08DA0FCA0495B7BCA4703FDA2DA6C1090234167CD25E0A75938C3217B97D18C</stationID>
+ <name>NDR 2</name>
+ <shortname>NDR 2</shortname>
+ <icon></icon>
+ <frequency>94.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352A97203BA4B89F08EFA28EBE9F5974C6BF69DB9F5CCC7B95ABA955327BC04697A</stationID>
+ <name>Offener Kanal Hamburg (Mo.6Uhr-Sa.24Uhr)</name>
+ <shortname>HH Lokalradio</shortname>
+ <icon></icon>
+ <frequency>95.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352CB92179608292529C9F513ECCAAE42B99EF002F80E225ADB7D712A40147B4120</stationID>
+ <name>NDR Kultur</name>
+ <shortname>NDR Kultur</shortname>
+ <icon></icon>
+ <frequency>95.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352C4C60E3C468CE141D07D7AC63F3DA5894667FECA9CADA22DD1A3154367990370</stationID>
+ <name>Jazz Radio Berlin</name>
+ <shortname>Jazz Radio</shortname>
+ <icon></icon>
+ <frequency>96.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352EA294378AA46B6684D75451FED5AD0B6BF152BBC0100020E6E31DE304D1EAA16</stationID>
+ <name>Alster Radio</name>
+ <shortname>Alster Radio</shortname>
+ <icon></icon>
+ <frequency>96.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853527A3A42F81752EE38F47613C23EE5089E30EA35E3415108DBF633280A3D9A872F</stationID>
+ <name>Oldie 95</name>
+ <shortname>O95</shortname>
+ <icon></icon>
+ <frequency>97.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352C35C668A4A5AE71E07F2063D6B6A63B06BA2148466AFD51E5E783EFC0EB1D534</stationID>
+ <name>Radio Bremen 1 Hansawelle</name>
+ <shortname>RB 1 HW</shortname>
+ <icon></icon>
+ <frequency>97.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352019E5F2BC01D3760BDEA05498B402E333499EABFFEF95968E4D6E36F75D867CD</stationID>
+ <name>RTL Radio</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <frequency>98.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352E0C9422AD675606A5482A88D31AD679647414B34F1F54FFACF4BA08A45E374D8</stationID>
+ <name>Radio Nora</name>
+ <shortname>Nora</shortname>
+ <icon></icon>
+ <frequency>98.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352B9A38372BAF01C01FFF3A7606E79A74E462AF02262D2141D694ED779C2E34595</stationID>
+ <name>Radio FFN Hamburg/Lüneburg</name>
+ <shortname>FFN</shortname>
+ <icon></icon>
+ <frequency>99.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853528FE2A6AEAB78D7A6626F100D889CC975471D28101581B2EDA8AD4500BFAC37B8</stationID>
+ <name>Energy 97,1</name>
+ <shortname>Energy</shortname>
+ <icon></icon>
+ <frequency>99.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352F4243B90E4FB68B16C78834D3FED4117C697425AC321C9FF9BA99DF535C0D343</stationID>
+ <name>NDR 1 Radio MV</name>
+ <shortname>NDR 1 MV</shortname>
+ <icon></icon>
+ <frequency>100.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352644F956A109058D708883FB359E35529543C686E7B6AF09E9030EB5B76EE220A</stationID>
+ <name>BBC</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352B09316B30EFFC91D875ADF24A1021A2BB3974896895DE81C0BE4E19409B0E3F1</stationID>
+ <name>FSK Freies Sender Kombinat</name>
+ <shortname>FSK</shortname>
+ <icon></icon>
+ <frequency>101.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535258CFF089AD219DD82E7484AB87EEC08281D4CF1F1F684DB359DE2CA1F2394973</stationID>
+ <name>NordwestRadio</name>
+ <shortname>NWR</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352919B163EC922B4603AF4622CCDC58EF3636B6CAFDEBFE7C3EF05021E806EB13C</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352E28B79D1C2EEE9AC179D41500D10F51F0E63647FC2B583EA13952C16F9C01170</stationID>
+ <name>Hit Radio Antenne</name>
+ <shortname>Hit RA</shortname>
+ <icon></icon>
+ <frequency>102.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352C1ADDBF440FB734DB2ECC410BE647E8269F07C98E8889196A98AF9EE967820A5</stationID>
+ <name>Delta Radio</name>
+ <shortname>Delta</shortname>
+ <icon></icon>
+ <frequency>103.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352DDB7C81AC519C4C0B334CDD8CCDE53EB1F19A33BA4EDD9156959691989EAE4DB</stationID>
+ <name>Radio Schleswig Holstein</name>
+ <shortname>R.SH</shortname>
+ <icon></icon>
+ <frequency>104.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853528CFB4C7A3C8A35E907DDBFC4B851FD9BEBC8A43766DA924580C9BDBFFB0BCBC2</stationID>
+ <name>Radio 21</name>
+ <shortname>R21</shortname>
+ <icon></icon>
+ <frequency>105.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853525D3601255BAAF887591F8FD05E7C01C69CA74CB79607AB0C5A0031335584A6DE</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Radio Melodie</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853526B94DBE5490870BD3FF580FDF4FD388F392F40DE4A9A76379013D6B3195AE495</stationID>
+ <name>Antenne Mecklenburg-Vorpommern</name>
+ <shortname>Antenne MV</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352535589638CE53EA4A6AD1456D1B6A7168DF10D7C2E646BE1DB328B4A6E152690</stationID>
+ <name>BFBS</name>
+ <shortname>BFBS</shortname>
+ <icon></icon>
+ <frequency>107</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535246D6EC773C1150FDF65803AE599CEF7A07ED6229EFA83502718E492004BC0702</stationID>
+ <name>Jam FM</name>
+ <shortname>Jam FM</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352A96FF50F1C1E637FBDA768D22218A5DB7DA604A794DA00421E9FAFC3B85CD59A</stationID>
+ <name>Radio Bremen</name>
+ <shortname>RB</shortname>
+ <icon></icon>
+ <frequency>107.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/hamburg-cable1.krp b/kradio3/presets/germany/hamburg-cable1.krp
new file mode 100644
index 0000000..e964ea4
--- /dev/null
+++ b/kradio3/presets/germany/hamburg-cable1.krp
@@ -0,0 +1,318 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Björn Friebel dragon5@uni.de</maintainer>
+ <changed>2003-04-27T05:50:29</changed>
+ <country>Germany</country>
+ <city>Hamburg</city>
+ <media>cable</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385350B84E83FC624D588B9BE2C16667AF463CE62AE705548F65C08E293A455B179381</stationID>
+ <name>NDR 2</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>87.5625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535026BB6D13F62EB11F9202671BE547076886D906672B3BA433EEA32DEE1D5CFBBC</stationID>
+ <name>Radio Hamburg</name>
+ <shortname>RHH </shortname>
+ <icon></icon>
+ <frequency>88.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853501AC822C1346D33E13696EEC91ACF26BA372F11213BD45B4EE82A96C15FA32287</stationID>
+ <name>Deutschlandradio Berlin</name>
+ <shortname>DRB</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350373BB2F1ABE25FE88366C4630D30676015E09340196CE2D9CA144A574BF9E312</stationID>
+ <name>NDR 1 Radio Niedersachsen</name>
+ <shortname>NDR 1 RN</shortname>
+ <icon></icon>
+ <frequency>89.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535060116062B40326BB376BFE3AFC499BED2E9977E2FD33EFC4C2EA9A8EC7536CA9</stationID>
+ <name>NDR 1 Welle Nord</name>
+ <shortname>NDR1 WN</shortname>
+ <icon></icon>
+ <frequency>89.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350EE3CB6DB0F51E1AA3983153965EA7FA09DCE13F03EF634CB5831F8DB746ADD02</stationID>
+ <name>NDR 4 Info Spezial</name>
+ <shortname>NDR 4</shortname>
+ <icon></icon>
+ <frequency>90.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535093FD8B50CD14B4DEDDCAB424AD4A236A3B5132F5A742DD5AE35A1523EA82761E</stationID>
+ <name>N-Joy Radio</name>
+ <shortname>N-Joy</shortname>
+ <icon></icon>
+ <frequency>90.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535044CA129A3069F2F21913EF30FA88A204A17C4F3B771FDB8D37D72B5897D516E6</stationID>
+ <name>Sunshine Live</name>
+ <shortname>Sunshine Live</shortname>
+ <icon></icon>
+ <frequency>91.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535054196C1A743CDE1D0B11CAA8DE8ACD3A7AFB00ABE2A2803F3E6FBA8EA828014B</stationID>
+ <name>Radio Hamburg Cityfunk</name>
+ <shortname>RHH City</shortname>
+ <icon></icon>
+ <frequency>91.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350DE5AD2FDA58E954D66478D9324226E127F9223095557A8D3DFFFEF16FB37C337</stationID>
+ <name>NDR Info</name>
+ <shortname>NDR Info</shortname>
+ <icon></icon>
+ <frequency>92.3125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853509EAAA7B362EC8BCFC1629FA3834FF7A76B91D6C4BFF4CDC3BB222C79D9568692</stationID>
+ <name>NDR Hamburg-Welle 90,3</name>
+ <shortname>NDR HW</shortname>
+ <icon></icon>
+ <frequency>93.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853500A5320B468F00DDB554C8AFD8D8DB4366DDE401B68B8C10D4BF1100A550E3138</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik Radio</shortname>
+ <icon></icon>
+ <frequency>93.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350508688C1414B72DB224F647C9BBD7A21F19D3F86897B0A82ECB4DBEABAE2C92E</stationID>
+ <name>NDR 4 Info</name>
+ <shortname>NDR 4 Info</shortname>
+ <icon></icon>
+ <frequency>94.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853506439B306C57FD4A5340C8F7E7364CBEFE1372C60178FEF29688E0627A218BC52</stationID>
+ <name>NDR 2</name>
+ <shortname>NDR 2</shortname>
+ <icon></icon>
+ <frequency>94.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535021D5A21FDEDA49C85D63E57004F55638248728F0BFD40F7671CC9BBC5AEA95DB</stationID>
+ <name>Offener Kanal Hamburg (Mo.6Uhr-Sa.24Uhr)</name>
+ <shortname>HH Lokalradio</shortname>
+ <icon></icon>
+ <frequency>95.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350D34BD6644543C07C38FA2D661672A512583CC51AD16F6F0DE32CC4697AEB1118</stationID>
+ <name>NDR Kultur</name>
+ <shortname>NDR Kultur</shortname>
+ <icon></icon>
+ <frequency>95.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350FF40EDBD2E10FDAD51A29E107DCAF7077E29E1736E60CB0BDDFA49A551A6A1C2</stationID>
+ <name>Jazz Radio Berlin</name>
+ <shortname>Jazz Radio</shortname>
+ <icon></icon>
+ <frequency>96.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853500D6CCAD018C68368688B649B1ACFEE285A557AB5C0FDA660E65718DB691499E1</stationID>
+ <name>Alster Radio</name>
+ <shortname>Alster Radio</shortname>
+ <icon></icon>
+ <frequency>96.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350EBE5C823BACEAE26C7FF138AE71E7711B738C34E75208D92DC51ED5FB9C2FB5E</stationID>
+ <name>Oldie 95</name>
+ <shortname>O95</shortname>
+ <icon></icon>
+ <frequency>97.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535011B527125E5F38884C3CF693AB2004D3E1C810FD877D2B4213FEFD3836370889</stationID>
+ <name>Radio Bremen 1 Hansawelle</name>
+ <shortname>RB 1 HW</shortname>
+ <icon></icon>
+ <frequency>97.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350AB3F8EE6BAC5C355404FD149F70CF608788C42CBCD172722787BFE29CFBAA8BA</stationID>
+ <name>RTL Radio</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <frequency>98.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350601899CA33011371470A528C450992A0D64DD34A718C7BCE4AF47EF312D4B136</stationID>
+ <name>Radio Nora</name>
+ <shortname>Nora</shortname>
+ <icon></icon>
+ <frequency>98.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535068C208A46296C2BE28873616D9C401F53E209937F709EDC3EB6EB7BE49EC4F02</stationID>
+ <name>Radio FFN Hamburg/Lüneburg</name>
+ <shortname>FFN</shortname>
+ <icon></icon>
+ <frequency>99.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853502006935D7247875D8AA64C3B2AF8933D5B8D3650A1CAE77A4C6B677833772F0E</stationID>
+ <name>Energy 97,1</name>
+ <shortname>Energy</shortname>
+ <icon></icon>
+ <frequency>99.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350169E84364F4F9F4D3C3547FAC7365B9521BEFAB964624811D599177AA4E77E55</stationID>
+ <name>NDR 1 Radio MV</name>
+ <shortname>NDR 1 MV</shortname>
+ <icon></icon>
+ <frequency>100.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853503D5AA8B2230615373C62861989B4AD0EB99F4EAED33ECF1EBF06B5967FCD831A</stationID>
+ <name>BBC</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853507248B4D0A7AD9E7DF13B1893C01E6FC349E736D790CD33B3D0696E9063E85E46</stationID>
+ <name>FSK Freies Sender Kombinat</name>
+ <shortname>FSK</shortname>
+ <icon></icon>
+ <frequency>101.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350F6080C0CB178074EB190CA8E77340D8267A33B6C3C3E58B87D1E3255DD0AF5D5</stationID>
+ <name>NordwestRadio</name>
+ <shortname>NWR</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535094733F26C046A7795D27ED029389749370E31C7C1C78483134F220F8D8FAD4A7</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350FAD03C1D4B5A46C859A3A110D862C8523602E39385B8E5E402B94A751731F2EC</stationID>
+ <name>Hit Radio Antenne</name>
+ <shortname>Hit RA</shortname>
+ <icon></icon>
+ <frequency>102.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853500526AA9671790C3BB2211D6DF78CC72D1ABB18733ED5803200B3B1B0ED13C46A</stationID>
+ <name>Delta Radio</name>
+ <shortname>Delta</shortname>
+ <icon></icon>
+ <frequency>103.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853502CD554F9AD1EB9D0727B9D0621D03342D67D2F526DC6C43040F140D1D8412A88</stationID>
+ <name>Radio Schleswig Holstein</name>
+ <shortname>R.SH</shortname>
+ <icon></icon>
+ <frequency>104.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350FCC367BB28B3F06B05EE9436A580DD111C23C69BA950EFFF390F827E9539BB65</stationID>
+ <name>Radio 21</name>
+ <shortname>R21</shortname>
+ <icon></icon>
+ <frequency>105.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535048C54A30155C428309B238A6B368938D90074D049CAC4719607EAB5CF7D1CBB3</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Radio Melodie</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853506D9D33CCAD3D2A21934D4332B28A106F4E7B556D2E85E73D1CA9694FE389A9BF</stationID>
+ <name>Antenne Mecklenburg-Vorpommern</name>
+ <shortname>Antenne MV</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535090C69B1F51500F2011BA197DBBF8655430B7EBCE140C874329F8C8C8B0CEA50A</stationID>
+ <name>BFBS</name>
+ <shortname>BFBS</shortname>
+ <icon></icon>
+ <frequency>107</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350B7953D6A790A5AB4818383A12C503EC062B044FCA52ABF433AA19E42A49283BF</stationID>
+ <name>Jam FM</name>
+ <shortname>Jam FM</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350FC80A9732793334A7DAC69EA8F7B486EC7160FC3F7A6E592E08C280C7D06F449</stationID>
+ <name>Radio Bremen</name>
+ <shortname>RB</shortname>
+ <icon></icon>
+ <frequency>107.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/hamburg-cable2.krp b/kradio3/presets/germany/hamburg-cable2.krp
new file mode 100644
index 0000000..59596ec
--- /dev/null
+++ b/kradio3/presets/germany/hamburg-cable2.krp
@@ -0,0 +1,278 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Peter Egenolf &lt;peter.egenolf@hamburg.de&gt;</maintainer>
+ <changed>2003-07-04T09:08:54</changed>
+ <country>Deutschland</country>
+ <city>Hamburg</city>
+ <media>Kabel</media>
+ <comments>laut www.ham-online/sender/radiokabel.html (ergaezt)</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385351B90538397F75FE4F92C4FF92D555D7AB3C7686C86674B126CF2729626F4E266C</stationID>
+ <name>NDR 2</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>87.5625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853513FA6E79E564CC0FC8DD0C1D89971F9B6382E326B800493D5043FB34792E71BAA</stationID>
+ <name>Radio Hamburg</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>88.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853511012DED2AC0DA160A70D719CF0176281A557EABCBFDCDD8448C7F8EEBE9241A0</stationID>
+ <name>Deutschland Radio Berlin</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351A7337098A3C36BF98B4646DD1CD65EE56617F67F745CED87267EE57873D5F79C</stationID>
+ <name>NDR 1 Radio Niedersachsen</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>89.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351959B3D89E01647C7EA93FCEFB9DC9F1E5E9DD9DA9B39EC0BA423530E12468510</stationID>
+ <name>NDR 1 Welle Nord</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>89.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535181D4B243280FDEBBC060C178050101CB56929E99F9EED1D9B77C0D5030D3E927</stationID>
+ <name>NDR Info Spezial</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>90.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351FFFAD112B1F014D9575771961ECF5B8C5C1A9CF91AAD397EB66733C7832C437C</stationID>
+ <name>N-Joy</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>90.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853516447C07AA7B8594C9804FCB72D2A7D65F8E7AF1632F231DDCC57FC545F6852D4</stationID>
+ <name>sunshine live</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>91.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351A5CC8F0B0718F2169FB0884A37F5FCFDAE2706292ABC57E06DB1AE3A7A031FE7</stationID>
+ <name>Radio Hamburg</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>91.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351B6F62918EB20196CE4E93880DFAE843CCEECBC9C598B9821372A695F5A6914B4</stationID>
+ <name>NDR Info</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>92.3125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853514F4D02A69B620436E0F40B97B14BB64A92B83FEE66546769F8BF2619CAE54B13</stationID>
+ <name>NDR 90,3</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>93.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351D26E702416113F9A98520AE443D7447008F9987DA13DA0DD94BA9C0856A468F6</stationID>
+ <name>Klassik Radio</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>93.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853519F06BA11374B2D2C74905FE4D547B55ECAC2FD166E9CB843462837C790545F91</stationID>
+ <name>NDR Info</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>94.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535139EE350B45968F3EE77E75B0A1DCD293ED3FACC167F09D50EA66178DCEC06632</stationID>
+ <name>NDR 2</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>94.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351C6D2D41828D606547FFB2340DF1F8DAF30C176C5BBB5D2A183FC058C4EF3060B</stationID>
+ <name>NDR Kultur</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>95.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853515BC000885CDC9B84C4CDDB0AF24502A9B162A88DF36286F21320135B1A842FC8</stationID>
+ <name>Jazz Radio</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>96.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853519F9127BB5520C538C5DDE1DED84727AC981A19DF6989465410476E170FCA6490</stationID>
+ <name>alster radio</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>96.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351F5B931E95D933230183E82C8AE6A08FDCBC05FACE20BEB8E3743D768BE9DE326</stationID>
+ <name>Oldie 95</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>97.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351ED5A2226ABE352AF71ADD33742A84F07BBB0367A823272384A8394C5CC0D8380</stationID>
+ <name>bremen eins</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>97.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351A9CF1EAF68F4FF63BBD4ECFA2255362BAF1E05FC24DC4B9722C24D3CD3E273A8</stationID>
+ <name>RTL Radio</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>98.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853511A3C42F77E9642EE8B58D746E550AC791B6F9D7B3908D3DFA296BA4EF80BA301</stationID>
+ <name>RADIO NORA</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>98.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853516188D042E55B32C8DAA9B225152B9039CF29EE9294BE06E519D6E9778753682D</stationID>
+ <name>radio ffn</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>99.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853513DFB50DFB8F39DE247EC6CA8E6E5023A9B3DC7E4D45E86358E076AD4FCBEEF44</stationID>
+ <name>NDR 1 Radio MV</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>100.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853519F66EA4492978594B8BF5890C647A3FB862CBDE68E52549EE183F4495A78EBEF</stationID>
+ <name>BBC</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853516436B545646B2B1407A764235358D9B91E576E9D17AFE0B7DDF1E4B2DBDFB1BB</stationID>
+ <name>FSK</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>101.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351A9375E083D627ECEB9EEAA6BB5668612D69010C855B16AB424869182DB034D35</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535173F01EF8257DB0D319E3C64712BB2C33BC78F2FA396CA9CF5B44775AA28AB871</stationID>
+ <name>Hit-Radio Antenne</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>102.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535189A9EFDE3A9C75DE58693434383C8949449E8077E6722D3C7A6AA0DBEFB9B720</stationID>
+ <name>delta radio</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>103.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351C929D57C6D844851D500689C720478C6A117C39C4311FB0117C1173DFAA48980</stationID>
+ <name>RSH Radio Schleswig Holstein</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>104.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535102D73DE08C8B68A06E2E5106CC94F1F002A6DE223E1A3DBB3398CDEB0C7FAE18</stationID>
+ <name>Radio 21</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>105.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351CEE4833606AE22AC00FE0B9E162CFB6FD070DD9F95E15FF763D032012C49B10E</stationID>
+ <name>Radio Melodie</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351D318E2C30AAE6851860D11F60E709A8C0DB81CFA2159AE160B532842415F7ABD</stationID>
+ <name>Antenne Mecklenburg-Vorpommern</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351578B3D1BD963AA4AE83EA5EBAB048CAACE8C070055EEA06BABF48F054E850A15</stationID>
+ <name>bremen vier</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>107.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/hamburg-cable3.krp b/kradio3/presets/germany/hamburg-cable3.krp
new file mode 100644
index 0000000..35bc2b3
--- /dev/null
+++ b/kradio3/presets/germany/hamburg-cable3.krp
@@ -0,0 +1,294 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Thies Möller, &lt;thies.moeller@hanse.net&gt;</maintainer>
+ <changed>2003-05-29T19:25:24</changed>
+ <country>Germany</country>
+ <city>Hamburg</city>
+ <media>cable</media>
+ <comments>Frequencies taken from http://www.ham-online.de</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385350AD01BAE277BBDEED30F32B00365BC6FF1B5C7CB133ED9FB87640099E60F6C446</stationID>
+ <name>Radio Hamburg</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>88.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853500FAD6BFECF6BCB65CFA2639F02226948F618C398AB10B38A6BFB8543E2673057</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350D97D55C33B34117A1350D00B87948F9F921B868FE8B2111AB834E4FCBE2CE22E</stationID>
+ <name>NDR 1 Radio Niedersachsen</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>89.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350A98A7A7880DB8AC74EE666A265A2D1025D95ABED0B4512AE6E7FF835556D4397</stationID>
+ <name>NDR 1 Welle Nord</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>89.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350F65AB82BFB7576D2531928AC0664039E58C77821169FCEE751323D67916B87A0</stationID>
+ <name>NDR Info Spezial (Mittelwelle)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853503BB3F00A4088B8C768BE150D679528DA01A49962C471527BA4DD315EB9F052E8</stationID>
+ <name>N-Joy</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853502DE58A330205FF3728812E6174F9ACD9A48AF5A84C8BD9687B0AD99B30469C0D</stationID>
+ <name>sunshine live</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535095D5FF44E7BD7326F02861F03740C95602A0CC32529835A63EA8386CA4708AE7</stationID>
+ <name>Radio Hamburg mit City-Fenster</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>91.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350700311FDA833D33DB24B884407C689449DADA2B5AE188C1CAA596F03D7689B42</stationID>
+ <name>NDR 90.3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>93.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853500B70EEF42D568F12A8B9EE9274A14262519B9548F8297F276D2A93ACBC3EBD1B</stationID>
+ <name>Klassik Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>93.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535016A7ACC349EDD47DFDF00B4A26B38A8C2B227F9111933DD525B552D1B403BBE5</stationID>
+ <name>NDR Info</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853507A9376A58D54F8887251B1539DB7402674797501C9BAD1AD7B1C2B200AD07348</stationID>
+ <name>NDR 2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350F9F5B11D5EC10BA3D676898AE499E022531D351FC05A3986B425E5B89C1F32C5</stationID>
+ <name>Offener Kanal Hamburg</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>95.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350A4C16E3C6DA4E2BDB36E3C577682A135DAAFCC950ACDDF3A30B1FFB0C91E87B8</stationID>
+ <name>NDR Kultur</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>95.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350173EDF54FB998329DBCCF672845737DDBAEEF8DAC2260B9FE477CFC4FC517C03</stationID>
+ <name>Jazz Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>96.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350E9167078C913CDB380E4F40150F6672CC83A0E53F1D2C94B13E5C105995DA9AE</stationID>
+ <name>alster radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>96.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853505240DD7A87FAB602AA94D49E40729EAA6ACF346AE53A27FF62CA286A9AE773AA</stationID>
+ <name>Oldie 95</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>97.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535043192A011D65ACB5912323681EF8DDEAD46B34A90B9322A07827C1E199DB95F9</stationID>
+ <name>bremen eins</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>97.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350F7B882FF38186D23016DCC934DA90658FDC6A3C679A02BD69B34A7A0691627A2</stationID>
+ <name>RTL Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>98.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350882F0EF9D622A01213CA31B23CC681806F0DD9D7E2CF4517A416E326F34E478B</stationID>
+ <name>RADIO NORA</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>98.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535071A9BA40074094B01DA9D5A6236F3A25C1463FD48B9AF2B1FA6C9CC4BAE7242E</stationID>
+ <name>radio ffn</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>99.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350FFC99A28BF6EB3919467CC5126290753B948DAEE2C314E6264F6D0A6277F9CDC</stationID>
+ <name>ENERGY 97.1 Hamburg</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>99.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350B08E36A473EDF79BDC0EE29C1071332586019116D3D20DFB317BE528BB403350</stationID>
+ <name>NDR 1 Radio MV</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>100.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535093B4F8C2BE6AF9FA8813DCE2BF741F1DBE84AB53C1A9DFE938DA9E3EF5EC968B</stationID>
+ <name>FSK</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>101.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853506D004DE5008BA8F10CDCC49D9E4D8DA703D1CA367E59C384EE264751757D4E5C</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350596A7013481D8CDB3D0FA6E5837E762424F1BD855B6F5EF75D4A21B5F450B17C</stationID>
+ <name>BBC</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350970FB05446DB776FB0FADDB50D176E3E8F3A4253EBBB0EE184D4CB905488C3F5</stationID>
+ <name>Hit-Radio Antenne</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>102.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853506F76D2A5447EC71F552F9E00356A6B68F28F908E43757FFF6FE8C9E9FA8190D7</stationID>
+ <name>delta radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>103.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350131532BAF6BB0300F579660925D23DB5DDFFA2766FC7B237897EA0A3BB2ABB5A</stationID>
+ <name>R.SH Radio Schleswig-Holstein</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>104.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350DC224D9A377D3E8B8A31BF3C4C74E4B707DC894FF7B34564E187095B9F7EC531</stationID>
+ <name>Radio 21</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>105.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350D88FD73BB2798F8577745D8A5F0CF55CE6D32E66B29D3294751AFA5AEC35B3A5</stationID>
+ <name>Radio Melodie</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350E271F66DB9F08D4C8089BB47392FB11EC1FE08A3A5440904549CF83C22DBF57A</stationID>
+ <name>Antenne Mecklenburg-Vorpommern</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853506FF6071E5E0049DFD95A3D298455BE7FFE16EEA8692638F90795D81E2B9A214D</stationID>
+ <name>BFBS</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>107</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350C2E7E17AF59E4FE394C0DB4A25F8C99A46F2FAE80E7B23D6AAC04D5A497C11BA</stationID>
+ <name>JAM-FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535066333A21F608CF809F8F4D61C2F5CA4EB2AF448AC374A3B934660EEC98C0B05E</stationID>
+ <name>bremen vier</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>107.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/hamburg-cable4.krp b/kradio3/presets/germany/hamburg-cable4.krp
new file mode 100644
index 0000000..1f3cb29
--- /dev/null
+++ b/kradio3/presets/germany/hamburg-cable4.krp
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Icebird Icebird00@gmx.net</maintainer>
+ <changed>2003-07-08T07:57:13</changed>
+ <country>Germany</country>
+ <city>Hamburg</city>
+ <media>Cable</media>
+ <comments>Frequencies taken from http://members.aol.com/radiozine/rszenehh.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385348EDE3E26F0467488A74E11A045FA850521F06F82BE4E4012CCDE73C9764891579</stationID>
+ <name>NDR 2</name>
+ <shortname>NDR 2</shortname>
+ <icon></icon>
+ <frequency>94.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853487C98E64D07761CFB9FEA1908050CA146C71D0486FA234A3569DBFA99AEC52408</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>D. Funk</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385348A81511B288A14864095487CF373DAAE93CE4138D49E0D6CCD787E102C5DA5A5E</stationID>
+ <name>Deutschlandradio Berlin</name>
+ <shortname>DF Ber.</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385348ECC31EFBB4AE594350CA08373901E342D7B2C9F782252F7B906778066E40A7EB</stationID>
+ <name>NDR Info</name>
+ <shortname>NDR Info</shortname>
+ <icon></icon>
+ <frequency>94.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385348E6806D9668803D8CB20B99CFA0DDB9969FC8E6961B39F5F1FB8D3D4DFBF7522F</stationID>
+ <name>Freies Sender Kombinat</name>
+ <shortname>FSK</shortname>
+ <icon></icon>
+ <frequency>101.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853480CC11F5806229B7A75476C1634877825EF6C6B12349474E3680CB348A9D8A909</stationID>
+ <name>Delta Radio</name>
+ <shortname>Delta</shortname>
+ <icon></icon>
+ <frequency>103.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385348FE2B927F167C4216BD26D93D8C3B5515CCB8D4C77722E0BB0210DC9F8A9CB19B</stationID>
+ <name>NDR N-Joy</name>
+ <shortname>N-Joy</shortname>
+ <icon></icon>
+ <frequency>90.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385348AD88EB5E024398A58F73361393E4771824FF852F6A5DD66175C04EB3DF5B03F2</stationID>
+ <name>Bremen 1</name>
+ <shortname>Bremen 1</shortname>
+ <icon></icon>
+ <frequency>97.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385348737928412D196B0717D2F539A925968A5B624F15290D234937D81B9189EF2224</stationID>
+ <name>Offener Kanal Hamburg</name>
+ <shortname>O. Kan.</shortname>
+ <icon></icon>
+ <frequency>95.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385348C77AE38E5F1C4B2F0A93A102581B08D925EE65336BBC61963C8DAD1D98936EAD</stationID>
+ <name>Energy 97.1 Hamburg</name>
+ <shortname>NRG</shortname>
+ <icon></icon>
+ <frequency>99.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534894E60C622962E0CE53D0300C45621FA702DE23BC4450861A876D40697582B307</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klass. R.</shortname>
+ <icon></icon>
+ <frequency>93.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385348A47C7A0A72F08A04C0F082B26CBDFB0B61285573ECA76D223946EBA80AE8B672</stationID>
+ <name>Radio Schleswig Holstein</name>
+ <shortname>RSH</shortname>
+ <icon></icon>
+ <frequency>104.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385348F2F6E4B324DE9623E3B7C3E265B56507DCE22094F8605D5451ABD500BC2FC107</stationID>
+ <name>Radio Hamburg</name>
+ <shortname>RHH</shortname>
+ <icon></icon>
+ <frequency>88.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385348A02C2CEC3C6F6F4447250CBBBB7E7E120092C6F1FA1CE7E62628139E612563E6</stationID>
+ <name>Radio Hamburg City</name>
+ <shortname>RHH C.</shortname>
+ <icon></icon>
+ <frequency>91.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385348A62BA9DED889FDECB57CF6933A9CEB324160C008A4524D53D3C83E7EC6E6BC4D</stationID>
+ <name>Alster Radio</name>
+ <shortname>Alster R.</shortname>
+ <icon></icon>
+ <frequency>96.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534845793EFE47678BB73A41FC7CE217A425AE4D0758898D0228A667654159AE5DED</stationID>
+ <name>NDR 1 - Hamburgwelle</name>
+ <shortname>NDR 1 HW</shortname>
+ <icon></icon>
+ <frequency>93.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385348F98DEDF8BF2A09090A82E40E6FDFEB6EFC80A204AC71D1B0ABB43E3C9514FAA9</stationID>
+ <name>NDR Kultur</name>
+ <shortname>NDR Kultur</shortname>
+ <icon></icon>
+ <frequency>95.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385348F7F7705B823FA4B9811BE2F8AE839AB7E27D98D8A8927F929E83A46DA7E53975</stationID>
+ <name>Fun Fun Radio</name>
+ <shortname>FFR</shortname>
+ <icon></icon>
+ <frequency>97.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385348EC2E9AEB8BEF6A7DCB962E9F0256DA53425603639913588AF59BE89F3B76C25C</stationID>
+ <name>NDR 1 Welle Nord</name>
+ <shortname>NDR WNord</shortname>
+ <icon></icon>
+ <frequency>89.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385348502F4E7F7598E9DAE7D85736D214DAAB63742042A321840D490BFD458D4BFF25</stationID>
+ <name>NDR 1 Radio Niedersachsen</name>
+ <shortname>NDR RNieders.</shortname>
+ <icon></icon>
+ <frequency>89.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385348BC5211ECA6E57055B08CF39A8DE9E18071B44E737DA8C998D97DF081ACF22535</stationID>
+ <name>NDR 1 MV</name>
+ <shortname>NDR 1 MV</shortname>
+ <icon></icon>
+ <frequency>100.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385348982ECC563FC2C1954DECD6DF474349B670F4A253090483026136FBC1A724B895</stationID>
+ <name>Radio Nora</name>
+ <shortname>Nora</shortname>
+ <icon></icon>
+ <frequency>98.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385348BAD042DDE5B556E2D29FAB27A0A86241905434CD3370ECF70D3584CC91F9A1A4</stationID>
+ <name>Radio FFN</name>
+ <shortname>FFN</shortname>
+ <icon></icon>
+ <frequency>99.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385348E9E4FB5AEDA2189F7FAB3B65B3EE48B91B446539E36A008F567C7C2EA13AC43B</stationID>
+ <name>Hitradio Antenne</name>
+ <shortname>Antenne</shortname>
+ <icon></icon>
+ <frequency>102.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385348E4E8BF6BD6D059518B86DA7A565C704A261DCDA9DC4F3632E278BBB9B5F78765</stationID>
+ <name>Hitradio Antenne MV</name>
+ <shortname>Antenne MV</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853483A137FEBA6B33227855D04B805414A621A5B8ED10A5640428E81C66AB92DA1A8</stationID>
+ <name>Bremen 4</name>
+ <shortname>Bremen 4</shortname>
+ <icon></icon>
+ <frequency>107.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385348EA6659FE2A5D145951E5CBF21D503FB7AFA93E1A4E493C3E6DCC39C72EEEB34B</stationID>
+ <name>Nordwestradio</name>
+ <shortname>Nordwestr.</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853487900054129621A224047D3CF566E52138D03BB5A9BF94CD944CFB5708EE5B18C</stationID>
+ <name>WDR Funkhaus Europa</name>
+ <shortname>WDR FHE</shortname>
+ <icon></icon>
+ <frequency>105.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385348B489E7D7E6ED0EF8BB3FC1673B82602665CD254F7E86B6EEF1BCBEAB63DA7D99</stationID>
+ <name>BFBS</name>
+ <shortname>BFBS</shortname>
+ <icon></icon>
+ <frequency>107</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385348832713B6FA31C32FB328BE47B0B73D557548E1F3976538F871ABBA83EC037663</stationID>
+ <name>NDR Info Spezial</name>
+ <shortname>NDR Inf. S.</shortname>
+ <icon></icon>
+ <frequency>90.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385348D352B2D1BF3B0C3DCCD6415853F44CDFA89B31D7A71502C6817D93FAFA0E88E7</stationID>
+ <name>RTL Der Oldisender</name>
+ <shortname>RTL Oldies</shortname>
+ <icon></icon>
+ <frequency>98.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534847A9C58A620B8B8AB7E1480BC32644B1748C887C90FF391108345F418665A8AA</stationID>
+ <name>BBC World</name>
+ <shortname>BBC World</shortname>
+ <icon></icon>
+ <frequency>107</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385348C6FF2B2363579B3B8A20B6BF1E6884B40E6955C267237D90DAA874E209C52C42</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Melodie</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385348D4A389DA9DCDDC8432BFA1587384B8F856FE13A7464039C8A7F3409CFCF80D42</stationID>
+ <name>Jam FM</name>
+ <shortname>Jam FM</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/hamburg-cable5.krp b/kradio3/presets/germany/hamburg-cable5.krp
new file mode 100644
index 0000000..28b7e49
--- /dev/null
+++ b/kradio3/presets/germany/hamburg-cable5.krp
@@ -0,0 +1,302 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Rainer Sawatzki, &lt;spam@sawatzki-family.de&gt;</maintainer>
+ <changed>2004-06-20T18:50:00</changed>
+ <country>Germany</country>
+ <city>Hamburg</city>
+ <media>cable</media>
+ <comments>Frequencies taken from http://www.ham-online.de</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1116455444B3A02289CD0AD672FB531E2149812EA080397758BE5E539CED1CC503566FC402</stationID>
+ <name>Radio Hamburg</name>
+ <shortname>RHH</shortname>
+ <icon></icon>
+ <frequency>88.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554443FB63830E0AB072AD28D00C87F74887AC9D06F4F6B203CE3D8742DE316CE25BF</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>DLR</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444A181F5673BB7D6CCBF0DFE7EC71FA2A5FCE330FA8005A3517BBD580FE8314294</stationID>
+ <name>NDR 1 Niedersachsen</name>
+ <shortname>NDR 1 NDS</shortname>
+ <icon></icon>
+ <frequency>89.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544407625119029A542D59F2E22B19BC75DBA5169E21F58F3FF2D8AC60F32AD3C689</stationID>
+ <name>NDR 1 Welle Nord</name>
+ <shortname>Welle Nord</shortname>
+ <icon></icon>
+ <frequency>89.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444EA29029C6E30E8329EC9B933EB125A9B1179309CD601943E35DD2AF9D5D94A21</stationID>
+ <name>NDR Info Spezial</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>90.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554445D1D050BE862337CE3E90CDD9D351D81FC57C816B111006CB9CB465FB03AA500</stationID>
+ <name>N-Joy</name>
+ <shortname>NJoy</shortname>
+ <icon></icon>
+ <frequency>90.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554447D7E5875FFE5BC73DCA7ABCAF976E1FA9FE725CA869864763F1E73D70998670D</stationID>
+ <name>sunshine live</name>
+ <shortname>sunshine</shortname>
+ <icon></icon>
+ <frequency>91.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544482BBD4907E8FA51FC7D661F0D40EE3F0836EED2A579C4F3FE8E64532D96C2081</stationID>
+ <name>Radio Hamburg</name>
+ <shortname>RHH</shortname>
+ <icon></icon>
+ <frequency>91.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444C2591B632197C97BA17FC631B73CBE76FDCF93B456B2EEE1194337726A6477E2</stationID>
+ <name>NDR 90,3</name>
+ <shortname>NDR 90,3</shortname>
+ <icon></icon>
+ <frequency>93.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544472BDB161483FA96D5D9AF07138B0F58E2F8E73CF3D1053B937ED28A597CECCA6</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik Radio</shortname>
+ <icon></icon>
+ <frequency>93.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444593476584064A7B5F36707C92EED4456525CABCBD1BABB2F2EDE0E36CB8B5E71</stationID>
+ <name>NDR Info</name>
+ <shortname>NDR Info</shortname>
+ <icon></icon>
+ <frequency>94.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444E80452B9392D3D51CE9A263935BA523DDA4ABA12200DFDD6E4302F45F984C4C9</stationID>
+ <name>NDR 2</name>
+ <shortname>NDR 2</shortname>
+ <icon></icon>
+ <frequency>94.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554442C2755CBA32FFD06A6BD9BF8F47DB9F716BAC7848AB0F64B646CB35576F3B153</stationID>
+ <name>TIDE 96,0</name>
+ <shortname>TIDE</shortname>
+ <icon></icon>
+ <frequency>95.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444C280A391D9AE51559C5260717399F311206DE9434865F1917DD8DAB61908BD24</stationID>
+ <name>Hamburger Lokalradio</name>
+ <shortname>HH Lokalradio</shortname>
+ <icon></icon>
+ <frequency>0</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544481229C695FF2E9D37549F0DEE7E54744270052EA46229B6E1E5B27A0E046C276</stationID>
+ <name>NDR Kultur</name>
+ <shortname>NDR Kultur</shortname>
+ <icon></icon>
+ <frequency>95.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544433A5EA05CF8E8DA93E88A530493A45C312F4493DF9E7BE614C1276B204F32213</stationID>
+ <name>Jazz Radio</name>
+ <shortname>Jazz Radio</shortname>
+ <icon></icon>
+ <frequency>96.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554444109CE3F00039A339FB778B91F42225DF3467ECF01DC529261DF1EEE5D1FB083</stationID>
+ <name>alster Radio</name>
+ <shortname>alster Radio</shortname>
+ <icon></icon>
+ <frequency>96.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554442DF8FF097F86F94AF2760AB2BADA258AC01F57AF50854720C03B88E10CC4EC83</stationID>
+ <name>Oldie 95</name>
+ <shortname>Oldie 95</shortname>
+ <icon></icon>
+ <frequency>97.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554449310099D7C37CA80446CA674D57CE720CCF605ED7F847993342FA8CEA3296E45</stationID>
+ <name>bremen eins</name>
+ <shortname>bremen 1</shortname>
+ <icon></icon>
+ <frequency>97.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554442F9672DCC2164F0FE32AF4A1D443F85C6687661D5E58D5815DA3B98D649E47D0</stationID>
+ <name>RTL Radio</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <frequency>98.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554444984FE64141EF6282D57C824FEB38EE2C7A3DC46C3B90DE071587E709CE1C351</stationID>
+ <name>Radio NORA</name>
+ <shortname>NORA</shortname>
+ <icon></icon>
+ <frequency>98.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554445F8173EE6C6CB9EFFC54B961C201513E12F1BCC2B017C9A576275087B8C74C90</stationID>
+ <name>radio ffn</name>
+ <shortname>ffn</shortname>
+ <icon></icon>
+ <frequency>99.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444BA4EDB55D772698CF71990FAA1F329DC3E9AB41F5C25CE8B0D2F6DBEAAA483CE</stationID>
+ <name>Energy 97.1 Hamburg</name>
+ <shortname>energy</shortname>
+ <icon></icon>
+ <frequency>99.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554442518041107F0462C05A27ACC432DCC4504AD414E43493D141D2161ABFFB84027</stationID>
+ <name>NDR1 Radio MV</name>
+ <shortname>NDR 1 MV</shortname>
+ <icon></icon>
+ <frequency>100.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444DEC905955E98A400AF6466C91AC1AE05D0529DC1DC822EF7D39B9543C0A5935F</stationID>
+ <name>BBC World Service</name>
+ <shortname>BBC</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444B74CBC6CB653794DBFDE0E57CDCD08317D2F47024AD0EDB79889C2AFE29E0E57</stationID>
+ <name>FSK</name>
+ <shortname>FSK</shortname>
+ <icon></icon>
+ <frequency>101.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544452A860E7FF9A9C9E22B9ADB0E812186C28597F728E5DA5E6354EF6A2B3ACC4E3</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444DC503AF4A735091BA2D6F4EEF50E12C152C86BC0E87E9BAA510F02EF265FC551</stationID>
+ <name>Hit-Radio Antenne</name>
+ <shortname>Hit-Radio</shortname>
+ <icon></icon>
+ <frequency>102.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544427C565A7E5FD8521B7E0F01FA34B675EAD359E09F94398294B783E1A91DC3A63</stationID>
+ <name>delta radio</name>
+ <shortname>delta</shortname>
+ <icon></icon>
+ <frequency>103.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544453589109889AE948E4252AEBD7548F7415AFEF813DA4938462B6CA9F6235ABA0</stationID>
+ <name>R.SH Radio</name>
+ <shortname>RSH</shortname>
+ <icon></icon>
+ <frequency>104.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554447925F44063CF60A458187C906A519EC2D36CF7BD09B101FB123BCF7B4EFAE17B</stationID>
+ <name>Radio 21</name>
+ <shortname>Radio 21</shortname>
+ <icon></icon>
+ <frequency>105.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544476A2667C0199D08286AB185C865EC939774C7F0C8FCD4A0314574AF42DC1A164</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Radio Melodie</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444FC365F5624EB804363A6AD87E54EF290604FE8AF4C36767E206E23DCCFF76784</stationID>
+ <name>Antenne Mecklenburg-Vorpommern</name>
+ <shortname>Antenne MV</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554448E9824047A6C3FA6F5DF733C2EFFC3F7E389DD54B42612A5F322DAE40D6D6A0D</stationID>
+ <name>BFBS</name>
+ <shortname>BFBS</shortname>
+ <icon></icon>
+ <frequency>107</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554449219C11EE75609AD2BC1107C5CC616B6C92242EC310B591B392780E7A8D00DD8</stationID>
+ <name>JAM-FM</name>
+ <shortname>JAM</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444F20BD9FD1B772832F72A2F51D328D813AB035EA0B9B3A2D7BB40BE9285E38C9A</stationID>
+ <name>bremen vier</name>
+ <shortname>bremen 4</shortname>
+ <icon></icon>
+ <frequency>107.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/hanau-cable.krp b/kradio3/presets/germany/hanau-cable.krp
new file mode 100644
index 0000000..fd43479
--- /dev/null
+++ b/kradio3/presets/germany/hanau-cable.krp
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-1.0beta3b</creator>
+ <maintainer>Werner Muehl, &lt;info@ib-muehl.de&gt;</maintainer>
+ <changed>2003-10-05T21:35:53</changed>
+ <country>Germany</country>
+ <city>Erlensee</city>
+ <media>Cabel</media>
+ <comments>Stations/Frequencies for Hanau, Bruchkoebel, Maintal, Erlensee,
+Rodenbach, Neuberg, Langenselbold</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>106854525432A288014DF7C85A99EB501E082B06B4F96949EBAE12DD4A859C19C3636C7101</stationID>
+ <name>Antenne Bayern</name>
+ <shortname>Antenne Bayern</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254739FC26D6EA0AFF43BCC062A18F2B696DD53495A4DB3E0CE961695FDE6CF251C</stationID>
+ <name>AFN</name>
+ <shortname>AFN</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254A4F642897A3A7A2FDCF75CC91EC34AB83409A44E520926B65616CB71A888A632</stationID>
+ <name>Bayerischer Rundfunk 1 (Main / Franken)</name>
+ <shortname>BR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452545BFB673861F03BE773365B16486F1312D0E67EE191A44D3E6E8A2EDE9CFF860B</stationID>
+ <name>Bayerischer Rundfunk 2 (Main / Franken)</name>
+ <shortname>BR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254A50C8E4F463384279978E9990FE99AD5E8D02892DC85239B19FF5D03D0B2D2E6</stationID>
+ <name>Bayerischer Rundfunk 3</name>
+ <shortname>BR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452542B850A62AFBC32E86A8AEEAFB6ADDB4471C997F6EC31B99A4705C034891FF15F</stationID>
+ <name>Bayerischer Rundfunk 4 Klassik</name>
+ <shortname>BR 4 KLassik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254AFA422E0A4F4D99F24FFC42C2EA3E5563D518014CAAD3D29F69BC15105EA2B8D</stationID>
+ <name>Bayerischer Rundfunk 5</name>
+ <shortname>BR 5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452544B20BEB753EDDA4B34C42E483252E211C5BCB770258F801EE1840268FD85CCA2</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>DLR Berlin</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254870A846605C88985C8D465AA421B30FF35FDBEBB55A43E57FCAFD16154206359</stationID>
+ <name>Hessischer Rundfunk 1</name>
+ <shortname>HR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254933EFC46CF2BFFE13CC182D4B05FF2D2461E6F6D7589DDAF3C87DA473962E186</stationID>
+ <name>Hessischer Rundfunk Klassik</name>
+ <shortname>HR Klasik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11367224732DD9647905D1A0E3003D6727D6C6A468489AE8E1B8349C8BDE108A1BE864F4DF</stationID>
+ <name>Hessischer Rundfunk - Info</name>
+ <shortname>HR - Info</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525467DD7BA14D8A886573BE9AED9A64A86C9F8E5AF487245E4146D0307E1EBAFF45</stationID>
+ <name>Hessischer Rundfunk 2</name>
+ <shortname>HR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254702E9C08B12CD8B1420A2124B447183B0A668DFCB197EE89DF93E6ACF98E9812</stationID>
+ <name>Hessischer Rundfunk 3</name>
+ <shortname>HR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452546CFB27CC9962BF5D8977046D34628F539AA5D68B836F03732D03EC4943541F6C</stationID>
+ <name>Hessischer Rundfunk 4 Rhein-Main</name>
+ <shortname>HR 4 Rhein-Main</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452549B0EB616A99AF727280D11B619234DFFABDAA8F588578B31D946064A1E4F0CE1</stationID>
+ <name>Hit-Radio FFH Rhein-Main</name>
+ <shortname>FFH</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1136724537075C78FBD2816E19C6B77CC4DAFDC888A9DC10DEBA65983A0B76537048067AE1</stationID>
+ <name>JAM-FM</name>
+ <shortname>JAM-FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525483F9405C61CE3EED8B1790B72AE42D9ECF45255D65635DCCA1A185EDB0876D34</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11367244420E0433EBB9A7933AE1DFCAE9AC5968416B2B9C1718E31FED01DFD0676DC2505B</stationID>
+ <name>MAIN FM</name>
+ <shortname>MAIN FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254D0CE4F17DAD846DDC36D7DC42608C19C2F18B4885EC251CE790C84C41CB27447</stationID>
+ <name>Planet Radio</name>
+ <shortname>Planet</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254AC687063AB78F567A8746D9C8C6B2122EDD6595C51D4BE060F507045CE72F2C3</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Melodie</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1136724286E5985147114BB716FE9E15FA357C38BBB0CB331B5396CEB9EBDBCE94915F4A18</stationID>
+ <name>Radio RPR Eins</name>
+ <shortname>RPR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525437C470CE8A4CDE8335D5C2F7734E80C021240F03A3CAAEE3012CD289EDC275EC</stationID>
+ <name>RTL Radio</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452541FF3CA5C607D5DE6797DC299B2145287B967056B74590104E2C042A49CDF62B6</stationID>
+ <name>Sunshine Live</name>
+ <shortname>Sunshine</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254C3EDE8BB17AC69C6BFAE1D0C57D3226A907A7420C6B2B792CF8EA9D2844D5BFC</stationID>
+ <name>SWR 1-Rheinland-Pfalz</name>
+ <shortname>SWR 1-Rh.Pfalz</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525444FF41C1C7E711CF7C74D8AC38A735064E85E5376AC0F57D568D429B9E913BD5</stationID>
+ <name>SWR 2-Rheinland-Pfalz</name>
+ <shortname>SWR 2-Rh.Pfalz</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254CC505A9B2AEF4B7C6BDA243798B7AED04B2D39569524C28CC4BE3EC0CA46D765</stationID>
+ <name>SWR 3</name>
+ <shortname>SWR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254355DB6BC4C4A688C5E1FEF7DBF78B7FB62C40545D488ADA1A4CCF51AF702F839</stationID>
+ <name>SWR 4 - Pfalz</name>
+ <shortname>SWR 4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1136724325091824FE3A7B2E74B15CCE068D71760C4BA8271CE5F3511F5BA9F69098A9C9C8</stationID>
+ <name>WDR 2 (Siegen)</name>
+ <shortname>WDR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525406B343319F3EC21170A752D910A7C6C26670A13961C9F0CC9652DF5D53695E68</stationID>
+ <name>WDR 3</name>
+ <shortname>WDR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11367226162FF388CE9717148283756F57FE37EEE28DD6148247865CBD8BC64CF3C8EF3A01</stationID>
+ <name>YOU FM</name>
+ <shortname>Y</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.8</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/hannover-antenna.krp b/kradio3/presets/germany/hannover-antenna.krp
new file mode 100644
index 0000000..d3ad23f
--- /dev/null
+++ b/kradio3/presets/germany/hannover-antenna.krp
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Manfred Pohler, Manfred.Pohler@t-online.de</maintainer>
+ <changed>2003-11-12T18:23:35</changed>
+ <country>Germany</country>
+ <city>Hannover</city>
+ <media>antenna</media>
+ <comments>got data from http://www.boris-boettcher.de/kabelfrequenzen.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1077144985CFA7BDDAC97F90B7BF7A789711E2F25ADEEF4AC99957496982F176FCAAB351B8</stationID>
+ <name>NDR Info</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449851FF75B178DAF374F4D7E13274F61429174D068E0BB9EB9F512C32054A5C4B680</stationID>
+ <name>89.0 RTL</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>89</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449858AF41B7563A644C2FEB39250B65CC60671343C445CBD3256CDBD949C024BB03E</stationID>
+ <name>WDR Radio 5</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>90.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985A1302B2C8125776FBC165909514A0DDCE738EB5B4C17AEE1DD35F2627FCA1B65</stationID>
+ <name>NDR 1 Niedersachsen</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>90.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498571F2A54E690BCF265B23B0BA5E8AFCD2CC4707FCCCFCEA33095965E223F1B93B</stationID>
+ <name>Jump</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498567149C3067A07DC6AA1A4F0BB87FAEBB9BE614CB5216351B8DCF6AB3B0BF61A1</stationID>
+ <name>N-Joy</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449853BEEF589F7314BF46C21DF793A60C40CB03BE6753BEA8612FD61E48C4E5C3331</stationID>
+ <name>BFBS-Radio1</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985DD32BF261ACB34FD59FAD8C126E053B28D2C94400A87A5A2D6DA376C33C18D8E</stationID>
+ <name>WDR 2</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>93.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498567919082B1BEFB6F374AC17ADA2886528392797AB024099282CB926B58AF1157</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>94</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498567594CD6D8C69853AF173030CAEAA409F473AC406857E2F944567FECFC92FFC8</stationID>
+ <name>MDR 1 Sachsen-Anhalt</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>94.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498530C1BE1E394F6D0EF5DCA36606D21174BDB4F665244AE2E2B26F93AB04E3C6D8</stationID>
+ <name>BFBS Radio 2</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>95.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985F2B367390EC2D29E873694F228A39B7F7B0E6051DE2C77900BF2130A23B51BB8</stationID>
+ <name>NDR 2</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>96.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985AFDF8893ED1B1D7F09909E7B6FFE3E31398A6424D91118C641B93BB4C7DA82A8</stationID>
+ <name>WDR 3</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498594B2D1A2AAF34D5AD6F27FBB98B9A987D2887AA4DDEE9F480205A0D7C6E1DA31</stationID>
+ <name>Deutschlandradio Berlin</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>97.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985ADB6B481BD9D6AB72C931A770F41E5815B9B01C378C3F30A1EBCB7EDC4121634</stationID>
+ <name>NDR Kultur</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985D2A71590FFFA773D287FDB611E61DFA4D97BF86A29FB9A9C2D0D39ABD6BD5E1B</stationID>
+ <name>WDR 4</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985340287AC15258AA8CABCFEFB3C36366A49DD1F15EF9BE2E326E6428A763D55F5</stationID>
+ <name>Radio Saw</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>101.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985B67FC7FAC5DA885D73ABBD4AAB4D129CCA82D53E44EB0E95624147D5BE7EC65F</stationID>
+ <name>FFN</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449853BC65309FF831739939087DACAFB668284AC7A2DE272E6B0FA0210876D39B322</stationID>
+ <name>Hit-Radio Antenne</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>103.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985F72DAD7ACB35DBDDC22898287CFDCDBE08E97FDAA501AEF14F58E06B5C355828</stationID>
+ <name>Radio Okerwelle</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>104.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449852D8A1CB59BA80DB9639E736212122451D46F36B630784E3E0F6CAECE8CA6B25F</stationID>
+ <name>Radio 21</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449858DA1AC7B1CCA727880C61062A16E8E5D1224533721A491AE331F72FCEB0BA20C</stationID>
+ <name>Eins Live</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449858EBB479AA2581293439C2B5D07181360B1E1E355C6A948C68F3111C066371937</stationID>
+ <name>Radio Flora</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985C900A761E50395878A82E8602628B57513196A73B3BEED954D7CCB1B8224B3EB</stationID>
+ <name>MDR Figaro</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>107.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/hannover-cable.2.krp b/kradio3/presets/germany/hannover-cable.2.krp
new file mode 100644
index 0000000..ea92a40
--- /dev/null
+++ b/kradio3/presets/germany/hannover-cable.2.krp
@@ -0,0 +1,302 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Manfred Pohler, Manfred.Pohler@t-online.de</maintainer>
+ <changed>2003-11-12T18:29:35</changed>
+ <country>Germany</country>
+ <city>Hannover</city>
+ <media>cable</media>
+ <comments>got data from http://www.boris-boettcher.de/kabelfrequenzen.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1077144985107744E541EC0089549F4925C0E2EE7F98F35471D43AD94D640841878AB9E667</stationID>
+ <name>WDR 4</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>87.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985D2E17C03545B679197D0FC0921BCCD39A5108A00F3FEF7AC0B93C2584FBD8B00</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>87.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985A26D20FD3D2612BDB354613F0F5F7695241AC112F5C307A4E282A96F507B8699</stationID>
+ <name>MDR 1 Radio Sachsen-Anhalt</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>88.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985C8012BC211257F6BAD538EC9A8E16DA9F25394F44BE91BFF212A3F9EBA8C71B0</stationID>
+ <name>Eins Live</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>89.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498570A454A5349FECF1F83AC364B2EE8D2B014661AE1BC2CB8530651A9427F26FBF</stationID>
+ <name>Nordwest Radio</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985D5544EBA2D267EE05B32E3F1CD0EC8B651CAC6D7BBCD8ABFA17F5492CDB7A54D</stationID>
+ <name>Bremen 4</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>90.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449859092ECAD864CA9394DE89C914CB9EF2EF392A71C316924EF2B3BA80CA558D925</stationID>
+ <name>Funkhaus Europa</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>90.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449855275AE30F06AE13E986F2EF5118226EC8488EC4E2427D881ECC1A23A58DC5A6F</stationID>
+ <name>Klassik Radio</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>91.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449858982E66940905B173C8BE0E009305CF5ECC4932FB29B5ED728BC1A58DA6E7F00</stationID>
+ <name>Deutschlandradio Berlin</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>91.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449851E1B931934F506862092929C81FEC037AEC8FA852F487E01A2E80807492A0A2A</stationID>
+ <name>Radio Melodie</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>92.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985119E71EADB6C5942C56E9C160C0D0CC36D36D5F4655E6523D42DE6625D66D8FF</stationID>
+ <name>Hit-Radio Antenne</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>92.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985C37D160E9C097E721F326E04FB10F123D2D31D9D2F9C78024E01EC5D7925DBB1</stationID>
+ <name>HR 2</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>93.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985F115642E5553C810A5D359AF8D67A9A3144B2FC93CFA27485E0F3EDC8D9BE6DB</stationID>
+ <name>NDR 2</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449858402FE14D05A0815BC0F8EEAE802560BA963E8D62C0D9311F77EA48B85740BCC</stationID>
+ <name>NDR 1 Niedersachsen</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>94.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985CC72E09952055D818061C464FF7F2AE0FAEE9FE91586F6A799E1983F6E273089</stationID>
+ <name>NDR Info</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>94.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449853AB8D25F6844D668828E2EBD35386BF1C2461A8795D66AABD1A4677D37514F2E</stationID>
+ <name>Jazz Radio Berlin</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>95.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449857D431560F596501C31E05A9DD8B394D41C2C889435EA762F48C88606A53E262A</stationID>
+ <name>N-Joy</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>95.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449858BD6D4C3072A250084A85E063130997966BB778DACE3D055D69B71927E96A6D8</stationID>
+ <name>HR 3</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498557D51829D66B44C45EC6024301212D2052B214664837E434083F83F1F94B3BC4</stationID>
+ <name>JAM FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>96.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498585966F5EAE940D16E4724DF75F1E3C8D34282911BEF42375600379253BF18906</stationID>
+ <name>Bremen Eins</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449851FD8091C2E75271E0A2B3478B583969CE4CEF17E5AE8035DCDD610C09850A284</stationID>
+ <name>WDR Radio 5</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985199464CA686CAA0B6D46FB7C00FFE179CE0A23C30B13CC60B2E9A544689EE322</stationID>
+ <name>WDR 3</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>98.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985071060A877C96D08F4A8806B3410966F68683C3BB54F14EAA8528C2FD6478AA9</stationID>
+ <name>NDR Kultur</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>99.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498569E3BA4747F3778C4861E745E1494D600924F3148AC1228BF3DCBA34DAA0C913</stationID>
+ <name>FFN</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>100.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985CB320C5ED3BF658DAA4785A1EAF58312ED408C46E6D3FD425BA47591A372AA34</stationID>
+ <name>WDR2</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>100.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985E0E39FD08D62AB15924E7F9256A517E530000DA712C1C5447121330D01EC9EC1</stationID>
+ <name>HR 1</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>101.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985477C1ED6658C44E765D4006EBEC2A1AB1A1E719D7FAD2224F680F448B6288000</stationID>
+ <name>Radio Flora</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>102.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449855F8259D76BB84DEDDB53CDA18D16237AE77C4A23F0424FD210AAD0E8B4642C8A</stationID>
+ <name>89.0 RTL</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>102.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449852BDA6F04683FA5FF481C21C8F7588F8AB5E6D1867C9F626BD5ABEC949FF2738E</stationID>
+ <name>Radio Saw</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>103.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985FB5A2C68970CEF84B72CB64A6F0C00533A3F732E2D0B08193098DA452985A3FB</stationID>
+ <name>Radio 21</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>103.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985D78CDC5C8EA5A1240402C3A2BF01106D31ADFE173E4C87799A786EBE18A90F0D</stationID>
+ <name>MDR Figaro</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>104.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449852E8366B070C089320D178778EDF2CF04946B286C2A37DD42B480813C6936381C</stationID>
+ <name>BFBS Radio 1</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>104.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985B973DA85DF969A564F82FAFA91FC146907C828567B05CD80D2DE932977C9BD79</stationID>
+ <name>NDR1</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>105</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985651984C9EDB9B2B96F493248A1723AECDDAFE5ED4BEEC3ECC4860BD63000701B</stationID>
+ <name>Jump</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>105.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985D3E0F37E6D87BCCA27A1703EFF97C70CBD2588CA0A07D96B93FF26270415CBF9</stationID>
+ <name>RTL Radio</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>107.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498592567F3E348BB4240E0B0FD8A0A3F75B57ED3A5577AFB9163BF2F9E1FF89BCE2</stationID>
+ <name>Sunshine Live</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>107.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/hannover-cable.krp b/kradio3/presets/germany/hannover-cable.krp
new file mode 100644
index 0000000..ef9a8ff
--- /dev/null
+++ b/kradio3/presets/germany/hannover-cable.krp
@@ -0,0 +1,301 @@
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Lutz Lttke &lt;lutz@dieckborn.org&gt;</maintainer>
+ <changed>2003-10-15T18:26:42</changed>
+ <country>Deutschland</country>
+ <city>Hannover</city>
+ <media>Cable</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1066236136EDA34FF071CF1663BF617776CFF8C93CFFEB6ECA15ACC44217FC6B3222776C1A</stationID>
+ <name>NDR 1 Niedersachsen </name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>105</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10662356833259C154DDD0F21BD632088BF572DD45C6BC22381C32DC72BF1C55AE41CCC451</stationID>
+ <name>NDR 1 Niedersachsen</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10662356584F0B71E0A4D3E2557704B311568EB0CB3627CD849AE871D1509D8AC6C1959BF4</stationID>
+ <name>NDR 2</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10662357518C19558337E3D158557F3916177A34314C98AB72F350BD4DCDFA0AA89349067E</stationID>
+ <name>NDR Info </name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10662359261AE1BBA376A37F16785EDC82FE55D5F43A215B847DD283ACC405C98B555423BF</stationID>
+ <name>NDR Kultur</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1066235457D3EAB9FAC8B34AFF11E7BC63ECBD9CEAF278792FE9B1A269BA95D548BAE2C9F4</stationID>
+ <name>WDR Funkhaus Europa</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1066235973E6743FDE9C349352399122E09DBD9039FBA094B9586A1B9347E9FA5C168029B0</stationID>
+ <name>WDR 2</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10662358945CEC3356F51D491534C95740886DF471D731CA41D4B24CFADFA82E9C68C53B70</stationID>
+ <name>WDR 3</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1066235212FBCAF131CBE4C863421FA8CCE6ACD1B4E5C827D31D71132AA3B8A776D720A79C</stationID>
+ <name>WDR 4</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10662358714B52C8C7F423A6944E4514F33C84AF076F9F2A9B30366CAF7345783EF3590611</stationID>
+ <name>WDR 5</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106623536141C1C4E12ECB60BC5D789D4BE27D995C3F3DD90BA1B174D227441A724DC98330</stationID>
+ <name>Eins Live</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1066235265A62C2F15E49E05FD22E747E9962E31F1C755FD5CE3A8456F3DBBC6A23B14902C</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106623533467216AC08AC03BE2D133AF1594EA8384067EEB5BC1FE10FCB90206A5800D5621</stationID>
+ <name>MDR 1 Radio Sachsen-Anhalt </name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1066236086DC55A4F8CDA9EBB885106D68765C5595994AA48241734B074076547EA1B52381</stationID>
+ <name>MDR Kultur</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1066235991C9B640029FDDE89DCB39D7A4F24F154A9FFA741D20840538FD3770277E0DFCD6</stationID>
+ <name>HR 1</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1066235632F511619C6A1C6F3CDCC4D5E4DE56082386E336FAF614447BA4F41083831218F9</stationID>
+ <name>HR 2</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1066235812EA509C36256394B68C8FD42EB0E0344EA6C1E1ADFC8D6CA2A98D46CF89BCCAB4</stationID>
+ <name>HR 3</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10662358502D876DEC3B34F6A7CC7C46054F829C130B6E7E4CC8493352A4C59325E604A70E</stationID>
+ <name>Bremen Eins</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1066235426A39DC80585693FC6538F0EF9932387A8289BD3CDBD261BF2C13EEBE4976F498B</stationID>
+ <name>Bremen 4 </name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1066235406D920B5EAE8A9657BA2D280480C3E4DA9D2F4F38444752977595E9085D1937AC7</stationID>
+ <name>NordwestRadio</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10662354757002F04771AF6666366672A6F645A5E3A0DED8EDD183FFF5F4E09788301B0FB8</stationID>
+ <name>Klassik Radio</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1066235501362D3A0BFA3C6FDEF20E92EF201ADE24548E7054721226C323CFAC66E631F94A</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1066235523F4EA8E3243394D200001643481737131C171B2EB0CD8B379C5C7D59BF4782894</stationID>
+ <name>Radio Melodie</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10662355836C73E1C64DD777A83EB76385134BB176C0B3B64E9F456DC54B02E61DF7EA5FBC</stationID>
+ <name>Hit-Radio Antenne </name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.85</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10662357714D4FB53AC3CC32AB658136D67431515F702CE0A3DDFDE81A67C1001CB6C3C229</stationID>
+ <name>Jazz Radio</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10662357953369E7AF24D4C9D00787E0A2A18A037E6FCF00AE972BE802938F6C4342D9E003</stationID>
+ <name>N-Joy</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106623582685F3FB9CDEC94B842E9CF7EB5C3E07C6A2BF1BB230654095B9E05B3412DD8BC5</stationID>
+ <name>JAM FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106623594392C5C04F37E5FA18079A5FEF6B137E16629FE6B6AE27E7008A60688D022F89F4</stationID>
+ <name>FFN</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1066236021D0FF84B560135E7157CF2649535BCADD7E4A16C205C174964147075E44996CD1</stationID>
+ <name>Radio FLORA</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10662360389809134C2644A6126B006BE50B9BB75A536CFEF3BAF09C7D083CC96CAF1962CE</stationID>
+ <name>RTL</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1066236055FD2CB582FE523F91471D74534F4E0EFD661B366C6B7B4EAAC657672768D1430C</stationID>
+ <name>Radio SAW</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106623607130DA2EC4D26FD19689CA27841188282268285B5AE9399B947A45E6E3D100F1F8</stationID>
+ <name>Radio 21</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1066236102572E4FD07940FFD89167066C3F55472A6814D2C142C06AB3F1CFB8DCE4F6EBF3</stationID>
+ <name>BFBS Radio 1</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1066236152890E46984B9286A3D552F35383D0D78DAC46CABA3A56AD8012E5CEE5522828E5</stationID>
+ <name>JUMP</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106623618086B1DE32AD9F372A10FF3759758C3E259EAD1388D6204CC430B88984279E71E1</stationID>
+ <name>RTL Radio</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10662361996705EB9B0B0468F6B6D0ADD4C57C761F2A1AE19B44FDD6B61CDFADADC5034AC3</stationID>
+ <name>Sunshine Live</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.6</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/heidelberg-cable.krp b/kradio3/presets/germany/heidelberg-cable.krp
new file mode 100644
index 0000000..6e54638
--- /dev/null
+++ b/kradio3/presets/germany/heidelberg-cable.krp
@@ -0,0 +1,222 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Frieder Ferlemann, &lt;Frieder.Ferlemann AT web.de&gt;</maintainer>
+ <changed>2005-05-29T20:31:54</changed>
+ <country>Germany</country>
+ <city>Heidelberg</city>
+ <media>cable</media>
+ <comments>frequencies as provided by www.kabelbw.de 2005</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>108145435115D523C9C39BCBC1119672B5A15877D31AD8BE9E55D1AAF96DC6272884C3685F</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1081454206CA22E9133070E9C95BF0A85B7C65E8CE3FAD6DDBE53344388169C3A45B127C3B</stationID>
+ <name>Radio Regenbogen</name>
+ <shortname>Regenbogen</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>108145443452C341106181E8C93A6786368D2098AF680FF781B2DC95589D676148263882FB</stationID>
+ <name>Radio RPR</name>
+ <shortname>RPR</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1081454211E739A9F1636D53337C2D3330ACF02B10232B414F808C2A94658739C696051AE6</stationID>
+ <name>HR1</name>
+ <shortname>HR1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>108145421273874C58D85F7400000B642E05647B29B8864C45A4CC344617EF31F4095C921C</stationID>
+ <name>HR2</name>
+ <shortname>HR2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>108145421443651BDE02C980C030DD75E2519EF06231C370B896DA6AF87236019287CD7712</stationID>
+ <name>HR3</name>
+ <shortname>HR3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10814542151A595049206F75E5D86C74280F96C326D38B0BCCB794A5B38029B50FD3D166E1</stationID>
+ <name>HR4-Südhessen</name>
+ <shortname>HR4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10814542202F2C2F75BFCE058C45FE05066406278A9F94DB7A40F45B92DCD68DC0A00175B1</stationID>
+ <name>BR1 Main-Franken</name>
+ <shortname>BR1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1081454221B92DE4AD9FCAC347C6E7DA842D7E1E380B4B7AFDC788260313CBD5E039C6181A</stationID>
+ <name>sunshine live</name>
+ <shortname>sunshine</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1081454223ADAAE00417DC9D8375B5571E5C7E5198BDE31FEFCB12698FA700EFA0E932D9A5</stationID>
+ <name>Das Ding</name>
+ <shortname>DasDing</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.85</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10814542258CE6CA5626B86C83DFAC440D56E8C13C9FD6C0A883D9CCD2CEF85C3EF396CA0D</stationID>
+ <name>Hit Radio FFH</name>
+ <shortname>FFH</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.70</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>108145422610CC13F2D8BBB0042E61F121AC926F9BFFDF48EFF79BA3BF1E5B5ADB2292D9D1</stationID>
+ <name>AFN Mannheim</name>
+ <shortname>AFN</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1081454227EAA110B3108F98CD60D7335A75C732C02904959CA5ADEB5C743774A4BC0DBCE4</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Melodie</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1081454228D6B94B50653EDBCDBBAECE53996B576D9A983163B2B3712E1BFCA54C38F3B02C</stationID>
+ <name>SWR1 Baden-Württemberg</name>
+ <shortname>SWR1BW</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1081454230A2A8A8CC1821D6FE62A3EC673876C01EA34469C8EBBAA2608DCE330DF06818B6</stationID>
+ <name>SWR2 Baden-Württemberg</name>
+ <shortname>SWR2BW</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1081454232FD2E244B1367D1BF360797C1761FDEFB79EBF9AA75CDBA3DFF948D7C84AFB6FA</stationID>
+ <name>Metropol FM</name>
+ <shortname>Metropol</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>108145423382F6694D31B96BD38404F12262DD3CC559D96A1FC2A7E808B296B6DF3900A5BA</stationID>
+ <name>Deutschland Radio Berlin</name>
+ <shortname>DLR</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>108145423497B3A15D582F71DCF271C0B6CA693CAD7CE3DE77D2EE387A0DDDBD628A4BBDDB</stationID>
+ <name>SWR4 - Kurpfalz</name>
+ <shortname>SWR4KP</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10814542379D6DD82F139B49210621E0343CF3B4868B80B0ECB1B3D4F047C464AC251881BC</stationID>
+ <name>SR2 Kultur Radio</name>
+ <shortname>SR2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10814542399450CDC98915EA13268282E2BCDB54A4260E0991F05F4BB58D82EA822B999016</stationID>
+ <name>big FM</name>
+ <shortname>bigFM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.30</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1081454241EBD490F2A1929069CA51ECAEBC1230F9FF00F4773F0144BA1D1E742C30D4C147</stationID>
+ <name>JAM-FM</name>
+ <shortname>JAMFM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10814542431F7DC76EC770927ADDDB21BBD8941462176042ED5D78CAE0C9BFB3610628CBDD</stationID>
+ <name>SWR4 Vorderpfalz</name>
+ <shortname>SWR4VP</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10814542463C0630DF515B83AF223A620B7CA56F36C9C116AA3DD2CB6D0C417B445898559C</stationID>
+ <name>SWR3</name>
+ <shortname>SWR3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>108145425214FC1DEB6A32F2135967B6692ADB7BF46966AFC9CA051E06E71594FC6458B1DC</stationID>
+ <name>RTL Radio</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1081454249D9E0517281CB03ED184036256C485CDFB33CFAC0126F96276CC428BD7EA04B93</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10814542559FAE13995DDBFB4E622A9FC8C1BF0966C946715A4813F912FB4C5C2C7FC260DA</stationID>
+ <name>bermuda.funk</name>
+ <shortname>bermuda</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.45</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/herzogenrath-cable.krp b/kradio3/presets/germany/herzogenrath-cable.krp
new file mode 100644
index 0000000..6c18f84
--- /dev/null
+++ b/kradio3/presets/germany/herzogenrath-cable.krp
@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Jan Simons, &lt;J.Simons@phy-nospam-sik.rwth-aachen.de&gt;</maintainer>
+ <changed>2004-04-22T06:32:18</changed>
+ <country>Deutschland</country>
+ <city>Herzogenrath</city>
+ <media>cable</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>108260271482C5B0297DFA240AF79AD2AA9A2FB62D7BCAC4242864BE34AFC2A065EC592B4B</stationID>
+ <name>Radio Fantasy Raeren</name>
+ <shortname>Fantasy</shortname>
+ <icon></icon>
+ <volumepreset>0.7</volumepreset>
+ <frequency>103.026</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10826027065C6D9756D3D1B705FD1700F46CCAF676A987DCDB67B07E786A8963AC9153346B</stationID>
+ <name>BFBS (engl.)</name>
+ <shortname>BFBS</shortname>
+ <icon></icon>
+ <volumepreset>0.9</volumepreset>
+ <frequency>99.7508</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>108260269478CC23BAB9283B6BE5FE22C9BF6187FB4B0EF0B9B87E4108C6DAF71AFFC0BB09</stationID>
+ <name>sunshine live</name>
+ <shortname>sunshine</shortname>
+ <icon></icon>
+ <volumepreset>0.75</volumepreset>
+ <frequency>94.6005</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>108260268086FA167E82832B0BCC14433D998925CEBDE5246E22DA095154D1318E39E692FA</stationID>
+ <name>JAM-FM</name>
+ <shortname>Jam-FM</shortname>
+ <icon></icon>
+ <volumepreset>1</volumepreset>
+ <frequency>88.7251</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1082602701C50463E1F8112D1295D2336104CF97443F8E4425BA99AC5C2C2546E29180ABBC</stationID>
+ <name>Antenne AC</name>
+ <shortname>AntenneAC</shortname>
+ <icon></icon>
+ <volumepreset>0.75</volumepreset>
+ <frequency>97.5506</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10826027116D8B19027586BF36038BB38742A3EACB840CDABC4D992B611B1A79D3AFB9D133</stationID>
+ <name>Radio Aachen 100,EINS</name>
+ <shortname>100,1</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>101.801</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10826027131D275F2A7782CA1EDE8CF3DEABBCC9DC9B88750BFE58229707B0C083E4E6F38D</stationID>
+ <name>DAS HITRADIO</name>
+ <shortname>Hitradio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.651</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1082602685EC0E5193CC277CFAE2D18684DE9C4FE84F2EC4DB6BCDFD59A6F8E0383CFBC36C</stationID>
+ <name>Eins Live (WDR)</name>
+ <shortname>L1ve</shortname>
+ <icon></icon>
+ <volumepreset>0.8</volumepreset>
+ <frequency>90.6502</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10826026873B0E2625875EFD73EBFD96106DC8E2EDC32A0627269D520A59C54C22782EDF64</stationID>
+ <name>WDR 2 - Aachen</name>
+ <shortname>WDR 2</shortname>
+ <icon></icon>
+ <volumepreset>0.75</volumepreset>
+ <frequency>91.4003</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10826026826011B2E4200E3A0DF2E513D966303652C41FC5355044F1D98F39F7F3E4335CE5</stationID>
+ <name>WDR 3</name>
+ <shortname>WDR 3</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>89.3251</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1082602684213B64CACE58C9D53B24178E46E4213BD49081BFFB1609C04874DD5884B85CA2</stationID>
+ <name>WDR 4</name>
+ <shortname>WDR 4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.1752</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>108260267972E473C4AED19F4E0CE97F1DE613A361C89BA5A7BEDB3CD2B423F6BE8F35837B</stationID>
+ <name>WDR Radio 5</name>
+ <shortname>WDR 5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.3751</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1082602724D104C3B25A8889BCA16EF56EF5A110F3689F79054E50C0217F6935A85295A793</stationID>
+ <name>WDR Radio 5 Funkhaus Europa</name>
+ <shortname>Funkhaus Europa</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.776</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10826026958FE5BFB95EC0E4AAE1D4401C08A5328DFA8D276A4E741AC803C39C2F2D9CCE0F</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.9255</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10826026788BB88A36C2A9487635BAB78F5CC1A9ECDDC7C0C7D859B3CB5897A719983BB157</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>Dlandfunk</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.9251</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1082602689F0606D2DE9335D92DA1B89AABEF75012E5571582DD700F69A1872A6BDDD11D91</stationID>
+ <name>SWR1 - Rheinland-Pfalz</name>
+ <shortname>SWR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.4503</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10826026932DA715302B346CC3E119E8D29D1B93F2325C4EF74C31B10A28B114718D9C0DEE</stationID>
+ <name>SWR3</name>
+ <shortname>SWR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.1004</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1082602691B1D82AB263D5838D954C4CAD574D7A72C5B0D2C0555BADCF07B63A55E7C758CA</stationID>
+ <name>SWR4 - Rheinland</name>
+ <shortname>SWR 4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.0754</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10826027053E5BD26D98E4D50CA982FAA475F1A651219F00305136BCCFBCF40003F0AFDE66</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>Radio Berlin</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.8757</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10826027037BEE5666AFA01E6A6587FF9AC366C9C8EFE92BFEDC92B6CB37E1333228985E13</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Radio Melodie</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.4507</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1082602708E1F1722FBD2B1939F6AD30E4DDBBC182CC4253B11A353B8196A73D9AF718A8EF</stationID>
+ <name>RTL Radio - Die besten Hits mit Gefühl</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.626</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1082602709069A4F9EE84DC12AB66FC430A8744E122153F4132AFFEF3C2EE0B19845956437</stationID>
+ <name>Belgischer Rundfunk (deutsch)</name>
+ <shortname>BRF</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.076</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10826026987CB24FDF2BED72A607131C1245F4FB7265BC2DAB2C905843280FBCE715D16CF8</stationID>
+ <name>VRT Radio 1 (Belgien, flämisch)</name>
+ <shortname>VRT 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.2256</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>108260270039F950CC8BDC827D521AFF92EB34040309C5752AA6E8ADDF2CFFCD781EEBECC4</stationID>
+ <name>VRT Radio Klara (Belgien, flämisch)</name>
+ <shortname>VRT Klara</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.8756</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10826027238952854C33FD8C75746860F08EDA12983788E652FAF30AE080A22F1CBFB605CD</stationID>
+ <name>Radio 1 (niederl.)</name>
+ <shortname>NL 1</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>107.326</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>108260271942F72BCAF02F0783D7A975FE113FE89C835F69BFE9629CA1701D82E3F0656EFF</stationID>
+ <name>FM 3 (niederl.)</name>
+ <shortname>NL 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.476</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>108260272125158F9A4D074CF6F68A7547B5C97B625DA466877099EC660FD26ED38AF10AB1</stationID>
+ <name>Radio 4 (niederl.)</name>
+ <shortname>NL 4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.526</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1082602716BB3927A55CA074D29E495BB290E1EB3A8FD59A8568A2E83ACB878341F6E839FC</stationID>
+ <name>RTBF - Musique Trois (franz.)</name>
+ <shortname>Musique Trois</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.026</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1082603401E5097E9F17FC744545075528C8C4A14B81228557035D92F2C75201447582D7A7</stationID>
+ <name>RTBF - Frequence Wallonie (franz.)</name>
+ <shortname>Wallonie</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>104.551</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/hilden-cable.krp b/kradio3/presets/germany/hilden-cable.krp
new file mode 100644
index 0000000..5015296
--- /dev/null
+++ b/kradio3/presets/germany/hilden-cable.krp
@@ -0,0 +1,229 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Uwe Kuhlmann, Uwe.Kuhlmann@web.de</maintainer>
+ <changed>2004-12-07T16:09:53</changed>
+ <country>Germany</country>
+ <city>Hilden</city>
+ <media>cable</media>
+ <comments>Gilt fr Hilden / Langenfeld / Leichlingen / Monheim / Leverkusen
+(any comment and thanx welcome!)</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>11164554447C7A3A0F624514389C357839C1469DC251A764CBF5D866D351D78EE30AB8F614</stationID>
+ <name>SWR1-Rheinland-Pfalz (87,6)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>87.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444889C1439440F49AC77886292DB0BEFB317497D8D5175CCE70ED0182C4D068EB6</stationID>
+ <name>SWR4-Rheinland (87,9)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>87.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444A9095573B3FA0955879E3A2912A086E15150FDBFB6933919EFA1E4AAE67A2D79</stationID>
+ <name>SWR3 (88,35)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>88.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444B84D52739964146EE00EC32D3392D1B54EDB227114AF124F366BF6AEAAF0C648</stationID>
+ <name>WDR2-Wuppertal (88,95)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>88.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554440D66C29A43D8A41E159F311765615C0003055519ADD9654EE5334C4BCE71EAD7</stationID>
+ <name>WDR Radio 5 (89,70)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444F3BAD4F0AD5F6121816E5530299F289FD958D07585C8675EB0F1DC9B62CF6CF5</stationID>
+ <name>JAM-FM (90,05)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444957B2298300DF46B34CA508A1A9A91A155E0B74DFF7014BD1A93E7B0439D8560</stationID>
+ <name>WDR2-Rhein-Ruhr (90,6)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444B4D89B5C05E037E0390494AF482B9C5DDBCDF23E5E5127E55B0BFD7AE1F54FB9</stationID>
+ <name>WDR4 (92,15)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>92.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444F79C9C14D38A068655204261E4C655D00938BAED697BA85DA66C5C4E96AC6EE7</stationID>
+ <name>Radio Neandertal (92,5)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544473A6FEA8DBEEF033EAA0D8DD3CCFD1F5231043D9FE0B9224F881B0A4A602EAD4</stationID>
+ <name>DeutschlandRadio Berlin (93,35)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>93.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444FE20AECB70E58268E9BC4BB1735FA1DE4C62562EFC8C17EE573B5D3D0BD513A3</stationID>
+ <name>Eins Live (WDR) (94,05)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444A1C448481106FF8416409FB20B1D2051EF8C5AF3CBD67C8DC2B44F7955CADC97</stationID>
+ <name>Deutschlandfunk (94,45)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544497AE69A7A3BE239CD64DB403B3046A7EC7C10C9316EBFD2E50453DFE5CB32EEC</stationID>
+ <name>RTL RADIO - DIE GR?STEN OLDIES (95,3)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554445616A75D3768FF70FC16BED8D9CCB85228F9AF8946751B1E5D98987FC9E45C25</stationID>
+ <name>WDR Radio 5 Funkhaus Europa (96,75)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>96.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544439C6E8FE4BD22A19BE812AC2A70138BF215B56861DF95D685129377A9906E033</stationID>
+ <name>Klassik Radio (97,05)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>97.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554449C745F8F3AEDCE0F95526E103E86DB59F063C14BD29C55D51873692B3C7DB9AD</stationID>
+ <name>Radio Berg (98,80)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>98.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444B5EB3E2E120A0E9DAC60DED47FF4096667376B96E6DD0863AC1E6316D6F0B856</stationID>
+ <name>Radio 3 (niederl.) (100,9)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444585DB292F3C263B507A9604182D6E25E58E582264E1DF50669E63227290BF851</stationID>
+ <name>sunshine live (102,0)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>102</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554444FE568F56462499CB0AA223846F8BC508533B47A6F0D36B251335F9D297505B1</stationID>
+ <name>Radio Melodie - Heimatfunk mit Herz Mnchen (102,5)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554444F99F6BD6477E60E94FE3CCB4E0C7445DE2F9A5D5B73B939ED8C272712909486</stationID>
+ <name>SWR2-Rheinland-Pfalz (103,05)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>103.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544417D362477E47C0C919B37BB7CD83B123909B600CACCA6DAE754CD03D38CA121E</stationID>
+ <name>Radio RPR Eins-Rheinland (103,9)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444315253C8223E388B3D3F4EF25D1A4736B68A506AEF7CC82C3771AF8A8AE2B1C9</stationID>
+ <name>Radio RSG (104,25)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>104.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444B23C3DC9871568F4C6A9CE5E71F1D0C26E02137EB231628C5338521CFCA18C3F</stationID>
+ <name>RPR Zwei (105,4)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>105.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444628DF23F1F53E9483EF70B69E349953C06CB57A77E362D1C4D607E42B49AB1F8</stationID>
+ <name>Radio 2 (niederl.) (106,15)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>106.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544482A8D222B7AC43FE8B3D9D9B8C8635A81CCBAC519CB83EF80C14D992F77A7027</stationID>
+ <name>Radio 4 (niederl.) (106,45)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>106.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444703A6326DFF17C9BC75123F387D5C818CF5FAE8BCC02EC474554AAB1880BA1E6</stationID>
+ <name>domradio (107,05)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>107.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+--
+Email created with Kontact 1.0/Kmail 1.7.1 on SuSE 9.2 Professional
+Visit http://www.Kuhlmann-Privat.de for having a good time ;-)
+--
+Email created with Kontact 1.0/Kmail 1.7.1 on SuSE 9.2 Professional
+Visit http://www.Kuhlmann-Privat.de for having a good time ;-)
diff --git a/kradio3/presets/germany/ingolstadt-cable.krp b/kradio3/presets/germany/ingolstadt-cable.krp
new file mode 100644
index 0000000..5d6486a
--- /dev/null
+++ b/kradio3/presets/germany/ingolstadt-cable.krp
@@ -0,0 +1,349 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Helmut Stult &lt;Helmut.Stult@arcor.de&gt;</maintainer>
+ <changed>2004-09-04T01:10:06</changed>
+ <country>Deutschland</country>
+ <city>Ingolstadt</city>
+ <media>UKW-Kabel-Sender</media>
+ <comments>�derungen zum 31.08.2004</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1069614158E38749449A47A92E3A17CC4389A52644B22A56173EC6354D3537B7A99AAAF69B</stationID>
+ <name>Radio 2DAY/radio horeb</name>
+ <shortname>Radio 2DAY</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>87.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10696141598A9D830680733AC7F8BE2CF06E7A9F48F67672A0621253965719F2319B1E9FEC</stationID>
+ <name>Feierwerk/LORA/afk</name>
+ <shortname>LORA</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>88.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1069614160D13DC85CE5096BA2038DD0C30CF31B591330E45AC7A3C57E41E7B2B1701570EF</stationID>
+ <name>Radio Energy Mnchen</name>
+ <shortname>Radio Energy</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>88.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10696141621B00B06604E80A3373D6ADB43BEE8D69D9A1DCB82799F99FCFEDBAD7053C2967</stationID>
+ <name>Radio Gong Mnchen</name>
+ <shortname>Radio Gong</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>89.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1069614164C1BE1A1479393CF0F65EA3EE719AE7C3C7CC4054F1490DD6ED408D80964F4663</stationID>
+ <name>Radio ND 1</name>
+ <shortname>Radio ND 1</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>89.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10696141654975A08D9DEE221921CE0CC051DBA10F0ADA26BBAE6251411EBA451094AC6F4A</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>DeutschlandRadio</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>90.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1069614167DECCE5B0FC36DB1E9604D8B7C28EB0631258139FC3ECB1627DE56D7F7EDEF071</stationID>
+ <name>Charivari Mnchen</name>
+ <shortname>Charivari</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>90.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1069614168ABBE10029D2D6F9169A8D95B5E2CA0EA7D6A23B27BA93815136FC91705494B05</stationID>
+ <name>Radio IN</name>
+ <shortname>Radio IN</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>91.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1069614171AC9657C1112F033B4A31AA238F40D585C1CBD100EF8D14FB1D65A3D5AF8FB6FF</stationID>
+ <name>�terreich 1</name>
+ <shortname>�</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>91.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1069614173911E90E71212DF83E3AC1E6CFF4C0E4963FB426D742ACB2B8AF1BBCC2AFB3488</stationID>
+ <name>� - Radio Salzburg</name>
+ <shortname>�</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>92.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10696141748DCB5200664F49C770206F7BDF5FD11EBD7C9FAE2AC01E4A0D7CF19FA23B89B3</stationID>
+ <name>�terreich 3</name>
+ <shortname>�</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>92.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1069614175824BE702CD03C32240A075B5AD3A834D02207E946C3499988C5F0256E4AE1CAE</stationID>
+ <name>Charivari Regensburg</name>
+ <shortname>Charivari Regensburg</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>92.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10696141771D243DB0665408CB524343AC3F4203D8B776936A6565D76861C3A881A810616A</stationID>
+ <name>JAM-FM</name>
+ <shortname>JAM-FM</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>93.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1069614179C7CC1F034FA75B16A652D559E294C736BE82513EDE5DA824288305EC4BBC9842</stationID>
+ <name>Rock Antenne</name>
+ <shortname>Rock Antenne</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>94.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10696141808DE8F4AA5DD0CEC38DC9BDCD406F46EFDB4EE2873F48CF85FDE61BD467249C2C</stationID>
+ <name>Radio Galaxy</name>
+ <shortname>Radio Galxy</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>94.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1069614181BA2AEFA1F636F9F52370698D582BDCE1C79DDB9C0F43D50E8071D3F493DF4B17</stationID>
+ <name>ANTENNE BAYERN</name>
+ <shortname>ANTENNE BAYERN</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>94.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1069614184FE91FA581E7C7DAAC937EB8DA5DB49D08EEF9825AA211C5F8F06B9ECC7D4DD53</stationID>
+ <name>Bayern 4 Klassik</name>
+ <shortname>BR4</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>95.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106961418672550E20A1D6731360E87774977F10AEDA420E07AEC5B030D663B30CC29A2DC6</stationID>
+ <name>Bayern 3</name>
+ <shortname>BR3</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>96.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10696141883B7B95A9C161A0F2FD37DD9289E9FAE8EE11A031E991FC83E838DDFF93F9FB5F</stationID>
+ <name>BR2 - Oberbayern</name>
+ <shortname>BR2</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>96.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1069614191C056C3E5AFC7BE8C72B648BBF743E8DECD8C5BA8F3904D060B0779C77BC556A9</stationID>
+ <name>BR1 - Oberbayern</name>
+ <shortname>BR1</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>97.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1069614192FD89B78AF4864B085C2F147F5E911EA681C77F7F11D74F2C1FC6AE1B82DA27D3</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>Deutschlandfunk</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>98.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1069614195A319FA715F660EFE5A8FC55191F3E9D7C6EC0D8C34073E96530B5007141EBFF8</stationID>
+ <name>B5 aktuel</name>
+ <shortname>B5 aktuell</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>99.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1071920689F0DA597673A8B15B8FA80C9D5E64E70F49C859B17A5AE6D312896571C12C449E</stationID>
+ <name>Radio 7 - Aalen</name>
+ <shortname>Radio 7</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>100.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1069614201213EEDE7CCB38992AFC5A405EB8E5D2809DA2A871D7D79045F33AFE5625C513F</stationID>
+ <name>SWR3</name>
+ <shortname>SWR3</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>100.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10696141965A94D96DBB2BF2BF55E999F6BA460B20CF27367C101352D4619F962BD48852EC</stationID>
+ <name>SWR4 - Schwabenradio</name>
+ <shortname>SWR4</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>101.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1069614200DD171025F974382820010748B3D1C46F40A8A273314276472EAAB4D3EFD30DF1</stationID>
+ <name>SWR2 - Baden-Wrttemberg</name>
+ <shortname>SWR2</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>102.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106961420286708C43B4EE25E839776453229C930FC4A102F109BCDE5BA6B2C4B4FE14AD93</stationID>
+ <name>SWR1 - Baden-Wrttemberg</name>
+ <shortname>SWR1</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>102.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1069615697C6387C86C2CC52C430F25A053B75ED58BC5F19F0DCAF0EF8E6F286EAC3283DEB</stationID>
+ <name>Cool Radio</name>
+ <shortname>Cool Radio</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>103.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106961420577C4DFD4E86CAC334400E9A2A1A7EE5BA6055B2C194A984B437FA27BA713E30A</stationID>
+ <name>Radio Melodie - Heimatfunk mit Herz</name>
+ <shortname>Radio Melodie</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>103.85</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106961420770776A42767D248156A3C69F519640D6F4025AC15FC426D82B859BD271A3B959</stationID>
+ <name>MEL IN</name>
+ <shortname>MEL IN</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>104.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10696142105582FC5A4F60C7001CAA8E119C99077B96A1048F13D91A3C0E9FF97F95658DB0</stationID>
+ <name>Radio Riverside</name>
+ <shortname>Radio Riverside</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>105.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1069614198D7DD894CC979C6C46DF193B0DAC8A6FD5B4B032E68DDAE4623D7F4B1887D04D3</stationID>
+ <name>Fantasy Bayern</name>
+ <shortname>Fantasy Bayern</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>105.85</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10719216996E32B5A003F331A806EAF1B74978458899457726981EC501593CBD69593153B4</stationID>
+ <name>radio horeb</name>
+ <shortname>radio horeb</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>106.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1069614170EF6F674AC44F35F0CE6647049125CF8700A7242B4B5A657F5AD7FE2177FA23DA</stationID>
+ <name>RTLRadio - Die besten Hits mit Gefhl</name>
+ <shortname>RTLRadio</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>106.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1094252811F782907B8B9084D2DE25657228B73F5256E7AAE1CD7190A9635A4A1CC13D95E6</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik Radio</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>107</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1094254128CA0FDBCC07BBC2B0B3743F72DC4AD5582640AF15AA4B68045837315D0CC71F22</stationID>
+ <name>sunshine live</name>
+ <shortname>sunshine live</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>107.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1094254155B52E34332F56694747022C8906EF685DFAE9261C94808827BCFE9EBE3C0A0064</stationID>
+ <name>Radio ARABELLA</name>
+ <shortname>Radio ARABELLA</shortname>
+ <icon></icon>
+ <volumepreset>0</volumepreset>
+ <frequency>107.9</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
diff --git a/kradio3/presets/germany/juelich-cable.krp b/kradio3/presets/germany/juelich-cable.krp
new file mode 100644
index 0000000..ebc737d
--- /dev/null
+++ b/kradio3/presets/germany/juelich-cable.krp
@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Frank &lt;frattus@t-online.de&gt;</maintainer>
+ <changed>2003-11-13T21:07:39</changed>
+ <country>Germany</country>
+ <city>Juelich</city>
+ <media>Cable</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1068753643AA7E30ACFD9A476D4A437323B450ADC3864973668543818FF76234E9C95521E9</stationID>
+ <name>radio rur</name>
+ <shortname>radio rur</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068753646626E3A24359689CD0BAEF042E249B31F100348FAD2819767FD6C36A94AA4AC21</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>Deutschlandfunk</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068753649A6C9F7126044726E73EB2D89DD1D88C4F57B737C68B6FDAF6AF51A74220AFE66</stationID>
+ <name>Klassik radio</name>
+ <shortname>Klassik radio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10687536540EE93662195AF8BB49F689E61A939B54C82D6BCDDC9958F12947A65FEA88881C</stationID>
+ <name>sunshine live</name>
+ <shortname>sunshine live</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068753669E81660672193381EFE72FC002EA11338CC4D7E1C7CD613225CE2C39D2777D4A9</stationID>
+ <name>SWR1 Rheinland-Pfalz</name>
+ <shortname>SWR1 Rheinland-Pfalz</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106875368067B75B0E0502FED5BED74C1C58946F49F7C03B8784A1C327E1CF1671EC5FD2F7</stationID>
+ <name>SWR4 - Rheinland</name>
+ <shortname>SWR4 - Rheinland</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.85</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106875368285CADD25FDADFB15A23FC4A28808D695FB776EB89700AF21AA949653B713C831</stationID>
+ <name>SWR3</name>
+ <shortname>SWR3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068753683F1DFE498043927D38B6EC7EE0E60C751385FA3BE1B39096E2E29557458B444E8</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Radio Melodie</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068753686BCB977A9FFA7EC59BDEF46124AF23DF61D60339F51DC68674002B94E693030E3</stationID>
+ <name>RTL</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068753692A20D95306D9A5AFFF992CE4A4272C9191A5D99828E8590F1A34D673FB9588145</stationID>
+ <name>Radio 4 (NL)</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106875369491CE0FC421AC3E72B5A871C3FA35E588181AD578F251527005FBC59C058011FF</stationID>
+ <name>L1 Limburg (NL)</name>
+ <shortname>L1 Limburg (NL)</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10687537000594059FB705B7BF85493C6875FD79852D33AFAF5AD15E7618083AAC21C218C9</stationID>
+ <name>FM 3 (NL)</name>
+ <shortname>FM 3 (NL)</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106875370362BF42D14A60A16C3E0FF587C54DC9078ABD3D63AB3EBBC092E4D1A1E52C0847</stationID>
+ <name>Radio RPR Eins - Rheinland</name>
+ <shortname>Radio RPR Eins - Rheinland</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068753706F60887050441836EEFB37A9192189160EAAC2CB1DDDFCB8E4AD00A5ADDB5701F</stationID>
+ <name>bigFM - Rheinland-Pfalz</name>
+ <shortname>bigFM - Rheinland-Pfalz</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068753714F6BA66EA18A7BE51FE2151BC3C0FE07C6DBC6ADFB0FADF8B4B5D8522069C9791</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>DeutschlandRadio Berlin</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10687537152F9BD925A2A8CF702DB570265A2F18030AD9AAE5362229F34BF8A76DAF584FA5</stationID>
+ <name>WDR Radio 5 Funkhaus Europa</name>
+ <shortname>WDR Radio 5 Funkhaus Europa</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068753720FE987027A19353C31B1E746E8FA757484B1F1F0AC04A2C2FCA7BBBF4EAB94497</stationID>
+ <name>WDR 3</name>
+ <shortname>WDR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106875372376418B7C003E710771BF7BB00D603D51D1757353497F20CE7E2F4705339D03F5</stationID>
+ <name>WDR 4</name>
+ <shortname>WDR 4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106875372606DB91BA829FB8B0D5274AFC4B1EEDF916458F3928943F55F7FE96869D52C1FD</stationID>
+ <name>WDR 2 - Aachen</name>
+ <shortname>WDR 2 - Aachen</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106875372760B6242EC70753E58F042BD9055EDA6E2089F4F226670EC6BB65E4A8FFCE09ED</stationID>
+ <name>WDR Radio 5</name>
+ <shortname>WDR Radio 5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068753729FD12271090916FAF959A80EAAAC23C0D9E93A4B0DF6EDCB7DA6E62BCD47AFFCB</stationID>
+ <name>Eins Live (WDR)</name>
+ <shortname>Eins Live (WDR)</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10687537329127A733A4E137BAEE4F94F802676794FA45933248EE290F81988B95740CC08A</stationID>
+ <name>VRT Radio 1 (Belgien, fl�isch)</name>
+ <shortname>VRT Radio 1 (Belgien, fl�isch)</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068753739BE5420DC956D5F79584E3E1FB108857BA62090D4C2039441237D0BEEDAE49704</stationID>
+ <name>VRT Radio 2 (Belgien, fl�isch)</name>
+ <shortname>VRT Radio 2 (Belgien, fl�isch)</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068753748B00B33DD236BBDF70233081E4E1C00B841B184A295064F01FC16E574E6E4F349</stationID>
+ <name>VRT Radio Klara (Belgien, fl�isch)</name>
+ <shortname>VRT Radio Klara (Belgien, fl�isch)</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068753749435A55FF3DEA6992B62A1756ED1D94D0F6BDBCE2775C5AF82FBA905930B1F9AB</stationID>
+ <name>RTBF - Musique Trois (franz.)</name>
+ <shortname>RTBF - Musique Trois (franz.)</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106875374900CECA36BDC7ED30D5DE6C724F04E55CBE2AD70D54B3F78320EDA34185D5823F</stationID>
+ <name>RTBF - Frequence Wallonie (franz.)</name>
+ <shortname>RTBF - Frequence Wallonie (franz.)</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1068753753671D088F8314141A9BA598A5AE272EBAD1D544FE62A17BB361F8307946811142</stationID>
+ <name>BFBS (engl.)</name>
+ <shortname>BFBS (engl.)</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10687537554721CB9ADE7CF6E9B62175DC406A4DD3131AC29362A9FA756028E383D2013BCA</stationID>
+ <name>JAM-FM</name>
+ <shortname>JAM-FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10687537585F775089453705CA61FFE1CDB201542AB9EFC2C5C42D7AA644EE604E6B378A12</stationID>
+ <name>Belgischer Rundfunk (deutsch)</name>
+ <shortname>Belgischer Rundfunk (deutsch)</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.2</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/karlsruhe-cable.krp b/kradio3/presets/germany/karlsruhe-cable.krp
new file mode 100644
index 0000000..0a63e32
--- /dev/null
+++ b/kradio3/presets/germany/karlsruhe-cable.krp
@@ -0,0 +1,332 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Dietmar Steinbach &lt;Dietmar.Steinbach@t-online.de&gt;</maintainer>
+ <changed>2935093-02-28T00:00:00</changed>
+ <country>Germany</country>
+ <city>Karlsruhe</city>
+ <media>cable</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>106876160559592840FB26CBB14DFE76A75BCC4D055F50E8F82BE294DE001C6D916A942DB7</stationID>
+ <name>badenradio</name>
+ <shortname>swr4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068761605C3EE6A9E25B5640D0F2FF31CA49D96AD92BF5A790709B3D630BC2FE7997E0627</stationID>
+ <name>Kurpfalzradio</name>
+ <shortname>swr4 Kurpf</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.625</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068761605913BACA33D4BF13F4AF24A15C5E12E7A8B074C778505D67A185DDE777B1A8A4A</stationID>
+ <name>SWR1 BW</name>
+ <shortname>SWR1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10687616057DA199FCB3DFB439A1F1FE5058CA6619BE9AEB198A8BBD470A93823DDAD5F700</stationID>
+ <name>swr2</name>
+ <shortname>swr2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106876160524CB8C1EC0DFF188C8C1E1626D9A060645A88D5509E2518251184EB070DACE14</stationID>
+ <name>SWR3</name>
+ <shortname>SWR3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068761605E64B97579B1F1712068EE9506D028C1A696FD8F72561F66CCA2FCA44929B3F45</stationID>
+ <name>antenne1</name>
+ <shortname>antenne1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.3125</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10687616053358DCDA5EFD1BF2AF09F70B36F83A8A2103210084B646D74DB97919235F463B</stationID>
+ <name>Europawelle</name>
+ <shortname>SR1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.4375</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068761605978CAB69926D95AE0362861821E3FFB9F0B44A34B3E39A23A01D267DE636D3E1</stationID>
+ <name>BR4 Klassik</name>
+ <shortname>BR4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.1875</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068761606F568645D90EB23760256DB86DDE08E7C79DDDCC53AB195918832B4EF4EE028AD</stationID>
+ <name>HR1</name>
+ <shortname>HR1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068761606B3351A81C285DA8AE3F18C27A9FAB4F0D1934DB955691413C19825151687169A</stationID>
+ <name>HR2</name>
+ <shortname>HR2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.8125</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106876160629248545275C0775531716B56176CEDB78ED05DC6A735747992DA5E04489D1F9</stationID>
+ <name>HR3</name>
+ <shortname>HR3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068761606C015456DBB0182B2AB1DAD9C8C68A0028EE71933131B71F439F9420D1900C8A4</stationID>
+ <name>HR4</name>
+ <shortname>HR4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.875</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10687616063B96ED422D40C3752EE89EDC1A5D473D1504CADADB7CDEF75E0B28DC8FC0BB2D</stationID>
+ <name>RPR1</name>
+ <shortname>RPR1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106876160629A9E1C9DD84A8BE3710CC46DD80A44A8990332C6FCA028E241008E465BCB85C</stationID>
+ <name>RPR2</name>
+ <shortname>RPR2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.625</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106876160643796682AA448C9362D008E61317163944D6A4C868CC50853A6019CD7FAF3459</stationID>
+ <name>RTL KA</name>
+ <shortname>RTL Ka</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.6875</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10687616065C3BC892515F8A8079AFDEA2AD20D540F05A25CEF48CF2D937D71CDF3C84D491</stationID>
+ <name>Regenbogen</name>
+ <shortname>MA</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.1875</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068761606C50C49938E0B6F3669B0DFFB3E01AEBD0F7F0845B4D67FAC3A3ACFF9B7F50E25</stationID>
+ <name>Radio Horeb</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.0625</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10687616067550969A9D25AF15C38FC05EADF62D8C7974C4B2804CF60A86765FEB2663DA5A</stationID>
+ <name>sunshine</name>
+ <shortname>sunshine</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068761606CB8950E1EE6637CC2691872524F320C777037B61B1EE05051F96D84F75A919D0</stationID>
+ <name>big FM</name>
+ <shortname>big FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.625</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10687616069B705485E153630B6301CE1043A6ACF52E0A39375AAAFE4B6AA19161A8728122</stationID>
+ <name>ERF 1</name>
+ <shortname>ERF 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10687616068501BC21847B032295875BB8044DF8E87D9FCC50461EB32119CBEEBF02E88AA3</stationID>
+ <name>Deutsche Welle</name>
+ <shortname>DW</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.062</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10687616068668E99ACF074EAE8C9B05B499D7681CAEF823A5BA604A3496C9013B4F102971</stationID>
+ <name>mdr</name>
+ <shortname>mdr</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.438</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106876160604C43AEE8C9D37CF99AC7FEDB0AE30E900656C9083B1C52DA54DFB8593A43045</stationID>
+ <name>Jam FM</name>
+ <shortname>Jam</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.875</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10687616066D425DE4AC52AEE5592E1430F1C48211D57BA6E6B26CB8C151DA060D72685BE4</stationID>
+ <name>KlassikRadio</name>
+ <shortname>Klassik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10687616069EA2ECEE7FC5C905A5FCAE572623BFBC625BDDD75C4BC3BC15BE25FEEE6753D8</stationID>
+ <name>RTL</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.688</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10687616067BEDEF29182392BD4F9023E45B8A795182EC6E35CB5D3FD5D8BD45E9D36DB290</stationID>
+ <name>NDR</name>
+ <shortname>NDR</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.188</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068761606590DAC1E3398BB061363C72FF3C2940E0296EB0E8C588D4161589AC877F54687</stationID>
+ <name>Antenne Bayern</name>
+ <shortname>Ant. BY</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068761606ACAFE685CE17FAB48B5BDE91F245E994AD290F7329FA0E15E002B8FB6BCDA5C1</stationID>
+ <name>Radio melodie</name>
+ <shortname>melodie</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.062</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068761606E258715E38BB130C4C3F89EA3D2059518DABF79490DC941F263627EA2ED51CE5</stationID>
+ <name>Deutschl.Radio Berlin</name>
+ <shortname>Berlin</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.375</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068761606F6E4DF652515050E87D7A7B8C83CBD0CB2C71B7B2CD01791C8AE7FF8FB286EE3</stationID>
+ <name>das Ding</name>
+ <shortname>Ding</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.688</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10687616063AC0C17D8ECD4E785E9F6AA408CBD093F22D7574353E9620A18DDDD2CC229C9E</stationID>
+ <name>DLF</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>108</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068761606325514D3FD07A39A215757F2B3082E5A53EF4931CDDC4C6BAE72AB2D2EB2B8E9</stationID>
+ <name>France Music</name>
+ <shortname>France</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.188</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106876160684036C50B92E9E62A683E33AEC9D1CD48101660081EC5BB670BAD7E9462D4A31</stationID>
+ <name>France Inter</name>
+ <shortname>France</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.4375</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068761606412DC63C8FC984C7FDBE8457F98B431A64371847FEC80D3C4B89F28B89E7133C</stationID>
+ <name>new station 10</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068761606D74B0633143E7C414487E41EEE4DBDF1746209E2A3765A32FD720C0311F63A50</stationID>
+ <name>new station 4</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.625</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
diff --git a/kradio3/presets/germany/karlsruhe-noerdlicher-landkreis-cable.krp b/kradio3/presets/germany/karlsruhe-noerdlicher-landkreis-cable.krp
new file mode 100644
index 0000000..93b3b48
--- /dev/null
+++ b/kradio3/presets/germany/karlsruhe-noerdlicher-landkreis-cable.krp
@@ -0,0 +1,331 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Dietmar Steinbach, &lt;dstein@onlinehome.de&gt;</maintainer>
+ <changed>2004-07-02T13:11:40</changed>
+ <country>Germany</country>
+ <city>N�dlicher Landkreis KA</city>
+ <media>Kabel</media>
+ <comments>kabel-bw ehemals Ditra</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>108876541890EFA49118F36EB81214381BCB185B31C9BDE314BE96216DE92BB3E0E1744B18</stationID>
+ <name>Querfunk/Lernradio</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10887654180D6FF85050E56D08B35F6880C18BD8A97D035E1E5A60AAFAD0B99ECC08A3046B</stationID>
+ <name>SWR2 BW</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.0001</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10887654197E31934D566F8E6DF6F8A36B2AAEE20075025E193687D41C13B4C106AD957CC1</stationID>
+ <name>Antenne1 Pforzheim</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.3001</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108876541925A085890A4B57D1541790E9D8A7CC598B828BC4C4087B53A0E1D13CF54B03EB</stationID>
+ <name>SWR4 Kurpfalzradio</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.6001</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10887654207557F582A990939B6794E446FF89E861058D2976AD62E9FA20D642A57DFC5F8C</stationID>
+ <name>SWR4 Badenradio</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.2501</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1088765421DB90AA1F3CE710E1071827709BA6F5C30DBB4B0E2B88D08B63B6D4E7D7EFF1D5</stationID>
+ <name>SR1 Europawelle</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.4002</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10887654229CDE342ACBCAB135AA20B24BAD1691E6792BA30C182D959D9A70EF79D583207F</stationID>
+ <name>SR2 Kultur</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.7002</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10887654220405EBCE8B77B50FE19E015DABC3D5DB0FABACC802C9A9C511BEB4FEA3531325</stationID>
+ <name>Bayern4 Klassik</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.1753</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10887654232D03B32C5FD10988204824BE378922E6151CC2BCA24F7319E319DF3767DE0C08</stationID>
+ <name>SWR1 BW</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.7503</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1088765424FF06B3D0C51D60247F54C7087FC650D7D697B033BC729DDD47E7E011FDA8A647</stationID>
+ <name>SWR3</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.0253</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108876542469E0B1921713D54688B7F949B1087F47227A11BAFDFEFA254B7D77A90847C2B0</stationID>
+ <name>hr1</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.5003</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10887654257BE7C9251B908275B668FF7016B5FE7BE722084DB90CACD1A9320E74F3D16E61</stationID>
+ <name>hr2</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.7754</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1088765425ED84931C1A8BCC265726F5E4B271E8B41128DC487A5C94F9CAAD3B21F1D28EF0</stationID>
+ <name>hr3</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.2504</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1088765426742548F2537718BD31C54078B5BDE43ADC7D7071614242996417CD46C3063B09</stationID>
+ <name>hr4</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.8504</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10887654277881784775A83DC2EBE31D0D45CBBCCA404F123B5FC2F14763C08C74C1DE286F</stationID>
+ <name>RPR1</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.5255</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1088765428FB5CFA117F9A090CFD7DCF5AC440D7E211E942226F3B09F95C427E48DEB7E57F</stationID>
+ <name>Radio Horeb</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.0505</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10887654298CE1FE881A7C20612DF75CAEDC3DAD251DBA9364F1F889063CFF00415305E27B</stationID>
+ <name>RPR2</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.6505</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1088765430A5EF13A0B4FBD29318263E2F155BB00A2747EFCA03B87B5F27E95859D3B84A06</stationID>
+ <name>Hit Radio RTL KA</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.6756</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1088765431BFEC9C7E49B451B579A3CACF5C928E0B88B87C592CD435DE82CEBA48C035252E</stationID>
+ <name>Radio Regenbogen</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.2506</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10887654324931182565A12D06B176A42A2BA01460A796559367C271203593C8506B8AEDC0</stationID>
+ <name>sunshine live</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.7007</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108876543327213B41AA4494FF9581DC0E641CEAACBC3FC11E45534A40D86C7970F2A7D821</stationID>
+ <name>France Inter</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.5008</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108876543444110705FB3B2AB75992AC8ABFE20A1AEEAACFE877DA3726AED38B6155FFDB97</stationID>
+ <name>France Music</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.176</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10887654351519762D5E36E08903B67B2457F510514957B2E818605FB9DA5ACC3D7968557E</stationID>
+ <name>big - FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.576</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10887654375848A37483E53FFA61E8C8A55AE0488FD23C1EECD844331BD463D5BD0B209BB4</stationID>
+ <name>ERF 1</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.476</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1088765438F9F7B5C6FE5E3B17B51B6754C96853E2C3B5AD0130A57DF3F21DBBCA880F105C</stationID>
+ <name>Deutsche Wlle</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.026</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1088765439894D836AB228EF83252F1D555824C65A7C282935B26BEEA56D0D932AE8E52653</stationID>
+ <name>mdr - Sputnik</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.401</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1088765439822A65494B9864E873F9CBBA1C058192661025F29C72622E033B5A526543F5D9</stationID>
+ <name>Jam FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.901</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1088765440D0BD52470C47AC2313B450BE9A5D6F1DE2870E0CF25D35B265153DC082D4748B</stationID>
+ <name>Klassik Radio</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.351</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1088765440909C98860AD9E66C4BD2726C996F50B066EBA62DF89B59F5A5D4EB66AA7C3B2B</stationID>
+ <name>Eins live</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.651</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108876544244B7E7AB0F32AFB9F84F2A3A2E9F36081AA75A035CB20E4B54385610E955BA1A</stationID>
+ <name>RTL Radio</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.676</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10887654423668939D79FB4ED9DC86D15250A46EC497255F49ACB8AA713AF379D85D9DC9E5</stationID>
+ <name>NDR2</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.176</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10887654434A981681C0D8C62E6AD951B00E4384749090AB63689B2A968DD8DD652FD1FC5F</stationID>
+ <name>Antenne Bayern</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.776</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1088765443A20119809E44680140ECB1B3FB4C2612ED2BE50796B550DFA8E5C7703C03D546</stationID>
+ <name>Radio Melodie</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.051</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10887654443BE682E9E66E84E48924844F2F0413D6747E3338DEDBC28FD7BA6219DF7C4151</stationID>
+ <name>Das Ding</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.676</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108876544593C2B24BBE93886F0B77B4B85CC0BBC6B3AC27B7809DF93BF2D58DAA5F5E4C11</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.951</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
diff --git a/kradio3/presets/germany/kiel-antenna.krp b/kradio3/presets/germany/kiel-antenna.krp
new file mode 100644
index 0000000..8937ed1
--- /dev/null
+++ b/kradio3/presets/germany/kiel-antenna.krp
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Arne Henningsen &lt;ahenningsen@web.de&gt;</maintainer>
+ <changed>2004-01-03T13:55:56</changed>
+ <country>Germany</country>
+ <city>Kiel</city>
+ <media>Antenna</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>107714498571B0B141358502FF6797B7AA604ABA2614CEE9D5FD7F925E56D7BE3BFC1D165D</stationID>
+ <name>NDR 1</name>
+ <shortname>NDR 1</shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985321E9F3F8ABC56EC849DDA189544C85130383491432CDD6F2A17DA811B566C34</stationID>
+ <name>NDR 2</name>
+ <shortname>NDR 2</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498525EE8E78391B4B12E7790F6E99FE0C9C0D9D83676D6BC6B9E2E4EF1E76718C99</stationID>
+ <name>NDR 3</name>
+ <shortname>NDR 3</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985B80E21D8B9BF36218396D5E996DFCB28004A5742E85E7645AFC24301FFD8E39D</stationID>
+ <name>NDR 4</name>
+ <shortname>NDR 4</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985F7C2773FFF2068556D6ADCFEDF3269AC5E4D6BE6E62021DA608318F926B9E9F1</stationID>
+ <name>N-Joy</name>
+ <shortname>N-Joy</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498525712D3C175A9FB5267EB99C43759C0BC496A49B2E2FA7CC71CC9FD0128D3F06</stationID>
+ <name>RSH</name>
+ <shortname>RSH</shortname>
+ <icon></icon>
+ <frequency>102.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449851CF544AD7F1BC08E9145F83ABC85AA831D4674AFA9875F4732CC59F3E8FC03F8</stationID>
+ <name>Delta</name>
+ <shortname>Delta</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449859276EA9D85D2E9C00B74973B2E7D8037E6505F67A285D457EB8BAB37980E3B7F</stationID>
+ <name>Nora</name>
+ <shortname>Nora</shortname>
+ <icon></icon>
+ <frequency>97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985ED66E1580FE7FD0CAF641685624EF6BD3BF6495C554E44D914810921863AFA10</stationID>
+ <name>Klassik-Radio</name>
+ <shortname>Klassik</shortname>
+ <icon></icon>
+ <frequency>97.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985A7D0C0FA20C1602376BA89948C47A5D420685CE5FFA4329D1062BD9D29E118AD</stationID>
+ <name>DLF</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498547DA96F8279A374BCC7D3AEE8442CA7BD3310CA5F01611C3C314692519636B2A</stationID>
+ <name>Offener Kanal Kiel</name>
+ <shortname>OK Kiel</shortname>
+ <icon></icon>
+ <frequency>101.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498590CC8F7CBDAB362DF314E351C9A089BC8E5C49C12947C4FB1826BC93C1B91744</stationID>
+ <name>Deutschland Radio</name>
+ <shortname>DLR</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449852B3B4893494B86B9DBAA29D16CBB0A5811BC3E392FD151AC9736EA15A86D9C57</stationID>
+ <name>unbekannt</name>
+ <shortname>unbekannt</shortname>
+ <icon></icon>
+ <frequency>87.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/kirchzarten-cable.krp b/kradio3/presets/germany/kirchzarten-cable.krp
new file mode 100644
index 0000000..19fe6f7
--- /dev/null
+++ b/kradio3/presets/germany/kirchzarten-cable.krp
@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Tobias Maier, &lt;tobias@pfadfinder-kirchzarten.de&gt;</maintainer>
+ <changed>2005-01-12T11:39:35</changed>
+ <country>Deutschland</country>
+ <city>Freiburg - Kirchzarten</city>
+ <media>Kabel</media>
+ <comments>This may also work for Freiburg. Got all data from: &quot;http://www.kabelbw.de/service/puek/puek.php?ort=Kirchzarten&amp;plz=79199&amp;typ=tva&amp;btyp=S&amp;bident=25912&amp;isneu=0&quot;</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385346589FA7744DEBE6F8C9150C97C31499ECC8327FF3838449D4034B318C48F48083</stationID>
+ <name>SWR 1 Baden-Wrttemberg</name>
+ <shortname>SWR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.6508</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853465183D660C419CF8EA80EF7D610B8F4A93B66AE49321C7F1E061CC45B28C1765A</stationID>
+ <name>SWR 2 Baden-Wuerttemberg</name>
+ <shortname>SWR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.151</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346C2952C98ACF25AE64A097B6156181B728C39D299F335D87D42D0C7E02F539CD2</stationID>
+ <name>SWR 3</name>
+ <shortname>SWR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.576</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534650F6F56ECE0EFE1BD47841941BC24879A44EEA965A3EFC2C403A9DE6B810031D</stationID>
+ <name>SWR 4 Breisgau</name>
+ <shortname>SWR 4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.776</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853467AB14C28EDBB6E737D964D8EFA0BA4F72280A9201EAED71DFF8FA6D37F94862F</stationID>
+ <name>Radio Regenbogen Freiburg</name>
+ <shortname>Regenbogen</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.7754</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853464A2B9385A4EB9981927340D5847C11AE431F3615087805C755F9BD58FFAE5DA7</stationID>
+ <name>Radio Regenbogen Karlsruhe</name>
+ <shortname>Regenbogen</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.0254</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853464BF8BD84BF035C610A278B27C14677A4DD96337F93570FAE8EE831A77FCDAF79</stationID>
+ <name>Radio Freiburg</name>
+ <shortname>FR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.8501</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346685660E1594B6D549662B63E6E539CDA04B9197B4D8DE1B95BA094473CFBE81A</stationID>
+ <name>Radio Dreyeckland</name>
+ <shortname>Dreyeckland</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.6004</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853463706275AE785233A1151E6731581174E361E186A85478D2E71B88BB41BB62D18</stationID>
+ <name>SR 3 Saarlandwelle</name>
+ <shortname>SR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.3501</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853464E8343AB0113CBEE963048B13C4C5954901C8D15993BE6BF67FAF1C95A9FFFB7</stationID>
+ <name>JAM-FM</name>
+ <shortname>JAM-FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.4006</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346F9359AB3844A3E8FF4E656B7DD7829AD86A884A060763989379FE774E6A3FC08</stationID>
+ <name>RTL RADIO - Die groessten Oldies</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.8007</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534681997ACC769C29D79D3EAD6F6B342BD01C549D0606C1DEEB7B736477FF1D8B80</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.2001</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346BF045C7519EB8CD0CB3FEEF5E85E3197137EF3C46A96B923CFB4DF13D29EC81A</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>DLR</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.062</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346DBE3A53B74367DAAB1266C1362793A39FF8424B18BA1FB4CF3A6884B78D48F2B</stationID>
+ <name>Oestereich 1</name>
+ <shortname>Oestereich 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.1875</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346BA00D9EBC795CA96016150236C9E66B26AB8772213AF0EA253C785E6777932AE</stationID>
+ <name>DASDING</name>
+ <shortname>DASDING</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.8005</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346512B072BD1C644B5B8DAB6D0FF5A5050EE4582E763498DF6B0745DEF1CB7E127</stationID>
+ <name>Oestereich 3</name>
+ <shortname>Oestereich 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.3006</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346C4BA32F836FE1C36CFC3AF2C9F6055B3FE2B1D3ABBC76BB9B3A8A2DA293C7A4E</stationID>
+ <name>sunshine live</name>
+ <shortname>sunshine</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.1256</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346B55D5E7B23BF5A983DA758630F42E862D04F679C94A14DD71683C6AC41AA8C6C</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik Radio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.625</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534688EDDF43E3755C126BBD2B574FDA46D1AE2913B018E220EBD22035D6A214FC19</stationID>
+ <name>Radio Horeb</name>
+ <shortname>Radio Horeb</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.6757</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853461A792125FB811635ADC13DC62D7284EFA0A5CFC4CA6C0F28E7FF5FACCC1126BC</stationID>
+ <name>ERF 1 Evangeliumsrundfunk Wetzlar</name>
+ <shortname>ERF 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.0253</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534622C2231DED4FCB4E3144C23717B285D175ABC22C08FC839925B42063057BED0B</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Radio Melodie</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.8755</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534649E77BE5E924E14DE0A636B28211C3795CFD1A1E0ABA6B41B6751A1D2F586FB9</stationID>
+ <name>Radio Suisse Romande 2</name>
+ <shortname>RSR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.101</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346819CF374041AE2204112BF924596DD533AEE0A3B965AD06272ABFE0AD9B8783B</stationID>
+ <name>Radio Suisse Romande 3</name>
+ <shortname>RSR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346A4382DD036570764D1FA706545B43DEBA6432FA5743FDE02E692FA75C913BACE</stationID>
+ <name>Radio France Inter</name>
+ <shortname>France Inter</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.0754</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853466295ABB2B044EB00EDC3ABBA7F6944695CB6D2FB2D733237B6DBE0B3374A5BCD</stationID>
+ <name>France Musique</name>
+ <shortname>France Musique</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.0625</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853462E0CA21BB59AF268A4B6172B5897B1CD6EB6C03ED26DF453A0387BD4410868F4</stationID>
+ <name>France Culture</name>
+ <shortname>France Culture</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.226</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853461C4606E647A461665D2B2CEDE380F7B2731F927487D842F203CAA1A3AC19E537</stationID>
+ <name>Radio France Alsace</name>
+ <shortname>France Alsace</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.651</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346C5E6C85B61F123C46E5D2DD634E0BF01E7DCE4119427F946FA90A0EDFFC05427</stationID>
+ <name>HITRADIO OHR</name>
+ <shortname>HITRADIO OHR</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.3753</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1105526305F20F899BC8C4B35256465D22BF182DF115ED4792DB12C536172184B0A63D6447</stationID>
+ <name>SR 1 Europawelle</name>
+ <shortname>SR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11055263132A49351CD7D3C748D7D226233DC65D3677ED7BAF95ADD60B23D5B85A1462C357</stationID>
+ <name>Hit-Radio ANTENNE1 Region Reutl.</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.9002</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11055263668A18B174C5702A6BEA9E007F66F88B5E7957A41E74CBD2012031FDCF9B6B09C0</stationID>
+ <name>Radio Suisse Romande 1</name>
+ <shortname>RSR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.376</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1105526367F038933BA44200C94ADC4917E759BB474FC1D0C039791456C028A5BABAF116AE</stationID>
+ <name>big FM</name>
+ <shortname>big FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.651</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/klingenthal-antenna.krp b/kradio3/presets/germany/klingenthal-antenna.krp
new file mode 100644
index 0000000..b084841
--- /dev/null
+++ b/kradio3/presets/germany/klingenthal-antenna.krp
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Matthias Gruber, &lt;grubermatthias@gmx.de&gt;</maintainer>
+ <changed>2004-03-12T12:48:12</changed>
+ <country>Deutschland</country>
+ <city>Klingenthal</city>
+ <media>Antenne</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1079091999ACA8097B76B18504F556E9E30B136B605A9D76DD0297EE898B658CD36D450D14</stationID>
+ <name>Bayern 1</name>
+ <shortname>B 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.7377</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>107909200279B5A3B89F1329279BDFD397A6F31D65F84D671B70753BEB6BAB7DCC0FC01E76</stationID>
+ <name>Radio PSR</name>
+ <shortname>PSR</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.9878</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1079092006B9C6F15C43E326124E5BDE5E6F2CB095EEB598D9196448B7C097D8D06A166C1B</stationID>
+ <name>Radia RSA</name>
+ <shortname>RSA</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.6754</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10790920126070EBD21DB86B805216F2277BE55C808407D38651D8FE8486696398CBF130FC</stationID>
+ <name>Bayern 2</name>
+ <shortname>B 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.0131</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1079092018AE935AE35997FA220C527F68B37E74F4E9A7B03EC85D2D3F401689CB7F39E138</stationID>
+ <name>MDR Frigaro</name>
+ <shortname>Figaro</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.2882</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1079092021AB864A0DADECBFA986D8CE684F89E1B806C75109D343BC6FE04EED372F1C5CDC</stationID>
+ <name>Bayern 3</name>
+ <shortname>B 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1079092023207A59AD6556BE0BB05D735792712CCA136F7C49E368FD1297628C1D089879A9</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10790920307505FA9919ED4B07A5F330455AB48F1431A9350142F8C655A866152EFE86FFD1</stationID>
+ <name>Antenne Bayern</name>
+ <shortname>Ant Bay</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.276</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1079092036C35B0A983639F1BF38F9A34878E9F1CC749CBB04C51E6AF6B3F6364769C971E6</stationID>
+ <name>Antenne Sachsen</name>
+ <shortname>Ant Sachs</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.039</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
diff --git a/kradio3/presets/germany/koeln-antenne.krp b/kradio3/presets/germany/koeln-antenne.krp
new file mode 100644
index 0000000..3bc3789
--- /dev/null
+++ b/kradio3/presets/germany/koeln-antenne.krp
@@ -0,0 +1,305 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Felix Petry, &lt;felixpetry@gmx.de&gt;</maintainer>
+ <changed>2003-01-16T01:42:00</changed>
+ <country>Germany</country>
+ <city>Koeln</city>
+ <media>Antenne</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>10666585942666E936B7A2A323B60B3A50C5F9DEFC3391933BFD4E8790506928B590EA98DE</stationID>
+ <name>WDR Radio 5</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.0625</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10666585940477CF36A6281F53FBDC11CB1F3E9D799E6BDF69E95F2A09C9722D8ABA534FE3</stationID>
+ <name>WDR Radio 5</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10666585943E81F803A0ECBBC6C6A9298EA62379AE9A98D5ECEF7E0F5CCE5EFD1B802E3F6A</stationID>
+ <name>WDR Radio 5</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.625</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1066658594B5612FED9790102325F37C5DECC82B0FF80BC8A246C95361963417F25E9A933A</stationID>
+ <name>WDR Radio 4</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.85</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10666585947C0EEE0AA1D28B95FDDD4BBCFDB4423B14C5937BA618E1023917B1C0DECBDA46</stationID>
+ <name>Deutschlandradio</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1066658594FFA7E9BECF94133D1F525211920C751F8DB07B6CCBE187C9180A7FBD82614C3C</stationID>
+ <name>SWR Radio 1</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.4375</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10666585944542110BD8AEBEFA19BBE50538F017D121FD95EF4C2D0F490DEB3004731C488F</stationID>
+ <name>WDR Radio 3</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.125</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1066658594066AA0469E7F6D998622DB38467E1DBA0B98BC6C5EF5CD9BB81294199C7F2F2E</stationID>
+ <name>WDR Radio 4</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.875</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10666585941BEFEF92BA207E0C796C77F80D2D4E4CB584048F7F35F7049F0025EBB7CAC7E6</stationID>
+ <name>SWR Radio 2</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.125</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1066658594BDC1FCBA1F588B74039B5614D14D759112F301FBA9D329873DCB5E6199799361</stationID>
+ <name>SWR Radio 3</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.85</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106665859440CA60191463ECEED95EF4B287F5714C0ACA010E500188369FAE0F0E3F3A8FB3</stationID>
+ <name>WDR Radio 3</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.1875</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1066658594A406CC946B8B75C0AA3B669E9EF7D81A9E0A7D76FA423BB61D85F5A0A0FC3486</stationID>
+ <name>SWR Radio 4</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.4375</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1066658594769825E8B4E3D29E9EC538164C81A3E5A439C74A21574365B0F264F1751090A6</stationID>
+ <name>BFBS</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.875</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10666585944350A69DC6A46B3BAF3D64254073C2E24D7B353E835497984F1CF4D22011D489</stationID>
+ <name>WDR Radio 2</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.6875</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1066658594E5278EF558516687B51361B545AB1BBAD34F1E899952936A69D596EFB37587E3</stationID>
+ <name>Lokalradio</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.9375</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10666585946DDA05CC037FA1AC4B2422260B2FFFB852326356C9C64ACF008C1FF69E47CF2A</stationID>
+ <name>WDR Radio 2</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1066658594A46A592F8071FA5B00C71AC367194B21E84D0ADD2C9332ABCAA6F2BBE1E49915</stationID>
+ <name>NRW Lokalradio</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106665859448129A908D5D867809AF5AA568E23D1678CAA72AB3D69318C575FF8A207BB2F9</stationID>
+ <name>Radio Kln Campus</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.062</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106665859462FC1EACFDEC9EBEBEE1D3174D64BBB7B031F5A1D6572FE81F8AAA537F30F42C</stationID>
+ <name>WDR Radio 2</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.438</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1066658594EE8691FA05A7E1ED64EBEA9B22EDA7C7AAD281788172607597B36CDB91E0FCBF</stationID>
+ <name>WDR Radio 2</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.062</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10666585948D605AF52C5C4949037E8CDDFBD29F09E9E92E0210C2E63A4D863728162F0145</stationID>
+ <name>Radio RPR 1</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.562</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10666585943885EB002FD2C955EB582E8CF4F1945E14296690CD813030D3DF1A0DB6269851</stationID>
+ <name>Radio RPR 1</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.125</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106665859408648708CA6375C7801EB3284EC354784957EF98524D9CFC1529E15959393F01</stationID>
+ <name>Eins Live</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.438</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1066658594C2709FDC4E7C3D76C1FE7CA06AA196BA4A5CB03B0A0FA63E4ACFD18DADF2C0BC</stationID>
+ <name>Radio RPR 1</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.562</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1066658594B72D4AD0D3922FA2E9E78D5C5781B18B00C8FE97D8FB85A7E69C017B5DCD9DBD</stationID>
+ <name>WDR Radio 4</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.438</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1066658594941A26017BF3CB71BB715DF911DF813B85272E4806DE6CACB39A947B7A74FB3B</stationID>
+ <name>RPR1 - Rheinland</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1066658594B6E8485402B5A8051158A77DD034FBBA1ED59DD5DE44E20BA00DFDAA0E4B6566</stationID>
+ <name>Eins Live</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.562</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10666585945DBC29DECE92D90B0F16085E3862B63963CEFD4E0D7F1A51860E724648279B14</stationID>
+ <name>NRW Lokalradio</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.85</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1066658594C9A8184B76F4F58BEA0F0744CDBC0667B669EA0FD67D3C46F1B4FFF489077277</stationID>
+ <name>Deutschland Radio Berlin</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.125</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10666585946605BDC10B2883646C1C5EF5DD97A2A538BCCE0E4C0D2F80CDE0D10F754D4A40</stationID>
+ <name>Eins Live</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.438</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10666585944A957BD42AEDEC8B05A641768D374A6C73FD2D59B18A4EC4D2C2A975C2AD06F1</stationID>
+ <name>WDR Radio 5 Funkhaus Europa</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.85</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106665859419BD6662252AB959520B0BED9ABD7F75BFBC2651945473A02E20DFF9DC0AAACA</stationID>
+ <name>NRW Lokalradio</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.125</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
diff --git a/kradio3/presets/germany/koeln-cable.2.krp b/kradio3/presets/germany/koeln-cable.2.krp
new file mode 100644
index 0000000..144cd45
--- /dev/null
+++ b/kradio3/presets/germany/koeln-cable.2.krp
@@ -0,0 +1,278 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer></maintainer>
+ <changed>2004-04-04T20:05:13</changed>
+ <country></country>
+ <city>Koeln</city>
+ <media>Cable</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10919654322C2EF9495C225621B9F02F38D65CFC19F781211D908E273732E406391CD83D79</stationID>
+ <name>EINS LIVE</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432DBB1C47689A796F5A1C31D13160E84E4B0B2B2BCF238ADFCD56D5291ECBE7D34</stationID>
+ <name>WDR 2</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>98.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432BEBF709E0B4332DDBCB8F94C34EE848CF5BEE1A4F28AC37966378C7017DA1BE2</stationID>
+ <name>Campus Radio Köln</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>90.19</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432E620D2DEA57DE8D3425869D9B61FAE8A909EBC1722C46E9FBF9B76D67ED16064</stationID>
+ <name>WDR 3</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>94.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109196543276474D50DC0126736B1119DD90EC0AB7BE3055817859732721E8D84396EAD0F4</stationID>
+ <name>WDR 4</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>91.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432C0D8D51BEC7FF0F3D80EE649446D9DBD6C644D5B40BBF847B78C06DEAE0528A5</stationID>
+ <name>WDR Radio 5</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>95.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109196543202597F652196A8D0009727B698654FF01A73E446650AB4B0F7D78128268F10BF</stationID>
+ <name>WDR Radio 5 Funkhaus Europa</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>99.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432CCE146C86E2248511CF3373E685BDA8F54A8D8CC97C5C9CD56039CB4F5943CC9</stationID>
+ <name>sunshine live</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>96.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109196543239FBEF8DF8476111DEABF8D0BCA918F95118D048B7DE2C7B29068F8134ACE3A3</stationID>
+ <name>Radio 2 (nl)</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109196543260F8362611E2DE6ED44C89DC9C4F1FD21EF05EB004965D2981143F56B1905E10</stationID>
+ <name>Radio 3 (nl)</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>96.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109196543257DD7903FD0234A8AF37A048D3B04E781700487DF5F5584566C87447A47EC618</stationID>
+ <name>Radio 4 (nl)</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>93.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109196543262A91C8A52F694C2297CB9033645697774D7CE670E5EB3C346AABA88579E091E</stationID>
+ <name>VRT RA 2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>101.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109196543207D0720F7D31DA8771BA01EBAFF4F6B36550DB8DAA86DAA1A032F0EDCE5B0BAE</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>102.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109196543266466AC67416B83BD8FD516241243783C74023FD75DFAEAB17F8325BD1BCCDE5</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>89.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432D540169A28BE38B5BC636CC5958B619A5EBF736B6534AC1DE7BD3021AC5FDEB1</stationID>
+ <name>BFBS</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>103.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432C2CF129CEA931E111DA60CFC9D36C588FD72ACA92ABD44763DED1F050E820FE5</stationID>
+ <name>Radio Kln</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432520C12ECD249D970FE383731DCF2C796233E6A13D8EAFF413FE07A6C4FEDB6EB</stationID>
+ <name>DomRadio</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>89.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432DAA66E312D952479B2ECB430EE509F8625E0F64C3866C454AE02F2E272DE8A60</stationID>
+ <name>Jam-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>91.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10919654324719F08B7D922C9956CBC1794CF886037C6FE8210D0D44107D04DA2F323329AB</stationID>
+ <name>RTL Radio</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10919654327FC5DE92D726B62F116DC19AB42A5B9E50F4C2B6D9EE8CEB885CF5CD95743CD0</stationID>
+ <name>HR 1</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>106.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432EB0D627AD9EA1893AB97AF05E283F9818B9C5BC03A96828A824CAB2794F2422C</stationID>
+ <name>HR 2</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432AC1714188FE3DED94E17643578A3E62ACFD719E0B45742C3E2382DB18AEDEEB2</stationID>
+ <name>HR 3</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>97.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109196543242548D5CC887023C30BAAD21DEC259799CD610808DB84512ED0F5E0110243B96</stationID>
+ <name>SRW 1 Rheinland Pfalz</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>87.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10919654322B538342EF91D6B54D33F4DA945A72439271B8204D1BEEB61270FC81F43ACB36</stationID>
+ <name>SRW 2 Rheinland-Pfalz</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>90.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432F2368F7A2CD6FA43903E86319637E767C98EE31AA5AE1432E44AF7F9E45BA023</stationID>
+ <name>SWR 3</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>103.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432E125008DF90996BFD0997C7D3DE02B0A794DD3F6ADED22025500878964ED059D</stationID>
+ <name>SRW 4 Rheinland</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>88.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10919654329D3E62F7898B303285904EB4D7400A8051766199D279E9B4970DCE53AA35FFE4</stationID>
+ <name>Radio RPR Eins Rheinland</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>103.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432A4CDDD0064C0A554B3AD406A3ED8F335C8F9D5CC9530F8E9DF20350211094701</stationID>
+ <name>RPR 2</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>107.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109196543225A20F75CE0D6BBEDCE7AB30DB7459833A6C42A6250CDA2EACC66B8E938B3CAA</stationID>
+ <name>RTBF Wallonie</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>105</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432F06BA4F4401D1A6EF36F44CA98AAD37F8A400F039E8DAE1B5DA53083C0735617</stationID>
+ <name>RTBF Musique Trois</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>105.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432FD4E47D01E7BC6986097D73E0FCAA6D1E4E34D236DD8A2828FE00B70D05440D5</stationID>
+ <name>Radio Melody Muenchen</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>87.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10919654320ADB8A8DA2451E866A10421A346F0CECD55A0B9F270AB263D9DABCD1D62946A0</stationID>
+ <name>Klassik Radio</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>92.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432A0454782B1B958D30B59CD7FC2C02811E9EB63432F55469EEE5121577C35A39B</stationID>
+ <name>Belgischer Rundfunk (deutsch)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>101.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/koeln-cable.krp b/kradio3/presets/germany/koeln-cable.krp
new file mode 100644
index 0000000..1753b21
--- /dev/null
+++ b/kradio3/presets/germany/koeln-cable.krp
@@ -0,0 +1,289 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Jiri Kraus &lt;jirikraus@gmx.de&gt;</maintainer>
+ <changed>2004-07-25T13:58:44</changed>
+ <country>Deutschland</country>
+ <city>Koeln</city>
+ <media>Cabel</media>
+ <comments>Quelle: ish Radio-Programmbersicht</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>109069936812B3B40F059873F5404FFFA1B7E8981A3453E054CE6ACFD6E94C026F30D23AF9</stationID>
+ <name>Radio Melodie</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10906993707CB755D82F1595548A0AD484606D9621C4B964D60A38786F6EE7E0787C55A6DD</stationID>
+ <name>SWR1 - Rheinland-Pfalz</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1090699371D8E07EC85B6E13874F31440899BE81EB565738986E97B5078DD7599A7BB46190</stationID>
+ <name>SWR4 - Rheinland</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1090699374711F7E747369AAD88DECF254B4B977C2FFD2006A969F5DEE3FCA7290348C0955</stationID>
+ <name>RTL Radio - Die besten Hits m. Gefhl</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1090699376426F28EEDA1241EFC3292725068984EC55EF480A137DCDEFCAE161CA4CC97245</stationID>
+ <name>Deutschlandradio Berlin</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10906993771675C028089D5311AE7ECD39155CA7C152237404AB589D2245D7B553B5691DDF</stationID>
+ <name>domradio</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109069937839C73677C704B07A7895A1F55897CAD3331D6CEC545DED5BA3404E992DC63C8B</stationID>
+ <name>K�ncampus</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1090699380A11FCC7A5F85794766959EFC6C64B5042F76863696CDAEA60B9853E974A849BB</stationID>
+ <name>SWR2 - Rheinland-Pfalz</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.85</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1090699382F64210ABB9CF062E2A705FD624935570125715C6B5221E89B790DC28C851CBB3</stationID>
+ <name>WDR 4</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10906993831FC3B05A3564CA6EEE59E3E1FC6BD6D77CFCC5AEC3773C99596342629B76C8C2</stationID>
+ <name>JAM-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.7003</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1090699385B9AE9B5251970201EA22CACE311A951DA25B28F4C8364EBB4C88F094CB7A5BEA</stationID>
+ <name>Klassik Radio</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109069938868BA3271F98960279F89257335ACB50646315E4DF431E705C9FE1D559528CAB3</stationID>
+ <name>hr2</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1090699391821F9BAD7E2147D1AA78C8989CB6D8120E7E421022E883204E0B5DC84D36E291</stationID>
+ <name>Radio 4 (niederl.)</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10906993936CCFB78A658E4B6A067044C0EDE8FA550659DB4A1456002FB8BE1C357B08BD99</stationID>
+ <name>WDR 3</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1090699395B2DE314F9B0A1C97B9E9927B13B49A5E7829482474E2560B429C5F7511B116F7</stationID>
+ <name>WDR Radio 5</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109069939726B6AAA59736E6EB2AF615F773B7B6BAE151290ECAB277D97199EA455E77C4C4</stationID>
+ <name>ERF (Evangeliums-Rundfunk)</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1090699399C1DED2CC06B636793FFE568E6C6993FE1504369A504A062B23335ED5726BCAA3</stationID>
+ <name>Sunshine live</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1090699400805FC031C5A158B6B3CD00FCCD5A19AFA5DD60BF7944326692D816AFD522F6B8</stationID>
+ <name>FM 3 (niederl.)</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1090699403CBD8AF64E5C732D01B49FA941E5FCA9BAF865E84DBCAF8489E1116B6D9059490</stationID>
+ <name>hr3</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.6507</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109069940643D16EC328D3D7CB915DFA67D5CF9DA69BABEFAE3BA0B60784E723224EB54214</stationID>
+ <name>WDR 2 K�n</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109069940766F9832B721E252E891DCDFD27F14E0FD22CD9313363E2E0F60F27DB6316A638</stationID>
+ <name>Eins Live (WDR)</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10906994096D8CF3AA2546D077DCCCD93BD138D489A35C34B43470930508C5E20DC4859FE9</stationID>
+ <name>WDR Radio 5 Funkhaus Europa</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109069941183F584EB0A19311FF0D73DBFE99DD9C762D274FCFE4FD16CA0F5BF07D3A056EA</stationID>
+ <name>Radio 2 (niederl.)</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10906994147A68408C2AA009E93F3EADEE3F0B12677A6FFA487CDFCFEE618C983F8F56DBE2</stationID>
+ <name>VRT Radio 2 (Belgien,fl�isch)</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1090699416257A8ACC891F8CC2CB1B671FD22CD3AF4A7DD9A21CB1047E3D54C6F2181659ED</stationID>
+ <name>Belgischer Rundfunk (deutsch)</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109069941838635BB62E4879789236B826005D43F81D4F9A4B1BFABB6078D684460C8A5865</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109069942008B983A9C5FD7ACE29CB98496177FB95E6794CE3D0B5FAA9CF736D16836FC1A3</stationID>
+ <name>Radio RPR Eins - Rheinland</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10906994211F371665DC88EE4BD9A619D13C441175A7B339B0345E3354B7F2F744ED99D2DD</stationID>
+ <name>BFBS (engl.)</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1090699423EAC3CC1691BF630044C24AF75C76A96AD6EBF054240A6A92FF94EB3A0E12A355</stationID>
+ <name>SWR3</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10906994265D76A89AD9E7CBF711535500F1D1EC2D34B404F625A16BF15DCA25D34CB13021</stationID>
+ <name>RTBF - Frequence Wallonie (franz.)</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1090699428338EF267F17D7090C6521A260FF4DB143C1423AD4DE523241C9829A5DBCE5205</stationID>
+ <name>RTBF - Musique Trois (franz.)</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109069943271CE1AC2EB887A18DC633866C5374E382AF53144D53E979D82E99D0920029644</stationID>
+ <name>hr1</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.851</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1090699434A6D86CE18B181A372FC5D859BF6BF3DDC3DF8570E340D0890164FCACA4127667</stationID>
+ <name>Radio K�n</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109069943501048079DC267C4768029781667808FBA1C2BC8A3F27A9FE9D22F5EF44FE0A3E</stationID>
+ <name>bigFM - Rheinland-Pfalz</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.8</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
diff --git a/kradio3/presets/germany/koeln-loevenich-cable.krp b/kradio3/presets/germany/koeln-loevenich-cable.krp
new file mode 100644
index 0000000..ba07995
--- /dev/null
+++ b/kradio3/presets/germany/koeln-loevenich-cable.krp
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Waldemar Ciszek &lt;ciszek.moeck@t-online.de&gt;</maintainer>
+ <changed>2003-07-12T00:00:00</changed>
+ <country>Nordrhein-Westfalen</country>
+ <city>Köln-Lövenich</city>
+ <media></media>
+ <comments>:-) Kabelnetz Lövenich </comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385351ACFB17DA054B4BAEE62D704D08723C224F9674659FF645F30F0FA0AE546B520F</stationID>
+ <name>EINS LIVE</name>
+ <shortname>1LIVE</shortname>
+ <icon></icon>
+ <frequency>105.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535174B9F37C5AEF80B6DB525644FD0D52FB2086E94E03DEB22AA68465705F5EFDD9</stationID>
+ <name>WDR 2</name>
+ <shortname>W2</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535131FC62A2041BF262494BFF0ADFF45791C4BE2C397DD7E8CDE25093D53B8DC75A</stationID>
+ <name>WDR 3</name>
+ <shortname>W3</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351F6981F073A2A50CCE799097651654612F7B3BD8D95EA7589C0FD9B8737E38943</stationID>
+ <name>WDR 4</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853515AF78AC1F36FA93D6D4D888ECA2BE233BB01227C6EF9E5A250A48A3421AF1913</stationID>
+ <name>WDR 5</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351C6241EAFD733255EA27D4846E07F11E7998625ECFC854D429808F46A5C60CE39</stationID>
+ <name>Radio Köln</name>
+ <shortname>K</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351494064A19C56072E2C896786BB3199DE47BFFC412D56ACCCAC68C9A5C0B0CD1E</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <frequency>97.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853519000320D7E6A78C25643B6D85191A1B826B7A8DBB4081F88B5CA3A63CED9349B</stationID>
+ <name>Funkhaus Europa</name>
+ <shortname>Eu</shortname>
+ <icon></icon>
+ <frequency>103.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853511E60B487F3829A74B606CABD14C0CE08513E1D17DB033DC916DE9E9F715A0584</stationID>
+ <name>SWR 1 RP</name>
+ <shortname>S1</shortname>
+ <icon></icon>
+ <frequency>89.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351E1B1D7D57E40F62139F58CC9BE22A4385DC4CF0B44FE51BD7C8CABAD634EBD9B</stationID>
+ <name>SWR 3</name>
+ <shortname>S3</shortname>
+ <icon></icon>
+ <frequency>95.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853511847926EAB2BCAB50E41396DC6964A9A439D0DCF9313882ED561DFF343408BAD</stationID>
+ <name>SWR 4 Ko</name>
+ <shortname>S4</shortname>
+ <icon></icon>
+ <frequency>93.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853519514FB11B06EF80EA95F10A81EA30619A7BB04F744C592C5A687E6E09E271175</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik</shortname>
+ <icon></icon>
+ <frequency>88.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351972EE83358D9A8E19BD4B3F2FA40A36618D28A69AA618D55DA3973F7DE3ED2CD</stationID>
+ <name>Hessen 3</name>
+ <shortname>H 3</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535175BED4C94BEF365853DAA19E38530EB21A51EC43FB6FF5E3DFD0F771D7665343</stationID>
+ <name>RPR EINS</name>
+ <shortname>R1</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351154AF1791E8F3D08FA7649870756AC2241AD122E67A5562581E3702BD7D2D0AA</stationID>
+ <name>RPR ZWEI</name>
+ <shortname>R2</shortname>
+ <icon></icon>
+ <frequency>101.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853514C609E8083A3FD998B1F16EFB7458FCB406C2FA27D524AD2307339CD33475B49</stationID>
+ <name>ERFT</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>87.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853511219A4AB82ADA874B5177B457976613F66DE840BE02921E51FC13EA459C978E9</stationID>
+ <name>RTL Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>87.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/langenfeld-cable.krp b/kradio3/presets/germany/langenfeld-cable.krp
new file mode 100644
index 0000000..f0ea24f
--- /dev/null
+++ b/kradio3/presets/germany/langenfeld-cable.krp
@@ -0,0 +1,229 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Uwe Kuhlmann, Uwe.Kuhlmann@web.de</maintainer>
+ <changed>2004-12-07T16:09:53</changed>
+ <country>Germany</country>
+ <city>Hilden</city>
+ <media>cable</media>
+ <comments>Gilt fr Hilden / Langenfeld / Leichlingen / Monheim / Leverkusen
+(any comment and thanx welcome!)</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1116455444010E438C8E97A66D907D4D07DB22BBCD044ED63239470D0D5F57D570A956303C</stationID>
+ <name>SWR1-Rheinland-Pfalz (87,6)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>87.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444E8894FEBD106DDB12AD74F42F1758FB85281CBCE3A159CE494903BDCF8459901</stationID>
+ <name>SWR4-Rheinland (87,9)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>87.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444FAAB921300F0A8F13BF9AB609FAF6A93102B43619A78280421CB6F58FD71FCDD</stationID>
+ <name>SWR3 (88,35)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>88.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554441F5A44EE1FBAB44C274E04F6B3DE26766AF23E7D0C3E70FFB859A19A73778395</stationID>
+ <name>WDR2-Wuppertal (88,95)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>88.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444E881EC5290604FBCCCF0A4A6FE2461B9B9A847E7CF0E4BFA43E285BA92D3FF45</stationID>
+ <name>WDR Radio 5 (89,70)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554449555C24DFB5920F619346483D7507A45D8D73D8FCCC934D6AA8D66356E341B09</stationID>
+ <name>JAM-FM (90,05)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544487492D7CDB8E3B3339F8E5E8D6C8E24C50EF4E43247D6B2E02B5996108FBDEBC</stationID>
+ <name>WDR2-Rhein-Ruhr (90,6)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444E5D431BC2E0760813FE80F2A04DF3B2FBFA26A911092FC09EFB0196FA1C62ACD</stationID>
+ <name>WDR4 (92,15)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>92.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544476C7565AC7CF51A13955F50EECC17DAA003A9B9FA50948F7A1CA12F182A35D7F</stationID>
+ <name>Radio Neandertal (92,5)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444BF42604BD95D7C0607E6B8DCCFB82C4127557D5C016C4B2A83BD8C7336FAA3D4</stationID>
+ <name>DeutschlandRadio Berlin (93,35)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>93.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444D8266EEFE21418082602AE51A35773365AE5D964734D8DA168E5F86E0F6332A6</stationID>
+ <name>Eins Live (WDR) (94,05)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444C3E4A32978CABA10CCD1D5477BAB8574486CFFA944C19AA917D0AC7C12E06A42</stationID>
+ <name>Deutschlandfunk (94,45)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544483FC3B24306D877D2EE57051C8231F1406956EEFE3F8E4D7C512F7A890E99032</stationID>
+ <name>RTL RADIO - DIE GR?STEN OLDIES (95,3)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444A49EC6FB7EC4A8BC7A42F82AC715F98BB87C531796E141FBC23BEB060B79FBAE</stationID>
+ <name>WDR Radio 5 Funkhaus Europa (96,75)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>96.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444C8D5EF7E5CAA93A6B21B434FCDB8C4148F2F8A3DBBAC7B2891C3EFDC89B9A042</stationID>
+ <name>Klassik Radio (97,05)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>97.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554448C65C9CEBE5C0FD065701BBD6C9B413F10DC8BA4158E6A661658C32E16C961DA</stationID>
+ <name>Radio Berg (98,80)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>98.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554447FC41A34E4FCAA06BAF169A191E1695B82A2ED35EDB35D562FEF533C85C6DCBD</stationID>
+ <name>Radio 3 (niederl.) (100,9)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444EA9EA417DAEDE97C5388A36EF9321FE35C50D797B8B5D53B8106B74B8B0CDC36</stationID>
+ <name>sunshine live (102,0)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>102</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554442556CC2E5E23E2729856ACC979775CAB37AC1CB934251DAF476E568F9E745CDE</stationID>
+ <name>Radio Melodie - Heimatfunk mit Herz Mnchen (102,5)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554441B244A61928435EDA21886DB5974E05C57B0CE2859D6C4CEE2F57EED6F54D1C1</stationID>
+ <name>SWR2-Rheinland-Pfalz (103,05)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>103.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444BAA158EB2D6BFD02516D9393F052BF0E1B333C377FD323824872F6A26DA118A7</stationID>
+ <name>Radio RPR Eins-Rheinland (103,9)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554443C50E0108BF112B38DD24B1A2E145E421B251E212A4E7AB346F2153861EA7487</stationID>
+ <name>Radio RSG (104,25)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>104.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544422906783DA904AAC8E7FDE8CF3364A4F0ADFEA6AA218AB8FB571E960E9E76BB2</stationID>
+ <name>RPR Zwei (105,4)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>105.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554446D6722D1BB3A69CCF92CFF92A9483512C95334961661CFBD89349F2635111ADC</stationID>
+ <name>Radio 2 (niederl.) (106,15)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>106.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444A8BAEEFB59AB10195AC246037C8F9DE34D23E2F688F3DF8ABF8F99677E641A37</stationID>
+ <name>Radio 4 (niederl.) (106,45)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>106.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444DE0C1DDCA40297F81826732040C41B60907D5B61658EADE98CA4A915786A60E9</stationID>
+ <name>domradio (107,05)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>107.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+--
+Email created with Kontact 1.0/Kmail 1.7.1 on SuSE 9.2 Professional
+Visit http://www.Kuhlmann-Privat.de for having a good time ;-)
+--
+Email created with Kontact 1.0/Kmail 1.7.1 on SuSE 9.2 Professional
+Visit http://www.Kuhlmann-Privat.de for having a good time ;-)
diff --git a/kradio3/presets/germany/langenselbold-cable.krp b/kradio3/presets/germany/langenselbold-cable.krp
new file mode 100644
index 0000000..fd43479
--- /dev/null
+++ b/kradio3/presets/germany/langenselbold-cable.krp
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-1.0beta3b</creator>
+ <maintainer>Werner Muehl, &lt;info@ib-muehl.de&gt;</maintainer>
+ <changed>2003-10-05T21:35:53</changed>
+ <country>Germany</country>
+ <city>Erlensee</city>
+ <media>Cabel</media>
+ <comments>Stations/Frequencies for Hanau, Bruchkoebel, Maintal, Erlensee,
+Rodenbach, Neuberg, Langenselbold</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>106854525432A288014DF7C85A99EB501E082B06B4F96949EBAE12DD4A859C19C3636C7101</stationID>
+ <name>Antenne Bayern</name>
+ <shortname>Antenne Bayern</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254739FC26D6EA0AFF43BCC062A18F2B696DD53495A4DB3E0CE961695FDE6CF251C</stationID>
+ <name>AFN</name>
+ <shortname>AFN</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254A4F642897A3A7A2FDCF75CC91EC34AB83409A44E520926B65616CB71A888A632</stationID>
+ <name>Bayerischer Rundfunk 1 (Main / Franken)</name>
+ <shortname>BR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452545BFB673861F03BE773365B16486F1312D0E67EE191A44D3E6E8A2EDE9CFF860B</stationID>
+ <name>Bayerischer Rundfunk 2 (Main / Franken)</name>
+ <shortname>BR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254A50C8E4F463384279978E9990FE99AD5E8D02892DC85239B19FF5D03D0B2D2E6</stationID>
+ <name>Bayerischer Rundfunk 3</name>
+ <shortname>BR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452542B850A62AFBC32E86A8AEEAFB6ADDB4471C997F6EC31B99A4705C034891FF15F</stationID>
+ <name>Bayerischer Rundfunk 4 Klassik</name>
+ <shortname>BR 4 KLassik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254AFA422E0A4F4D99F24FFC42C2EA3E5563D518014CAAD3D29F69BC15105EA2B8D</stationID>
+ <name>Bayerischer Rundfunk 5</name>
+ <shortname>BR 5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452544B20BEB753EDDA4B34C42E483252E211C5BCB770258F801EE1840268FD85CCA2</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>DLR Berlin</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254870A846605C88985C8D465AA421B30FF35FDBEBB55A43E57FCAFD16154206359</stationID>
+ <name>Hessischer Rundfunk 1</name>
+ <shortname>HR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254933EFC46CF2BFFE13CC182D4B05FF2D2461E6F6D7589DDAF3C87DA473962E186</stationID>
+ <name>Hessischer Rundfunk Klassik</name>
+ <shortname>HR Klasik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11367224732DD9647905D1A0E3003D6727D6C6A468489AE8E1B8349C8BDE108A1BE864F4DF</stationID>
+ <name>Hessischer Rundfunk - Info</name>
+ <shortname>HR - Info</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525467DD7BA14D8A886573BE9AED9A64A86C9F8E5AF487245E4146D0307E1EBAFF45</stationID>
+ <name>Hessischer Rundfunk 2</name>
+ <shortname>HR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254702E9C08B12CD8B1420A2124B447183B0A668DFCB197EE89DF93E6ACF98E9812</stationID>
+ <name>Hessischer Rundfunk 3</name>
+ <shortname>HR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452546CFB27CC9962BF5D8977046D34628F539AA5D68B836F03732D03EC4943541F6C</stationID>
+ <name>Hessischer Rundfunk 4 Rhein-Main</name>
+ <shortname>HR 4 Rhein-Main</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452549B0EB616A99AF727280D11B619234DFFABDAA8F588578B31D946064A1E4F0CE1</stationID>
+ <name>Hit-Radio FFH Rhein-Main</name>
+ <shortname>FFH</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1136724537075C78FBD2816E19C6B77CC4DAFDC888A9DC10DEBA65983A0B76537048067AE1</stationID>
+ <name>JAM-FM</name>
+ <shortname>JAM-FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525483F9405C61CE3EED8B1790B72AE42D9ECF45255D65635DCCA1A185EDB0876D34</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11367244420E0433EBB9A7933AE1DFCAE9AC5968416B2B9C1718E31FED01DFD0676DC2505B</stationID>
+ <name>MAIN FM</name>
+ <shortname>MAIN FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254D0CE4F17DAD846DDC36D7DC42608C19C2F18B4885EC251CE790C84C41CB27447</stationID>
+ <name>Planet Radio</name>
+ <shortname>Planet</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254AC687063AB78F567A8746D9C8C6B2122EDD6595C51D4BE060F507045CE72F2C3</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Melodie</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1136724286E5985147114BB716FE9E15FA357C38BBB0CB331B5396CEB9EBDBCE94915F4A18</stationID>
+ <name>Radio RPR Eins</name>
+ <shortname>RPR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525437C470CE8A4CDE8335D5C2F7734E80C021240F03A3CAAEE3012CD289EDC275EC</stationID>
+ <name>RTL Radio</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452541FF3CA5C607D5DE6797DC299B2145287B967056B74590104E2C042A49CDF62B6</stationID>
+ <name>Sunshine Live</name>
+ <shortname>Sunshine</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254C3EDE8BB17AC69C6BFAE1D0C57D3226A907A7420C6B2B792CF8EA9D2844D5BFC</stationID>
+ <name>SWR 1-Rheinland-Pfalz</name>
+ <shortname>SWR 1-Rh.Pfalz</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525444FF41C1C7E711CF7C74D8AC38A735064E85E5376AC0F57D568D429B9E913BD5</stationID>
+ <name>SWR 2-Rheinland-Pfalz</name>
+ <shortname>SWR 2-Rh.Pfalz</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254CC505A9B2AEF4B7C6BDA243798B7AED04B2D39569524C28CC4BE3EC0CA46D765</stationID>
+ <name>SWR 3</name>
+ <shortname>SWR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254355DB6BC4C4A688C5E1FEF7DBF78B7FB62C40545D488ADA1A4CCF51AF702F839</stationID>
+ <name>SWR 4 - Pfalz</name>
+ <shortname>SWR 4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1136724325091824FE3A7B2E74B15CCE068D71760C4BA8271CE5F3511F5BA9F69098A9C9C8</stationID>
+ <name>WDR 2 (Siegen)</name>
+ <shortname>WDR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525406B343319F3EC21170A752D910A7C6C26670A13961C9F0CC9652DF5D53695E68</stationID>
+ <name>WDR 3</name>
+ <shortname>WDR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11367226162FF388CE9717148283756F57FE37EEE28DD6148247865CBD8BC64CF3C8EF3A01</stationID>
+ <name>YOU FM</name>
+ <shortname>Y</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.8</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/leer-ostfriesland-cable.krp b/kradio3/presets/germany/leer-ostfriesland-cable.krp
new file mode 100644
index 0000000..3601976
--- /dev/null
+++ b/kradio3/presets/germany/leer-ostfriesland-cable.krp
@@ -0,0 +1,325 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-1.0beta3b</creator>
+ <maintainer>Christian Fechteler &lt;christian.fechteler@arcor.de&gt;</maintainer>
+ <changed>2006-08-04T21:46:37</changed>
+ <country>Germany</country>
+ <city>Leer (Ostfriesland)</city>
+ <media>Cable</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+ <stationID>11305259416700E259D8723233F0C60209994F0E83401C0812C14E2CC03DEBBD6915A55F15</stationID>
+ <name>NDR2</name>
+ <shortname>NDR2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1130525941BE1C766913F50A57CB047E811EDA33CCF9ED688E2A76FD88FD1FE54C125652C6</stationID>
+ <name>NDR1 Niedersachsen Nordwest</name>
+ <shortname>NDR1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>11305259411D46F6487841B6578CB2A5B7F5F79A2139B7344B4706B02E084B83463C09F5C4</stationID>
+ <name>NDR Kultur</name>
+ <shortname>NDR Kultur</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>11305259419F246792EB8E6490A5D8D6EF2402648A09269B7B4F64CB7C4D15BD06D91AF8C2</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>11305259413940EAB82689DB392D2DDF31313179EC951215BFC4D40FB1CB788F006DF2E51E</stationID>
+ <name>radio ffn - Ostfriesland</name>
+ <shortname>ffn</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>113052594137ADE9991D88D7149E123AC322C4A1A8482E5C1EF71F830247156605369F9558</stationID>
+ <name>Antenne Niedersachsen - Ostfriesland</name>
+ <shortname>Antenne</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1130525941A0B745BEBA0BCA1298BEB4C0EA16931CAD35B21DD43DB3442AA5B270A49E8DDE</stationID>
+ <name>NDR 4 INFO (MW)</name>
+ <shortname>NDR 4 (MW)</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>11305259417EF6C62ECF6C10583F1D589516D68DD13E7A4B26F75CB30C1EDD0FAF1D3218AB</stationID>
+ <name>NordwestRadio</name>
+ <shortname>NordWest</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1130525941904E80D14DFBD6AFECD61343EA81F25D37FC96B893C67B4D74BB6B095CA5886B</stationID>
+ <name>Bremen 1</name>
+ <shortname>Bremen 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>11305259413CFDFB9DA7B3090D8B43BD689ABDD5886618CF88141A7A7802D13344B5C6640D</stationID>
+ <name>Funkhaus Europa</name>
+ <shortname>Funkhaus Europa</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1130525941819FFC2A0DFF1BD015A59C45E0DC43B3E4C77916188D6BC6A0814EB68439E334</stationID>
+ <name>Radio Bremen 4</name>
+ <shortname>Bremen 4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1130525941774EB69420CA49C405B82754105B141E6335B0B05234715B0E046893A1B6DBB3</stationID>
+ <name>Radio Jade</name>
+ <shortname>Jade</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>113052594124CBA49AF4D26D2494FDD670013DFBFC75218250E4F0B0E755EE564DC2BCD268</stationID>
+ <name>Ems-Vechte Welle</name>
+ <shortname>Ems-Vechte</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>113052594190BA882A69A389A9F31298EC673B4D1AB577ED85C8ADAD580F2B510AEFAEA964</stationID>
+ <name>NDR INFO</name>
+ <shortname>NDR INFO</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>11305259412613A5CEB788CE13D9EA325397948B9D580C5C94EDCAB6ED8B752F14F8480560</stationID>
+ <name>Eins Live</name>
+ <shortname>WDR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1130525941B66092B21FBDFC5AEB67B8399FF519BF6C489C0419E41B30D7EE8869FF439E58</stationID>
+ <name>WDR 3</name>
+ <shortname>WDR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>11305259413BF822C3DEF3813290C16A922D5014829D51C1AC775E96645AB5FC5FD78994E7</stationID>
+ <name>WDR 2 - Bielefeld</name>
+ <shortname>WDR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>11305259419440E3EE93201946488930A7DE19C9928E2A65E4EC596EDCD9128B919FA568EE</stationID>
+ <name>WDR 4</name>
+ <shortname>WDR 4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>113052594109C01111AE10CCE2DD5B1D07CD0DCCCE8326A003741998A159659FF49408F6D1</stationID>
+ <name>sunshine live</name>
+ <shortname>sunshine</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1130525941C0ADC99DD8FBBA0CC01396F7870DA0B88C5FA0300E494CBE725BB42F22622291</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Radio Melodie</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1130525941EF1860DC7433508397805D1B59C3FB869878D1EF9437629BE2BC81CA793C14AF</stationID>
+ <name>N-JOY</name>
+ <shortname>N-JOY</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>113052594199CC8E3775118814DD11FF550229DEC812D81247297BDBED2C3D0B52E780093F</stationID>
+ <name>SKY (NL)</name>
+ <shortname>SKY (NL)</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1130525941433B045DD4B4FBB0038ADC7E952E83EC34828E432A35DD541E9F234CD85E9685</stationID>
+ <name>NL 1</name>
+ <shortname>NL 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>11305259415F0332E3A737ACBC444FF069225A0695C1589CA9BB936A068026AE7FFF6BF0B0</stationID>
+ <name>NL 2</name>
+ <shortname>NL 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>113052594113FD2101A8DCA13F6E87C3E9AA1522036A099B645742FD0C09460380F24F91BE</stationID>
+ <name>NL 4</name>
+ <shortname>NL 4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>11305259416FA376AD25B16F1BD510823610A4AB8CE4ACB417CA11A6736124F40FED66498E</stationID>
+ <name>Radio Noord (NL)</name>
+ <shortname>R .Noord</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1130525941DA051C9DB8F54ED6111207A408B6274BECA6D2E682C7A4FB8D9E899492E51D62</stationID>
+ <name>Deutschlandradio Kultur</name>
+ <shortname>DLR Berlin</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>113052594195B3F9EDDF5A52C47D5CFC4D6D9AB8EABAEB5F18C0C4898BDB47510DF70F1272</stationID>
+ <name>RTL FM (NL)</name>
+ <shortname>RTL FM (NL)</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>113052594120BD175DA8107E851D715E921960B5D0E3ED15F3866DB4B21158C14BF47E9374</stationID>
+ <name>British Forces Broadcasting Service</name>
+ <shortname>BFBS</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>113052594161011F9667612858958CF2099E33AE366B8B492ED73056DCC1E05185FF6F5B87</stationID>
+ <name>JAM-FM</name>
+ <shortname>JAM FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1130525941B7EF334DD0D0780574D4A183EA4FAE0DBDFFDB318485B30A1AA629693B0F4A9F</stationID>
+ <name>RTLRadio</name>
+ <shortname>RTLRadio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1130525941D979DC20B92BBF7F9043FC51B1084872572AF17F031E45D4DC66E31204C6C8CD</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik Radio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>11305259418EA288343643B8D9131CCF71E22E6E95D4247BCBB7939974A97E354B271A6581</stationID>
+ <name>Radio Ostfriesland</name>
+ <shortname>Ostfriesland</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1130525941E1136BAAE2DEB15F09881DA4158140E43BDCC804E617ED291A92345476C2BC88</stationID>
+ <name>Radio Noordzee (NL)</name>
+ <shortname>Noordzee</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.5</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
+
diff --git a/kradio3/presets/germany/leichlingen-cable.krp b/kradio3/presets/germany/leichlingen-cable.krp
new file mode 100644
index 0000000..7f2270b
--- /dev/null
+++ b/kradio3/presets/germany/leichlingen-cable.krp
@@ -0,0 +1,229 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Uwe Kuhlmann, Uwe.Kuhlmann@web.de</maintainer>
+ <changed>2004-12-07T16:09:53</changed>
+ <country>Germany</country>
+ <city>Hilden</city>
+ <media>cable</media>
+ <comments>Gilt fr Hilden / Langenfeld / Leichlingen / Monheim / Leverkusen
+(any comment and thanx welcome!)</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>111645544413AD42019BBEF973379B3CCFAF26DF2BA78F1451F467B76A4B84FDF17B74C866</stationID>
+ <name>SWR1-Rheinland-Pfalz (87,6)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>87.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554449C4B6EEF9D33C11EE12AA5712A9F8A3A7CDF11254806137CBE1990A2605CC3D0</stationID>
+ <name>SWR4-Rheinland (87,9)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>87.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444DA07F2A0A19199DD13D5660405869921B68C1EFC3B6CAD0BE21E46F77FAA596B</stationID>
+ <name>SWR3 (88,35)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>88.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444F61F9CD12D599180C1F59B7ED3B53E673A5B5343D9B91DB5C198AC8EE62F2E5F</stationID>
+ <name>WDR2-Wuppertal (88,95)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>88.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544470D64E4FDC7C433AF2AA40F6E466866202491DC1BFA33DE91194C5B984D5A1AD</stationID>
+ <name>WDR Radio 5 (89,70)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554448D8349EF4039CA9136921D50CA4B7A5B16597F6961D890C30A4E849BA614B78E</stationID>
+ <name>JAM-FM (90,05)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554449FB887EBE6562DD1D2E64FE7C338E5F0F9BBA4A37A06FB96A04DBB5E3FA3133F</stationID>
+ <name>WDR2-Rhein-Ruhr (90,6)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544441457F8F442395B28066C52691D0A9F4C89DA44A56C5D5F22DC9DAEFF2D97D3C</stationID>
+ <name>WDR4 (92,15)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>92.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554447494613840AD24AD69027087A7021DAC9DFE8210A57CA59728B64A678B21A10C</stationID>
+ <name>Radio Neandertal (92,5)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544463D73452948A0AAD42DE92B8A2C7DF6FE2A9A17D5E8D7F6A8B308ACC8EE30CE4</stationID>
+ <name>DeutschlandRadio Berlin (93,35)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>93.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444010E4E8D51CA5EC63FCDC51519577BFC1B5C4577900746FA2EE6EF7F8FE4A786</stationID>
+ <name>Eins Live (WDR) (94,05)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554445B1811EF584A36E14D599ECFC71A956C9FE0AF0F5F8E8583D35F679C00CF0E51</stationID>
+ <name>Deutschlandfunk (94,45)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444D92403F3152F2F026A8223E708D4226403629B7C85E675A1187DF38B2D10ADC4</stationID>
+ <name>RTL RADIO - DIE GR?STEN OLDIES (95,3)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444FF0F782E3F2CBC8F60B751E1D54A399BA7923443F97399649BCAF5EFBE77B445</stationID>
+ <name>WDR Radio 5 Funkhaus Europa (96,75)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>96.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444BDC99DB9831C331FEFBBB3CE97E575E65B328DC5CECE31E77AD7C25D8F7FA1B1</stationID>
+ <name>Klassik Radio (97,05)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>97.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554441DAED391513635B8443491B9FAD44CDA0AD2F4C5D192670E570AC3F2E6C73A1D</stationID>
+ <name>Radio Berg (98,80)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>98.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544457C7C379B6EDA76FB94974F76F0C2EB37147449E6F59C3A7313AC92AB0B69A83</stationID>
+ <name>Radio 3 (niederl.) (100,9)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554447F65DE10D9923063EC3A4DB4B523E101A1857CF0E1567ECB2A5C4D3959E3D9B9</stationID>
+ <name>sunshine live (102,0)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>102</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444DE71684E071F6C6349DB44AF6B882379B85D3E87303DD0343C02863A8909866F</stationID>
+ <name>Radio Melodie - Heimatfunk mit Herz Mnchen (102,5)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444CD33A6B56E4A378EB03124EB44EFB73F6327D0AFEDD4503FDD09049F88E3B207</stationID>
+ <name>SWR2-Rheinland-Pfalz (103,05)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>103.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554440CBDA8FC8230D8363955132BF08E90310FC574C0B7DE112C081019673A568A0E</stationID>
+ <name>Radio RPR Eins-Rheinland (103,9)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444F46DCAC4C454108B90DD2103025D9B2472D52047DC14AD9C963F996614B8F5D9</stationID>
+ <name>Radio RSG (104,25)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>104.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554440249C0605A2259F8ED7C5E9CFE8E9B1A08D766A9871BCD974CC707C6C83940F4</stationID>
+ <name>RPR Zwei (105,4)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>105.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544465B3BAD6DA83A14043DE92F9E7641B11CE09E86F10B0491494D177954E4DB4F9</stationID>
+ <name>Radio 2 (niederl.) (106,15)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>106.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554440F62450B3E4626A9A9E222EF6391C66A8F7225A8338EC344C46FF8309C5EAAE4</stationID>
+ <name>Radio 4 (niederl.) (106,45)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>106.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554445D33B435DC393830D013348C5CCA86B754BCBB610C00DE3A7D5341713E3342DC</stationID>
+ <name>domradio (107,05)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>107.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+--
+Email created with Kontact 1.0/Kmail 1.7.1 on SuSE 9.2 Professional
+Visit http://www.Kuhlmann-Privat.de for having a good time ;-)
+--
+Email created with Kontact 1.0/Kmail 1.7.1 on SuSE 9.2 Professional
+Visit http://www.Kuhlmann-Privat.de for having a good time ;-)
diff --git a/kradio3/presets/germany/leipzig-cable.2.krp b/kradio3/presets/germany/leipzig-cable.2.krp
new file mode 100644
index 0000000..a7b108e
--- /dev/null
+++ b/kradio3/presets/germany/leipzig-cable.2.krp
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Christian Weiske, &lt;cweiske@cweiske.de&gt;</maintainer>
+ <changed></changed>
+ <country>Germany</country>
+ <city>Leipzig</city>
+ <media>Cable</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1091288019F69C6153CA8EEF221E65F26AE6421F8100BEA3D767DA49AA6A6209AE20D10EB0</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>92.3125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288019016B98B04DD2E66695810C484B210B3BBFFADE29CA24727AA11EC2F4386A9DD4</stationID>
+ <name>mdr info</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>92.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912880199871EC871A62F788A61F05338D0884B8AA8F2DEFFC22053595729F70985C2B41</stationID>
+ <name>Deutschland Radio Berlin</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>93.1875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912880191A64A3C357C3180893EB1EC077C0C410F0DDDF988E0A10CA404868F12AB6E783</stationID>
+ <name>energy</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>103.688</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288019363ECF0CFF159C1EFD3F569FB835F5F4F74DF22F9A3B0D7ADA5431AAB86B0E26</stationID>
+ <name>Sputnik</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>105.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912880198464EBEF35CCBD354673180295DF0B518D2C842E7016AC19F0FDF1056165AAA9</stationID>
+ <name>Leipzig 91.3</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>90.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912880195FC322612588E4AC586105BD71898242290B6AD263139EBEF1D2FC519CDFA769</stationID>
+ <name>Radio PSR Leipzig</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>101.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912880199076059AB3A9A141AE56B15AFF6931AAAA099EE4263EA0C00AA2A3D8160613F2</stationID>
+ <name>JAM-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>87.6875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912880194A8E5DE366BD8A885052789AC5DA695B12C581C1BE15251281C05882AF9D2EE8</stationID>
+ <name>Landeswelle Thringen-Ost</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109128801944FFB1BF86FEA046B4B6E4C9B81C50BC99BC557BF4CBF0EAEA1C759F580753EE</stationID>
+ <name>Hitradio Brocken-Hallo</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>88.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288019F0A445260D26CDF408F41D65A3A9BE9DB5C265D96D2E738EA218EC3228103917</stationID>
+ <name>Antenne Thringen</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>89.1875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288019274D8EEC61090EE323E1299F6EA296FA9299E66FCC763557B0B7F65F41D2B23B</stationID>
+ <name>MDR Figaro</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>91.1875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288019F5934332D9CEDEF288F7A98F50C0742411356AEBAFF829263E832C4EDE234B53</stationID>
+ <name>mdr1 Radio Sachsen-Anhalt</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>91.8125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912880190FF5282F95BDE6604090D3C3C92E1E2FDA3AAB7E180961C33FAFA1F1F4F06762</stationID>
+ <name>RSA/Mephisto</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>93.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288019A671F88F4E64BCBC59802AC36DB71EAE677A9FFB6510ECD8A94560C672E4FC7A</stationID>
+ <name>mdr1 Radio Sachsen Leipzig</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>94.3125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109128801940AFA250F67650EDD89FCB7FB8E90128A6E02DA70B2528437C3C57BEE1BC64FA</stationID>
+ <name>Radio SAQ</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>94.8125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288019FD9E6EFC4CBB3F87204C38A0FE14CC91D050A1F98E90347408F5C6F14DE251FA</stationID>
+ <name>Rockland Sachsen-Anhalt</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>95.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288019C7C65A48B3A639F5157B888A6BE0639D422C42CCF65BE255E301CDB676056993</stationID>
+ <name>Antenne Bayern</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>96.4375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109128801919FB2E4F39E892947B23E6354F9F9288E092B9DE48080F636E223E289BACB80B</stationID>
+ <name>Radio Melodie</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>97.3125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109128801940B5533EDD91ED52F41E85E6B99544529EECD05C6EEBB137817C3EFD1F93688F</stationID>
+ <name>Klassik Radio</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>97.9375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912880194ADBE8734D2E1728BDC1FF127F206CED3ED3B8E352C6769204BCF7F043BEAC5F</stationID>
+ <name>Bayern 3</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109128801957CD8392A829FEBD31E3AA067AF735014308A8E242F51FCAFB73F859E6A5798F</stationID>
+ <name>mdr1 thringen</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>100</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288019837A958752FED280996E8868D04E56619B7EB1C21E5954990478D0327C9EF8D0</stationID>
+ <name>NDR2</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>103.188</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288019F0B2EDFDD819239097EE5C81839A6A5AF244F3767AF6ACF400DB3AEA918D66DB</stationID>
+ <name>RTL Radio</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>104.562</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912880199CFF750D5D2478FCE6E612F2E4735C92102FDE72959E213A82ED643AF828594F</stationID>
+ <name>Antenne Sachsen Leipzig</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>105.688</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/leipzig-cable.krp b/kradio3/presets/germany/leipzig-cable.krp
new file mode 100644
index 0000000..27fba8b
--- /dev/null
+++ b/kradio3/presets/germany/leipzig-cable.krp
@@ -0,0 +1,271 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-1.0beta3b</creator>
+ <maintainer>Thomas Möller, &lt;info@thomas-lpz.de&gt;</maintainer>
+ <changed>2005-10-30T10:49:16</changed>
+ <country>Germany</country>
+ <city>Leipzig</city>
+ <media>Primacom-Cable</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10912880190FF5282F95BDE6604090D3C3C92E1E2FDA3AAB7E180961C33FAFA1F1F4F06762</stationID>
+ <name>RSA/Mephisto</name>
+ <shortname>RSA</shortname>
+ <icon></icon>
+ <volumepreset>0.9</volumepreset>
+ <frequency>93.6504</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1130667096A93C24C27830639FB30ECE1EFD2643CDE376CED6E619A5EB8153115F798BB603</stationID>
+ <name>PSR</name>
+ <shortname>PSR</shortname>
+ <icon></icon>
+ <volumepreset>0.9</volumepreset>
+ <frequency>101.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109128801940AFA250F67650EDD89FCB7FB8E90128A6E02DA70B2528437C3C57BEE1BC64FA</stationID>
+ <name>Radio SAW</name>
+ <shortname>SAW</shortname>
+ <icon></icon>
+ <volumepreset>0.9</volumepreset>
+ <frequency>94.8255</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912880194A8E5DE366BD8A885052789AC5DA695B12C581C1BE15251281C05882AF9D2EE8</stationID>
+ <name>Landeswelle Thüringen-Ost</name>
+ <shortname>LW TH</shortname>
+ <icon></icon>
+ <volumepreset>0.9</volumepreset>
+ <frequency>88.0001</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11306657449AA5EBE08851E4C7954715A3B0B96DCED8B2659474090AFF6008D52DF20DB342</stationID>
+ <name>SWR 3</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>106.026</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912880199076059AB3A9A141AE56B15AFF6931AAAA099EE4263EA0C00AA2A3D8160613F2</stationID>
+ <name>JAM-FM</name>
+ <shortname>JAM FM</shortname>
+ <icon></icon>
+ <volumepreset>0.9</volumepreset>
+ <frequency>87.675</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109128801944FFB1BF86FEA046B4B6E4C9B81C50BC99BC557BF4CBF0EAEA1C759F580753EE</stationID>
+ <name>Hitradio Brocken-Hallo</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>88.6501</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288019274D8EEC61090EE323E1299F6EA296FA9299E66FCC763557B0B7F65F41D2B23B</stationID>
+ <name>MDR Figaro</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.1753</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288019F5934332D9CEDEF288F7A98F50C0742411356AEBAFF829263E832C4EDE234B53</stationID>
+ <name>mdr1 Radio Sachsen-Anhalt</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.8503</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288019F69C6153CA8EEF221E65F26AE6421F8100BEA3D767DA49AA6A6209AE20D10EB0</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.3253</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288019016B98B04DD2E66695810C484B210B3BBFFADE29CA24727AA11EC2F4386A9DD4</stationID>
+ <name>mdr info</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.6503</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912880199871EC871A62F788A61F05338D0884B8AA8F2DEFFC22053595729F70985C2B41</stationID>
+ <name>Deutschland Radio Berlin</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.2254</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1130665707B123AD14E2272622AB6CCD1FFDE6EB32FE76BAD35E64E0D801F133384CF3F4B2</stationID>
+ <name>Sunshine Live</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>94.1004</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288019A671F88F4E64BCBC59802AC36DB71EAE677A9FFB6510ECD8A94560C672E4FC7A</stationID>
+ <name>mdr1 Radio Sachsen Leipzig</name>
+ <shortname>Radio Leipzig</shortname>
+ <icon></icon>
+ <volumepreset>0.9</volumepreset>
+ <frequency>94.3504</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288019FD9E6EFC4CBB3F87204C38A0FE14CC91D050A1F98E90347408F5C6F14DE251FA</stationID>
+ <name>Rockland Sachsen-Anhalt</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>95.1255</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11306657124FAE65FB87AA1A3DE16DB682ABD3D5DE0770A0D424FAC72EE911B112494F1CAE</stationID>
+ <name>Sunshine Live</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>95.7255</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1130665716328ECF3A3B81E2080DF6E3C8DD33EDBAD4500F2804FA0DDFDC7230D1D6215B27</stationID>
+ <name>Antenne Bayern</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>96.8256</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109128801919FB2E4F39E892947B23E6354F9F9288E092B9DE48080F636E223E289BACB80B</stationID>
+ <name>Radio Melodie</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.3506</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912880194ADBE8734D2E1728BDC1FF127F206CED3ED3B8E352C6769204BCF7F043BEAC5F</stationID>
+ <name>Bayern 3</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.5508</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109128801957CD8392A829FEBD31E3AA067AF735014308A8E242F51FCAFB73F859E6A5798F</stationID>
+ <name>mdr1 thringen</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.026</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11306657297CBFA9FFB99D426BD39051A2E1F783119022157632E4F74A5ADF473743595F78</stationID>
+ <name>HR 4</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.151</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288019837A958752FED280996E8868D04E56619B7EB1C21E5954990478D0327C9EF8D0</stationID>
+ <name>NDR 2</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <volumepreset>0.9</volumepreset>
+ <frequency>103.201</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912880191A64A3C357C3180893EB1EC077C0C410F0DDDF988E0A10CA404868F12AB6E783</stationID>
+ <name>energy</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.701</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288019F0B2EDFDD819239097EE5C81839A6A5AF244F3767AF6ACF400DB3AEA918D66DB</stationID>
+ <name>RTL Radio</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>104.526</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912880199CFF750D5D2478FCE6E612F2E4735C92102FDE72959E213A82ED643AF828594F</stationID>
+ <name>Antenne Sachsen Leipzig</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.726</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1130665745B17465DE45FBC47B12BD27D3302B71F9FACAE0679F9E1417CEC981FA839CD466</stationID>
+ <name>Eins Live</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>106.301</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113066574618EB7C86B13CCCCCE94461310906831FEF13730FD9B4EE700DF98EE0374ECB0C</stationID>
+ <name>new station 28</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>106.601</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11306657490194908C26799977C7F27350D0E3794451069413C34A7556A5AAF57D5AEED6C3</stationID>
+ <name>new station 29</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.676</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1130665750EB41C70E43B943AC0DAD5DE37B54D5902D8FABFFB5944F0421261FE97288601F</stationID>
+ <name>new station 30</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>107.951</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1130665742B2877D80FAFD2930EE5DF983FF7DCC63FE45771C87E568B6A006BA648B8A323A</stationID>
+ <name>new station 24</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.226</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288019C7C65A48B3A639F5157B888A6BE0639D422C42CCF65BE255E301CDB676056993</stationID>
+ <name>mdr jump</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>96.4506</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11306672402515C84A8D0B966AA0AB1F930292552747C9505FEAE2B9148DD5823188DFC646</stationID>
+ <name>Apollo</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.9</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/lennestadt-cable.krp b/kradio3/presets/germany/lennestadt-cable.krp
new file mode 100644
index 0000000..414a118
--- /dev/null
+++ b/kradio3/presets/germany/lennestadt-cable.krp
@@ -0,0 +1,222 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Sebastian Schmidt, &lt;sebastiantschmidt@arcor.de&gt;</maintainer>
+ <changed>2004-07-09T10:14:39</changed>
+ <country>Germany</country>
+ <city>Lennestadt (Sauerland)</city>
+ <media>Kabel</media>
+ <comments>Kabel-Radio in Lennestadt</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1091290560D138C546A9E23B843773626EBA0865FCE0C07E8D531D45077D47C70BF852DEF8</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056048E3F81A334D9A5953A1EFD400D642FF45C86B1D3477487C565454BC75CC4205</stationID>
+ <name>WDR Radio 5</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>88.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560A8E0553C2DF4A1D68336BC3C14F5BCCADDC451826D9D7CE656031961F984F179</stationID>
+ <name>WDR 2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>89.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560B3D664C2C9AAC21C456D70811B7C20E5F758340B9288D886CA0FE25E4AF2E41A</stationID>
+ <name>WDR 3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905607D4736A81C308448ADFD332C622983B2BEA1A50125F25BB6DD55A760A953FF07</stationID>
+ <name>WDR 4</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056065026B18D5ED24E5A01A6FD281AB15F9A7AA2BCDAFFAF66F3906FBD87F8564E1</stationID>
+ <name>EinsLive</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560EC397865A61F8DCDD1C99FC1A9B307A966D74623628A9E9A5F0C79F2C47D7FE3</stationID>
+ <name>hr1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>91.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905600F23D5F17FBE89B6F78EEDD1E9B6EFD727C5A711AE6EB4FDC95B0062D12A69C4</stationID>
+ <name>hr2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>92.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905603CECC8CBA05EDF11E1139E86C0B093551E9512331ECCD3E1BF004B55B09B848D</stationID>
+ <name>hr3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056046DCCC8B110BC613C15B45267E289F81928497271C83E516C0225F77F9EFE51B</stationID>
+ <name>hr4-Mittelhessen-Journal</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>93.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056005335BDA2266BE1B8E558C1E079BB1F457BEC35810EF0EA53C0A875DAEC4D76C</stationID>
+ <name>Hit-Radio-FFH - Mittelhessen</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560066BAEDAEC2C1100448F8F6F9D45C310B4B67F83EFFA96FF708E6F8710FCBB41</stationID>
+ <name>SWR1 - Rheinlandpfalz</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056093D7A18D9BE8113014C55A5AF4842C1E65131348527928F8741F528DEE193A0B</stationID>
+ <name>ERF (Evangeliums-Rundfunk)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560F3A54BC665197BECF65DAE53D4791DBAC027356F5E22578D83169FDD09ECD3DD</stationID>
+ <name>SWR3</name>
+ <shortname>SWR3</shortname>
+ <icon></icon>
+ <frequency>96.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560BABA8896F1AE6967A69BD9CAE66567DD373303028C11CEC1208DA012072FFA87</stationID>
+ <name>SWR4 - Rheinland</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>97.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560D26C107B08333AC87312B7386FFDF920661202EBEDF9C790B0241B9FE5A16698</stationID>
+ <name>Radio Melodie</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>98.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905601352AC07D9F7114E56A6C41C7A41FFB87E1265AF7B116AB653835272BC4BCDCF</stationID>
+ <name>Radio RPR Eins - Rheinland</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905607CEDFE337C87BDFDE7D271FB3F279481453832EE56DEE00E565438248EB82E07</stationID>
+ <name>RTL Radio - Die besten Hits mit Gefühl</name>
+ <shortname>RTL Radio</shortname>
+ <icon></icon>
+ <frequency>99.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905608771512A0E81AE3BD732260BB928E23052C36B4A0D4666C19B0CDB027CCD979A</stationID>
+ <name>domradio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>100.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056012B9D2C4E816C225D24CD46539EE7D3BB5DDE79595F824B2E747741BC8C30E51</stationID>
+ <name>AFN - Frankfurt</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>101.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560C1F54982CBD83AA647F2C982736ABAD1EDEFD8EF438BB9A50630BC221F40D959</stationID>
+ <name>BFBS</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>103</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905609B8EB885EBC35A5B61C37B8135F8DB1E0303D72418FF6A02C9BDB33F61444FA4</stationID>
+ <name>Klassik Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>103.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560E5C7733413B3119C68016323BD4D568681D35B6A0A8B1F4E2DE95182325AAB79</stationID>
+ <name>JAM-FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>105.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560303DD3CA7CFF0C88062697A3707F51300BE32AFBC3C197351B24D78FC109A223</stationID>
+ <name>Deutschland Radio Berlin</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>105.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905606356B485B5051DED00687B0D9DB7E0C3DF71AEC4229E0DFC9161B8EE1F6D08BA</stationID>
+ <name>sunshine live</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560C816532FBA5421C534E05A1C36FB68C7AD07BDF2E020F1663D32C2F67B9492CC</stationID>
+ <name>Radio Siegen</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>106.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/leverkusen-cable.krp b/kradio3/presets/germany/leverkusen-cable.krp
new file mode 100644
index 0000000..d5ef437
--- /dev/null
+++ b/kradio3/presets/germany/leverkusen-cable.krp
@@ -0,0 +1,229 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Uwe Kuhlmann, Uwe.Kuhlmann@web.de</maintainer>
+ <changed>2004-12-07T16:09:53</changed>
+ <country>Germany</country>
+ <city>Hilden</city>
+ <media>cable</media>
+ <comments>Gilt fr Hilden / Langenfeld / Leichlingen / Monheim / Leverkusen
+(any comment and thanx welcome!)</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>11164554445FEE0E8B94F25DCF628AFE50CF12A926CD0F6A632B0C9AB2A1B390D97AA5CCA3</stationID>
+ <name>SWR1-Rheinland-Pfalz (87,6)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>87.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554449ED4E88B4B2A2A46A8938C2A7288D65448E26526DB4B01CE319CBFF81FEE7948</stationID>
+ <name>SWR4-Rheinland (87,9)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>87.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444793638676157F8BA986D6D2C2ED925F855B9048B123300F3B410931BFA50B808</stationID>
+ <name>SWR3 (88,35)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>88.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444DF7CA12C188611DA8ABF6DD84B31325830404FA0DBEECC5333C8F6CF9FCDC45F</stationID>
+ <name>WDR2-Wuppertal (88,95)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>88.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554445D5C866B2E6C4CFB419B56A17BA3707A23E10A8F14FB13C109E84ADB3C982294</stationID>
+ <name>WDR Radio 5 (89,70)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544411A7DE7391098A4E5B3BE264C4A6FECA223DFAFF97653D212DAC063AAD90D559</stationID>
+ <name>JAM-FM (90,05)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554447FD458636B46635076E673ADDFC8787E2EDD2B5AB735DE78746CAA62C19A3BC1</stationID>
+ <name>WDR2-Rhein-Ruhr (90,6)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554444ECD1C3B2F1DE451D4CAD4659B48408BDE3DB24D4C3B3F0B6BABAF39641B7B21</stationID>
+ <name>WDR4 (92,15)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>92.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444304E7B5E25FD0676988109B30E7A9398F87F52DA18B5DD8DC21B6245AF92E24A</stationID>
+ <name>Radio Neandertal (92,5)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444A73264833F5F650150044F80DD460C8A94EB74C271F6239502093A4240725B77</stationID>
+ <name>DeutschlandRadio Berlin (93,35)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>93.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444AA588CC13449F361A8B9C181DF968DCDB9E1B37A311CBF10C84F15A07C1CF7C3</stationID>
+ <name>Eins Live (WDR) (94,05)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554440ECBDA768181EF02DE6B2C0377D7ECC7204CF4AAB407ABC888730282B0207C0E</stationID>
+ <name>Deutschlandfunk (94,45)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444969ABF2316B6C4A50B19F27C4212BBBD11BFCCBC21A444E3D69F99C4C603CCFD</stationID>
+ <name>RTL RADIO - DIE GR?STEN OLDIES (95,3)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444DEAF22BBED4CB531579120C52059CF2235933987CF617B553FEE1CC9AB43D36D</stationID>
+ <name>WDR Radio 5 Funkhaus Europa (96,75)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>96.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554440050826709C34AB88E8BFD6EEBDA188294D549438CA7DF7784E77D2A6A178D99</stationID>
+ <name>Klassik Radio (97,05)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>97.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444658D89394C831E167047344A156AD58B4820E6F9BD49C37512759C9A73CCD49B</stationID>
+ <name>Radio Berg (98,80)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>98.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444B9909E35D19BB8A6A508D23F9AC8E15CDD0B56DF4245EAFA928CF7F4D499570C</stationID>
+ <name>Radio 3 (niederl.) (100,9)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544416E767837E88B0C79A79FC6224A4CE66B99EB091720DE0A1FA92E77F9812EAC3</stationID>
+ <name>sunshine live (102,0)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>102</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444128E90B6D2CB5EE1D8A2C54FB4187ABFC7545CA7442E1C1115E352892A314804</stationID>
+ <name>Radio Melodie - Heimatfunk mit Herz Mnchen (102,5)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544468AFBF0D4AC0CE9048C75D49F12BC744754B49976BC452C7FC53E235DF709D68</stationID>
+ <name>SWR2-Rheinland-Pfalz (103,05)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>103.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444B994B56A739B47149C610B0B62695C1A037722C879D4C4A2328A409D3198E3B3</stationID>
+ <name>Radio RPR Eins-Rheinland (103,9)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444270414F996B22F9C4E83800180349BE2E87FB96E5D47B4A3F2F0C81350C65E11</stationID>
+ <name>Radio RSG (104,25)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>104.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444749158D76925C76D1B4066301CD0C12BC26B7DBB586183087B4FFF12A20676C3</stationID>
+ <name>RPR Zwei (105,4)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>105.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544482313BCCCC3F9A5172BDEEEA59E636F9201BFD2B0197744635BAA1E5B3E1D25F</stationID>
+ <name>Radio 2 (niederl.) (106,15)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>106.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554444DC75D8D40001864412F004E83BE8BDDB43E6AADECD8A21FACEF3D50D617006C</stationID>
+ <name>Radio 4 (niederl.) (106,45)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>106.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444D98FCBA9424D6938478E649239A73FDEA802FC83E9DFFB1FFDC9329D4BE2AD72</stationID>
+ <name>domradio (107,05)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>107.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+--
+Email created with Kontact 1.0/Kmail 1.7.1 on SuSE 9.2 Professional
+Visit http://www.Kuhlmann-Privat.de for having a good time ;-)
+--
+Email created with Kontact 1.0/Kmail 1.7.1 on SuSE 9.2 Professional
+Visit http://www.Kuhlmann-Privat.de for having a good time ;-)
diff --git a/kradio3/presets/germany/ludwigsburg-antenna.krp b/kradio3/presets/germany/ludwigsburg-antenna.krp
new file mode 100644
index 0000000..543cd31
--- /dev/null
+++ b/kradio3/presets/germany/ludwigsburg-antenna.krp
@@ -0,0 +1,125 @@
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Florian Harbich &lt;flo_harb@gmx.de&gt;</maintainer>
+ <changed>2003-10-25T18:56:41</changed>
+ <country>Germany</country>
+ <city>Ludwigsburg (Stuttgart)</city>
+ <media>terrestric antenna</media>
+ <comments>this list is not complete, but the most important stations are
+included.</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1067100957BC4869F056186DAFF9AB750EF4FC6060F66F1DFD4E4AF76D23C2058B43D3BADD</stationID>
+ <name>SWR 1</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10671009457EA1F61767E1615E783A5B2552075EBBACB7F16A7712A412F8976E164154BF65</stationID>
+ <name>SWR 2</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10671009502C0086203C38BE088D63FC6E11B1E31BE10D64C7213FB0EE96E9700919DEBBAC</stationID>
+ <name>SWR 3</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1067100983ACA57A88AB85715263094277AB84E1304D68B2EC5D1D24B3723CBD1D7FD43B08</stationID>
+ <name>SWR 4</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1067100947E4785AF496772F7AD1A71D1E717276AA0A96E70CD1F9DC10D9070C7C23B2A19C</stationID>
+ <name>Das Ding</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10671035970ABBE977455ED7A9A8B8EE6E9F7D29AEE7CD14D3024D2AD804E154F1098A3BE0</stationID>
+ <name>Hitradio Antenne 1</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10671009885F8808CB31079531E54E5340337A2B6F5EC3647845D62B92A7E4EDDBD5473588</stationID>
+ <name>Die Neue 107.7</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1067103624BFD624EC75B1E2457093E03898C93FD44E050BE84869FB13A7956AE01C3C3E45</stationID>
+ <name>Hitradio Regenbogen</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10671036602490BC34B54E64B402A7FAE6433087D761B2A969D1158749650D2C65EE675058</stationID>
+ <name>Energy ARJ</name>
+ <shortname>nrj</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106710368741E3E3C46E920BEFCF0ADDA087441868BE491D194B9B401E84ABD149D28E3222</stationID>
+ <name>Deutschlandradio</name>
+ <shortname>dradio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10671009438459746E184A060CF9565011A123E51A800A9BC76E4EB70B46AA6E7908B5887B</stationID>
+ <name>big FM</name>
+ <shortname>big</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106710370571D5BFC5CADA83D5803B21FF1113DDEBDFE634E64F1770A0F97D9001ADDD1276</stationID>
+ <name>Klassik-Radio</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.9</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
diff --git a/kradio3/presets/germany/luedenscheid-cable.krp b/kradio3/presets/germany/luedenscheid-cable.krp
new file mode 100644
index 0000000..4474385
--- /dev/null
+++ b/kradio3/presets/germany/luedenscheid-cable.krp
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Martin Schulz &lt;ma-schulz@web.de&gt;</maintainer>
+ <changed>2003-12-11T21:12:20</changed>
+ <country>Germany</country>
+ <city>Luedenscheid</city>
+ <media>cable</media>
+ <comments>alle Angaben ohne Gewähr :-))</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>107714498504240FAAA713A524F96A0F302B542ED918897B9E621D772A159B31370B7714B1</stationID>
+ <name>Eins Live</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>106.312</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985CCDDE780F4C0F77BF9940FD429EF950A91ED6D82A8AF20F50686679F1D0617E7</stationID>
+ <name>WDR 2</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985A92BCCEE4097AE8097E0A9F7DE2BA3711BF3075D3D759DEF2B6420CA00F60491</stationID>
+ <name>WDR 3</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>95.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985A814E85B84449087BEFD6260A3390BDF010C72BE11A0774FE52DA0E8E2A2B1A1</stationID>
+ <name>WDR 4</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>103.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449853FCACB1493A6723EBDC1F8784D4E25FF27E2E8C106849940C5753FF4E45C3569</stationID>
+ <name>WDR 5</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>88.0625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985CCD1D7B6BB6846A9C956FD9BFB6C7555E1DF862758BAC1B99ACB17C754C3FB4B</stationID>
+ <name>Radio MK</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>97.5625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985BE6AB12EDD33893B7AC1B7EF8DEF930561ECDB6F4E4630BFC7E88E411D418B09</stationID>
+ <name>BFBS R1</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498579E6D60E67DEFA1D00C94637ECF32BEFAF3BAC3B461388F8AAE142B8CB7BA4FD</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>106.688</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985E5EEDFB5D65B81851374AC89999DFC52043C18813D6168024D626E7CD9F6BFE4</stationID>
+ <name>Deutschlandradio Berlin</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>93.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449854765B274D5FC5E3D454463D9D1FCDB4C29EE8C9BE2D4C8FDC98AEC5C22E611A1</stationID>
+ <name>JAM-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.6875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498597CA677B2055C5C1DABEBD5B9F53053CB80BFABE7B8D935D3D8FD80A0EC82ADD</stationID>
+ <name>Sunshine live</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>90.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449850A076679D644A634574121EA12B95741BEC95C8AC14EADBEFFA4F36597596ACF</stationID>
+ <name>RPR-1</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>101.062</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498505E361E67BA9D6C5FE0D9EBB588DA81A3B14041D826A36EEACF70E9EC25346BE</stationID>
+ <name>Berg</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>107.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985B61768BD065930026B7ACE2A4903DFDF5636D4F228C5B9E1DC56E8C4DC14B39A</stationID>
+ <name>Melodie</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>91.0625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449855F8E7675CF5A41227006E7C6F8AE212AF19AFD3269E6E47500DB9F841A880795</stationID>
+ <name>HR 1</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>103.812</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985D07EE01CB6C171A95FDD5A5F8AA1C368BBBF20EF64EA7F0830819A1D57CC24AC</stationID>
+ <name>HR 2</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>105.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985B637E055C9EB0FBF286BCB48D238F48F421199D0026B1466DDD9539201A85104</stationID>
+ <name>HR 3</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>102.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498504F4DE4F9BAA256FE3E8471C97323B932DE946F7608E265C3325E63F79AE62D6</stationID>
+ <name>HR 4</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>99.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985F817A6F3AE77EDAEDB0DE2CDD90BA17DE8CFCA328AA2E45C617E6F6E2364B356</stationID>
+ <name>RTL-Radio</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498519A0DCDA519429824FFF2482B81ED17C10C70D50151F881D116FB808830FD624</stationID>
+ <name>Domradio</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>89.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985134FB4018C0D1B075922359850CD846DE15CB1668B2F4E9A0B11F630F468C68F</stationID>
+ <name>Klassikradio</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>90.0625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985EF8D75B055672D9B625A908D77258B8470E274B2ED7EC127FFD0A1E23392F366</stationID>
+ <name>kein Programm</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498595E1521C94C66838C21BBECB546A49BB42EB51E3DA009966C6E04E1921174BC1</stationID>
+ <name>SWR 3</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>101.688</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985BC34263E259BD8848B2E378A8C87D50F9D1B288C0CFB55DF5109C6FA1BF79AB6</stationID>
+ <name>SWR 4</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>100.062</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/maintal-cable.krp b/kradio3/presets/germany/maintal-cable.krp
new file mode 100644
index 0000000..fd43479
--- /dev/null
+++ b/kradio3/presets/germany/maintal-cable.krp
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-1.0beta3b</creator>
+ <maintainer>Werner Muehl, &lt;info@ib-muehl.de&gt;</maintainer>
+ <changed>2003-10-05T21:35:53</changed>
+ <country>Germany</country>
+ <city>Erlensee</city>
+ <media>Cabel</media>
+ <comments>Stations/Frequencies for Hanau, Bruchkoebel, Maintal, Erlensee,
+Rodenbach, Neuberg, Langenselbold</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>106854525432A288014DF7C85A99EB501E082B06B4F96949EBAE12DD4A859C19C3636C7101</stationID>
+ <name>Antenne Bayern</name>
+ <shortname>Antenne Bayern</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254739FC26D6EA0AFF43BCC062A18F2B696DD53495A4DB3E0CE961695FDE6CF251C</stationID>
+ <name>AFN</name>
+ <shortname>AFN</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254A4F642897A3A7A2FDCF75CC91EC34AB83409A44E520926B65616CB71A888A632</stationID>
+ <name>Bayerischer Rundfunk 1 (Main / Franken)</name>
+ <shortname>BR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452545BFB673861F03BE773365B16486F1312D0E67EE191A44D3E6E8A2EDE9CFF860B</stationID>
+ <name>Bayerischer Rundfunk 2 (Main / Franken)</name>
+ <shortname>BR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254A50C8E4F463384279978E9990FE99AD5E8D02892DC85239B19FF5D03D0B2D2E6</stationID>
+ <name>Bayerischer Rundfunk 3</name>
+ <shortname>BR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452542B850A62AFBC32E86A8AEEAFB6ADDB4471C997F6EC31B99A4705C034891FF15F</stationID>
+ <name>Bayerischer Rundfunk 4 Klassik</name>
+ <shortname>BR 4 KLassik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254AFA422E0A4F4D99F24FFC42C2EA3E5563D518014CAAD3D29F69BC15105EA2B8D</stationID>
+ <name>Bayerischer Rundfunk 5</name>
+ <shortname>BR 5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452544B20BEB753EDDA4B34C42E483252E211C5BCB770258F801EE1840268FD85CCA2</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>DLR Berlin</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254870A846605C88985C8D465AA421B30FF35FDBEBB55A43E57FCAFD16154206359</stationID>
+ <name>Hessischer Rundfunk 1</name>
+ <shortname>HR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254933EFC46CF2BFFE13CC182D4B05FF2D2461E6F6D7589DDAF3C87DA473962E186</stationID>
+ <name>Hessischer Rundfunk Klassik</name>
+ <shortname>HR Klasik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11367224732DD9647905D1A0E3003D6727D6C6A468489AE8E1B8349C8BDE108A1BE864F4DF</stationID>
+ <name>Hessischer Rundfunk - Info</name>
+ <shortname>HR - Info</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525467DD7BA14D8A886573BE9AED9A64A86C9F8E5AF487245E4146D0307E1EBAFF45</stationID>
+ <name>Hessischer Rundfunk 2</name>
+ <shortname>HR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254702E9C08B12CD8B1420A2124B447183B0A668DFCB197EE89DF93E6ACF98E9812</stationID>
+ <name>Hessischer Rundfunk 3</name>
+ <shortname>HR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452546CFB27CC9962BF5D8977046D34628F539AA5D68B836F03732D03EC4943541F6C</stationID>
+ <name>Hessischer Rundfunk 4 Rhein-Main</name>
+ <shortname>HR 4 Rhein-Main</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452549B0EB616A99AF727280D11B619234DFFABDAA8F588578B31D946064A1E4F0CE1</stationID>
+ <name>Hit-Radio FFH Rhein-Main</name>
+ <shortname>FFH</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1136724537075C78FBD2816E19C6B77CC4DAFDC888A9DC10DEBA65983A0B76537048067AE1</stationID>
+ <name>JAM-FM</name>
+ <shortname>JAM-FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525483F9405C61CE3EED8B1790B72AE42D9ECF45255D65635DCCA1A185EDB0876D34</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11367244420E0433EBB9A7933AE1DFCAE9AC5968416B2B9C1718E31FED01DFD0676DC2505B</stationID>
+ <name>MAIN FM</name>
+ <shortname>MAIN FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254D0CE4F17DAD846DDC36D7DC42608C19C2F18B4885EC251CE790C84C41CB27447</stationID>
+ <name>Planet Radio</name>
+ <shortname>Planet</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254AC687063AB78F567A8746D9C8C6B2122EDD6595C51D4BE060F507045CE72F2C3</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Melodie</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1136724286E5985147114BB716FE9E15FA357C38BBB0CB331B5396CEB9EBDBCE94915F4A18</stationID>
+ <name>Radio RPR Eins</name>
+ <shortname>RPR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525437C470CE8A4CDE8335D5C2F7734E80C021240F03A3CAAEE3012CD289EDC275EC</stationID>
+ <name>RTL Radio</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452541FF3CA5C607D5DE6797DC299B2145287B967056B74590104E2C042A49CDF62B6</stationID>
+ <name>Sunshine Live</name>
+ <shortname>Sunshine</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254C3EDE8BB17AC69C6BFAE1D0C57D3226A907A7420C6B2B792CF8EA9D2844D5BFC</stationID>
+ <name>SWR 1-Rheinland-Pfalz</name>
+ <shortname>SWR 1-Rh.Pfalz</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525444FF41C1C7E711CF7C74D8AC38A735064E85E5376AC0F57D568D429B9E913BD5</stationID>
+ <name>SWR 2-Rheinland-Pfalz</name>
+ <shortname>SWR 2-Rh.Pfalz</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254CC505A9B2AEF4B7C6BDA243798B7AED04B2D39569524C28CC4BE3EC0CA46D765</stationID>
+ <name>SWR 3</name>
+ <shortname>SWR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254355DB6BC4C4A688C5E1FEF7DBF78B7FB62C40545D488ADA1A4CCF51AF702F839</stationID>
+ <name>SWR 4 - Pfalz</name>
+ <shortname>SWR 4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1136724325091824FE3A7B2E74B15CCE068D71760C4BA8271CE5F3511F5BA9F69098A9C9C8</stationID>
+ <name>WDR 2 (Siegen)</name>
+ <shortname>WDR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525406B343319F3EC21170A752D910A7C6C26670A13961C9F0CC9652DF5D53695E68</stationID>
+ <name>WDR 3</name>
+ <shortname>WDR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11367226162FF388CE9717148283756F57FE37EEE28DD6148247865CBD8BC64CF3C8EF3A01</stationID>
+ <name>YOU FM</name>
+ <shortname>Y</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.8</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/mainz-cable.krp b/kradio3/presets/germany/mainz-cable.krp
new file mode 100644
index 0000000..fccaf71
--- /dev/null
+++ b/kradio3/presets/germany/mainz-cable.krp
@@ -0,0 +1,313 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Carl-Heinz Schneider, &lt;cschneider@chschneidervgmbh.de&gt;</maintainer>
+ <changed>2004-07-30T20:00:06</changed>
+ <country>Deutschland</country>
+ <city>Mainz</city>
+ <media>Kabel</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1091210082BA65CDBA2FC1204856739A3EA2FD489069496D80973126A19DD12CB3C1D441B4</stationID>
+ <name>SWR3 Mainz</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1091210082DEF09B6E9046C7F83273080B2BEA178B2F58A9F1A6B7F9EF12880A52228B9F1A</stationID>
+ <name>Rockland Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>109121008275AC2AA3F5012AD945E80AD533624DD074F0CF25EE150D287E664F37227319AC</stationID>
+ <name>SWR1 Baden-Wrtenberg</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10912100824F0B552CAA2585DDB29538203600B1F4FC13FFC79F71B5963C525B3AA14455C8</stationID>
+ <name>Radio Melodie</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10912100829E9A86009C823FE7E87623D3EBB06CA32E5079DE7B52ACC916C24C7FC7FD2227</stationID>
+ <name>SWR1 Rheinland-Pfalz</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>109121008284860B7A40E431B2DC1FDDA5D80C520CA08BF185F332150E0B472C56842DCD00</stationID>
+ <name>SWR2 Rheinland-Pfalz</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>109121008231DDF9C9CDD8521943AAB626E57E32B0FAA7D482807E268D919ED7ACD39D2897</stationID>
+ <name>SWR4 Rheinhessen</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.85</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10912100821B73161922BAD998535FFAA3E91CEBE1649C5FD7AB06825157BD23E279F26FDA</stationID>
+ <name>SWR4 Kurpfalz</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1091210082F17DA0914156CEF921F727D219B178DE2EEEC83BA2B35AC38D1089C0C1EA92D9</stationID>
+ <name>RTL Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10912100825F6ABC42814FD33968D412224C78D7C12E26E4B3C169A2BE7A12EEAA87EE3399</stationID>
+ <name>SWR3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1091210082774358A5F4BF9D31FF709CE3C937DE869DB33CF8000CCD53F8AABB938DEAEF0D</stationID>
+ <name>Radio RPR Eins - Rhein/Main</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1091210082F4F14F89050F31CE31B2CFC482E3A0643E02B959734F88CD169DD29A46D21FEA</stationID>
+ <name>hrXXL</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10912100821F20B4FAFED880A79D906A72D4D077648EB4B21D94E3E58F41F3AA44E3D42E61</stationID>
+ <name>hr1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1091210082628A920A4A6CB865E6B81A5ACD2D8B3A893821B110064FF237D6A9C20CABE437</stationID>
+ <name>hr2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10912100825EF066667531DD57E07BE939619EA6EAC1CCD5DFC9BC6337B9608ECD1EC3BE1D</stationID>
+ <name>hr3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1091210082632C248483185C6FC5A3E621CB6A669FCF801EE5E23A46B848828383CAD17274</stationID>
+ <name>HIT RADIO FFH - Rhein/Main</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.85</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1091210082226BD82950DCCA467AEE879F9FA9AB2944E9D9DE0D03712A61963D044ABBED82</stationID>
+ <name>planet radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1091210082083B403834C0F4A81F95E7238B51EAE8BC33AE112E739E44412DFE4E5A2F791D</stationID>
+ <name>Radio Regenbogen - Mannheim</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10912100821DA4D775AAACF06AACE6DD49CC42097E6988C30283CD0EAFD6544FFBCCFA0A6B</stationID>
+ <name>hr4 - Rhein/Main - Journal</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1091210082EEEA3B67D38E92EFED00C821F5AB2ACE93221E3A96D16894AB25D6EF0582E6A9</stationID>
+ <name>hr skyline</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10912100822573AAB2A9774F3228B316D011243D947AE8B0AAACFC2D67F55E2D449C014AE0</stationID>
+ <name>BR1 - Main/Franken</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10912100823F8FEA5EC4C25DA9AAFB7AFF5F6CE2852083756B6D9616365DF77202C0409455</stationID>
+ <name>BR2 - Main/Franken</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10912100826F264F0A0F37FF4150223190510EA2DC6AA5A33659AA6A67CB31812849A6C499</stationID>
+ <name>Bayern 3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1091210082659561DA03DA254E1370779A0412757393E572470067C6B4F27AA382DB336425</stationID>
+ <name>Bayern 4 Klassik</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1091210082E8A0D8C536FF25612DB52FE1D2E4FB4697A55C6F6BE373B399D512AC81DBA542</stationID>
+ <name>K2R / R(h)einwelle</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>109121008283F8D8742323C6A573DA8BF4C306E1E139F424A50012CA19422BF91C34BAB536</stationID>
+ <name>B5 aktuell</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1091210082548B9EA842EC2DCB03B2B920DCAF4934DFCA4A21A039614BD5C1932F228780B5</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.85</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10912100827AD1B4324C57D6AD6BB20627CD5B66A49417FCD3001638BB2FC16654468ECE60</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1091210082D26067B2A5C913E3ABAC3F007BFB6D53D12B3DA6FFBECE6E8369F3CBF52F870D</stationID>
+ <name>sunshine live</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10912100824883C0846A2CA0C740E69232A4B688D40C26C47F2FDA2C653E737C5D36F14A27</stationID>
+ <name>AFN - Frankfurt</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1091210082F287E51A9EF8723C1BB3F4CB3DF3588A8FD46C0C22DE3359AE783F943149C2A3</stationID>
+ <name>JAM-FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1091210082CCCDF6699165353226197C59D35CBF032EA036A6077CA6701F5C7E0434B4ED02</stationID>
+ <name>Klassik Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1091210082AAD7FE3D97B0A551D28DB285494960E30FB204DD9D61E851EB49ECCA00E2FEB5</stationID>
+ <name>DASDING</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.75</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
diff --git a/kradio3/presets/germany/mannheim-cable.krp b/kradio3/presets/germany/mannheim-cable.krp
new file mode 100644
index 0000000..8050fd0
--- /dev/null
+++ b/kradio3/presets/germany/mannheim-cable.krp
@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Dirk Ziegelmeier, &lt;dziegel@gmx.de&gt;</maintainer>
+ <changed>2004-04-08T21:57:37</changed>
+ <country>Germany</country>
+ <city>Mannheim</city>
+ <media>Cable</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>108145435115D523C9C39BCBC1119672B5A15877D31AD8BE9E55D1AAF96DC6272884C3685F</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1081454206CA22E9133070E9C95BF0A85B7C65E8CE3FAD6DDBE53344388169C3A45B127C3B</stationID>
+ <name>Radio Regenbogen</name>
+ <shortname>Regenbogen</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108145443452C341106181E8C93A6786368D2098AF680FF781B2DC95589D676148263882FB</stationID>
+ <name>Radio RPR</name>
+ <shortname>RPR</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1081454211E739A9F1636D53337C2D3330ACF02B10232B414F808C2A94658739C696051AE6</stationID>
+ <name>HR1</name>
+ <shortname>HR1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108145421273874C58D85F7400000B642E05647B29B8864C45A4CC344617EF31F4095C921C</stationID>
+ <name>HR2</name>
+ <shortname>HR2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108145421443651BDE02C980C030DD75E2519EF06231C370B896DA6AF87236019287CD7712</stationID>
+ <name>HR3</name>
+ <shortname>HR3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10814542151A595049206F75E5D86C74280F96C326D38B0BCCB794A5B38029B50FD3D166E1</stationID>
+ <name>HR4-Sdhessen</name>
+ <shortname>HR4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10814542202F2C2F75BFCE058C45FE05066406278A9F94DB7A40F45B92DCD68DC0A00175B1</stationID>
+ <name>BR1 Main-Franken</name>
+ <shortname>BR1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1081454221B92DE4AD9FCAC347C6E7DA842D7E1E380B4B7AFDC788260313CBD5E039C6181A</stationID>
+ <name>sunshine live</name>
+ <shortname>sunshine</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.1504</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1081454223ADAAE00417DC9D8375B5571E5C7E5198BDE31FEFCB12698FA700EFA0E932D9A5</stationID>
+ <name>Das Ding</name>
+ <shortname>DasDing</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.85</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10814542258CE6CA5626B86C83DFAC440D56E8C13C9FD6C0A883D9CCD2CEF85C3EF396CA0D</stationID>
+ <name>Hit Radio FFH</name>
+ <shortname>FFH</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108145422610CC13F2D8BBB0042E61F121AC926F9BFFDF48EFF79BA3BF1E5B5ADB2292D9D1</stationID>
+ <name>AFN Frankfurt</name>
+ <shortname>AFN</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1081454227EAA110B3108F98CD60D7335A75C732C02904959CA5ADEB5C743774A4BC0DBCE4</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Melodie</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1081454228D6B94B50653EDBCDBBAECE53996B576D9A983163B2B3712E1BFCA54C38F3B02C</stationID>
+ <name>SWR1 Baden-Wrttemberg</name>
+ <shortname>SWR1BW</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1081454230A2A8A8CC1821D6FE62A3EC673876C01EA34469C8EBBAA2608DCE330DF06818B6</stationID>
+ <name>SWR2 Baden-Wrttemberg</name>
+ <shortname>SWR2BW</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1081454232FD2E244B1367D1BF360797C1761FDEFB79EBF9AA75CDBA3DFF948D7C84AFB6FA</stationID>
+ <name>Metropol FM</name>
+ <shortname>Metropol</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108145423382F6694D31B96BD38404F12262DD3CC559D96A1FC2A7E808B296B6DF3900A5BA</stationID>
+ <name>Deutschland Radio Berlin</name>
+ <shortname>DLR</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108145423497B3A15D582F71DCF271C0B6CA693CAD7CE3DE77D2EE387A0DDDBD628A4BBDDB</stationID>
+ <name>SWR4 Kurpfalz</name>
+ <shortname>SWR4KP</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10814542379D6DD82F139B49210621E0343CF3B4868B80B0ECB1B3D4F047C464AC251881BC</stationID>
+ <name>SR2 Kultur Radio</name>
+ <shortname>SR2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10814542399450CDC98915EA13268282E2BCDB54A4260E0991F05F4BB58D82EA822B999016</stationID>
+ <name>big FM</name>
+ <shortname>bigFM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1081454241EBD490F2A1929069CA51ECAEBC1230F9FF00F4773F0144BA1D1E742C30D4C147</stationID>
+ <name>JAM-FM</name>
+ <shortname>JAMFM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10814542431F7DC76EC770927ADDDB21BBD8941462176042ED5D78CAE0C9BFB3610628CBDD</stationID>
+ <name>SWR4 Vorderpfalz</name>
+ <shortname>SWR4VP</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10814542463C0630DF515B83AF223A620B7CA56F36C9C116AA3DD2CB6D0C417B445898559C</stationID>
+ <name>SWR3</name>
+ <shortname>SWR3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108145425214FC1DEB6A32F2135967B6692ADB7BF46966AFC9CA051E06E71594FC6458B1DC</stationID>
+ <name>RTL Radio</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1081454249D9E0517281CB03ED184036256C485CDFB33CFAC0126F96276CC428BD7EA04B93</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10814542559FAE13995DDBFB4E622A9FC8C1BF0966C946715A4813F912FB4C5C2C7FC260DA</stationID>
+ <name>bermuda.funk</name>
+ <shortname>bermuda</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.45</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/meerbusch-struemp-cable.krp b/kradio3/presets/germany/meerbusch-struemp-cable.krp
new file mode 100644
index 0000000..d6ef12e
--- /dev/null
+++ b/kradio3/presets/germany/meerbusch-struemp-cable.krp
@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Dirk Steinbrenner, &lt;dirksteinbrenner@justmail.de&gt;</maintainer>
+ <changed>2004-08-08T12:53:30</changed>
+ <country>Germany</country>
+ <city>Meerbusch-Strümp</city>
+ <media>ISH Cable Network</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10919654329ED713AF2E30CA44EAD3865C948AF81A79B063E613122F668290687EE3C47377</stationID>
+ <name>SWR3</name>
+ <shortname>SWR3</shortname>
+ <icon></icon>
+ <frequency>89</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432B6C61777304E167043895D17D0A6492873ED0934A619C68CC520E112D94D27BC</stationID>
+ <name>Eins Live (WDR)</name>
+ <shortname>Eins Live</shortname>
+ <icon></icon>
+ <frequency>106.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10919654329308AC8E71B8FC4D61187AF307BE23237C1B66DFC6379A919758D604F6D060D3</stationID>
+ <name>SWR1 Rheinland Pfalz</name>
+ <shortname>SWR1</shortname>
+ <icon></icon>
+ <frequency>88.0625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432D9C65CC76A835C994AEF3700025DCCECFFB16C0FBC51BF3D816A2F526F3274BF</stationID>
+ <name>SWR4 Rheinland</name>
+ <shortname>SWR4</shortname>
+ <icon></icon>
+ <frequency>88.375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432126F3400FB276A7F0B36E59197E8A5276368F9C758D4AC8484C31DE7A449CE02</stationID>
+ <name>WDR Radio 5</name>
+ <shortname>WDR Radio 5</shortname>
+ <icon></icon>
+ <frequency>90</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432F2FA50B40160F8A54709EE8AA2E93BD696F76705180485A7DBF971BAF658A4B4</stationID>
+ <name>WDR Radio 5 Funkhaus Europa</name>
+ <shortname>WDR Radio 5 EU</shortname>
+ <icon></icon>
+ <frequency>90.4375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109196543225C672BAF7CB49D8A250833B339C52FCE5B9779E4D71EB9D1EDD8C87A842EAB1</stationID>
+ <name>WDR2 Rhein-Ruhr</name>
+ <shortname>WDR2</shortname>
+ <icon></icon>
+ <frequency>91.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10919654327D9A0A34B1A1007581827BE936C2EA4C4AC5C195199E58825010CBF10712CF2A</stationID>
+ <name>WDR3</name>
+ <shortname>WDR3</shortname>
+ <icon></icon>
+ <frequency>91.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109196543269C5FC2BD1D9D81C00169634B55A4034EE983F724DC9C1DACDA0FAA297E535D6</stationID>
+ <name>WDR4</name>
+ <shortname>WDR4</shortname>
+ <icon></icon>
+ <frequency>92.4375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10919654328BE90ABCF3F24B951592DD897876F1CE5C733DBAC9E9B64963F716FBCF8AB132</stationID>
+ <name>NE-WS 89,4</name>
+ <shortname>NE-WS 89,4</shortname>
+ <icon></icon>
+ <frequency>106.438</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109196543241344CA97749BB683F7842A4D7480351B7BDBB90B4DB11CF8FA71C541E60DE2D</stationID>
+ <name>BFBS</name>
+ <shortname>BFBS</shortname>
+ <icon></icon>
+ <frequency>92.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432756AE782BDE5B73F49E39DD7C449E82DF715D1806B58E2D4BA35D74F2FCC4B4B</stationID>
+ <name>RPR2</name>
+ <shortname>RPR2</shortname>
+ <icon></icon>
+ <frequency>93.8125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10919654325B7CADB6D646420CED589A47F53B4819503A59CDC594DD798BD50F22744B5959</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <frequency>94.4375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10919654329A2E259791B3167CA34C23E19A6415D2297C097828CE0AACA9DC9760B5F19FEA</stationID>
+ <name>Welle Niederrhein</name>
+ <shortname>Welle Niederrhein</shortname>
+ <icon></icon>
+ <frequency>95.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432EAE69149BC0315CB738AD49C98539849D8E3806FED22A28B77E9CC9F90913FA2</stationID>
+ <name>JAM-FM</name>
+ <shortname>JAM</shortname>
+ <icon></icon>
+ <frequency>95.5625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10919654320489E32175648F8C03C116AA6DE4876090C2248B0C2B6BF6D3BCA60B3BF52401</stationID>
+ <name>RTL-Radio - Die größten Oldies</name>
+ <shortname>RTL-Radio</shortname>
+ <icon></icon>
+ <frequency>96.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432935A7453A576B8010143E9D9A19E4E3565F49B5C48128DA21B67C0D737E1D454</stationID>
+ <name>Radio 2 Niederlande</name>
+ <shortname>Radio 2</shortname>
+ <icon></icon>
+ <frequency>96.6875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432065C4D699F53904F5DA5E583087702CE18CD4B472C5FF7536741A6DD561058C3</stationID>
+ <name>Radio 4 Niederlande</name>
+ <shortname>Radio 4</shortname>
+ <icon></icon>
+ <frequency>97.5625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432530AEC38FC5ED09584143F5E77BC235C30AFBE57D6E86A1E885ED5003F2D0C22</stationID>
+ <name>Radio 3 Niederlande</name>
+ <shortname>Radio 3</shortname>
+ <icon></icon>
+ <frequency>98.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432EF14E1EAB658FB3327BF14C0AF89CAD79BA8E6D76D5B84828BEE7AB89B6B5E5F</stationID>
+ <name>VRT RA1</name>
+ <shortname>VRTRA1</shortname>
+ <icon></icon>
+ <frequency>98.5625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432D7B5EB99247E3E8B90D387E861ECF582C46440E060CB75C2D06F229F9D52EB7E</stationID>
+ <name>VRT RA2</name>
+ <shortname>VRTRA2</shortname>
+ <icon></icon>
+ <frequency>99.375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432477804F979C6D354F860AE64A6869D40756DA613C45974328E8A0DA141831986</stationID>
+ <name>VRT RA 3</name>
+ <shortname>VRTRA 3</shortname>
+ <icon></icon>
+ <frequency>99.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109196543220A2034A7D881A1129BDE217C87717DAF3918A005A23FF109D411224999F67A9</stationID>
+ <name>Belgischer Rundfunk</name>
+ <shortname>Belg.Rndfk.</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10919654322B508F69A45E287763623251DE59B9BECFF53AFC257D02EFDDC3E91BE8AD05D6</stationID>
+ <name>Deutschlandradio Berlin</name>
+ <shortname>DLR Berlin</shortname>
+ <icon></icon>
+ <frequency>102.188</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109196543282C53B41C28FE1EEECF051A46FF9804E5320B9206D0993FF6F7A13DAECCB98F8</stationID>
+ <name>Domradio</name>
+ <shortname>Domradio</shortname>
+ <icon></icon>
+ <frequency>102.562</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432D65853329016CF91629B7D85D7B29B9F586EA02D86CB1F6EA721E5D3137A3FC3</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik Radio</shortname>
+ <icon></icon>
+ <frequency>103.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109196543268DCF451410FA74CC30176836724456A3469449ADF05088F4AB5141811FA9C6B</stationID>
+ <name>Sunshine live</name>
+ <shortname>Sunshine</shortname>
+ <icon></icon>
+ <frequency>104.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10919654323E637EB45C00702C652FB2CC2751AECB5FEEFD98A050C02EDAA8288F8049A439</stationID>
+ <name>Radio Melodie - Heimatfunk mit Herz</name>
+ <shortname>Radio Melodie</shortname>
+ <icon></icon>
+ <frequency>105.312</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10919654323EF0052297367EE4C7120172CCAFE9B5DA20343BACFE0DB8E32A0DF79C443259</stationID>
+ <name>Radio Duisburg</name>
+ <shortname>Radio Duisburg</shortname>
+ <icon></icon>
+ <frequency>107.688</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/moenchengladback-cable.krp b/kradio3/presets/germany/moenchengladback-cable.krp
new file mode 100644
index 0000000..829279e
--- /dev/null
+++ b/kradio3/presets/germany/moenchengladback-cable.krp
@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Stephan Marx &lt;stephan@marximum.de&gt;</maintainer>
+ <changed>2004-02-23T19:39:13</changed>
+ <country>Germany</country>
+ <city>Moenchengladbach</city>
+ <media>Cable</media>
+ <comments>ISH Cable </comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>109128658104EA07115201515183E0F11CC934748DF94C107BEA09ED9699CE63BEC7D348CC</stationID>
+ <name>WDR Radio 5</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>87.625</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912865819435C7139F4D7235BC9C0F8DD3B0753D02ADBA3385C8DC820E5DB12061DC0572</stationID>
+ <name>WDR 4</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>87.9375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912865811D4C4584AE7E853BE5FE28C4497CC5EF18C9DB861BAE61CDCF982DE8EB1A4F96</stationID>
+ <name>WDR 3</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>88.375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091286581E32829639E91DE8E7802C11CEBE9137FA90D991366817A95D9BC1053103D390F</stationID>
+ <name>WDR 4</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>89</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091286581915F5CF2F3AFB4476538A21C04310546ED4ABB39EEED2839F5933DAF9E96FB5C</stationID>
+ <name>WDR Radio 5 Funkhaus Europa</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>90.4375</frequency>
+ <volumepreset>0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912865814739D31B4437732BC74FFE884701A2352CDB6FD7DE7B561D3C2F83569636A7E3</stationID>
+ <name>sunshine live</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>90.8125</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912865819D7727B74678607F54F252828D30CC42AB96C51BE71CD7E99AA773CED903423F</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>91.375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091286581CF9A984F1F925F011B35525F297AA9203E982C5840EE2CECD0F9B557F66B5528</stationID>
+ <name>Welle Niederrhein</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>92.5625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091286581767EE58A36BDDF801AD859848EA57E96AF5A68008CB11436FB0810949ED4A64F</stationID>
+ <name>Eins Live (WDR)</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>93.375</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091286581B3968F6EE072191E8C5A3A54C88CD85444EF6AF3C8D0381CBDA4641889673AFE</stationID>
+ <name>domradio</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>93.875</frequency>
+ <volumepreset>0.02</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912865815D8302EFA1EA77F8B92C2BAEB5C94E947DFE4ACEDA3AFBCC0BFA20091CCF5289</stationID>
+ <name>Radio Melodie</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>94.4375</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912865812A391FB0EC0952C05C977DC90D2C2264D15EF3985A4570197CC2C316052381C5</stationID>
+ <name>Radio RPR Eins - Rheinland</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>94.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912865815343A5CED48A78ECB6A6AB4B418D4D5951A7D502AABE89CEBDF00936589B8F62</stationID>
+ <name>BFBS (engl.)</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091286581026F8F7BD869CE803C912D116F7ACC2AEAE41A91F147F20904BD53E3D82410B7</stationID>
+ <name>Klassik Radio</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>96.0625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912865814C3E210D871E44891EB6C4B9CB6DA48BB958AD1A90711FDB6B88F1FEA907C9A2</stationID>
+ <name>Radio 90.1</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>96.8125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091286581BC8B8C8AF73AB20F4F6B3AE17056477CE27EA800D58E50510356081092F6D2F2</stationID>
+ <name>NE-WS 89,4</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>97.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912865810F939778E9A5D85008435BB65D035204021BD97E4DB755F7F1F074EC6DC876A4</stationID>
+ <name>SWR4 - Rheinland</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>97.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091286581B6BAB994508175805AA9B7898010146DD71651F175675ADDB0C98C36FB9B7906</stationID>
+ <name>SWR3</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>98.9375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091286581E2CB99B76D91E938653A3475D66A6E62B514BCA49F6F948EC76DCD367197886D</stationID>
+ <name>SWR1</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>99.375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109128658120BE1E11822ED6887472164BF775BD9DC6E8C61C3B4F0BFCA400A7C6A6ED9874</stationID>
+ <name>FM 3 (niederl.)</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>100.188</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912865812FB4345C53B38950E69A84A931C1EBBE7DAB618AE531D0C7FD941F5E47A1A78A</stationID>
+ <name>Radio 2 (niederl.)</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>100.562</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912865811E69F300D452CE71C0BD45FDE288AD5CB88E4501F981B60E30E28021090A5C3F</stationID>
+ <name>Radio 4 (niederl.)</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>101.688</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912865817BE3404D0953F5CDC1E9C675FE47E486B85FC361336B60F7407CD1157155E395</stationID>
+ <name>L1 Limburg (niederl.)</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>102.312</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912865812D94DBADECCF8AC6AE4F54C60FD946FF9C71C044338AE942C2EB2C5392A1154B</stationID>
+ <name>Belgischer Rundfunk (deutsch)</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>102.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091286581C4E7C0AFACCBE69F6FF452B7F34FA5488DE2E0CCCDBCDA6C3F4D6F2273D8FCF6</stationID>
+ <name>bigFM - Rheinland-Pfalz</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>103.062</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912865810E15FCAE01AF5812B62FFBCD8DC7399AB06463795C66B3A39DA4CE1DF8CBDE33</stationID>
+ <name>RTL Radio-Die besten Hits m. Gefühl</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>104.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109128658108F677D0C1FAFBE6E1CCB63A7BF660E8370CCD789FC5D6561177FA414FF800FA</stationID>
+ <name>JAM-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>105.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091286581BB78E7F4112335DEDECC8AA06A477EE617DD2086D7667262ED481AB28A1D45CB</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>106.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912865812A416D6FEC519151699BC4EC72780B42C7FC6C186038080D4E002FF2CF30382E</stationID>
+ <name>VRT Radio 2 (Belgien, flämisch)</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>107.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/monheim-cable.krp b/kradio3/presets/germany/monheim-cable.krp
new file mode 100644
index 0000000..efe4d6c
--- /dev/null
+++ b/kradio3/presets/germany/monheim-cable.krp
@@ -0,0 +1,229 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Uwe Kuhlmann, Uwe.Kuhlmann@web.de</maintainer>
+ <changed>2004-12-07T16:09:53</changed>
+ <country>Germany</country>
+ <city>Hilden</city>
+ <media>cable</media>
+ <comments>Gilt fr Hilden / Langenfeld / Leichlingen / Monheim / Leverkusen
+(any comment and thanx welcome!)</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1116455444E930A36E9FBEF9268D019DAF686F6826B8A944424EA97AC7F5907164555F2C1F</stationID>
+ <name>SWR1-Rheinland-Pfalz (87,6)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>87.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444296A2451A54C541CA030097D83FB40699FE18427F8FA098D0BD142AEAC0C9737</stationID>
+ <name>SWR4-Rheinland (87,9)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>87.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444908885E0A629E1B05EB87772B5A82D799FDA049DD4FD5DB006D6C7E85F397BDC</stationID>
+ <name>SWR3 (88,35)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>88.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554441B77595FF74CB7D977AF7E61E23F2756E24F03A8B7639024939D01B4A0D035B3</stationID>
+ <name>WDR2-Wuppertal (88,95)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>88.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544489A63B79206C7ACA458CE9B4A83FD47B7FB35FDA7B211F207631BB6F63849F1B</stationID>
+ <name>WDR Radio 5 (89,70)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554449C72FA256794F433156234BF665901851C35513208690C76E0804BBEDEE1948B</stationID>
+ <name>JAM-FM (90,05)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444DCB55A2CFBDC2CAC92DA5859FAFBC5470509C0BF57C77901E22A2067E66637D3</stationID>
+ <name>WDR2-Rhein-Ruhr (90,6)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444B7BBD2E3B3C31719986141271B789B2A1E8C412B0D56D2AD3DB006B974AF4EBF</stationID>
+ <name>WDR4 (92,15)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>92.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444A2AB74531725ACA3332063A16990783384DFE95F68B92EA4E1A411F0685470FB</stationID>
+ <name>Radio Neandertal (92,5)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554449CF294D156BE1D45B9D9AB36E0A0BD8B17F425B676316F966306B6F24F72FC9A</stationID>
+ <name>DeutschlandRadio Berlin (93,35)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>93.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444C91DC7883261480D3A5B215FC90589C72EC30F8F8811A495FF780B994C081F6D</stationID>
+ <name>Eins Live (WDR) (94,05)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544442418DBD7EEDC1828DBB1D21D933835D56F8302627605E7FAA94AA692B64D40F</stationID>
+ <name>Deutschlandfunk (94,45)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444B1EDF07BBFFBF62F13873B339258CB3E6A09CD81515F0812312697187C1B54CD</stationID>
+ <name>RTL RADIO - DIE GR?STEN OLDIES (95,3)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444EA36C952216FE2B7BF2635BB1308F2FAB9B837EFC6D480D51237DB18DB6F397A</stationID>
+ <name>WDR Radio 5 Funkhaus Europa (96,75)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>96.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554441C663188B212D1EBCC2550CB7DD28456B09FBB06621E079BFA20D0CEF6317B51</stationID>
+ <name>Klassik Radio (97,05)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>97.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444D29F0550134B6866A25991BA9157F58C7BE0CF8B98A4C8F4F162C24BCAB02947</stationID>
+ <name>Radio Berg (98,80)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>98.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444CED892B4065AB237C76616D6E69FF1888DE2D2FA14EB23AF705F41A9C3D75F5A</stationID>
+ <name>Radio 3 (niederl.) (100,9)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444C4A1EADF40A019C711089B6C2567D5E7110CB4FE60A8DD483F893F23229FAD11</stationID>
+ <name>sunshine live (102,0)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>102</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544471A8E7C84A12F26120D3210A2AEB4534039F7847B5DDAEAD79A580E7DC0CCA08</stationID>
+ <name>Radio Melodie - Heimatfunk mit Herz Mnchen (102,5)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444FFDE9A0CA5FFC05D129AFEC3DAEC94FF997351D8F9A223DC6F4AB63CD07E0F50</stationID>
+ <name>SWR2-Rheinland-Pfalz (103,05)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>103.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444AC20EA07FD7DAAE8C08BEB5788C8C88598CAE46F145BAF9CE1B3162BE8E840B9</stationID>
+ <name>Radio RPR Eins-Rheinland (103,9)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444BD54235E0C0FC38CDB9CAF5AE783FC2561B59D577162A455C121AD0E195023A4</stationID>
+ <name>Radio RSG (104,25)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>104.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554444A28F0261FF9C0B839AF18BE00C48BC8F6E7C65E1CF957126302D08F1DCB9F8F</stationID>
+ <name>RPR Zwei (105,4)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>105.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444DBBD85FA2753205B567D6DF4A5833B22FC3A734A6F08DAF38F789AA9CF7D8691</stationID>
+ <name>Radio 2 (niederl.) (106,15)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>106.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444FE772C3B053D995F66A6E857AAC7D1E998BA57245A5476107CA29B1F9F3F63B9</stationID>
+ <name>Radio 4 (niederl.) (106,45)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>106.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444DD5F31FBDBC0C13788E5CA7D76C0C5AD83FAE15C0E7D78BE174478B347638C97</stationID>
+ <name>domradio (107,05)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>107.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+--
+Email created with Kontact 1.0/Kmail 1.7.1 on SuSE 9.2 Professional
+Visit http://www.Kuhlmann-Privat.de for having a good time ;-)
+--
+Email created with Kontact 1.0/Kmail 1.7.1 on SuSE 9.2 Professional
+Visit http://www.Kuhlmann-Privat.de for having a good time ;-)
diff --git a/kradio3/presets/germany/muenchen-2.krp b/kradio3/presets/germany/muenchen-2.krp
new file mode 100644
index 0000000..1e8efef
--- /dev/null
+++ b/kradio3/presets/germany/muenchen-2.krp
@@ -0,0 +1,294 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Raphael Mameghani, &lt;raphael@mameghani.de&gt;</maintainer>
+ <changed>2005-09-05T05:56:26</changed>
+ <country>Germany</country>
+ <city>Muenchen</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1133103256BE88C2DD77FA9B47550DA9D406523C31BAA8C49FB921C8FC48FE7FA47A920B4D</stationID>
+ <name>BR1 - Muenchen</name>
+ <shortname>BR1</shortname>
+ <icon></icon>
+ <frequency>91.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032563E25481EF54346F7005E25483EE9B58E3CECCBD7906E070C3457D92E3FEE06FE</stationID>
+ <name>BR2 - Muenchen</name>
+ <shortname>BR2</shortname>
+ <icon></icon>
+ <frequency>92.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032560508D6BBFE511E67B17E6EE390910DFF55FBBFABB465EBC63E9EA987F0680AD9</stationID>
+ <name>Bayern 3</name>
+ <shortname>BR3</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032566E22C4F631386E9D836059D90663D6D339BF0EB68AB32A5D8214BCDCF10EC1C9</stationID>
+ <name>Bayern 4 Klassik</name>
+ <shortname>BR4</shortname>
+ <icon></icon>
+ <frequency>91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032569C6DCDBD9AC2DC32D151E726A62F48F2D652210A277349348FDA2B3D22E92733</stationID>
+ <name>B5 aktuell</name>
+ <shortname>BR5</shortname>
+ <icon></icon>
+ <frequency>90.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032565C2B3985F4C1D0D0553C51BB6627B08E23566C05CA2D464B2A50F9825308DFB6</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <frequency>101.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032566B4B233ADF426FD91D17E60C047373926D631E82124BA1580A89E9F3F16B98BC</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>DRB</shortname>
+ <icon></icon>
+ <frequency>103.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256205BCA2741E14472BBC811C7631A05D7056AF5A95FA27DBA94F8E3FBCB0AE3EB</stationID>
+ <name>SWR1</name>
+ <shortname>SWR1</shortname>
+ <icon></icon>
+ <frequency>103.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256D46C4E212EEFF59AD92B1BE529CC126874E37862507FE7B81C7C5DB18769B6F2</stationID>
+ <name>SWR2</name>
+ <shortname>SWR2</shortname>
+ <icon></icon>
+ <frequency>102.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256B2146A084C2BFEAAA867868EC112C9CE3E4F87CDAFC0F0FD7E4E82191D84FA61</stationID>
+ <name>SWR3</name>
+ <shortname>SWR3</shortname>
+ <icon></icon>
+ <frequency>102.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256CEC59E932DB5E1D8B1E3FA91B2545933605CC65FDCF44B2611BF67BE35E85470</stationID>
+ <name>Oesterreich 1</name>
+ <shortname>Oe1</shortname>
+ <icon></icon>
+ <frequency>87.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256C3154C76FF11B937675CDA54147A12004C29C193A92CD468F9682F3D39D8C42F</stationID>
+ <name>Oe2 - Radio Salzburg</name>
+ <shortname>ᅵ</shortname>
+ <icon></icon>
+ <frequency>88.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113310325646FB56918DDC8A79A2A031C3F8EC09F7F580BE9E037D8ECAEBD04B5805D320F2</stationID>
+ <name>Oesterreich 3</name>
+ <shortname>Oe3</shortname>
+ <icon></icon>
+ <frequency>88.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032563B00EA4DF6ED23A4A139076D2F7406CEFA05916BD18A3642DD64058898DEBD55</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik</shortname>
+ <icon></icon>
+ <frequency>107.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256AD2452EF97530E1F4CE33D1EBCEEC4A9846A6A6CEEE892D62694D14831AD80CD</stationID>
+ <name>JazzRadio</name>
+ <shortname>Jazz</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032569123E0C9FBA9B29D95533A52FBDBE2BEDCF3DB2CE1E38BDA329A6D1D0D514741</stationID>
+ <name>FM4</name>
+ <shortname>FM4</shortname>
+ <icon></icon>
+ <frequency>90.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256E5A1E1D4EAB02081F42BC9ED52B2F0164151A3A796B521FFAFAE0EB9EDA0F9FF</stationID>
+ <name>Radio FFB 106.4</name>
+ <shortname>FFB</shortname>
+ <icon></icon>
+ <frequency>94.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113310325659A6B9D1C58B6B7D297BF290976564B8005A4BE3229EC9CAD3B7725974D87CF0</stationID>
+ <name>Antenne Bayern</name>
+ <shortname>Antenne</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032569FA86F67E98CE0B801178DAEE4ACD84DA7390E17C95C530758ACB6D29BA0C466</stationID>
+ <name>Radio Energy Muenchen</name>
+ <shortname>NRG</shortname>
+ <icon></icon>
+ <frequency>97.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256C9168D63E26D43DDCC670CD9D3E31E1E30F1B0669FCA1936B173DE1932398FE9</stationID>
+ <name>Radio Charivari</name>
+ <shortname>Charivari</shortname>
+ <icon></icon>
+ <frequency>97.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032569C17ED2A7219FF83437D45FBC7C5B8181B7C3CA759889C89F041DED4A47EE60C</stationID>
+ <name>Radio Gong</name>
+ <shortname>Gong</shortname>
+ <icon></icon>
+ <frequency>98.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113310325600A0D15F3CEAD8FA75102B59DC2CDBF1A13057ACE5727BAC76826B0EC487C9AE</stationID>
+ <name>Radio Arabella</name>
+ <shortname>Arabella</shortname>
+ <icon></icon>
+ <frequency>98.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256018534858EBB1C937FB4F70C1B3E615332F2EFA036779C28FF32FB711B812920</stationID>
+ <name>Radio 2DAY</name>
+ <shortname>2DAY</shortname>
+ <icon></icon>
+ <frequency>96.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256ACAAD45FA14B1BF78C899E4A9065D8DA80B76251588BBB26B0A05013497702A3</stationID>
+ <name>Radio Galaxy</name>
+ <shortname>Galaxy</shortname>
+ <icon></icon>
+ <frequency>95.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113310325620822F693B6171169E13D015EB35543549CB8529B3424F045F565F76B8C31A76</stationID>
+ <name>Rock Antenne</name>
+ <shortname>Rock</shortname>
+ <icon></icon>
+ <frequency>99.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032569C44AB16F07D7E547731738B2B9FA0AFED286DBA6C8596AC522FAC007EE64243</stationID>
+ <name>Radio Deluxe</name>
+ <shortname>Deluxe</shortname>
+ <icon></icon>
+ <frequency>105.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256A98A329D3DEF0D7500232A3CA622686B7CBD44C9C109F83EB172F0528604A92F</stationID>
+ <name>Fantasy Bayern</name>
+ <shortname>Fantasy</shortname>
+ <icon></icon>
+ <frequency>106.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113310325675B909896405762EA678619CDACB4ACE5920BD2B9336DB76867A8F8531876008</stationID>
+ <name>JAM-FM</name>
+ <shortname>JAM</shortname>
+ <icon></icon>
+ <frequency>106.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256C806DC2E481A5EF777C6F248C0FD62908A267861EE9F12887F342619295FCD08</stationID>
+ <name>Sunshine Live</name>
+ <shortname>Sunshine</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256EC85FDE58A157841362A4CB48A3C07C5ABB6EB407A2FA8EC2476440D0D906BA7</stationID>
+ <name>RTL Radio</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <frequency>104.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256228362F85C96A485201A9FCEC37EFD11DEF8EF9585BF9A0513121045453FF534</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Melodie</shortname>
+ <icon></icon>
+ <frequency>100.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032562BA908CF9E43517294C813E8411A7FB21CFFBFDE3BD039B026E1A545312B5313</stationID>
+ <name>Feierwerk / LORA</name>
+ <shortname>LORA</shortname>
+ <icon></icon>
+ <frequency>96.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032567759F3ADF484F923EBA1959B5E421D08923E0B4821BE8927B367AEC0AFEAD9A9</stationID>
+ <name>Aus- und Fortbildungskanal Muenchen</name>
+ <shortname>AFK</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032566C0AFA12539115AEC20536684126FFA930FE2126FB654A79A1C3532ED54E9AC1</stationID>
+ <name>BR1 - Oberbayern</name>
+ <shortname>BR1 OB</shortname>
+ <icon></icon>
+ <frequency>92.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032563A72E463F56F9A8C0B02B196A41285B6EF3A09F3F9ED4BCA60646B912BFC7ED9</stationID>
+ <name>BR2 - Oberbayern</name>
+ <shortname>BR2 OB</shortname>
+ <icon></icon>
+ <frequency>89.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/muenchen-antenna.krp b/kradio3/presets/germany/muenchen-antenna.krp
new file mode 100644
index 0000000..9925a2d
--- /dev/null
+++ b/kradio3/presets/germany/muenchen-antenna.krp
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Thomas Betker, &lt;thomas.betker@freenet.de&gt;</maintainer>
+ <changed>2005-02-13T17:00:00</changed>
+ <country>Germany</country>
+ <city>München</city>
+ <media>antenna</media>
+ <comments>frequencies taken from http://www.muenchen.de</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>11164554443B62494408466C87E10D72AF5F168C3F1E40FDDC10289F847118CACF404FC45F</stationID>
+ <name>Bayern 2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>88.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444FE41BBF52D2FCDE2B2548374C026722B3EF584F59F418022EC68F536DC90FA05</stationID>
+ <name>Radio2Day / Rundfunk Neues Europa</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>89</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554442E31D7B1DC156F656DB47D3E85C3859C1391ACE7D6C94355D285E05A163A2368</stationID>
+ <name>B5 aktuell</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554440B1BAC789AEC29ED78E283924B545074BAE05FB87F1A1FAF3599FAC501FAAB27</stationID>
+ <name>Bayern 1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554440B468B128F27AD63BEC5B3D0D610AB94B179A604410320B857159AE5181CB58E</stationID>
+ <name>Radio Feierwerk / LoRa</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>92.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554442400BA291248EDE7F8D36599D42AE0F5B3DF1AC639FEBA24CB285FA7F79B6FB1</stationID>
+ <name>Radio Energy (NRJ)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444CF99E4B66B4E64A707AA7CFF356983D32E542F1871A5AA249516E0A1E99681FC</stationID>
+ <name>M 94,5 (Aus- und Fortbildungskanal)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554446CFDA64A956DDC6F05CC4D8FF66ABB85EE494B23637C192CEFA20D4B224D8C76</stationID>
+ <name>Radio Charivari</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444BE34BA09F91ECE8885C50AD2D87EF5FBA6118BD372FE9A5410D330333247B77C</stationID>
+ <name>Radio Gong 96,3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544485103FC4378563476FA2D9301C5F4D49FDF67F89271112C87BB7B7ABA46BB871</stationID>
+ <name>Deutschlandradio Berlin</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>96.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544479450443C4150C617CDC534D27372477DED16162E53F43590203A132314AD758</stationID>
+ <name>Bayern 3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444556EC0712462820CA4DE1B5E3DAE830E85566D3E44834ECA0B64C5FE796792BB</stationID>
+ <name>Radio Arabella</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>100.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444D6BA0E8C6902A3C7413ACAE00CCAB7C0C0AA775121F82DC6421E8A827F5D5580</stationID>
+ <name>Antenne Bayern</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444F6BE17786DDE22F46A47EBD8ED5651CEB7F6B73C24B98362EEAAA82678DD1E1C</stationID>
+ <name>Deutschlandfunk Köln</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444D1BDB4D89A706161ED6D9A3C6DEB8BBEA38D66C9EA73C14DFFE65C259AA4C875</stationID>
+ <name>Bayern 4 Klassik</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544457B171673EBAFF9C721CA837633B07DBB465F88D03BAFF8BE1F029D298DB8986</stationID>
+ <name>Radio Melodie</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>104</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554447BCAFAEA21FDE96D691FED5CE0F67ACC3D87A15D83AA31393A057C9973CA6519</stationID>
+ <name>Klassik Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>107.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/muenchen-cable-2.krp b/kradio3/presets/germany/muenchen-cable-2.krp
new file mode 100644
index 0000000..18d39bc
--- /dev/null
+++ b/kradio3/presets/germany/muenchen-cable-2.krp
@@ -0,0 +1,319 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Markus Heller, &lt;markus@relix.de&gt;</maintainer>
+ <changed>2005-01-31T23:40:10</changed>
+ <country>Deutschland</country>
+ <city>Mnchen</city>
+ <media>Kabel</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1107134838A370C4F108173A1B1AE51BEB30176A066FBD960BBD4EF0AD45180FE2301B0435</stationID>
+ <name>OE 1</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107134840EE879EE177A26A2046DDFC84FC3F297029D8DED712C0665FB9AD281F117C607A</stationID>
+ <name>OE 3</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107134842CECED019AA1BF843331E625D375F7A7B19ABA2C7D13ED8A28C4952989F71D3C1</stationID>
+ <name>FM4</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107134839341B699FE576DF6A43803676BC131907B27004AC0BFDB3D874A9A3760BADF55C</stationID>
+ <name>Radio 2DAY</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11071348414AAC2445EFA9ED0AFFE7212F46AC0320997591E1719E3AE4DE2164E5040AB9C3</stationID>
+ <name>Lora</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11071348577CCECB0B26B3C57CB9B3D0DB1D704C7AD0FAC0BB43DDC8384B3D82811CF33166</stationID>
+ <name>Radio Arabella</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11071348661D160CED236E63BE8BEB97BAE835A0225C46C270E0F5CDCE87B8593195834AA1</stationID>
+ <name>SWR1 BW</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107134864413EA54C791A13BAEB70D39E79BDC376807443E1382E2BDF1A866C73182ECA3F</stationID>
+ <name>SWR2 BW</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110713536995F6A12DC0AAD8D31916AC99DBE71E4531F10C570CEFD284AA6FB1544724E540</stationID>
+ <name>SWR3 BW</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.151</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107134845F18A7DD1EEEE339CB01B01A48773DDB584FEC223BB049491701AB187F6C406E6</stationID>
+ <name>Bayern 1</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107134846184F0529F279C73F5E92B2AF6766A0D9748FCC0AAB54443AAEE1BA2289C68646</stationID>
+ <name>Bayern 2</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107134844942EF7F111DDCA18B877AA01DCD83133FFEADB87AFD6C9C9D99BD3DD8A5574B1</stationID>
+ <name>Bayern 4</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107134843239B9CA7A36A48EDDA34A47A16B3322BF80E0BD9891FEB8476EAA083C0F5B8B9</stationID>
+ <name>B5 Aktuell</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107134873E635C300EC205C7F3E9A0A5AAF633266DF95642444859CAF978D87089083BE6B</stationID>
+ <name>Klassik Radio</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107134862400C57CAA13B048706C0C701F3F612B5C3ADE7793F844CD3B4BCD84FA058FECC</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.426</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107134848ADF9310665F098D7EEE963B76F0F1CFEF3F8CCABC9E314875D8FA1A6703389BD</stationID>
+ <name>Gong DAB</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107134866AA0EB984E2C26716712664A24DE75ED05360CF07A2974FD75EF4B1D82EB06804</stationID>
+ <name>Deutschlandradio Berlin</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.85</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110713486308B8994DC1E3526D860D54AEE8832C7B423E861008E23CAD8D73B48758939DF9</stationID>
+ <name>Digital Classix</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.851</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11071348591C94585282D155C3DA64941AA70042C050ED23596E75B353223E4A40574DD104</stationID>
+ <name>Antenne Bayern</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11071348585DFFCFC7D7C8DD671FC90D410E67CCA0A2A1CB174777865BB9C7EF073A287E01</stationID>
+ <name>Rock Antenne</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107134849BBAA561FBFFB7D4544E399BE3D5CE747FAD1F359E1090D6B1B798EC387106FC9</stationID>
+ <name>NOVA</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107134850B29B6DDCEB2F46AE6EF5F34364DA91DD73B5CEBAE20C9527ADD7230A18F4D91D</stationID>
+ <name>M94.5</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11071348542F492B4CA8CE7F2838401C3E5F93019F6FEC2397F0C2CCDD66F66F670FB1ECF9</stationID>
+ <name>Energy Mnchen</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107212354CF16F5BF4BC5DAE716494F9133880C209E4CB9835C51E0C751BA08EA26FE3BB7</stationID>
+ <name>Radio Charivari Mnchen</name>
+ <shortname>Charivari</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107134869446A167C53E719B49C81EC369469CBB91FF83DEF5754B4E9FCB033A9DDBB1741</stationID>
+ <name>Radio Deluxe</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.176</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107134871B65170369959AD1AAFBB5EF1D1E37473B5C08F112A80C280D4188F4A77ECE3C1</stationID>
+ <name>Fantasy</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107134855E4D118E9D3526EEE2D6008B530044B13791FE5E640491D391E54CE46731DB8DE</stationID>
+ <name>Neuer Sender 22</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.826</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110713485638E99715731CC9F6CA6EB2CF36F8AD701D187FC44D0C43C19536ABFA08270904</stationID>
+ <name>Gong 96,3</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.3761</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107134868EB246411500E8B2429F6FD53CE3E0176CD71F3E1A2B4971F422FE1E44B941C72</stationID>
+ <name>RTL Radio</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107134870DFC6DBCC5E7742FBA4A7B9B9E032D5CFBDF3115DE853F09A6AEA9D7274A5C5E1</stationID>
+ <name>Jazzradio 101,9</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.526</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1107135379D8B2AA995E7F65138522B0E00448FAD98A39512D7D394C147C9CFC54FB28CA67</stationID>
+ <name>Sunshine Live</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11071348605C8BDB7EA5C1551709301C09374A3568C9D12EA6BD8E8AB30006D9F34444FBA8</stationID>
+ <name>Radio Melodie</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110713487209622B19061BFE2417113BF88E5988D35E6BD68C0F83D155C6A28E9687B4A767</stationID>
+ <name>JAM FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.677</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+--
+Markus Heller, M.A., PhD student in Computational Linguistics
+Schellingstrasse 43, 80799 Munich, Germany
+markus@relix.de // heller@cis.uni-muenchen.de // Tel. +49.173.3835315
+GnuPG Fingerprint: 3BED 68EF 84B9 A701 C2DE 1E9D 2184 A06D 9A9F D0E8
+
+
diff --git a/kradio3/presets/germany/muenchen-cable.krp b/kradio3/presets/germany/muenchen-cable.krp
new file mode 100644
index 0000000..1a53cb0
--- /dev/null
+++ b/kradio3/presets/germany/muenchen-cable.krp
@@ -0,0 +1,318 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Christian Messerschmidt &lt;messi@trockner.net&gt;</maintainer>
+ <changed>2003-04-08T23:41:56</changed>
+ <country>Germany</country>
+ <city>Munich</city>
+ <media>Cable</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385349EF7BDEFFF60467B277914CD342C74B67D767B622C496B1357276AC72C132CB9A</stationID>
+ <name>ORF Oe1</name>
+ <shortname>Oe1</shortname>
+ <icon></icon>
+ <frequency>87.8125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349C45C93164590782CB58C2436F1D079671F498CFFB743C51E7E836F315D3FC5B5</stationID>
+ <name>ORF Oe2 (Regprog. Salzburg)</name>
+ <shortname>Oe2</shortname>
+ <icon></icon>
+ <frequency>88.1875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853498503057697E64F5A37123AA606558810079463E5108A18E8443D4493AF2D3606</stationID>
+ <name>ORF Oe3</name>
+ <shortname>Oe3</shortname>
+ <icon></icon>
+ <frequency>88.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349B7502A0CB8242A76C6BEF81BB0EC2F2120D005AC70D3D659963CF5FF2B2A4319</stationID>
+ <name>Radio Horeb</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>89.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349802D8C99BDC05B4F93489D17CE5A3A1860D80E08C0B5E07BC0E52FC65376E9A6</stationID>
+ <name>ORF FM4</name>
+ <shortname>FM4</shortname>
+ <icon></icon>
+ <frequency>90.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853496BC15309B90EA033DFB77A40EEAC0590E05567D3E044322A7652E65420994833</stationID>
+ <name>BR5 aktuell</name>
+ <shortname>B5</shortname>
+ <icon></icon>
+ <frequency>90.5625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534986A98BFF4CA835C849032FEF2EB0E97BD7D440C96B42E12E8E5A093CAAA71CB8</stationID>
+ <name>BR4 Klassik</name>
+ <shortname>B4</shortname>
+ <icon></icon>
+ <frequency>91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853492DA6C0B6975636BEF2607724BE39EF78B5E26CA2CB65736A0A9ACAAAFFE136CE</stationID>
+ <name>BR1 (Regprog. Muenchen)</name>
+ <shortname>B1</shortname>
+ <icon></icon>
+ <frequency>91.6875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853499357613AA6E490DEDEC894E63E0C4790EFCC435CC74869FD719C1E666D5E6E36</stationID>
+ <name>BR2 (Regprog. Muenchen)</name>
+ <shortname>B2</shortname>
+ <icon></icon>
+ <frequency>92.1875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853499EEE589DB13BD9D9DBB3C0B77115D4DB31255238C46FF170564F17394EB15E03</stationID>
+ <name>BR3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349105BD9734B72133A08DED8543AF0E419779C42D216F203F438370E419EA529CB</stationID>
+ <name>BR1 (Regprog. Oberbayern)</name>
+ <shortname>B1</shortname>
+ <icon></icon>
+ <frequency>92.9375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349F55D06B90BE649723C068E4CCDBEAC4AE255F829A4943263A59CF09DC03D7B78</stationID>
+ <name>Gongmobil</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>93.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853496DE2F131C1F2F4CD1EFC2C468F842D6A29A2966F6883F31133A817CEAC859702</stationID>
+ <name>Citynews</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349584E856AD4B01FBF1D41F2B5FCD577943933C2FA4C8DE3914A0303F821A10B35</stationID>
+ <name>Radio 106.4</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349E6BE13FB3012898B948AC4757E4E5851BD30D82AFBDF9EE1FE738F793A65A2E0</stationID>
+ <name>M94.5</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.9375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349D382DA3483EB9D98371B71F02DB5888BD009E72B10DE608A7E8CE8B48993B86B</stationID>
+ <name>Radio Galaxy</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>95.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534935609DB06FF3F80594FB81FF336AF51A50F0559CB092CE6D2EFB315E0273311D</stationID>
+ <name>Radio 2Day / R.N.E.</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>96.1875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349A8ADDEF1ED05A6E59F3E4AA3B5FF68E44086A327F5876D9964E17BAD4E7628D2</stationID>
+ <name>FAZ Business Radio, Feierwerk, RadioLora</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>96.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853497EC4B9D260B67E7188F92FCA8C0C452F6F327F13B4E206CA9A19EEA88DF7E9C3</stationID>
+ <name>Radio Energy</name>
+ <shortname>NRJ</shortname>
+ <icon></icon>
+ <frequency>97.0625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349D1BD41FC34234EE71E8C76257C7F3BDA5C576FF70006D83E48992D2A27EC4EC0</stationID>
+ <name>Radio Charivari</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>97.8125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853497E6196B96382242CC430AAE9C6CFAE144AA18B24F85B6FA1C78DF6FE66FBDF08</stationID>
+ <name>Radio Gong</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>98.3125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349BBB88C59C52F2EB5B3E23822952B027E6BF179270715E699A84F518FFA64A9E4</stationID>
+ <name>Radio Arabella</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>98.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349598422DCCF420390F884B06A866C16EAE46C011B742AAEDD848639A4011E3397</stationID>
+ <name>Rock Antenne</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>99.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534901E1C7C180B31FC02A4E8D4BCEB1B0E5C4A8BC9C01982CA3DEB7ACD00D1F805C</stationID>
+ <name>Antenne Bayern</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>99.9375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349CA9875A63287D057707AEDF3B868F80D0D97140860BF1706A2AF8CBFF3C22003</stationID>
+ <name>Radio Melody</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>100.562</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349C401B1925E9138CB6F1D46E1AC8B6C3A436043D643311E391F7C24E134EA38AC</stationID>
+ <name>Deutschlanradio /DLF</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <frequency>101.438</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349DEF4147899C8F1ACDF346A17F252F00AF6DA5C231738C785980D6654CDF7C0FA</stationID>
+ <name>City Classic</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>101.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349AACE56CAEE58541335F05E0D0F9643A6700EA23E6182C26C1F712461710B334B</stationID>
+ <name>SWR 3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>102.188</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853492BD1313906ECA226369EA858E439729C141CABD29B99B82294FDDDBF431921FE</stationID>
+ <name>SWR 2 (Regprog. Baden-Wuerttemberg)</name>
+ <shortname>SWR 2</shortname>
+ <icon></icon>
+ <frequency>102.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349AD1408A2C0E0CBBD4F3A047C5BDB9EB09286A1CA4B878C3FEC898D5573BA31BD</stationID>
+ <name>SWR 1 Baden-Wuerttenberg</name>
+ <shortname>SWR 1</shortname>
+ <icon></icon>
+ <frequency>103.438</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349D3CB3FB5393DEE670D729F6A2C0653263C34BE88838AC5D4416B640B6D31D58F</stationID>
+ <name>DLR DeutschlandRadio Berlin</name>
+ <shortname>DLR</shortname>
+ <icon></icon>
+ <frequency>103.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853496B9F16B205CAD834E2FDB6712A8425FD626F3AFA22E75C63FB9B29283363E298</stationID>
+ <name>RTL Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>104.438</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534944B51BF873666D07E2F9B135FC928B21267B7CE5D738C69807AB406E11389B52</stationID>
+ <name>Radio Deluxe</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>105.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349593A43CFD1FC59F993F6D014E7D9A3E17FE733C250331F5A3A50DB535F23625E</stationID>
+ <name>JazzRadio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>105.562</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349FDCB940A821BCC72CBDCAA93C25A95B6A627C98471D75E38F9979BE3A4FFF030</stationID>
+ <name>Radio Fantasy</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>106.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534978D0AB278B4323E18801CA40622C2585A26A7CDB4CE02B82929B6205B8945635</stationID>
+ <name>Jam FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>106.688</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853490DB24CBF144A079C15F20EC461958665E8598175BB0CD1FD730FAE16A0B9099E</stationID>
+ <name>Sunshine live</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>107.312</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853491EEF9219745C1F78472A7A74A4DCC4A43F9F6EA67B5799EEBB9D201D85DCC166</stationID>
+ <name>Klassik Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>107.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/muenchen-forstenried-antenna.krp b/kradio3/presets/germany/muenchen-forstenried-antenna.krp
new file mode 100644
index 0000000..0c9d4ed
--- /dev/null
+++ b/kradio3/presets/germany/muenchen-forstenried-antenna.krp
@@ -0,0 +1,230 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Ernst Martin Witte &lt;witte@kawo1.rwth-aachen.de&gt;</maintainer>
+ <changed>2003-04-08T23:41:56</changed>
+ <country>Germany</country>
+ <city>Muenchen</city>
+ <media>antenna</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385350E51876331B19ADADA3734449CC4F1BF7BE647029A7882B92BEB8CDCCC1F08E02</stationID>
+ <name>BR1 (Muenchen/Ismaning)</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>91.3007</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853508CB43E54BA166B95D4558DDE60BFE9868F338A170D2F3D85910A28C0F4434BE7</stationID>
+ <name>BR2 (Muenchen/Ismaning)</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.4005</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535061E63449998A3E003C8E9E8612F994C74C88F3EABA73CEBBAA9CB9A304E99FFD</stationID>
+ <name>BR3 (Muenchen/Ismaning)</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>97.3011</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350FCF43F468E10E7C3C2BEE6A5ED954120C9AD2F934A300DCB87FB605E27D00A43</stationID>
+ <name>BR4 (Muenchen/Ismaning)</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>103.201</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350F7F1B8385E19217024891603B40D88449DCE1DA6DA7B1AA342F60FB076FA354C</stationID>
+ <name>BR5 (Muenchen/Ismaning)</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>90.0256</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350E93374F070D7149E953A1F9FC3146112160685369A8C92E2986C344A2EF1B81F</stationID>
+ <name>Deutschlandradio Berlin</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>96.826</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350901E9B62868C0B08E1124434138A76BEF039675EA219AC6174357E655A325BFE</stationID>
+ <name>Deutschlandradio Koeln</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>101.701</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350919CA00D5C71E65F4D588FF5230504EE7308AE1B24476C782D997BECED58577D</stationID>
+ <name>Klassikradio (Muenchen/Olympiaturm)</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>107.202</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350CE6B7F7CF5E3F2557ACAEFA6A3724FFF15A1B8E19FE40751ADC38BA02B783DE6</stationID>
+ <name>BR1 (Wendelstein)</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>93.7258</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853507984DF8211D9F2D2D6439A2DD59CDEAF5C84D5A4083548A72720A4459B483184</stationID>
+ <name>BR2 (Wendelstein)</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>89.5256</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350C6D6E9E9AFD2995D6CD1D2C3C4FBDF1FC0E1F6ABAAAA70A4E96F31DA7AF13A12</stationID>
+ <name>BR3 (Wendelstein)</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>98.5011</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350C78CF19335FEEDE44FCC2DEA718BF9F504643D0B388EBD050C2FEA9858D4CD09</stationID>
+ <name>BR4 (Wendelstein/Ochsenkopf)</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>102.351</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350DEA838FD204B4AFC39DA810A1E37D0127070BC6310B5FE2DDCA2C37ACAC97614</stationID>
+ <name>BR4 (Hohenpeißenberg)</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>100.401</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853502D88C85101285B50A9430D176EB6174633D3D3A3259D5AF50CAE6DC654A20644</stationID>
+ <name>BR5 (Wendelstein)</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>105.702</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350634BFF88FD76A9D8E75CEFF89AD5E6EBBB45E58A3A54DCCDE218BC8884F25EC2</stationID>
+ <name>Energy Muenchen</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>93.3258</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853501C438403E3CBF271087E430E46CE031F36D3E88D173FABE1F15CDBF5E24136CA</stationID>
+ <name>Radio Arabella (Muenchen/Blutenburgstr.)</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>100.851</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853504CD6F9CAFF6CB42AAF7D896BB0252BEA7D0E84C8EA9D0AB92B9F36CA994BC548</stationID>
+ <name>Antenne Bayern (Muenchen Olympiaturm)</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>101.351</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853507BC868A19A98B9B607D589BF9616475D9FAD512FCDB69D72418FA5D2A68687E2</stationID>
+ <name>Antenne Bayern (Zugspitze)</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>102.676</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350DCD2C8A1D9640AD5F08392AAD3F0753AFBA60781A2E716BCFCA04548D0FA6298</stationID>
+ <name>Antenne Bayern (Hochries)</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>107.702</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350FA49BFDEAEEEF45A8757BF8C70D113F89FB4D9C09E1FDCC514F86DC30FCDE59F</stationID>
+ <name>M94.5</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>94.5259</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350F1CBDC48A7E822E134E70B5EC811FF2632A12CC80D718CB01F429BF26C09D4B6</stationID>
+ <name>Radio Charivari</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>95.5259</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350086FF9C3C75B29D3FAE464BA033498E47D0E170F90D50A61741605FF6947C267</stationID>
+ <name>Gon 96.3</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>96.301</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853503B692775B9830D6B65BFFA4FEBD0735C2F242437EF2E51EBF91DE0F8F93A100C</stationID>
+ <name>Radio Melodie (Muenchen Blutenburgstr.)</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>104.051</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853504B9C85F6BC3D25D6E379AD9715F055DE992821F9E0487D329804BC4E3DB6C80B</stationID>
+ <name>Radio Arabella (Muenchen/Isen)</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>105.202</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535086B16BBD93908683CC2438649AE4CE64982DE3B7A94F4943D0A53A766E8B608B</stationID>
+ <name>Radio 106,4 (Fuerstenfeldbruck/Schoengeis)</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>106.402</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535047EA28204D5EB6CFF27670B6C522B2E69355E39E50F6A7CB4569472A8BF81E28</stationID>
+ <name>Radio 2DAY / Rundfunk Neues Europa / 89 Hit FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>89.0256</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385350858164ADE6E9C6187B30FA6516B300D63EE1A9B0E46F98ABA2059D20A4CB43F4</stationID>
+ <name>Radio LORA / Radio Feierwerk / FAZ 92,4</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>92.4008</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/muenchen.krp b/kradio3/presets/germany/muenchen.krp
new file mode 100644
index 0000000..eda0155
--- /dev/null
+++ b/kradio3/presets/germany/muenchen.krp
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Reiner Pröls, &lt;Reiner.Proels@laposte.net&gt;</maintainer>
+ <changed>2005-05-07T22:46:35</changed>
+ <country>Germany</country>
+ <city>Munich</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1116455444864CE630BF6D8BAC5769C243E58B67081F296EFF4EECB69B13E6338A5F29FF99</stationID>
+ <name>BR 1</name>
+ <shortname>BR1</shortname>
+ <icon></icon>
+ <frequency>92.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554446C6C06607774C78F2879734DD8A4B4B9E48B72B61E79F66344BF0F0795BC10B7</stationID>
+ <name>BR 2</name>
+ <shortname>BR 2</shortname>
+ <icon></icon>
+ <frequency>92.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444D56CD42DBC7E0CEB3D901961B5023483C16763ED9D11D0B98F6F424325287DBD</stationID>
+ <name>BR 3</name>
+ <shortname>BR 3</shortname>
+ <icon></icon>
+ <frequency>92.5625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554448F4A2C2E1247DEA4E8FEF8CC21B510A2EE249DB75DD02965584E36FE4967C075</stationID>
+ <name>BR 4</name>
+ <shortname>BR 4</shortname>
+ <icon></icon>
+ <frequency>91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544420499D528619044A5BD4F21D26FF229CECC50F5CE6B94A4BD7BEE7A64D1E7892</stationID>
+ <name>BR 5</name>
+ <shortname>BR 5</shortname>
+ <icon></icon>
+ <frequency>90.5625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554441231405E8CB4CB3F2DD245D92A127379BCC115B281D37F16ABBB578187FD1D60</stationID>
+ <name>Arabella</name>
+ <shortname>Arabella</shortname>
+ <icon></icon>
+ <frequency>98.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554447CDCD88670C99D5B84723C7A01314CE3011F4D0C00A91FB5E6AADD685845E36F</stationID>
+ <name>Charivari</name>
+ <shortname>Charivari</shortname>
+ <icon></icon>
+ <frequency>97.8125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554446B046F7255BC0ECC70BB243776140F6E3BCCB7B40C6CF3B260D3B434DF297E21</stationID>
+ <name>Energy</name>
+ <shortname>Energy</shortname>
+ <icon></icon>
+ <frequency>97.0625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444D4B7C446B6FBB67B0A427D13261792D96295B1DA8787EC366BD3B0AF2B16AFF7</stationID>
+ <name>Antenne Bayern</name>
+ <shortname>Antenne Bayern</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544421EC88B96E9E7D19F7383244D4944A6A861FC7E1EF333EECB32D364121B23E0E</stationID>
+ <name>Gong</name>
+ <shortname>Gong</shortname>
+ <icon></icon>
+ <frequency>96.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554446621953767E70C63C7A03AA305A8D6E4D9AB79BEB90C42255D62F2ADF1CF2DBF</stationID>
+ <name>Radio Klassik</name>
+ <shortname>Radio Klassik</shortname>
+ <icon></icon>
+ <frequency>107.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444CCF78BBBB1213B03FEEF20AD8E7D3397F50E62FFD7A3B93DABB9A88FF62B272C</stationID>
+ <name>OE 1</name>
+ <shortname>OE 1</shortname>
+ <icon></icon>
+ <frequency>87.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554444305644E3B647A15E2CC9522FFFEC3907A357C6E9735880BE2E337AECE41124E</stationID>
+ <name>Salzburg</name>
+ <shortname>Salzburg</shortname>
+ <icon></icon>
+ <frequency>88.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554444632FF61769D0FA4018D65A072F3B3B3635B2A339A31AAD69BDB4C7EAFDE028A</stationID>
+ <name>OE 3</name>
+ <shortname>OE 3</shortname>
+ <icon></icon>
+ <frequency>88.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554440F030BDC7C9856055A11A487292262D964A09DCAC9DE814C5204DCE20C6FF650</stationID>
+ <name>NOVA</name>
+ <shortname>NOVA</shortname>
+ <icon></icon>
+ <frequency>94.1875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/muenster-cable.krp b/kradio3/presets/germany/muenster-cable.krp
new file mode 100644
index 0000000..70664b6
--- /dev/null
+++ b/kradio3/presets/germany/muenster-cable.krp
@@ -0,0 +1,224 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Daniel Schulte, &lt;mail@daniel-schulte.de&gt;</maintainer>
+ <changed>2004-07-09T13:26:24</changed>
+ <country>NRW/Germany</country>
+ <city>Muenster</city>
+ <media>Cable</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1091290560124A7BA3D7E845559F2EB0BFB41C10544EA7D192700D1F199FED6AAABF30AEE6</stationID>
+ <name>BFBS (engl.)</name>
+ <shortname>1</shortname>
+ <frequency>87.65</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905601B2EA3A1E992F9E43EC0DFA81456A7B6F1396E9C9C0A71138EF087E820CFFA73</stationID>
+ <name>Radio Kiepenkerl</name>
+ <shortname>2</shortname>
+ <frequency>87.95</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056088EB765F0CA3280B0D6CFE28F43A657491BC36D1BF82B2F669A4B6FABD475D86</stationID>
+ <name>WDR 4</name>
+ <shortname>3</shortname>
+ <frequency>88.40</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905603626EA2D2506781BEC39D685502A9B5BFEFCDBAFEC24BD30920187DF06D9C8CA</stationID>
+ <name>WDR 3</name>
+ <shortname>4</shortname>
+ <frequency>89.30</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056051029D5AD5F1441F451389A575DBE2B39556CF3578DC17563022237354D86AC3</stationID>
+ <name>WDR 2 - MÃŒnster</name>
+ <shortname>5</shortname>
+ <frequency>89.95</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560ABA69655F88F0F5284A1A9BBAD479889AE9BC0CA1142CAFD2791B4D5FE547FCD</stationID>
+ <name>WDR Radio 5</name>
+ <shortname>6</shortname>
+ <frequency>90.40</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905604E2C14A84F10B3DD601AD83C74BE86ADA94F9ADFF6B77B77D8B398A17481565E</stationID>
+ <name>radio Antenne MÃŒnster</name>
+ <shortname>7</shortname>
+ <frequency>91.20</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560DD78242774ECD838C7B04336A0A3246B4755C8C86BD29F188D40F8F563BC8093</stationID>
+ <name>NordwestRadio</name>
+ <shortname>8</shortname>
+ <frequency>92.55</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560B7429A2BD660F9DA768852C45630CA7F810376A5292319BB5DE2919D53418AA1</stationID>
+ <name>radio ffn - OsnabrÃŒck</name>
+ <shortname>9</shortname>
+ <frequency>93.40</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560EE4161F131356FC9C62844D27E4720599D14E9DB5017F881D78C4DFF50CB5818</stationID>
+ <name>Radio 4 (niederl.)</name>
+ <shortname>10</shortname>
+ <frequency>93.85</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056033BB1AB47419EF74FD9A4FD125E43F49029EF51CCC004A7A34B0C5537293A49C</stationID>
+ <name>FM 3 (niederl.)</name>
+ <shortname>11</shortname>
+ <frequency>94.45</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560A35EF43604FA45750D37D0A7F73121610BA4096637E528F9171FC6B44E99B0BF</stationID>
+ <name>Radio 1 (niederl.)</name>
+ <shortname>12</shortname>
+ <frequency>94.75</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056037A9CC0764ABB24D2AECEA024CE351B190A79B853E18986EF3A9F48D66956ADE</stationID>
+ <name>RTL Radio-Die besten Hits m. GefÃŒhl</name>
+ <shortname>13</shortname>
+ <frequency>95.95</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905605F8E72EECA67E7B45E89B29978C829E316C761A7579C360DE7A487155BAB48B2</stationID>
+ <name>JAM-FM</name>
+ <shortname>14</shortname>
+ <frequency>96.80</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905604C00B01766D89608743C7B67AC06E258F440B560C646783702BC3A21CFD66741</stationID>
+ <name>Klassik Radio</name>
+ <shortname>15</shortname>
+ <frequency>97.10</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560E57D84631EAC1B9AB5C3F324B1CD00179F0569A986A37290EA3E48A414EF3ED0</stationID>
+ <name>sunshine live</name>
+ <shortname>16</shortname>
+ <frequency>98.20</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905600B1A48041039369C9F42B14D30E60B1D1000710ADB354DCA76612836EE7B7C0C</stationID>
+ <name>NDR 2</name>
+ <shortname>17</shortname>
+ <frequency>99.30</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905602A5A12CAB230A985D7452FB07F8FD0133F9D7B1EC6FD526BA73B4C7AF0806C82</stationID>
+ <name>NDR 1 Radio NDS - SÃŒdwest</name>
+ <shortname>18</shortname>
+ <frequency>99.65</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560663BB2325EABF548892CA281EF390E4D9883EDD542DEBEBC61E04F42123ECE54</stationID>
+ <name>NDR Kultur</name>
+ <shortname>19</shortname>
+ <frequency>100.25</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905601F9C25FA95EEAA1A0ED96B030C76D51958B6B5D231D9624AF81C6FEF50D11A5B</stationID>
+ <name>BFBS 2 (engl.)</name>
+ <shortname>20</shortname>
+ <frequency>101.40</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905606F2FD28E5B4ECB48E9E1AF0E1DE9AC558AD54DADF9AF8582917DE61A2B098DB1</stationID>
+ <name>hr2</name>
+ <shortname>21</shortname>
+ <frequency>101.70</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905608613FA6AEEF61DC43A4C6038C4B447F432F383EB966F684D7D75BE0D2BE5C3E6</stationID>
+ <name>radio RST</name>
+ <shortname>22</shortname>
+ <frequency>102.25</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056076199D6760E9F5B63CB55C118F66FB367C90AB5ABD5718602D44A3F662A47E3C</stationID>
+ <name>hr1</name>
+ <shortname>23</shortname>
+ <frequency>103.65</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560DA02D597BD5ED3A612F67C51EC4EA612401C1AD7E4C3E210BC0C932EEBB607FD</stationID>
+ <name>Eins Live (WDR)</name>
+ <shortname>24</shortname>
+ <frequency>103.95</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056003D103F0B510828C393D05975575C3F1A1C9E57856ABCDF93E54A13CBF4AC08A</stationID>
+ <name>Radio Melodie</name>
+ <shortname>25</shortname>
+ <frequency>104.40</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905602A3CA59E2D6696AD6287CE1E331034E5A1AD8AD5BABB0054397C22C6A52ED2A5</stationID>
+ <name>Radio Q 90.9</name>
+ <shortname>26</shortname>
+ <frequency>105.30</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560C70D3DC1583A20CB71423234F5B1ED14D60ED8F23C564F3077DC9CD2F0828BA4</stationID>
+ <name>Radio WAF</name>
+ <shortname>27</shortname>
+ <frequency>105.70</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560653BF5B3078AA37598E74E95ACA7AE6E957B385006422E6A9FCF7E6CDAE93EE9</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>28</shortname>
+ <frequency>106.35</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560F8BF62BC8B368DD15945AE366629D50B9116B588B87C02BD891A53260E3EEEDE</stationID>
+ <name>Hit-Radio Ant. Nieders. - OS</name>
+ <shortname>29</shortname>
+ <frequency>106.85</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905609DE052DF44D3993C6BB73EC1E7CEE465FE26FC603199CF764E46578709781551</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>30</shortname>
+ <frequency>107.15</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc> \ No newline at end of file
diff --git a/kradio3/presets/germany/muenster.krp b/kradio3/presets/germany/muenster.krp
new file mode 100644
index 0000000..54d0628
--- /dev/null
+++ b/kradio3/presets/germany/muenster.krp
@@ -0,0 +1,262 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Jens Eigen, &lt;jenseigen@gmx.de&gt;</maintainer>
+ <changed>2004-03-30T13:01:11</changed>
+ <country>Germany</country>
+ <city>Muenster</city>
+ <media></media>
+ <comments>Angaben ohne Gewaehr und Anspruch auf Richtigkeit oder Vollstaendigkeit!</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10912881752053DF040382235148C1B7CE01F1EDC30F7A8111AB01273BEF1F36A930FF402E</stationID>
+ <name>BFBS (engl.)</name>
+ <shortname>BFBS</shortname>
+ <icon></icon>
+ <frequency>87.69</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109128817527038A313CE203F738C89CBDA989B5D300843A763C9F15BFD1FC6D79E642FB90</stationID>
+ <name>Radio Antenne Muenster</name>
+ <shortname>Radio AM</shortname>
+ <icon></icon>
+ <frequency>91.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912881753851F9A25FCBA7CEF0AD039035BC69554CA09971BF6BBCCB07E4FDE203C7BADA</stationID>
+ <name>Radio Kiepenkerl</name>
+ <shortname>Kiepenkerl</shortname>
+ <icon></icon>
+ <frequency>88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912881756C63593117A282AE5C5D11D98C533B73FFE652B388E65A63741B4897D081559B</stationID>
+ <name>WDR 2 (Fenster Muenster)</name>
+ <shortname>WDR 2 (M?nster)</shortname>
+ <icon></icon>
+ <frequency>90</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288175F9E6680455D759CD6EFA516EB301441DE981DB4A4DA1B3A49C5C2F0A8DAC0799</stationID>
+ <name>WDR 3</name>
+ <shortname>WDR 3</shortname>
+ <icon></icon>
+ <frequency>89.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288175393F98640D8C8F8CAD2462165171CCA6C267A0CCBF60A18D2E2AD8CEACD07C4A</stationID>
+ <name>WDR 4</name>
+ <shortname>WDR 4</shortname>
+ <icon></icon>
+ <frequency>88.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288175EBB6742DF60413A31C4ED71DA767C5589B7AD75E3913DD810C701D517721BFB1</stationID>
+ <name>WDR 5</name>
+ <shortname>WDR 5</shortname>
+ <icon></icon>
+ <frequency>90.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912881751FD3E749405203C3DAAEE53DEB17293621566F4569B9145C7E474BDCABBCB51C</stationID>
+ <name>WDR 5</name>
+ <shortname>WDR 5</shortname>
+ <icon></icon>
+ <frequency>92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912881752137E1610333D3E1B2DA096D5A0718C65479A4EDF81A951E8579ADC1F9F91B64</stationID>
+ <name>Radion Bremen 2</name>
+ <shortname>RB 2</shortname>
+ <icon></icon>
+ <frequency>92.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288175085C28E47EC8F0645FF2A1CC5D9D8AF31E88F1FB3C490A3BD1216CEB9344E4C4</stationID>
+ <name>Radio FFN</name>
+ <shortname>FFN</shortname>
+ <icon></icon>
+ <frequency>93.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912881751C41159E00C180D1F189C0AD570DA48C2FA93AF3C416943B683F9A3499CAFC09</stationID>
+ <name>Holland 2</name>
+ <shortname>NOS 2</shortname>
+ <icon></icon>
+ <frequency>93.88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288175834B608F77BC7BDD7AEBCCD3128C90E9F65DE50C46BC86F17EE2A92475A9DD1B</stationID>
+ <name>Holland 3</name>
+ <shortname>NOS 3</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109128817564D3974E90A2357C597F2A0C1F03AD037250154F71F868BA23D2BBDC6B7A5E87</stationID>
+ <name>Holland 4</name>
+ <shortname>NOS 4</shortname>
+ <icon></icon>
+ <frequency>94.81</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912881755CD5D1DEFB2723FC7E60BB0901C8455BC2DAC4653E86F92B3F5846679A8AB895</stationID>
+ <name>RTL Oldie</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <frequency>96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288175ED88F8518E221CEEF2F9092E407197C0CD2AA07A6E7E4BA5EE0D5776E0991318</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik Radio</shortname>
+ <icon></icon>
+ <frequency>97.12</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288175D65387C4025D96A2B168297343B490D06974B0D582BDDB6E0861A2DD7721B2FA</stationID>
+ <name>Sunshine Live</name>
+ <shortname>Sunshine Live</shortname>
+ <icon></icon>
+ <frequency>98.25</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288175FC8D734D61933AD5AA8CC6E0065BA73EC09DA6721A43E435146662AF99F5D2FF</stationID>
+ <name>JAM-FM</name>
+ <shortname>JAM-FM</shortname>
+ <icon></icon>
+ <frequency>96.81</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288175D84E9F0D8108518EE30D2D81C5C6C85BBCEBF612930C16F26DCBD3298D88C551</stationID>
+ <name>NDR 2</name>
+ <shortname>NDR 2</shortname>
+ <icon></icon>
+ <frequency>99.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912881755734414EEEA9A02E2CCE25FF804918C08554B471CE154F66F2661C0630AA18EE</stationID>
+ <name>NDR 1</name>
+ <shortname>NDR 1</shortname>
+ <icon></icon>
+ <frequency>99.69</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912881753C4D3B46617F270FD832F82F26C5B9ACD625F107FBD364429A21A562F95EFC37</stationID>
+ <name>NDR 3</name>
+ <shortname>NDR 3</shortname>
+ <icon></icon>
+ <frequency>100.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288175FAE7546BA6D1E92778B7AC426AF7451F9AAB417282A4B3369533890168F39402</stationID>
+ <name>BFBS Radio 2</name>
+ <shortname>BFBS 2</shortname>
+ <icon></icon>
+ <frequency>101.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288175046CD9484E90466A5EE28F9C286326286FA47117951A2122B13EC193AB3AA22B</stationID>
+ <name>HR 2</name>
+ <shortname>HR 2</shortname>
+ <icon></icon>
+ <frequency>101.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288175FD9FCE36C9E93E8CCE05BF7C24869420E2FB52801064DA25DAA2DD2765270E10</stationID>
+ <name>Radio RST</name>
+ <shortname>Radio RST</shortname>
+ <icon></icon>
+ <frequency>102.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109128817533A08F10B9D5431C9E3495C45021A13EE85B18496C51484B2D1F93376F55BD8B</stationID>
+ <name>HR 1</name>
+ <shortname>HR 1</shortname>
+ <icon></icon>
+ <frequency>103.69</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109128817560D52F3135F7EFCAC17BF130AA116F29230CEA2F229EAA3BF8FB945BCBBD076B</stationID>
+ <name>WDR 1 / 1 Live</name>
+ <shortname>1 Live</shortname>
+ <icon></icon>
+ <frequency>104</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109128817514EE62C5D7B44458CBACC3A8F0ED3754297CF55606BB2D1F117D44795C8E4D0D</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Radio Melodie</shortname>
+ <icon></icon>
+ <frequency>104.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912881751A148D343E73248C65C4EC6FE7D285C8F06AC9F1446FC9588E4A84A4FA585401</stationID>
+ <name>Radio Q (Hochschulradio)</name>
+ <shortname>Radio Q</shortname>
+ <icon></icon>
+ <frequency>105.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288175BB29BAC4E6E5D7F745097602CA66A6AA75B5E219CC169197CA14F0A0D4776A02</stationID>
+ <name>Radio WAF</name>
+ <shortname>Radio WAF</shortname>
+ <icon></icon>
+ <frequency>105.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288175573B3B3AD802B6D61ACD861DBEE38CDC628BC9DE73B91A4DFE95B3F739A1BBCF</stationID>
+ <name>Deutschland Radio/DLF</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <frequency>106.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912881754746FDD5C9C076DE07183280A153D295746E5FA07CD9F930379CC9E19E540C7A</stationID>
+ <name>Antenne Niedersachsen</name>
+ <shortname>Antenne Niedersachsen</shortname>
+ <icon></icon>
+ <frequency>106.88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109128817552166B014D2EE78682729696AA85EA6F580B7C59A73A8A8E06933A516BBC54D4</stationID>
+ <name>Deutschland Radio Berlin</name>
+ <shortname>Deutschland Radio Berlin</shortname>
+ <icon></icon>
+ <frequency>107.19</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/muensterland-antenna.krp b/kradio3/presets/germany/muensterland-antenna.krp
new file mode 100644
index 0000000..e9195b5
--- /dev/null
+++ b/kradio3/presets/germany/muensterland-antenna.krp
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Joachim Geserick, j.gese@t-online.de</maintainer>
+ <changed>2003-01-19T13:15:24</changed>
+ <country>Münsterland/Germany</country>
+ <city>Selm</city>
+ <media>Antenne</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385347979CDD87081896C1DD2CA1977161810585FED0FA902265CE59C5983282B78863</stationID>
+ <name>einslive</name>
+ <shortname>1</shortname>
+ <frequency>106.69</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534778224AF89498CEF090F0B7F2DFD250BB168AF3597CD2626E39706AAD9D467ADD</stationID>
+ <name>Kiepenkerl</name>
+ <shortname>2</shortname>
+ <frequency>88.25</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534707D59A8A4AA6E7562674CCC01B7297CA451D8343DF70D3F3C47C17B69319D9BF</stationID>
+ <name>wdr2</name>
+ <shortname>3</shortname>
+ <frequency>94.12</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385347CE3B62E61CEDE18E39192B93323FB79B38134088E43939360C827004D5362AD8</stationID>
+ <name>BFBS</name>
+ <shortname>4</shortname>
+ <frequency>96.5</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385347AA93238B6EAD93B2938B04F7E80B7D26A500537CA2A1345DEC1C85072D5CE11B</stationID>
+ <name>wdr5</name>
+ <shortname>5</shortname>
+ <frequency>88.8125</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385347C4CAD87950B84F33BD37FE913372473D4F4C52421C3A8823E17858F101EDB340</stationID>
+ <name>wdr3</name>
+ <shortname>6</shortname>
+ <frequency>89.75</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385347B1E53F2B5516DDABF07F7C0BC456287CC0FACF2ECB28A39B957F2A2C05A040F4</stationID>
+ <name>wdr3</name>
+ <shortname>7</shortname>
+ <frequency>95.1</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534768CDE9F17F2C7663A4C07AD1CCCE334095EF18570574BFA41E42345FA1B615A8</stationID>
+ <name>wdr4</name>
+ <shortname>8</shortname>
+ <frequency>101.3</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385347BF2542061CB6054A009580A06CF689A60F23E487BB2AD22B78E7338379CA2FC3</stationID>
+ <name>wdr5</name>
+ <shortname>9</shortname>
+ <frequency>103.312</frequency>
+ <volumepreset>1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534735591021158E4CCCE31B6977B9106E07944EEA887E9EBFC2206A3F01038757F5</stationID>
+ <name>einslive</name>
+ <shortname>10</shortname>
+ <frequency>107.938</frequency>
+ <volumepreset>1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534757CF146EFC5DB021AC8E8848CFEE0F3509AB78262D62AEFE829FFA934634449F</stationID>
+ <name>new station 15</name>
+ <shortname>11</shortname>
+ <frequency>108</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/neuberg-cable.krp b/kradio3/presets/germany/neuberg-cable.krp
new file mode 100644
index 0000000..fd43479
--- /dev/null
+++ b/kradio3/presets/germany/neuberg-cable.krp
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-1.0beta3b</creator>
+ <maintainer>Werner Muehl, &lt;info@ib-muehl.de&gt;</maintainer>
+ <changed>2003-10-05T21:35:53</changed>
+ <country>Germany</country>
+ <city>Erlensee</city>
+ <media>Cabel</media>
+ <comments>Stations/Frequencies for Hanau, Bruchkoebel, Maintal, Erlensee,
+Rodenbach, Neuberg, Langenselbold</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>106854525432A288014DF7C85A99EB501E082B06B4F96949EBAE12DD4A859C19C3636C7101</stationID>
+ <name>Antenne Bayern</name>
+ <shortname>Antenne Bayern</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254739FC26D6EA0AFF43BCC062A18F2B696DD53495A4DB3E0CE961695FDE6CF251C</stationID>
+ <name>AFN</name>
+ <shortname>AFN</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254A4F642897A3A7A2FDCF75CC91EC34AB83409A44E520926B65616CB71A888A632</stationID>
+ <name>Bayerischer Rundfunk 1 (Main / Franken)</name>
+ <shortname>BR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452545BFB673861F03BE773365B16486F1312D0E67EE191A44D3E6E8A2EDE9CFF860B</stationID>
+ <name>Bayerischer Rundfunk 2 (Main / Franken)</name>
+ <shortname>BR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254A50C8E4F463384279978E9990FE99AD5E8D02892DC85239B19FF5D03D0B2D2E6</stationID>
+ <name>Bayerischer Rundfunk 3</name>
+ <shortname>BR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452542B850A62AFBC32E86A8AEEAFB6ADDB4471C997F6EC31B99A4705C034891FF15F</stationID>
+ <name>Bayerischer Rundfunk 4 Klassik</name>
+ <shortname>BR 4 KLassik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254AFA422E0A4F4D99F24FFC42C2EA3E5563D518014CAAD3D29F69BC15105EA2B8D</stationID>
+ <name>Bayerischer Rundfunk 5</name>
+ <shortname>BR 5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452544B20BEB753EDDA4B34C42E483252E211C5BCB770258F801EE1840268FD85CCA2</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>DLR Berlin</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254870A846605C88985C8D465AA421B30FF35FDBEBB55A43E57FCAFD16154206359</stationID>
+ <name>Hessischer Rundfunk 1</name>
+ <shortname>HR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254933EFC46CF2BFFE13CC182D4B05FF2D2461E6F6D7589DDAF3C87DA473962E186</stationID>
+ <name>Hessischer Rundfunk Klassik</name>
+ <shortname>HR Klasik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11367224732DD9647905D1A0E3003D6727D6C6A468489AE8E1B8349C8BDE108A1BE864F4DF</stationID>
+ <name>Hessischer Rundfunk - Info</name>
+ <shortname>HR - Info</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525467DD7BA14D8A886573BE9AED9A64A86C9F8E5AF487245E4146D0307E1EBAFF45</stationID>
+ <name>Hessischer Rundfunk 2</name>
+ <shortname>HR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254702E9C08B12CD8B1420A2124B447183B0A668DFCB197EE89DF93E6ACF98E9812</stationID>
+ <name>Hessischer Rundfunk 3</name>
+ <shortname>HR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452546CFB27CC9962BF5D8977046D34628F539AA5D68B836F03732D03EC4943541F6C</stationID>
+ <name>Hessischer Rundfunk 4 Rhein-Main</name>
+ <shortname>HR 4 Rhein-Main</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452549B0EB616A99AF727280D11B619234DFFABDAA8F588578B31D946064A1E4F0CE1</stationID>
+ <name>Hit-Radio FFH Rhein-Main</name>
+ <shortname>FFH</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1136724537075C78FBD2816E19C6B77CC4DAFDC888A9DC10DEBA65983A0B76537048067AE1</stationID>
+ <name>JAM-FM</name>
+ <shortname>JAM-FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525483F9405C61CE3EED8B1790B72AE42D9ECF45255D65635DCCA1A185EDB0876D34</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11367244420E0433EBB9A7933AE1DFCAE9AC5968416B2B9C1718E31FED01DFD0676DC2505B</stationID>
+ <name>MAIN FM</name>
+ <shortname>MAIN FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254D0CE4F17DAD846DDC36D7DC42608C19C2F18B4885EC251CE790C84C41CB27447</stationID>
+ <name>Planet Radio</name>
+ <shortname>Planet</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254AC687063AB78F567A8746D9C8C6B2122EDD6595C51D4BE060F507045CE72F2C3</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Melodie</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1136724286E5985147114BB716FE9E15FA357C38BBB0CB331B5396CEB9EBDBCE94915F4A18</stationID>
+ <name>Radio RPR Eins</name>
+ <shortname>RPR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525437C470CE8A4CDE8335D5C2F7734E80C021240F03A3CAAEE3012CD289EDC275EC</stationID>
+ <name>RTL Radio</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452541FF3CA5C607D5DE6797DC299B2145287B967056B74590104E2C042A49CDF62B6</stationID>
+ <name>Sunshine Live</name>
+ <shortname>Sunshine</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254C3EDE8BB17AC69C6BFAE1D0C57D3226A907A7420C6B2B792CF8EA9D2844D5BFC</stationID>
+ <name>SWR 1-Rheinland-Pfalz</name>
+ <shortname>SWR 1-Rh.Pfalz</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525444FF41C1C7E711CF7C74D8AC38A735064E85E5376AC0F57D568D429B9E913BD5</stationID>
+ <name>SWR 2-Rheinland-Pfalz</name>
+ <shortname>SWR 2-Rh.Pfalz</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254CC505A9B2AEF4B7C6BDA243798B7AED04B2D39569524C28CC4BE3EC0CA46D765</stationID>
+ <name>SWR 3</name>
+ <shortname>SWR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254355DB6BC4C4A688C5E1FEF7DBF78B7FB62C40545D488ADA1A4CCF51AF702F839</stationID>
+ <name>SWR 4 - Pfalz</name>
+ <shortname>SWR 4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1136724325091824FE3A7B2E74B15CCE068D71760C4BA8271CE5F3511F5BA9F69098A9C9C8</stationID>
+ <name>WDR 2 (Siegen)</name>
+ <shortname>WDR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525406B343319F3EC21170A752D910A7C6C26670A13961C9F0CC9652DF5D53695E68</stationID>
+ <name>WDR 3</name>
+ <shortname>WDR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11367226162FF388CE9717148283756F57FE37EEE28DD6148247865CBD8BC64CF3C8EF3A01</stationID>
+ <name>YOU FM</name>
+ <shortname>Y</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.8</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/neuoetting.krp b/kradio3/presets/germany/neuoetting.krp
new file mode 100644
index 0000000..628502e
--- /dev/null
+++ b/kradio3/presets/germany/neuoetting.krp
@@ -0,0 +1,239 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Andreas Wandiger, &lt;famwan@t-online.de&gt;</maintainer>
+ <changed>2004-06-21T22:53:18</changed>
+ <country>Deutschland</country>
+ <city>Neu�ting</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1087118869A7134CEC0E82AB087A43F0A4A65810082806945D15E497EBFC15DB9B1FDBFB6A</stationID>
+ <name>�terreich 1</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.625</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1087118869435B39E84ED7922F8337DF1CA57FFC48CF45C1F91646B391199F9711F781A2C7</stationID>
+ <name>� - Radio Salzburg</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.9501</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1087118871992CEE0333CE95C6425B5734A162CE474DB764415291FC587988E74B22211B0F</stationID>
+ <name>� - Radio Ober�terreich</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.9751</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10871188721311637C99F0A40DB6C1CE5C91B0837FB98E8253B03AB59E63E39C2250F992C4</stationID>
+ <name>� - Radio Tirol</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.7502</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10871188730DA9B42349E69E83AEDA04B0B9E134101D84B1FA3B887849960BFF6929EA690A</stationID>
+ <name>RADIO CHIEMGAU</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.1002</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1087118874C651891ADA89EA2AE1E60946932505A68F2880E6E54D89598DE402F93FD649F5</stationID>
+ <name>�terreich 3</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.6502</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1087118875EDEBBF7D99F8F22DFBF380879123CA88DEC2DF0B56C4BC6E9751B42804BED891</stationID>
+ <name>FM4</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.8253</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1087118876B57F1B508703BC241D44ADE6F7BC9990A0DF2A8637D783720EF103A5D7477799</stationID>
+ <name>Radio Inn-Salzach-Welle</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.3253</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1087118878EAE62622B65A6EF985C7B63ED6F2E715F648E795EA543319155919B61405EBED</stationID>
+ <name>Antenne Salzburg</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.4504</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10871188792938B8A81D4BBEE6FC37E5DFBED3795E410E04B2D71D6FA086F438547530D782</stationID>
+ <name>Trausnitz - Landshut</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.9004</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1087851173C28AC800729199C9247FC86E1E13D0DF61D29DF3FA3537397D34A570F3F26775</stationID>
+ <name>BR1 - Niederbayern/Oberpfalz</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.2004</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1087118881978C23F932D1830BF3E1C62455B493AD57BD3E085BA533A0CF56E68B69A09730</stationID>
+ <name>sunshine live</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.3255</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1087118882B96E899A84226D26EBEC39D93F8F039842CECB10D24F4FFCEDC2074AFFE64D5E</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.4006</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108711888533D02EFFBE499ACEE0D99621D2EDF89322A9D4BC1E3A11FC8E128E2DDA156B8B</stationID>
+ <name>BR1 - Oberbayern</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.8507</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1087118886F6AECC6864C2C9F3411FC2697DF9CEC7FFF2B3BE2EC93B043277A284AF5BB69E</stationID>
+ <name>B5 aktuell</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.9007</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108711888795233CC82A1455F36074EC7CD4E9F4D1FE015C0BC0220AD7053E286CBF2A70EB</stationID>
+ <name>BR2 - Oberbayern</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.3508</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1087118888ECB78F5E05D20CBB622D298216D78C60403A407E0687E5AA3C6E56A020CBFCA5</stationID>
+ <name>Bayern 3</name>
+ <shortname>B3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.9758</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10871188901E7C3F57FE1A5533B822B3D3D74E709514D9123CD883A5D20823DA1B28258995</stationID>
+ <name>Bayern 4 Klassik</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.501</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1087118891825A38BE44526D3C858E2045AA8527C6FBE14A28CD3522A0FE78920D504CE598</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.876</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10871188926669EFD7921120E78CCFD848E80F30243B6F35E877B47B2F778695480AA28FAF</stationID>
+ <name>ANTENNE BAYERN</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.926</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108711889532662ACF6BB487AEE810D60F7AFC7B518E736CE6C923B9770BE82D74D2B8512E</stationID>
+ <name>JAM-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.401</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108711889620F7832FCA2F365E98D0BBC1B7FB74B25A77417D61650D2F1EDC7B48805AAC94</stationID>
+ <name>Radio Melodie</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.176</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10871188967CD8D4B2D3378FB58A9B10FD98FC638B245C8CB2206369DE8D4299A9B6A56031</stationID>
+ <name>RTL RADIO</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.501</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1087118898F27BE6C4851F34759F1F5387158FE8BAE64B0B295C048E2817BA2BF3D78BF090</stationID>
+ <name>radio horeb</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.626</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1087118899EAD24643EBF78541BDE964888BE0F258D4018491DF273FBFB16C1904674F5659</stationID>
+ <name>Klassik Radio</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.351</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/nuernberg-cable-2.krp b/kradio3/presets/germany/nuernberg-cable-2.krp
new file mode 100644
index 0000000..716140a
--- /dev/null
+++ b/kradio3/presets/germany/nuernberg-cable-2.krp
@@ -0,0 +1,361 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-1.0beta3b</creator>
+ <maintainer>Stefan Fuchs &lt;snfuchs@gmx.de&gt;</maintainer>
+ <changed>2005-11-06T16:57:36</changed>
+ <country>Germany</country>
+ <city>Nuernberg</city>
+ <media>Cable</media>
+ <comments>source:
+http://www.kabeldeutschland.de/kabelanschluss/senderbelegung/formular.php?application=sender</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>10633853465851F3236E7DC0DAFBECCED1130E570557E2731A178AC29B44D4425617DA3915</stationID>
+ <name>Radio Galaxy</name>
+ <shortname>Galaxy</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853463B5E5F72A42BF74B2631B832E5EE1EBA255C643983CD1A16D80AE72B3954457A</stationID>
+ <name>Vil Radio</name>
+ <shortname>Vil</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.8014</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853461AC74552ACC54AF335CFD8E9536F7D07E46E2B3182B42E2A91EB83B7D4C8981B</stationID>
+ <name>Bayern 1 - Niederbayern/Oberpfalz</name>
+ <shortname>BR1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385346693040D0A995FA25033CEBA7F248127912B9B3BEC3D015E4E223A475FF478E57</stationID>
+ <name>SWR 1</name>
+ <shortname>SWR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.8015</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338534679924A469D03054D31DBC450C87E5915A97F38BBD43E7C3C3E0A0DEEF945DD66</stationID>
+ <name>SWR 2</name>
+ <shortname>SWR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853462BE14044001654D1DD362BB73417117BBC34708B9934046DE9DFC7DA6CC2E0E5</stationID>
+ <name>SWR 3</name>
+ <shortname>SWR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.85</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853468151FD26E80E7B35711A8FCBACBD9CCAFB5CB82D50A244B91C609AAF29361FD2</stationID>
+ <name>mdr Figaro</name>
+ <shortname>Figaro</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338534611AEC4BD76AF3B8EA51A9E1E7B401FD4EA330B5FE040945567678AE810A2F65B</stationID>
+ <name>mdr1 RADIO Thringen</name>
+ <shortname>mdr1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853467AF6C25D4772224E17CD5B64F87CCB4B2B79FA77BE85E98A5F86584FFB39B225</stationID>
+ <name>Jump</name>
+ <shortname>Jump</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385346CC16BCE3DCAD009EE3310E3B8B537A68C174B5134A2683FF7DB352E21348E9B1</stationID>
+ <name>Bayern 2 - Niederbayern/Oberpfalz</name>
+ <shortname>BR2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853463C432BFCE038D3D18711ABF2805C7C85AD87C2E7574C9E85FFD30528552B5851</stationID>
+ <name>Bayern 4 Klassik</name>
+ <shortname>BR 4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385346433869F617FB7F121ECA9B6FCF6102E6420B31CE34748C2784F11874B8822018</stationID>
+ <name>B5 Aktuell</name>
+ <shortname>B5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853462511F920A1F88C6AFCD395AA85A39ED64E1E976610614C126EA2A58C4A2FE967</stationID>
+ <name>Bayern 1 - Oberfranken/Mittelfranken</name>
+ <shortname>BR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385346F7FC4E5AA5AEA09E8E51765F359F930CAE02346B320748C140427F73E0B1CE2E</stationID>
+ <name>Bayern 2 - Oberfranken/Mittelfranken</name>
+ <shortname>BR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.7518</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385346B6C64D05D2B652B2DB81D06CE17B0730DF467007DF4AE4CC5FB6B1A248F84417</stationID>
+ <name>Pirate Radio</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385346BC59F96FE5E2814F3FEB5F98709BB1B5136DD84FF8DCF733AA1D6DD76211CFF5</stationID>
+ <name>Bayern 3</name>
+ <shortname>BR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385346B2A2F1DD042B1ED2D80B9D58BEF67D4CA39490277ECB6F96804ED210FE53F978</stationID>
+ <name>Truck Radio</name>
+ <shortname>Truck</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385346FA8B760FD4E0372F46975F22A3963ACB3D78B38C26AB27BE541EB76249E53944</stationID>
+ <name>DeutschlandRadio Kultur</name>
+ <shortname>DeutschlandRadio Kultur</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338534601BFE0E8DF66604DBE08877CD189B632991E6B3648337FE96342237C6E75940B</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>Deutschlandfunk</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385346BAA62A82BA4AA03B6E8B83B2833E1371BA73C0345A48640DE64AE53837F6C342</stationID>
+ <name>Star FM</name>
+ <shortname>Star FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853460AEE60D8369327972970E28FF4C26D5753FC6D487DAF461840940E1CFF41D810</stationID>
+ <name>Antenne Bayern</name>
+ <shortname>Antenne Bayern</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338534617657033723A8777852A43A33172DA9FA4893465C0692ED36E96E6F32A6D8FD2</stationID>
+ <name>Radio F/Jazztime</name>
+ <shortname>Radio F/Jazztime</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853464330E784936FB845EAA6A85883ED1F98B93D3900CA4DCEFB4721C30B3E7E9399</stationID>
+ <name>Radio Charivari Neumarkt</name>
+ <shortname>Charivari</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385346565B7D96226B5002F8FEEA25A6CDE720D94FD27DA96666B79C9B8CAC3D268196</stationID>
+ <name>Radio N1</name>
+ <shortname>N1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853466EDB8F6E7091694B9B6F3341D781CDFCF00F409B79559E65562B5016EA2812B6</stationID>
+ <name>Radio Z / radio aladin</name>
+ <shortname>Z / aladin</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338534614483235C1E41ED0FB25603C42C80C868D0C4A1F5C11F3885DC5F93B90F5727B</stationID>
+ <name>Radio Gong Nrnberg</name>
+ <shortname>Gong</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338534616764C8D6FA06CDAF95987BB31E49A73072E2E3E2A19E8AAC32085CEB9A5C900</stationID>
+ <name>Radio Charivari Nrnberg</name>
+ <shortname>Charivari</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385346775F8FE3FCB221801DEDCF69DE780BB5524D31792A5C424F1440C1F1D64A7D9C</stationID>
+ <name>Radio 8 - Ansbach</name>
+ <shortname>Radio 8</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338534698C7695144255D43BF6F8DEC0552C0551DCC51A50B726FEDBAC0287787D8C9E9</stationID>
+ <name>Radio Bamberg</name>
+ <shortname>Radio Bamberg</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853463C38CE325CF7709C4477BB9F3FF43B86462742340320D63AB15188DEAF244242</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik Radio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853464EC07302C53894B8E4ED9E70F1EC384111CF77249E98537ABA96CC94387A226F</stationID>
+ <name>radiomax</name>
+ <shortname>radiomax</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385346FD753E4FF8FCF849BFCEC9823CFFEF5E13032C4D57A489A8765CC4AEDE935468</stationID>
+ <name>JAM-FM</name>
+ <shortname>JAM-FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385346F80589A7BF0747EC865E25C57FB50B9120929CF74D2610B025251BB222F45970</stationID>
+ <name>radio horeb</name>
+ <shortname>horeb</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385346978586CB40155BF2E888A1970DD0E7466D90C0310A3F003CA78B997C98DA4562</stationID>
+ <name>Radio Energy Nrnberg</name>
+ <shortname>Energy</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853469E3830B364B67C6D5F5AC145C725ADCBF84A7B2C074EFBB7029E9840F5AC66FE</stationID>
+ <name>RTLRadio</name>
+ <shortname>RTLRadio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385346406BC7AA9CE1AE181D3339069FC6647A5DF2697AA919F40779B0C865DDCDAEC8</stationID>
+ <name>Fantasy Bayern</name>
+ <shortname>Fantasy</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853467D9DB3974B6BCF9EBE7A402F96467423145BCFEC61D0B6032912752021C635E2</stationID>
+ <name>Rock Antenne</name>
+ <shortname>Rock Antenne</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385346D41F48691BC99C2B1EA55C0CFA5E7AE433878D538A86DD27BB78C0DE02F97B3B</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Radio Melodie</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.603</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
diff --git a/kradio3/presets/germany/nuernberg-cable.krp b/kradio3/presets/germany/nuernberg-cable.krp
new file mode 100644
index 0000000..27f2e1f
--- /dev/null
+++ b/kradio3/presets/germany/nuernberg-cable.krp
@@ -0,0 +1,366 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Dr. Andreas Rainer &lt;dr.andreas.rainer@nea-net.de&gt;</maintainer>
+ <changed>2003-05-28T15:09:34</changed>
+ <country>Germany</country>
+ <city>Nürnberg</city>
+ <media>Cable</media>
+ <comments>Fortsetzung folgt - alle Angaben ohne Gewähr!</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338534604FB90559DFDB9C1B48AB1F69CD3300EDCF1743E32439F91EA0132275EFBFA0B</stationID>
+ <name>new station 1</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>67.8252</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534674AADF3938B27E3EEF790CE15FD026F0FE816ADA367BD5ED0DD62DE52F2922A2</stationID>
+ <name>new station 2</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>80.1759</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853465851F3236E7DC0DAFBECCED1130E570557E2731A178AC29B44D4425617DA3915</stationID>
+ <name>HR 1</name>
+ <shortname>HR 1</shortname>
+ <icon></icon>
+ <frequency>87.5264</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853463B5E5F72A42BF74B2631B832E5EE1EBA255C643983CD1A16D80AE72B3954457A</stationID>
+ <name>Vil Radio</name>
+ <shortname>Vil</shortname>
+ <icon></icon>
+ <frequency>87.8014</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853461AC74552ACC54AF335CFD8E9536F7D07E46E2B3182B42E2A91EB83B7D4C8981B</stationID>
+ <name>new station 5</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>88.2514</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346693040D0A995FA25033CEBA7F248127912B9B3BEC3D015E4E223A475FF478E57</stationID>
+ <name>SWR 1</name>
+ <shortname>SWR 1</shortname>
+ <icon></icon>
+ <frequency>88.8015</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534679924A469D03054D31DBC450C87E5915A97F38BBD43E7C3C3E0A0DEEF945DD66</stationID>
+ <name>SWR 2</name>
+ <shortname>SWR 2</shortname>
+ <icon></icon>
+ <frequency>89.4265</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853462BE14044001654D1DD362BB73417117BBC34708B9934046DE9DFC7DA6CC2E0E5</stationID>
+ <name>SWR 3</name>
+ <shortname>SWR 3</shortname>
+ <icon></icon>
+ <frequency>89.8515</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853468151FD26E80E7B35711A8FCBACBD9CCAFB5CB82D50A244B91C609AAF29361FD2</stationID>
+ <name>mdr Kultur</name>
+ <shortname>mdr Kultur</shortname>
+ <icon></icon>
+ <frequency>90.3765</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534611AEC4BD76AF3B8EA51A9E1E7B401FD4EA330B5FE040945567678AE810A2F65B</stationID>
+ <name>new station 10</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>90.6266</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853467AF6C25D4772224E17CD5B64F87CCB4B2B79FA77BE85E98A5F86584FFB39B225</stationID>
+ <name>new station 11</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>91.3766</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346CC16BCE3DCAD009EE3310E3B8B537A68C174B5134A2683FF7DB352E21348E9B1</stationID>
+ <name>new station 12</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>91.5266</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346CBFF6077498403A4F79A4BEF526A05B7A240C4B7166289AB197775DDE0B4F9D1</stationID>
+ <name>new station 13</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>91.7766</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853463C432BFCE038D3D18711ABF2805C7C85AD87C2E7574C9E85FFD30528552B5851</stationID>
+ <name>Bayern 4</name>
+ <shortname>BR 4</shortname>
+ <icon></icon>
+ <frequency>92.5517</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346433869F617FB7F121ECA9B6FCF6102E6420B31CE34748C2784F11874B8822018</stationID>
+ <name>B5 Aktuell</name>
+ <shortname>B5</shortname>
+ <icon></icon>
+ <frequency>93.0517</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853462511F920A1F88C6AFCD395AA85A39ED64E1E976610614C126EA2A58C4A2FE967</stationID>
+ <name>Bayern 1</name>
+ <shortname>BR 1</shortname>
+ <icon></icon>
+ <frequency>93.4767</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346F7FC4E5AA5AEA09E8E51765F359F930CAE02346B320748C140427F73E0B1CE2E</stationID>
+ <name>Bayern 2</name>
+ <shortname>BR 2</shortname>
+ <icon></icon>
+ <frequency>93.7518</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346B6C64D05D2B652B2DB81D06CE17B0730DF467007DF4AE4CC5FB6B1A248F84417</stationID>
+ <name>new station 18</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>94.6018</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346BC59F96FE5E2814F3FEB5F98709BB1B5136DD84FF8DCF733AA1D6DD76211CFF5</stationID>
+ <name>Bayern 3</name>
+ <shortname>BR 3</shortname>
+ <icon></icon>
+ <frequency>95.1268</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346B2A2F1DD042B1ED2D80B9D58BEF67D4CA39490277ECB6F96804ED210FE53F978</stationID>
+ <name>Antenne Thüringen</name>
+ <shortname>Antenne Thüringen</shortname>
+ <icon></icon>
+ <frequency>95.5519</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346FA8B760FD4E0372F46975F22A3963ACB3D78B38C26AB27BE541EB76249E53944</stationID>
+ <name>Deutschlandradio Berlin</name>
+ <shortname>Deutschlandradio Berlin</shortname>
+ <icon></icon>
+ <frequency>96.1769</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534601BFE0E8DF66604DBE08877CD189B632991E6B3648337FE96342237C6E75940B</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>Deutschlandfunk</shortname>
+ <icon></icon>
+ <frequency>96.7519</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346BAA62A82BA4AA03B6E8B83B2833E1371BA73C0345A48640DE64AE53837F6C342</stationID>
+ <name>new station 23</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>97.202</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853460AEE60D8369327972970E28FF4C26D5753FC6D487DAF461840940E1CFF41D810</stationID>
+ <name>Antenne Bayern</name>
+ <shortname>Antenne Bayern</shortname>
+ <icon></icon>
+ <frequency>97.502</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534617657033723A8777852A43A33172DA9FA4893465C0692ED36E96E6F32A6D8FD2</stationID>
+ <name>Radio F/Jazztime</name>
+ <shortname>Radio F/Jazztime</shortname>
+ <icon></icon>
+ <frequency>98.377</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853464330E784936FB845EAA6A85883ED1F98B93D3900CA4DCEFB4721C30B3E7E9399</stationID>
+ <name>new station 26</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>98.527</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853465DF14A7CBCB52945A125E3C169FBE1CF9433823C7DC0D6AB0CA47E6FF31F9D7C</stationID>
+ <name>AFN Frankfurt</name>
+ <shortname>AFN</shortname>
+ <icon></icon>
+ <frequency>99.3021</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346565B7D96226B5002F8FEEA25A6CDE720D94FD27DA96666B79C9B8CAC3D268196</stationID>
+ <name>N1</name>
+ <shortname>N1</shortname>
+ <icon></icon>
+ <frequency>99.6521</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853466EDB8F6E7091694B9B6F3341D781CDFCF00F409B79559E65562B5016EA2812B6</stationID>
+ <name>Energy/Radio Z</name>
+ <shortname>Energy/Radio Z</shortname>
+ <icon></icon>
+ <frequency>100.377</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853462F154C893FB6E3C16509B2E5BA5579F6E5AD3529FA2200F86651365FD19D1B4C</stationID>
+ <name>new station 30</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>100.527</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534614483235C1E41ED0FB25603C42C80C868D0C4A1F5C11F3885DC5F93B90F5727B</stationID>
+ <name>Gong</name>
+ <shortname>Gong</shortname>
+ <icon></icon>
+ <frequency>100.827</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534616764C8D6FA06CDAF95987BB31E49A73072E2E3E2A19E8AAC32085CEB9A5C900</stationID>
+ <name>Charivari/Aladin</name>
+ <shortname>Charivari/Aladin</shortname>
+ <icon></icon>
+ <frequency>101.677</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346775F8FE3FCB221801DEDCF69DE780BB5524D31792A5C424F1440C1F1D64A7D9C</stationID>
+ <name>new station 33</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>102.627</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534698C7695144255D43BF6F8DEC0552C0551DCC51A50B726FEDBAC0287787D8C9E9</stationID>
+ <name>new station 34</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>102.777</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853463C38CE325CF7709C4477BB9F3FF43B86462742340320D63AB15188DEAF244242</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik Radio</shortname>
+ <icon></icon>
+ <frequency>103.427</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853464EC07302C53894B8E4ED9E70F1EC384111CF77249E98537ABA96CC94387A226F</stationID>
+ <name>new station 36</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>103.927</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346FD753E4FF8FCF849BFCEC9823CFFEF5E13032C4D57A489A8765CC4AEDE935468</stationID>
+ <name>JAM-FM</name>
+ <shortname>JAM-FM</shortname>
+ <icon></icon>
+ <frequency>104.302</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346F80589A7BF0747EC865E25C57FB50B9120929CF74D2610B025251BB222F45970</stationID>
+ <name>new station 38</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>104.602</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346978586CB40155BF2E888A1970DD0E7466D90C0310A3F003CA78B997C98DA4562</stationID>
+ <name>new station 39</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>105.427</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853469E3830B364B67C6D5F5AC145C725ADCBF84A7B2C074EFBB7029E9840F5AC66FE</stationID>
+ <name>new station 40</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>106.003</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346406BC7AA9CE1AE181D3339069FC6647A5DF2697AA919F40779B0C865DDCDAEC8</stationID>
+ <name>new station 41</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>106.353</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346CF519CB4B1134CA7DB4DCAAFFF48B2722E91844B18C238771E5A4306493C935F</stationID>
+ <name>new station 42</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>106.478</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853467D9DB3974B6BCF9EBE7A402F96467423145BCFEC61D0B6032912752021C635E2</stationID>
+ <name>new station 43</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>106.753</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346D41F48691BC99C2B1EA55C0CFA5E7AE433878D538A86DD27BB78C0DE02F97B3B</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Radio Melodie</shortname>
+ <icon></icon>
+ <frequency>107.603</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/oldenburg-cable.krp b/kradio3/presets/germany/oldenburg-cable.krp
new file mode 100644
index 0000000..fe3e40c
--- /dev/null
+++ b/kradio3/presets/germany/oldenburg-cable.krp
@@ -0,0 +1,278 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Bernd Kuhls, &lt;mail@bernd-kuhls.de&gt;</maintainer>
+ <changed>2005-01-31T19:24:18</changed>
+ <country>Deutschland</country>
+ <city>Oldenburg</city>
+ <media>Kabel</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1107194811885DF01DC7332D7391A6D9DD5B2896B121B260591421FA31AE5D4EDD640DE724</stationID>
+ <name>Radio Bremen 4</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11071948112D745ED265490082FB6D448DCA73E83D8E97B15FBC72C1AD8DA5570CDA02EDFB</stationID>
+ <name>RTL Radio</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1107194812B609D9A5A6EB3FE921D5B3EC860875295F6A4675280A5A51969ABA9592F4EF35</stationID>
+ <name>NDR 2</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11071948132AD3C117AEE02B65EC85B148BF3E3DDC3845E5BBAA6C36CD2B7E419284FC0CF7</stationID>
+ <name>Hitradio Antenne</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1107194815FC961DB89E1943597585F28DCCC5F5BA449619E9425A4D4840E1EA2D6A8BAC00</stationID>
+ <name>NDR Info</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1107194815A47AA8EA95F9FD993B5DD88ACFB60DBF02BE522B67CFFC496C8C37AEEC4702DA</stationID>
+ <name>Ems-Vechte-Welle</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1107194816BC6C51EE5C6243AA0A35BEC448066762EC8BD6E7E3D5C4970E1E5CA0BF554E39</stationID>
+ <name>JAM-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1107194818DFF83A4A6A9C134B415318ADBB9C52DBF696D7F1DDE32880ED91E8995351CA3F</stationID>
+ <name>ffn</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1107194819D68155538D94F4BC4BCB25A4F6264CB7740553F5C073F7220678C4F40E7832EB</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1107194820816A79E67ECEEC90CFA74D56C6D943643768334F38962CFF9057C049D281A861</stationID>
+ <name>WDR 4</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1107194821DE1624E7B85E07CB1CFE199E4BFF438BD8B579651D117B364DF428BBFE62C607</stationID>
+ <name>Radio Jade</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11071948227AB92F9B6267A22DF8446532A278B68F10BE80040ABD64C508B42DBD53D22EC2</stationID>
+ <name>oldenburg eins</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1107194824A870560A3AD4D8DBA136861A1BDD3786E52BD8050CD488C4B555AA4215B05A81</stationID>
+ <name>Klassik Radio</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1107194825094A04DEE9EE9B2460CE5D3BF17365EF16D7DFBC879675A1777F2B48BE762023</stationID>
+ <name>sunshine live</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>110719482697A8EA31392A4DE83528D7F81654FAA7164703A2EADB163F3639C82C91818D69</stationID>
+ <name>NDR 1 Niedersachsen</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1107194827CB9E550E839EBF95E547AAEB37D25F147289CAD36F7B1CD0D9B319D57E9224F9</stationID>
+ <name>WDR 3</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>110719482876931F004551CEAEB049AD1C519342D44F0A741E4890E42B3B1E924A03D7513B</stationID>
+ <name>Radio 1 NL</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1107194830E913CCB49856C40C580B2019B93753AFD74C968CD9389AAD641D2F411F8583C3</stationID>
+ <name>Radio Melodie</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11071948301855589D620DC2E81F1A7CD3C17A7E421D58B40E692AAEBEB45D15C2D6C06F85</stationID>
+ <name>Energy Bremen</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1107194831FD89F2DEE150496C6CB93BC3CC69672C7D827F2B55888B0B9EAAC0F712A8CFCC</stationID>
+ <name>Radio Hamburg</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1107194832320867AF4F090DD02791B1219317E82EF3370F2DCDF398ABEBEABAFED14B9D5E</stationID>
+ <name>OK Bremen</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1107194834A87D79F644421810C7AFB5A73D30BC1AB61ED0871FB708CDC23E6B0CCE50D0DF</stationID>
+ <name>Funkhaus Europa</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.85</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11071948354AF55C0E36729BF6B876091C46098A2FDBAD5DD693CFAE1402B301206C11083D</stationID>
+ <name>NDR 90,3</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1107194837A68FAE2694CECF40E95C3156042C735D805E30205EFE949297F926F9F896BA10</stationID>
+ <name>NDR Kultur</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1107194838142B2C5A1055253A269417710DAAAC2672F40C671F21B5750904B66DA2F7B717</stationID>
+ <name>WDR 2</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>110719483996315007EC9028B08CDBE555DCCAE310F2CF1E738A2D02DA9D697529610CEE61</stationID>
+ <name>WDR 5</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11071948413C1833864CB2C73E941FCEE4FD523ACCB35F5C2C43CA5962CABC14F0CF68A78F</stationID>
+ <name>N-JOY</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11071948439E8C42D211A738C635833889B2985D3A0B85517462A3C618B3A9D2CBA8149E8C</stationID>
+ <name>NordwestRadio</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11071948447ACCF2BFF3C43D2915F72429C5958270BFFA0B2D7CAFE54FC9BA30FC4DBD651A</stationID>
+ <name>Radio 2 NL</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1107194846C536051561EA6656DDFF7A4A6244B32B106B2458488D846B97D0A9C3B41D8448</stationID>
+ <name>bremen eins</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1107194847682D2F6A7EBAC8FD8175AB413F556CF33F9CAD51EC67D83A3A7982BDC1273874</stationID>
+ <name>BFBS</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1107194848D36C7C819314E6FE1557761F5A69D7213A7C7FD14DC234FF8490E25B39CB52AF</stationID>
+ <name>Radio 4 NL</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>110719485055DC3586498DBC41378D4AA49A32EA90C8A7007509539B6080DC9D6A1C71CCB2</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.5</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/olpe-antenna.krp b/kradio3/presets/germany/olpe-antenna.krp
new file mode 100644
index 0000000..163f025
--- /dev/null
+++ b/kradio3/presets/germany/olpe-antenna.krp
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Andreas Schultz, &lt;andreas.schultz@t-online.de&gt;</maintainer>
+ <changed>2004-09-13T21:29:33</changed>
+ <country>Germany</country>
+ <city>Olpe</city>
+ <media>Antenna </media>
+ <comments>got data
+fromhttp://www.wdr.de/unternehmen/frequenzen/frequergebnis.php</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1116455444B639A3DF983560BEA0F00BA1F38E53C39E2426634E740F1E42414350532CD79F</stationID>
+ <name>WDR2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444E8781F0CDF8CF4E8BCD34FC4920B3136AE409679C51EFAB49D6A9E209C586970</stationID>
+ <name>WDR3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444DF9F372DF10503319DD05177B30D05AED88D0F1D08CBC3E747C07184EA9635A4</stationID>
+ <name>WDR4</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>103.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444D0C04B3928B54408797C61617F7C44236AC2D916CD0E18F2186529E044084DAB</stationID>
+ <name>WDR5</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/owen-cable.krp b/kradio3/presets/germany/owen-cable.krp
new file mode 100644
index 0000000..cd3823c
--- /dev/null
+++ b/kradio3/presets/germany/owen-cable.krp
@@ -0,0 +1,268 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Severin Leonhardt, &lt;phoenixseve@gmx.de&gt;</maintainer>
+ <changed>2004-09-06T00:08:04</changed>
+ <country>Deutschland</country>
+ <city>Owen</city>
+ <media>Kabel</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>109378824223ACC8EB1A44A9507876585CF2F135DA2B82C6B1A972C49D1FE1A8C3310621E4</stationID>
+ <name>Radio Regenbogen</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10937883105FA4A3679F8FD7285186848832AB429AB8ECBD0C562B7FB7FA0FFE42DFAB2F37</stationID>
+ <name>BR1 - Schwaben</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10937883440CBB2C3D45F2B32854FFF6423612D372EF4B416DA28724719167D0232098C984</stationID>
+ <name>BR2 - Schwaben</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1093788385990BA1D8EC13DBDCE113029F3356B408D0C78EA20B5429D14623ED315A02DF1A</stationID>
+ <name>Radio Melodie</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1093788410DFC94E84F14E4B3A9AD01026521BDBEBFC16C0EC0C0AE63F474D7B0D67985B85</stationID>
+ <name>Bayern3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1093788439C6C5D7E893EFC65BF791C09B22C42B9C06405A36A1DDCBF8748EF120EA871850</stationID>
+ <name>Bayern4 Klassik</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1093788464E6B0BE2792945C0CCF8D4846290CEBCF2C823DC3921D249AA3C5B5DFFD4966D2</stationID>
+ <name>Radio Ton</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10937885016E37D7DDF24B714AAC623AC3397630611262F609151D8E4838476B2064027949</stationID>
+ <name>DAS DING</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1093788541B9C03CF34009937C16C2D62BDEB002585367994261C8CCD5B3DAAAC43895E3A0</stationID>
+ <name>hr2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>109378856813946186B131F7DC5C96F5C5CF84B62B0E2C060EC2A63CA5EACC1BEC5C661717</stationID>
+ <name>hr3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10937886130B6BEB2547D8C8BA0EFAE4E895311FD123E0CEF270553D209A6A298028004722</stationID>
+ <name>sunshine live</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1093788646494364DFC2BB342980C37C23C549A835591522EA81F2F5B86359580C2F8C2243</stationID>
+ <name>Hitradio Antenne 1 - Stuttgart</name>
+ <shortname>Antenne 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1093789016314CA4900323FC0D2D0AC64E172B89FCF5E36F8D86A25FD4756EEF432514BE35</stationID>
+ <name>SWR1 - Baden-Wrttemberg</name>
+ <shortname>SWR1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1093789044DC5FA8604E2980F6C7C8BA553E5A2F6B5AB773B49425724AD83EA7190D74208B</stationID>
+ <name>SWR4 - Radio Stuttgart</name>
+ <shortname>SWR4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10937891966DEB5280BA441C49FE4F454372E05829E0FB6488FCA6AE4E9F0E58BDA19E3FE1</stationID>
+ <name>SWR2 - Baden-Wrttemberg</name>
+ <shortname>SWR2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>109378923893B247FCE8C3BF5C88594DF8D5143B61C6E098CDABDA04A3BA704C6663C67206</stationID>
+ <name>AFN - Heidelberg</name>
+ <shortname>Hot FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10937893542BB2E67310FC17DDF70C1B788153DC0F83A7B4F5DA79F4AEB505D559856DDB6D</stationID>
+ <name>Die neue 107.7</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1093789391311532FBCC44FA053CBFAC15659EC5AF858967513371B0E51035D6C8668495A0</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1093789410FFFE84560236D6F4DA70CA6269332C19587E8EC8B6EA7C25F492E85A6EF35734</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1093789467BF07594B032BCDFBB789F01E5CB1F865131ACBD1DF3D8B3967319C1BB0C30B51</stationID>
+ <name>SWR3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10937895255B0C0DA99933FEBBBAC19FDE506B49EC0398B964D86C0A2850F8FE4CF13774D6</stationID>
+ <name>Radio Ton - Ostwrttemberg</name>
+ <shortname>Radio Ton</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1093789730780D693442BF774D5FB3366EEEA06B8D4F408E0984BE5A945DD748A53417CB71</stationID>
+ <name>big FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1093789930DF8CC9F38B53A08A13B5739E0F4D7986B8474C87CD705BA07EB86BE71E1D49D4</stationID>
+ <name>Radio 7 - Aalen</name>
+ <shortname>Radio 7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1093789980F17E8A4C14C9B02BA76E60C7457081EEF56BD9567CEDCDCEC08F1D69127AC8BA</stationID>
+ <name>Antenne Bayern</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1093790093354F5B600BC6D264BB24A1C49DEB65E7BE3A47BAF64E6DD60BABACD7356A03B6</stationID>
+ <name>Klassik Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1093790125A89111BA3DD440FE5E447C2E4A825BD53AB093A79903D986CE00B73AD117C0AD</stationID>
+ <name>RTL Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10937901611050F2C37463447CADAE262EA5475480F4EEAAB18A84F2BF9C58C5E340B563B9</stationID>
+ <name>ERF 1 (Evangeliums-Rundfunk)</name>
+ <shortname>ERF 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1093790173F1CE7719BFD116E427FAFE207CF40B487DBBDAB19D7E76CC1C54C5C289008737</stationID>
+ <name>JAM-FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.9</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
diff --git a/kradio3/presets/germany/pfaffenhofen-ilm-cable.krp b/kradio3/presets/germany/pfaffenhofen-ilm-cable.krp
new file mode 100644
index 0000000..1365509
--- /dev/null
+++ b/kradio3/presets/germany/pfaffenhofen-ilm-cable.krp
@@ -0,0 +1,288 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Andreas Hipp, &lt;Andreas.Hipp@gmx.de&gt;</maintainer>
+ <changed>2005-07-20T11:21:38</changed>
+ <country>Germany</country>
+ <city>Pfaffenhofen/Ilm</city>
+ <media>Cable</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>11238834472B82F6651B8250D2D73C40E00C74C7E59CD37D32850A7D4D40DD888D58AD83DA</stationID>
+ <name>Radio 2DAY/radio horeb</name>
+ <shortname>2DAY</shortname>
+ <icon></icon>
+ <frequency>87.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11238834471062FB825C0E773AC75A28A63510CCAB642BD432CB65F6021DA5AA06EEDA943A</stationID>
+ <name>Feierwerk/LORA/afk</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>88.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>112388344737F92797E06C6C698141197F63728351F86B14D0FDB2C1A98FF057BEBB3D3381</stationID>
+ <name>Radio Energy Muenchen</name>
+ <shortname>Energy</shortname>
+ <icon></icon>
+ <frequency>88.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447DADD0C5383BDB3BC3CAD49E6B33F45E42F6684BE4CC49EA005D6D374F31EC13E</stationID>
+ <name>Radio Gong Muenchen</name>
+ <shortname>Gong</shortname>
+ <icon></icon>
+ <frequency>89.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447E17B585ACD35C3B6EFD9536641B028D5BEF0E87FC483ECD1ACABF6B1093654E1</stationID>
+ <name>Radio ND 1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447F86C2E4134CEDF0B0D9F631EC53A13CCA5025F957BB4686C503E895FC1325084</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>Deutschlandradio</shortname>
+ <icon></icon>
+ <frequency>90.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11238834478E8C01CFA00E11253B72015576F6FA003044C57CD932BD13D9D059946A80A262</stationID>
+ <name>Radio Charivari Muenchen</name>
+ <shortname>Charivari</shortname>
+ <icon></icon>
+ <frequency>90.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447435754031348AE7DBF428586C9322484A91D0D51EC9CD4EAECC7978158F09377</stationID>
+ <name>Radio IN</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>91.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>112388344726BA5AC37B7014AA3AC40D18EF93F2C76D4155FC2711974317180A666FED2CF6</stationID>
+ <name>Oesterreich 1</name>
+ <shortname>OE 1</shortname>
+ <icon></icon>
+ <frequency>91.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447D2E10965C2FE6BAB64347CB2F784073DD553EB8C3711AB72E8BF8BB975C026C0</stationID>
+ <name>OE2 - Radio Salzburg</name>
+ <shortname>OE2</shortname>
+ <icon></icon>
+ <frequency>92.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447EF0848882CD7275FC0E6A8A443CC5551A0464DA729332A85701939018DEA4B32</stationID>
+ <name>Oesterreich 3</name>
+ <shortname>OE3</shortname>
+ <icon></icon>
+ <frequency>92.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447393413232F4F583CC2FC9B3F338C248EB97521E5B294D53869ABBF483500BB02</stationID>
+ <name>Radio Charivari Regensburg</name>
+ <shortname>Charivari R</shortname>
+ <icon></icon>
+ <frequency>92.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>112388344745A865FF4E9B597A3982F374904598B953ED2285691120B217D57CE19DB8A43D</stationID>
+ <name>JAM-FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>93.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11238834475D274611813D6A9C490D464A82483D8AC5D89F5CA008A32F80542A4EFABDB22A</stationID>
+ <name>Rock Antenne</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447281FE59F26FF107AE7B2DBB155943C83DA4204377AEC53D0425089837D1B01B5</stationID>
+ <name>Radio Galaxy</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447AB81AA0017CE35C1F4DAFF6C5D2E57C74AD5E0FAB5E0583F86C394EBA403A881</stationID>
+ <name>Antenne Bayern</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11238834470561A299F7CDC5C1A9329BDD8E556B8C5214BDF8F5C5C120425C694435A4FEAE</stationID>
+ <name>Bayern 4 Klassik</name>
+ <shortname>B 4</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447953CA564FA3923820BBAE78D90EB47327363B0CF3D1DD950BCD1E78711DE1DBE</stationID>
+ <name>Bayern 3</name>
+ <shortname>B 3</shortname>
+ <icon></icon>
+ <frequency>96.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>112388344721FD2240BE7D8A2B4E001E1E21695BDA1498E285FF6F7917EDB191A2423C4DF2</stationID>
+ <name>BR2 Oberbayern</name>
+ <shortname>BR2</shortname>
+ <icon></icon>
+ <frequency>96.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447C24746E14941B3599E6A5F01C18ADC6464A1A46C38D60116C7CDC40A50DA7BEC</stationID>
+ <name>BR1 Oberbayern</name>
+ <shortname>BR1 OBB</shortname>
+ <icon></icon>
+ <frequency>97.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>112388344750228B096B644CB4DEFC26460EF2DCFC34EF99F882843A253757AAFAEDAADB08</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <frequency>98.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>112388344766836B65C78E5E74E406B62C90CC0974896D9C5F1C367AC361588E15120C8146</stationID>
+ <name>B5 aktuell</name>
+ <shortname>B5</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11238834471E1E71E9F65186CD70727EE1E0E5DC11DDC77C9CC6220E94F2199135CE5FCFF3</stationID>
+ <name>Radio 7 - Aalen</name>
+ <shortname>Radio 7</shortname>
+ <icon></icon>
+ <frequency>100.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>112388344799581FD7C5DD963C1373A1AE0D8BF7EF9B830BA31F9629444D09C8ACDA4A5A2A</stationID>
+ <name>SWR3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>100.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>112388344703D3530ED609595D98B6C56251BC9933A0E1D4B62DCBF70977574B10951395D3</stationID>
+ <name>SWR4 Schwabenradio</name>
+ <shortname>SWR4</shortname>
+ <icon></icon>
+ <frequency>101.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447E8899EFF54280B35056F103D126CAD088692B44A2E9995C2E25A363DFE97B744</stationID>
+ <name>SWR2 Baden-Wuerttemberg</name>
+ <shortname>SWR2</shortname>
+ <icon></icon>
+ <frequency>102.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447A87445751A33086BE1AC49306493F393BEA2B08AB12B60453B81AAB7C749AB56</stationID>
+ <name>SWR1 Baden-Wuerttemberg</name>
+ <shortname>SWR1</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447BC27155EC2E2575A3479889CCBA44EFDC4F10B22AB813D360CC49CF98D402874</stationID>
+ <name>Radio Melodie -Heimatfunk mit Herz</name>
+ <shortname>Radio Melodie</shortname>
+ <icon></icon>
+ <frequency>103.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447714EB7BB2B30F2F0B1C3EB5D22E748DBFFE4779D94A3C052FB7E7CC92EFCE0AE</stationID>
+ <name>Radio Galaxy Ingolstadt</name>
+ <shortname>Galaxy IN</shortname>
+ <icon></icon>
+ <frequency>104.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447C3464012A9538375D0469AAAE3A6B3009CDF00B4884E020CECB97E86F640D35B</stationID>
+ <name>radio horeb</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>106.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>112388344769C4AFCA9E681215BDB3F34071C9138D90167F0B4FEC6ABA93E2600A6E7D392A</stationID>
+ <name>RTLRadio-Die besten Hits mit Gefuehl</name>
+ <shortname>RTLRadio</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447D6CCD3FDBBB3371F28E239479134FFEFC39FB1E6E38934D703AB982CC07274F2</stationID>
+ <name>Klassik Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>107</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11238834475C721EA309793AAAF5B4B860B982E7B72224233046A79A223D336179A41B5869</stationID>
+ <name>sunshine live</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>107.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447358C4EADEE60F8538C62BEF14995DB17C6A4E97BA36C9949D41EC6744532F040</stationID>
+ <name>Radio Arabella</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+--
+Andreas Hipp <Andreas.Hipp@gmx.de>
diff --git a/kradio3/presets/germany/rheine-mesum-antenna.krp b/kradio3/presets/germany/rheine-mesum-antenna.krp
new file mode 100644
index 0000000..44e5108
--- /dev/null
+++ b/kradio3/presets/germany/rheine-mesum-antenna.krp
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Frank Quotschalla, Gutschy@NetzwerkInfo.de</maintainer>
+ <changed>2003-05-26T22:07:44</changed>
+ <country>Germany</country>
+ <city>48432 Rheine-Mesum</city>
+ <media>Antenna: D-Link DRU-R100 USB-Radio</media>
+ <comments>got data from terrestrial irradiation activity. ;)</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338534988A69E16E3A48DB203B0A541245DECEE76CDB30DEB5B6AEA0F1E1A148AAD8FC3</stationID>
+ <name>Eins Live</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349BA0D26754B1BD71F7C2890FFD23A80E59EACF69EF5DFFE3A9E493DD4A410747B</stationID>
+ <name>Radio FFN</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853495A36DC026BE39111AF5C627918DC2675CB11CA30FA85DBF79E8ABA8CC3F496BE</stationID>
+ <name>Radio RST</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>105.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853493C3BD6CBA670A3F4FA19A50F8AE4DAAD8D98147AF272C337A38AE71AECA80CC7</stationID>
+ <name>Hit-Radio Antenne</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853496A31069FCFDFDC6F18A9B1E79FB5E8098D2F8782E5FEBF1311ACDA7E79C7EB68</stationID>
+ <name>WDR 2</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349AA378DB7BC850893872B4DB9771CC80E67DF10925CF8A8FD23AC9C3ED1FD81B8</stationID>
+ <name>WDR 3</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349F4EE77A86C3C63A94812AB29BAFA4AA391B7800F75CC3427BCB4030BA15322BA</stationID>
+ <name>WDR 4</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>100</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349DBD792B0813FBEDB5A9715D049A5DC5CA0FBB2B5D3E9EB9C62FE7FF8B7B72114</stationID>
+ <name>WDR 5</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853496D695396F268BB69437BA802A4C731D7C929A8FC308B04D70D97AEF6472B958C</stationID>
+ <name>NDR 1</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>92.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349F7F174D08A22F6CC5B19FEB41D4710AB58AFCF3E06F4C3FD49BB4FD34927C267</stationID>
+ <name>NDR 2</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>89.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385349099B4CE22A08F3CE7B8293102CD8B3054608826600B505FF7078C8540C4D6A82</stationID>
+ <name>NDR Kultur</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>90.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/rodenbach-cable.krp b/kradio3/presets/germany/rodenbach-cable.krp
new file mode 100644
index 0000000..fd43479
--- /dev/null
+++ b/kradio3/presets/germany/rodenbach-cable.krp
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-1.0beta3b</creator>
+ <maintainer>Werner Muehl, &lt;info@ib-muehl.de&gt;</maintainer>
+ <changed>2003-10-05T21:35:53</changed>
+ <country>Germany</country>
+ <city>Erlensee</city>
+ <media>Cabel</media>
+ <comments>Stations/Frequencies for Hanau, Bruchkoebel, Maintal, Erlensee,
+Rodenbach, Neuberg, Langenselbold</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>106854525432A288014DF7C85A99EB501E082B06B4F96949EBAE12DD4A859C19C3636C7101</stationID>
+ <name>Antenne Bayern</name>
+ <shortname>Antenne Bayern</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254739FC26D6EA0AFF43BCC062A18F2B696DD53495A4DB3E0CE961695FDE6CF251C</stationID>
+ <name>AFN</name>
+ <shortname>AFN</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254A4F642897A3A7A2FDCF75CC91EC34AB83409A44E520926B65616CB71A888A632</stationID>
+ <name>Bayerischer Rundfunk 1 (Main / Franken)</name>
+ <shortname>BR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452545BFB673861F03BE773365B16486F1312D0E67EE191A44D3E6E8A2EDE9CFF860B</stationID>
+ <name>Bayerischer Rundfunk 2 (Main / Franken)</name>
+ <shortname>BR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254A50C8E4F463384279978E9990FE99AD5E8D02892DC85239B19FF5D03D0B2D2E6</stationID>
+ <name>Bayerischer Rundfunk 3</name>
+ <shortname>BR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452542B850A62AFBC32E86A8AEEAFB6ADDB4471C997F6EC31B99A4705C034891FF15F</stationID>
+ <name>Bayerischer Rundfunk 4 Klassik</name>
+ <shortname>BR 4 KLassik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254AFA422E0A4F4D99F24FFC42C2EA3E5563D518014CAAD3D29F69BC15105EA2B8D</stationID>
+ <name>Bayerischer Rundfunk 5</name>
+ <shortname>BR 5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452544B20BEB753EDDA4B34C42E483252E211C5BCB770258F801EE1840268FD85CCA2</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname>DLR Berlin</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254870A846605C88985C8D465AA421B30FF35FDBEBB55A43E57FCAFD16154206359</stationID>
+ <name>Hessischer Rundfunk 1</name>
+ <shortname>HR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254933EFC46CF2BFFE13CC182D4B05FF2D2461E6F6D7589DDAF3C87DA473962E186</stationID>
+ <name>Hessischer Rundfunk Klassik</name>
+ <shortname>HR Klasik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11367224732DD9647905D1A0E3003D6727D6C6A468489AE8E1B8349C8BDE108A1BE864F4DF</stationID>
+ <name>Hessischer Rundfunk - Info</name>
+ <shortname>HR - Info</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525467DD7BA14D8A886573BE9AED9A64A86C9F8E5AF487245E4146D0307E1EBAFF45</stationID>
+ <name>Hessischer Rundfunk 2</name>
+ <shortname>HR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254702E9C08B12CD8B1420A2124B447183B0A668DFCB197EE89DF93E6ACF98E9812</stationID>
+ <name>Hessischer Rundfunk 3</name>
+ <shortname>HR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452546CFB27CC9962BF5D8977046D34628F539AA5D68B836F03732D03EC4943541F6C</stationID>
+ <name>Hessischer Rundfunk 4 Rhein-Main</name>
+ <shortname>HR 4 Rhein-Main</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452549B0EB616A99AF727280D11B619234DFFABDAA8F588578B31D946064A1E4F0CE1</stationID>
+ <name>Hit-Radio FFH Rhein-Main</name>
+ <shortname>FFH</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1136724537075C78FBD2816E19C6B77CC4DAFDC888A9DC10DEBA65983A0B76537048067AE1</stationID>
+ <name>JAM-FM</name>
+ <shortname>JAM-FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525483F9405C61CE3EED8B1790B72AE42D9ECF45255D65635DCCA1A185EDB0876D34</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11367244420E0433EBB9A7933AE1DFCAE9AC5968416B2B9C1718E31FED01DFD0676DC2505B</stationID>
+ <name>MAIN FM</name>
+ <shortname>MAIN FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254D0CE4F17DAD846DDC36D7DC42608C19C2F18B4885EC251CE790C84C41CB27447</stationID>
+ <name>Planet Radio</name>
+ <shortname>Planet</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254AC687063AB78F567A8746D9C8C6B2122EDD6595C51D4BE060F507045CE72F2C3</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Melodie</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1136724286E5985147114BB716FE9E15FA357C38BBB0CB331B5396CEB9EBDBCE94915F4A18</stationID>
+ <name>Radio RPR Eins</name>
+ <shortname>RPR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525437C470CE8A4CDE8335D5C2F7734E80C021240F03A3CAAEE3012CD289EDC275EC</stationID>
+ <name>RTL Radio</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10685452541FF3CA5C607D5DE6797DC299B2145287B967056B74590104E2C042A49CDF62B6</stationID>
+ <name>Sunshine Live</name>
+ <shortname>Sunshine</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254C3EDE8BB17AC69C6BFAE1D0C57D3226A907A7420C6B2B792CF8EA9D2844D5BFC</stationID>
+ <name>SWR 1-Rheinland-Pfalz</name>
+ <shortname>SWR 1-Rh.Pfalz</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525444FF41C1C7E711CF7C74D8AC38A735064E85E5376AC0F57D568D429B9E913BD5</stationID>
+ <name>SWR 2-Rheinland-Pfalz</name>
+ <shortname>SWR 2-Rh.Pfalz</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254CC505A9B2AEF4B7C6BDA243798B7AED04B2D39569524C28CC4BE3EC0CA46D765</stationID>
+ <name>SWR 3</name>
+ <shortname>SWR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1068545254355DB6BC4C4A688C5E1FEF7DBF78B7FB62C40545D488ADA1A4CCF51AF702F839</stationID>
+ <name>SWR 4 - Pfalz</name>
+ <shortname>SWR 4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1136724325091824FE3A7B2E74B15CCE068D71760C4BA8271CE5F3511F5BA9F69098A9C9C8</stationID>
+ <name>WDR 2 (Siegen)</name>
+ <shortname>WDR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106854525406B343319F3EC21170A752D910A7C6C26670A13961C9F0CC9652DF5D53695E68</stationID>
+ <name>WDR 3</name>
+ <shortname>WDR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11367226162FF388CE9717148283756F57FE37EEE28DD6148247865CBD8BC64CF3C8EF3A01</stationID>
+ <name>YOU FM</name>
+ <shortname>Y</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.8</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/saarbruecken-antenna.krp b/kradio3/presets/germany/saarbruecken-antenna.krp
new file mode 100644
index 0000000..4f0969b
--- /dev/null
+++ b/kradio3/presets/germany/saarbruecken-antenna.krp
@@ -0,0 +1,49 @@
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Michael Schumacher, pxros@web.de</maintainer>
+ <changed>2003-10-18T14:16:11</changed>
+ <country>Germany</country>
+ <city>Saarbrcken/Homburg</city>
+ <media>Antenna</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1066479130BE619EE8EBEDE051DE6F702103850D3965D6B63C735351BBC12574D0708B39F7</stationID>
+ <name>SR1</name>
+ <shortname>SR1</shortname>
+ <icon></icon>
+ <volumepreset>0.8</volumepreset>
+ <frequency>88</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106647968324742A17B6427FB9A6F975689FFE8C2B98115BD76E02D33DC11678E75B8F5CB3</stationID>
+ <name>SWR3</name>
+ <shortname>SWR3</shortname>
+ <icon></icon>
+ <volumepreset>0.8</volumepreset>
+ <frequency>97.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1066479974189E6CCA880DC614BCBD36FC5B3215D8A7057DF3968492110C5D1224790E7653</stationID>
+ <name>SWR1</name>
+ <shortname>SWR1</shortname>
+ <icon></icon>
+ <volumepreset>0.8</volumepreset>
+ <frequency>100.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1066480043679C09BE6C6E16557829338A4CD68BEA1331F998404DE30C4B6D22A60F2468F3</stationID>
+ <name>Radio Sal</name>
+ <shortname>Radio Sal</shortname>
+ <icon></icon>
+ <volumepreset>0.8</volumepreset>
+ <frequency>101.7</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/schifferstadt-cable.krp b/kradio3/presets/germany/schifferstadt-cable.krp
new file mode 100644
index 0000000..13cf47d
--- /dev/null
+++ b/kradio3/presets/germany/schifferstadt-cable.krp
@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Rainer Brinkmann, &lt;gi-brinkmann@t-online.de&gt;</maintainer>
+ <changed>2005-06-01T08:57:15</changed>
+ <country>Germany</country>
+ <city>Schifferstadt</city>
+ <media>Cable</media>
+ <comments>just the best radio-programm, known to work</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>11238834476A92B6881C53FD3346A78DDDF6C8A5E1895B146C1B9CE63F90780148F9D7D42B</stationID>
+ <name>SWR2 - Rheinland-Pfalz</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>87.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>112388344741FDE2433C1C0543C528D5A77D2E44F3571BBB217D61D1A26E709B514BAC7A73</stationID>
+ <name>Klassik Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>87.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447A4C3CB2969E016A6BF569A9B731FD27AFCEDA9D02D35F40C01A9EE613B49D208</stationID>
+ <name>SWR1 - Rheinland-Pfalz</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>88.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447094022DD4D3B2F8D88880BE51B812455BE4C4E02CAE52DF5C5E258451E38E860</stationID>
+ <name>SWR3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>89</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447A7D45CFC40ECB4BFB829B859CD1FDB902D3A9FBDFC865927ACF86F255B4B8FB0</stationID>
+ <name>hr1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>89.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447A5DFF01B39CDD76CE50D9A88BA87EE53466759D4C81027EC187520BF1EA25FA1</stationID>
+ <name>Rockland Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447A32DF320BFB4D501A7267F7A5C9147C03DAD61757AB5C56061D6B78553C541AD</stationID>
+ <name>France Musique</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>91.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11238834470BC6B525286C9155E573246C62213F990B49298960060A23100AC64D7EDACAD6</stationID>
+ <name>hr3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>91.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447D689C4F136496A6EE4083CDB97C1186164A41C704078242BE7D6DB84FD0A88BA</stationID>
+ <name>SWR4 - Kurpfalz</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447AE387E47365BE28CFCA63E62C558AB84DA556515A823946C1BC8B2CE435980A5</stationID>
+ <name>94,8 Metropol FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>93.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447A87825CF55123722B3DA08331C31B48C6E8DDB7BCC2C18EFB86C7515A9DE9F03</stationID>
+ <name>SWR4 - Vorderpfalz</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>93.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447F581952F750430C8F2E6B47BA3D2CF99A3078136F7B8B3AE363753BF0D6F414D</stationID>
+ <name>hr2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447C3702A06F5B53C0657681D3A7D2FEF1F0685050321A5C3962B5FA80D5EE88E38</stationID>
+ <name>DASDING</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>96.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11238834470398609FFEA2A7BF57ECB120016F1338E6A2FF7DCF34C0BBADF851C576D9F04C</stationID>
+ <name>Radio RPR Eins</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447290F5BA565CE00949026B5A1B23A31F8CFB1611DBECEC1CA210C36DFBF540DB7</stationID>
+ <name>sunshine live</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11238834475B4BF0EE41941822B1F60DCE39299E2A6D148052FDCDA18D6E5389B7A82F5167</stationID>
+ <name>SR 1 Europawelle</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>98.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11238834479E6B9D90ACBD8BF0628E6A18D34C72B617ADA531CD6840467D70689A2FE9AD70</stationID>
+ <name>JAM-FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>99.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>112388344748D68288CC2E7D4FFB51C88A01452B5BA1C8589B460AEDDFD769EC517757E741</stationID>
+ <name>SR 2 KulturRadio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11238834473C006E9E21C905F13D0B7BA988DD326C2CDFE8BB3C643B8416587E928475A6F4</stationID>
+ <name>AFN - Frankfurt</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>100.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447F93BAE5AFB2671C213E3490FD51A3783D55145E33899B2461C88A9BE44CDAE16</stationID>
+ <name>Radio Regenbogen - Karlsruhe</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>101.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11238834479F7DFEC6A2DA9713651AD5B66C35070798EE4BBECDC15479ECE85AA394A01585</stationID>
+ <name>Radio Melodie</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>102.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447F3A0A4DDE8460F8C7824B05256CB57F403192BEC3C6558D8B7E5FEB88924B7EA</stationID>
+ <name>BR1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>103.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>112388344722DEE944EA7F26CBCF51AE59EEB1857CF70195019492AFFCF0F8FADEAFA4BFC0</stationID>
+ <name>HIT Radio RTL 101,8 Karlsruhe</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>103.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447B2288F4359FBA7805D7063FAED2ED9A281117F9214CF31F2A1D57D4AA47E5DFF</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>104.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11238834475CC2A4DB80AD6F7B57E97AB19ED665B084B4A7EE4DA889903327F4E08EB95E47</stationID>
+ <name>HIT RADIO FFH - Südhessen</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>105.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>112388344784C5F04BBF9D4440EEDDCD079B37C9567D33F3B21DF8798F19F132D67FAAB32A</stationID>
+ <name>hr4-Südhessen-Journal</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>112388344783F88453A2577F4B2C1ADE54EE9F82DFB146D2C421DA8389C8CF083FEB281D3E</stationID>
+ <name>Radio Regenbogen - Mannheim</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447E6B4DCCF5876E75F83E6EB4E88781B2F3CC1186084EA4037E4AF8578B82E3C22</stationID>
+ <name>RTLRadio-Die besten Hits mit Gefühl</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>107.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11238834471ECA242AC981436CA59E877E2D0462782E469C14863EB603905917689FF2B454</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>107.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/schwerte-cable.krp b/kradio3/presets/germany/schwerte-cable.krp
new file mode 100644
index 0000000..27a4ea3
--- /dev/null
+++ b/kradio3/presets/germany/schwerte-cable.krp
@@ -0,0 +1,222 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Armin Setzer &lt;armin.setzer@web.de&gt;</maintainer>
+ <changed>2003-12-21T04:29:55</changed>
+ <country>Germany</country>
+ <city>58239 Schwerte</city>
+ <media>AverMedia AVerMedia TVPhone98</media>
+ <comments>Cabel Schwerte NRW</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1077144985932BDD06534FD2CDCEC7A1AB0DC5C089A278C85198EED9480B5753BD860D26AF</stationID>
+ <name>D Radio</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>87.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498516C18276C526A5A6FC1897098FAA93AE14BC02C31B370865DB80A37AAB9B775E</stationID>
+ <name>sun shine</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>89.0625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498543344A27407106B95CB5A75A65B3957584C23CF3F973FB9B921E2D95A56F124B</stationID>
+ <name>klssik</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>89.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985E317CAE80033BCA15F95B561E97F796FC112E68E602959468C531093F01907FC</stationID>
+ <name>melodie</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>90.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498538FA9188C10BEEC99AA917E553E73E13C8F1D5E50E785A8385144CC3414D89DE</stationID>
+ <name>do</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.1875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449854D1EB19EF083B3C52EA6090BE72686A9A1D8E562D1A26D966540E417CAF15398</stationID>
+ <name>dfl</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>93.6875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449859126C1A9343CB5E7D1772D0DD0215CCF4FAC1B76904A6AE19B86756137CCD983</stationID>
+ <name>unna</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>94</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498542747FACAAD0DAA8C9447ACE964435312DBDC17AC64F9BAD471A6E079A84680E</stationID>
+ <name>wdr 5</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>94.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449853DE3ADCAF7503D774A174BFCEDA450C5C32E21DFBBE4296D24D33DA3ADED3C53</stationID>
+ <name>funkhaus europ</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>95.3125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985D176617F4AE6FC1DF4F6275988C68638B7E82634718E8D5B34B5487499409A5D</stationID>
+ <name>wdr 2</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>95.9375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985477F7AD9DF514413952E81105460B0F3FDD0BD6EAB73EA611706C1F20BCDA880</stationID>
+ <name>wdr 3</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>96.8125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985292391D1E5D699EB9999873874D94A44EBF39B0E5AB2693D2E3C7AB981B11B64</stationID>
+ <name>wdr 4</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>97.1875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449856BB8E384D5D60FF9D98FCC53F144259D2E02DA64F81DB5CC85AC6BEBE5960F0C</stationID>
+ <name>eins live</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>97.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449855ED733ADD136086785DE2E7C5047E7D0E685C90C9100D80B43594DCA807BF106</stationID>
+ <name>h 1</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449858A95E4025FB2F0AC3F2B6CC4DE96BBCB8E51A4445DECC374BDBE99F35428ABD0</stationID>
+ <name>hess 2</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>98.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449859493D3CF6D9C9FA8B0515EB6BF3063CF562D29F83239A08CE79271F224C787AD</stationID>
+ <name>hess 3</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985C113B5A99F723134A0CE8C0055CD468BB77C367956BEA22500DE4739CBA7D86B</stationID>
+ <name>jam</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>101.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449850F690060F05BD9A1D885602F26823A417487FCE16F4E3D4A18D73455C28D28FF</stationID>
+ <name>swr eins</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>101.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985444E52BC6DEA3A688D2D4240EF121A349CCD5DE8FFC172388CC69EA59D1C36AB</stationID>
+ <name>swr 4</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>102.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985F36BE5E79AD82ADDDC95E1303FE1E38E610AB4B3453E58225FBE72E1A418ADCE</stationID>
+ <name>swr 3</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>103.188</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985434F5AA46B282510F1C2EC1D161AED794967F298EB4D96517A53E5BF4D12521E</stationID>
+ <name>ndr 1</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>103.688</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985EAEDA5BDA8ABCAB0051167FFF83AD92EDBD41DA6C7A063FD2DE74059B6A627CD</stationID>
+ <name>nd r</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>104</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985E0597A0A1F2E39D25F1B9AC7C3D26EAB5BF8136597E9CBFDD8E43F0EAEAE793E</stationID>
+ <name>ndr kultur</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>105.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498556CDEA5611742BF99C9AF3B45526FA2D9F3D79290C34C77A291BB876B543926B</stationID>
+ <name>niederlnd fm 3</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>106.375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449854EC27C730A5623C023AF28AD58BE017ADF4DCDA76DBCDCFDB8406F7BEC29827F</stationID>
+ <name>niederlande 1</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>107.188</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498504CD2F0723DEEDFCA44509F52F54A3B7D6AD41925A86E7062F3BF0094E82944C</stationID>
+ <name>bfbs</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>107.688</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/st.georgen-cable.krp b/kradio3/presets/germany/st.georgen-cable.krp
new file mode 100644
index 0000000..2d8ea5f
--- /dev/null
+++ b/kradio3/presets/germany/st.georgen-cable.krp
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Ulf Bartholomaeus, &lt;ulfbart@gmx.net&gt;</maintainer>
+ <changed>2004-04-04T18:38:59</changed>
+ <country>Germany</country>
+ <city>St. Georgen im Schwarzwald</city>
+ <media>Kabelfernsehen von &quot;PrimaCom Sdwest I&quot; http://www.primacom.de/</media>
+ <comments>Empfaenger Kesselberg</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1091965432B88C3847764A9C663C8AC0A5C97D6E5011769C5F3A3ECAB2B27ECDAA471AE173</stationID>
+ <name>SWR1</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>87.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432947D1E66B044F89D1BC156E30425E6427F61DD01E2DFCA7D9662331714557A81</stationID>
+ <name>SWR2 Kultur</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10919654321931CE09EB604FDF85F17398E5B6C55B8D693DBDDAAE894D58FF9DC5D8689144</stationID>
+ <name>SWR3</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>89.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432FD24E482FC2B66F05E33D18E82A58A9CDB20EBF589835FBB9EE992B4C200E16A</stationID>
+ <name>SWR1</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>90.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432E32E77041E15B9BE5862C2319758F5F08C1667003A7F6AB56BF8EF9045A1A506</stationID>
+ <name>SWR4 Baden Wrttemberg</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432DF271C4E0AC30768AE2165B1C19A2D63D619D4883D440F0BC5F39733A2FAC5D6</stationID>
+ <name>SWR3 Stuttgart</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>91.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10919654323F55E12FF6DBACE51B83786A627A1728059EA8F85DB7E0DA34590A274ED983F2</stationID>
+ <name>BR1</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432276EF3EFE99F3F61E0075D338EE1D6214CF2FB3AFBE6F811D442216304D25E28</stationID>
+ <name>BR2</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>93.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432FA5CAFA8A702C6619FDE6482BC5ADEDC46F55FEC3CFED96268244E5B31DA875F</stationID>
+ <name>BR3</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10919654321B6928099D2D8FED43C711854507F6B3A84BF918E2452050DDA5B9CB81198046</stationID>
+ <name>BR 4</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>95.1875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10919654321DFB259745D28F4537F25FFD5531D78FD574635ACD9A60D2451E041359C83CC5</stationID>
+ <name>OE1</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>95.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109196543281C5128D6B48A76BD8E73827C2B564308DBFC93C2C42BAB432B1385D61116423</stationID>
+ <name>OE2</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>96.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432C0BB3243372BEFE7624F5018A35981A71721323A0A25A36A9F81378577896DF9</stationID>
+ <name>OE3</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432E96DF8071756EB185EC7DA4D35F10018F7E8E5E02A39374A6EEF69DFF9FFFE3C</stationID>
+ <name>DRS1</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10919654329CA17B4260CBC763E16BD8E01F2698017F5879821F55F5D8A7962E8374AD199C</stationID>
+ <name>DRS2</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>98.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109196543297DDAE4019187936DC7E85F1BF095AB896AAB7C07750302E58BD6C443AD89A13</stationID>
+ <name>DRS3</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432F6FB8CA6E1E220FAEF3205407CF00119795D90B7CB3B0FBCEF19A70A1B9F4BC8</stationID>
+ <name>AFN</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432AD9EC07268F2B933EFF13EDEB8368471F7FE8CE3FC0D0EB61AFD5B5D0DD8BC27</stationID>
+ <name>ERF1</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432D73ECCE58FC4867B4761A2E6EB5ECFFFC1AB881DE42943B73E0927584BD5311D</stationID>
+ <name>DLF</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>101.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10919654329F165FE215A0EB5131D5B8F91D7D9C6A5722E47F9389BF67F3452720CE363B06</stationID>
+ <name>Radio7</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>104.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432252392007826670240E0B2EDCB8EB94E0613A585EDDA8B7CF9E9150FFB146769</stationID>
+ <name>RT4</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091965432E61A7A2CEFBCADA0DB5FD489B960FBEF55991DA2E98B0AAD40B59177B441CA20</stationID>
+ <name>Radio Regenbogen</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>104.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10919654320EA769F1A134001921FCEAE2C3EC9EBB665D59A9856FF0043E9AD00251B2A836</stationID>
+ <name>SWR4 Radio Breisgau</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>105.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109196543203B84985D3AE23D2C4838DA277149622D0E74DF1D5C030E10BE8EEB48F5AF1FC</stationID>
+ <name>Radio Neckarburg</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>105.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/stuttgart-cable-2.krp b/kradio3/presets/germany/stuttgart-cable-2.krp
new file mode 100644
index 0000000..b6cef9f
--- /dev/null
+++ b/kradio3/presets/germany/stuttgart-cable-2.krp
@@ -0,0 +1,230 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Andreas Stoll, &lt;astoll@gmx.de&gt;</maintainer>
+ <changed>2004-11-17T18:03:46</changed>
+ <country>Germany</country>
+ <city>Stuttgart</city>
+ <media>Cable</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>11007112020227FC96993D8293F94CD84B4F9BAEAC8CBE0185D3FB41F88A81B9F8C5248490</stationID>
+ <name>Antenne 1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>87.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1100711335D98BE7706C36943E60FF59E94B56B3FF5B472B4662C8904BDE5D2F02C1606D59</stationID>
+ <name>SWR 1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11007113667F814894F25077979A0FA12B6582FA4D93DEDB29D60988C6A051BE490A7FFAD1</stationID>
+ <name>SWR 4</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>88.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>110071147023B985F2FB412179043194D564838AC6FF85029B5DCC31ACC85E133E78FC9DD6</stationID>
+ <name>SWR 3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1100711497B22F5E4057BA15EB97BBEDC9A56047D44482C735D02DAAE261522A072015A9A9</stationID>
+ <name>SWR 2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>110071151818E5B61EC6E6D2A6B56073D64DB4A5EFAFDF5A28475957CE3C76142DA65B5DFA</stationID>
+ <name>Radio Energy Region Stuttgart</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11007115765882B61BC5468A54EACE6F91E154C563CDAA58A9795DA2A682FFDF33CECD8760</stationID>
+ <name>RTL Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11007116126DF899D7F23F68C299F8456A345920B78B0C064B3732C14440E60AE15957E8E9</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1100711643435FC8DD01514198D485FD48D1AE4E7018A8B27AC12E98FB5CA2BD6C86699259</stationID>
+ <name>Radio Regenbogen</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>110071172433842E0D07443145EF5C5B54F7EDFFCABF058852B62DD190F14C3E062AA7D693</stationID>
+ <name>Radio Ton Heilbronn</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11007121943AC3AFCCF9D6044FC74C27C45E15317CF984844778F12D00C6F0F5717D355C75</stationID>
+ <name>Deutschland Radio Berlin</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1100711976289676ECCFB870BA9DDD2F17688BB2783A283270933A181E4CC36F377690A06C</stationID>
+ <name>ERF 1 Evangeliums Rundfunk</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1100712021D3E5819B9D3C43D645139E75510246EFEAE13E4BA048BAE9B551FB34B482DF22</stationID>
+ <name>Big FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1100711790571BBF27F3BBBF81EF1081FC1C5AEA826835E1B3B0CDBA5668F9059ED96E7199</stationID>
+ <name>Sunshine Live</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11007120360822BF78D33C4C6C262867822DEAED42F550B5E2D9379CA3948168DC88568E3B</stationID>
+ <name>JAM-FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>110071216945CC0B26F09F421B4565F95AC580A05ABE7CEB8F92BE291469F6679EBCA1F20B</stationID>
+ <name>Bayern 1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1100712580AAB65E7D8CC13C9C5159895620C1D360C94D33FB280F1CD6E28A63F3B683B42F</stationID>
+ <name>Bayern 2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1100712614A38F932FFFEEC774DA807E1DE6A91F7282CEC0D35A783A50EB2E272A74B3F920</stationID>
+ <name>Bayern 3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>110071264669CE2CD473A5C7B08422B3384CA0416074787EF0C756DB690FBD50E939B47146</stationID>
+ <name>Freies Radio Stuttgart</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1100712673031892B2429321AE50103E79F5791B792B7113DC54BA368B896E805F5256C01C</stationID>
+ <name>AFN</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>110071269452A1E774F00002D82C53B94629DB6DED6952B00758D3DB38FE157351D5FB2454</stationID>
+ <name>Hessen 1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1100712711C44B971A384DB44BF9435B86BCB276C905682CAE17B37BDA81A38E16D49CE1C0</stationID>
+ <name>Radio Melodie</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11007127346988B45DE2C9E154261351D66324B8ABBC4D109B5C3386D9A1365FAD013CEE7A</stationID>
+ <name>Hessen 2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11007128352053083F411F3970433E0D3E2C4E504A38C704717FFA7A4484FDE6CF67682F94</stationID>
+ <name>Hessen 3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>110071280570F04997424F489D4363E9D243AAFF350E6784EF0C4527D496A91A9939887CAA</stationID>
+ <name>Hessen 4</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1100712864EEA4654EBC9C54C2343534B9A01DCC1F1D4A37E9FB746EBDC7C0AFEE9D00381E</stationID>
+ <name>Klassik Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1100713044FEC43DFCBFA3EA8EC0407B7CE2A6608268B85339AC5057ED9C25B40C483A02F6</stationID>
+ <name>Die Neue 107,7</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.4</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/stuttgart-cable.krp b/kradio3/presets/germany/stuttgart-cable.krp
new file mode 100644
index 0000000..d8eef81
--- /dev/null
+++ b/kradio3/presets/germany/stuttgart-cable.krp
@@ -0,0 +1,262 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Axel Maier, &lt;axel-maier@gmx.de&gt;</maintainer>
+ <changed>2004-07-29T08:28:08</changed>
+ <country>Germany</country>
+ <city>Stuttgart</city>
+ <media>Cable</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1091290560AFE64FB5C82E0EFF2FFF4A078BA03B421791EBB77BE4B858075BDC35BE578234</stationID>
+ <name>Antenne 1 - Stuttgart</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>87.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905600F07D9A3DFE0C4AB37D760876D57E6D57CAE8410A321AABE7A90E57D442EC289</stationID>
+ <name>SWR 1 - BW</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905606B7A89ECE5C29BED9240F8A43005387F88E573DE997E6D8CF33DD8FD2B655F4C</stationID>
+ <name>SWR 4 - Radio Stuttgart</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>88.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560CC3D6F9D54D997022B302D0F50ED5677DDABC3C27E86B8EE93855079A441501E</stationID>
+ <name>SWR3</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>88.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560A0FA44CC7DCFC1587112B32C218BEDD4DFFAB375845B987E8C34CECD88FA483E</stationID>
+ <name>SWR 2 - BW</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560D5C0BDBEF6DADED6DDB268FF68A9753897A69F7D96C5BD75E24FD18D0DE78DF6</stationID>
+ <name>Radio Energy - Region Stuttgart</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>90.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560E3D40E84A05CD3E246AD2C6D01BEB2F012F90B4D8AD986EA1E54EBAE935D70FC</stationID>
+ <name>DASDING</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>91.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905607B60042963784E30D56D4926607F69DEE2ACFBBDD73C5D2FA43EE448890C4B4F</stationID>
+ <name>RTL Radio</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>91.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560F571F0CA2B9AB0B248E336D747AD55A85E33A82AEF7226541D2B80382BD38A95</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>92.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560C57078606C092157F3D4EA711443361BC5BD92792F19EE70613492B68CC8A15A</stationID>
+ <name>Radio Regenbogen - Karlsruhe</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>93.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560DE295FCC8ADF9EBB9FC722802939E441C836C48B8753ADE9144EE9AB0C9EBF83</stationID>
+ <name>Radio 7 Aalen</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>93.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560DC8A47FA2FE42A34789972DD9250FFE5E9EACBB87F21294A455D9B5BF4261D84</stationID>
+ <name>Radio Ton - Heilbronn</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>94.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560E2F37E6519BFBD04BF79F4B667D30B7BC87054109CE1E3DEA7881807B1C0B46C</stationID>
+ <name>Deutschlandradio Berlin</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560CA656F70828E3625D8DBF1AD714F05A58692176E70EA48160A6C44B006FCA1E1</stationID>
+ <name>ERF 1</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>96.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905608CE51631F13C253ABC3B91A42FFEF5C761EA476F137C07E83CC4EB2163B9194A</stationID>
+ <name>big FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905608C27B89889EFEA52799A886BB741B949AD924C7B4831211CD3A41D334B157D94</stationID>
+ <name>JAM-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056005B889A400ADBD22068F293EB866AF4BBF4A2CBB636E6247712FF0A9D5710303</stationID>
+ <name>R.TV RADIO</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>99.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056057DF51B05096796E0B8720245AD399B777E5C06BB93748B2F0AEBF6C5CEEE09F</stationID>
+ <name>BR1 - München</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>100.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560C3A2C3A0847D92ACE27F044381F607C06875382EEA02D2D5FA3D3BD582E203E9</stationID>
+ <name>BR 2 - Schwaben</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>101</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560802A8CA17DAFC7698E5F9D85829F326F6DC2695C2561EF032B476E7B3475A5EF</stationID>
+ <name>Bayern 3</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>101.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905605E05CA12A172576CAE37CAC619C73251E1E1BD40C0ADFC77A3EBC1D223150F26</stationID>
+ <name>fr Radio STGT./Radio Komista</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560F412A676D52105B8AE631B8429198F7E41A89503D8302C8D0F29D7FBD0BF0FE5</stationID>
+ <name>AFN Heidelberg</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>102.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560396588DB7C871ABFFD938FEC689799ACC5DE41D109D3669E7D214CE49D96690D</stationID>
+ <name>hr1</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>103.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560983C9CBB4A42B62DB6F8310449AF416707B9ED9665FB17562EDD5A2F51203E48</stationID>
+ <name>Neckar Alb Radio</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>103.562</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560556F9CE8F987901A535284BD8C06F75B86D6CE5AC747B713506B6CEED959AD10</stationID>
+ <name>Radio Melodie</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560B6882732E5B98DF5B72596CE10406291F598944E731BBCDA45EB20B00FBE4AC3</stationID>
+ <name>hr2</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>104.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905601A8A1B2039E708A310E2E4B07B4F4C75A74C92DC9B4A660344465A4FBEA301AA</stationID>
+ <name>hr3</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>104.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560BEB4FC643AA566DAFE3FA773AF68FFA5E90802D44DA1864915735F1C528A7A4A</stationID>
+ <name>hr4 Sdhessen Journal</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>105.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056051DF398730B0A791AE5C2B857023D507F3ED82486FDAE1E4D7A6F9BD30783669</stationID>
+ <name>Klassik Radio</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>106.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560917FB1AA7CCBC108D1C40D3776EAE5111917AD22CC2D6EECFB4589264F70C188</stationID>
+ <name>Antenne 1 Reutlingen</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>106.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905608FC106AB2D2070A5231726769AD3F01CA605667008BCC751C7AB2233B4209206</stationID>
+ <name>107,7 - Die Neue</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>107.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/tuebingen-cable.krp b/kradio3/presets/germany/tuebingen-cable.krp
new file mode 100644
index 0000000..e96fe8b
--- /dev/null
+++ b/kradio3/presets/germany/tuebingen-cable.krp
@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Marcus Camen &lt;mcamen@mcamen.de&gt;</maintainer>
+ <changed>2005-05-21T14:41:19</changed>
+ <country>Deutschland</country>
+ <city>Tübingen</city>
+ <media>KabelBW</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>111385509559D01BB2077F4123176A64E5B5221E57AC3364F3AD2D7D576E89E1C6DA6F9294</stationID>
+ <name>Ö2 - Radio Vorarlberg</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>88.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111385509362F81E05EEAE34862D20ABA77D995E33DA946F33BDA523C59E81B081560C3EED</stationID>
+ <name>Österreich 3</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <volumepreset>0.9</volumepreset>
+ <frequency>89.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1113855096FE3233A28B9723AA1CD036E58BC6CDE95DAFF26CFA650D2B979EDC8A67DB877A</stationID>
+ <name>Antenne Bayern</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.85</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1113855098B70AAF6D797BB08D55EF3EBE39717D76B381499C34E5259CAAB985FE384DA101</stationID>
+ <name>Radio Melodie</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1113855098522C1B20123236ABA99BDE1B1973788706E46BC5583FC62B4D718AF43EEFB480</stationID>
+ <name>BR1</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>90.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111385510064B71ADA3BB8923F533C91771B10763B8F636CE3F8C844012B6F2A6D0AEBF7FC</stationID>
+ <name>BR2</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1113855101996AD41ED779AB5BDC62964D1F9949707413D0329480375380FBCC5DA4D9027A</stationID>
+ <name>Bayern 3</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1113855094B3897CFC037CE09DCFC9699F6F528A1C8A16B558FDB08F3B3C1CAC8AD7E12767</stationID>
+ <name>Bayern 4 Klassig</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>92.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1113855102B714FEEDB5E289CEB270E51B3596FAB18E88A96B89D69CE0D3E3A1718B74C596</stationID>
+ <name>B5 aktuell</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1113855103B088ED30154960A87831586746C98CB643AB167F9D47CA2385D3BF9B54CBB113</stationID>
+ <name>SWR1 - Baden-Württemberg</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11138551045FC06A854D8DD3E4D31D7B380138F6BB350C13E16D258D7A35EDA61AB42A1C7B</stationID>
+ <name>SWR4 - Radio Stuttgart</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11166604972EB38F8AF65A93345BC18A7FB74F885E706354A70FB2F29FD813943FDF0F7EE8</stationID>
+ <name>SWR2 - Baden-Württemberg</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1113855106CAE84E8AA317D16974D822EA0C050E97E6E5BF8A9A2336191384192A3357169A</stationID>
+ <name>SWR3</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111385510719486C149D2B8722980D7DB9E83F7C20C981384A9C667ACD8EE201E7847316AC</stationID>
+ <name>big FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11138551099F559B13A72E5581C1B273599D95C17E91FF41780FABE34163A74C390D32CCEF</stationID>
+ <name>JAM-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111385511094057011799AB731B505D6A01E43B63A9C241C30FA391B68158E8DB584E46152</stationID>
+ <name>Antenne 1 Reutlingen</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11138551116C014807D1F7B5DC1F486FF5BBA2C8C67BC0118D2EB0C352EBE906124AEF3DA4</stationID>
+ <name>Wüste Welle</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11138551117FB307C0EC4B862C069304940F2AE4317C6B91B54F035A3347591B41CF1AA0C6</stationID>
+ <name>Neckar Alb Radio</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1113855114A280A1DAC0F1145E3A7EDF9E2439333849C4370DB1F5E28B255AFEBE65160CCF</stationID>
+ <name>Radio Regenbogen</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.6008</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11138551164CE030457AEB9C0624EBA4A35DC29D679AE92EF1A8823702E599007C3A6C385A</stationID>
+ <name>France Culture</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>100.701</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1113855117B03CBE1BED7AC333AEE84F7F7AD94F32D6257EBB2AAAC1E224AB1E120562EC9B</stationID>
+ <name>BBC Worldservice</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <volumepreset>0.3</volumepreset>
+ <frequency>101.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1113855118C3C6BDB25AB6C17578EAF8ABF24E58F202F76EEF4432CDC3CA42579290DE60E9</stationID>
+ <name>DRS 1</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>101.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11138551195979548C6035F284F32918480EB2880746B19551981E14352B3DED815A210F3D</stationID>
+ <name>DRS 2</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111385512023B3AFEA74F4813F730D5C65AAFEA76CD263F9EE3D51F88C18BC4DE0F119EA76</stationID>
+ <name>DRS 3</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>102.851</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11138551210E041B7C24D5C2A08219922CA8E8AE6371C0AC4BDBC9AD16EC284DA587DD0B99</stationID>
+ <name>AFN Heidelberg</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111385512255845F70C8B3C1B1D0C348D623D0D7CCFB1E689329A6AD1496ADD061DCDFE95C</stationID>
+ <name>SWR 4 - Radio Tübingen</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11166606526699A3FCCC52599A9BC338C837905849AE2A3D8472FAC4776CCF36530390244F</stationID>
+ <name>hr2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111385512486DCC793EE650419651084D2B19CC8405063799090AC25407625EF5F0FA1FAA3</stationID>
+ <name>sunshine live</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>105.351</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11138551263DAFE828EC6F7A5A985CC99F930F03458723FEA603DC039346DED68247ABF757</stationID>
+ <name>Dasding</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>106.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1113855127F6CEA274CC7042DC9499ED0665C0F4046C1228D7BABD9850B9FD022165B5338F</stationID>
+ <name>ERF Radio</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>106.901</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11138551286D6535E78F694D9590F7C66CCC7465FDC93938D8AFA7D97B55D1907B4A9A3610</stationID>
+ <name>RTL Radio</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>107.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1113855129F77B0DD32B240FD43AD7463B565C4E17AB19ECBFF2020CB1E4291F7F6E5A24C5</stationID>
+ <name>Klassik Radio</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>107.901</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/ulm-cable.2.krp b/kradio3/presets/germany/ulm-cable.2.krp
new file mode 100644
index 0000000..18ecd26
--- /dev/null
+++ b/kradio3/presets/germany/ulm-cable.2.krp
@@ -0,0 +1,222 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Michael Balser &lt;Michael.Balser@Informatik.Uni-Augsburg.DE&gt;</maintainer>
+ <changed>2003-09-05T11:09:34</changed>
+ <country>germany</country>
+ <city>ulm</city>
+ <media>cable</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338535227FA934E63C5C47523B9F3BCEF8997BF8DE5B817413A8E0C5D5B6BBCC24B7D96</stationID>
+ <name>SWR 1 BW</name>
+ <shortname>SWR1</shortname>
+ <icon></icon>
+ <frequency>88.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352380E65E41BC8240D46BDD7F5E6D1B076DE56D6C28DD8496BFA984C261D83E956</stationID>
+ <name>SWR 2</name>
+ <shortname>SWR2</shortname>
+ <icon></icon>
+ <frequency>90.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853522916A663026A34938DDB1F06E55CB74A838CC59E9563C07D9E5AD69F8C36B8BD</stationID>
+ <name>SWR 3 BW</name>
+ <shortname>SWR3</shortname>
+ <icon></icon>
+ <frequency>89.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352373A702FBE0E28C78BC8B3894C858FBF9322395E33788D54D104E6710F080C75</stationID>
+ <name>SWR 4 BW (Ulm)</name>
+ <shortname>SWR4</shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535274FC3B2CCE43FF4F426AEB977435D3E6A7BA3ED2FCC2B2A2BF9FDA29694D000F</stationID>
+ <name>Antenne Bayern</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>99.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853522779BCEDE8EEFCE4355AC615482AF098FA26DEB14CEE548FFA394CFFE467D42A</stationID>
+ <name>BR 1</name>
+ <shortname>BR1</shortname>
+ <icon></icon>
+ <frequency>93.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853525461BE0C1C4CFE4F46B3AF50AE42DFF7C105F97576B5FBED8B45DDE879BCD91E</stationID>
+ <name>BR 2</name>
+ <shortname>BR2</shortname>
+ <icon></icon>
+ <frequency>91.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352786BA7F9313AAD8FA103D54FF674D60BEC36A65DB46BA44CD903562D066BA518</stationID>
+ <name>BR 3</name>
+ <shortname>BR3</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352C104EC7544A83558F5CA0D7F1BBE153F2A2BF608E0ED6D444B765A43E993F7DE</stationID>
+ <name>BR 4 Klassik</name>
+ <shortname>BR4</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853520539B811E2F1B154255D9B97169D9B4E8A913105E8F301D3AC4984007F9B0610</stationID>
+ <name>BR 5 News</name>
+ <shortname>BR5</shortname>
+ <icon></icon>
+ <frequency>99.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352D0639E282C75CCCE9060467E4A39B8730F180540DAE36377EB842511F65800DA</stationID>
+ <name>Radio 7 (Ulm)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853526F7A5559B337E7B4AE57ACD36EF2F2269CB5720495108F5E44EFC4DE20031CE8</stationID>
+ <name>Radio Donau 1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>87.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853523CBDF0167F65D9CBA2F8D57F423A769CC3A331FAC712E2B865A480F282AD3570</stationID>
+ <name>Österreich 1</name>
+ <shortname>OE1</shortname>
+ <icon></icon>
+ <frequency>95.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352BFE7C432E8D98E19E490B7FE7DA3A92C5A0AB91A499AB2E75AC3D2EFE6F67626</stationID>
+ <name>Österreich 2 (regional)</name>
+ <shortname>OE2</shortname>
+ <icon></icon>
+ <frequency>106.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853525AAFC7F67EC2E82D388F37E8C78A9F1A9E98F53D3D1FD7698A93460FDB491F99</stationID>
+ <name>Österreich 3</name>
+ <shortname>OE3</shortname>
+ <icon></icon>
+ <frequency>107.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535209D0B71D07AE758468EAE3F6A0D33B4B742FD0B48B274FAD7C938313D182B6EF</stationID>
+ <name>Schweiz 3</name>
+ <shortname>CH3</shortname>
+ <icon></icon>
+ <frequency>98.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352F80ED0F37629A1B569D1F6A6C76B240E31A0D76A516FE6434EB9E10C5FA736AD</stationID>
+ <name>Klassik Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853529E5985B2A887E8C5E449F2E7BCA24F6F922B69A4B9B8D70EE883F7B7AF0657A4</stationID>
+ <name>RTL Oldiesender</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>93.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535286DFE3DAD746B526F34C197CBA9FC8E80F35799AD91FAE736D01B7391BC8F179</stationID>
+ <name>Radio Melodie</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>102.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535224258C57488C6DF38DC2F71C3401CE3DC76E7F3469EE85586C1BB87FB1C56347</stationID>
+ <name>JAM FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>103.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535281317CB10598C5E4E5499C0FFF56A91D094C4B394CE7A247D013F46837B8F1B7</stationID>
+ <name>Free FM - Ulm / Canale Grande</name>
+ <shortname>FreeFM</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535270FFBE10BA366D2EFCD2B51842E111F7715C731FABEC63684F06C01EB92206B7</stationID>
+ <name>Deutschlandfunk DLF</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <frequency>87.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853521342336735B7D9CD15DE50763A4655196B6E67FE3D911A32474D7AE673D98B6C</stationID>
+ <name>Deutschlandradio Berlin</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>96.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853522E09CF2F3BC59C9FD73128238A2D34EAF55EEA5363261354289FBF02A8143A0E</stationID>
+ <name>Evangelischer Rundfunk Deutschland</name>
+ <shortname>ERF</shortname>
+ <icon></icon>
+ <frequency>87</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385352CE84DF09E342DD4B57741CB6149D33831A84B33CC11DE05FF54EBCF58550895F</stationID>
+ <name>Big FM</name>
+ <shortname>BigFM</shortname>
+ <icon></icon>
+ <frequency>97.127</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853524E5217218B91935DE159A0B07E6897804A61696A688331C3ABBED89FB842E5AE</stationID>
+ <name>Sunshine live</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/ulm-cable.krp b/kradio3/presets/germany/ulm-cable.krp
new file mode 100644
index 0000000..5ed123e
--- /dev/null
+++ b/kradio3/presets/germany/ulm-cable.krp
@@ -0,0 +1,231 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Oli Pursche &lt;oli@s-a-d.de&gt;</maintainer>
+ <changed>2003-07-03T21:10:59</changed>
+ <country>Deutschland</country>
+ <city>Ulm</city>
+ <media>Kabel</media>
+ <comments>Ob schweiz1, radio energy und radio fantasy ok sind weiss ich
+nicht!</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853514E7DFEB2A929647ACCF0E6E6F06BCE91B1164B677AA2F2C12942E6BE87FE43C3</stationID>
+ <name>Radio Donau 1</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>87.55</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535191B2812265B0E721A0CD027AE06BB7AE2C299455FA3B24E8A692DF28F6BC045F</stationID>
+ <name>Deutschlandfunk DLF</name>
+ <shortname>Oe1</shortname>
+ <icon></icon>
+ <frequency>87.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853518AA396D63EC483FA0E07E0939249F2C17842E306D3AC8141865146CFEE32CB85</stationID>
+ <name>SWR 1 BW</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535151B6C34E9EED4FCA4DD1C1AECDFD3D5AC7C0A03B8FE7126A5D7AF77609256437</stationID>
+ <name>SWR 3 BW</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>89.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535145F2AB2D8B80C43167DF6B0AF11652A03EDEB657692F52CAE6D890BC197D9147</stationID>
+ <name>SWR 2</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>90.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535131B5038634727B4CA733B2CB2E4C5D29465594AE28A2B6986741BB10C29ACA0D</stationID>
+ <name>SWR 4 BW (Ulm)</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853511F555EDE22E66E6DD199C16AD74A998F04F7BCB250DDFCF0E7B09D2E0147ECC3</stationID>
+ <name>BR 2</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>91.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535198B196E4FEDDC0DA53A12288886D60BB1ED91529F4FA7DC7916472A330B53E01</stationID>
+ <name>Radio 7 (Ulm)</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>92.3003</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853516320D634887CCF4E7613BEEB2901D1FA9F693177D9B023310DB0B22520FA701E</stationID>
+ <name>BR 1</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>93.4004</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853515EC2BF3B12B3594DC0672E526FB4111B7E62BE2A0730D3162983B904952048C9</stationID>
+ <name>RTL Oldisender</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>93.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351EA0F40B55EB761A754E7CFAF9DF2DB1EE9DD9486A649741B0D5A50866420135D</stationID>
+ <name>Klassik Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.95</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853515CBE7C445731B203397AE09ACE825BF2C3D5F876A7834550D7F1B93A23E200C5</stationID>
+ <name>Schweiz 1</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>95.6005</frequency>
+ <volumepreset>0.9</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535168A299D72E4A58E63A7233EB6D9706C22EF3B87F52BB0BD3A7D773220B8FDF1F</stationID>
+ <name>Österreich 1</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>95.95</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535180A308890BECC8896A3E28C6A71B246D0864CE99E95DD1B6E6E3964CB328F512</stationID>
+ <name>DeutschlandRadio Berlin</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>96.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351B4F03D39532C22E157B9760D97AC4050068C713066C12807B5EA7DF904C8B515</stationID>
+ <name>Radio Energy</name>
+ <shortname>NRJ</shortname>
+ <icon></icon>
+ <frequency>97.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351248C66EFAE8C74A65265503F688FE960406FC114C58460F78DF29C0F4C2B497C</stationID>
+ <name>Free FM / Canale Grande</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853514AFD9FA13623DD42E07D46AA75E779E089900746C09FF1E17D5383D1AD494204</stationID>
+ <name>Schweiz 3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>98.4</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853519A71D664D80C8644BF44B4F8638D3C0DEA8F2983ECF18610EA04A5AB9A2A3676</stationID>
+ <name>BR 5</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>99.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351859AAD5EB47024194200F6895D7D1A0666A91033C6064541A2323844FE24B526</stationID>
+ <name>Antenne Bayern</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>99.7508</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535145AC69965511732D7BD77B400C976293517C2D2D3296324153D167891DFD5C58</stationID>
+ <name>BR 3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853519F1F15432611C9123D12897FB2E75FA57EB091A51387A0E7C37E7D6062F638A7</stationID>
+ <name>Radio Melodie</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>102.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853517193F3D0EBEE54B1BEB8FAFAC6FCDCA00C724379FA206CF0C6081466DA618791</stationID>
+ <name>JAM FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>103.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853512661F2D09408CBFBB85A8878FAD46A3E5101E9479C43B3C344FEBC5D19DF84BB</stationID>
+ <name>BR 4 Klassik</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385351AE8009B9A63F0C8D3B24526299D197ED8718185EB409E9DCCD13DE8CB7F4B99D</stationID>
+ <name>Schweiz 2</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>105.301</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853513950D0FD8C5F30163E2A270D3A478313DE1B9933C035D6DA390765D4D8B8B848</stationID>
+ <name>Radio Fantasy</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>106.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853515644ECBC41312B6FB693AA2A4E486069DD835521747E933E7D65A343DE64A60E</stationID>
+ <name>Österreich regional</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>106.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853510A0D0977DB70CAAFE8DC61E5F2CBAE6ECA5FCFCC8E7B62105FB04787F9F681BE</stationID>
+ <name>Österreich 3</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>107.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/weilheim-iOB.krp b/kradio3/presets/germany/weilheim-iOB.krp
new file mode 100644
index 0000000..13d19e2
--- /dev/null
+++ b/kradio3/presets/germany/weilheim-iOB.krp
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Rainer Kulhanek, &lt;rainer@kulhanek.de&gt;</maintainer>
+ <changed>2004-08-14T22:03:29</changed>
+ <country>Germany</country>
+ <city>Weilheim i. OB</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>11164554446E32E889515479A5C71CAD3E068E20B99D7E904587A1458D0376E0D4BA98B6AD</stationID>
+ <name>Bayern 1</name>
+ <shortname>B 1</shortname>
+ <icon></icon>
+ <frequency>87.95</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444FCA0CECB0463E139B1AEE736B2A0CCCDB2776710D1AE2BC2BB618931BC11EDC5</stationID>
+ <name>Bayern 2</name>
+ <shortname>BR 2</shortname>
+ <icon></icon>
+ <frequency>88.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554447556AC60127E1A7BED58A0E4420A99153F04B7DF73ECE941B1918BB9618B8349</stationID>
+ <name>Bayern 3</name>
+ <shortname>BR 3</shortname>
+ <icon></icon>
+ <frequency>88.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554449DA5BA9671A32889B9B85F7F540373ACADB0588A56D71ED4498502FE204604B9</stationID>
+ <name>Bayern 4 Klassik</name>
+ <shortname>BR 4</shortname>
+ <icon></icon>
+ <frequency>90.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444F8E42AB6EBE9DB59191082CAD22EA4EBD6FB316B9F2203E1EFB31F7216B511FC</stationID>
+ <name>Bayern 5 aktuell</name>
+ <shortname>BR 5</shortname>
+ <icon></icon>
+ <frequency>91.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544407FC71D9C1A97D4A6089625B5759DE604964AC18B133CFFA27036B4DB32D777B</stationID>
+ <name>new station 5</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.1512</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444798B38A1588145CDE3CBD6932909AC2D5A986DCAA86346782A11C9CC99408307</stationID>
+ <name>Oesterreich 1</name>
+ <shortname>Oe1</shortname>
+ <icon></icon>
+ <frequency>93.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554442B1F648543C98ADD5DBFCB300C740754CE2D5C865BC133A07F8A462A3F520A62</stationID>
+ <name>new station 7</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>94.6514</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554445C651386E4117806A69B36C5F4BA6A4E3802B6716E19D4860E185918B39A5659</stationID>
+ <name>new station 8</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>95.5764</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544426CE32C301CF3A26F3DCD46C148114439591BA572695A9136F5AE7AEE086E5A3</stationID>
+ <name>new station 9</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>96.1515</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554445ECE301833269424DB45BBC961E1618F680F52D90637990692A23F54884FB4E2</stationID>
+ <name>new station 10</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>98.0766</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444CA1B4FA51A1D007D8C24B8CBF1172947CDC6FEF15904EBFB46ABD0115BEE5B04</stationID>
+ <name>new station 11</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>100.052</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554447B3D9A1133FCC2B76C8403382242D4D0579D1A7A14BB9206AE9DD9D858D21056</stationID>
+ <name>new station 12</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>100.852</frequency>
+ <volumepreset>0.08</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554447A354B16A7FC58F99C28318CD14BE9DFC5D65E417D32EE5C104FAB36D6253C2E</stationID>
+ <name>new station 13</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>101.752</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444617A443CAFE2C3DD8EC145151143C59F171B88CEE8524A1C1D9B26D119BF0798</stationID>
+ <name>new station 14</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>102.402</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554441A205BF12A09EAFE423A5FC7F473BD3A0D04E0D53738979650DA72AC0715BFED</stationID>
+ <name>new station 15</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>103.377</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444DA1DD79C0391B0733F4770BEE21D1B7DDBA64F7EDF64B2D0654EBF74D3BE3A2C</stationID>
+ <name>new station 16</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>104.227</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444DDB7088850EB0FB4260B67249F12647ED84BFAC4FB499FDEAC69CED123BA8514</stationID>
+ <name>new station 17</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>104.802</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444936E26720CDD679B1678AF91433E2808BDCF23B34A258A64E07EDF7EE540AD54</stationID>
+ <name>new station 18</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>105.627</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444BBA173D1F394CBA111AEDC6D88DB7C9D2AAC25EBBC7858833468A09922615292</stationID>
+ <name>new station 19</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>107.027</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/weingarten-cable.krp b/kradio3/presets/germany/weingarten-cable.krp
new file mode 100644
index 0000000..f012a75
--- /dev/null
+++ b/kradio3/presets/germany/weingarten-cable.krp
@@ -0,0 +1,342 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Prof. Dr. Peter A. Henning, &lt;p.henning@fh-karlsruhe.de&gt;</maintainer>
+ <changed>2006-01-07T15:56:25</changed>
+ <country>Germany</country>
+ <city>Weingarten/Baden</city>
+ <media></media>
+ <comments>Kabel Baden-Württemberg</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1137333319654A4B8AAF5AA60FFC41C5800287552A70A1A1E922BCE4A5472BDE169A524422</stationID>
+ <name>SWR1 Baden-Württemberg</name>
+ <shortname>SWR1</shortname>
+ <icon></icon>
+ <frequency>93.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137333319F46F4BB883C8A637CA0456E79DBBBFCE5C0A60C0A26B404267D11805AD8679D2</stationID>
+ <name>SWR1 - Rheinland-Pfalz</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>98.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137333319860F77E929512606E068D5AAF0CD3638FFF4FD2F45BCCF77B302A58F890A4C75</stationID>
+ <name>SWR2 Baden-Württemberg</name>
+ <shortname>SWR2</shortname>
+ <icon></icon>
+ <frequency>92.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113733331901D435712C5668E660784FC8D27B0E3FB5EFC0FD328230101BEC6B7086FDD9AA</stationID>
+ <name>SWR3</name>
+ <shortname>SWR3</shortname>
+ <icon></icon>
+ <frequency>97.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11373333198A9052D33061A39C3A38907C9FDDEA4C7D69B066D4D6B0EE645DF365E594D8F1</stationID>
+ <name>SWR4 Badenradio</name>
+ <shortname>SWR4</shortname>
+ <icon></icon>
+ <frequency>91.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11373333199BEA87A0F8479C75A76159798C1C4EF816119DC987E28EC7289653950D3394F2</stationID>
+ <name>SWR4 Vorderpfalz</name>
+ <shortname>SWR4</shortname>
+ <icon></icon>
+ <frequency>91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137333319D4052C858A412C61C09449A8F70A75A9FDCB7BF95F6C410B73EC513CD650578A</stationID>
+ <name>HR1</name>
+ <shortname>HR1</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113733331916D994810E1678240FC06A4CF9E1B5AD40B317DC4C485B652F28B0665F811E20</stationID>
+ <name>HR2</name>
+ <shortname>HR2</shortname>
+ <icon></icon>
+ <frequency>95.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137333319A56ADFD58B0037977EBB58847A504B33481A3CAF1DD6024B699F38639CD47434</stationID>
+ <name>HR3</name>
+ <shortname>HR3</shortname>
+ <icon></icon>
+ <frequency>96.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11373333194DE44DC323E9B930CCCFC61D9E68CE79218123CACA22B493AD4A83D78BE4CED2</stationID>
+ <name>HR4</name>
+ <shortname>HR4</shortname>
+ <icon></icon>
+ <frequency>94.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113733331921D85152C6073D5ABD3851C7BA868C506A5CB3E5CFE2E3CB6AA9A1176A9AC317</stationID>
+ <name>BR1 Oberbayern</name>
+ <shortname>BR1</shortname>
+ <icon></icon>
+ <frequency>98.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137333319BC2579F2ECE6F2EE8826F657D7638999B881CE2865C58A3794979ABFA720A773</stationID>
+ <name>BR2</name>
+ <shortname>BR2</shortname>
+ <icon></icon>
+ <frequency>104.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137333319D6E635887AA53B75D9D7E623247B123457DAB4A31E9AE7A55E82ADACA356282C</stationID>
+ <name>SR1 Europawelle</name>
+ <shortname>SR1</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113733331946B4C8F16186015B3381AF884E71385174F904A03A8EFB5BC883C28B4BB51192</stationID>
+ <name>SR2 Kulturradio</name>
+ <shortname>SR2</shortname>
+ <icon></icon>
+ <frequency>90.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137333319EDB1B426B2F759E99472A804E6A80FE778A43AC724EB31C9CCF29112C669C6B0</stationID>
+ <name>SR3 Saarlandwelle</name>
+ <shortname>SR3</shortname>
+ <icon></icon>
+ <frequency>97.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113733331985A91D6D3E04F2B3A228F17D6AC62BDE6A81A7F8C29DFEB53D9AF044E4685786</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <frequency>87.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11373333197010EB222A562E82470004355DFD854D9B2D1CB418ED12F704D1E2ECA294FA90</stationID>
+ <name>Deutschlandradio Berlin</name>
+ <shortname>DR Berlin</shortname>
+ <icon></icon>
+ <frequency>105.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11373333197A69B2276B2678534156CFE6FF9F07D86AC5312BF7F8E21A2B3701E1F8C49653</stationID>
+ <name>RPR1 - Rheinland-Pfalz</name>
+ <shortname>RPR1</shortname>
+ <icon></icon>
+ <frequency>101.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11373333197AD01D989492CF57ED2625ED7DBD98F80BC5FB1B45E3AF78037E2C17E488A6FD</stationID>
+ <name>RTL Radio</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <frequency>88.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11373333191F9CEB84D99F415CE8325D8F44223DC3EDC5CA4E33042D1A81C60FA0F333983E</stationID>
+ <name>Radio Regenbogen Ka</name>
+ <shortname>RR</shortname>
+ <icon></icon>
+ <frequency>100.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113733331900410CA66DE6F7E9311FC1E62A918F36B883DB6122685B4E2B259602C58E2EA1</stationID>
+ <name>Radio Regenbogen Mannheim</name>
+ <shortname>RRegenbogen</shortname>
+ <icon></icon>
+ <frequency>96.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113733331901876DED300AF2763F5D6041992F2AB89D660E1C905D5BB1ED1B2FCD42F508B7</stationID>
+ <name>Querfunk/Lernradio</name>
+ <shortname>QF/LR</shortname>
+ <icon></icon>
+ <frequency>100.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137333319F9E809584BFCB2E26670D9610A0F3C49056A75FEA7B24F7E822F181D0466FEAF</stationID>
+ <name>JAM-FM</name>
+ <shortname>JAM</shortname>
+ <icon></icon>
+ <frequency>95.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113733331965BC52A2DB17EADEFEF4F90975A7D177BE66458437FB53AFDB743DEC4F4F8F9D</stationID>
+ <name>Hit 1 Radio Karlsruhe</name>
+ <shortname>Hit1</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137333319A9CC89844AC8ED51CD5C2E880AFF05C4172A167F4BB6B682165B521D0231CD5B</stationID>
+ <name>Hit Radio FFH</name>
+ <shortname>FFH</shortname>
+ <icon></icon>
+ <frequency>107.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137333319FD073383F202F3D5A120FB502E0F55EB8A743A0C6B0496F07F19A9BF33A5EF20</stationID>
+ <name>Hitradio OHR</name>
+ <shortname>HOHR</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137333319082CB2461363C4CA877F063984F5E67977A18B2C2F00FDC705852934F9FDC8B9</stationID>
+ <name>Hitradio Antenne 1 Pforzheim</name>
+ <shortname>Antenne1</shortname>
+ <icon></icon>
+ <frequency>98.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137333319FA5DFD37F38EAF7F60A1FADB365C31F1BA89F46C485A3BBE73BBFE94CB8AC068</stationID>
+ <name>big FM</name>
+ <shortname>big FM</shortname>
+ <icon></icon>
+ <frequency>88.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137333319B12CE416C0ED654CF376B730259C809718F19158B979E2EDF7E9CDCAA15C79D3</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Melodie</shortname>
+ <icon></icon>
+ <frequency>103</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113733331983CABBC990ABBCB1D83A95E8927ED3704E4251A23B7EBC5153F6857BCB750CD1</stationID>
+ <name>Rockland Radio</name>
+ <shortname>Rockland</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137333319D36DABDB29CD9FB3A9A7FAC87105C994F65EEF49C482540E69B392A157506BE4</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik Radio</shortname>
+ <icon></icon>
+ <frequency>93.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137333319FFE719258F7964775EF7455F6450837680D079FE81EDA8E3C22B1CA4F4783C35</stationID>
+ <name>Radio Energy Stuttgart</name>
+ <shortname>Radio Energy</shortname>
+ <icon></icon>
+ <frequency>102.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137333319923FB99928FC9ACE9291137CD38931CCFCA0766AE4D762C2A532E3EB1A3EA899</stationID>
+ <name>Das Ding</name>
+ <shortname>Das Ding</shortname>
+ <icon></icon>
+ <frequency>89.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137333319CA91E4686D6605EB5C6E72BC667966C470F80653EF202A7D28557DC9CB1F705A</stationID>
+ <name>sunshine live</name>
+ <shortname>sunshine</shortname>
+ <icon></icon>
+ <frequency>90.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11373333195C71426A67ADC388B42402D88F7ADCEE97D680D459EDBA3406C0BFEA6361F72F</stationID>
+ <name>Radio horeb</name>
+ <shortname>Radio horeb</shortname>
+ <icon></icon>
+ <frequency>92.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137333319CA77AFB83099962AC569CF163D299B5F382C499741584F62818B40E40E0E1E42</stationID>
+ <name>AFN Frankfurt</name>
+ <shortname>AFN</shortname>
+ <icon></icon>
+ <frequency>104.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137333319FECB5A972D051F1DE99685F38F4F9A9AD09F936AC312859426892BCC990CC74C</stationID>
+ <name>France Culture</name>
+ <shortname>FCult</shortname>
+ <icon></icon>
+ <frequency>87.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137333319A8DD8302D50EAF0235B7F282DD8EC5E1F3D8CC2465688478DA5210E9386DB348</stationID>
+ <name>France Musique</name>
+ <shortname>France Musique</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11373333192A8B28683168FF265F0542262E0E6FC7D034F8903541C3CA21756C05C9AD2B93</stationID>
+ <name>Radio France Alsace</name>
+ <shortname>RF Alsace</shortname>
+ <icon></icon>
+ <frequency>89.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137333319338C23F5BBB867AE870073C890DA300F344FDFD74C5701DA82ED8F2878CD05D7</stationID>
+ <name>Radio France Inter</name>
+ <shortname>RF Inter</shortname>
+ <icon></icon>
+ <frequency>107.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11373333190C85465DF4F123527F2B686FD50F72BF29AF888C5D9D99D0580419DCDC579FB9</stationID>
+ <name>ERF Radio Evangeliumsrundfunk</name>
+ <shortname>ERF</shortname>
+ <icon></icon>
+ <frequency>91.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/weinstadt-beutelsbach-cable.krp b/kradio3/presets/germany/weinstadt-beutelsbach-cable.krp
new file mode 100644
index 0000000..7b55989
--- /dev/null
+++ b/kradio3/presets/germany/weinstadt-beutelsbach-cable.krp
@@ -0,0 +1,278 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Thorsten Ortlepp, &lt;Thorsten.O@web.de&gt;</maintainer>
+ <changed>2005-10-25T22:11:51</changed>
+ <country>Germany</country>
+ <city>71384 Weinstadt - Beutelsbach</city>
+ <media>Kabel BW</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>113310325670E33178065BD57A72555CC8847EB0339F54B510075A6324BB544C7CF724337E</stationID>
+ <name>- offband -</name>
+ <shortname>- offband -</shortname>
+ <icon></icon>
+ <frequency>67.8125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113310325619E0E7DEE34C067B6A61FA6CB7ECEDBD15C4276E9B2DB54EF4721635245A7573</stationID>
+ <name>Hit Radio Antenne 1</name>
+ <shortname>Antenne 1</shortname>
+ <icon></icon>
+ <frequency>87.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032566BAE15394028FC270B45D543F436328EDD81F7FDC6CFFD1ECAD54DBB6A14F5C9</stationID>
+ <name>SWR 1 Baden Würtemberg</name>
+ <shortname>SWR1 BW</shortname>
+ <icon></icon>
+ <frequency>88.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256FF5B5FF60FB3364DC5B6A92394443EE5666BF6F465CD862392A9E55D2EC8B47C</stationID>
+ <name>SWR 4 Baden Württemberg</name>
+ <shortname>SWR 4 BW</shortname>
+ <icon></icon>
+ <frequency>88.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032566C91EAE0EA354896B5A41F51A8015332442280F053E0046265B8DE0D9D31D04B</stationID>
+ <name>SWR 3</name>
+ <shortname>SWR 3</shortname>
+ <icon></icon>
+ <frequency>88.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032560702A423C50DA6003458CFE5A5B533D352A898F54D24D6227E8D0052BFA6F3A3</stationID>
+ <name>SWR 2</name>
+ <shortname>SWR 2</shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256AC4248FDC0F8364C58E2D5F584313BE1D36FA214E341FD43F381250CFEB54749</stationID>
+ <name>Radio Energy</name>
+ <shortname>Energy</shortname>
+ <icon></icon>
+ <frequency>90.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256BAB4410D7EBA7FE3FCAE2D98B563FC4E33FF9DB5AA582A0F997BB2C7BC67888B</stationID>
+ <name>Das Ding</name>
+ <shortname>Das Ding</shortname>
+ <icon></icon>
+ <frequency>91.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256CF12D42BE20354A13F7331BA091F6312DB3D52EFFCADEEAA7F22704C11B27577</stationID>
+ <name>RTL Radio</name>
+ <shortname>RTL Radio</shortname>
+ <icon></icon>
+ <frequency>91.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256BBF91DB63B85A67A4790347275BEF306FC0003E388ABEE8568254DEFCF79C606</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <frequency>92.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032563C7B70FBC1E830445A597CFC5289BC74435566FF3B74CE9BE48C295878FBAF30</stationID>
+ <name>Radion Regenbogen</name>
+ <shortname>Regenbogen</shortname>
+ <icon></icon>
+ <frequency>93.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256D300888CFA4282F997401D74C5C7C2C2D75D2A730A94701EFA2800B85AD0272F</stationID>
+ <name>Radio 7</name>
+ <shortname>Radio 7</shortname>
+ <icon></icon>
+ <frequency>93.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256D6EBF63B893371F6765EAAF2CD93C9104801A845A5FE313AFDCDCB43C8CC7641</stationID>
+ <name>Antenne</name>
+ <shortname>Antenne</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256285A661EC66C81A532D232981D922083F8CE9BD3DF3B1E196075BF6228F4E63A</stationID>
+ <name>Bayern 4</name>
+ <shortname>Bayern 4</shortname>
+ <icon></icon>
+ <frequency>94.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256F353DF167E0FAF167D80B8844FCBF7D8D3529DD6FEB69B81AF2AEAA1A1028E6A</stationID>
+ <name>Radio Ton</name>
+ <shortname>Radio Ton</shortname>
+ <icon></icon>
+ <frequency>94.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256B861C2608176D5FDA4D02B50256BF533BC3B2D8D929C9689423ED65A75BBFC2A</stationID>
+ <name>Deutschland Kultur</name>
+ <shortname>D Kultur</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256C998DDC85D5FE70DE489ACD65B4C5A6D3E87E183CC8DCFB455CC94886F360C09</stationID>
+ <name>ERF Radio</name>
+ <shortname>ERF Radio</shortname>
+ <icon></icon>
+ <frequency>96.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113310325693559213B1D89D6D169A0F81E9894A39965A3FB511B7AA604B480BE79538E105</stationID>
+ <name>big FM</name>
+ <shortname>big FM</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113310325684B98765CFB43219B48D80CD79F83B7543623CB1A024D8D080BFD2850C2587BC</stationID>
+ <name>Radio Sunshine live</name>
+ <shortname>Sunshine live</shortname>
+ <icon></icon>
+ <frequency>97.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113310325612C826373C340ED605C07D243B2FB05882248A39FFBB1A74AA7311FB336A150E</stationID>
+ <name>JAM FM</name>
+ <shortname>JAM FM</shortname>
+ <icon></icon>
+ <frequency>98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032569774896D35A9913723CB22FCC5E08A5FA547B25FCFFA3F1BFF12B3E536FEB9DC</stationID>
+ <name>Bayern 1</name>
+ <shortname>Bayern 1</shortname>
+ <icon></icon>
+ <frequency>100.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113310325643F5B89BBC7AE8B0C79388AF22AEE23CED7E9A4D38BA7D4944A1EA29F3EA41A0</stationID>
+ <name>Bayern 2</name>
+ <shortname>Bayern 2</shortname>
+ <icon></icon>
+ <frequency>101</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256533B7A8C9AABAEB00DF28096ACF50E5FAA02A5E39B3B7B897855DD86F9157C0D</stationID>
+ <name>Bayern 3</name>
+ <shortname>Bayern 3</shortname>
+ <icon></icon>
+ <frequency>101.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256628DA862D020DEA9E1C040A3F5C7245ED60C27C50FD2FE191340A45FAF132EE0</stationID>
+ <name>Freies Radio Stuttgart</name>
+ <shortname>FR Stuttg</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256A9D30BE31A082E6DC30BA7DA9168DD173A4D9D9AC1A58745A91B28EAF703FAC9</stationID>
+ <name>unknown</name>
+ <shortname>???</shortname>
+ <icon></icon>
+ <frequency>102.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256BA7C09E575F3A69E2ADB1031783EE065D97AFFE388687F728156A042A99E9B2F</stationID>
+ <name>Hessischer Rundfunk 1</name>
+ <shortname>hr 1</shortname>
+ <icon></icon>
+ <frequency>103.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256750DC7AF84C469726B2E3B83EE6F7C31FAADF3F2D675A0F1FE8B39D395F49120</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Melodie</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032561B695A91CD20A33818F128ACC583589198A076679A4612EB4308AF846565D804</stationID>
+ <name>Hessischer Rundfunk 2</name>
+ <shortname>hr 2</shortname>
+ <icon></icon>
+ <frequency>104.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113310325625677B4D900D594F6AC850FB371FF3D2BC3C47C611A67B68506DDF95A7CB6974</stationID>
+ <name>Hessischer Rundfunk 3</name>
+ <shortname>hr 3</shortname>
+ <icon></icon>
+ <frequency>104.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256D5C6D8D63572CAEBABF96FEDAE55BB4569F611D11D50B58F6A8AD494442B1CCD</stationID>
+ <name>Hessischer Rundfunk 4</name>
+ <shortname>hr 4</shortname>
+ <icon></icon>
+ <frequency>105.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256A804BE2A53591478837D078C03016BFC15519AEB8E42B61B806CEF06281E18CD</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik Radio</shortname>
+ <icon></icon>
+ <frequency>106.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256EF2D59A5A75E3EBC6CE5A24BAF617F96D4A3C77D7F5EE1993AC85C4467350901</stationID>
+ <name>Die neue 107.7</name>
+ <shortname>neue 107.7</shortname>
+ <icon></icon>
+ <frequency>107.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256D45CF2F25BE31DEBEF451004504E21763769DE35C135896EDF5BFFD2433FB524</stationID>
+ <name>Radio Ton</name>
+ <shortname>Radio Ton</shortname>
+ <icon></icon>
+ <frequency>103.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/wernigerode-antenna.krp b/kradio3/presets/germany/wernigerode-antenna.krp
new file mode 100644
index 0000000..27d4921
--- /dev/null
+++ b/kradio3/presets/germany/wernigerode-antenna.krp
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Sarah Bransdor, u15051@hs-harz.de</maintainer>
+ <changed>2003-01-17T17:08:55</changed>
+ <country>Germany</country>
+ <city>Wernigerode</city>
+ <media>Antenna</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385346F1BFB9A58F3B64B997192E84C8B9019559BEE52524BDD2C12DDA8263A7414242</stationID>
+ <name>Projekt 89.0</name>
+ <shortname>PRJ89</shortname>
+ <frequency>89.0625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853469CC82007B79C7DB381087AABFB59133B3B4E0B63F33C503AD73E3E7EC306A8CA</stationID>
+ <name>Jump</name>
+ <shortname>Jump</shortname>
+ <frequency>91.5625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385346C97B130AF76EF1214D3A69D79CD8BAE75D1928A3568297BD637692980FDA2F9B</stationID>
+ <name>MDR 1 Radio Sachsen-Anhalt</name>
+ <shortname>MDR 1</shortname>
+ <icon></icon>
+ <frequency>94.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853466428EF387D62E420FD0A80E74EF62471877C54D91A873519742D1C309FA430A3</stationID>
+ <name>Deutschland Radio</name>
+ <shortname>D-Radio</shortname>
+ <icon></icon>
+ <frequency>97.4375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534670B3BBB51481072F20DCE3A2786AE45319CF046652587293FB1C5D4389C1A7EB</stationID>
+ <name>Radio SAW</name>
+ <shortname>SAW</shortname>
+ <frequency>101.438</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338534691A5AA798AF34BCD379D597ED1B963C8666105B1D95BE40BA69B53ABE6A67F9F</stationID>
+ <name>MDR classic</name>
+ <shortname>6</shortname>
+ <frequency>107.812</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/germany/worfelden-cable.krp b/kradio3/presets/germany/worfelden-cable.krp
new file mode 100644
index 0000000..e6d125a
--- /dev/null
+++ b/kradio3/presets/germany/worfelden-cable.krp
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Peter Buhl, &lt;pbuhl@gmx.de&gt;</maintainer>
+ <changed>2003-10-20T15:29:06</changed>
+ <country>Germany</country>
+ <city>Worfelden</city>
+ <media>cable</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+ <stationID>106656658898AC1D22D5F1DA30051782FC716CE57117787BA254725F4130B8F52A168A06B1</stationID>
+ <name>Enjoy</name>
+ <shortname>Enjoy</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1066566790BBCE2671ABBBD7FCD061D67E65BD4B33789F476868540E94ECA183B8C9C6A68F</stationID>
+ <name>BigFm</name>
+ <shortname>BigFm</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1066566824A5F406BA604C614F2B196836C238DFBE0FBF7843FC23E150BB65A8830863DD1B</stationID>
+ <name>Hessen3</name>
+ <shortname>HR3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.85</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1066566879EF1A0E09BFCE980D9AD6389F1CFDB6F77B606BB79FE992756983C8B51EDEC8DE</stationID>
+ <name>NDR</name>
+ <shortname>NDR</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>106656697907711264586F54A19BD6DD10111C1B73030D0796EE0146608ECCF72008DFBB8A</stationID>
+ <name>Radio Regenbogen</name>
+ <shortname>Radio Regenbogen</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1066656506D835A211B870F9F299D0DBC8C992DFAE27E56A6A233DAA506DE00C533BD52F5D</stationID>
+ <name>Radio Sputnik</name>
+ <shortname>Sputnik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>10666565395A4A743CA9645D0C8E8A25899094CC0F01BFD51623B4C2BDC237988AEB664809</stationID>
+ <name>RTL Radio</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>10666565807B361218313FEEC7A6EFF5587D6BA942CAFED16CEFB33E2CC5C4F15871681243</stationID>
+ <name>SKYRadio</name>
+ <shortname>SKY</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>10666566364105B0ED2D5B92FA58F1F6DDD539C87FBE6572BAA112DE51573706F7FCB9D91C</stationID>
+ <name>SWR1</name>
+ <shortname>SWR1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1066566707953EF0F4704CC06832ABE8DEDCAEC0E97495C4F2959605D8283FC9DFE44BB6DC</stationID>
+ <name>Bayern1</name>
+ <shortname>Bayern1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1066656729678A4F27128D06BE93B5EC724833D99AEFC9305A61A1C519770A84881C8E61C6</stationID>
+ <name>WDR2</name>
+ <shortname>WDR2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>106665666327F05C4B961924CE3AFC3E4972F5DF4CC4723510E982264A93FE9EBD0F7E3978</stationID>
+ <name>SWR3</name>
+ <shortname>SWR3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>10666568561082AA42D9AB0657F775E9E0DA0451F75B195CC60AC1C2F6C30125D784957279</stationID>
+ <name>Radio 97.40</name>
+ <shortname>Radio 97.40</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.4</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
diff --git a/kradio3/presets/hungary/Makefile.am b/kradio3/presets/hungary/Makefile.am
new file mode 100644
index 0000000..2c1ffe1
--- /dev/null
+++ b/kradio3/presets/hungary/Makefile.am
@@ -0,0 +1,14 @@
+SUBDIRS =
+EXTRA_DIST = "budapest-antenna.2.krp" "budapest-antenna.krp" "budapest.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/hungary/"
+ $(INSTALL_DATA) "$(srcdir)/budapest.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/hungary/budapest.krp"
+ $(INSTALL_DATA) "$(srcdir)/budapest-antenna.2.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/hungary/budapest-antenna.2.krp"
+ $(INSTALL_DATA) "$(srcdir)/budapest-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/hungary/budapest-antenna.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/hungary/budapest.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/hungary/budapest-antenna.2.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/hungary/budapest-antenna.krp"
diff --git a/kradio3/presets/hungary/budapest-antenna.2.krp b/kradio3/presets/hungary/budapest-antenna.2.krp
new file mode 100644
index 0000000..da4194c
--- /dev/null
+++ b/kradio3/presets/hungary/budapest-antenna.2.krp
@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Pasztor Ferenc, &lt;adamed@adamed.hu&gt;</maintainer>
+ <changed>2004-03-17T14:23:11</changed>
+ <country>Hungary</country>
+ <city>Budapest</city>
+ <media>antenna</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338540774501C8562C2E135EB94F9729DD8972B4FC6602BC55D1D640CF89484357B67BA</stationID>
+ <name>Budapest R�io</name>
+ <shortname>Budapest R�io</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854071AD31932EBB67A242D05C5B9BF78A5BC0E58533AF9D22AB949BF62DA06821FA9</stationID>
+ <name>R�io C</name>
+ <shortname>R�io C</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540780D52BBCB6A7E0E274F712D728DE703FF22E6C947DA733AC950A9932A8FFAAB8</stationID>
+ <name>Juventus R�i�/name>
+ <shortname>Juventus R�i�/shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107952990704C33886A7B639F5E27C4A087924F41D6C1B9A40506CF3838E76992CBAFFF508</stationID>
+ <name>Tilos R�i�/name>
+ <shortname>Tilos R�i�/shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10795299625689AD0DA50FF0C4EF2EAD9029C6C4B572162AA5B5597995BD52DC9EDA42024A</stationID>
+ <name>Pilis R�i�/name>
+ <shortname>Pilis R�i�/shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10795300133A8C5615C1F0FF72F17695A5DE6D15E6619882DF420B294E2E925393AE558AEE</stationID>
+ <name>R�i�Inf�um</name>
+ <shortname>R�i�Inf�um</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1079530086FCEC0247273CB876AED6582771C961BBFC49202D00E7ECD499325699D2CCB667</stationID>
+ <name>K� Duna R�i�/name>
+ <shortname>K� Duna R�i�/shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10795301574577C69199834E7C6D1EA914C643C3E7A36599B903F4069AF116CA3947CECFFC</stationID>
+ <name>R�i�Deejay</name>
+ <shortname>R�i�Deejay</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10795302426265F5BFAEE55D09D9AD154361FAA43F2A230E339FDA146D3394BEBB1327E873</stationID>
+ <name>Dunakanyar R�i�/name>
+ <shortname>Dunakanyar R�i�/shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1079531353FAE22E5DD7231B459F6F49551AC84E41DEE8C247367B0FA0F901788C7E0FBD8F</stationID>
+ <name>R�i�Extr�</name>
+ <shortname>R�i�Extr�</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854072DEFCFAEFEE9C186DA1AA3A303260F929CA817AC597DF330F84D3367C26FD5DC</stationID>
+ <name>Pet�i R�i�/name>
+ <shortname>Pet�i R�i�/shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854070EF63C5FECCD0A1849C2CA2AE5081458E664F637CEDC96AABADDB2F22FF0322A</stationID>
+ <name>Klubr�i�/name>
+ <shortname>Klubr�i�/shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385407491A678C178B8BA70CFBF8750F03CD2B8103F31A54BA393BCDF3DC22837AB8DA</stationID>
+ <name>InfoR�io</name>
+ <shortname>InfoR�io</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385407F06FEC58338F2A61B010D2846F72928FF4EFC14C73F5BB1060D3165971DA3F29</stationID>
+ <name>Roxy R�i�/name>
+ <shortname>Roxy R�i�/shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107953069513AC9728D659F1A0DC091CCA12A9DFA7BEB20638321FC91CDA936ED1192519B4</stationID>
+ <name>R�i�17 R�osmente</name>
+ <shortname>R�i�17</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10795075756687012CE45C47300550557147DE001C90EEE5268281C2E55792FA90F78C8CE7</stationID>
+ <name>Budapest R�i�/name>
+ <shortname>Budapest R�i�/shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385407CE802CF4C63D6FBDA0D84D649F303C4BBD6697DB22087FD9A31C882605CD151D</stationID>
+ <name>Civil R�i�/name>
+ <shortname>Civil R�i�/shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540751BD3A27EEC6D3AE52F15E6BEDF979ACD8E60729A6508F91DE7242F8BD0B5C3B</stationID>
+ <name>Fiksz R�i�/name>
+ <shortname>Fiksz R�i�/shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10795308506189160C692E18F0A287B4329DDD12F5F11C350F7D6D833750B0A41ADCBE5FD8</stationID>
+ <name>� R�i�Esztergom</name>
+ <shortname>� R�i�/shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1079530920F6192EACF0866A1F0A6B6E436B69D6BB8368ED80A6DD55560321ACD8A2CB203F</stationID>
+ <name>R�iocaf�98.6</name>
+ <shortname>R�iocaf�/shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540782F04E900143B935D640649938E89CEF565F2D043FB7833A470A6797FD0F5756</stationID>
+ <name>Pannon R�i�/name>
+ <shortname>Pannon R�i�/shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10795310786954677A65224DE0D466FBBB9A4A91D2A188D3423DC01FBBBD280D084607F1E5</stationID>
+ <name>Sl�er R�i�/name>
+ <shortname>Sl�er R�i�/shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540724169583A4C9F4AA11956925A49E0DEC84D1C3F32ADDBAD615B0DE5EFF43B138</stationID>
+ <name>Bridge FM</name>
+ <shortname>Bridge FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385407CABE2A6B3AD516C74A063314387166541A09F84784863CB379735ACB30D267E0</stationID>
+ <name>Danubius R�i�/name>
+ <shortname>Danubius R�i�/shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385407CC1CEF1BBDE9E8180AAE09D72B6DCBBD7E504631D382B4EA5CF590B480BAB677</stationID>
+ <name>Tilos R�i�/name>
+ <shortname>Tilos R�i�/shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10795312159BA7B250F376B2581FA1F1A21C41FA737541C91829F7C764FB196AB91D0E8AED</stationID>
+ <name>R�i�1</name>
+ <shortname>R�i�1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385407FDD97142EF86DD401DF9AF34D5A97840FF6635C303A8D86784197F7C79505687</stationID>
+ <name>Bart� R�io</name>
+ <shortname>Bart� R�io</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1079389961A882A77A26FF70C19864083357606616946D3303C8136D6EF6289132F8C0F34A</stationID>
+ <name>Gazdas�i R�i�/name>
+ <shortname>Gazdas�i R�i�/shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385407E8FF845E79DF91F00787524D4A8D4A941AC089FDE6B80C6390D3ED60D65B91F1</stationID>
+ <name>Kossuth R�i�/name>
+ <shortname>Kossuth R�i�/shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.8</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/hungary/budapest-antenna.krp b/kradio3/presets/hungary/budapest-antenna.krp
new file mode 100644
index 0000000..9469e8c
--- /dev/null
+++ b/kradio3/presets/hungary/budapest-antenna.krp
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Akos Putz, &lt;solyom2@westel900.net&gt;</maintainer>
+ <changed>2003-03-29T11:44:16</changed>
+ <country>Hungary</country>
+ <city>Budapest</city>
+ <media>Antenna</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385407269894ECB144BCF442C7295F74009DDB9985160AC18BBA7C5C2D32BCD3B26B60</stationID>
+ <name>Juventus radio</name>
+ <shortname>Juventus</shortname>
+ <icon></icon>
+ <frequency>89.4375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385407A8C4C8219FB70FD23C959A234750ECBBD277D5770DCDD50FC109A5203CCBB5D3</stationID>
+ <name>Petofi radio</name>
+ <shortname>Pet?fi</shortname>
+ <icon></icon>
+ <frequency>94.75</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540703BF992900B0E6846C1F7791D0FBA14C0A9397CE0650A11201B979453580DFA4</stationID>
+ <name>Fix radio</name>
+ <shortname>Fix</shortname>
+ <icon></icon>
+ <frequency>98</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385407C56950A7BD2EDEDAC5BBB0485A14F6E0F5D74F9F3B7A00A3107521452889B2AC</stationID>
+ <name>Radio cafe</name>
+ <shortname>Cafe</shortname>
+ <icon></icon>
+ <frequency>98.5625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854079C69C3B041E8C77496224B0393A19668F6D126864646EC17D6D3466B5C63C2AB</stationID>
+ <name>Slager radio</name>
+ <shortname>Slager</shortname>
+ <icon></icon>
+ <frequency>100.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385407041784EAB9B1F152507715C44DE775A3A261E88D4DB2FB441054534BD55BDAD1</stationID>
+ <name>Sztar FM</name>
+ <shortname>Sztar FM</shortname>
+ <icon></icon>
+ <frequency>102.062</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854074519E00F84087CA906BB331FE7AA0ABE3A39F15BB4CA1673A2E0D6D2592DE5D6</stationID>
+ <name>Danubius radio</name>
+ <shortname>Danubius</shortname>
+ <icon></icon>
+ <frequency>103.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385407D5FD6A6DC02C2104930655DD183402460655B32621CF0DC2652F0C836E52F8D8</stationID>
+ <name>Radio 1</name>
+ <shortname>Radio 1</shortname>
+ <icon></icon>
+ <frequency>103.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385407498255B513F023B83CE45C9FF02DF7BB15D9B596AD911331C5548A7097DFF076</stationID>
+ <name>Kossuth radio</name>
+ <shortname>Kossuth</shortname>
+ <icon></icon>
+ <frequency>105.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/hungary/budapest.krp b/kradio3/presets/hungary/budapest.krp
new file mode 100644
index 0000000..288890a
--- /dev/null
+++ b/kradio3/presets/hungary/budapest.krp
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Arnold Kato, &lt;hugo@mad.hu&gt;</maintainer>
+ <changed>2003-02-01T14:23:11</changed>
+ <country>Hungary</country>
+ <city>Budapest</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385407210EE614A1043269A5FA1FE64D5073DB4805AB1399F6AAFD2298317C11E73184</stationID>
+ <name>Radio 1</name>
+ <shortname>Radio 1</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540780D52BBCB6A7E0E274F712D728DE703FF22E6C947DA733AC950A9932A8FFAAB8</stationID>
+ <name>Juventus radio</name>
+ <shortname>Juventus radio</shortname>
+ <icon></icon>
+ <frequency>89.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540782F04E900143B935D640649938E89CEF565F2D043FB7833A470A6797FD0F5756</stationID>
+ <name>Pannon radio</name>
+ <shortname>Pannon radio</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385407CABE2A6B3AD516C74A063314387166541A09F84784863CB379735ACB30D267E0</stationID>
+ <name>Danubius radio</name>
+ <shortname>Danubius radio</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385407F06FEC58338F2A61B010D2846F72928FF4EFC14C73F5BB1060D3165971DA3F29</stationID>
+ <name>Roxy</name>
+ <shortname>Roxy</shortname>
+ <icon></icon>
+ <frequency>96.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385407F19AB7D32B20717A006299AB66C30922105F0E92CFD9108CE80717E2E9BF17CF</stationID>
+ <name>Radio DeeJay</name>
+ <shortname>Radio DeeJay</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854079D7F76EA5707A6FF56754A70CABA564CA02826A3DF7A0A6D021BA7962A1C51FD</stationID>
+ <name>Slager radio</name>
+ <shortname>Slager radio</shortname>
+ <icon></icon>
+ <frequency>100.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540724169583A4C9F4AA11956925A49E0DEC84D1C3F32ADDBAD615B0DE5EFF43B138</stationID>
+ <name>Sztar FM</name>
+ <shortname>Sztar FM</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540751BD3A27EEC6D3AE52F15E6BEDF979ACD8E60729A6508F91DE7242F8BD0B5C3B</stationID>
+ <name>Fiksz radio</name>
+ <shortname>Fiksz radio</shortname>
+ <icon></icon>
+ <frequency>98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385407CE802CF4C63D6FBDA0D84D649F303C4BBD6697DB22087FD9A31C882605CD151D</stationID>
+ <name>Civil radio</name>
+ <shortname>Civil radio</shortname>
+ <icon></icon>
+ <frequency>98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385407E8FF845E79DF91F00787524D4A8D4A941AC089FDE6B80C6390D3ED60D65B91F1</stationID>
+ <name>Kossuth radio</name>
+ <shortname>Kossuth radio</shortname>
+ <icon></icon>
+ <frequency>107.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854072DEFCFAEFEE9C186DA1AA3A303260F929CA817AC597DF330F84D3367C26FD5DC</stationID>
+ <name>Petofi radio</name>
+ <shortname>Petofi radio</shortname>
+ <icon></icon>
+ <frequency>94.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385407FDD97142EF86DD401DF9AF34D5A97840FF6635C303A8D86784197F7C79505687</stationID>
+ <name>Bartok radio</name>
+ <shortname>Bartok radio</shortname>
+ <icon></icon>
+ <frequency>105.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385407164C0BBC8B7BE0034935DD9A1DA0A23AE295E494AD63D19A5CDB48BFE40E1D08</stationID>
+ <name>Radio 17 Rakosmente</name>
+ <shortname>Radio 17 Rakosmente</shortname>
+ <icon></icon>
+ <frequency>96.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854071AD31932EBB67A242D05C5B9BF78A5BC0E58533AF9D22AB949BF62DA06821FA9</stationID>
+ <name>Radio C</name>
+ <shortname>Radio C</shortname>
+ <icon></icon>
+ <frequency>88.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385407CC1CEF1BBDE9E8180AAE09D72B6DCBBD7E504631D382B4EA5CF590B480BAB677</stationID>
+ <name>Tilos Radio</name>
+ <shortname>Tilos Radio</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540774501C8562C2E135EB94F9729DD8972B4FC6602BC55D1D640CF89484357B67BA</stationID>
+ <name>Budapest Radio</name>
+ <shortname>Budapest Radio</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385407491A678C178B8BA70CFBF8750F03CD2B8103F31A54BA393BCDF3DC22837AB8DA</stationID>
+ <name>InfoRadio</name>
+ <shortname>InfoRadio</shortname>
+ <icon></icon>
+ <frequency>95.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854070EF63C5FECCD0A1849C2CA2AE5081458E664F637CEDC96AABADDB2F22FF0322A</stationID>
+ <name>Klubradio</name>
+ <shortname>Klubradio</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/iceland/Makefile.am b/kradio3/presets/iceland/Makefile.am
new file mode 100644
index 0000000..d99c533
--- /dev/null
+++ b/kradio3/presets/iceland/Makefile.am
@@ -0,0 +1,10 @@
+SUBDIRS =
+EXTRA_DIST = "reykjavik-antenna.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/iceland/"
+ $(INSTALL_DATA) "$(srcdir)/reykjavik-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/iceland/reykjavik-antenna.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/iceland/reykjavik-antenna.krp"
diff --git a/kradio3/presets/iceland/reykjavik-antenna.krp b/kradio3/presets/iceland/reykjavik-antenna.krp
new file mode 100644
index 0000000..21a8c28
--- /dev/null
+++ b/kradio3/presets/iceland/reykjavik-antenna.krp
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Guðlaugur Jóhannesson, &lt;gudlaugu@raunvis.hi.is&gt;</maintainer>
+ <changed>2005-05-11T13:28:49</changed>
+ <country>Iceland</country>
+ <city>Reykjavík</city>
+ <media>Antenna</media>
+ <comments>Vonandi er þetta allur listinn. Er með mjög lélegt
+loftnet.</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1116455444FA2A05BDB9628BA965D180150FCE26BB434D8EA325D2AD1F8A37D17EA1673E12</stationID>
+ <name>Rás 2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444CE81194D11AF219AC96101190F378965A97B497E8CD3CD3D30CFB7B0EB243945</stationID>
+ <name>FM 957</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544476FC47F7C5FFACCEE5229CB4FF98D29B4FAD70C7582EE079FFAFB06DB4D04F0E</stationID>
+ <name>Létt FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444C0A53C88CF0B0CDA23B95FF522492EDC8D85A8A49E1FFDEC642F996299EBB966</stationID>
+ <name>Kiss FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>89.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444F61B19AF716CC4CF1A8EC013252C70F85D9F660312C699675EA0E9BC3F4C1A97</stationID>
+ <name>Útvarp Latibær</name>
+ <shortname>Latibær</shortname>
+ <icon></icon>
+ <frequency>102.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544483CB529B5F78FB43D62D676F8E160605DDB4EF2740153A1C170D9E77B153CEB7</stationID>
+ <name>Talstöðin</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544494FB1119F6CC13935C516DD2F69950FE8EE2950C127F94A103DBD24C9A3534AE</stationID>
+ <name>Bylgjan</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544434E713399578B1DC89DC478C95578189C9616D8F78180035C278DD01D076DA3A</stationID>
+ <name>Rás 1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>92.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444EF6B983A00E17071CFDECD828F1BDC0B8D79AAEA6B7070982F29B978DAAAA2E0</stationID>
+ <name>Rás 1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554445395B723180117C3F560475C46F57BB026F867259E62A36BDCD30F864FA8C5AE</stationID>
+ <name>Útvarp Saga</name>
+ <shortname>Saga</shortname>
+ <icon></icon>
+ <frequency>99.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444AF82B459D3097106F665B6103C1564F2805931F64D796EFFBB8F4824844318D7</stationID>
+ <name>Rás 2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554447C76A5B66189E52DC688BE75737F9DAAAA3C48998B9F5D41BCB6A7DCB8E79064</stationID>
+ <name>Lindin</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444468C7312C00EDA1A83F9B7F79E4C6D05B6320549BCC7C0A342C1A4D4383255EF</stationID>
+ <name>Útvarp Boðun</name>
+ <shortname>Boðun</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444A180B2DB8673FED5A578E85B8AC11D0F4A450EF68D893E20EB56A523CD23C7F3</stationID>
+ <name>XA-Radío</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444FFED064002F66C9289A85C42564AC9C9D68C49B4282AC63E13F82513E913315D</stationID>
+ <name>XFM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544470930DA2AC7DDB9D408A0AB70D2F2C23FA1A57DD2CF568DB8CAE779C60078A1F</stationID>
+ <name>Radíó Reykjavík</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544468AE28E75F693F7F03B896FA4302F65202D9BA996DF8E91BD7A03118C3EEBC2D</stationID>
+ <name>X-ið</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/ireland/Makefile.am b/kradio3/presets/ireland/Makefile.am
new file mode 100644
index 0000000..8f0c881
--- /dev/null
+++ b/kradio3/presets/ireland/Makefile.am
@@ -0,0 +1,10 @@
+SUBDIRS =
+EXTRA_DIST = "dublin.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/ireland/"
+ $(INSTALL_DATA) "$(srcdir)/dublin.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/ireland/dublin.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/ireland/dublin.krp"
diff --git a/kradio3/presets/ireland/dublin.krp b/kradio3/presets/ireland/dublin.krp
new file mode 100644
index 0000000..8708cf7
--- /dev/null
+++ b/kradio3/presets/ireland/dublin.krp
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-1.0beta3b</creator>
+ <maintainer>Barry O&apos;Donovan, &lt;barry@ihl.ucd.ie&gt;</maintainer>
+ <changed>2004-06-02T16:30:23</changed>
+ <country>Ireland</country>
+ <city>Dublin</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1086190998C18EECABA122B549D880E838EB5A9FAC89E62BB8A45ED76B42C8EA9CC86E0D89</stationID>
+ <name>RTE Radio 1</name>
+ <shortname>RTE1</shortname>
+ <icon></icon>
+ <volumepreset>0.8</volumepreset>
+ <frequency>88.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108619136396BCD69B00820BFB9FE6E12151D373F480A9B26BD21079708196522B544C543F</stationID>
+ <name>2FM</name>
+ <shortname>2FM</shortname>
+ <icon></icon>
+ <volumepreset>0.8</volumepreset>
+ <frequency>90.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1148726760840DA9CAF9F47125D0681DA6DD69D0EF1793510E3A7B0BFEABD861C218F3D6ED</stationID>
+ <name>Premier FM</name>
+ <shortname>Premier</shortname>
+ <icon></icon>
+ <volumepreset>0.8</volumepreset>
+ <frequency>92.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10861914233C02503823395C8EA9E8BF60F4D767CFDC027C7A368BD0BFD3F33660369D1D70</stationID>
+ <name>Raidi�Na Gaeltachta</name>
+ <shortname>RnaG</shortname>
+ <icon></icon>
+ <volumepreset>0.8</volumepreset>
+ <frequency>92.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1086191386890DE6B180AE68F8E42D8C28C405A86E7B504B52F38B21813E6E47FC2D4024C7</stationID>
+ <name>Lyric FM</name>
+ <shortname>Lyric</shortname>
+ <icon></icon>
+ <volumepreset>0.8</volumepreset>
+ <frequency>96.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1086192203576D116A332C7B6B3BF24D135AEF11D44C32FE31528D51B2A9B02002B1915F6D</stationID>
+ <name>98FM</name>
+ <shortname>98FM</shortname>
+ <icon></icon>
+ <volumepreset>0.8</volumepreset>
+ <frequency>98.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1086190185D912EA37C7532B1D6F4DBDBC135953C37B4EDBB48349A2388FE83121E6803A1B</stationID>
+ <name>Today FM</name>
+ <shortname>Today</shortname>
+ <icon></icon>
+ <volumepreset>0.8</volumepreset>
+ <frequency>100.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1086192033BC8BB221EE7527CB5E2161AC1DEF9B593634C2440333381BF04283B4EB27C740</stationID>
+ <name>Q102</name>
+ <shortname>Q102</shortname>
+ <icon></icon>
+ <volumepreset>0.8</volumepreset>
+ <frequency>102.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1086192160E3E3777206BFC480E07714F70B85816D58B979E965F8BA646B4957898C10BADC</stationID>
+ <name>Spin 103.8</name>
+ <shortname>Spin</shortname>
+ <icon></icon>
+ <volumepreset>0.8</volumepreset>
+ <frequency>103.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1086191552F9BAC7A9FB947393A9E0AF4066D33D387D6241A8977C2C30F54782E2289BEBE2</stationID>
+ <name>FM 104</name>
+ <shortname>FM104</shortname>
+ <icon></icon>
+ <volumepreset>0.8</volumepreset>
+ <frequency>104.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1086191643611123442F03F627D4DFE5C9A878329D50D755BD74F4843D5D3260BC0DCC1588</stationID>
+ <name>News Talk 106</name>
+ <shortname>News</shortname>
+ <icon></icon>
+ <volumepreset>0.8</volumepreset>
+ <frequency>106</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11482096371AF38F0B3732821D9F0E66A200FDD497D3476E535152593B14F8ED3C13DD50B3</stationID>
+ <name>Dublin&apos;s Country Mix</name>
+ <shortname>Country</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>106.8</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
+
diff --git a/kradio3/presets/italy/Makefile.am b/kradio3/presets/italy/Makefile.am
new file mode 100644
index 0000000..1ff6cd6
--- /dev/null
+++ b/kradio3/presets/italy/Makefile.am
@@ -0,0 +1,14 @@
+SUBDIRS =
+EXTRA_DIST = "bologna.krp" "rovato.krp" "torino-antenna.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/italy/"
+ $(INSTALL_DATA) "$(srcdir)/bologna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/italy/bologna.krp"
+ $(INSTALL_DATA) "$(srcdir)/rovato.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/italy/rovato.krp"
+ $(INSTALL_DATA) "$(srcdir)/torino-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/italy/torino-antenna.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/italy/bologna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/italy/rovato.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/italy/torino-antenna.krp"
diff --git a/kradio3/presets/italy/bologna.krp b/kradio3/presets/italy/bologna.krp
new file mode 100644
index 0000000..7c6f8a4
--- /dev/null
+++ b/kradio3/presets/italy/bologna.krp
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Paolo Finetti, &lt;fttt@libero.it&gt;</maintainer>
+ <changed>2003-06-09T09:34:15</changed>
+ <country>Italy</country>
+ <city>Bologna</city>
+ <media>Generical commercial radio</media>
+ <comments>The first private radio for audience</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385403A13F3515CE3BC6C65244C8005B60BE1AFFD24CFAE8590048E0D61999DF201896</stationID>
+ <name>RMC</name>
+ <shortname>Radio MonteCarlo</shortname>
+ <icon></icon>
+ <frequency>91.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854033162F40A918E1DA09418384F4F922A35DA674F4D46E6EAEEFFA1EFD301771742</stationID>
+ <name>RETE 105</name>
+ <shortname>Rete 105</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385403FAEAEA5241B1A7CEB8FC4BC447498185F0EEAE510545367B6BEFE119594C6FD5</stationID>
+ <name>K-Rock</name>
+ <shortname>K-Rock Radio Station</shortname>
+ <icon></icon>
+ <frequency>104.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/italy/rovato.krp b/kradio3/presets/italy/rovato.krp
new file mode 100644
index 0000000..ca98541
--- /dev/null
+++ b/kradio3/presets/italy/rovato.krp
@@ -0,0 +1,358 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Falko</maintainer>
+ <changed>2005-06-06T17:20:10</changed>
+ <country>Italia</country>
+ <city>Rovato</city>
+ <media>AverTv 98 Fm - Brooktree Corporation Bt878 Video Capture (rev
+02)</media>
+ <comments>My New Preset Station</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>11176752569DE60FA45B1992A940C0C3236A04FB6223C964F95F59FCCECB67A7B6A65E0CE9</stationID>
+ <name>Viva Fm</name>
+ <shortname>Viva Fm</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1118025773B0406898DB8405DF16A08ABB11D6E970DD72C6ABA2439CB170A53593B2D9C215</stationID>
+ <name>Radio Studio +</name>
+ <shortname>Radio Studio +</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11180257661506A0E22AD0A91C73D5AA3423D1C1C0C0EF77BA7B1B1A65F09ECFF62CFD91FD</stationID>
+ <name>Radio In Blu</name>
+ <shortname>Radio In Blu</shortname>
+
+<icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1118068654DB1C2BDF96C39F6A070BB812393A1F00AA6D6A1F25E2A8AEF2607CEB96F86577</stationID>
+ <name>Radio Monte Orfano</name>
+ <shortname>R.M.O.</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1118068580C2C54DEFC90FCAC68A33B8CA9DF8DC25F3F39642DB2718539FD4456620E42F6C</stationID>
+ <name>Radio Mother</name>
+ <shortname>Radio Mother</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1118068671BA585868EFBDD00E2EA71143E3F69D235C3A78F789D8C47065C96076CD7783C2</stationID>
+ <name>Radio Classica</name>
+ <shortname>Radio Classica</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.17</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1117675255DA10AFB3A2F4853064A39BCFFA4C2EEE5C52E1C4AF69B7DD5A81618942B99111</stationID>
+ <name>Radio Company</name>
+ <shortname>Radio Company</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.4252</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11180686004A328BAF499E642EC82D2A5C84C9374731F01A8A1AE1B49BE687AA77549B6765</stationID>
+ <name>1000 Note</name>
+ <shortname>1000 Note</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11176752516792F9E074C3C4783D34F147A5CA7178ECAEFD13FD9DA9E7FC4F3C7C4DDA4C02</stationID>
+ <name>R.I.N.</name>
+ <shortname>Radio Italia Network</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11180257746E48D3C984DB2AC9216967F0C6AE293B14604C6A976D3A8740A58294A161A2B9</stationID>
+ <name>Radio Zeta</name>
+ <shortname>Radio Zeta</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1117675260E982B2099D73B0687403C6F172B0C93BA40C31D8E94B757E092FEB212CA92A26</stationID>
+ <name>Radio Hit Channel</name>
+ <shortname>Radio Hit Channel</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1118070643033E1CEADD4285C6D1DEED492A07A89401A38569E4AE6C218C7461DF6D54EA3A</stationID>
+ <name>Radio Raphael</name>
+ <shortname>Radio Raphael</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1117675261000909C11548DDDBB1B9173237CC622F6E8EFE0B2B1E54AF6F863737A1CDC90B</stationID>
+ <name>Radio Vera</name>
+ <shortname>Radio Vera</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>111802577795A8E817B1683C78B43C041C7F0D5735178D8740FCAAEC0392933E9F60EE12F3</stationID>
+ <name>Radio Dimensione Suono</name>
+ <shortname>RDS</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.606</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1118025908F945C46E8765862D348047A703A0D055C7A6DD5A73092BAADF1B7F63540B2AE3</stationID>
+ <name>105 Fm</name>
+ <shortname>105 Fm</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11180259095560DFB1651AB5589811D5C0B3483D1B3C64B59E6BBC71A79674B3E535FB72CF</stationID>
+ <name>Radio Brescia 7</name>
+ <shortname>Radio Brescia 7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1117675267811D4DFDB286DA5F4B6E7185F7D2D77AE064C7DBAE8DA75E6CAF179FB746FA36</stationID>
+ <name>Radio Capital</name>
+ <shortname>Radio Capital</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1117675268D17A3FAD4C617336A661543F29B991D11979E2D4F4C4A5CC62C8A13BAEA6D161</stationID>
+ <name>Radio Cuore</name>
+ <shortname>Radio Cuore</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1118025783A2176B42C474B70AF87682C7008EDD62D2F8E2FA06E6BC9F6402497BC77C5750</stationID>
+ <name>Radio Dimensione Suono</name>
+ <shortname>RDS</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11176752707FE6E28A31F82280E923A63A4540CD3CB4C34EA806ABFC62CFC0DB20DEEDDC0F</stationID>
+ <name>Kiss Kiss Network</name>
+ <shortname>Kiss Kiss Network</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1117675264A2DE80487F23FBBA6AD4400AE9F45F7E551674BB9425939A792611E94509C6AC</stationID>
+ <name></name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1118025912D31F1E843326016CF231D88ED5B0142B791CB87B1CAC374B3C8DF45EFEDE5FE3</stationID>
+ <name></name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1118025790F4DF93E3C5400DB4A84C8A26538363863BFA02072D1E1807CDB605535D957893</stationID>
+ <name>Radio Studio + 2</name>
+ <shortname>Radio Studio + 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11176752774CE4BAFCD4B44D51B006C68AB659A8202DBF32B776F119BCB4DE97E3D76FEACA</stationID>
+ <name>Radio Italia</name>
+ <shortname>Radio Italia</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>111802592048F50019853DD5FD7D1DF033FE238F17E014BB9A852B8229FFBD660DBA2C120F</stationID>
+ <name>Radio Dj</name>
+ <shortname>Radio Dj</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1117675254699451607B12BD0E8F9BF00DF745C9822551F67513E6857FF08ECF951C54D664</stationID>
+ <name>Rai - Radio 2</name>
+ <shortname>Rai - Radio 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11180703306393CC008D5041E31CF5EDE66D5C863DDA93AA7A8BB517817683B3C799C54040</stationID>
+ <name>Radio Maria</name>
+ <shortname>Radio Maria</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1118070759C7084FF222278AA209D7808D988F6C9945273BA0DEAE62CF633268661FE21EEC</stationID>
+ <name>Radio Maria</name>
+ <shortname>Radio Maria</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>111807029534A9916BB7E6E88DE4969C68430D28A77380009BADEFD7315455E0EAED617676</stationID>
+ <name></name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>111807036423D45948D461370A517FFF21982C029A7C632359273DD644797411FE7805BBC2</stationID>
+ <name></name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1118070387F773DC9B840A874200984EF405551013839E7667CFC1D74BCE05B64C0D689FDD</stationID>
+ <name>Radio Radicale</name>
+ <shortname>Radio Radicale</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1118070608D23DAD5BEEE9E39D6B9A5AB08CA94674F5ED3B89F451EDAC390708CD99867F4D</stationID>
+ <name>Radio Radicale</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1118070497451ED349D99E420D8C544462DD8D7ECFABF7F93D9BE62E9CE87144DC0FB9A292</stationID>
+ <name></name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11180705162756D87024071E8DDC60547339B3B4044F5AEEF7735B9658CB2ED1769738A7B1</stationID>
+ <name>Radio Number One</name>
+ <shortname>Radio Number 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1118070556D3428578219D6B91988E488E5210F7492FD7B098D51513C15CC18B45C2E2D8F7</stationID>
+ <name>Radio 24</name>
+ <shortname>Radio 24</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11180704485A38297DBEAC9D5BBAF22BF3D08A124076A7A106DAFE3F8C6D1630ECEC1ED01C</stationID>
+ <name>Radio Zeta</name>
+ <shortname>Radio Zeta</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11180706842CA3A34A753385E35DC7D11CE7BFD7260D1FFAC774516E9395C2D4C1950199F5</stationID>
+ <name>Radio Latte E Miele</name>
+ <shortname>Radio Latte E Miele</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>111807071300068ADB8D4DE12918DF24073ABB4AC3C567BDA587575D09B5322F7366819E8F</stationID>
+ <name>Radio Onda D&apos;Urto</name>
+ <shortname>Radio Onda D&apos;Urto</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.5</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/italy/torino-antenna.krp b/kradio3/presets/italy/torino-antenna.krp
new file mode 100644
index 0000000..a56f7f7
--- /dev/null
+++ b/kradio3/presets/italy/torino-antenna.krp
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Saverio Labella, saverio.labella@studenti.polito.it</maintainer>
+ <changed>2935093-02-28T00:00:00</changed>
+ <country></country>
+ <city></city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385403F0629DD79705EC4406F21008B6F53B6FBA7A209FDB52554BCC064D0CBE6C37A4</stationID>
+ <name>Radio 1 RAI</name>
+ <shortname>Radio1</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385403431CE4805065FE1FAB0FE643DE92A4209955AF525CD60C87A20A3DC6EA66FFDA</stationID>
+ <name>Radio 2 RAI</name>
+ <shortname>Radio2</shortname>
+ <icon></icon>
+ <frequency>95.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854035BD94ABA349E3C641764EA0247E983F05A4651672FD588D9F2869639C1412638</stationID>
+ <name>Radio 3 RAI</name>
+ <shortname>Radio3</shortname>
+ <icon></icon>
+ <frequency>98.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540306E17F8C4B8FB3237914BC5BBB971C0DDAD3E7B35449B158172DD358490B3053</stationID>
+ <name>Radio DeeJay</name>
+ <shortname>Deejay</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854039D76D46B3591D561517FC3EB97EA19A615398A1006E6062975199A94E8D654C6</stationID>
+ <name>Radio 105</name>
+ <shortname>105</shortname>
+ <icon></icon>
+ <frequency>99.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385403B7C8B1724F70D250AC2B613089041975BE4C851D2D1B94286FC4B54A8B31FD7A</stationID>
+ <name>Radio Italia Solo Musica Italiana</name>
+ <shortname>Radio ITALIA</shortname>
+ <icon></icon>
+ <frequency>106.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854038768CC27D64D0045455B75811BA25633E69DCCE2517BB84EEF6DDFB453A234C7</stationID>
+ <name>RTL</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854032377CE4FC1B5B7BD8EBE13EAA5AAAF4951943F4A839A5A8252D40893659976A1</stationID>
+ <name>Radio Dimensione Suono</name>
+ <shortname>RDS</shortname>
+ <icon></icon>
+ <frequency>96.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854039DE4EA6E189ED42ABE87B2D1026353C28DC4C7C65BC154C83D821BA5890F4988</stationID>
+ <name>Radio Cuore</name>
+ <shortname>Cuore</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385403D0E6D90767E2B2294412555F4C168A3F10AF77B6D9817261E454E51E568524D2</stationID>
+ <name>Radio Lattemiele</name>
+ <shortname>Lattemiele</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385403D9053C35971DF533238CDF19917288BB49D546D178D1A49974F228FD8647B106</stationID>
+ <name>Radio Veronica One</name>
+ <shortname>Veronica ONE</shortname>
+ <icon></icon>
+ <frequency>93.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385403F14BFA72E32058F425BB71C100A7AE4432B7F65138E43784006001FF9667AC05</stationID>
+ <name>Radio Montecarlo</name>
+ <shortname>Montecarlo</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/lithuania/Makefile.am b/kradio3/presets/lithuania/Makefile.am
new file mode 100644
index 0000000..6364bce
--- /dev/null
+++ b/kradio3/presets/lithuania/Makefile.am
@@ -0,0 +1,12 @@
+SUBDIRS =
+EXTRA_DIST = "kaunas-antenna.krp" "panevezys.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/lithuania/"
+ $(INSTALL_DATA) "$(srcdir)/kaunas-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/lithuania/kaunas-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/panevezys.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/lithuania/panevezys.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/lithuania/kaunas-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/lithuania/panevezys.krp"
diff --git a/kradio3/presets/lithuania/kaunas-antenna.krp b/kradio3/presets/lithuania/kaunas-antenna.krp
new file mode 100644
index 0000000..8195b8f
--- /dev/null
+++ b/kradio3/presets/lithuania/kaunas-antenna.krp
@@ -0,0 +1,199 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-1.0beta2</creator>
+ <maintainer>Arūnas Uroška &lt;arunui@dtiltas.lt&gt;</maintainer>
+ <changed>2005-10-30T15:19:40</changed>
+ <country>Lithuania</country>
+ <city>Kaunas</city>
+ <media>Antenna</media>
+
+<comments>http://www.rtk.lt/lt/catalog_item.php?strid=27057&amp;id=13701</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1130671823F98F9B6F2BD94927338E5514E85B2F6C8415011B4EEC238D3C7764EDC00DCE2F</stationID>
+ <name>Pūkas - 2</name>
+ <shortname>Pūkas - 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>113067268964C831466D6D774220D9F79CEE4FE498DCCED8A21482E6FF1906524C6C61C529</stationID>
+ <name>Marijos radijas</name>
+ <shortname>Marijos radijas</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11306715775A6BEF723008AE3333609E389BE4D1A08703E09C7883E1C90445F039EB795018</stationID>
+ <name>LRT, Klasika</name>
+ <shortname>LRT, Klasika</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11306727124A5BF4DCBE08372CB7577968AF1A487DEFDF3D995AA7A4D5BC7ED7375207B998</stationID>
+ <name>Extra FM</name>
+ <shortname>Extra FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1130671451F9C53EC9907B42AE780FF93EFA92B0E98A26FC1D2E88BB066FD63F1701B58916</stationID>
+ <name>M-1 plius</name>
+ <shortname>M-1 plius</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11306776439729ECE9302BB2CAE1CFB510913744CBD71C4EA6C4852D5D247FA1913A35068B</stationID>
+ <name>Relax FM</name>
+ <shortname>Relax FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11306776030057774127959251E7CEDD0D1901F8044C3C7F8995263D763778FCA194B80E75</stationID>
+ <name>Parabolė FM</name>
+ <shortname>Parabolė FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1130671638754E13DFE3379BAAF13CC0F09E555CAF8568D6FF9071AD5034C92DADAD7F73CD</stationID>
+ <name>Russkoje Radio Baltija</name>
+ <shortname>Russkoje Radio Baltija</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1130671665B30F4C7679DBCD7D6892847766FE5F8DCB0E4F65C62054E94879B47ED9ABA14C</stationID>
+ <name>LRT, LR 1</name>
+ <shortname>LRT, LR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1130672789174AB6F49B14E6F3D23066EE3C8425A85935EAB20234F8B3DF6C9EDE666A7556</stationID>
+ <name>Power Hit Radio </name>
+ <shortname>Power Hit Radio </shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11306719832EB9233411DBF209FB19EBC82EDF263FF8A29281F25ABCE75E9D8D0C5C98307A</stationID>
+ <name>TAU</name>
+ <shortname>TAU</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11306724191493C76EE9955D08FDFE1C937D7BF57F7E550489561C9C04732FE24FD6EB3642</stationID>
+ <name>Lietus</name>
+ <shortname>Lietus</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1130671692147E8C5F0F55AEB1EF82CC31DAFEBAB5BD48404B0BE25323D138A64E59E4CDDA</stationID>
+ <name>ZIP FM</name>
+ <shortname>ZIP FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1130672823ACEBF62EE1D06CBA7427200DD8A44D205E4FD50C9B5563F38DAD11D28C6CCB4F</stationID>
+ <name>Europos Hitų Radijas</name>
+ <shortname>Europos Hitų Radijas</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1130672021016EFCA2B70A9141F5AEA369E666A77E39587242E8429F53639E3F862E6784B5</stationID>
+ <name>Žinių radijas</name>
+ <shortname>Žinių radijas</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1130671715AE39FE028BF94F174A74B06DC1939066F360F66A73F14D704A57545BAF3802B0</stationID>
+ <name>KF 105,4</name>
+ <shortname>KF 105,4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1130671723916876F3293ADDA615178A0064283870B9709D017B72EC28AAD017CD7B6F46B7</stationID>
+ <name>Kelyje</name>
+ <shortname>Kelyje</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1130672037D3487098D44C639E5B2462D236119EA2055E28714EC5EFC4356AC605869CAA07</stationID>
+ <name>M-1</name>
+ <shortname>M-1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1130672867C3FE175DD89485471B994A478580FF5EEA161C300654F1866F8B7DEFF3217F97</stationID>
+ <name>Radiocentras</name>
+ <shortname>Radiocentras</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1130671748A1531957A57B748BF8DEAE455811B89600E1357E155BA99D32B5CA4F98702A17</stationID>
+ <name>Pūkas</name>
+ <shortname>Pūkas</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.6</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
diff --git a/kradio3/presets/lithuania/panevezys.krp b/kradio3/presets/lithuania/panevezys.krp
new file mode 100644
index 0000000..a4052b3
--- /dev/null
+++ b/kradio3/presets/lithuania/panevezys.krp
@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-snapshot_2005_12_04</creator>
+ <maintainer>KLIURKA &lt;baruse@gmail.com&gt;</maintainer>
+ <changed>2006-05-02T16:39:13</changed>
+ <country>Lithuania</country>
+ <city>Panevezys</city>
+ <media></media>
+ <comments>panevezyje aptyktos fm stotis</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>11465652912F3CE4DC0A2ADA356894EF6C6B92D3E5A3B3FE1226D5D9B3CFC3A60D9A8330A4</stationID>
+ <name>Relax FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.305</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>114656529581C6D61FDDEE6CB8F88063FDAACA101995C2125A5C0B8101681AF3A08383C51F</stationID>
+ <name>Pulsas</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.596</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1146565298D266BD43AF38B31A4B897FB5BEDE8A3AB871FDF669B4C46B28BF56B264ED5CF3</stationID>
+ <name>Zip FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.101</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1146565302E7C1D045FD966C3603AD1BCE502486C2E3B377CD0BAD127CD536FA4F3AB5CBC3</stationID>
+ <name>Radiocentras</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.401</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>114657597375DFD9110C6995B0B6F0CD01A098F059C45BA5F4B1EE775CBDF42657C9EF71F1</stationID>
+ <name>M-1 Plius</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1146576044577F0F11CBE9566837339614F1531BAEF40F23CE5175FC25400053A80975A547</stationID>
+ <name>RadioCentras</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1146575786EC03A735B6AC8C02CAA7A7536F25F890324B6EF8120286971959DD1C99B308CE</stationID>
+ <name>LR1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>114656530393BE74DA340275B93762FB965CAB32574F99020CD37459071D1545E09FA90E84</stationID>
+ <name>Pukas</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.301</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1146565304A27567592D0331E8045FFC86C0388D8EEA09EA664F41246410C5FCD240F34F05</stationID>
+ <name>Radijas Lietus</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.006</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11465653054382DEBBBE91009DB03007B8E6BC3C61283B7B970B80194180767F053A25C3C5</stationID>
+ <name>Russkoje Radio Baltija</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.696</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1146565306C0537C7A8DE62A37254F0830F8017922FAEC28514017C4C11C5B50C356412E26</stationID>
+ <name>LR2</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.301</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11465653064F6DD8945E2E79FCCA75F369BFDF15452D2C5A576D3275FD5109B7D3E2135393</stationID>
+ <name>European Hit Radio</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.796</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11465653079AA4D23AA3110E3631A5BA3D4E1792360F87C63B5E350F1ACF4D775C96A62822</stationID>
+ <name>LR2</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.296</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1146565308524139DD14DB7DFC81D70C66169760F8BAA6B6BCA84FE0655E9B33A8FB683438</stationID>
+ <name>M-1</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.996</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>114656530986F0C330062BC3C9609FFCC3EA33DEE1CF5CE7853B6B004EB84F66B1F13EC138</stationID>
+ <name>Aukštaitijos Radijas</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.896</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1146565310D68E0D1C7C7385119F22270CB5086C5D9C770B3ACB6DFC7BBB8860309F943454</stationID>
+ <name>LR1</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.496</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>114656531122EF805BC669B478AA75C13DACF2850DB3DD04D096A538687CB6822FA47717DD</stationID>
+ <name>Žinių radijas</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.896</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
diff --git a/kradio3/presets/luxemburg/Makefile.am b/kradio3/presets/luxemburg/Makefile.am
new file mode 100644
index 0000000..3d3f2c3
--- /dev/null
+++ b/kradio3/presets/luxemburg/Makefile.am
@@ -0,0 +1,10 @@
+SUBDIRS =
+EXTRA_DIST = "walferdange.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/luxemburg/"
+ $(INSTALL_DATA) "$(srcdir)/walferdange.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/luxemburg/walferdange.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/luxemburg/walferdange.krp"
diff --git a/kradio3/presets/luxemburg/walferdange.krp b/kradio3/presets/luxemburg/walferdange.krp
new file mode 100644
index 0000000..1a35868
--- /dev/null
+++ b/kradio3/presets/luxemburg/walferdange.krp
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Wolfgang Zenner &lt;wolfgang.zenner@pt.lu&gt;</maintainer>
+ <changed>2003-04-26T21:56:38</changed>
+ <country>Luxembourg</country>
+ <city>Walferdange</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385407C0E4A025D422F911694EA657E38FD8B85C87FD88DD984A01C9E0CB5F3DAC0561</stationID>
+ <name>100komma7</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>100.677</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385407AFBFB6A017C8C7A5F8F16BC30B85D0C0E87B84799C65FCE80394C9D2202CE4B6</stationID>
+ <name>RTL-LUX</name>
+ <shortname>RTL-LUX</shortname>
+ <icon></icon>
+ <frequency>88.9015</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854076161020BD41D27F67E226E563E890312F73FB3301F832FD42F97F2C7FC6764C6</stationID>
+ <name>DNR</name>
+ <shortname>DNR</shortname>
+ <icon></icon>
+ <frequency>102.927</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854079297D695D8BC75127B779ACDACAB080F4F03335C9B916941C159377D64678AF0</stationID>
+ <name>Radioara</name>
+ <shortname>ARA</shortname>
+ <icon></icon>
+ <frequency>103.277</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385407BB520D98D14CECDCD0AAD64B8FF750BA848C03845757BDFB9F0B955D39843639</stationID>
+ <name>Eldoradio</name>
+ <shortname>ELDO</shortname>
+ <icon></icon>
+ <frequency>105.002</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854078B21392DDAF11A5DA4ADCB4FCECBA1B5F3BD0B9FAB81622EEC030859B6F8C77B</stationID>
+ <name>DNR</name>
+ <shortname>DNR</shortname>
+ <icon></icon>
+ <frequency>107.703</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540798C0D12726F1661419AB34C2642A94AC5C6E261E91C693826FE8AAB710612343</stationID>
+ <name>Premiere</name>
+ <shortname>Premiere</shortname>
+ <icon></icon>
+ <frequency>87.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854073BC6996ADB4BBDAA8977B0293C2959F2FB47749C76EF878A42E333888AFEDA87</stationID>
+ <name>RTL-LUX</name>
+ <shortname>RTL-LUX</shortname>
+ <icon></icon>
+ <frequency>92.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854070D0624F5D0DE76E44CBFCA7425618F58AB75BEF835973FBF447FDA5B50117B85</stationID>
+ <name>Musique 3</name>
+ <shortname>Musique 3</shortname>
+ <icon></icon>
+ <frequency>94.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854078B111486468DB2DDE5996F21DD26467BC9F836E47F3D8970C4AFE990D7D0A327</stationID>
+ <name>Radio21</name>
+ <shortname>Radio21</shortname>
+ <icon></icon>
+ <frequency>96.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385407EA222E19244D3040A4F1B8AC8AF03F4EB304ED09F9D0C946A9B557590C5D2B71</stationID>
+ <name>Region Trier Eifel</name>
+ <shortname>Tr-Eifel</shortname>
+ <icon></icon>
+ <frequency>97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385407917331FDBE436B09CF00637FC7F12D4E277AF861322A256EC884DD7E86CEF606</stationID>
+ <name>Inter</name>
+ <shortname>Inter</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/netherlands/Makefile.am b/kradio3/presets/netherlands/Makefile.am
new file mode 100644
index 0000000..4ac1b83
--- /dev/null
+++ b/kradio3/presets/netherlands/Makefile.am
@@ -0,0 +1,30 @@
+SUBDIRS =
+EXTRA_DIST = "alphen-aan-den-rijn-cable.krp" "amersfoort-cable.krp" "amsterdam-cable-2.krp" "amsterdam-cable.krp" "arnhem-cable.krp" "enschede-cable.krp" "groningen.krp" "ijhorst.krp" "rotterdam-cable.krp" "tegelen-cable.krp" "the-hague-antenna.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/netherlands/"
+ $(INSTALL_DATA) "$(srcdir)/amsterdam-cable-2.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/netherlands/amsterdam-cable-2.krp"
+ $(INSTALL_DATA) "$(srcdir)/arnhem-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/netherlands/arnhem-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/alphen-aan-den-rijn-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/netherlands/alphen-aan-den-rijn-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/rotterdam-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/netherlands/rotterdam-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/enschede-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/netherlands/enschede-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/the-hague-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/netherlands/the-hague-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/tegelen-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/netherlands/tegelen-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/amersfoort-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/netherlands/amersfoort-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/ijhorst.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/netherlands/ijhorst.krp"
+ $(INSTALL_DATA) "$(srcdir)/amsterdam-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/netherlands/amsterdam-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/groningen.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/netherlands/groningen.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/netherlands/amsterdam-cable-2.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/netherlands/arnhem-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/netherlands/alphen-aan-den-rijn-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/netherlands/rotterdam-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/netherlands/enschede-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/netherlands/the-hague-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/netherlands/tegelen-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/netherlands/amersfoort-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/netherlands/ijhorst.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/netherlands/amsterdam-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/netherlands/groningen.krp"
diff --git a/kradio3/presets/netherlands/alphen-aan-den-rijn-cable.krp b/kradio3/presets/netherlands/alphen-aan-den-rijn-cable.krp
new file mode 100644
index 0000000..cccf4df
--- /dev/null
+++ b/kradio3/presets/netherlands/alphen-aan-den-rijn-cable.krp
@@ -0,0 +1,306 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-1.0beta3</creator>
+ <maintainer>Arie de Ruyter &lt;arie.com&gt;</maintainer>
+ <changed>2005-08-27T14:00:00</changed>
+ <country>Netherlands</country>
+ <city>Alphen aan den Rijn</city>
+ <media>Cable</media>
+ <comments>Casema kabel</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>11251440363218E6DE3B7328EE3C73C258AA4E76C1E0BF8EC40AA191F87059873214342D00</stationID>
+ <name>Radio 1</name>
+ <shortname>Radio 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11251440369369B03B5E146DBB5C97057F9F93FCDB5BB9A934536C8C56065BD0ECA04FD63A</stationID>
+ <name>Radio 2</name>
+ <shortname>Radio 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11251440367D4B1BB7AA210BBFF62D73DED304A41B2A86CF1504FFC26B88B98551DCB1FA31</stationID>
+ <name>Radio 3FM</name>
+ <shortname>Radio 3FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11251440362EAFE6B4BE540869DCC05B5FA06A449FE0636C320CA1CE018E4C2D56F32978CC</stationID>
+ <name>Radio 4</name>
+ <shortname>Radio 4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11251440366347033D9F367C45F3873F4D5555C1863A8D5B5D37714CB2DFC1F74E37A111E6</stationID>
+ <name>Radio 747 AM</name>
+ <shortname>Radio 747 AM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11251440364911414096459E1BA40C7704AC8C57F2461960C11B2E67BF6F68C06671FF27AA</stationID>
+ <name>Radio Rijnmond</name>
+ <shortname>Radio Rijnmond</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1125144036D75A6F61B71B945A78C355FD40462F1EB1094ABEAF56F70AE32F64B23F5FD9AE</stationID>
+ <name>Radio West</name>
+ <shortname>Radio West</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11251440366062F69BCC781EA27EAA6DE66A44A1F121848E32EA13F8537798F80C8D996E8F</stationID>
+ <name>Alphen Stad FM</name>
+ <shortname>Alphen Stad FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1125144036C0A4C50D9E470AB9E6CDD14DDCCEE2912DC39FC09361AC0C4CEE9A94E1D67748</stationID>
+ <name>VRT Radio 1</name>
+ <shortname>VRT Radio 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1125144036B8564813C7FD8950CBC3A93C7CF13586DAF7AD574FCF75669AD91A998A95F012</stationID>
+ <name>VRT Radio 2</name>
+ <shortname>VRT Radio 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11251440369FC6AE7AD18918F3876A5F3A0C3428337828F8D40976A27B364164353298912F</stationID>
+ <name>VRT Radio Klara</name>
+ <shortname>VRT Radio Klara</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>112514403681670605A93499BD605CA1973A6CD8056D730392F75D74533676CC33787E9A12</stationID>
+ <name>BBC Radio 2</name>
+ <shortname>BBC Radio 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>112514403641A981F9FB6E24AAE82F4FBFAD90E53AC8D8EF9890FD112E1D74DBCC11C9FAA6</stationID>
+ <name>BBC Radio 3</name>
+ <shortname>BBC Radio 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1125144036241FEFD3E224AED69E56A413AF045CD788B2ED937230BDA43E94391405AC6350</stationID>
+ <name>BBC World Service</name>
+ <shortname>BBC World Service</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1125144036CE9FBDA08931C651886109974D0F83563F5ADF1B5F686E7170EC64979F47EF08</stationID>
+ <name>WDR 3</name>
+ <shortname>WDR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1125144036340FF9678C68C5DF14A1E5B483724CB655A8CD8620FDBB8FE3524153B1747FC1</stationID>
+ <name>WDR 4</name>
+ <shortname>WDR 4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11251440361B3493EF2620B65BB36AE0822545B8ACCBBF2ACD652500E3A99F6BA6BB409849</stationID>
+ <name>Arrow Jazz FM</name>
+ <shortname>Arrow Jazz FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11251440362B98DF2ABA6613484BE93EE8A0CD92238A1FE9995040455391E45E6BE2BE8818</stationID>
+ <name>Arrow Rock Radio</name>
+ <shortname>Arrow Rock Radio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1125144036BA63EADEE6B8B79FB9EBDCEFD7393711B0ED4CC998CAA080A46A136CE47098C0</stationID>
+ <name>BNR Nieuws Radio</name>
+ <shortname>BNR Nieuws Radio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>112514403617909E37CDDD538CB40B7C2EB89DC044061890CE4B30ECAC471085100D62D0D5</stationID>
+ <name>City FM</name>
+ <shortname>City FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1125144036812F16F16C8D4F01A37E5192EEE77E2C395EE03D7703F6CBAE0096D0528EBDE5</stationID>
+ <name>Classic FM</name>
+ <shortname>Classic FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>112514403630866199694A76253189A3EA3321299CB66220A873C9FB77DBB04980517A9C7A</stationID>
+ <name>Concertzender</name>
+ <shortname>Concertzender</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11251440367C9D7784964B2034B4F50C2BB17B85FADBD789002DB5A1D52461C8C2AA4FA696</stationID>
+ <name>FunX</name>
+ <shortname>FunX</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>112514403635B0986C2D66A0754129EE5EE160A4EF27480C379EC3E3B9D49B05327C96CD4D</stationID>
+ <name>Kink FM</name>
+ <shortname>Kink FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1125144036DA9EC59C2AC5E002F02B0D08CF2145C6674D91D1ACCB3B2B55C26473ACFC1F94</stationID>
+ <name>Noordzee FM</name>
+ <shortname>Noordzee FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11251440365AA2EE8C59C4706C21CC3D1E74322AE22C0C56E490E6CCD4554FFA37A618C0DF</stationID>
+ <name>Radio 10 Gold</name>
+ <shortname>Radio 10 Gold</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11251440369B32D347C57D127C7774A19FEC205127A097E9667B9DBFFA08CB75E6344888E2</stationID>
+ <name>Radio 538</name>
+ <shortname>Radio 538</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1125144036B8142F4A62EF7F590E8D8CD92AE6BA73D23B3DCC14C84EE75B2C90689A8C6060</stationID>
+ <name>Radio Veronica</name>
+ <shortname>Radio Veronica</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>112514403690F985EE959AE862A318C3A89CB7D93B2B1DF319205B7F5B7B581DA8BE4024D9</stationID>
+ <name>RTL FM</name>
+ <shortname>RTL FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1125144036547C82B29B7E90C7CA7C1F893D68FA2715C01C9E734B5EA274EBF2BBF7D07D74</stationID>
+ <name>Sky Radio</name>
+ <shortname>Sky Radio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>112514403626A8DFAFCD3A51F7D0C13BB23A4553A493F14534568F8C6139A310AD630C1CF4</stationID>
+ <name>Yorin FM</name>
+ <shortname>Yorin FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>112514403692424C77E57B0660E6BFAC02BBCC17E7F4EE1BE3D9371140F7C7859A3A284E8D</stationID>
+ <name>Tweede kamerlijn</name>
+ <shortname>Tweede kamerlijn</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.6</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
diff --git a/kradio3/presets/netherlands/amersfoort-cable.krp b/kradio3/presets/netherlands/amersfoort-cable.krp
new file mode 100644
index 0000000..6536762
--- /dev/null
+++ b/kradio3/presets/netherlands/amersfoort-cable.krp
@@ -0,0 +1,315 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Julius Schwartzenberg
+&lt;julius@zgod.cjb.net&gt;</maintainer>
+ <changed>2004-08-14T13:45:29</changed>
+ <country>Netherlands</country>
+ <city>Amersfoort</city>
+ <media>cable</media>
+ <comments>got data from http://www.casema.nl/</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1061768916D6D60211155A9867579BD00D8BAAB1B161379528845A471C2473820166ACE223</stationID>
+ <name>Radio 1</name>
+ <shortname>Radio 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1061768916674F270FB0E48154D32C1348A18098757C8FBB5B2E6DD4DBE531C44F80E55850</stationID>
+ <name>Radio 2</name>
+ <shortname>Radio 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1061768916521DF9F0D8CC313B63094A26C58A3EF43281F65F7405DC7ED9F250F50877E6A8</stationID>
+ <name>Radio 3</name>
+ <shortname>Radio 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.125</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1061768916875497BD80A8B3EB56FDD97D8BCD15143EF3A7FB072C8B3AF77BFC9B8B077F41</stationID>
+ <name>Radio 4</name>
+ <shortname>Radio 4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106176891671E2CAEA45B3503F03EC1C51826002CBD7B24604CA6379650E39A727905D27A9</stationID>
+ <name>Radio 747 AM</name>
+ <shortname>Radio 747 AM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.4375</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1061768916CCBEFA171CFA37C0C9504D15C9E5D25D4307FAB210169CE31D93B3EC2639EFC1</stationID>
+ <name>Radio M Utrecht</name>
+ <shortname>Radio M Utrecht</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.625</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1061768916DAD184A2F4074D993CBB883601E987A73B79E77DF27EC7B59BBE06D9E3F1C25A</stationID>
+ <name>Omroep Amersfoort 2</name>
+ <shortname>Omroep Amersfoort 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.125</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10617689169ED9E4CBE58565B78728DE839D95C43B2F9BBE9C98B999596AFCD46B8790FDD5</stationID>
+ <name>Omroep Amersfoort 1</name>
+ <shortname>Omroep Amersfoort 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.1875</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10617689160C8C83C03FB275202BD04783527BD3F32454DCF75B0F52D6AE94D95776968AC3</stationID>
+ <name>Golfbreker Radio 97.8</name>
+ <shortname>Golfbreker Radio 97.8</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.8125</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106176891660FD79DFF18BF25EE5732FDAE5A7F4DE53C34511719A9D9A192A52FCDAB424FB</stationID>
+ <name>VRT Radio 1</name>
+ <shortname>VRT Radio 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10617689169CF30DDBE712348BEF827B9C3992B2E4761C7BE090E611BA3F3639F4C1B9ED68</stationID>
+ <name>VRT Radio Klara</name>
+ <shortname>VRT Radio Klara</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.438</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1061768916A1B95607644CA5966BEBC794606C040BFCEB19DC06787BFEF47DA808200FDC1F</stationID>
+ <name>BBC Radio 1</name>
+ <shortname>BBC Radio 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.375</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10617689169DB2EDD8EC100A91AEE995A3803046E75F4C2E9FD96C4A9F4F4E572ACFD76E60</stationID>
+ <name>BBC Radio 3</name>
+ <shortname>BBC Radio 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.5625</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106176891678159A56A7854173DC99EB2CEB96B78D7FA3C8C6FDDF995196EF6458B547C700</stationID>
+ <name>BBC World Service</name>
+ <shortname>BBC World Service</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10617689169740CD32EAF9E9E5F756892B843F1B66CF48BBEEC3F27F23523F711BD22363C1</stationID>
+ <name>WDR 3</name>
+ <shortname>WDR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.125</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1061768916E9800AB35591D14C1254B1A8F3F94566630E7A7F0FE91AFBD120446ADFA2A059</stationID>
+ <name>WDR 4</name>
+ <shortname>WDR 4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.562</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106176891698E7B69554913268EFF605E26C7A03D1D19F955924A6C04BA4683F895D19D116</stationID>
+ <name>Radio France Internat.</name>
+ <shortname>Radio France Internat.</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.9375</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1061768916B8192E1A210DEA36E235662832013CA5A99264A14A07BA0933F5079FA526A1CE</stationID>
+ <name>Arrow Classic Rock Radio</name>
+ <shortname>Arrow Classic Rock Radio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1061768916A4452B58644E2C6E38C4D59AA6194D71D661149C72F9E866FFB3ED7C27A25621</stationID>
+ <name>Business Nieuws Radio</name>
+ <shortname>Business Nieuws Radio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.9375</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10617689169DB024ABAAA652F2C5476890B717855DBD52903DA0E0F5255A8E98AC2BB3E732</stationID>
+ <name>Classic FM</name>
+ <shortname>Classic FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.438</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1061768916F34B5B0E334A33AA52E4BA11B8BFF5600AD00C788DB6ABE1C73165CD5DF0469D</stationID>
+ <name>Colorful Radio</name>
+ <shortname>Colorful Radio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.9375</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10617689164394C7A3D38B4FEDE5625C2E7534ED6AD44B8EE956712A802388A26DB075E098</stationID>
+ <name>Concertzender</name>
+ <shortname>Concertzender</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1061768916B99A9ECFC4FD33ADF40BA59297E86FECD0A11C05E5E25BB280A78878EA9EA953</stationID>
+ <name>ID&amp;T Radio</name>
+ <shortname>ID&amp;T Radio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.4375</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106176891684678CE4B308A8A6F724F5C73506E16E27268EB819FC720AE7AD5B483473E4B6</stationID>
+ <name>Kink FM</name>
+ <shortname>Kink FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.5625</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1061768916248E70F2866B0754758FA4F16D395369F9B3550559E24A77C1B48B5C1EEB0684</stationID>
+ <name>Noordzee FM</name>
+ <shortname>Noordzee FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.625</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10617689161657EC736540B26C223EC40019E316770DD54F30EDD58351F305A7CCF58CF42E</stationID>
+ <name>Radio 10 Gold</name>
+ <shortname>Radio 10 Gold</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1061768916C7302894957E33D663C0F2D3AA3289FC5B52B8929E93DECFC59CC059AEE2D5A6</stationID>
+ <name>Radio 227</name>
+ <shortname>Radio 192</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.5625</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1061768916495B2FFD8C70DEA15BCE8BCD882F1ECB21F05F8713D6610A04BE9690F59CD956</stationID>
+ <name>Radio 538</name>
+ <shortname>Radio 538</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.438</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1061768916C3BBEBD88D7BE50E0D66854AAFC41402F07BCC2B609B8D70D7B1BE9E0551D162</stationID>
+ <name>Radio Veronica</name>
+ <shortname>Radio Veronica</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.4375</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1061768916FC58F6080AA9D2E99E4EF096A27242230717633F27CEAD62834C228FEE869BCC</stationID>
+ <name>RTL FM</name>
+ <shortname>RTL FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10617689165763D6C843F7F6EC887BCB341263385A26A6AF2E11CB926DE91932882C30DCF7</stationID>
+ <name>Sky Radio</name>
+ <shortname>Sky Radio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.9375</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10617689166BA97C6B690CD30B8E86DA28E1B815A478FD6B58504AF435C114B2CFD4177318</stationID>
+ <name>Yorin FM</name>
+ <shortname>Yorin FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1077657266E1D819D54566F4A14193366D46F34265DFBC2ABBF2127BEF377A03ABD08DF2F1</stationID>
+ <name>Casema Service Kanaal</name>
+ <shortname>Casema Service Kanaal</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>68.7752</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
diff --git a/kradio3/presets/netherlands/amsterdam-cable-2.krp b/kradio3/presets/netherlands/amsterdam-cable-2.krp
new file mode 100644
index 0000000..b9bd973
--- /dev/null
+++ b/kradio3/presets/netherlands/amsterdam-cable-2.krp
@@ -0,0 +1,367 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Bas Doeksen, &lt;bas.doeksen@river.nl&gt;</maintainer>
+ <changed>2005-04-02T14:29:32</changed>
+ <country>Netherlands</country>
+ <city>Amsterdam</city>
+ <media>Cable</media>
+ <comments>-</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1112444939F689B225E14EE54BA8D71D45E170E283F8A8740270A5F1779DD3924C9FEB30F1</stationID>
+ <name>Radio 1</name>
+ <shortname>R 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11124476723D45F13F3E0D5A3C70FBDDFD1F9685915E07DDE2AF0F3AC14B9D903F7F98D1E4</stationID>
+ <name>Radio 2</name>
+ <shortname>R 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11124449442FEF84E5A6AC8595E4154772307B80439B42E48E00C16C03E029D2A710C15761</stationID>
+ <name>Radio 3</name>
+ <shortname>R 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>111244494529181F65A159D6FAB58D37D23F1F782331BF438287B9E4803AA1B75DE3F7FA18</stationID>
+ <name>Radio 4</name>
+ <shortname>R 4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11124449511E6135B90D9CA7D2990696121259216FF82B2A4CA11E6D9691EFC02643CA6B34</stationID>
+ <name>747 AM</name>
+ <shortname>747</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1112447740AAEB9B7547AA0D1ED410D4FE8DAFFBEEDDE405CABCD4B411D49291D2B891C34B</stationID>
+ <name>VRT Radio 1</name>
+ <shortname>VRT 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1112444949ADD9FE46840ED9243BF04B657C2FAC9537734FF44CA115779CF1900F9D74D71C</stationID>
+ <name>VRT Klara</name>
+ <shortname>Klara</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1112444939BB1E6D538899C761DF150F78BFB7AB97D7077803CDDD002E6EF4690111C4090B</stationID>
+ <name>Salto 1</name>
+ <shortname>Sal1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11124449637F0B24BDAD86CB5F9BF88C25C858E21C69207D4FAD62A97A3142D64B2040DE13</stationID>
+ <name>Salto 2</name>
+ <shortname>Sal 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1112444965B01A15BE4158AB973D03A6488385C1A1FAE40B9EA951262F7A42F121FC9CC492</stationID>
+ <name>Salto 3</name>
+ <shortname>Sal 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1112444962754BCD9D9B0434AC0C243B69AA4C0A505B252ECAB07E96B7F3E5E4BE8E917F20</stationID>
+ <name>Salto 4</name>
+ <shortname>Sal 4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1112444960DD3805F0E621B2FD01983C6F39A2DEC9CC3B56321CFC60FD673C959FFF477103</stationID>
+ <name>Salto 5</name>
+ <shortname>Sal 5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11124478340D776FB2078866843163109E3F906DFEB8CA135CA184BBB5B39D5ABC5DFB1439</stationID>
+ <name>Radio Noord Holland</name>
+ <shortname>R NH</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1112444947A4BA8E580EE7E858E805AF7D3A3ED1B7573364795682008CBCC36498EC537F36</stationID>
+ <name>BBC Radio 3</name>
+ <shortname>BBC3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.1004</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1112444942C9B600DCE4A08D665C1027763C9D29546237B8CBD0E5B6EB7FED6A314ECA2A8D</stationID>
+ <name>WDR 4</name>
+ <shortname>WDR 4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1112444948DFD3BDF56AB8CD150874C8893422F9DA27B8654D0339E1826A0EEB7941D5AD04</stationID>
+ <name>RTBF la Premiere</name>
+ <shortname>RTBF1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11124449673E543BACC028ECB081A566A265FEFD2B2B4330FC8DBE15EEF4E1E194795FB4C8</stationID>
+ <name>Arrow Rock</name>
+ <shortname>Arrow R</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1112447929B7F5F0A19A2D12D9E1D41DB18BABFCC6840739E6195DF1D2AEAED6F2B1A9CEB7</stationID>
+ <name>Arrow 90,7 FM</name>
+ <shortname>Arrow 90</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1112444950E4F2F4EBBC302B9D996EDE4A974B3D5D70082CA529E0996EB58F761B019B9BE4</stationID>
+ <name>AWBC Tamara</name>
+ <shortname>Tamara</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>111244495835159E9156F856E3415897E51E4CADAC89F6982E29FDA545BE29E201023BA7B8</stationID>
+ <name>BBC World Service</name>
+ <shortname>BBC W</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1112444966641A9F8E1C2A745F4A69163344BBCEC9E24D7F7198BFE14340049F074FC93A34</stationID>
+ <name>BNR Nieuwsradio</name>
+ <shortname>BNR</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.601</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1112444950556C70090429D7E7C1397437B6A7ABE626D10AA0149D07823ED1820C3ECF02A0</stationID>
+ <name>Classic FM</name>
+ <shortname>Classic</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.1006</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11124449652397523F0ACF02DECCA0F8EBE3A2D418E7F46A4850BA4F73F1B91246B405BD6C</stationID>
+ <name>City FM</name>
+ <shortname>City</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1112444963133828729FBC072C0AB7F10C822FB99AD00847CB8B25C0FA23B9B3E93006EF2F</stationID>
+ <name>Concertzender</name>
+ <shortname>Concert</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>111244495273262FAF96EC5CE5A82C8497ACEBE3F7DB54DEDD504B13A75DC0E22CD7BC7A76</stationID>
+ <name>RTL FM</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1112444956A6133CFD19A263B6AD4D47E2E740CD3D7ED00C4D265F35FA14F3D13631A708AD</stationID>
+ <name>Happy Radio</name>
+ <shortname>Happy</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.901</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1112444955D8CCC02CBCBAE85E863ECB8BB7B9D68126A2044298232BF961A46CAF54D9940B</stationID>
+ <name>Slam FM</name>
+ <shortname>Slam</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.1007</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1112444956A78797ED30824DD344788C99A67EB691033A1298B2D3B9E465893B7E0B95998F</stationID>
+ <name>Yam FM</name>
+ <shortname>Yam</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.496</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>111244496194B22984387AFBE6BA2FDB894527D05F4DDAB5E6750DAB311CA7DEA8FE6740C9</stationID>
+ <name>Kink FM</name>
+ <shortname>Kink</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11124449575927FA0AF0EF6B0A9A05AA3845E68E8DB296221F69A7534084A2AD453B200B08</stationID>
+ <name>Noordzee FM</name>
+ <shortname>NZ FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.396</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1112444941804355EFFEC42EBF7D95F281C75715B238D49A9E2B285F6B9E5758BE5B5EFBC9</stationID>
+ <name>Radio 10 Gold</name>
+ <shortname>R 10</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11124480719B0B6050EA21F75E5928587E07E829649DEA1022654ED1D0C3AAE00AD7D47B6B</stationID>
+ <name>Radio 538</name>
+ <shortname>R 538</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1112444953D97DB1C96DD44F061FA2A5A435C19AC188AAC7641F4FFAC6B2C4EB4D26789937</stationID>
+ <name>Radio Veronica</name>
+ <shortname>Veronica</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>111244495892430D51A459E97CA36994B2E6AAE9AD3B7170C6832D762AB545762D1479A130</stationID>
+ <name>Sky Radio</name>
+ <shortname>Sky</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11124449590D85F85C140B76C64C31D58DDE2216F2E192609BEFE158FCD0E92EABC1F2B608</stationID>
+ <name>Radio Ujala</name>
+ <shortname>Ujala</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11124481563036F88119E7412A57DA4360FB29C40D35A6EAA0A15ED1D76C157551603E04EF</stationID>
+ <name>World Radio Network</name>
+ <shortname>WRN</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11124449541DAD544B7BB9218C922CDB63863DBE0A520CAE23514D1ECF3B5E4D76806C4A36</stationID>
+ <name>Yorin FM</name>
+ <shortname>Yorin</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.501</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1112444947EF012D7EA1272526E946D9DC90163CE74BD15174F558DB9ABE03C77E298F85D7</stationID>
+ <name>FunX</name>
+ <shortname>FunX</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11124482354FA38BAA95CA6B21EA7A23D81484015A8B60A774412422B3A22DDACC435B0A76</stationID>
+ <name>2e Kamerlijn</name>
+ <shortname>2e kamer</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.5</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
diff --git a/kradio3/presets/netherlands/amsterdam-cable.krp b/kradio3/presets/netherlands/amsterdam-cable.krp
new file mode 100644
index 0000000..c9a8849
--- /dev/null
+++ b/kradio3/presets/netherlands/amsterdam-cable.krp
@@ -0,0 +1,326 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Can Bican, &lt;unknown&gt;</maintainer>
+ <changed>2003-05-03T23:44:26</changed>
+ <country>Netherlands</country>
+ <city>Amsterdam</city>
+ <media>UPC Cable</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385408F138CD7D41F2B147AC822FF35D02685F0ECB84D80FAE78CB219212B8221A5B99</stationID>
+ <name>Radio 1</name>
+ <shortname>Radio 1</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540871B730BC3A47F0607B6F46F7011EF869386CEE4E77CCDAA9C01B6A4B8B955550</stationID>
+ <name>Radio 2</name>
+ <shortname>Radio 2</shortname>
+ <icon></icon>
+ <frequency>90.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540856A52730BB2A39449DD09DDDC3AF434589B0D9FBF5A916D52C2C5846FB62E4BA</stationID>
+ <name>Radio 3</name>
+ <shortname>Radio 3</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408F5F7BAB6625712375BF45211F75C9ADB48BF3BB8E49817BDF76D9E26C0CD7942</stationID>
+ <name>Radio 4</name>
+ <shortname>Radio 4</shortname>
+ <icon></icon>
+ <frequency>92.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408F054B9B7BF02BB4321A74720B780D5485D6E12CB598D0C93DAE0BB6304ADC8C4</stationID>
+ <name>747 AM</name>
+ <shortname>747 AM</shortname>
+ <icon></icon>
+ <frequency>96.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408AEA08200A7F05A25C9058F054BAD0DBDC482F4B37F4B9C948F3278B190745603</stationID>
+ <name>VRT Radio 1</name>
+ <shortname>VRT Radio 1</shortname>
+ <icon></icon>
+ <frequency>92.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408CC47967FB3E62F41D91A3592CA421C04E6D686ECAEDCF61DC5C294B96E2C7937</stationID>
+ <name>VRT Klara</name>
+ <shortname>VRT Klara</shortname>
+ <icon></icon>
+ <frequency>95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408E5766FE766161DB124913B01BA94699C2DE8888891EFF64B86828FEDE318FDBF</stationID>
+ <name>Lokaal Salto 4</name>
+ <shortname>Lokaal Salto 4</shortname>
+ <icon></icon>
+ <frequency>103.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408B6D4A40BBB2F403608F3192B7C0A524F4A39E66D97C007B42FFC6F7C36EE6C01</stationID>
+ <name>Lokaal Salto 5</name>
+ <shortname>Lokaal Salto 5</shortname>
+ <icon></icon>
+ <frequency>102.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854089A24B39B31B0F14E31F1ABE095221A95E16B98D77E5847F3D1A4BA5723221D19</stationID>
+ <name>Lokaal Salto 1</name>
+ <shortname>Lokaal Salto 1</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408BF79CE10ABEFF6EEBEB4FC91624185B97CA1A28210561926F42A3DDC9BD92FBA</stationID>
+ <name>Lokaal Salto 3</name>
+ <shortname>Lokaal Salto 3</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408EE5C32E3B4105C7D6AB7A2FE6867E653882D0AACDEAE031EAB499F89BB9D15D5</stationID>
+ <name>Lokaal Salto 2</name>
+ <shortname>Lokaal Salto 2</shortname>
+ <icon></icon>
+ <frequency>104.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408A2205EF18B59A0F2A234882A29402E0C2DB8479F5B6810962D5ED08C7A93AC6C</stationID>
+ <name>Lokaal Salto 6</name>
+ <shortname>Lokaal Salto 6</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408427912749C46139C8E279A157D1941AF05967C88FE9CB48C1BC9D07E20B52753</stationID>
+ <name>Radio Noord Holland</name>
+ <shortname>Radio Noord Holland</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408C5E1146C3E15212785A9ABDBCC97F520E2C13E026B5BEF7E343A3BD8FBB1D0D9</stationID>
+ <name>BBC 1</name>
+ <shortname>BBC 1</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408201B168D6BFC0562AA6BF4E36945280737EB96CDCEA91FC2B38E2CDF92F82600</stationID>
+ <name>WDR 4</name>
+ <shortname>WDR 4</shortname>
+ <icon></icon>
+ <frequency>90.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540815DF8223FB2BF1F8483B9782D4E70B420AC0009D8507D57CCD6941F82E3365AB</stationID>
+ <name>Arrow Classic Rock</name>
+ <shortname>Arrow Classic Rock</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408AD5C5BDF34688256038598B8FD85DD186EB4C9AB83A63B34A0C64C10E938C845</stationID>
+ <name>AWBC Tamara</name>
+ <shortname>AWBC Tamara</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408269BE37535A3059E102E880D1CEC519489B9E0BF7EB1F5401CB2F054D51383EF</stationID>
+ <name>BBC World Service</name>
+ <shortname>BBC World Service</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854083B20339ED11C06DD46B0C46A9FC3519873B793C3CDABFE5CD2B9D7CCB5BE70DF</stationID>
+ <name>Business Nieuws Radio</name>
+ <shortname>Business Nieuws Radio</shortname>
+ <icon></icon>
+ <frequency>106.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408450F8968D865CEE51732E7EED7325FE3E6EF1B442485EECAC60A69329D07F812</stationID>
+ <name>Classic FM</name>
+ <shortname>Classic FM</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854080B45F185DF14A6F753F8431CA83F6F3158E0ED4C82A615EA0454576D515642B3</stationID>
+ <name>City FM</name>
+ <shortname>City FM</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408C35AD6FC306A319331917CDEBAD1CFDBCCD019AAA2D8CBB76ED1C97477E13B2D</stationID>
+ <name>Colorful Radio</name>
+ <shortname>Colorful Radio</shortname>
+ <icon></icon>
+ <frequency>97.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408BFB8C998AA5BB7954C5E3FAE97CE826D2C8A81CC02F93ADA941BBC9617B2B694</stationID>
+ <name>Concertzender</name>
+ <shortname>Concertzender</shortname>
+ <icon></icon>
+ <frequency>104.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854084613C645D6BD225982E071B869B657E3C5FF99ACCB4B4AF14EA03A7EE86026AD</stationID>
+ <name>Country FM</name>
+ <shortname>Country FM</shortname>
+ <icon></icon>
+ <frequency>94.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540893185D8ACE10550CC75E02C96DC87FF09E84EE3949D2D987D96143C3141CF020</stationID>
+ <name>Happy Radio</name>
+ <shortname>Happy Radio</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408DEB95E6BE05985A1B9E78FD7A02034CEE098F962DC11E3F493CC521080D06DC0</stationID>
+ <name>ID and T Radio</name>
+ <shortname>ID and T Radio</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408A4B558BD94D212BC52DA470B992CE4B0DA819620AF0C7DE56CA8B0BB604844AA</stationID>
+ <name>Kink FM</name>
+ <shortname>Kink FM</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408172A22548CC447C2B60409C0BE9088A18B4432419AD463CFD381A135372142AF</stationID>
+ <name>Noordzee FM</name>
+ <shortname>Noordzee FM</shortname>
+ <icon></icon>
+ <frequency>100.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408B04CE09F8D8A0853FA44383240D51700D23D31EA858FFD5FACDC6B1EB907D9AE</stationID>
+ <name>Radio 10 FM</name>
+ <shortname>Radio 10 FM</shortname>
+ <icon></icon>
+ <frequency>89.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854087D2FB89A6DB8136F91144FEEFA3B5D43C93EB5834E2DB3DDF3FF69A4052E78F3</stationID>
+ <name>Radio 192</name>
+ <shortname>Radio 192</shortname>
+ <icon></icon>
+ <frequency>90</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408A0E58A3175EC015F6E509091EC79F67F4F8F206D3641F1871A3BBDFA5187A978</stationID>
+ <name>Radio 538</name>
+ <shortname>Radio 538</shortname>
+ <icon></icon>
+ <frequency>107.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408BE985CFB7AA11FCFEC71AC56E0272B1709A78CBAF9FC1C638961CAD9D3A5165B</stationID>
+ <name>Radio Nationaal</name>
+ <shortname>Radio Nationaal</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408E97A15298F7654591BB9AD6BA326FCE0D1AB338C73F8BDBC2BA5AFA3169CF734</stationID>
+ <name>Sky Radio</name>
+ <shortname>Sky Radio</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408AD4EBF544F4F95064241F58E8FDF6938268EC25BAB5FCFBAF0710803CEE3F0FF</stationID>
+ <name>Radio Ujala</name>
+ <shortname>Radio Ujala</shortname>
+ <icon></icon>
+ <frequency>101.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540891E05107D05DADF5890E587D96DA0F04238D1C7E07C7052464C6A098382E85C8</stationID>
+ <name>World Radio Network</name>
+ <shortname>World Radio Network</shortname>
+ <icon></icon>
+ <frequency>97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408A5DC9BE5CBA4C7A3E7CEE3769F4AA9EF4B3886A7428A085C8CA9CE8B8EE06E7F</stationID>
+ <name>Yorin FM</name>
+ <shortname>Yorin FM</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408D116FE1521EE2BB690EFFBD5BBE5D319FCE111A63244D25F699D18B60B5586EB</stationID>
+ <name>Radio France</name>
+ <shortname>Radio France</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540895EB7FBD1F16F26001CAD9019E6C63927A668109267670E7613BECF876165C6D</stationID>
+ <name>2e Kamerlijn</name>
+ <shortname>2e Kamerlijn</shortname>
+ <icon></icon>
+ <frequency>87.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/netherlands/arnhem-cable.krp b/kradio3/presets/netherlands/arnhem-cable.krp
new file mode 100644
index 0000000..47a2763
--- /dev/null
+++ b/kradio3/presets/netherlands/arnhem-cable.krp
@@ -0,0 +1,318 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Bert Roelse &lt;bert@roelse.com&gt;</maintainer>
+ <changed>2003-05-03T10:30:00</changed>
+ <country>Netherlands</country>
+ <city>Arnhem</city>
+ <media>UPC Cable</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10771449854D486CD4A88E5F77ABA217DAE5EECC447EED174AEE881D2B9CB19468D6E277B0</stationID>
+ <name>Radio 1</name>
+ <shortname>Radio 1</shortname>
+ <icon></icon>
+ <frequency>87.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985EB2821EB12AA8B1C8C9B4282E54E667C107A94BE151A8345B52985DEC263247D</stationID>
+ <name>Radio 2</name>
+ <shortname>Radio 2</shortname>
+ <icon></icon>
+ <frequency>88.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449855C0ADD568D46BA16F867A1366717C4F0D58A0AF6E3DF761ECE14AC7BDE1BDAF7</stationID>
+ <name>Radio 3</name>
+ <shortname>Radio 3</shortname>
+ <icon></icon>
+ <frequency>88.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985217175B537732FC4B4424774CE6D5C14BB6149589B5B7CE2BE97041D3C3D3BF3</stationID>
+ <name>Radio 4</name>
+ <shortname>Radio 4</shortname>
+ <icon></icon>
+ <frequency>89.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498547D3F4E587CAB193C6A774840C585022751E53886741B050ED8E844B6242B81C</stationID>
+ <name>747 AM</name>
+ <shortname>747 AM</shortname>
+ <icon></icon>
+ <frequency>89.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985652187DC77F521748C169F0EF99CB0F52ADDCC1983252BD592971F9A084364E9</stationID>
+ <name>VRT Radio 1</name>
+ <shortname>VRT Radio 1</shortname>
+ <icon></icon>
+ <frequency>91.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985957A5B3A3C53F78FF03AA46C31E5D256A162E37E3F89A3FF4507505EB3B6947E</stationID>
+ <name>VRT Radio 2</name>
+ <shortname>VRT Radio 2</shortname>
+ <icon></icon>
+ <frequency>92.0</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449854D6A5EBA07E7FB6B581FDA55CE5D035AA71F32CEBDDA871445FE16D809E52086</stationID>
+ <name>VRT Klara</name>
+ <shortname>VRT Klara</shortname>
+ <icon></icon>
+ <frequency>92.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985768D14A1E5B979F13C5297DC21D7856DCB27DE3A8EFD45395EBEE3ED1D4B8402</stationID>
+ <name>Omroep Gelderland (ed. Veluwe)</name>
+ <shortname>Omroep Gelderland (ed. Veluwe)</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449854446CFC9BFF6F37A22476FF1576074FFB42B738A90B6E07C8AC9FD6E010EFD60</stationID>
+ <name>Stadsomroep Arnhem</name>
+ <shortname>Stadsomroep Arnhem</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449852346D12EB91D0110EB26ED2B9CA41865CD5C2304EEB30D66AE09DD3B12F4CECA</stationID>
+ <name>Omroep Gelderland</name>
+ <shortname>Omroep Gelderland</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985382AD84E7EE0F3533085AD82A51B01A834258886D447E42B1188A5D6222984BA</stationID>
+ <name>BBC 3</name>
+ <shortname>BBC 3</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498529816C085B8D7CE9774C7E124712318942D27348AFC669E597C5E304DADEC46B</stationID>
+ <name>WDR 1</name>
+ <shortname>WDR 1</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985D10D38DCD71684F59C332B8248EF1E63C600DB35348BA08C997DFA0D01769279</stationID>
+ <name>WDR 2</name>
+ <shortname>WDR 2</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985693E7647E996C73AFF5CE01E6A4CF35F3F96F5571ECE351EDB62C2C20F8862AC</stationID>
+ <name>WDR 3</name>
+ <shortname>WDR 3</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498532132EEF1F5D63ACEB96E8D9ADC0E8397211AE8DD6B88063CC13ECCCAEF53D80</stationID>
+ <name>WDR 4</name>
+ <shortname>WDR 4</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985FE14BA0A310833B83C2571FD787DE9360A218F32DEC470EA83F26F208E440969</stationID>
+ <name>NDR 3</name>
+ <shortname>NDR 3</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449858D2581BA0A86F93B13947AD9C288CEE93F0733A8509373BAB4A9ACA19DCA1143</stationID>
+ <name>Arrow Classic Rock</name>
+ <shortname>Arrow Classic Rock</shortname>
+ <icon></icon>
+ <frequency>97.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985D06D449574A9633DD5B67C9FDB6297904CFD9874EFAA8AEF301300A0233CC54D</stationID>
+ <name>France Musiques</name>
+ <shortname>France Musiques</shortname>
+ <icon></icon>
+ <frequency>95.0</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449853F2BF29BAC891FB4A8238B449CA94B91D1635694A315066A00488700A7756106</stationID>
+ <name>BBC World Service</name>
+ <shortname>BBC World Service</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449858A92D5A3ED2699FF951A6689EE3B42DF3E9CA3A5BBDA5D69F95DA4CBAFEF9B3F</stationID>
+ <name>Business Nieuws Radio</name>
+ <shortname>Business Nieuws Radio</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985C0B3BAA65BF1DBBA9ABCA64C4E86D947F98B17FC899EF197E3D52186C0BC2C0F</stationID>
+ <name>Classic FM</name>
+ <shortname>Classic FM</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498560628C534361BC78658F6ABF435C26D6011B0D0AE3B32C240E02F642DDEF9DDC</stationID>
+ <name>Colorful Radio</name>
+ <shortname>Colorful Radio</shortname>
+ <icon></icon>
+ <frequency>102.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498515B51F2F654390F95C8B18D50B14ED81CD6F0F9766973A4C85DFA8C6CFF33405</stationID>
+ <name>Concertzender</name>
+ <shortname>Concertzender</shortname>
+ <icon></icon>
+ <frequency>103.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449857FD6EB436D327DF496766BD991B221B085DA0B21FC46A0788E987A8D0F37AC15</stationID>
+ <name>RTL FM</name>
+ <shortname>RTL FM</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985BAEA5719D6E72329C7D39E9850ED92D89211A3D1D0887BCAF40269C470A567C9</stationID>
+ <name>Hot Radio</name>
+ <shortname>Hot Radio</shortname>
+ <icon></icon>
+ <frequency>101.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449851C6AA5956EA26A6A5415DBAAE2AF45CC8A12F8DAE1D5CBB5365A6FD495A528CF</stationID>
+ <name>ID & T Radio</name>
+ <shortname>ID & T Radio</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985447A2115B9A61A5EEE0AE571F9966DF6A95DF298B4F607CEA2BF2827F95A286F</stationID>
+ <name>Keizerstad FM</name>
+ <shortname>Keizerstad FM</shortname>
+ <icon></icon>
+ <frequency>105.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985F18BA3D544BB3D813B314A1F7703E837D27799C4F68317C96A0358220A973C2A</stationID>
+ <name>Kink FM</name>
+ <shortname>Kink FM</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498539081681DBCEE89A3636D182E28305307564B2DBFD58132976B2E4A5D17E2622</stationID>
+ <name>Noordzee FM</name>
+ <shortname>Noordzee FM</shortname>
+ <icon></icon>
+ <frequency>95.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449850FC68CC6172EB16F4392D69971F75A774911F84FA67894B393BE63C4E3589849</stationID>
+ <name>Radio 10 FM</name>
+ <shortname>Radio 10 FM</shortname>
+ <icon></icon>
+ <frequency>94.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985A34E5706EEDC0CC9180CA53F43F7866CB76E035B1A5134411EA02CED4F426DFC</stationID>
+ <name>Radio 192</name>
+ <shortname>Radio 192</shortname>
+ <icon></icon>
+ <frequency>105.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449855FA099C9E14388129F9C940E934839566C5A0FD14A37EC666E9ECADD5127502A</stationID>
+ <name>Radio 538</name>
+ <shortname>Radio 538</shortname>
+ <icon></icon>
+ <frequency>90.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498505860AB44FD9A3D5787AA61E5C6F425D84D1A32B4A936F20BAB3EF9751AAC3FE</stationID>
+ <name>Radio Veronica</name>
+ <shortname>Radio Veronica</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107714498509243336100EB61E54FA185B4FB56C27681CC649D904EE6FF0404959D929DC78</stationID>
+ <name>Sky Radio</name>
+ <shortname>Sky Radio</shortname>
+ <icon></icon>
+ <frequency>90.0</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771449853935B4E9B872F37054BEC52C10B0991F033AAA03F4F773775FC75866EA8D33B4</stationID>
+ <name>Yorin FM</name>
+ <shortname>Yorin FM</shortname>
+ <icon></icon>
+ <frequency>93.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985DCED2185201BE3B713E3F1B1D98D6CB144AA23A931B874A6E2FDB94547355EAE</stationID>
+ <name>Radio France</name>
+ <shortname>Radio France</shortname>
+ <icon></icon>
+ <frequency>102.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077144985B951356B9F2629426EB5D67C1342E20903F0CD24588A06AA8D6E4380E796E9F4</stationID>
+ <name>2e Kamerlijn</name>
+ <shortname>2e Kamerlijn</shortname>
+ <icon></icon>
+ <frequency>107.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/netherlands/enschede-cable.krp b/kradio3/presets/netherlands/enschede-cable.krp
new file mode 100644
index 0000000..03fbac0
--- /dev/null
+++ b/kradio3/presets/netherlands/enschede-cable.krp
@@ -0,0 +1,372 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-1.0beta3b</creator>
+ <maintainer>Julius Schwartzenberg</maintainer>
+ <changed>2006-07-07T11:51:41</changed>
+ <country>Netherlands</country>
+ <city>Enschede</city>
+ <media>cable</media>
+ <comments>Based on:
+http://www.home.nl/abonnee/televisie/basis/frequenties/?regio=38 with extra
+channels Uradio (only availlable on the University campus) and 86.5 (station
+probably used by shops)</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1152199157B7678C794F5EB09383E1EA520AD99EACE5AFEF4B6905B908F8DC69A14B4450E2</stationID>
+ <name>Radio 1</name>
+ <shortname>Radio 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.5269</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1152202574DB6696630082850649CC59F558DF0A9FED78940FFB30A8A92294A26ED59D87B4</stationID>
+ <name>Radio 2</name>
+ <shortname>Radio 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.8269</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1152202460D21CCA38DF8999D5DE1C5BC9ED4D693426FD52B6D800592FBA98B2E0C3E9B772</stationID>
+ <name>Radio 3 FM</name>
+ <shortname>Radio 3 FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.127</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1152202635DE0427C9295A113640BF67CDE74BF0FDC2314BFEB79DF78F8D250CA62A5B5C20</stationID>
+ <name>Radio 4</name>
+ <shortname>Radio 4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.427</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1152202519A08607712E47FAE2D1A5B6501642754BCA216B64188F9E68882EF0BCD76E9760</stationID>
+ <name>747 AM</name>
+ <shortname>747 AM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.752</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>115226567285B26C12A28657BC86F0CCEEE2E15237A606D85A891E710E659A2BA3AEA10426</stationID>
+ <name>Q-Music</name>
+ <shortname>Q-Music</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.7016</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1152202620F4586341A8D35AB0EBE1043C6EE0F3A7131F1BEBCF78BE6DD8CCC295DA2910B7</stationID>
+ <name>Radio 10 Gold</name>
+ <shortname>Radio 10 Gold</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.0266</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11522025337759EBFA7E2AFECE417F4F30157A0B1E05E9FD945075C5B011FC516C1B023B05</stationID>
+ <name>Radio 538</name>
+ <shortname>Radio 538</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.827</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1152265699686B8FE7C9FFF51074610C1D02AE189F00D13A14F00A7E4BF632F0F184D7058A</stationID>
+ <name>Sky Radio</name>
+ <shortname>Sky Radio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.502</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1152968320E100CD997432D7D5C78BB454EC4752E2DF53958A0AA46B44744513BA8384E579</stationID>
+ <name>Radio Veronica</name>
+ <shortname>Radio Veronica</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1152265669E5FDB6DB8CD6A786CCE1FFD5FE8F20DD11B47262AACFAC8FFA7846649BF7145A</stationID>
+ <name>CAZ!</name>
+ <shortname>CAZ!</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.3515</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1152265682CE6F85D14B7AE03B1D9985D18EA6637C671DBAA34161AFA7135023AB6CE15DF0</stationID>
+ <name>Radio Oost</name>
+ <shortname>Radio Oost</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.9519</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1152202259AE2B3B1C0A21CC7B1D0E3CA90BA65392AB8248451FBDA1E7324B7C7630539B8E</stationID>
+ <name>Hot Radio</name>
+ <shortname>Hot Radio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.903</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1152968118E41493B1E0D7BE4B9DCFD52D13CEAD133EC7763072DE08F1DBBB5948DBA38D99</stationID>
+ <name>Twickelstad FM Plus</name>
+ <shortname>Twickelstad FM Plus</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11522022510BF1A957A46E3F63D60EC297634F2244284AD9E0C103F29BE1F1A5CCA2B7543B</stationID>
+ <name>Enschede FM</name>
+ <shortname>Enschede FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.127</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1152202223CC6DAC7C4EECD149B3BB1E7C6B612F6983ABAB26A096C333364C2CD536DF2183</stationID>
+ <name>RTL FM</name>
+ <shortname>RTL FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.3767</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11522024690C5D0CD3E2982E28B18BB3B2725E753CC1CD152079EB518575C9DC38C156EE51</stationID>
+ <name>SLAM!FM</name>
+ <shortname>SLAM!FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.577</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11522658255153EFFBF68450257EC034ABC02CEFD01C6143DC70104CE82EE599BA3A577052</stationID>
+ <name>Kink FM</name>
+ <shortname>Kink FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.8514</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11522656900537917BBC56DA72B88AB4154E549D5AAA5C3802E0A31A76128A3B7140AEBDA4</stationID>
+ <name>Classic FM</name>
+ <shortname>Classic FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.4521</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11522656890FAFC16CC6CA64E6EFB146104CC972E933E6F5C9F76621A9312EA3F0B650C05A</stationID>
+ <name>De Concertzender</name>
+ <shortname>De Concertzender</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.7521</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11521991771A10977C3A997ABA70DFCDE4EC40AA3686AB1A988D1DE390B4C57C75D3EE553D</stationID>
+ <name>Radio Rosita</name>
+ <shortname>Radio Rosita</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.952</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1152202612F0C9F8D751D486E7F34C0673823B0E2FF0439DA51ED083381D4865A852278451</stationID>
+ <name>Arrow Rock Radio</name>
+ <shortname>Arrow Rock Radio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.7264</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1152202443604016BB567CFC862642664B9EFC5D7C2572E392DCA359B9CB35EE449E49FCB1</stationID>
+ <name>Arrow Jazz FM</name>
+ <shortname>Arrow Jazz FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.6016</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11522022280BACCD8D91C3ABDBF6819F2622AA93FECA279CBB0E8F91A9BB0807455DD5EA0D</stationID>
+ <name>BNR Nieuws Radio</name>
+ <shortname>BNR Nieuws Radio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.6268</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11522025670004A49EC9D1DECD78D584409211B9436713E170D28C3C592C4E085E9B866742</stationID>
+ <name>Juize FM</name>
+ <shortname>Juize FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.0768</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1152202441207095F627EB3775E16E09991154B1B477C1F658B6DC561D23B028B5B47897A5</stationID>
+ <name>FunX</name>
+ <shortname>FunX</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.7515</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1152202586041ED93C1EA7AAECE30FA0949ACC03C78F8070F32DC6D754F1CF7FD5D009B003</stationID>
+ <name>Radio Moonlight</name>
+ <shortname>Radio Moonlight</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.527</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11522656747D866E00864285AE916B1873BA4B99FB6E769C95D61DF367DC2E3BF410D1586E</stationID>
+ <name>WDR 2</name>
+ <shortname>WDR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.6517</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1152265696A48262DF66FCF1CDEE2F929AD9CBE7E2B32D391703ED872FE0E9B24A898BBA11</stationID>
+ <name>WDR 3</name>
+ <shortname>WDR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.827</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1152199142555F797F161DD8004742B1D7F4ED2D41C3A6A867750991951945C3D41346669B</stationID>
+ <name>WDR 4</name>
+ <shortname>WDR 4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.0265</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11521991531019E228B03F64463E2A350F7B3093829EA2C7C373B880975DC4FE9BD8187E11</stationID>
+ <name>NDR 1</name>
+ <shortname>NDR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.9518</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1152265680F5162437A569BE08481907694CAFDFD328CBFDB5E79E825382958819B57E4EC4</stationID>
+ <name>NDR Kultur (NDR 3)</name>
+ <shortname>NDR Kultur (NDR 3)</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.2268</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>115226585687AA59BD279D07859002BB94D5B0967247E56A9E56EC48D2FA13735BBDFF5ABD</stationID>
+ <name>VRT Radio 1</name>
+ <shortname>VRT Radio 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.852</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>115226585367155B54957B80C7B185E870E577BEE4EE77C8DE0FBC4CB08C4E8C3843BF6FE3</stationID>
+ <name>Klara (VRT Radio 3)</name>
+ <shortname>Klara (VRT Radio 3)</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.7271</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1152265678B3A76171FEBCF9626639224BE9F5606E621F3A36610E93420D59090E3AC0AF9C</stationID>
+ <name>BBC World Service</name>
+ <shortname>BBC World Service</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.3518</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11522656753C6C7C65E3EB7E20EDE8129D9BA6AF21341C053B9D3A98E9F85FC6060E83C231</stationID>
+ <name>BBC 3</name>
+ <shortname>BBC 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.9267</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11522657083C4CA68A51E05E1B767603639B6712D02FBCF37AE4950EFA500CC2AA0664E05A</stationID>
+ <name>F.I.P.</name>
+ <shortname>F.I.P.</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.653</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11522022554CB8AF81A8A2FD11327F4EA370B2CE6CBA61092EC6DFD7C9D29BE4895669A8BB</stationID>
+ <name>Uradio</name>
+ <shortname>Uradio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.028</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1152265823C90EAA1C6F15E5ECF350720FAAAA1EA79733114CB973256B150F45FA614471AC</stationID>
+ <name>86.5</name>
+ <shortname>86.5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>86.5263</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
diff --git a/kradio3/presets/netherlands/groningen.krp b/kradio3/presets/netherlands/groningen.krp
new file mode 100644
index 0000000..2052754
--- /dev/null
+++ b/kradio3/presets/netherlands/groningen.krp
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Dennis Grofsmid &lt;d.k.grofsmid@student.rug.nl&gt;</maintainer>
+ <changed>2004-10-09T14:32:50</changed>
+ <country>Netherlands</country>
+ <city>Groningen</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1116455444AAC217B8081A1A4A18A334865EBB865305244B5D0E49F47CB7C863C4E817FC1E</stationID>
+ <name>Radio 1</name>
+ <shortname>Radio 1</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554447987B0265831CD72CF2E4E184CE3D99A91A29C4705200618B6711FEACA6A13DC</stationID>
+ <name>Radio 2</name>
+ <shortname>Radio 2</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544462C3960C6DB7542A2AE806B798882C3963201039DD1BE8E2E526F3ADC6BBC388</stationID>
+ <name>Radio 3 FM</name>
+ <shortname>Radio 3 FM</shortname>
+ <icon></icon>
+ <frequency>98.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554440F61400C90A732F00BDBAE91A0B2B18B4F9A604E002E0C7E7AAC3C1772E4F5BB</stationID>
+ <name>Radio 4</name>
+ <shortname>Radio 4</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544491C4B1BC10AE92BEB9D55EDB698CA57EECF0CC53006AE6D0C16BF9772D5D6D4C</stationID>
+ <name>Noordzee 100.7 FM</name>
+ <shortname>Noordzee 100.7 FM</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544459E6BE695243A6FC4493EC25D8715C9E1552E5FD16C92418926BAA89D8DC7296</stationID>
+ <name>Radio 10 Gold</name>
+ <shortname>Radio 10 Gold</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444406BADC1ED7F69F3361E49B5BB52BBA76E4A76B21D7851144D7CD81B944B40A5</stationID>
+ <name>Radio 538</name>
+ <shortname>Radio 538</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544464A5E7A01B61C2C2AF4E155ED2914C9D5949DD125990F671B5203B257705726E</stationID>
+ <name>Sky Radio</name>
+ <shortname>Sky Radio</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444D83BB5C128198AB1D0020AE88625A08F761BE5E89517D8B56FA63D2C641B78BE</stationID>
+ <name>Radio Veronica</name>
+ <shortname>Radio Veronica</shortname>
+ <icon></icon>
+ <frequency>87.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444B47BE79C14B2FC795BC163D49F1087B61EDBA3C117EB87A9A11F13685D7DC433</stationID>
+ <name>Yorin FM</name>
+ <shortname>Yorin FM</shortname>
+ <icon></icon>
+ <frequency>94</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444BB35A56607E28ECD64CB5AD52E09683903E41F30A911F353ECF7BA90DA85E077</stationID>
+ <name>Radio Noord</name>
+ <shortname>Radio Noord</shortname>
+ <icon></icon>
+ <frequency>90.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444AEE987116890E1CE3C83B338261904A441D2D7F81390D3EB62DF2BD67D730D1E</stationID>
+ <name>OOG Radio</name>
+ <shortname>OOG Radio</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444F33572796A2E20428891C8325E4D423EF5D5E86FE93D08BB360AB846978BC554</stationID>
+ <name>RTL FM</name>
+ <shortname>RTL FM</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544411F18A7EAC619DC7CC63D1C51B9CEA84AA542B6C97747769E801FC0F4176D36E</stationID>
+ <name>ID en T Radio</name>
+ <shortname>ID en T Radio</shortname>
+ <icon></icon>
+ <frequency>91.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544456F735CC2314E98E8C7B5A4F82054EE166AB2555F6819AB9D92F7710E8950147</stationID>
+ <name>Kink FM</name>
+ <shortname>Kink FM</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444BF23634B258585BCF2CDC8047F229667693AEC8265CA7CECA285C7484DF88FF2</stationID>
+ <name>Classic FM</name>
+ <shortname>Classic FM</shortname>
+ <icon></icon>
+ <frequency>88.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444E08FC2803862952A64405DF9FB4CAA755A2AF89E8150A60F19AF98B6BC3B1423</stationID>
+ <name>Colorful Radio</name>
+ <shortname>Colorful Radio</shortname>
+ <icon></icon>
+ <frequency>0</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444E7C4DBA268E0ADBFD8316BB0684820A01774BF9F814B6AC1803CF47029C76EF1</stationID>
+ <name>Arrow Rock Radio</name>
+ <shortname>Arrow Rock Radio</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444767369511E68ACD3121555108FD93B60382615DD66A7C733243C8C6ED4EC9977</stationID>
+ <name>Radio Continu</name>
+ <shortname>Radio Continu</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554440FBA1F15CCCAA5F780329275212614321E32087657CC3DEA925FBFFF60C1DD9E</stationID>
+ <name>Rebecca Radio</name>
+ <shortname>Rebecca Radio</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544426070095702D5A7615EC923A14B8D7E9ADB80AFA6F4A9289C12292A0DD2A8107</stationID>
+ <name>F.I.P.</name>
+ <shortname>F.I.P.</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/netherlands/ijhorst.krp b/kradio3/presets/netherlands/ijhorst.krp
new file mode 100644
index 0000000..d40cec2
--- /dev/null
+++ b/kradio3/presets/netherlands/ijhorst.krp
@@ -0,0 +1,254 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Martijn Rowaan</maintainer>
+ <changed>2004-05-01T20:16:57</changed>
+ <country>The Netherlands</country>
+ <city>IJhorst (gemeente Staphorst, omgeving van Meppel / Zwolle)</city>
+ <media>Pinnacle PCTV Pro</media>
+ <comments>Have Fun</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10912905608676D2DAE22562B9E3BBBD1D633DA3FD31509D50582E370B833A5803B541890D</stationID>
+ <name>radio 2</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560EDA49516B65920FAE052DF2AFADA8E8252A01280EF6D3D5D92FDFA2888A9E4D1</stationID>
+ <name>radio zus</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>91.12</frequency>
+ <volumepreset>0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905602DC6424D07182587AFAB6DA688F9755BE73832BF357699B164870B7AACB6747C</stationID>
+ <name>s</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>92.56</frequency>
+ <volumepreset>0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905607EAF62815D2F7E218EFDD4FC966247774D4E512A5ECBADF0B3E1827412520710</stationID>
+ <name>d</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>93</frequency>
+ <volumepreset>0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905602970C5467183949724692B9905AE9F1188D5F880B16788F50462202467221011</stationID>
+ <name>yorin FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>93.25</frequency>
+ <volumepreset>0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056046463B1D18E4EF2F2ADC6D2260629515F672F45A15B0EC5C0ECC8159BC852D6E</stationID>
+ <name>bla</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>93.81</frequency>
+ <volumepreset>0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560EF982C9ED2322088EA8571D5385B20D3217DC422054D94D6E60A2B579BE0B632</stationID>
+ <name>muzak</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.19</frequency>
+ <volumepreset>0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056014CFB8B6E6F92A1ADE3CCE7C4E37C05D4AE8179B71FBFDF3525BCEE24A710F21</stationID>
+ <name>muzik</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.55</frequency>
+ <volumepreset>0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560955A00EA30ADEE722973DD9E4D5703728FABC21FF6DF32FE1A0B504F0577C1DE</stationID>
+ <name>zut</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>96</frequency>
+ <volumepreset>0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905605F456F9FC6DF2F6A5AC5D6A6B05588B7B558BB2F1511A71C80769DDBAAFF8AF6</stationID>
+ <name>radio2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>96.31</frequency>
+ <volumepreset>0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560250F64B3692BEFF53289DDD073AC2ADC626948AD810C84240553701FB042DAC5</stationID>
+ <name>538</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>96.56</frequency>
+ <volumepreset>0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560EC50A8B5C6E4F6C76543BC55E1FF00ABB9BEB34B61FA3A46859E268DB13D1C54</stationID>
+ <name>4?</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>96.81</frequency>
+ <volumepreset>0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560A2FD688CB249A1BF5D7F8C9CFCC16CC83DD0ECBC1CE913FB18F88FDB7B03AC9D</stationID>
+ <name>engels</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>97.19</frequency>
+ <volumepreset>0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056076271A85E9A4A5F4B79F3BEE5A1A5BED07DDCC7D04E545E21C1F6F5AB81484D0</stationID>
+ <name>NDR1 Niedersachsen</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>97.69</frequency>
+ <volumepreset>0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560FAE239ED6B9A132E025D6B264BF3082D19F15C561B6E6C6B3621A53CCE44C3EE</stationID>
+ <name>Duuts</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905607555716A207F388990436320CE87F6B736ED92E2879FFD082F8FDCA09AE845E7</stationID>
+ <name>bugged</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>98.88</frequency>
+ <volumepreset>0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560F8E9C66E1358E47B25AFDF1350E71227DCE2F6FD78EA365C3916FBE598F78630</stationID>
+ <name>onandonandon</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>100.6</frequency>
+ <volumepreset>0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560C453ADFAA4094380DA999EB06713020E33B32D303B4BB9F4781709206A7C2AEA</stationID>
+ <name>Fryslan</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>101.19</frequency>
+ <volumepreset>0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560B68DF0483834681349CF6E44B973F6C5429029A480DCC3E311987664D8DD2FCB</stationID>
+ <name>giveitallup</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>101.56</frequency>
+ <volumepreset>0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560D91A0E306DE943BD462E9F74B5EE86BC025B3576FE5303220273EBDDB10AC802</stationID>
+ <name>Classic FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>101.81</frequency>
+ <volumepreset>0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056017721AB1AAEBA6FB2C0B3615CF7701955B48BE05907C7B03018658A3F76C4F5D</stationID>
+ <name>Gregoriaans?</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>102.12</frequency>
+ <volumepreset>0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905605C4CEB8603140A83E34C267DD15A7EF00DD1A33B2E893ADBD399136EF75DA77A</stationID>
+ <name>Akfrika?</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>103.38</frequency>
+ <volumepreset>0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560DE91E512D66BF92120EEC15CADD685AC68EAA725F92EEB38E3439AB880A2E653</stationID>
+ <name>Voetbaltoen</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>104</frequency>
+ <volumepreset>0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905608199F32040E24247058CC07EDD70665E74374969F3C0AE79A06C547771C43A9D</stationID>
+ <name>Housetoen</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>104.31</frequency>
+ <volumepreset>0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905608AF338B17A71C88B6012AD4E39466CDD346F11B827AA14700F6218199273690E</stationID>
+ <name>Ned zo</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>104.69</frequency>
+ <volumepreset>0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056097AB623B4F4A790BA62EAFCF05C9464F739745FA5D039ABC4BDF7EEE01FDAA37</stationID>
+ <name>Huilende man toen</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>104.94</frequency>
+ <volumepreset>0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560B3225B74329DBD798BD6FD77CC4E6DD20C9EB5F367010BE9285113BAAAD1ED70</stationID>
+ <name>Ookvoetbaltoen wel op de belg</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>105.75</frequency>
+ <volumepreset>0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560EEF95D75E529676F2FF6A8B412D8EDF3B25132AD99A20798E024B590E40F24C1</stationID>
+ <name>Nederlandstalig in ieder geval</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>106.44</frequency>
+ <volumepreset>0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905601EF68D2513B0401E227FC84650410C056FED90FF70DF9026EC788BDBCE493181</stationID>
+ <name>GoldenOldNederlandstalig</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>107.75</frequency>
+ <volumepreset>0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560B545735ED19A882D1BD9F84748484B394AE1EF28BFF4EFD154289306B73D71FC</stationID>
+ <name>Wastoenmooi</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>86.62</frequency>
+ <volumepreset>0.01</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/netherlands/rotterdam-cable.krp b/kradio3/presets/netherlands/rotterdam-cable.krp
new file mode 100644
index 0000000..cf71886
--- /dev/null
+++ b/kradio3/presets/netherlands/rotterdam-cable.krp
@@ -0,0 +1,302 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Marco Calf, &lt;kumbakara@planet.nl&gt;</maintainer>
+ <changed>2003-05-03T23:44:26</changed>
+ <country>Netherlands</country>
+ <city>Rotterdam</city>
+ <media>UPC Cable</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1069418142E03A13BB1C31619299108998FC0F39347389F4F60C401740900067334E3A9ABB</stationID>
+ <name>Radio 1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1069418165094A4FBAA41D79CB8A54489BF99DF3CA065C990E9718EBE0DA65645F1B8FDE41</stationID>
+ <name>Radio 2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10694182001956396C8F14BF1CCC6594CFF27203BD9DF6510DE86C90F76FC3794A2F5FD37E</stationID>
+ <name>Radio 3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10694182097DED12253DD768CB313D445E0D30773DD8872D3AC313D7E823946411B6A8EC24</stationID>
+ <name>Radio 4</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10694182598E89EC10A5E6C356FE882AFB9ED50A87B7EE091AF7CB8CEA67FE5FF947029885</stationID>
+ <name>747 AM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1069418274509867662FE750F6B33F833E3E5707AD8877CB53084483CF36397239FF2457E6</stationID>
+ <name>VRT Radio 1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1069418292E86463229377AF8A822B714EF05F32A2219E958D4E0463344BBB6C978375AF32</stationID>
+ <name>VRT Radio 2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106941830726E8D2FD61226DB8E1965B85D8AB947D15289ECCF6962DE31B3C0D91D1D35569</stationID>
+ <name>Radio Rijnmond</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1069418322A71B7BF8B106B54573373E9FAE37B722CB385C3EA46AAADB7B6B398381A553CB</stationID>
+ <name>Lokale Omroep</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1069418337951D7DD838C1242587E649E400805C996E55577CD83214259F5679FEC46FCF3A</stationID>
+ <name>Radio West</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106941835158D08F9334291FDE60DB56B8A13A1724443D15C7AC4A00A624F1EF72BB6E60E6</stationID>
+ <name>BBC 2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1069418369DC4BA576C236CC394DD971FAFFCD78EFF4E5CC8588893B17E5D0FC63B4C384C4</stationID>
+ <name>BBC 3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1069418385F389C2BB8CA66948318147DBFB98D10A417DFF17BC78C8147879100B14313375</stationID>
+ <name>WDR 3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10694184021567FDE5F5F8C40A6F84E070B572AF258E88459DD96A3F7DDB55D4272BD32A23</stationID>
+ <name>WDR 4</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10694184266B2237B0E2A48CC2E2D184B217D27E36AAAAC6781A03873BB05AEA135AC82BAD</stationID>
+ <name>Arrow Classic Rock</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106941844339E85258040613BE15011EA0D30C2B3EA8E78084BEA3A962D95211A9E41C235D</stationID>
+ <name>France C.</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10694184581A52BAB25534C80FEB7E63A4CC8820083F08E99B505E4E0715B3471878137630</stationID>
+ <name>BBC World Service</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106941847563A513CF41A667AF9699339F8C4943E7E0AB2B87632D0077934DA402D4E79EA1</stationID>
+ <name>Business Nieuws Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10694184893E0BD98E025C24F48BCC42E3E47643CBD5501CF184E8262ECFC08F20A41346D2</stationID>
+ <name>Classic FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1069418503D0267C867C2BD7ADBFE88C2039F1494E6381A0800E8A55F404B83894185515CA</stationID>
+ <name>City FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1069418518486D0733E9970ED9E7C35DD7EF47139E489B5ECA8FD0209AE91BE438DCC63F50</stationID>
+ <name>Colorful Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1069418539F05BE8D861B369D83BAEB69763B58228AADB47C9B4BB909E7D5BA7B564379B5A</stationID>
+ <name>Concertzender</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10694185499E8A5D554A85D2D71AFB3195043A368CFDE13E4DF727F7788563B4FB123AC541</stationID>
+ <name>Country FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10694185638FCD799A0D7B69A9593C1B7D429B80D40D2CD107856CBCA76974C7498E837252</stationID>
+ <name>ID &amp; T Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1069418585F1BC74C15C1B84EC11036AA2E915F6437700355CCEB98C749514D427005D985B</stationID>
+ <name>Kink FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106941860680D8AFF5FAE1ED26D1B8CCE7E2D0BF48343247AC9629ECEF7F67C5EEBADBA1A8</stationID>
+ <name>Noordzee FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1069418629A876ED5DCB0EC71568109D3FF85E605BAFA3B0AE0A79BE6178C7EBF0296B6D8B</stationID>
+ <name>Radio 10 FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1069418647B35D0B86EE816FD62DD9C832ED97E6DA0ABD71C19786DEED4E4F111B93E77A54</stationID>
+ <name>Radio 192</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106941868187A8A27C3861813A48267E3BED213123E62C16DF3F95B59F31986B94A210FEDA</stationID>
+ <name>Radio 538</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1069418704F32330BDE76DF88C723D7C727089DE86DC4E2C6823FD7951B47F78A608959866</stationID>
+ <name>Radio Nationaal</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106941871903E1CA91128853EC792CB360627D653C85712FE0D7A21943701154A9FDE0C2A4</stationID>
+ <name>Sky Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1069418731781E162CADABDC3883B33F178A263990610FF006D4A916C7D0C08E1636FE0DC6</stationID>
+ <name>Yorin FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10694187447CCAFF5BDD21A4602E3F1740E20ED02C3297DDAB004CFF3AC5362F100E08F0DB</stationID>
+ <name>S.R.S.</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10694187593FA39379C2C2A27642F08841DA4EF1E8C2C10203C6F3E5FA1D27902F7AD84F11</stationID>
+ <name>2de Kamerlijn</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10694187787C5158BCC7D6FEFC121C95B8A4613C7D1A1EDE375278BC75F0E68BED357E3233</stationID>
+ <name>Radio Amigo</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1069418792E7E44450A11CF15EDDAFF7398177B43ED7060F774AD778A5C7C290224D091C33</stationID>
+ <name>Radio Amor</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.4</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/netherlands/tegelen-cable.krp b/kradio3/presets/netherlands/tegelen-cable.krp
new file mode 100644
index 0000000..ee0352f
--- /dev/null
+++ b/kradio3/presets/netherlands/tegelen-cable.krp
@@ -0,0 +1,326 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Twan vdn Hombergh, &lt;unknown&gt;</maintainer>
+ <changed>2003-06-29T09:56:30</changed>
+ <country>Netherlands</country>
+ <city>Tegelen</city>
+ <media>Essent Cable</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385408A5BAAD063196D70FA2397E518CD9A4C3DC91B14FDEF80E846DEBC7E588FA39CE</stationID>
+ <name>Radio 1</name>
+ <shortname>Radio 1</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408FCAABE6FC4224E262CD27456D4E376F1C923F1EADE70E1F3EDC4F0FAA5D68D62</stationID>
+ <name>Radio 2</name>
+ <shortname>Radio 2</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854085431FEE4BC50781EB68142CAE5D7429B922121747727F85D556D8C4352E348B9</stationID>
+ <name>Radio 3</name>
+ <shortname>Radio 3</shortname>
+ <icon></icon>
+ <frequency>101.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854087977B123A2AD94928B29515578731B36282F06B29D21F474951AA681ED60FD4D</stationID>
+ <name>Radio 4</name>
+ <shortname>Radio 4</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408A4DA708E6793182B6A34D0BC6929FC2F2CA1E10922561D83A4824A656D047FCB</stationID>
+ <name>747 AM</name>
+ <shortname>747 AM</shortname>
+ <icon></icon>
+ <frequency>102.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408E582BF3C647F38EDE1483ACEC22F5C9617C6C5EF7CC002E3C45E7643E4AE7876</stationID>
+ <name>Yorin FM</name>
+ <shortname>Yorin FM</shortname>
+ <icon></icon>
+ <frequency>107.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540821F43CB2E52F4F6A983FB09B5D5A02C0814FC8C67A8092A61053CB33B96B204E</stationID>
+ <name>Radio 538</name>
+ <shortname>Radio 538</shortname>
+ <icon></icon>
+ <frequency>96.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408744694CB41244E00DF04551E168964496668F771B62E01E2673DD93B4ECD37CC</stationID>
+ <name>Sky Radio</name>
+ <shortname>Sky Radio</shortname>
+ <icon></icon>
+ <frequency>98.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408BBE819C39417B749271B7941FB26EF269EA36ECA4A06907DE8B49E64A970C3C1</stationID>
+ <name>Noordzee FM</name>
+ <shortname>Nordzee FM</shortname>
+ <icon></icon>
+ <frequency>97.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854087D849B3EE137543800B3A2B1084D346DF5AC1CE96773BCE879026A6E20C5A769</stationID>
+ <name>Radio 10 FM</name>
+ <shortname>Radio 10</shortname>
+ <icon></icon>
+ <frequency>88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408D70D64425E624049FA275E98C73F7C56D1643C8328AF1DE2E044822C07F59971</stationID>
+ <name>Radio 192</name>
+ <shortname>Radio 192</shortname>
+ <icon></icon>
+ <frequency>95.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408FA178E7C04AB147521AA5356B726835A65B79247F70D742A0B14E7B5152E0CF8</stationID>
+ <name>Veronica FM</name>
+ <shortname>Veronica FM</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540852EB9E101A3079591AE330A90C826C7E61676850B9556B4A9B6F2DD88DB444F3</stationID>
+ <name>L1 Radio</name>
+ <shortname>L1 Radio</shortname>
+ <icon></icon>
+ <frequency>89.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540811EEF523642D19A2F43391822902226A0E0DC52DA3084A610E9EA30A964D87F1</stationID>
+ <name>Radio Limburg</name>
+ <shortname>Radio Limburg</shortname>
+ <icon></icon>
+ <frequency>88.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408C165ED7F57FAFCA08900AAE07A71D086A0F1178084ECC2D5ECA48B1E8E0B4F11</stationID>
+ <name>Lokaal</name>
+ <shortname>Lokaal</shortname>
+ <icon></icon>
+ <frequency>87.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408C30C9490158698E289BF26535CDC2F953A6FED733A20ADBA8F003D2ED90EF474</stationID>
+ <name>ID and T Radio</name>
+ <shortname>ID and T Radio</shortname>
+ <icon></icon>
+ <frequency>97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408ABB2490461A2773292155FCE12EC93951F344DBC1940455383F82635E689E5E6</stationID>
+ <name>XFM</name>
+ <shortname>XFM</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854081B6451E16866CF7E7A1BED50C1F06518071BD1BFBC97545C5E872531F9C187ED</stationID>
+ <name>Country FM</name>
+ <shortname>Country FM</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540877265C3A786C1A8E54E9AB9D45BAEF5EE72A3BCA15258741958E5EA87C597537</stationID>
+ <name>Kink FM</name>
+ <shortname>Kink FM</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408A3660FF628B66EA9C495C805984B05B77556AFC505A224DCB91A51EFF6F03549</stationID>
+ <name>Classic FM</name>
+ <shortname>Classic FM</shortname>
+ <icon></icon>
+ <frequency>89</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540815C7C61770AC0D347754E0363D53894523AA5018F5EA0C302C42335A0FA760B7</stationID>
+ <name>Concert Zender</name>
+ <shortname>Concert Zender</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408FC9DE740F4477D1AC8E984CBAAA9D7841FFCA97EC5494675A7BA5784AC7E94DC</stationID>
+ <name>Colorful Radio</name>
+ <shortname>Colorful Radio</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408F192CB57E306483C8C997E2AA503CC0C4487BF06968E1336B34193E5578CCA22</stationID>
+ <name>Radio Nationaal</name>
+ <shortname>Radio Nationaal</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540867FDDF8FB59656AEA41BDC28A64C2A52C784F4ACF1DD8AE34D20FDD8B04EEA39</stationID>
+ <name>Business Nieuws Radio</name>
+ <shortname>Business Nieuws Radio</shortname>
+ <icon></icon>
+ <frequency>97.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540840356EB1EFDA5DC1CE3ECD838CE7E16907194CC09B1CF93DF9F5F31D70F8BEE3</stationID>
+ <name>Arrow Classic Rock</name>
+ <shortname>Arrow Classic Rock</shortname>
+ <icon></icon>
+ <frequency>93.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408EA8ECF1A5F05FA0F3654D78792A769B38C443ECEB2A3A5CE76942A3527F2D6C9</stationID>
+ <name>VRT Radio 1</name>
+ <shortname>VRT Radio 1</shortname>
+ <icon></icon>
+ <frequency>103.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854083B873F632BBB351905FA02668906EDB2B2D302886B386F1E52B9E9C8E4ED45F8</stationID>
+ <name>VRT Klara</name>
+ <shortname>VRT Klara</shortname>
+ <icon></icon>
+ <frequency>104.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408C0D90EE39C28F00697B00943AE688B300D5E808E51B62740A76711BFAD403330</stationID>
+ <name>BBC World Service</name>
+ <shortname>BBC World Service</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854087140DDA3CD3C68EC8B83AB9A7E0C8E7F683A72A2D795567924F12AD2B687EDCD</stationID>
+ <name>Studio Brussel</name>
+ <shortname>Studio Brussel</shortname>
+ <icon></icon>
+ <frequency>99.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854082F61A158826371EB9B73523A1C5EF687C7308A5620416CD20FA9C66452A92006</stationID>
+ <name>VRT Radio 2</name>
+ <shortname>VRT Radio 2</shortname>
+ <icon></icon>
+ <frequency>65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408E82BF00DEE779EF14A101639D0A43C8EB8FCD75F15DAD7F618E904BFF9359816</stationID>
+ <name>Radio 192</name>
+ <shortname>Radio 192</shortname>
+ <icon></icon>
+ <frequency>95.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854081A320548DBB40B1A96357C6693AD328DC78C127F9B5D998E4CC64D4812F4775D</stationID>
+ <name>Radio 538</name>
+ <shortname>Radio 538</shortname>
+ <icon></icon>
+ <frequency>96.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854084405594F744EF274F9FDFF6470869E818CEB8707B95C1608A6BE7748F14A2E82</stationID>
+ <name>Radio Nationaal</name>
+ <shortname>Radio Nationaal</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408968DB7763ABBF4FE00BC73F903076CBD6A5824E5D5D75B2A1B92C682A91587E5</stationID>
+ <name>Sky Radio</name>
+ <shortname>Sky Radio</shortname>
+ <icon></icon>
+ <frequency>98.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408DF77C7DC02B739414860D9752E879712674C3C49B4B19C278B678EE096D3EA88</stationID>
+ <name>Eins Live</name>
+ <shortname>Eins Live</shortname>
+ <icon></icon>
+ <frequency>105.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540883A833832A2244EACFA7ED569E6DB48616F0F42181DF8C11BC1B34515B2D1BB6</stationID>
+ <name>WDR 2 Radio</name>
+ <shortname>WDR 2 Radio</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408C0647D17E72BB269EC0842FDE76A46E95AA7960DFFA27984849CCD075C25D1FF</stationID>
+ <name>WDR 3 Radio</name>
+ <shortname>WDR 3 Radio</shortname>
+ <icon></icon>
+ <frequency>106.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408601E6EB694AEE690620440D3D21BA4077FA5ACCA2F50D3370AD32D0F66BFD414</stationID>
+ <name>WDR 4 Radio</name>
+ <shortname>WDR 4 Radio</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385408F7FEF6EAC41959AA37F0DDC6D7498B409973CE17E239FA0A5D445DE51D987334</stationID>
+ <name>RTBF 2</name>
+ <shortname>RTBF 2</shortname>
+ <icon></icon>
+ <frequency>92.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/netherlands/the-hague-antenna.krp b/kradio3/presets/netherlands/the-hague-antenna.krp
new file mode 100644
index 0000000..8690f6e
--- /dev/null
+++ b/kradio3/presets/netherlands/the-hague-antenna.krp
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Gerard Blank, &lt;blank878@planet.nl&gt;</maintainer>
+ <changed>2005-05-31T03:42:44</changed>
+ <country>Netherlands</country>
+ <city>The Hague</city>
+ <media>Antenne</media>
+ <comments>updated radio list</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>112388344789B7581A6E02F7E4D2EC928557F314B41EB1323542D43773B9F8EE12D67771B4</stationID>
+ <name>Radio 1</name>
+ <shortname>Radio 1</shortname>
+ <icon></icon>
+ <frequency>98.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447BDBD796D664809A36B20762E1C5561C2598FE6A5EE174A14CA0E580185A51792</stationID>
+ <name>Radio 2</name>
+ <shortname>Radio 2</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447DC79673CE2535F5067B60F85DD5FE5F3BEB487B9C432CF287AA93345B77BDFA8</stationID>
+ <name>Radio 3</name>
+ <shortname>Radio 3</shortname>
+ <icon></icon>
+ <frequency>96.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>112388344741C0AD0AEFC7F77C0711CD8DDC8CDFEF105CBBE7F207FBF40BB279E2CF6CD4B4</stationID>
+ <name>Radio 4</name>
+ <shortname>Radio 4</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447213C07846A0763F4398C68EE8C6C1478ECF508E3F36C9B1CD52F3DAA08CBC07E</stationID>
+ <name>Hofstad Radio</name>
+ <shortname>Hofstad Radio</shortname>
+ <icon></icon>
+ <frequency>99.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>112388344757B812ED68B78E7A2B0DDF0F23E8FF9A159DB414BDEBA99355FC378929453A1B</stationID>
+ <name>Radio Rijnmond</name>
+ <shortname>Radio Rijnmond</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447DAC19D3A5D70235ED161E835EE87C65DA010F8ECAC4777CF5AE40CB94463082E</stationID>
+ <name>Radio West</name>
+ <shortname>Radio West</shortname>
+ <icon></icon>
+ <frequency>89.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11238834471EA69026515173C71176353A7C0A6372B462FD1760A1BAB7474C0F593F6C44C2</stationID>
+ <name>Sky Radio</name>
+ <shortname>Sky Radio</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11238834476A0FED9C034F8548007594932B9D8DBD08ADE9FEEDF16702DDE9BA9CC6783FAF</stationID>
+ <name>Noordzee FM</name>
+ <shortname>Noordzee FM</shortname>
+ <icon></icon>
+ <frequency>100.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11238834478E0CA8AD9CCD77D3F4B753DE934DDFD3DFF5B617A8D580E5CA06027F00B99022</stationID>
+ <name>Yorin FM</name>
+ <shortname>Yorin FM</shortname>
+ <icon></icon>
+ <frequency>103.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>112388344741440E0162120BBB5C72D8D8FC816B4FD06B2C46B1358DFFE74C907D0D6829F4</stationID>
+ <name>Radio Amor</name>
+ <shortname>Radio Amor</shortname>
+ <icon></icon>
+ <frequency>89.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447BFB6CACEE92E4F08933F4A60F37EC4CEA772CECF47CF00BF05DF4B504608BB64</stationID>
+ <name>RTL FM</name>
+ <shortname>RTL FM</shortname>
+ <icon></icon>
+ <frequency>104.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447191FA269FA92DA0140C730D2E492036F20380DC24BF6EBCC8CDB4108DF9BF784</stationID>
+ <name>Radio 538</name>
+ <shortname>Radio 538</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11238834474EBF4E60203A49716810A6518F939209F4B3067AD557FC9EB04CD229E3CE99C3</stationID>
+ <name>SLAM!FM</name>
+ <shortname>SLAM!FM</shortname>
+ <icon></icon>
+ <frequency>88.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11238834472755761D89ADEB83541BF08F542077E5BF8DFA1A3FB40B2AF434B1465BB44C9F</stationID>
+ <name>Arrow Classic Jazz FM</name>
+ <shortname>Arrow Classic Jazz FM</shortname>
+ <icon></icon>
+ <frequency>90.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447BFAB0267D755AC23DC2FBE281B85C7042F01A559BB6A9143A63D478B7BDA5340</stationID>
+ <name>Fresh Radio</name>
+ <shortname>Fresh Radio</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447DAB65F1F32E75F0CFCB35FD5C7FCDC69F978DDB4604E7A4C80FEAB8521114A56</stationID>
+ <name>Business Radio</name>
+ <shortname>Business Radio</shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11238834474E13E739D08391B3F6404757EF865A1C35141297E5AF852DB3F3F9480DA52E3C</stationID>
+ <name>2e Kamerlijn</name>
+ <shortname>2e Kamerlijn</shortname>
+ <icon></icon>
+ <frequency>87.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11238834476661E04AC01553336A8541D6DC80A547078A6D2525D44E959B9C946F781ECB59</stationID>
+ <name>Radio Veronica</name>
+ <shortname>Radio Veronica</shortname>
+ <icon></icon>
+ <frequency>103.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1123883447070EC7620EFE171012139389B93E07C2EEDAFCA17D5B276243E6B3D92EFABD07</stationID>
+ <name>City FM</name>
+ <shortname>City FM</shortname>
+ <icon></icon>
+ <frequency>97.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/new-zealand/Makefile.am b/kradio3/presets/new-zealand/Makefile.am
new file mode 100644
index 0000000..45ad022
--- /dev/null
+++ b/kradio3/presets/new-zealand/Makefile.am
@@ -0,0 +1,10 @@
+SUBDIRS =
+EXTRA_DIST = "auckland-antenna.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/new-zealand/"
+ $(INSTALL_DATA) "$(srcdir)/auckland-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/new-zealand/auckland-antenna.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/new-zealand/auckland-antenna.krp"
diff --git a/kradio3/presets/new-zealand/auckland-antenna.krp b/kradio3/presets/new-zealand/auckland-antenna.krp
new file mode 100644
index 0000000..a9fbe32
--- /dev/null
+++ b/kradio3/presets/new-zealand/auckland-antenna.krp
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Clinton Bedogni, &lt;kiwiclint@hotmail.com&gt;</maintainer>
+ <changed>2003-09-14T17:05:00</changed>
+ <country>New Zealand</country>
+ <city>Auckland</city>
+ <media>FM Broadcast</media>
+ <comments>Commercial &amp; Free To Air FM Radio</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106343649954E631432EB387F3ADA2846EB36ECF5E0311EA50C540376A9A454B35892AC7AE</stationID>
+ <name>Mai FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>88.6</frequency>
+ <volumepreset>0.75</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10634364990C63B54D0E5EC0B5472026A8D4EBF45DC7549115CE10A704CF60F40A2C3BF111</stationID>
+ <name>1ZB Talkback</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>89.4015</frequency>
+ <volumepreset>0.75</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063436499271F33A6589E7AF662500984004ECB62E28CD77DF9F60292F30C53D2D8F447E6</stationID>
+ <name>The Rock FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>90.2</frequency>
+ <volumepreset>0.75</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063436499722DA34DAFDC4BB3BBF88165C41B7FAE6FD4BCB7ADF6FF1B93BB580ACD780072</stationID>
+ <name>Gold FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>91.0016</frequency>
+ <volumepreset>0.75</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106343649979C36E7992D5CE5AB580127E298DF5424993C82191F83CFF7D51A11B270410D0</stationID>
+ <name>Classic Hits</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>91.8</frequency>
+ <volumepreset>0.75</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10634364993E9A9ED7FD85E4FA743AC93EE866AEF7DE330388F64954BF6E7974F5A5EAB45A</stationID>
+ <name>Radio NZ</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>0.75</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063436499E06D805CFF732F658D64FBA3F49DE9A9A45FA44D361E069CB97919A7040CE94B</stationID>
+ <name>Solid Gold</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>93.4</frequency>
+ <volumepreset>0.75</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063436499C81DE8C5605196E8B584A9449B270F30057687ADF11D67F3D34D960E61047A30</stationID>
+ <name>Channel Z</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>93.8</frequency>
+ <volumepreset>0.75</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063436499E59CD52BB38FAF54FDB1BB8677EE54E5242380D01E49A091949B0004826E92B5</stationID>
+ <name>The Edge FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>94.2</frequency>
+ <volumepreset>0.75</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10634364995E486FEB2236FF32D69642A49F38E75BE45AEBC7A7477AC32103D6A164F98E57</stationID>
+ <name>BFM Campus</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>95</frequency>
+ <volumepreset>0.75</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106343649907E9C018EEA6FD9A5EDCDC4A76AF3581FAD6DFE6F5FA5A94537FB55B245FC760</stationID>
+ <name>Classic Hits</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>97.4</frequency>
+ <volumepreset>0.75</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063436499DEAE046FBB2FE7D272939466EA9CFAAF2FBD6F6C3459574CAC364E6B4D15B967</stationID>
+ <name>Easy Listening iFM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>98.202</frequency>
+ <volumepreset>0.75</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10634364999EE498B79DCF5133871E7C65DA15B5E423077AC09FAF72CA1687A7B131BA8B06</stationID>
+ <name>Hauraki</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>99</frequency>
+ <volumepreset>0.75</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10634364993432ACCE9B5F65C71153ED3622B55A85EBC9D79CC4C4CE508D87CAAD45E3DF58</stationID>
+ <name>New FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>103.8</frequency>
+ <volumepreset>0.75</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063436499902D61489BB9F407EC538067AA878CB31B2C8B8FA19DEF5BAC045EC65FCA8FB9</stationID>
+ <name>Pacifica</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>0.75</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/norway/Makefile.am b/kradio3/presets/norway/Makefile.am
new file mode 100644
index 0000000..f7d6dfa
--- /dev/null
+++ b/kradio3/presets/norway/Makefile.am
@@ -0,0 +1,10 @@
+SUBDIRS =
+EXTRA_DIST = "oslo.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/norway/"
+ $(INSTALL_DATA) "$(srcdir)/oslo.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/norway/oslo.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/norway/oslo.krp"
diff --git a/kradio3/presets/norway/oslo.krp b/kradio3/presets/norway/oslo.krp
new file mode 100644
index 0000000..e78185f
--- /dev/null
+++ b/kradio3/presets/norway/oslo.krp
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-1.0beta3b</creator>
+ <maintainer>Øystein Olsen, &lt;oystein.olsen@astro.uio.no&gt;</maintainer>
+ <changed>2005-09-10T23:26:52</changed>
+ <country>Norway</country>
+ <city>Oslo</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>11263882806FE61FCAAAC676BFBFADD92A0FAFDE367BBD5C1FCF8F4FC3AD3899563123DD61</stationID>
+ <name>Kanal 24</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1126387786BD34FB0315FA660490BBA054800EE7EF75ECF8D614CF3B51C33A39BC78920C63</stationID>
+ <name>NRK Alltid Klassisk</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1126388696A11A3A23636447C1D3FEB6BCED06680D4660385639292AE570D956CB818F4750</stationID>
+ <name>NRK Alltid Nyheter</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1126387683CA7CD5321FADFAA9DF15783AAFAF4BE9FCD76B73F8058E4A8915355A1AE359DF</stationID>
+ <name>NRK P1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11263875448204D09F931CF9D810D389B0A91AEDFC5968340A1318672685F3BC5CD1EDA593</stationID>
+ <name>NRK P2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1126387737E0F238457B1DE894015CD64CE30DCF9F65CBC212B9C9C3EFEA2AD6004B0BF391</stationID>
+ <name>NRK Petre</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1126387980FB46F261EC2CA71D30B27B50BE525B2391E178597434F973D345EB770AF1CD06</stationID>
+ <name>Radio 1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11263883699140BF31AB1844766E77B41980E4142EA66B1B4D78C37A251BAE92678DD8C4E8</stationID>
+ <name>Radio Nova</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>112638790592E25C07BAFF8136003EE14115F225132626D808DE90DC4E0858CC46501C2609</stationID>
+ <name>Radio Oslo</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11263896676CDC3766731C7D48891822F3F21CBDCBA64735F88F1BBBAA0F0C55581FD6F86E</stationID>
+ <name>Radio Tango</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1126388162F867124396C7D5BF4F4FE93EACDA2D298EFB600B0E87E58D43CEFDF5A806F309</stationID>
+ <name>P4</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.3</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/poland/Makefile.am b/kradio3/presets/poland/Makefile.am
new file mode 100644
index 0000000..c08ea5c
--- /dev/null
+++ b/kradio3/presets/poland/Makefile.am
@@ -0,0 +1,30 @@
+SUBDIRS =
+EXTRA_DIST = "bialystock-antenna.krp" "elblang-antenna-fm.krp" "katowice.krp" "krakow-antenna.krp" "torun-cable.krp" "warsaw-antenna.2.krp" "warsaw-antenna.krp" "warsaw-cable2.krp" "warsaw.krp" "warsaw-upc_cable.krp" "warsaw-ursynow.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/poland/"
+ $(INSTALL_DATA) "$(srcdir)/warsaw-upc_cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/poland/warsaw-upc_cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/warsaw-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/poland/warsaw-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/bialystock-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/poland/bialystock-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/torun-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/poland/torun-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/elblang-antenna-fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/poland/elblang-antenna-fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/warsaw-ursynow.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/poland/warsaw-ursynow.krp"
+ $(INSTALL_DATA) "$(srcdir)/krakow-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/poland/krakow-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/katowice.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/poland/katowice.krp"
+ $(INSTALL_DATA) "$(srcdir)/warsaw-cable2.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/poland/warsaw-cable2.krp"
+ $(INSTALL_DATA) "$(srcdir)/warsaw-antenna.2.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/poland/warsaw-antenna.2.krp"
+ $(INSTALL_DATA) "$(srcdir)/warsaw.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/poland/warsaw.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/poland/warsaw-upc_cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/poland/warsaw-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/poland/bialystock-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/poland/torun-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/poland/elblang-antenna-fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/poland/warsaw-ursynow.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/poland/krakow-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/poland/katowice.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/poland/warsaw-cable2.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/poland/warsaw-antenna.2.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/poland/warsaw.krp"
diff --git a/kradio3/presets/poland/bialystock-antenna.krp b/kradio3/presets/poland/bialystock-antenna.krp
new file mode 100644
index 0000000..07d3f24
--- /dev/null
+++ b/kradio3/presets/poland/bialystock-antenna.krp
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="UTF8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Jacek &lt;januszjp@o2.pl&gt;</maintainer>
+ <changed>2003-05-21T18:36:45</changed>
+ <country>Poland</country>
+ <city>Białystok</city>
+ <media>antenna</media>
+ <comments>Prawie wszystkie do usłyszenie w Białymstoku pozdrawiam
+Jacek</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>011061048807D314D23DV27623XFGHW5D9E15D173A5GSSED4C57269DF04958AF19975805CBF9</stationID>
+ <name>AKADERA</name>
+ <shortname>Akadera</shortname>
+ <icon></icon>
+ <frequency>87.6264</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>021061048807D314D23DV27623XFGHW5D9E15D173A5GSSED4C57269DF04958AF19975805CBF9</stationID>
+ <name>WAWA</name>
+ <shortname>wawa</shortname>
+ <icon></icon>
+ <frequency>88.5514</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>031061048807D314D23DV27623XFGHW5D9E15D173A5GSSED4C57269DF04958AF19975805CBF9</stationID>
+ <name>Jard I</name>
+ <shortname>jard 1</shortname>
+ <icon></icon>
+ <frequency>89.201</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>041061048807D314D23DV27623XFGHW5D9E15D173A5GSSED4C57269DF04958AF19975805CBF9</stationID>
+ <name>ESKA</name>
+ <shortname>eska</shortname>
+ <icon></icon>
+ <frequency>90.545</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>051061048807D314D23DV27623XFGHW5D9E15D173A5GSSED4C57269DF04958AF19975805CBF9</stationID>
+ <name>Radio BIS</name>
+ <shortname>bis</shortname>
+ <icon></icon>
+ <frequency>91.0766</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>061061048807D314D23DV27623XFGHW5D9E15D173A5GSSED4C57269DF04958AF19975805CBF9</stationID>
+ <name>PR II</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>92.3017</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>071061048807D314D23DV27623XFGHW5D9E15D173A5GSSED4C57269DF04958AF19975805CBF9</stationID>
+ <name>PR III</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>95.9769</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>081061048807D314D23DV27623XFGHW5D9E15D173A5GSSED4C57269DF04958AF19975805CBF9</stationID>
+ <name>Bialystok</name>
+ <shortname>B-stok</shortname>
+ <icon></icon>
+ <frequency>99.4021</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>091061048807D314D23DV27623XFGHW5D9E15D173A5GSSED4C57269DF04958AF19975805CBF9</stationID>
+ <name>RMF FM</name>
+ <shortname>rmf</shortname>
+ <icon></icon>
+ <frequency>100.177</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>101061048807D314D23DV27623XFGHW5D9E15D173A5GSSED4C57269DF04958AF19975805CBF9</stationID>
+ <name>PLUS</name>
+ <shortname>plus</shortname>
+ <icon></icon>
+ <frequency>103.252</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111061048807D314D23DV27623XFGHW5D9E15D173A5GSSED4C57269DF04958AF19975805CBF9</stationID>
+ <name>Jard II</name>
+ <shortname>jard 2</shortname>
+ <icon></icon>
+ <frequency>103.827</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>121061048807D314D23DV27623XFGHW5D9E15D173A5GSSED4C57269DF04958AF19975805CBF9</stationID>
+ <name>Radio Maryja</name>
+ <shortname>Maryja</shortname>
+ <icon></icon>
+ <frequency>104.602</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>131061048807D314D23DV27623XFGHW5D9E15D173A5GSSED4C57269DF04958AF19975805CBF9</stationID>
+ <name>PR I</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>106.403</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>141061048807D314D23DV27623XFGHW5D9E15D173A5GSSED4C57269DF04958AF19975805CBF9</stationID>
+ <name>PR I</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>151061048807D314D23DV27623XFGHW5D9E15D173A5GSSED4C57269DF04958AF19975805CBF9</stationID>
+ <name>Zet</name>
+ <shortname>zet</shortname>
+ <icon></icon>
+ <frequency>107.278</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
diff --git a/kradio3/presets/poland/elblang-antenna-fm.krp b/kradio3/presets/poland/elblang-antenna-fm.krp
new file mode 100644
index 0000000..860b3c5
--- /dev/null
+++ b/kradio3/presets/poland/elblang-antenna-fm.krp
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Radoslaw PRL Wawrzyniak &lt;prlalfa@wp.pl&gt;</maintainer>
+ <changed>2003-04-30T17:01:52</changed>
+ <country>Poland</country>
+ <city>Elblag</city>
+ <media>FM Antenna</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385404D0D44AD0A0AFD3406A14EA60B208915CA56CA5874ED466F23EA85BE7FB7F6C63</stationID>
+ <name>Radio EL</name>
+ <shortname>Radio EL</shortname>
+ <icon></icon>
+ <frequency>92.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540469122026E9A6183BF3574D11DC23493725C5B8AD8E8F456CA4D147AAF67D5880</stationID>
+ <name>RMF FM</name>
+ <shortname>RMF FM</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385404A53C11FAD3AD1A80FB7AA1F2B4C56C92FC288779978D1665C31604BB47EBDB28</stationID>
+ <name>Trojka</name>
+ <shortname>Trojka</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854046434CC34CD1AAAA229306F5A032DB8E32F79E565D666C1C24C54D7DB8685177F</stationID>
+ <name>Polskie Radio PR1</name>
+ <shortname>Polskie Radio PR1</shortname>
+ <icon></icon>
+ <frequency>101.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854045EED78161897FED91CE2B28BDD01429FA5D27AE475FC6C27E969A70ADA59F880</stationID>
+ <name>Radio Plus</name>
+ <shortname>Radio Plus</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385404B2C1BCB2936B93D2B5750A7C15E31C54E0C46F960DE3399C4844127406EDC6F1</stationID>
+ <name>Radio Bis</name>
+ <shortname>Radio Bis</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385404B0E202326DD1CA4A67E808F0AC6DABAB225A7AC01B0B9E65BE5377022A0AD395</stationID>
+ <name>Radio Olsztyn</name>
+ <shortname>Radio Olsztyn</shortname>
+ <icon></icon>
+ <frequency>103.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540472D106F2D161F7FA21BB3D01BCF8EB99561592D7A0E9F1F7E3069C345B892A61</stationID>
+ <name>Radio Gdansk</name>
+ <shortname>Radio Gdansk</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540409DF38D056B43C2C61BBD001AE935A53DA441462DA0C0988A35F660DE749B619</stationID>
+ <name>Radio Maryja</name>
+ <shortname>Radio Maryja</shortname>
+ <icon></icon>
+ <frequency>104.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540424CDEB5B66BE93F088BEB5FA169E4AA3593119FCAD2812714E220830690E4E0C</stationID>
+ <name>Radio ZET</name>
+ <shortname>Radio ZET</shortname>
+ <icon></icon>
+ <frequency>105</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/poland/katowice.krp b/kradio3/presets/poland/katowice.krp
new file mode 100644
index 0000000..8cf4e01
--- /dev/null
+++ b/kradio3/presets/poland/katowice.krp
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Barca, &lt;sarnamarcin@o2.pl&gt;</maintainer>
+ <changed>2004-09-09T10:52:39</changed>
+ <country>poland</country>
+ <city>Katowice</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1095697872BBA803C49A13E8248BEA59AEE7B241A7AC35BDAC2A07159E8935A7768571ED15</stationID>
+ <name>Radio TokFM</name>
+ <shortname>TokFM</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>87.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1095697962016FBF883B757A23FDD3AD28778C46353A6FF8D656EA6AE8A7377F44AF09B63D</stationID>
+ <name>Radio Katowice</name>
+ <shortname>Katowice</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1094719872EA2412A37C582F0EE766611FB36914F824B944B872DDD8D42DF884F1682F485B</stationID>
+ <name>RMF FM</name>
+ <shortname>RMF FM</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>93</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1095697990DB89F838E5B480B6023336F88A88670804126D366D2D42B241FB499AE0EDC18F</stationID>
+ <name>Radio Zet</name>
+ <shortname>Zet</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1095698040CF98DFCCAFF2E5690ED9E44F33E5F9DA2A96FF5FE1D6B81D5BFAA6A578E3791B</stationID>
+ <name>Radio Maryja</name>
+ <shortname>Maryja</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10956981207850CC6E93BB5799DE6342A15BCBBC2F6EA512A458D1624CFF503292FB19F94A</stationID>
+ <name>Jedynka</name>
+ <shortname>Jedynka</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1094719793C323351FB798EF728B232148DC066B49C9E7C8CF11D7F9AC32CBFF70F79F25B0</stationID>
+ <name>Trójka</name>
+ <shortname>Trójka</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109569817873B0C0A37E18F984E4D9CF9E9A9F2C7B3A48D230ADDEABD4DF0CFB7D4F220B79</stationID>
+ <name>Radio Karolina</name>
+ <shortname>Karolina</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1094720563210A2A1BCA82A429BECEC40E1CC444660EE2B573EA7E032282B2B66E89A8B8A5</stationID>
+ <name>Radio BlueFM</name>
+ <shortname>BlueFM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109569822506C857816E13E27DEC856024B05151EB43DE1B656728CCA49EB2B9427D135846</stationID>
+ <name>Polskie Radio Bis</name>
+ <shortname>Bis</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109569825516562B261D7E9C26E0DCA51E196A1F79A8B0AA5978B7D2AD4003D354DA8FB186</stationID>
+ <name>Radio eM</name>
+ <shortname>eM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.6</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/poland/krakow-antenna.krp b/kradio3/presets/poland/krakow-antenna.krp
new file mode 100644
index 0000000..8316750
--- /dev/null
+++ b/kradio3/presets/poland/krakow-antenna.krp
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Marcin Wabik, mwabik@wp.pl</maintainer>
+ <changed>2003-05-23T09:45:32</changed>
+ <country>Poland</country>
+ <city>Krakow</city>
+ <media>antenna</media>
+ <comments>from http://www.t17.ds.pwr.wroc.pl/~wojtekd/</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633854049964B29CDF467D2DDCB32CBC58ABFC8002B65D27A4EBFB4AAFE211033DA27A64</stationID>
+ <name>RMF FM</name>
+ <shortname>RMF FM</shortname>
+ <icon></icon>
+ <frequency>96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385404E140CB122EC2AD4B4C919382E257E771A874425B95584141F2706021F07085A8</stationID>
+ <name>Radio Zet</name>
+ <shortname>Radio Zet</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385404B1269D7641D9EB032704AF8C0D4917AF16DF8912BBC9A0E973872B3977C3E59E</stationID>
+ <name>Trojka</name>
+ <shortname>Trojka</shortname>
+ <icon></icon>
+ <frequency>99.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385404E4063432118C81408740392F5A9902A7E27A38EE47C39094D4045FA7E11E7EAD</stationID>
+ <name>Radiostacja</name>
+ <shortname>Radiostacja</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385404C4B1D192BE465B429CFB66241ABA4B44AF50B3378722840FA27225649824070C</stationID>
+ <name>Radio Eska Krakow</name>
+ <shortname>Eska Krakow</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854041DDA21F805317FB852DD9C5320B69A161617A43A0C1855CD42D71EA7AE358902</stationID>
+ <name>Radio Wawa</name>
+ <shortname>Wawa</shortname>
+ <icon></icon>
+ <frequency>107</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540464CCF53BF548972B9656034841DDEDE67317DACB62AFD54A4FD13921B1E173DB</stationID>
+ <name>Radio Flash Malopolska</name>
+ <shortname>Flash Malopolska</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854044176B31171DF10B3D94335F792653014EF134C19ACFEE21CEB40A294302495BB</stationID>
+ <name>Radio Echo 103.8 FM</name>
+ <shortname>Echo</shortname>
+ <icon></icon>
+ <frequency>103.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854040B7192E5886F10FA59B7C208BF48DF42C96E78259088AF0711DF49D840ADD717</stationID>
+ <name>Radio Zak</name>
+ <shortname>Zak</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385404944CEF4002A347050FCCDE46A63898A1432B6A40519851A265C9DFBB1B3E650B</stationID>
+ <name>Radio Krakow</name>
+ <shortname>Krakow</shortname>
+ <icon></icon>
+ <frequency>101.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854048859D7D569BB76585B48C52D5D6D716393699F40095B0162FCD203614DC129BB</stationID>
+ <name>Radio Plus Krakow</name>
+ <shortname>Plus</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385404126CE112965DEBE3C29DBE2EB275A7B9B1ACBCB62B4E6A5118F15881C27723BC</stationID>
+ <name>Radio Wanda</name>
+ <shortname>Wanda</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385404B6DA5327F490F61BB3FB6AE24CDFFCDEE6126F02FB396C917D3F1920CE731BF3</stationID>
+ <name>Radio Tok Fm</name>
+ <shortname>Tok Fm</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385404E02C8F72B8898FA1BF4CB433C1350CE61413E3EABD67267D7EA1E81414D034A6</stationID>
+ <name>Radio Region</name>
+ <shortname>Region</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385404C563CEFAACB913768F0CF7A25068A175ED56B0CA83039EE0DCCC84D92E76020F</stationID>
+ <name>Radio Opera FM</name>
+ <shortname>Opera FM</shortname>
+ <icon></icon>
+ <frequency>87.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854046515470A89C389EF0B97EE161CA3A7740585081550F86629AC69829F64F2130D</stationID>
+ <name>Polskie Radio Program 1</name>
+ <shortname>PR1</shortname>
+ <icon></icon>
+ <frequency>104.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385404822F9E6A1B4B1284D81A6888371EC49BB0E090CDA134817E6E961731C4D1499C</stationID>
+ <name>Polskie Radio Program 2</name>
+ <shortname>PR2</shortname>
+ <icon></icon>
+ <frequency>89.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385404C217A251B9049DB00C6F64BFC78DB0EFD3728B76C67F4F079AB1521AC921688F</stationID>
+ <name>Radio Maryja</name>
+ <shortname>Maryja</shortname>
+ <icon></icon>
+ <frequency>90.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540437AFE58BD7560BE0A0DF49CBFE18301300314206FBD357C5F6E5FD864F6F9EE4</stationID>
+ <name>Jazz Radio</name>
+ <shortname>Jazz Radio</shortname>
+ <icon></icon>
+ <frequency>101</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540402710C2391F9BD598C008906A2FE94004FEF336365F84067E4845C76010E4797</stationID>
+ <name>Radio Maks Bochnia</name>
+ <shortname>Maks Bochnia</shortname>
+ <icon></icon>
+ <frequency>106.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540485443A9D7D143079A5A00A24E295BA4007494C6B8E850D2670C0615D354A83E6</stationID>
+ <name>Radio Plus Tarnow</name>
+ <shortname>Plus Tarnow</shortname>
+ <icon></icon>
+ <frequency>103.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/poland/torun-cable.krp b/kradio3/presets/poland/torun-cable.krp
new file mode 100644
index 0000000..70fac67
--- /dev/null
+++ b/kradio3/presets/poland/torun-cable.krp
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>dalton, &lt;dalton@utumno.pl&gt;</maintainer>
+ <changed>2005-05-02T12:01:20</changed>
+ <country>Poland</country>
+ <city>Torun</city>
+ <media>Telewizja Kablowa Torun</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>11150352438D7A6C6EF69700B5FA32EA4C19F8F8DBCF42B23313868087222E8F1F3522A5E3</stationID>
+ <name>Radio Brawo</name>
+ <shortname>Brawo</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1115035244B5EB809499C5FDF3DB52570A29C27373E381EC3EF77A4106CF182C0B6998DCBC</stationID>
+ <name>Radio Dla Ciebie</name>
+ <shortname>Dla Ciebie</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1115035245F4DA65B67C634C3363DFD9953B7CF866B900F3B9F5D495B4A171761760838FE1</stationID>
+ <name>Radio Merkury</name>
+ <shortname>Merkury</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1115035246B6F2543ECAFDBF2FE35969EBA5F53BEF89DFD11A75EDE3748817BDD3A67AADA7</stationID>
+ <name>Polskie Radio I</name>
+ <shortname>Jedynka</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.6002</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1115035247ED7D29B01F7071B27F370F06F0AFCEEE413FFAD23D6EEF6314B54C5B5DA38F8A</stationID>
+ <name>Radio Maryja</name>
+ <shortname>Maryja</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.2003</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1115035248E30D4FF4830A8E5D5F7B17281CD42638216ECAF7D25C4B432B0135C77EDFF75E</stationID>
+ <name>Radio ESKA</name>
+ <shortname>Eska</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>111503524902AAE539391FF6234CE6FFB8E2122ADEAD4D1EEF9D597F3917160B323ECCCC0D</stationID>
+ <name>Radio Zet</name>
+ <shortname>Zet</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1115035252C0BC92D0DF03F9753754B3BFC8B62891865ADE4FDCB8C37FF7D4FAA43C3C73BF</stationID>
+ <name>Radio PiK</name>
+ <shortname>PiK</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1115035253C660930F3265DB4D08CCB2C7D9226227AACEC7AF8F6BF6B1CA3D76D520F35E2E</stationID>
+ <name>Polskie Radio III</name>
+ <shortname>Trojka</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11150352567D6D4A684E266E15461E7AF50293CDBFCE55B5A0501AA03B525CDD247F9BD9A0</stationID>
+ <name>RMF FM</name>
+ <shortname>RMF</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11150352582235BFE2E15B0E239B75501DFA43FC5A39D589132C7BF5E908040F13897ED99E</stationID>
+ <name>Polskie Radio II</name>
+ <shortname>Dwojka</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11150352593972C4DCD04C48CE45FB5B663A6D249A1DC551122469E9B7A889DD27A20C37D3</stationID>
+ <name>Radio BIS</name>
+ <shortname>BIS</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1115035259B266CC3A0171B9C9C7660CC1EBA9E378DDEB174F0686A7B404EA476A1518846C</stationID>
+ <name>Gold FM - Radio Torun</name>
+ <shortname>GoldFM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11150352623F97E60D3155ED189AA316F5B993A3122A8878258C5E5D86AA3CB4EAA2E68CB9</stationID>
+ <name>Classik Radio</name>
+ <shortname>Classik Radio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.7</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
diff --git a/kradio3/presets/poland/warsaw-antenna.2.krp b/kradio3/presets/poland/warsaw-antenna.2.krp
new file mode 100644
index 0000000..602a28d
--- /dev/null
+++ b/kradio3/presets/poland/warsaw-antenna.2.krp
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Lukasz Stolowski, &lt;stolowski@wp.pl&gt;</maintainer>
+ <changed>2004-02-24T00:31:02</changed>
+ <country>Poland</country>
+ <city>Warsaw</city>
+ <media>antenna</media>
+ <comments>Radio in Warsaw</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1077580308C17DB04D51A9862A394BD672729D39D998DE1A17F0D124E06B74B229D523DDFB</stationID>
+ <name>Radio Maryja</name>
+ <shortname>Maryja</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107757946842370FB1C71C26B862A50AC134F4A0F464FF797CD5C58E09BC9D89B9AC3F1507</stationID>
+ <name>Radio Wawa</name>
+ <shortname>Wawa</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10775795209B7CBE081CDECC803990A956492C93FE5BFCC86522BA90647F0C11FA7F866E31</stationID>
+ <name>RMF FM</name>
+ <shortname>RMF FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077579548E086F493D00A36C5452C235EA7AE0E4DE12775AD3CEB039BC1415FDEE60308A3</stationID>
+ <name>Polskie Radio Program 1</name>
+ <shortname>PR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077579588AA25A65B3089815BF1D0B601762E35FDB331F57B066B2362A168543E07D3F5D1</stationID>
+ <name>Radio Plus Warszawa</name>
+ <shortname>Plus</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077579629EA69DB3C510BE3B23AC8CBC4BA890B350372A7C56A7EF2967E26C8CE5EC4D089</stationID>
+ <name>Rock Radio Mazowsze</name>
+ <shortname>Rock Radio Mazowsze</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077579042EFD3DF148BB2081B343BBAD42481779754D26F64EE7B807BE7D39837D2D88A51</stationID>
+ <name>Radio Józef</name>
+ <shortname>Józef</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077579702D98FF8D79D4DAF25D1F7869368FAA54FD6755711A737D286A3CE7C182EBE1520</stationID>
+ <name>TOK FM</name>
+ <shortname>TOK FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10775797274F577DF51BD7A672E6001B6F08DB83D4F9FB6C1B637AFC2B3F5F610E002CAEC2</stationID>
+ <name>Radio Classic Warszawa</name>
+ <shortname>Classic</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10775797576BE44E5BEC7170C989BE311A3A3B7570DFFB61205C9F627D4B5B9C642CB54D40</stationID>
+ <name>Polskie Radio Program 3</name>
+ <shortname>PR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077579049D924F3B7A26316E77E3F9831E18C84B8E02F545703643F4BE88776F41F30A166</stationID>
+ <name>Radio Pogoda</name>
+ <shortname>Pogoda</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077579819EC8E929DF4861ED465B86EF923810EB52F41DC3EAD4C40D692942DB059DD29D9</stationID>
+ <name>Radio Dla Ciebie</name>
+ <shortname>RDC</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077579850413D179765A4CE51E9CE00BAE478B83190E6D773ADD8BABF2AA25C23B8C925C9</stationID>
+ <name>Radiostacja</name>
+ <shortname>Radiostacja</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107757987457B962278959C43B32E64816CC9329FE38C7BFA8A2EFCE75743183408E39F361</stationID>
+ <name>Radio PiN</name>
+ <shortname>PiN</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107757989376C2FEA45AC47BD1F69E1E4468A25825FC5F8F3367CCA019DE3D0AD971EE56AA</stationID>
+ <name>Polskie Radio Program 2</name>
+ <shortname>PR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107757995546DDC14B74421FF2FD7E7E5669B002E6901C31B8ED48EC59BAD0D26BDCEA4836</stationID>
+ <name>Radio Kolor</name>
+ <shortname>Kolor</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077580001D7FADA4E18472BE1BDCF1906D004F36BAC6091DC33A139649A8877586C0C1C40</stationID>
+ <name>Radio Klasyka FM</name>
+ <shortname>Klasyka</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077580027113DB79B68827B1C5740ED6361A4D788C99424F99FC998D33DAF13C6C6BBDB44</stationID>
+ <name>Radio Gold FM</name>
+ <shortname>Gold</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10775790553516A240EC3FBCC1491A615A8F064CB4D508245906FFF865690C5ED076068C84</stationID>
+ <name>Polskie Radio BIS</name>
+ <shortname>BIS</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10775800895EA306F6222A5B9C437591A0B2E24D5E6FA40236938AD1A0E13E4047BE07432B</stationID>
+ <name>Radio Eska Warszawa</name>
+ <shortname>Eska</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10775801211348EFD7137B9C3AB2F864BB51414D8218716C96BC24D4FD67D7914B9775E25B</stationID>
+ <name>Radio Warszawa Praga</name>
+ <shortname>Praga</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10775801582B63BEF01EDCF599878C492D0E43471D2FC19DD9F4CCE37A4EAA8EC82F702731</stationID>
+ <name>Radio Jazz</name>
+ <shortname>Jazz</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10775801800F65C2232242FDC46280AD0363E9A479AC3B358C348B7A2EE436513C02B9BB7F</stationID>
+ <name>Radio ZET</name>
+ <shortname>ZET</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077578865D67692C408D31BA37BD156F5D58B0AEFD189F8071AD231955CD5F5F5C6775FE8</stationID>
+ <name>94 FM</name>
+ <shortname>94 FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/poland/warsaw-antenna.krp b/kradio3/presets/poland/warsaw-antenna.krp
new file mode 100644
index 0000000..2ee3f05
--- /dev/null
+++ b/kradio3/presets/poland/warsaw-antenna.krp
@@ -0,0 +1,213 @@
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Cezary Biele, &lt;yemu@gazeta.pl&gt;</maintainer>
+ <changed>2003-08-22T15:27:32</changed>
+ <country>Poland</country>
+ <city>Warsaw</city>
+ <media>FM Antenna</media>
+ <comments>Contains merged Data</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1061558692ECACB44122F72672B8E1E841F47C896FCD48392D6C3910B0C5D5F12FF6B1782B</stationID>
+ <name>Radio Maryja</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10615639636CE0BF62185E7FE087A0FAE9B934381D785172F49B9EB9B10AF149CD61BD0595</stationID>
+ <name>Radio WAWa</name>
+ <shortname>WAWa</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10615639842A0A27B53C8782684D11D5D1A3248FC5BFCA9D92D48C1E35C917CEF603A839A5</stationID>
+ <name>Radio RMF FM</name>
+ <shortname>RMF FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1061564027B0BF878592150D8E041FCCB1532F86D2899A04A35DCF2D2630D376B7F08EFF99</stationID>
+ <name>Polskie Radio Program 1</name>
+ <shortname>Plus</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1061564107FE11581AFC70243DECA7B0C1FBC43FB529E7BE5802C5882D1072338FE31C4115</stationID>
+ <name>Radio Plus Warszawa</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10615641373FAB8FD7B7EE56038AE9D14CC70A0735F3294C4B8B17523D2BC284A38F5AABAC</stationID>
+ <name>Radio 94</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10615641679D5D7EA892D0376FA3DF050A13174152E5794C72CF99E6CEA522376554BC9981</stationID>
+ <name>Rock Radio Mazowsze</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10615641762D396571B63226CC9D6F111E3910D85019108269610462773CDCF5FEBDD98E4C</stationID>
+ <name>Radio Józef</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10615642791DAF286B7AA2D22BEE081AE2ED17DAA96A1D4A3FA2972E02A26868C180EFE36A</stationID>
+ <name>Radio TOK FM</name>
+ <shortname>TOK FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106156429747D04276133508145A073B910E278A51CF7CD5CDAF2099BEF173545D0B15DA4F</stationID>
+ <name>Radio Zdrowie</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10615580715A58FBE778BC41EAA9FD101002E164402D0471161C9E7F1B89C8A5A51B2306CE</stationID>
+ <name>Poslkie Radio Trojka</name>
+ <shortname>Trójka</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1061564309FE76DF69D3CA50BEE40DD73866EE21B144231A17C5A16EDB437BA4370FCAC358</stationID>
+ <name>Radio Pogoda</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106156433859CEB67E7AD8AA90355E7B37691B2C44B20352ACB6485EA2BEE0DF3B4DD5E3D8</stationID>
+ <name>Radio dla Ciebie</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1061558071A094F210B4A0A6108CC6E6D2BBAF4E55CA7FE4788D41A5749BBC3DA48B5BD449</stationID>
+ <name>Radiostacja</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1061558237FDFCC00F17CCEF9807B53AE68FDC803D17890BA4C552721A4A2CA09CDC503C84</stationID>
+ <name>Radio PiN 102 FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1061564372EBD101B788FFAEC609A73612BE70B9BFFF484DEE112AEB9BC9D20E49DBB70458</stationID>
+ <name>Polskie Radio Program 2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1061564387AD21386F6C50C04E1D6D06C31021DFBB03DA70307DB303A7B3F8937EE6541BD7</stationID>
+ <name>Radio Niepokalanów</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106156440327E1594F93C5E83DE0F15830B6AA6F1B3DA3D5688C91E759051007A94B8E72CB</stationID>
+ <name>Radio Kolor</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1061564437375C92B783E41FC105B1CBAC7A89BD21A7FEDA10A5C8CB53C3749BF07F68B93D</stationID>
+ <name>Radio 103,7 Klasyka FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106156446285577C4B66028F056DBA4F5C396BEE164D50E809B3CE43C97EE5E4F08E96390E</stationID>
+ <name>Radio Gold FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10615644769B61708FC5A8B3F9CA74874C9F36850962150995F8BC9C72C1E30BF04D811E3E</stationID>
+ <name>Poslkie Radio Bis</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10615644911DCD6CD8187285F3D0620B1E95A0988233588F4E62604912316854D653DECCC5</stationID>
+ <name>Radio Eska</name>
+ <shortname>Eska</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1061564505219FE9E3719815021494F007172F3D0C174FD4777DC413F5F4242D3347B3A7DB</stationID>
+ <name>Radio Warszawa Praga</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10615645229519C0BC8954687570B9A8A1F2E699EF8FF3D07F0E2F9E088FD851A6A3FE031E</stationID>
+ <name>Radio Jazz</name>
+ <shortname>Jazz</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10615645324581489CB4A7D796A58886C7B9789B2F5AD8B5D03983C32AA46B150B65AE8658</stationID>
+ <name>Radio Zet</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.5</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/poland/warsaw-cable2.krp b/kradio3/presets/poland/warsaw-cable2.krp
new file mode 100644
index 0000000..0c67f58
--- /dev/null
+++ b/kradio3/presets/poland/warsaw-cable2.krp
@@ -0,0 +1,267 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-1.0beta2</creator>
+ <maintainer>Andrzej Kozowski, &lt;andrzejk@astercity.net&gt;</maintainer>
+ <changed>2005-09-26T10:00:33</changed>
+ <country>Poland</country>
+ <city>Warsaw</city>
+ <media>acn-cable</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>10882367949E141653A913CB36758DB44B057F1F721973D60140613A462FE796D39AE19D07</stationID>
+ <name>Radio Praga</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1088236795F8BA895456FD91F0E9C84A55C875EA1DB44DCA133ADBED22002AE76175A3FB0F</stationID>
+ <name>RFI</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108823679660B8717A0D9504AAAD6A7A118712E44ADA198A200AF9AFDBAC34B1E51C1DCDA6</stationID>
+ <name>Voice of America-Europe</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10882367971EBA4B1B9F1F17EEFC1C249AF259256AC8CE59D9F47558CAD65E64E3FD3B070E</stationID>
+ <name>PR Program 1</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10882367989B4222EFA9C623EC5346C5D20B6F1009C46E2D94E2C67C371232922320B95567</stationID>
+ <name>Radio Klasyka</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1088236800717183ADECBB291798BFE7FE61CDF20242FE95AE4924F3CF74DE96ABA773523D</stationID>
+ <name>Radio 94</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10882368016422C4669E45BB316E2E14ECFF85FD0036DFE7FC07C942DE7F7A45F3613E8DAC</stationID>
+ <name>Radio PIN</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108823680254D3ABD4C9906E0973EB6BDA73CDF58FB5AD12C56371B8AC6F388A4ED41C858B</stationID>
+ <name>Radio Plus</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1088236803155E11A571EECA8D92022418C92D6D38D8EE27CECC05BBBB418A2131C959E1C1</stationID>
+ <name>Radio TOK FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1088236805DD37389D670DADEFFB7240BC4A69F7C84A6C2588580B6E3AB31FF649E769A667</stationID>
+ <name>Radio Bis</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1088236807B6C0C7C97F64E92C4D123041A55B0428C32D1852D6789FC8E3B5A1612B61B4E6</stationID>
+ <name>Radio Kolor</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108823680898DEA21775955A004F56CB50BF4C3D9BB0CA877C3E8F93D97A759E40D7C1B56D</stationID>
+ <name>Radio Jazz</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108823681007D704F546AB38CA5AA9532575752BA95388BB777BA9F1C1A5100EF1C9AA56BD</stationID>
+ <name>Radio Polonia</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1088236812CCED5AB431EBC6CB0950BB44398F71408BA41B76161F5224F462F85FBB3EBC11</stationID>
+ <name>Radio Dla Ciebie</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10882368130AE4904E3D3947859F8F722C2FFFF90957BF1AEFC13B6C7B06AB36D79FDD452F</stationID>
+ <name>Deutsche Welle</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1088236814091D61464F50B5EBB55C6E93212666024A0108312DECFA0523C7503752293BB8</stationID>
+ <name>Radio Zet</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10882368151DB9335B8924407D71F93FD9CFA7EBA7E0FD45ABF879F8EB34916EA04A43D500</stationID>
+ <name>Radiostacja</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10882368164A55D250EB85BA5DDB4344AE68D4F7767474A7ABED6BA87AF61A9940ADE7B321</stationID>
+ <name>Radio Eska</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10882368173ED6181F313289BD62D64E39788AB84FD8781A01F0D6B1A36FF7E8258659BF4E</stationID>
+ <name>France Inter</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1088236818F98AEF0C8A67C0A142086FAE09B7ADFEEA10DEA2F70BF9BD85C281DFDF43A65F</stationID>
+ <name>Radio Maryja</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1088236820C1AB035EEB576C5E772194080D9EC1936C2A7CDE21E088FF0AEC7812D3FCE244</stationID>
+ <name>PR Program 3 - Tr�ka</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10882368214B3264157198E7446A7F71EA45082CAB2153667E648F65742C6967A95F8015BB</stationID>
+ <name>Radio Pogoda</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108823682322199A3A26A0CC4935DF81456C046D5473FA11B89A799AB92536C1524B7FE4D9</stationID>
+ <name>PR Program 2</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108823682553AF90DFFFF097021348B489A54CDB9D1F7BB805D3AD198548C191CAA2887471</stationID>
+ <name>Radio Wawa</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1088236826B5045EFE6D19CF7734EEBECD537991E1DC794F74E65F829F0E63685F35B6D368</stationID>
+ <name>Rock Radio Mazowsze</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1088236827609012B23D30D728130D5E5F2A9BA6CDEAF60706AF730DD5928EB8FFDE12B513</stationID>
+ <name>GOLD FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108823682836EE3ADFEAF48AF461E59527A21A785EA3870A64C9AA502FBB2B4DD591B0C693</stationID>
+ <name>RMF FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10882368293B2D77D3A5531133073C7E2C398807669F3797B9A47F69A6B11E8C768FE44DDE</stationID>
+ <name>RMF Classic</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.8</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/poland/warsaw-upc_cable.krp b/kradio3/presets/poland/warsaw-upc_cable.krp
new file mode 100644
index 0000000..c23ce7d
--- /dev/null
+++ b/kradio3/presets/poland/warsaw-upc_cable.krp
@@ -0,0 +1,205 @@
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Cezary Biele, &lt;yemu@gazeta.pl&gt;</maintainer>
+ <changed>2003-08-22T15:27:32</changed>
+ <country>Poland</country>
+ <city>Warsaw</city>
+ <media>UPC Cable Network</media>
+ <comments>Contains merged Data</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1061558692ECACB44122F72672B8E1E841F47C896FCD48392D6C3910B0C5D5F12FF6B1782B</stationID>
+ <name>Polskie Radio Bis</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10615639636CE0BF62185E7FE087A0FAE9B934381D785172F49B9EB9B10AF149CD61BD0595</stationID>
+ <name>Radio dla Ciebie</name>
+ <shortname>WAWa</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10615644911DCD6CD8187285F3D0620B1E95A0988233588F4E62604912316854D653DECCC5</stationID>
+ <name>Radio Eska</name>
+ <shortname>Eska</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1061564027B0BF878592150D8E041FCCB1532F86D2899A04A35DCF2D2630D376B7F08EFF99</stationID>
+ <name>Polskie Radio Program 1</name>
+ <shortname>Plus</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1061564372EBD101B788FFAEC609A73612BE70B9BFFF484DEE112AEB9BC9D20E49DBB70458</stationID>
+ <name>Polskie Radio Program 2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10615580715A58FBE778BC41EAA9FD101002E164402D0471161C9E7F1B89C8A5A51B2306CE</stationID>
+ <name>Polskie Radio Trojka</name>
+ <shortname>Trójka</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1061888427B728DD91F0D4CFCA3AF21303912A4361FD298219F233677A84A8F8C34409A507</stationID>
+ <name>Jam FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10615645229519C0BC8954687570B9A8A1F2E699EF8FF3D07F0E2F9E088FD851A6A3FE031E</stationID>
+ <name>Radio Jazz</name>
+ <shortname>Jazz</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10615641762D396571B63226CC9D6F111E3910D85019108269610462773CDCF5FEBDD98E4C</stationID>
+ <name>Radio Józef</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1061888689596DED53639C2B0AB49A8ED4C31D07F7B0E0B48D249108FFFD176012A62BBACA</stationID>
+ <name>Klassic</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1061564437375C92B783E41FC105B1CBAC7A89BD21A7FEDA10A5C8CB53C3749BF07F68B93D</stationID>
+ <name>Radio Klasyka FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106156440327E1594F93C5E83DE0F15830B6AA6F1B3DA3D5688C91E759051007A94B8E72CB</stationID>
+ <name>Radio Kolor</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106188848146A43529F4E1E35A0C3BD60C5AC4CDE6C31558DD0C82E5C1DBE1EAD74961B591</stationID>
+ <name>Radio Maryja</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10618884987B13A135DAB541622B2AA14E61ADC43D75040C7FF45C40BA84A5460492426DF4</stationID>
+ <name>Melodie</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10618885144E462C6B2539C53FBE8D9EB3B851E00F9F9AE777DEBDFEB90E9F8DB4F17A1DEF</stationID>
+ <name>MTV</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1061564309FE76DF69D3CA50BEE40DD73866EE21B144231A17C5A16EDB437BA4370FCAC358</stationID>
+ <name>Radio Pogoda</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1061888534990B3752E1235FD661371A3A7A0977DDECCD46E2986A5BB239F453DA7185648E</stationID>
+ <name>RH Kontakt</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10615639842A0A27B53C8782684D11D5D1A3248FC5BFCA9D92D48C1E35C917CEF603A839A5</stationID>
+ <name>Radio RMF FM</name>
+ <shortname>RMF FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1061888556E42C5355284C20C87833F14495A14F63825F7A2775EBB4CCC3A7C60DBD40474F</stationID>
+ <name>RTL Die Grosten Oldies</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10615642791DAF286B7AA2D22BEE081AE2ED17DAA96A1D4A3FA2972E02A26868C180EFE36A</stationID>
+ <name>Radio TOK FM</name>
+ <shortname>TOK FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1061888590B67EE680EB533FEE765BFFE445ADBAC9D92829C5BA3A659CA886D2F5EB2F313C</stationID>
+ <name>Viva Plus</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1061564505219FE9E3719815021494F007172F3D0C174FD4777DC413F5F4242D3347B3A7DB</stationID>
+ <name>Radio Warszawa Praga</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10618886124FA9C5ECDDB6E96CD2D8D35FA4032FC21C3D799194DAA18EC37E76430BB475B9</stationID>
+ <name>Radio Wawa</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10615645324581489CB4A7D796A58886C7B9789B2F5AD8B5D03983C32AA46B150B65AE8658</stationID>
+ <name>Radio Zet</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.5</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/poland/warsaw-ursynow.krp b/kradio3/presets/poland/warsaw-ursynow.krp
new file mode 100644
index 0000000..128cc6d
--- /dev/null
+++ b/kradio3/presets/poland/warsaw-ursynow.krp
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-snapshot_2005_12_04</creator>
+ <maintainer>Andrzej Kozowski, &lt;andrzejk@astercity.net&gt;</maintainer>
+ <changed>2006-08-13T16:47:08</changed>
+ <country>Poland</country>
+ <city>Warszawa-Ursynow</city>
+ <media>astercity cable</media>
+ <comments>pakiet basic
+ Contains merged Data</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1088236805DD37389D670DADEFFB7240BC4A69F7C84A6C2588580B6E3AB31FF649E769A667</stationID>
+ <name>Radio Bis</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1088236812CCED5AB431EBC6CB0950BB44398F71408BA41B76161F5224F462F85FBB3EBC11</stationID>
+ <name>Radio Dla Ciebie</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1088236814091D61464F50B5EBB55C6E93212666024A0108312DECFA0523C7503752293BB8</stationID>
+ <name>Radio Zet</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.1521</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1088236818F98AEF0C8A67C0A142086FAE09B7ADFEEA10DEA2F70BF9BD85C281DFDF43A65F</stationID>
+ <name>Radio Maryja</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.752</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1088236820C1AB035EEB576C5E772194080D9EC1936C2A7CDE21E088FF0AEC7812D3FCE244</stationID>
+ <name>PR Program 3 - Tr�ka</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108823682322199A3A26A0CC4935DF81456C046D5473FA11B89A799AB92536C1524B7FE4D9</stationID>
+ <name>PR Program 2</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.051</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108823682553AF90DFFFF097021348B489A54CDB9D1F7BB805D3AD198548C191CAA2887471</stationID>
+ <name>Radio Wawa</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>108823682836EE3ADFEAF48AF461E59527A21A785EA3870A64C9AA502FBB2B4DD591B0C693</stationID>
+ <name>RMF FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.1</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
+
diff --git a/kradio3/presets/poland/warsaw.krp b/kradio3/presets/poland/warsaw.krp
new file mode 100644
index 0000000..437eb8d
--- /dev/null
+++ b/kradio3/presets/poland/warsaw.krp
@@ -0,0 +1,237 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Radoslaw Wicik, &lt;roc@wicik.pl&gt;</maintainer>
+ <changed>czw gru 9 12:45:28 CET 2004</changed>
+ <country>Poland</country>
+ <city>Warsaw</city>
+ <media>AsterCity</media>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1</stationID>
+ <name>Radio Praga</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>2</stationID>
+ <name>RFI</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>3</stationID>
+ <name>Voice of America - Europe</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>4</stationID>
+ <name>PR Program 1</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>5</stationID>
+ <name>Radio Klasyka</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>6</stationID>
+ <name>Radio 94</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>7</stationID>
+ <name>Radio PIN</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>8</stationID>
+ <name>Radio Plus</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>9</stationID>
+ <name>Radio TOK FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10</stationID>
+ <name>Radio Bis</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11</stationID>
+ <name>Radio Kolor</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>12</stationID>
+ <name>Radio Jazz</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>13</stationID>
+ <name>Radio Polonia</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>14</stationID>
+ <name>Radio Dla Ciebie</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>15</stationID>
+ <name>Deutsche Welle</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>16</stationID>
+ <name>Radio Zet</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>17</stationID>
+ <name>Radiostacja</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>18</stationID>
+ <name>Radio Eska</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>19</stationID>
+ <name>France Inter</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>20</stationID>
+ <name>Radio Maryja</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>21</stationID>
+ <name>PR Program 3 - Trójka</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>22</stationID>
+ <name>Radio Pogoda</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>23</stationID>
+ <name>PR Program 2</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>24</stationID>
+ <name>Radio Wawa</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>25</stationID>
+ <name>Rock Radio Mazowsze</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>26</stationID>
+ <name>GOLD FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>27</stationID>
+ <name>RMF FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>28</stationID>
+ <name>RMF Classic</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.8</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/portugal/Makefile.am b/kradio3/presets/portugal/Makefile.am
new file mode 100644
index 0000000..9e492d4
--- /dev/null
+++ b/kradio3/presets/portugal/Makefile.am
@@ -0,0 +1,10 @@
+SUBDIRS =
+EXTRA_DIST = "lisboa-antenna.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/portugal/"
+ $(INSTALL_DATA) "$(srcdir)/lisboa-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/portugal/lisboa-antenna.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/portugal/lisboa-antenna.krp"
diff --git a/kradio3/presets/portugal/lisboa-antenna.krp b/kradio3/presets/portugal/lisboa-antenna.krp
new file mode 100644
index 0000000..605416a
--- /dev/null
+++ b/kradio3/presets/portugal/lisboa-antenna.krp
@@ -0,0 +1,310 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Vasco Nunes &lt;vasco.m.nunes@gmail.com&gt;</maintainer>
+ <changed>2005-05-28T16:24:38</changed>
+ <country>Portugal</country>
+ <city>Lisboa</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1116455444509F0036299C12C83B7ABEA8000845DC5D38E34AAEA04346433F6ACC64860751</stationID>
+ <name>Rádio Ocidente</name>
+ <shortname>OCIDENTE</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544434E00A4B79D5AF6F50BCA073B4F0075DB98363F2965208360ADB384FC9C9261F</stationID>
+ <name>Rádio Lezíria</name>
+ <shortname>RL-FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444F91ED21F1D7BA697D3CCCA4F80412D98E84AC5EEE8E9FD8802E8239245117BE5</stationID>
+ <name>Rádio Seixal</name>
+ <shortname>SEIXALFM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444524D3835E4E98FA48D0822236F7A2C4881D4D3314D9740CDE086B1DCF400850C</stationID>
+ <name>TSF</name>
+ <shortname>TSF</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554449DE41CDB4FBD7A49098CC696567AD524945B94899CC3498B6C5752A8B04D06B8</stationID>
+ <name>Rádio Paris Lisboa</name>
+ <shortname>RPL 90.4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444DCD642C7A6C7E5EB8768969BA1504A0B12AF82D9B3B42EF1A943AD01C56B1878</stationID>
+ <name>Popular FM</name>
+ <shortname>POPULAR</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444B1908B398F3631F05BC9C278AEBB28FF62A4F80F1229325FCB28053F1A18E769</stationID>
+ <name>Rádio Clube de Sintra</name>
+ <shortname>RCSINTRA</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444F73F7EE8BC8A4CE1D1346B3FC88CAA486037A418C8D4240466D4B5FD79180A4C</stationID>
+ <name>Rádio Irís</name>
+ <shortname>IRIS FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444E3C16AFC5033065A79EA2ACB983CD130F211DD90B5191135A7A0406A415E9E32</stationID>
+ <name>Rádio Nova Antena</name>
+ <shortname>RNA</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>9.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444F58348060F6B3951D032CE2AE3962570045A854578FE3718D634442C77547493</stationID>
+ <name>Mega FM</name>
+ <shortname>MEGA FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444B175F5D0C84BB46125CDF438EE738D965DA372EC2B47F1765B8E01445B2B24E7</stationID>
+ <name>Horizonte FM</name>
+ <shortname>HORIZ</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444315226815C91B60AB92CC728E7D3A78EACC3CF480C7499646DEB09C3C4E701F5</stationID>
+ <name>RFM</name>
+ <shortname>RFM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544469DB377E2239117F981CCE57F05666F7D20638D4B79949FCF6B9046A5504FBF8</stationID>
+ <name>Rádio Mais</name>
+ <shortname>R.MAIS</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554446AE11BB965010BF139913929098FAA0F41AE47EB6784D34D93B0320AEAB842E7</stationID>
+ <name>Antena 2</name>
+ <shortname>ANTENA2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444C8F7100921C174D17234BB109181FB1D1891D59C31A09771D0400BA46015D36F</stationID>
+ <name>Miramar</name>
+ <shortname>MIRAMAR</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544429637D10C2EF20EA8028E4F63F0E18551AF7F3F3EB63723F7A0A598014F163AE</stationID>
+ <name>Tropical FM</name>
+ <shortname>TROPICAL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554447A9C68C227A551F40419A4A90C43709DE94082A0EE08024CCC55365C051D497B</stationID>
+ <name>Antena 1</name>
+ <shortname>ANTENA1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544408756913B54145F4206592843D1B7713D79E7D3E19FE3EDC09099D8872622295</stationID>
+ <name>Best Rock FM</name>
+ <shortname>BEST FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444797A1EF6E36714BCC7372407359141A28A1B404AE7A0336223D3CA5E0553D22D</stationID>
+ <name>Rádio Comercial</name>
+ <shortname>COMERCIAL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444BAA54F1BE40423135971B9D3FAAAF2A9AF37C7C60D6DC69B489440E7FCBB2775</stationID>
+ <name>Radar</name>
+ <shortname>RADAR</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444D3C676B1AF717DEB3C5EFBE3200561C782D3720ED99002A1872DDB6CFE93EEB5</stationID>
+ <name>Rádio Marginal</name>
+ <shortname>MARGINAL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444150CB66C475C9CB684A9CCAB396CEB9A29EEE7E5536B3E7E272032275E24187A</stationID>
+ <name>Rádio Baía</name>
+ <shortname>BAIA</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544474EEB2586897AB0653884F6B08561739292C80D3C1B9D482D959B0796D0C6976</stationID>
+ <name>Antena 3</name>
+ <shortname>ANTENA3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554448D704DD3768004C70419465A9332F9DB82103BAF567FA0B0565227E4F7F6942D</stationID>
+ <name>Romântica FM</name>
+ <shortname>ROMANTICA</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444B026DA3E2E3A1FDB4D27D1A72D2AAD602153D44634970FC74A115214FB54F22C</stationID>
+ <name>RDP África</name>
+ <shortname>AFRICA</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554446AE9C5D7D77EE7088F4E454D99C008B14817ABB037EC19A50787F0648006B8BB</stationID>
+ <name>Estação Orbital</name>
+ <shortname>ORBITAL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544499E19CD0D994F74E7AECDDC84B411A98E35626C4F35E0C835C7C08B56C8BAA8C</stationID>
+ <name>Rádio PAL</name>
+ <shortname>PAL FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554446CAC6C1662A7B7CED73A73B393EDB080B0BDF83DB7FF69DADA2B1CE6EEB5227C</stationID>
+ <name>Oxigénio</name>
+ <shortname>OXIGENIO</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554447631EEEBC13A34581784E07C09FFBEF3A18715C056573CFE48BC7DD5400DA330</stationID>
+ <name>Mix FM</name>
+ <shortname>MIX</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>10.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1117293542960DB483028B13E41DDB31677C5A3644C8D154ED17AF7909C976CDF7F776A5D1</stationID>
+ <name>Rádio Renascença</name>
+ <shortname>RR</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1117293569673E983E2058428A4C5D64B0574369E696A77DBF6C32FF4A2B84FE5E3ABF6B51</stationID>
+ <name>Sesimbra FM</name>
+ <shortname>SESIMBRA</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111729358227D08B8D95DB0E9188A999DAD3FCDCDE45166A01ADFDBD5E8C769C74C8381B62</stationID>
+ <name>Rádio Clube Português</name>
+ <shortname>RCP</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1117293596BF7173A84CE12BCD30F73A2422395BF7C4403DFA9BD89783C1FC94F39FA45833</stationID>
+ <name>Rádio Eco</name>
+ <shortname>ECO</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1117293609C88B61D901ED2C3E568DC2E86D755B63AD8C120063D30AF646868B66F6C35E1D</stationID>
+ <name>CBS Rádio</name>
+ <shortname>CBS</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111729362190D5EF271699EF166345864F990809A7174E72154AB5991B202D12F02D5C6C9E</stationID>
+ <name>Rádio Cidade</name>
+ <shortname>CIDADE</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444787E3904290A56E16C4808EE0C7117893EE19A27D621326FA4FEA44334A6AAB4</stationID>
+ <name>Rádio Capital</name>
+ <shortname>Capital</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11172936389B2769CBDCDC246EE4A75B8E6727EE985F3A839B55A40DBA9B558400165B803F</stationID>
+ <name>Rádio Nossa</name>
+ <shortname>NOSSA</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.7</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/romania/Makefile.am b/kradio3/presets/romania/Makefile.am
new file mode 100644
index 0000000..09216c7
--- /dev/null
+++ b/kradio3/presets/romania/Makefile.am
@@ -0,0 +1,18 @@
+SUBDIRS =
+EXTRA_DIST = "brasov-2.krp" "brasov.krp" "bucharest.krp" "bucuresti.krp" "craiova.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/romania/"
+ $(INSTALL_DATA) "$(srcdir)/brasov.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/romania/brasov.krp"
+ $(INSTALL_DATA) "$(srcdir)/bucuresti.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/romania/bucuresti.krp"
+ $(INSTALL_DATA) "$(srcdir)/bucharest.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/romania/bucharest.krp"
+ $(INSTALL_DATA) "$(srcdir)/craiova.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/romania/craiova.krp"
+ $(INSTALL_DATA) "$(srcdir)/brasov-2.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/romania/brasov-2.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/romania/brasov.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/romania/bucuresti.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/romania/bucharest.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/romania/craiova.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/romania/brasov-2.krp"
diff --git a/kradio3/presets/romania/brasov-2.krp b/kradio3/presets/romania/brasov-2.krp
new file mode 100644
index 0000000..9086cda
--- /dev/null
+++ b/kradio3/presets/romania/brasov-2.krp
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Boer Attila, &lt;boera@rdslink.ro&gt;</maintainer>
+ <changed>2005-02-20T12:56:46</changed>
+ <country>Romania</country>
+ <city>Brasov</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1116455444D0DF5C828D32DC13641773B28ED7ADCCA8835CA9B94681808FDE52C0349B0157</stationID>
+ <name>Radio Brasov</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>87.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544420D519BEBC8F1CAA53395DEB91EF3E68C74528E210613DFA029F9E6CD2C03122</stationID>
+ <name>Europa FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>89.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544434F19F17DE5BB322718145C0CA3C6FF52880129CF7772694E3C185EECB2AF015</stationID>
+ <name>Pro FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444E5A0F0DA682EA6DCB4A2B9A0F70BF91CBB52D914C90931058B6D8346DC788922</stationID>
+ <name>Dinamic FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>91.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444511151FD2B136DC7CF55FDC7F7D9D8D7FFC1C51B1BC1352D81A25ADFDD12F076</stationID>
+ <name>Radio Special</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>93.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444E90D5A85E8F60ABB63CF0C4479CC5848BF799604F4F56BD2E11C8DF0D255FACA</stationID>
+ <name>Vocea Sperantei</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444040141986C82F229D7AC5741A54986736DA2E3E7C79E8DC9BEB481996BBC352E</stationID>
+ <name>National FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>95.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444437BB07988D361A91A7AEC0913A88A92752BBA57A61D13923A18E03442DA2CFD</stationID>
+ <name>Radio Star</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>96.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544480D2491EF303660D536579D1117B468CBEE95E33FBE88B3387F4309A68A3EDCF</stationID>
+ <name>Romania Muzical</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>97.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444ABC980772452BF3032DAC3D2F74F70EE75C924567D49F872A4376788D9E01E09</stationID>
+ <name>Radio Targu-Mures</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444A08D0653BA27180A1D91C52D511B32273448DD4CBF84842949664702EF77A168</stationID>
+ <name>Radio Impuls</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444618397A262EA6D191A065F067F622E8255072BCF9F639EB379DCF431BACD9484</stationID>
+ <name>Romania Actualitati</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544487AE344BB98CE6BAD492F3F1AB9E02D929BFD9DCA17005493FE6A91DC8EA71AE</stationID>
+ <name>Romania Cultural</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>105</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554441D06B34D14F3A0A89FD1549A69908129861CC6E5519A491AEA6BA47C051D9465</stationID>
+ <name>Kiss FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/romania/brasov.krp b/kradio3/presets/romania/brasov.krp
new file mode 100644
index 0000000..5930053
--- /dev/null
+++ b/kradio3/presets/romania/brasov.krp
@@ -0,0 +1,103 @@
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Daniel Hanganu &lt;danh@hai-la.mine.nu&gt;</maintainer>
+ <changed>2003-09-20T16:18:41</changed>
+ <country>Romania</country>
+ <city>Brasov</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1063585730237A216BC72BAE58AAAAF31859E2F7E5B9E52B0110F27EE430EE9D8FE71BC2D8</stationID>
+ <name>Radio Brasov</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106358573258B11D0CFA6DD6EC27A6C7D854DAFC9F73ABED4BA9DA32C0CCE5AE314F860CE4</stationID>
+ <name>Europa FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063585733D3CE847202814520FB1543AC46BADBB36782DB7B064FBABE92EC85191B05A5E1</stationID>
+ <name>Radio ProFM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063585735E12BAEC96522DC449EA9630D62C235519E6FD3A643BD1789E795271C7612D147</stationID>
+ <name>Radio Dinamic</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10635857383F268541F7DC0637AADF873D1C50722EE47D74324E5BFBDBA99D62B87767A263</stationID>
+ <name>Radio Special</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063585748457D36BAC2E855EAE9B3581A9F2218157BB396E35B355118D66E8D6843023C4E</stationID>
+ <name>Radio Impuls</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063585750A4271C8516720C345D36ACEF2C2D27E4CDC5CDB98B3AB8FDBBE7987A4AFCB3C7</stationID>
+ <name>Romania 1</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063585753BC971C566B6469560C19EBD2BAE48516A2E38427F4B27608B9E9DD61EC38AE65</stationID>
+ <name>Radio Romania</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10635857544CA7EE9F8D0FFB54A618BBA0220EA3F4D157E5500AC5BBB1B93FA490CBFF7029</stationID>
+ <name>Radio Contact</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106358575594A0F27B72D081F28B8E7EB5555533F94B9B3D2B2C39D49FD3F327CAA719DA87</stationID>
+ <name>Radio OFF</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.5</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/romania/bucharest.krp b/kradio3/presets/romania/bucharest.krp
new file mode 100644
index 0000000..7cdfb29
--- /dev/null
+++ b/kradio3/presets/romania/bucharest.krp
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>ThuBi, thubi@med.pub.ro</maintainer>
+ <changed>2003-01-22T21:03:39</changed>
+ <country>Romania</country>
+ <city>Bucharest</city>
+ <media></media>
+ <comments>Still incoplete, haven&apos;t listen to all.</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338540127B88C406D0C76D7C6B37EE10D0C571C551016CEAF820A8D294850620BECB5F7</stationID>
+ <name>Fun Radio</name>
+ <shortname>Fun Radio</shortname>
+ <icon></icon>
+ <frequency>94.8125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540109043942CD22136DF91A43CB788F84AE21701483B604A07B167893DB9C516A9D</stationID>
+ <name>Radio Contact</name>
+ <shortname>Radio Contact</shortname>
+ <icon></icon>
+ <frequency>96.0625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401461699318B927E9C691436726E3D1810D4256C25C3F2E8114D2DAC1CA061A10F</stationID>
+ <name>Radio Total</name>
+ <shortname>Radio Total</shortname>
+ <icon></icon>
+ <frequency>96.9375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401CF96AF81B3710A996C3213B04695538CBA1F8BEEA266E1E97F3BA88AAB4C79CC</stationID>
+ <name>Radio Bucuresti</name>
+ <shortname>Radio Bucuresti</shortname>
+ <icon></icon>
+ <frequency>98.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401EECD8B1D7670823E668F3BE36BB022C5AF014C1E98F58EE8DE727FBA23721B66</stationID>
+ <name>Radio Mix FM</name>
+ <shortname>Radio Mix FM</shortname>
+ <icon></icon>
+ <frequency>100.562</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401E54DF907512715F9875E499615B026F63439D19BFE5EB7E455B6425342F62D55</stationID>
+ <name>Radio Tineret</name>
+ <shortname>Radio Tineret</shortname>
+ <icon></icon>
+ <frequency>101.312</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401EA79079B8D83228B566BE1F78DA96F18AB51C83C8D467D457E5A81B700C34698</stationID>
+ <name>Radio Romantic</name>
+ <shortname>Radio Romantic</shortname>
+ <icon></icon>
+ <frequency>101.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854011C8898C6C55DD685C127CF692C4796152183898263BFA77DF434C4D676FF9A1A</stationID>
+ <name>Radio Romania Actualitati</name>
+ <shortname>Radio Romania Actualitati</shortname>
+ <icon></icon>
+ <frequency>105.375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401C923D42DFDB88B1A9BF15F45D33896D3AACD7DC9A6D25135EE772F3CBADF0E37</stationID>
+ <name>Europa FM</name>
+ <shortname>Europa FM</shortname>
+ <icon></icon>
+ <frequency>106.688</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/romania/bucuresti.krp b/kradio3/presets/romania/bucuresti.krp
new file mode 100644
index 0000000..acf126a
--- /dev/null
+++ b/kradio3/presets/romania/bucuresti.krp
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Mishu Mancas, &lt;mishu.mancas@home.ro&gt;</maintainer>
+ <changed>2004-11-27T16:40:29</changed>
+ <country>Romania</country>
+ <city>Bucuresti</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>11164554441EAA3C6620F245F3C39F9BA4D8475F368AAC384FCA520954566D6D416080A2B3</stationID>
+ <name>National FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>91.6875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444B7AD6B6443F8B6CC44442CC44D8E4CAD9CBAA6AFB5E415DE3548C1CEF8D1F6B0</stationID>
+ <name>Fun Radio</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>94.1875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544418D6C3F612F8FA55210D0471DEAEEC4DC479C06A7D0DE69D76D18988C1D35CC7</stationID>
+ <name>new station 4</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>94.8125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444723F70FD93F1EF11D0389AE39AD8D9B266C738704504EBCB9BD8D73DC4384B38</stationID>
+ <name>Kiss Fm</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544405A40885C1CDEC8B2B88A576581964114376B4F0E504D3CC6C56A1B60629C30E</stationID>
+ <name>Radio Total</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>96.9375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444972E44EDF8F9F1FD08BA22517FE4493373AC199DEEBF2D0CFD734479F95C5941</stationID>
+ <name>new station 6</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>98.3125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554441CDFC17D764E5239CB1055704C22F3BBBC819519E7DA254F7BCAABABAA5849E9</stationID>
+ <name>Radio Star</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554444ED5F09FE08D5522B908510F44815A3E6680768109F3B17838EDEFFBE7A79E1A</stationID>
+ <name>Radio 21</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>100.188</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544459D47B1E736C54A30356994AE5132F4CA3DED07030B8135D3FBEF0064990AD65</stationID>
+ <name>new station 9</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>101.312</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554443B1FF0E74C42C04A431B507616ACD261F03100C174ABDD563A7CEC1220A2BE1B</stationID>
+ <name>new station 10</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>101.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544463F4ED604CBB6B58B63C9A8E09CBC0B596B523960395AC94AA22BC1F0DC75C31</stationID>
+ <name>Pro Fm</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>102.812</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444F287C35AF3F29767E9668B3275E12ADE1C231C1BF5F10288BD23A8F265E37AAA</stationID>
+ <name>new station 12</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>105.312</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444BC65CAF011BBDEB4F038C4E2F37602BA45C1FBC520AAB70B29117151A8369A9A</stationID>
+ <name>City FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>106.188</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444FEE2685B4BC44BDD8C596569BC478E31317D790663C98CE613CB2394C763DE75</stationID>
+ <name>Europa FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>106.688</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/romania/craiova.krp b/kradio3/presets/romania/craiova.krp
new file mode 100644
index 0000000..5de0d8f
--- /dev/null
+++ b/kradio3/presets/romania/craiova.krp
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Darth Vader, darkstar@dainet.ro</maintainer>
+ <changed>2003-02-20T03:21:40</changed>
+ <country>Romania</country>
+ <city>Craiova</city>
+ <media>Aerial</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385401D924E884775812A9CA064CCE79C809258F649530F1E7D1FB333218295A11DD45</stationID>
+ <name>Radio Oltenia</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540129B5C73DF70AAD2AAADBCB037EBA8362C607B730DEDA4D5AD8FCF42640F1AC31</stationID>
+ <name>Radio Sud</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>97.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401501C28C818AA0579416F209FC13895E217634509D7489847AAC256B6B8F06B2C</stationID>
+ <name>Radio Horion</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854015BD609717FEDCFFCDC19C23C5890E51F92EC3ACF017885E65FCE77789EE3622C</stationID>
+ <name>Radio Contact</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>103.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401A50D191FA99BA012C1786CBB3BC8273B9A802184EDB7B7A909CF2B0A24BD043A</stationID>
+ <name>Radio Europa - FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/russia/Makefile.am b/kradio3/presets/russia/Makefile.am
new file mode 100644
index 0000000..20788e6
--- /dev/null
+++ b/kradio3/presets/russia/Makefile.am
@@ -0,0 +1,12 @@
+SUBDIRS =
+EXTRA_DIST = "moscow.krp" "saint-petersburg-antenna.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/russia/"
+ $(INSTALL_DATA) "$(srcdir)/saint-petersburg-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/russia/saint-petersburg-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/moscow.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/russia/moscow.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/russia/saint-petersburg-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/russia/moscow.krp"
diff --git a/kradio3/presets/russia/moscow.krp b/kradio3/presets/russia/moscow.krp
new file mode 100644
index 0000000..c1a479c
--- /dev/null
+++ b/kradio3/presets/russia/moscow.krp
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Alex Tompson &lt;arbuz310@mail.ru&gt;</maintainer>
+ <changed>2003-08-30T22:05:36</changed>
+ <country>Russia</country>
+ <city>Moscow</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1064330466317A41A714F7A3C70B72A8F4F88EFF1AD5870570230FAC49A74C6528C4359C32</stationID>
+ <name>new station 1</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>70.9504</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1064330466947F92FD80D121BD0DF4EDFEE9874FC5EB83A080586606778F480426C7442561</stationID>
+ <name>new station 2</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>77.3008</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10643304662D3779EBD6858C0583607EBF2788213464832A85F4205B19D671A503DF4BAB30</stationID>
+ <name>new station 3</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.1014</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106433046664F3991076F0870D839F4065A92B11B3059FAAF1F7AF006AFE06F56FDEC49E93</stationID>
+ <name>new station 3</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.2765</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1064330466EE8DA6A56D9A920D2BF0E7C52A7B72423B0552B652EE24CD3859998B5702B762</stationID>
+ <name>new station 5</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.902</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106433046619C3366A5F5A7EC91799AAEF32A445F3424E9E10E41C636539CF59CC24C082AB</stationID>
+ <name>new station 6</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.752</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1064330466E07BE61B89FE49C799EFEB5F0ABA72E6CCFC08267015CFDD367F702D64E79AED</stationID>
+ <name>new station 7</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.102</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1064330466CA4EED0736CAAB36E71A839D40008B0C5AC9AA2C82C643A9AFED34C2B1B13AED</stationID>
+ <name>Maximum</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.727</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10643304661E9EE567661CC8E897B5FC451E3E34669BB57D1AD567283A0EA7A2622260BB5F</stationID>
+ <name>new station 5</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.702</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1064330466979D59DE67FAA40E5E5408F6F709FC01B7A01AAA3434B64A6270A375091BD753</stationID>
+ <name>Europe Plus</name>
+ <shortname>Europe Plus</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.203</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106433046610DCFA997911331B73CDB8ECD23DE325DD1105AF6768E6E071D4CD51DAF72FF5</stationID>
+ <name>Love radio</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.603</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10643304660D5013C5720489386C78C7990FEB7F6A8AC21D623CB23A6B02B123D892B08E02</stationID>
+ <name>Seven Hills</name>
+ <shortname>Seven Hills</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1064330466E85A0C0833E61EED4D7180C6B2186A20ED80D94859E7B7764ED980E964796459</stationID>
+ <name>Nostalgy</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10643304668EE856A49266E70C96D6371545017E454330FFC78F72BDA85BE1B1A7D8BEF6E7</stationID>
+ <name>Silver Rain</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>0</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
diff --git a/kradio3/presets/russia/saint-petersburg-antenna.krp b/kradio3/presets/russia/saint-petersburg-antenna.krp
new file mode 100644
index 0000000..e52073d
--- /dev/null
+++ b/kradio3/presets/russia/saint-petersburg-antenna.krp
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Alexey Kouznetsov, &lt;AlexeyKouznetsov@Rambler.ru&gt;</maintainer>
+ <changed>2005-03-30T13:23:16</changed>
+ <country>Russian Federation</country>
+ <city>Saint-Petersburg</city>
+ <media>Antenna</media>
+ <comments>Помните, что в России вещание с ЧМ ведётся начиная с 66 МГц.</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>11121876938BB12EE3257CD610568CA6AD973AA44F586D2ACCC0011546A7EC9C47289087AC</stationID>
+ <name>Маяк</name>
+ <shortname>Маяк</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>67.4501</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>110547059728DE8A3586D7DF0399E1970652D6D8690666B4DAB21EB488FB434EA9D333794B</stationID>
+ <name>Love Radio</name>
+ <shortname>Love Radio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>68.23</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11121702623FA8B97EFEFD489CF80A5FE5BA3BCF43587ACAEE8A67813A34156E45F9480205</stationID>
+ <name>Радио Хит</name>
+ <shortname>Радио Хит</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>68.6752</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111216980695F5B37B8C53648B2D39F64D7683282138BF15AFF803F4FCE9E4F51070330787</stationID>
+ <name>Полдень</name>
+ <shortname>Полдень</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>69.57</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1112170157846DDD0AA4F0E1EDDA3A9CBF118A0FD155DC485C0DF8DB07600FD6C36DC1DA3B</stationID>
+ <name>Радио &quot;Свобода&quot;</name>
+ <shortname>Радио &quot;Свобода&quot;</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>71.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11121701934C708371FFF9AAC99960C21EB9BDDA1836C15A72D44C359964B204FE7B95BAF7</stationID>
+ <name>Ретро FM</name>
+ <shortname>Ретро FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>71.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11054705973E9C1D4F7586C3F68622648E824214743ADDA1376251BC2462C534FE3D025CF6</stationID>
+ <name>Наше Радио</name>
+ <shortname>Наше Радио</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>72.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1112171255D3AF2E3438AF6660A835025F405903ECE89D4FA7FF99A9405E862AF21BD985C5</stationID>
+ <name>Европа +</name>
+ <shortname>Европа +</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>72.7501</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1105470597BB02CDAE9220024C5436974F1E8DE6DE146015810E61C3ACFDD9E6BA27178C53</stationID>
+ <name>Мелодия - нижний канал</name>
+ <shortname>Мелодия - нижний канал</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>73.12</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11054705977FBCDEDEA20F710A6A804F13E4862547B84F4DD3E3B1;2cEC41BA90D66C9F86811CF</stationID>
+ <name>Максимум</name>
+ <shortname>Максимум</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>73.875</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11121710793DCA5BDCB3C9882FF6DA15765425E4A3782314FF80866A1B353586ACA021B233</stationID>
+ <name>3-й ТВ канал</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>83.7622</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1105470597C7E497AC0513B73F242F2B89910C77139825A69B61152A15FDDDA3CD96D5A48A</stationID>
+ <name>Ретро FM</name>
+ <shortname>Ретро FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>1;2c1;2c
+ <frequency>88</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1105470597ED7402F796DD7A1438DFA2C82403320E04136E10CAEBE5AD9416DAA11F7952FE</stationID>
+ <name>АвтоРадио</name>
+ <shortname>АвтоРадио</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.4375</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1105470597A8B2E12CE04102623DA238173A6E54E12D6C3EF259565F2DDEFF9BBAB98F99A7</stationID>
+ <name>Радио Классика</name>
+ <shortname>Радио Классика</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.9375</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1112122070F54A8064A0C11E70C58A7DE5FC70A6EBA169185CEA7C7AD7460C7A72BDB88D54</stationID>
+ <name>Радио Хит</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1105470597123AF7ACE84D96D33F38E366B198DE91D00221755749E09F164A8A094757A7BD</stationID>
+ <name>Радио Эрмитаж</name>
+ <shortname>Радио Эрмитаж</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.125</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>110547059798744F66BBB508B630A55F7CB5C84AFB7A77CBAE07901955531A2ED27DF08E8B</stationID>
+ <name>Мелодия - верхний канал</name>
+ <shortname>Мелодия - верхний канал</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11054705971B2C3D2CAC635A64E6D502E3B6C916DA99CB0054A7AD34654516DEDFFAE2CA3A</stationID>
+ <name>Эхо Москвы</name>
+ <shortname>Эхо Москвы</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.5625</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>110547059753F17988EAC372424115681CC5A50D225F13B826F92192D2B5FCB2B3F7153D50</stationID>
+ <name>Европа +</name>
+ <shortname>Европа +</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.562</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>110547059778AED6E00EB7F86E5E5E471CD09811F1518577971ED8DEBF60289FDA9282976C</stationID>
+ <name>Русский Шансон</name>
+ <shortname>Русский Шансон</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.938</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1105470597FDB53E7CCFE1736A7FC6DD31155BCB92E42751571A0169373EC16EC1AFC8015F</stationID>
+ <name>Эльдорадио</name>
+ <shortname>Эльдорадио</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.438</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11054705978708D6CE190C42C1F232D326BED3B72B11889C8129C05AAF426739C5A97EBEED</stationID>
+ <name>Radio rocks</name>
+ <shortname>Radio rocks</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>110547059710A171707221D581E7682E574FAC017D18BDB8A40B151E3C4C71A76289042B48</stationID>
+ <name>Radio studio</name>
+ <shortname>Radio studio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.438</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>110547059714E6B53197BB3E1380E7E4F53DEFAC38CA4582C11B127BE258E24C1270CCA917</stationID>
+ <name>Максимум</name>
+ <shortname>Максимум</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.875</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1105470597F9BD91D0F966FE89AF09C4806DD6497D378F19AC55123BF5C11D811B52C59204</stationID>
+ <name>Динамит FM</name>
+ <shortname>Динамит FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.438</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1105470597139BA2B060E84C80067C0A577BA93143881A6D9ADF6E84E618E7945A9655182D</stationID>
+ <name>Наше радио</name>
+ <shortname>Наше радио</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.062</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11054705974E8AFE1AC53CE2B727092671FEB52D39B7059FDF8E7E736C5B7A97EC90BD9AFA</stationID>
+ <name>Радио Шансон</name>
+ <shortname>Радио Шансон</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.438</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1105470597B48C1356BE8036F3E06F0AB71DA0AE5584EB50B25F15C0C14791E78960134051</stationID>
+ <name>Радио Балтика</name>
+ <shortname>Радио Балтика</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.812</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11054705973842507744F436921A7CAC01996EC77833FE32596AF416C610945D477F7EACDB</stationID>
+ <name>Love Radio</name>
+ <shortname>Love Radio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1105470597B177A15F3D7B08D1AF6B73D96A8E5642316905C2D6F89371462BD2904D96669C</stationID>
+ <name>Радио Спутник</name>
+ <shortname>Радио Спутник</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.875</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1105470597C2C65712FCDF46B96A55F16F6BDD3F4504793BDCF8157D6F128E5C7F14769ADE</stationID>
+ <name>Радио Рекорд</name>
+ <shortname>Радио Рекорд</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1105470597B176375C1049D536655F088F72ACF48BF71B703248F7A6F6C08D7E2C9B8BB23C</stationID>
+ <name>Маяк</name>
+ <shortname>Маяк</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1112171702E503AC6CD15EF0CDCCFB64D95CC5828159EAAB77270FEA10DB8AB015221DE758</stationID>
+ <name>Ленинград</name>
+ <shortname>Ленинград</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>110547059793580BCACD5D2C429E38A4DA17C44745BE9DDE18FD37F8427C3102957DB5084A</stationID>
+ <name>Русское Радио</name>
+ <shortname>Русское Радио</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.812</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/slovakia/Makefile.am b/kradio3/presets/slovakia/Makefile.am
new file mode 100644
index 0000000..1a21d0c
--- /dev/null
+++ b/kradio3/presets/slovakia/Makefile.am
@@ -0,0 +1,10 @@
+SUBDIRS =
+EXTRA_DIST = "kosice.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/slovakia/"
+ $(INSTALL_DATA) "$(srcdir)/kosice.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/slovakia/kosice.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/slovakia/kosice.krp"
diff --git a/kradio3/presets/slovakia/kosice.krp b/kradio3/presets/slovakia/kosice.krp
new file mode 100644
index 0000000..b464fd3
--- /dev/null
+++ b/kradio3/presets/slovakia/kosice.krp
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Martin Zdila, &lt;zdila@antik.sk&gt;</maintainer>
+ <changed>2005-05-30T23:25:47</changed>
+ <country>Slovakia</country>
+ <city>Kosice</city>
+ <media>antenna</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>11174882711700B64499B72BAA11C55E4E07B5F9C37D70B5945BD14A98589E0AD214335B9C</stationID>
+ <name>Fun R�io</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11175637360BACCB8DF30BA275FC3CCEF0E90DE20169681B17A91B22EB18DCF2DA30F81CD4</stationID>
+ <name>R�io Twist</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1117563766A2E53A5138E4461EE3B7D918CDBC3DCF584AE5D9B843AD8A45E5703E589F015F</stationID>
+ <name>R�io Flash</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1117563815249C99C2B43E784C58FE01F1878F91A1CEFC755F544D87A123AB111A6D7520DF</stationID>
+ <name>R�io Lumen</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1117563832326C090294EEE892978758CE186B1EECF5B24C72583F4257D0325EA600A79C27</stationID>
+ <name>R�io Expres</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11175638715F77A0C9BEA7B70DEAC4E54D945331AF635DBEE845EAA0E774E7944338A6654D</stationID>
+ <name>R�io Slovensko (S1)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>111756389036C48CBB2A8D88B12A3196D45C7C1051EBE40C62400EC14230CA18A4CD366AA8</stationID>
+ <name>R�io Vchod B1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11175639059BE18C574A9B0ACACD20458B5CB94FF875E8560134705555F6696277F4DC08DE</stationID>
+ <name>R�io FM (S3)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1117563923319D670D44685CADE3284CCE1DBD6316978B180CFFFD6F17BA446D284F7E4F93</stationID>
+ <name>R�io Dev� (S2)</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1117564068A838805FA7AF4F124BF5B0AAB62BC21AF2703BA3330D6249D38E8D22D0BDCA19</stationID>
+ <name>Okey Top R�io</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1117563972DDB6395BC0837D67BD01C3738DC0B20D2E8BD6369C35EC83C15182CCFF827750</stationID>
+ <name>Fun R�io</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11175640053B7E28B2BCFD3473C25B38E0B774179D00CD514252F4C989C08B52097F6D983D</stationID>
+ <name>BBC Slovakia / Regina KE</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>111756401142784C0C94CE2082541E816A6AD45ACCD566C288B5B90CEE340CCD0373729FAE</stationID>
+ <name>R�io Kiks</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11175640291CD36BC74C57D7BD5C383A678DE6DEF27635E2469A39E15DC4E25F0FE8FB0039</stationID>
+ <name>R�io Expres</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.2</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
diff --git a/kradio3/presets/south-africa/Makefile.am b/kradio3/presets/south-africa/Makefile.am
new file mode 100644
index 0000000..4f7cc85
--- /dev/null
+++ b/kradio3/presets/south-africa/Makefile.am
@@ -0,0 +1,10 @@
+SUBDIRS =
+EXTRA_DIST = "johannesburg.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/south-africa/"
+ $(INSTALL_DATA) "$(srcdir)/johannesburg.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/south-africa/johannesburg.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/south-africa/johannesburg.krp"
diff --git a/kradio3/presets/south-africa/johannesburg.krp b/kradio3/presets/south-africa/johannesburg.krp
new file mode 100644
index 0000000..1b14ad5
--- /dev/null
+++ b/kradio3/presets/south-africa/johannesburg.krp
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Friedel Wolff, &lt;fwolff@adam.rau.ac.za&gt;</maintainer>
+ <changed>2004-11-26T21:08:31</changed>
+ <country>South Africa</country>
+ <city>Johannesburg</city>
+ <media>Radio</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1098739336EA60FCF813559CE491BDDF0486DC41B1393037E2C392265BE5C5B5BE528B2E93</stationID>
+ <name>Lesedi FM (Sotho)</name>
+ <shortname>Lesedi</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.4251</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1098739338CF93670ACBDC28A94A2C7D57B182622CAAA98BBCC37E1DDBCFEF61C993D978F6</stationID>
+ <name>Motsweding FM (Tswana)</name>
+ <shortname>Motsweding</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.6002</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1098739338178AEF759572B01AB3643CF5F883B8240D66F8C3C99A2D7CF471AE71ACE84CB5</stationID>
+ <name>Thobela FM (Pedi)</name>
+ <shortname>Thobela</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.1252</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10987393409FD0046DE963EEAC945D7159308BB93DDDAFA6B608087AD3D4838A135F5AE0AD</stationID>
+ <name>Ukhozi FM (Zulu)</name>
+ <shortname>Ukhozi</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.5253</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10987393423FE2CB309DEE9C9B47548120A54BB20F064423FB661B4684F5E2D91216F7FE9E</stationID>
+ <name>Umhlobo Wenene (Xhosa)</name>
+ <shortname>Umhlobo Wenene</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.2254</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109874102690AFE4DAA34E9C0795DA9321735BFD7EEE1AED0867DE5BD1B17D5C291A2CA6E5</stationID>
+ <name>Jakaranda</name>
+ <shortname>Jakaranda</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10987393447B038C0C61D4A822B044679430E4B372996855522A1FAD964131895495C3F509</stationID>
+ <name>Highveld</name>
+ <shortname>Highveld</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.7255</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109873934610E5EFD6DE3F10C3E54C96FEF0AD3FB367FC47AAC3FA7200FDDF18606A8B369B</stationID>
+ <name>Kaya</name>
+ <shortname>Kaya</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.9505</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10987393461A7EC742ACB1ABAD8571CA8FB45478D6E2781B0BD542C20A025EB84CA722D691</stationID>
+ <name>Metro FM</name>
+ <shortname>Metro</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.4256</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10987393487747AAA97C6B682FE5620653ECADFE1C33CBD5A6B626E153838370A9879603C1</stationID>
+ <name>5 FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.0757</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1098739350C2AC2CE20EA72B419B13A006157CE3DF583D0C9CC31FB224839B3C48FEADC80C</stationID>
+ <name>YFM</name>
+ <shortname>YFM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.2507</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109873935113B776A07660784A0CFA4CB8976AEDC998B246479C333B897CBC37B682576FAB</stationID>
+ <name>Radio Pulpit/Kansel - 2000</name>
+ <shortname>Pulpit/2000</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.7008</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10987393533B535275380FFD8B856F0937EC2E918A1C5E25B3EAED7CE90C58AF87C37E3CBC</stationID>
+ <name>Radio Sonder Grense</name>
+ <shortname>RSG</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.551</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10987396515D558ECFE71DB5091EB422891399D131D4A9BB57415661B3DF0CA93C0316B56E</stationID>
+ <name>Classic FM</name>
+ <shortname>Classic</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.626</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1098739652DCD0758A2C96623AADBBD52A71110D1BAAE8E560840B0976EA87DA74D8CB0CAD</stationID>
+ <name>Mungana Lonene FM (Shangaan)</name>
+ <shortname>MLFM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.226</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10987393571C8FDB4C8FCA0C32F4391D6F0A308AF3E0577AC218488CB263E4D662CEBDAA4D</stationID>
+ <name>SAfm</name>
+ <shortname>SAfm</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.101</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10987396577336A0BC38519D1583692F16B17C8D628446E52823D882284F6750FC143533D3</stationID>
+ <name>Lotus FM</name>
+ <shortname>Lotus</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.876</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1098739658F98E2E5D6374DC8545FD0A64DBDDD558CE98654F4B3F75686859E33C474E4893</stationID>
+ <name>Phalaphala FM (Venda)</name>
+ <shortname>Phalaphala</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.851</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
+
diff --git a/kradio3/presets/spain/Makefile.am b/kradio3/presets/spain/Makefile.am
new file mode 100644
index 0000000..d75e50e
--- /dev/null
+++ b/kradio3/presets/spain/Makefile.am
@@ -0,0 +1,26 @@
+SUBDIRS =
+EXTRA_DIST = "barcelona2.krp" "barcelona.krp" "bilbao.krp" "lugo.krp" "madrid-2.krp" "madrid.krp" "malaga.krp" "mieres-del-camino.krp" "sevilla.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/spain/"
+ $(INSTALL_DATA) "$(srcdir)/malaga.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/spain/malaga.krp"
+ $(INSTALL_DATA) "$(srcdir)/madrid.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/spain/madrid.krp"
+ $(INSTALL_DATA) "$(srcdir)/barcelona2.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/spain/barcelona2.krp"
+ $(INSTALL_DATA) "$(srcdir)/mieres-del-camino.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/spain/mieres-del-camino.krp"
+ $(INSTALL_DATA) "$(srcdir)/barcelona.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/spain/barcelona.krp"
+ $(INSTALL_DATA) "$(srcdir)/bilbao.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/spain/bilbao.krp"
+ $(INSTALL_DATA) "$(srcdir)/sevilla.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/spain/sevilla.krp"
+ $(INSTALL_DATA) "$(srcdir)/madrid-2.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/spain/madrid-2.krp"
+ $(INSTALL_DATA) "$(srcdir)/lugo.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/spain/lugo.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/spain/malaga.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/spain/madrid.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/spain/barcelona2.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/spain/mieres-del-camino.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/spain/barcelona.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/spain/bilbao.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/spain/sevilla.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/spain/madrid-2.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/spain/lugo.krp"
diff --git a/kradio3/presets/spain/barcelona.krp b/kradio3/presets/spain/barcelona.krp
new file mode 100644
index 0000000..7489585
--- /dev/null
+++ b/kradio3/presets/spain/barcelona.krp
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Eduard Pertíñez, eduardp@tango04.net</maintainer>
+ <changed>2003-02-19T12:14:44</changed>
+ <country>Catalunya</country>
+ <city>Barcelona</city>
+ <media>Catalan Radio Stations</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385401B5ABDDEDD972C97A6A8711EE01AB389F80111E0547B75F5A496DC714FC462D91</stationID>
+ <name>M80 Ràdio</name>
+ <shortname>3</shortname>
+ <frequency>90.5266</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401AEBC3A1C2D2C12825F9BD47297616CF1AB0971608DDAD7CFE75731CB07752AD6</stationID>
+ <name>Com Ràdio</name>
+ <shortname>4</shortname>
+ <frequency>91.0016</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401AB74BBE531649A8A3C3DCC299B9DE202C1272929D1236D42FF723CD2633426D8</stationID>
+ <name>Ràdio Barcelona 2 40 principales</name>
+ <shortname>6</shortname>
+ <frequency>93.9268</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854015A820B47A54149B706322A6363CF6765106555C6E63FF69289209FDA4A0F8082</stationID>
+ <name>Ràdio Barcelona</name>
+ <shortname>7</shortname>
+ <frequency>96.9019</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854016A34613A3660E1A2793F055B501739BF24620D0E2D3C11147A38ABCDBB07CDA3</stationID>
+ <name>Ràdio 4</name>
+ <shortname>11</shortname>
+ <frequency>100.802</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401170923D3DFDDE8182D86A372004EE5A51F85918D14F24133065BF40873559D5A</stationID>
+ <name>Ràdio DOS 84 Hostalric</name>
+ <shortname>12</shortname>
+ <frequency>105.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401C5AB5B0B23C4407FCA0B0A57BDA432CE32279902B9CC3E18D7E668FB406BAEDF</stationID>
+ <name>Catalunya Informació 2</name>
+ <shortname>13</shortname>
+ <frequency>106.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401F6C943B691E462FB190031109959116945867752F19F05289343247F30CF9BA0</stationID>
+ <name>Catalunya Ràdio</name>
+ <shortname></shortname>
+ <frequency>102.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401753D5016140F1C88A0C63EEC3B5253DCF3EA99BD0EFC2C497FF059CB8056528A</stationID>
+ <name>Catalunya Informació</name>
+ <shortname>2</shortname>
+ <frequency>92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854019462AF210007A26DA71010F56D7E32556597D4926C12963623ADE027EB2B2C59</stationID>
+ <name>RAC1</name>
+ <shortname>3</shortname>
+ <frequency>87.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401F292813E30A009852BEB6CD4297988664D4CD59911E7E086C66F51FAEA8F0A86</stationID>
+ <name>Catalunya Cultura</name>
+ <shortname></shortname>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401CA7EC18C1691E16ECB39EF223D417E60CE2174FEF312B9DBCAD387AE5FEC534C</stationID>
+ <name>Flaix FM Catalunya Central</name>
+ <shortname>10</shortname>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854017D3EF4946F4E20A530D0A8D80246226FCC38DEE76A1C8659DB4085629C6DB7AB</stationID>
+ <name>Ona Catalana Barcelona</name>
+ <shortname></shortname>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854010B10BD88EB36A51862508CF008C29234933820EB04D42A280C93268A201ABC8C</stationID>
+ <name>Ona Música</name>
+ <shortname></shortname>
+ <frequency>96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540166481A8A787350C2AF619659AE2EFF9CC869A44C3BB75CCA34AD5A96971E5D6A</stationID>
+ <name>Onda Rambla</name>
+ <shortname></shortname>
+ <frequency>89.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/spain/barcelona2.krp b/kradio3/presets/spain/barcelona2.krp
new file mode 100644
index 0000000..6248e2c
--- /dev/null
+++ b/kradio3/presets/spain/barcelona2.krp
@@ -0,0 +1,418 @@
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Sergi Coll &lt;sergi@sim00.net&gt;</maintainer>
+ <changed>2003-10-05T18:38:56</changed>
+ <country>Catalunya</country>
+ <city>Barcelona</city>
+ <media>Catalan Radio Stations</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1065375579F246EBC3FB54A275F81CD8E9E86FCF0351489073A23436623A0894F3A2189447</stationID>
+ <name>RAC 1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065375637D848CBB39FC176EF7504637CEB2D80E0183C3AC6975F9ADA475D9CE72507303A</stationID>
+ <name>Radio Union Catalunya</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106537568394CDCECDDE4FE87D3C2D4454151741C0575C285BF39648985C4575C11DB262B2</stationID>
+ <name>RNE 1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10653721188C3EBE989EA7DD70FB8C6C8D43369C38E4AE8B0D57BB19D1CE96181B8977C000</stationID>
+ <name>Rdio RM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065375786DC7E5E2865670028220626EB390FC2DC89D5787B829914971CA6523C2BDD171B</stationID>
+ <name>Rdio Salut / Europa FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065372149A12092034A3C49367301C4D5F08FBAEE5688669CB2249E8DC7437ADE3E4893AD</stationID>
+ <name>Onda Rambla / Onda Cero</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065372168FAB4E52E800307E67BDABA26E73B6AF5BB17B57DDA5B432752573DA83B7008C6</stationID>
+ <name>M-80 Rdio</name>
+ <shortname>M80</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065372189041BAC523700A51FCF2F315CF70811D8A1D74D7F7021E1D8DA65265DD787637F</stationID>
+ <name>Rdio Pica</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106537220318DE9665D17D1176D8E588B0AE65CE822D1C828769D044FC2523B625AF77BB9D</stationID>
+ <name>Catalunya Informaci</name>
+ <shortname>CATINFO</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106537223096DC1B7F4BAB5E82CF31452011A430C31492A19A764F2835C15D32E07734D1FC</stationID>
+ <name>Catalunya Cultura</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10653722426342839699BB645460F1E9C09DC8B08B0DBCEB735E07AD0B10B412010A139749</stationID>
+ <name>RNE Clssica</name>
+ <shortname>RNE2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10653735889671447576B18D3D5644D53F00B70A80F9046545F28ABD18A6AC98A85E557784</stationID>
+ <name>93_250</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10653722626123BF401DC0F2347189D019EA4E33E7834FDC4AAE5560197E74F0B50E71166C</stationID>
+ <name>InterEconomia</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065372277A0894473DF339185E3B82F80E7648703DE087B1B34607A2394F4C89924F2BA3D</stationID>
+ <name>Los 40 Principales</name>
+ <shortname>CAD40P</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065372309F1211862B3A0CFC39CE44262DBB141EBC30261233A04FB79D6A1396A8ACBE6C5</stationID>
+ <name>Rdio Sabadell</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065372323786443C94ABB28AE502B1116FA5776CE69E28D71D8048B614E3AB019F0D2609B</stationID>
+ <name>HitRdio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065373827026D718BFAE3C5B8899F2A5CE05F91EF2A292018ED2BF9C30C1E7E939CD2B1CA</stationID>
+ <name>Radio Club 25</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10653723438F131947E70EB9802885C5DB4A02901D63BD14E92F5C1101377A160F5F5C4C37</stationID>
+ <name>Ona Msica</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065372101B115F1DCD6B46254803FECB1130BACDA9AE4559A81387EA1A83E9ECFC62B02AB</stationID>
+ <name>Rdio L&apos;Hospitalet</name>
+ <shortname>R.L&apos;H</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065374206723116E3EFD80FC80C8756F07B1E1E4100BDC3364EFA30A9A278D063A1076D86</stationID>
+ <name>Radio Gladys Palmera</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065374336E0970CC5FD67DC555E32120DDD76621365247745FF172EC54E822E31B318D30B</stationID>
+ <name>Cadena SER Barcelona</name>
+ <shortname>SER</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065374481B1D1977641BE9EBF9D56A2223F5BE8538763FBE3EBB849FEE1EDD08BFA72D158</stationID>
+ <name>97_200</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065372480D1722872D57E05A8A86E3EABFB5E4416DCFB37DE79176B4F61E62204000867DC</stationID>
+ <name>Rdio Tele Taxi</name>
+ <shortname>RTT</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065374604165CDFA4FAC472BB77766A6F5054729DA14F4B2ED659BC1A78EC073C7DB7B5B6</stationID>
+ <name>Rdio Nou Barris</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065372503DAD0C44F6140BFAA197B1511FBB938716EA88D846C90C55F9E9E734B05136D76</stationID>
+ <name>RNE 3 Barcelona</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10653747052B68560694A7A8EE1C1B89D3DBE51FA50D493789697C1D73D6246B869128343B</stationID>
+ <name>99_000</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065372521A122842CD7C1EAF3BB87180C7E311B17C014EE16F0353374AF8D5655CFBF1046</stationID>
+ <name>Cadena Dial</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10653725378F90CB5AC94E3919D6E83EF4EB1C9AEB6C2E73CD666655510684BF6567F16F1C</stationID>
+ <name>Cadena 100</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10653725502372700BA0E2F7858B9A26ED45308A5C3C3DDEF6BF5479EFDFF6EFD5D7976BE7</stationID>
+ <name>Rdio 4</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10653725696CF7A270FBC9C6D7922E1C43DE63140F41C71F7D3A28A8E5795AFCBEC983523D</stationID>
+ <name>Catalunya Msica</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065372580B413B0F931C6E3132D524212ECE7F37370516B9411E19BCF2707B0BFDBFD13EA</stationID>
+ <name>Cadena COPE Barcelona</name>
+ <shortname>COPE</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10653748899EF9990AA3B2249C1650A2E8A213FD07532E2DBDECFE5C5DB3DC4E8376C221C8</stationID>
+ <name>102_400</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065372601FBCDDC67902819313AE3C28D3AE56C304F6ADC1781511E855C2CAD793FEA780A</stationID>
+ <name>Catalunya Rdio Barcelona</name>
+ <shortname>CATRADIO</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10653749828B4D63B0468FD94217ABC2C2E48BF16935ED94455811A7D8059F1044820DBF0F</stationID>
+ <name>Rdio Sants</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065372624D14A14FC050155A56D11C71CFA24027AE8FC35778DCDC65BAC1E37D55A00BD66</stationID>
+ <name>Ona Catalana</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106537263938A647128AD752CB3A0BAAFED79C1F0ED2D77C9CC42CDBD2035149617345D947</stationID>
+ <name>Mxima FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10653726579A9130F13C400EBC73CC1242A7B44F53CF14DA1EFB64A0AC02D615D08665C7A5</stationID>
+ <name>Radio Associaci de Catalunya</name>
+ <shortname>RAC105</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065375099500A48F65CFF00CE030E4A04A3912E539D91E2C3F40B9E82CFB3A45AD688FD09</stationID>
+ <name>Radio France Interncacional</name>
+ <shortname>RFI</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106537267643050867AC316AB4740759845C31A6057794E45AD45D19C95BCB8470314A183B</stationID>
+ <name>Flaix FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106537269064E974D213549DF132CD17848D8DEDB5035E42818874B84AEAB591AB5D25A370</stationID>
+ <name>Rdio FlaixBac</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106537271660EE4172EBD06B2CAC621E8557FA68C337FF5E7FCE5B412346BE4876A04C22C7</stationID>
+ <name>Rdio Estel</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065375166650940E321A4B11E1BBB65EBCD9F5DA0ECC332128318724536C9EE08CD95E4C9</stationID>
+ <name>Rdio Kanal Barcelona</name>
+ <shortname>RKB</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106537521897939AF6F9010015629766EDCCF8D6D103C564116F08B73B8C666B3F672C9E87</stationID>
+ <name>107_100</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1065375287877A959348962756D40DD7D4ED003A927D70F7D7A7FBA3824BC611FA38DB9E72</stationID>
+ <name>Grama Rdio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10653753663FAADA1BBA034A3B4ED94569D9D9A5A6BC447C736104D7459986DE3CF09668A9</stationID>
+ <name>Rdio Grcia</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.7</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/spain/bilbao.krp b/kradio3/presets/spain/bilbao.krp
new file mode 100644
index 0000000..ebd265d
--- /dev/null
+++ b/kradio3/presets/spain/bilbao.krp
@@ -0,0 +1,23 @@
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Luis A. Fernndez &lt;qapfecul@lg.ehu.es&gt;</maintainer>
+ <changed>2003-10-30T20:11:44</changed>
+ <country>Spain</country>
+ <city>Bilbao</city>
+ <media></media>
+ <comments>FM Radio Station. Assorted Pop, Rock and Local Basque Music
+Only.</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>10663055147BB3A2F3153DD2A6ADAC3760265592D45D551C40E6DA0149E367421FC8550939</stationID>
+ <name>EITB Radio</name>
+ <shortname>EITB</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.1</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/spain/lugo.krp b/kradio3/presets/spain/lugo.krp
new file mode 100644
index 0000000..ddd5b75
--- /dev/null
+++ b/kradio3/presets/spain/lugo.krp
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>David Gonzalez Vazquez, &lt;twiky01@vodafone.es&gt;</maintainer>
+ <changed>2005-05-26T02:08:11</changed>
+ <country>Spain</country>
+ <city>Lugo</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1105993997BA00383457EAC4AACFE2E6D8AD0CAB236760C5507684C9D2917028CBBBC8512F</stationID>
+ <name>Los 40 Principales</name>
+ <shortname>Los 40</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.8003</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1105994838FB30EA9A5324AD96564B41A3B7D031BF7594651AE8B89981889ECE600E54BAD6</stationID>
+ <name>Cadena 100</name>
+ <shortname>Cadena 100</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11059947768B02DDD3FE04AA3D7C4B4A3355E95C822E26C5F633727D9395CD1C40CE224E22</stationID>
+ <name>Cadena Dial</name>
+ <shortname>Cadena Dial</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11145643801F25093BB801D6C4A1FDED3A34A2BCDFF01ED1C292F2DFA88CAC82F6685BA00E</stationID>
+ <name>Radio Galega Msica</name>
+ <shortname>Radio Galega Msica</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110599490843C951B6A8FCA7C144280E3455F0682CED8045B9EBDDF4C9B94A0C4093A79E89</stationID>
+ <name>Cadena Ser</name>
+ <shortname>Cadena Ser</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110600010496C15AB9EDE5B0B4AC1A03E2A6D9E5E12A0C56B648021BA9024E5D5DCD38A9A6</stationID>
+ <name>Radio Galega</name>
+ <shortname>Radio Galega</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110600128066BCF162DD07DD5E1520C689A84C75388CA6C2B278E8F818AA4FF481E033B8FD</stationID>
+ <name>Radio Voz</name>
+ <shortname>Radio Voz</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>110600200486262CEB9177184EE01B78A8C077B7AA008A0563C07B837AEFA1BCF76D987EBB</stationID>
+ <name>Onda Cero</name>
+ <shortname>Onda Cero</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1106002815BACF0031D9DB8F2D06F0C538BC32B99FDCC2A692F36DDA42EAEA6E899039FFFE</stationID>
+ <name>Cope</name>
+ <shortname>Cope</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11060032848AF35B17C106F1E7F7AD162D802C397E567CB3BA00F137AF6C2210C127F1ED9D</stationID>
+ <name>Punto Radio</name>
+ <shortname>Punto Radio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11145652503F34B0BB2D3C54D740A599E40F3875187921398CA657C672FCB16E0158FA000F</stationID>
+ <name>RNE Radio Cl�ica</name>
+ <shortname>RNE Radio Cl�ica</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1117067202FE2C06218902CF82B7ADC1073D0F6C488DBF853B0274C27F328A28E7EEFABC2F</stationID>
+ <name>RNE Radio 5 Todo noticias</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11170676554CF00D63A088DEDC4F11C4B2D5608BC82A8DF43EEF7D2B4DEE266E32C88FEC66</stationID>
+ <name>RNE Radio 1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11170674679BA4AA62E5F06768D92B1545FE27FF46FDC2C87084312F1B8CA9735C4961F3EC</stationID>
+ <name>Radio Mar�</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.3</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/spain/madrid-2.krp b/kradio3/presets/spain/madrid-2.krp
new file mode 100644
index 0000000..cd187a4
--- /dev/null
+++ b/kradio3/presets/spain/madrid-2.krp
@@ -0,0 +1,254 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Miguel Diago &lt;mdiagom@yahoo.es&gt;</maintainer>
+ <changed>2004-10-16T18:47:38</changed>
+ <country>Spain</country>
+ <city>Madrid</city>
+ <media></media>
+ <comments>Stations of Madrid centre</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1116455444F91ED21F1D7BA697D3CCCA4F80412D98E84AC5EEE8E9FD8802E8239245117BE5</stationID>
+ <name>RNE 1</name>
+ <shortname>RNE 1</shortname>
+ <icon></icon>
+ <frequency>88.1875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444509F0036299C12C83B7ABEA8000845DC5D38E34AAEA04346433F6ACC64860751</stationID>
+ <name>M80 Radio</name>
+ <shortname>M80</shortname>
+ <icon></icon>
+ <frequency>89</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544434E00A4B79D5AF6F50BCA073B4F0075DB98363F2965208360ADB384FC9C9261F</stationID>
+ <name>Radio 5</name>
+ <shortname>Radio 5</shortname>
+ <icon></icon>
+ <frequency>90.3125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444524D3835E4E98FA48D0822236F7A2C4881D4D3314D9740CDE086B1DCF400850C</stationID>
+ <name>Radio María</name>
+ <shortname>R. María</shortname>
+ <icon></icon>
+ <frequency>90.6875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554449DE41CDB4FBD7A49098CC696567AD524945B94899CC3498B6C5752A8B04D06B8</stationID>
+ <name>Europa FM</name>
+ <shortname>Euro. FM</shortname>
+ <icon></icon>
+ <frequency>91.0625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444DCD642C7A6C7E5EB8768969BA1504A0B12AF82D9B3B42EF1A943AD01C56B1878</stationID>
+ <name>Cadena Dial</name>
+ <shortname>C. Dial</shortname>
+ <icon></icon>
+ <frequency>91.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444B1908B398F3631F05BC9C278AEBB28FF62A4F80F1229325FCB28053F1A18E769</stationID>
+ <name>Radio Adventista</name>
+ <shortname>R. Adven.</shortname>
+ <icon></icon>
+ <frequency>92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444F73F7EE8BC8A4CE1D1346B3FC88CAA486037A418C8D4240466D4B5FD79180A4C</stationID>
+ <name>Radiolé</name>
+ <shortname>Radiolé</shortname>
+ <icon></icon>
+ <frequency>92.4375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444E3C16AFC5033065A79EA2ACB983CD130F211DD90B5191135A7A0406A415E9E32</stationID>
+ <name>Radio 3</name>
+ <shortname>Radio 3</shortname>
+ <icon></icon>
+ <frequency>93.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444F58348060F6B3951D032CE2AE3962570045A854578FE3718D634442C77547493</stationID>
+ <name>40 Principales</name>
+ <shortname>40 Prin.</shortname>
+ <icon></icon>
+ <frequency>93.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444B175F5D0C84BB46125CDF438EE738D965DA372EC2B47F1765B8E01445B2B24E7</stationID>
+ <name>Radio Intereconomía</name>
+ <shortname>R. I. eco.</shortname>
+ <icon></icon>
+ <frequency>95.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444315226815C91B60AB92CC728E7D3A78EACC3CF480C7499646DEB09C3C4E701F5</stationID>
+ <name>MQM Dance</name>
+ <shortname>MQM D.</shortname>
+ <icon></icon>
+ <frequency>96.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544469DB377E2239117F981CCE57F05666F7D20638D4B79949FCF6B9046A5504FBF8</stationID>
+ <name>Radio Clásica</name>
+ <shortname>R. Clas.</shortname>
+ <icon></icon>
+ <frequency>96.5625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554446AE11BB965010BF139913929098FAA0F41AE47EB6784D34D93B0320AEAB842E7</stationID>
+ <name>Top Radio</name>
+ <shortname>Top R.</shortname>
+ <icon></icon>
+ <frequency>97.1875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444C8F7100921C174D17234BB109181FB1D1891D59C31A09771D0400BA46015D36F</stationID>
+ <name>Onda Cero</name>
+ <shortname>O. Cero</shortname>
+ <icon></icon>
+ <frequency>98.0625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544429637D10C2EF20EA8028E4F63F0E18551AF7F3F3EB63723F7A0A598014F163AE</stationID>
+ <name>Dance FM</name>
+ <shortname>Dance FM</shortname>
+ <icon></icon>
+ <frequency>98.4375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554447A9C68C227A551F40419A4A90C43709DE94082A0EE08024CCC55365C051D497B</stationID>
+ <name>Cadena 100</name>
+ <shortname>C. 100</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544408756913B54145F4206592843D1B7713D79E7D3E19FE3EDC09099D8872622295</stationID>
+ <name>Radio Sol XXI</name>
+ <shortname>R. S. XXI</shortname>
+ <icon></icon>
+ <frequency>99.8125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444797A1EF6E36714BCC7372407359141A28A1B404AE7A0336223D3CA5E0553D22D</stationID>
+ <name>Eco Radio - Norte</name>
+ <shortname>Eco Rad.</shortname>
+ <icon></icon>
+ <frequency>100.375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444BAA54F1BE40423135971B9D3FAAAF2A9AF37C7C60D6DC69B489440E7FCBB2775</stationID>
+ <name>Cadena Cope</name>
+ <shortname>C. Cope</shortname>
+ <icon></icon>
+ <frequency>100.688</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444D3C676B1AF717DEB3C5EFBE3200561C782D3720ED99002A1872DDB6CFE93EEB5</stationID>
+ <name>Telemadrid Radio</name>
+ <shortname>TM Radio</shortname>
+ <icon></icon>
+ <frequency>101.312</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444150CB66C475C9CB684A9CCAB396CEB9A29EEE7E5536B3E7E272032275E24187A</stationID>
+ <name>Cope Madrid 2</name>
+ <shortname>Cope &quot;</shortname>
+ <icon></icon>
+ <frequency>101.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544474EEB2586897AB0653884F6B08561739292C80D3C1B9D482D959B0796D0C6976</stationID>
+ <name>Tropical FM</name>
+ <shortname>Trop. FM</shortname>
+ <icon></icon>
+ <frequency>102.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444787E3904290A56E16C4808EE0C7117893EE19A27D621326FA4FEA44334A6AAB4</stationID>
+ <name>Kiss FM</name>
+ <shortname>Kiss FM</shortname>
+ <icon></icon>
+ <frequency>102.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554448D704DD3768004C70419465A9332F9DB82103BAF567FA0B0565227E4F7F6942D</stationID>
+ <name>Radio Marca</name>
+ <shortname>R. Marca</shortname>
+ <icon></icon>
+ <frequency>103.562</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444B026DA3E2E3A1FDB4D27D1A72D2AAD602153D44634970FC74A115214FB54F22C</stationID>
+ <name>Máxima FM</name>
+ <shortname>Máx. FM</shortname>
+ <icon></icon>
+ <frequency>104.312</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554446AE9C5D7D77EE7088F4E454D99C008B14817ABB037EC19A50787F0648006B8BB</stationID>
+ <name>KRM</name>
+ <shortname>KRM</shortname>
+ <icon></icon>
+ <frequency>104.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544499E19CD0D994F74E7AECDDC84B411A98E35626C4F35E0C835C7C08B56C8BAA8C</stationID>
+ <name>Somosradio</name>
+ <shortname>Somosr.</shortname>
+ <icon></icon>
+ <frequency>105.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554446CAC6C1662A7B7CED73A73B393EDB080B0BDF83DB7FF69DADA2B1CE6EEB5227C</stationID>
+ <name>Cadena Ser</name>
+ <shortname>C. Ser</shortname>
+ <icon></icon>
+ <frequency>105.438</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554447631EEEBC13A34581784E07C09FFBEF3A18715C056573CFE48BC7DD5400DA330</stationID>
+ <name>Cibeles FM</name>
+ <shortname>Cib. FM</shortname>
+ <icon></icon>
+ <frequency>106.312</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/spain/madrid.krp b/kradio3/presets/spain/madrid.krp
new file mode 100644
index 0000000..4951768
--- /dev/null
+++ b/kradio3/presets/spain/madrid.krp
@@ -0,0 +1,352 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Eusebio Salgado &lt;eu_soy_yo@terra.es&gt;</maintainer>
+ <changed>2003-09-08T11:19:56</changed>
+ <country>Spain</country>
+ <city>Madrid</city>
+ <media>FM (?)</media>
+ <comments>South Madrid (Aluche - nearer Pozuelo than
+Madrid). (Some radio stations located are not identified - I&apos;ll do
+next days)</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633854025096FD2619B31BCCE338E47A805E34A7707FA1B71989DFD4574DDB7C80C91FCA</stationID>
+ <name>new station 1</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>67.3125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854022B3B9226A9FB1EA41609476DE42BAE06911A3EED938C2229BEF6B9FC21BC2B90</stationID>
+ <name>new station 2</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>71</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854028A36B81BA760204F6FD34E768405D87F98F19D976E7F7D8634B4A25441DE3188</stationID>
+ <name>Onda Latina</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>87.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540212EB95AAA25E327628BA89C22DE97D818F66CBF912CC752D4A0B84AE7BA07926</stationID>
+ <name>new station 4</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>87.9375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402A108C9E30C9EB7D62105041BB87E85F12C7F560A9D6D917A2040D826F7C3AF59</stationID>
+ <name>RNE 1</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>88.1875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402821F821A5CD134679EF1178844A89E33269BA896263709CA61F9CAEB734D6A40</stationID>
+ <name>Onda IMEFE</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>88.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402CE036D16D6D541CB780A0A2DAAA61A0DDFF9C98E1DEBF8992C1248907E17ED7D</stationID>
+ <name>M80</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>89.0625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854023FA60F767C3A326F041391DE578D94BF2E94247CD366D19C51EA866659E2C599</stationID>
+ <name>RNE 5</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>90.375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402984A5311339DB5536D2DD5332DDCE39F268A1B3F5E2BD8D420E8EFE01B7EDCB1</stationID>
+ <name>new station 9</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>90.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402C8F9F9A198DD5C099B55640C2801D996AAA327FA14F47EE0BE52ED29A14C491F</stationID>
+ <name>Europa FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402D0C9F2666FFC069E3DDCC60CF4E2DA6409377AF44789BAFE3BF0F8A367814D3F</stationID>
+ <name>new station 11</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>91.3125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402EA86D91A964313BCC2827726925728C5C37F5FFE9B6035BADFD56339CAE4141E</stationID>
+ <name>Dial Madrid (SER)</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>91.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402A819DDB92DF8563D5E7016481B0BB6F312548D13D59C236FACF27E53B74D8560</stationID>
+ <name>Radiolé</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>92.375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854021E090FEA5267EA1704A004AC3026619D31AED06676288945A65A2714F9A3A9FD</stationID>
+ <name>new station 14</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>92.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854021371957E6254FC9B5A0397E063E5B8E8B103E81E5802F4DBADB95946664DC6FE</stationID>
+ <name>Radio 3 (Torrespaña)</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>93.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402BB8D86A5531CC6B71CFC52B081F076FE6A209C63D163BAA2728014476D12B064</stationID>
+ <name>40 Principales (SER)</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>93.9375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402FA4A4A0100FA22F38D95ED7419B508468775253E219113C58C65B0B986F23FFC</stationID>
+ <name>Onda Sur Radio</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>94.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402BCE70CBE8FACA645A07174F44B50582B55368566230495A4C909A847B7993509</stationID>
+ <name>new station 18</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>94.8125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402F22D0388FC0D149D3DAC9DF746F8708CF8DF8241B918E98EC257B2153BBF35B0</stationID>
+ <name>InterEconomía</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>95.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402052E3E022C37987480C61880E7BE9684F8CB55E77D9C246786FA8D609632327B</stationID>
+ <name>new station 20</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402B4FD86F2B9A0D65E05A24A74EBF9563F459A9D45A24F6006D403691F60BC45D1</stationID>
+ <name>Radio 3 (Navacerrada)</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>95.8125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854020FC2C2A1B736FDD7F26A42DAF27EF81E4FFC90B62F17F6D300C03F2AF11F7024</stationID>
+ <name>new station 22</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>96.1875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540279D485270BF0D2F5D37EE37FC77B56A9246AB1A078F2194FEEF2ADB8A150B83D</stationID>
+ <name>Radio 2</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402E4029C39EEA7887B6111040E10AE0C886B6E376143D7E9FBC8E4027B304903D7</stationID>
+ <name>Top Radio</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>97.1875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402226C08A7B96129A9F3C1485D9282D1526C86E0B8D1B68CEA0DC1F665C4B0CE45</stationID>
+ <name>Onda Cero</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854029507B3E4D0A5B0BC7BCFD4CDCBA6BCD2AE7C22AC4AA8413B3E41CA8ABAC06FA5</stationID>
+ <name>Dance FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>98.4375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540267AE8728A6427E38969432E7750106283EDA05B245B5C9505A956639200F1B3A</stationID>
+ <name>Radio 2</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>98.8125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402EC555AE35EB09085543C6D8E0A6F0BA6C71566B57B0029345FC1A55F8B195AE6</stationID>
+ <name>Cadena 100</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402D1B2EC51A7AFFFE17E7D9BC631C26DA4A2F02810E07BAF86D1DB02E78A851732</stationID>
+ <name>new station 29</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>99.8125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402006B850A756896DF06419324B111E5A6CC26777754F2F1497F596F768345EED4</stationID>
+ <name>new station 30</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>100.438</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540223AC0D8A512A4C2F85102F6BF9AA630283F2B3F9B23F1B243E97C579FAFB60EA</stationID>
+ <name>TeleMadrid Radio</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>101.312</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402046B33F14FB109E7F20A6D250754364441EF2AB98BC6FC58D991C4B5FF7BB04C</stationID>
+ <name>new station 32</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>101.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540279ED1A9708087766063B585712D58A8948DA0CDD7836A97C1E357C7ABB382A0B</stationID>
+ <name>Kiss FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>102.688</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854023D240EEC0BD3AFE81F4A9587FC9836FD93CBABE8B678B806986DEBAD892677D4</stationID>
+ <name>Onda Cero C. Madrid</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402C93DC84FDB6EE45812F577FB7620F6C17ABC6DAC26E1984B4895F495599BD51D</stationID>
+ <name>Máxima FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>104.312</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854023662EEFA9BF25236D38C3CBB2D8C30272D1BAB174425B18422F2BEC267989DC1</stationID>
+ <name>new station 36</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>104.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540274B8D3C461D49C136B94E9D1783061A0836FB19AE38BA9B4D96D1D3CAACCAC67</stationID>
+ <name>Radio 1</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>104.938</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540270A48A42B3A5A9EB5391308386EBF8988CF9645A5C567DDEB108B499B6BB396E</stationID>
+ <name>Radio Madrid FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>105.438</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402CF5179C8BF121813AFD4E78A258720546379FB108652BF5B437AD666F765F105</stationID>
+ <name>new station 39</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>106</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402A00BC620EFCD03FB014DB539B299B1DD4572E64FC00ADA784548C3C0662EA2C1</stationID>
+ <name>Cibeles FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>106.312</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402489D89EB1B5A9487A095D523350323CD0BB55E55AB4D21CA747B54F1BCCA8108</stationID>
+ <name>Hit Radio</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>107</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540263494C9E1542B418DDBDDF3D1183320E53A0DF8CF9E44DA3579D561667F2E869</stationID>
+ <name>new station 42</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>107.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/spain/malaga.krp b/kradio3/presets/spain/malaga.krp
new file mode 100644
index 0000000..5632238
--- /dev/null
+++ b/kradio3/presets/spain/malaga.krp
@@ -0,0 +1,378 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-1.0beta3b</creator>
+ <maintainer>Juan Fern�dez Chac�, &lt;juan@juan-fernandez.com&gt;</maintainer>
+ <changed>2005-10-30T12:14:44</changed>
+ <country>Espa�</country>
+ <city>M�aga</city>
+ <media>Estaciones de Radio de M�aga</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1063385401AEBC3A1C2D2C12825F9BD47297616CF1AB0971608DDAD7CFE75731CB07752AD6</stationID>
+ <name>SER M�aga</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>104.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385401B5ABDDEDD972C97A6A8711EE01AB389F80111E0547B75F5A496DC714FC462D91</stationID>
+ <name>M80 Radio</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>113083818320F1D3BCC78FF66C106CB2FF956491D0A86F580E1AAACB389CA34D4A81805078</stationID>
+ <name>Onda Cero M�aga</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1130701431F88213BB22EC01EB71F398ED20CEBA9A69FAD36164930489D7378E3E1278F0B3</stationID>
+ <name>40 Principales M�aga</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338540166481A8A787350C2AF619659AE2EFF9CC869A44C3BB75CCA34AD5A96971E5D6A</stationID>
+ <name>COPE M�aga</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633854015A820B47A54149B706322A6363CF6765106555C6E63FF69289209FDA4A0F8082</stationID>
+ <name>Radio Marca</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.9019</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1130701668C4DEB7E1B4F776BBD1ACC7C94D689C43915EA0524305EEDEA92541CE96D9116D</stationID>
+ <name>Radio Marca</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>106.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633854016A34613A3660E1A2793F055B501739BF24620D0E2D3C11147A38ABCDBB07CDA3</stationID>
+ <name>Hitradio</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <volumepreset>0.11</volumepreset>
+ <frequency>100.702</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1130837780537911F33F41BBA1613FE19320A7CEA634C165665FFA40C4A6F63DD8BA4FD63A</stationID>
+ <name>Kiss FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.06</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1130838051EE042413F0CEA5D61C80DB6F7F70CB9FEFE4D890B90854E17DB08A0D64243D1A</stationID>
+ <name>Somos Radio-Cadena Mar</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1130838649F12BA243FECA13E941BD66A7A93706D61DD80675190DF0DAA9A40D2E93B4D757</stationID>
+ <name>SER Radio Axarqu�</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>113083886606DBDE37A529B258C2E376DEE669A47B9156C54C4648FE5DA4197213278575FA</stationID>
+ <name>Radio Mijas</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>113083893591CBAE0AC6D0B290D824AC9C277D82D81F80AF57B1F76FE46A33349D00493C50</stationID>
+ <name>REM FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11308390141461C18412295E4AF869CB780B5078920B6E1217673B82FA6D02726B64793909</stationID>
+ <name>Wave FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1130839176FEAE4594FD8629794A0DCD3B9FAD9569519C748CD29490CD0B0D7A2BC4EC292A</stationID>
+ <name>Cadena Musical FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1130839248F1571BBF5353F0A5EEFB7A7E95DE7B12C19E02FA7EB6C098DED0DD8BCE066322</stationID>
+ <name>Cadena Cien M�aga</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1130839312EFD0854585C2C27B2336544D64B2593D8D3ECCFD0DCAD5F3C699B283D42ABEA1</stationID>
+ <name>Cadena Energ� Marbella</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385401AB74BBE531649A8A3C3DCC299B9DE202C1272929D1236D42FF723CD2633426D8</stationID>
+ <name>Cadena Dial-M�aga</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.9268</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>113083943055EE0B31B1C9754FD3F3DD3330D5F91A1F22441AC2EF34728DADFB32FD0CE186</stationID>
+ <name>Global Radio-Arroyo de la Miel</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1130839690AAFC7C03565548365CAF727D822EDC2C9A0DDF1B26FDA5CBD6B9EA14E8D8D80D</stationID>
+ <name>Kustradion 105-Fuengirola</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>113083978014FC37CBE46397FFCDCE5E9649EDB5CE3CC59FAA2A25664C749A0BA1B53AA6FE</stationID>
+ <name>La Mega Radio-Arroyo de la Miel</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-0.01</volumepreset>
+ <frequency>91.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1130840013F2D6051FB3D9D53D8E45B2EFC5102D4D69E416F1DF5D4BD72644F413AAC280C9</stationID>
+ <name>Onda Cero Internacional-Marbella</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1130840053B39551B09C2172E939D6CF10A7E5F294D7AF1BA4FDF45E7EF89D08BB7800CB1E</stationID>
+ <name>Planeta Elite Radio-M�aga</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1130840146DE9FABA683FB79B42EE67491DDB6FD3EB8F29E877FE112396280A5EEABEA8C17</stationID>
+ <name>Point FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>113084026139C184A7804213B24833059FDAB48954B7498C6308BB8CC0069F33F3DC9298B5</stationID>
+ <name>Radio Amistad-M�aga</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11308403080D2CFC0BBC533D803E1387B21B74F5807D260F1CB7DC25DCF21529453EB280F9</stationID>
+ <name>Canal Fiesta Radio-M�aga</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>113084052853593727FF253DF2C23A763FB04502C4AD22CC46F579B754720D123B623F104C</stationID>
+ <name>Canal Sur Radio-M�aga</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1130839810F03F62D142DD6B7400F52BB40FB2889A258CB394411B66561B9DA17E00C2D584</stationID>
+ <name>Octopus Radio-Fuengirola</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>113084068131C20A2684EE3CCB970FE0B30704E56EEE96313FFCBD932E7C7541B54AD855E0</stationID>
+ <name>SPECTRUM FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11308409507E8B62B6E0C2DE0722DDFEAB05300B23E2FEE1AB8F49DE0DF6696352443BD3A4</stationID>
+ <name>Radio 1 RNE-Mijas</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1130841175276283992D78193ADBABE98757FCAEB8BC05B797833D8BF4C80ABB2FA1B84E58</stationID>
+ <name>Radio Cl�ica RNE- Mijas</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>113084122763C0F4C8C2C16EC3C6B53252306569FCE392F933D53789AC9C2BBE1577B2B12D</stationID>
+ <name>Radio 3 RNE-Mijas</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11308412746DA57A95ACC6AD5884CD84777B385690979016EA14AA1703AEA2E430DCCB35F2</stationID>
+ <name>Radio 5 Todo Noticias RNE-Mijas</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11308413363E8D06C522C03EBD38A2B95E9084FB93D3E19D9C5F388E55998FADBE5D957CCF</stationID>
+ <name>Radio Nerja</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1130840196C9E24085533FA786AED2755CF164590CA196651D855B01B64B7BE71D0CFDD603</stationID>
+ <name>RTV Victoria-M�aga</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11308413652E557203D18716B3FA7CBF0174374A8A3F9DBFE09E47EAFF665321C4438CF289</stationID>
+ <name>Radio Pinomar-Alhaurin de la Torre</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11308414131E890E82B8ED5F64820A4070010A737E245967D057208DCF313F588F0F11F42C</stationID>
+ <name>Radiol�M�aga</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1130841597BC26F27C3D8B933EE4C72D78F55B06CBF0E27D932CBF082DA1A5B84FB1A3F146</stationID>
+ <name>Universal Radio-Benalm�ena</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11308417151ED68D2A444937D92AA5FF7241292C1C2956BF58D7E41732608680BBB6835070</stationID>
+ <name>Vital Radio-Fuengirola</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1130841744735FF460FF7ABE927247012F5BF9BDFE58C585E27C7482AFAF6FD6E4176654D8</stationID>
+ <name></name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.6</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
diff --git a/kradio3/presets/spain/mieres-del-camino.krp b/kradio3/presets/spain/mieres-del-camino.krp
new file mode 100644
index 0000000..19cc2b5
--- /dev/null
+++ b/kradio3/presets/spain/mieres-del-camino.krp
@@ -0,0 +1,305 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Jess Genicio, &lt;jesus_genicio@wanadoo.es&gt;</maintainer>
+ <changed>2004-10-25T23:56:21</changed>
+ <country>spain</country>
+ <city>Mieres del Camino</city>
+ <media></media>
+ <comments>Contiene datos fusionados</comments>
+ </info>
+ <FrequencyRadioStation>
+
+ <stationID>1098660445EE1A5BD8001B11856CF7AE467C8F07FB59F56DE5B05975332314AD7F0A9EECA7</stationID>
+ <name>Radio 3</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.4505</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>10986596952CCE3C76962475D617530D227FA1ED3A972DF90065DD0CA5E2D943C23EEDAB42</stationID>
+ <name>nueva emisora1</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.3501</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1098659698D4DB898DCC049EA05CF965612A222CE1E704DEC950F15F5AFC182E1B416C4B14</stationID>
+ <name>nueva emisora2</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.2252</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>10986596988497B359A0F8E53EE9B417858ECE55F15107D348CF89C8E17362C6F43760CB2B</stationID>
+ <name>Cadena Cope</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.6252</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>10986596994587C9D3E1EE419A9F02E682FC4A95D9AC9423A532FF04BBF2804F62A395FEE9</stationID>
+ <name>Jazz</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.1253</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1098659699D306996FF92832D8C51E550FBD0A5B57016630050A51827032B8A6DCA8711747</stationID>
+ <name>Cadena Dial</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.2253</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>10986597003BFB3AE84A49A351DC6B8E7D4415D8A120A1E8A9C55D3FDCC9CDA4941DB2E252</stationID>
+ <name>nueva emisora6</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.2503</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1098659701ABDA2D3918893E65AC7396EEEF2967257ABF3B511D86DD0EBB7E872654649382</stationID>
+ <name>Cien por Cien</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.8504</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>10986597017F9342709124453362B27507A790E94579FA5D9FD0C23A22BA399BA6FC5E65B8</stationID>
+ <name>Cadena Cien</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.9254</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>109865970348513C5E19E3D5F45E6452DDA69815D485123228A52163E46D14A961970CD415</stationID>
+ <name>radio Parpayuela</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.9754</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>10986597069451711B1976803DB35EFA1FE1384D2086365DB469611BAD25EA02823055E8AA</stationID>
+ <name>nueva emisora11</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.6506</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1098659707879B2C0BA6AE6C1D8EE3552371560C1E0C5417F45CF0ACCF140BB190C0439EA9</stationID>
+ <name>Europa Fm</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.0256</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1098659707C2649F4A8528052556452483DBAA42E7B3307FD15CAEBCF8AC658EB297805888</stationID>
+ <name>nueva emisora13</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.4506</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>10986597086580C8D51531A423B8BED3F735F12BF09A7C8B2B77C29349599D8E3A931A28A5</stationID>
+ <name>Los 40 principales</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.6757</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1098659708743BD54F1C0EED532C3623FF5D48F25C04F7B6FB641C604F0CC8411B116EC623</stationID>
+ <name>Cadena Cope</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.1507</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1098659711B0D47ED16C0EC78BFFB5B9B5B89BA33BBA4D38F060CFCA76B2C3DA893C946C1A</stationID>
+ <name>nueva emisora16</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.076</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>10986597126AE6051EA42BE9AD92E76586718B07F887C09E73672AA4F55E8C3514844CC1A0</stationID>
+ <name>nueva emisora17</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.851</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1098659713FEAFE4D0B9F9E4D0E8921EEF2984907657DEDB6B8548EEA58F441188674683C8</stationID>
+ <name>Radio 5 todo Noticias</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.851</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1098659714AF6D3500ACE8B295119E7C5909117D21B3C50EAE8F5DF6FDA479D107F4C838B3</stationID>
+ <name>nueva emisora19</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.451</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1098659716AF12B0D500430759B4C9F70127AC0B3188D18B6182986BC5D53D74407F0692EE</stationID>
+ <name>Kiss Fm</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.951</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>10986597176300088552B5728F9821D155102E11604268DA3E17699788F9CB65E20C7005D4</stationID>
+ <name>nueva emisora21</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.376</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>109865971874FA2C2A9481B2B1B984A7CA97A7E4859C90CFC49BC823AEC2364F37DC4F50C6</stationID>
+ <name>nueva emisora22</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.526</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1098659720307E6B5FEE967A58E272CFD74565D29DCB6F152F2AE537AA38A1F4E4E156FFA2</stationID>
+ <name>Radio Vetusta</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.951</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1098659705DC43F242B73B56456631A456C8B172556735DF256956CDCA93FDA27BF9AC5A17</stationID>
+ <name>nueva emisora10</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.0506</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>10987413337A3DF4C58EEBDD0FE96F287C0C7B22C9A14B2C1A77345E15315515D99CF06266</stationID>
+ <name>nueva emisora2</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.4251</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>10987413336A287E9F0C2AC3CA2C7F733BC6486110D14FA9C7290C19DADDF9897CC0CF72A1</stationID>
+ <name>nueva emisora3</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.5252</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>109874133449BCB07F366C07397217304580438CB4C010EBA4309E897CDE4A8C872190D550</stationID>
+ <name>nueva emisora4</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.3252</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1098741335C6E041EB75930B9F3FDFBA7610E59D9FE2861A885FBF824BB55AC44BF4AE59C3</stationID>
+ <name>nueva emisora5</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.7252</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1098741342457EEAB42CDB5286519916B83E06AD5797E887DD14E3947C721ED9F5212127C4</stationID>
+ <name>nueva emisora12</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.1756</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1098741344D42FAE3CB9E9758E4DDA438740D8006A2EAEC25B86F9A26982C8C0287CFAD417</stationID>
+ <name>nueva emisora14</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.5506</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>10987413495A3B99946ECB72F8B074478CAC124CB61F898DB8E3B01CD72138325CA0A068A5</stationID>
+ <name>nueva emisora17</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.026</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+ <stationID>1098741351B9A0FB6B1DCA9921C6D45A7D99EC829EB351B614C33159210DCF5B10E874487B</stationID>
+ <name>nueva emisora19</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.376</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
diff --git a/kradio3/presets/spain/sevilla.krp b/kradio3/presets/spain/sevilla.krp
new file mode 100644
index 0000000..9ff6dc6
--- /dev/null
+++ b/kradio3/presets/spain/sevilla.krp
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Carlos Alberto, &lt;carlos_alberto@supercable.es&gt;</maintainer>
+ <changed>2005-10-11T15:56:43</changed>
+ <country>Spain</country>
+ <city>Seville</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1129038970C0E3FA3376656AB620019FC836EEC7DFE04E1294CBF9F1BFD2336466BC262DF7</stationID>
+ <name>Radio Marca</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.8501</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1129038970DA8CE8969CA50C014E77DFEC90A29AEF6B89D7DDE52FC469B76790D9CCA85B4B</stationID>
+ <name>Onda Melodía</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.2501</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1129038971BE9847C483B877AAF71D16FF819827A6765D96CD442CA5EEF3441B0274A5868F</stationID>
+ <name>Radio 5</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.0252</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1129038972AC0F1CDB47104C2B4BE7ADA06DCD94AB7F0EE0D2161FD4D8FDC9A0057A2EE3CA</stationID>
+ <name>Andalucía Información</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.8502</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1129038973A956D35299F5B95BEBEBE659881E25C453B9B76D3E736F8A9B6A9D135E188133</stationID>
+ <name>Radio 1</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.2003</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11290389766CE266E48BF7714DCA3149550533DAD4AB0C8DBE7996C7F82D20C276E793C565</stationID>
+ <name>Radio Clásica</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.7254</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1129038978F13DA40431431FAC01615772A50E465E9E4828F23C56F3450D47125751CE1FD4</stationID>
+ <name>M-80</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.8505</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1129038979C938884510DE95D3B3526779D898C06D094E043DD6C5CC685B84140789F2BF69</stationID>
+ <name>Onda Cero</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.9255</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1129038980767DD79181FC9EBE1CB90250F783B11301737F791C9460D709BF82FFA707B141</stationID>
+ <name>Máxima FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.5506</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11290389817F0691AD1ECDE07D0FA8B6BDA1BCC3C340F3333E2652E3B2D19410C30EAF511E</stationID>
+ <name>Los 40</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.1506</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1129038983042FC729F4DF9893938EFAA58FF11D2F5E3977C2ABC61799A239AEA502B3E66F</stationID>
+ <name>Radio 3</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.8757</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1129038985F3EC42A078A347BDEDBDCC79B3992F9A5C50D6E5B3B9CB32390B1376DD9A098D</stationID>
+ <name>Kiss FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.326</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1129038986960E8B2FDF30BA54F5623014D3D99E31BA432D27E23ABDA10E98DC55ECFC4E70</stationID>
+ <name>Radiolé</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>112903898735D648D255CF35C3248306D69D30D910A809AAAA6EAA9EA0AAC392D91416A934</stationID>
+ <name>Cadena Cien</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1129038987003D8E1091F0874B386D3C5A5B99D2D436DA6EB53A1792AA29E3A8EC70977A1D</stationID>
+ <name>Dial</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1129038988E79077DA2B9A365429AEBF336813A69004FB99AD225C0F3467415E8D5F2E8F11</stationID>
+ <name>Sevilla FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11290389889DE7ACA627FC04762FF35D306402D33B8F0680A86D723CAAEFFFE5C711C613E1</stationID>
+ <name>Radio Sevilla</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.251</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1129038989BF9731332707B791A6CFA031CE273384703B321464745F3976581A1DBDA67E13</stationID>
+ <name>Canal Fiesta Radio</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.951</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11290389917AF43226EAA3EC99C61F84B8E191B30D4452C38DA87096A34AF39BDA4EDBDEC7</stationID>
+ <name>Canal Sur Radio</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>112903899263A78983867AC791F3BD81C9F7D2252BB928BA515AB08375ACEE92F457C4722D</stationID>
+ <name>Rock&apos;an Gol</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.726</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/sweden/Makefile.am b/kradio3/presets/sweden/Makefile.am
new file mode 100644
index 0000000..8916dea
--- /dev/null
+++ b/kradio3/presets/sweden/Makefile.am
@@ -0,0 +1,18 @@
+SUBDIRS =
+EXTRA_DIST = "gothenburg.krp" "oestersunds-kommun.krp" "stockholm.2.krp" "stockholm.krp" "vaxholm.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/sweden/"
+ $(INSTALL_DATA) "$(srcdir)/vaxholm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/sweden/vaxholm.krp"
+ $(INSTALL_DATA) "$(srcdir)/oestersunds-kommun.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/sweden/oestersunds-kommun.krp"
+ $(INSTALL_DATA) "$(srcdir)/gothenburg.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/sweden/gothenburg.krp"
+ $(INSTALL_DATA) "$(srcdir)/stockholm.2.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/sweden/stockholm.2.krp"
+ $(INSTALL_DATA) "$(srcdir)/stockholm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/sweden/stockholm.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/sweden/vaxholm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/sweden/oestersunds-kommun.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/sweden/gothenburg.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/sweden/stockholm.2.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/sweden/stockholm.krp"
diff --git a/kradio3/presets/sweden/gothenburg.krp b/kradio3/presets/sweden/gothenburg.krp
new file mode 100644
index 0000000..5ee6e8d
--- /dev/null
+++ b/kradio3/presets/sweden/gothenburg.krp
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Fredrik Sörensson, &lt;sorn73@yahoo.com&gt;</maintainer>
+ <changed>2003-05-17T22:50:45</changed>
+ <country>Sweden</country>
+ <city>Göteborg</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385401E45D9591A26D258D967342665C9399AE2A87B9F605B51E3A2CE05BB2687475F8</stationID>
+ <name>Sveriges Radio P1</name>
+ <shortname>Program1</shortname>
+ <icon></icon>
+ <frequency>89.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401F29C60BD68431BCAA0388655FBC64776BE0234DD11CC3D718EAD536C541A7DFB</stationID>
+ <name>Sveriges Radio P2</name>
+ <shortname>Program2</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540159B0279A211A3A608D30C4BC66E90992BEE497857AE5BA8EC1C08AF415E4B881</stationID>
+ <name>Sveriges Radio P3</name>
+ <shortname>Program3</shortname>
+ <icon></icon>
+ <frequency>99.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401DD90BA294B72BA8F10C8C6D39B9F127CCE35BA4B14DED2451CB1451320EAE306</stationID>
+ <name>Sveriges Radio P4 Göteborg</name>
+ <shortname>Program4</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540108640FF9D5A0E7CA7974AB1D8A40D5B72009968AF2667D4DBC2B0995DA06AA41</stationID>
+ <name>Göteborgs närradio 1</name>
+ <shortname>Närradio 1</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401EC982F4973E603F6890B34C51BA6F294370391F27404C486E2E89B634EDC7234</stationID>
+ <name>Göteborgs närradio 2</name>
+ <shortname>Närradio2</shortname>
+ <icon></icon>
+ <frequency>102.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401AF6B977007CC8EF40C6ACADA7B0CF380DCE1F5EE7F6872CB9AE9F659576DEB84</stationID>
+ <name>Göteborgs närradio 3</name>
+ <shortname>Närradio3</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401774992835844B2037319FB83679B804DE38C9FB32E882E242404FBB78C5BCDA4</stationID>
+ <name>Lugna favoriter</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>104.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401FFDEFF128FBC6585A4749F965FC224A11974562DE09584A273DD3CFDCD76D5E0</stationID>
+ <name>NRJ Göteborg</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401038BDB60A8DA9246E432A11087C04C2C92984FF466B82E8A7014274D41B4DA45</stationID>
+ <name>RIX FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401FA5B083AC4EF09A9D431EC1453A086877912CC3DCA74CD046212D3F727184244</stationID>
+ <name>Radio City</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401C538E4DEAFC2E08578EBC83A087B1E60F3D24CDD3772333133942F21CB4451C4</stationID>
+ <name>Mix Megapol</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>107.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/sweden/oestersunds-kommun.krp b/kradio3/presets/sweden/oestersunds-kommun.krp
new file mode 100644
index 0000000..027fa78
--- /dev/null
+++ b/kradio3/presets/sweden/oestersunds-kommun.krp
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>martin, maki@brunflo.info</maintainer>
+ <changed>2003-04-03T13:20:06</changed>
+ <country>sweden</country>
+ <city>oestersunds kommun</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385400C986EE2B0F480170350A31F487FD2175BA0F23FFF1D9AA230B36FFB5204EC35E</stationID>
+ <name>SR P1</name>
+ <shortname>P1</shortname>
+ <icon></icon>
+ <frequency>87.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385400A28B8174EBE324BD89FF0F441BC377AC8C2A9B27EF7C14FBE2569152AC76B16E</stationID>
+ <name>SR P2</name>
+ <shortname>P2</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854008889C305C827FDB605FB763670E0283FB00308A1319A20892159D00ADFF91E47</stationID>
+ <name>SR P3</name>
+ <shortname>P3</shortname>
+ <icon></icon>
+ <frequency>94</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540039A2D98B6B402A14A63F35F169F5C553225764CAE2E5BF232031DFE25C8EE7D7</stationID>
+ <name>SR P4 Radio Jamtland</name>
+ <shortname>P4</shortname>
+ <icon></icon>
+ <frequency>100.402</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385400A64858F15A3970F756CE774A1649DF8555C2F8D2F6F2347C6F35FF2E60CC9380</stationID>
+ <name>Rix FM</name>
+ <shortname>Rix FM</shortname>
+ <icon></icon>
+ <frequency>104.002</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854009860B1CC40146A8FDA3A18731C6397753C633B3434266948404C7E9E84314499</stationID>
+ <name>Radio City</name>
+ <shortname>Radio City</shortname>
+ <icon></icon>
+ <frequency>107.203</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+--
+http://www.brunflo.info
+<><><>
+GPG-Key @ http://www.brunflo.info/person/maki/MARTIN-KEY.ASC
+<><><>
diff --git a/kradio3/presets/sweden/stockholm.2.krp b/kradio3/presets/sweden/stockholm.2.krp
new file mode 100644
index 0000000..7efd39e
--- /dev/null
+++ b/kradio3/presets/sweden/stockholm.2.krp
@@ -0,0 +1,350 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Dag Öhlin, &lt;d.ohlin@telia.com&gt;</maintainer>
+ <changed>2004-07-12T01:34:53</changed>
+ <country>Sweden</country>
+ <city>Stockholm</city>
+ <media>Radio</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10912905606AAEF139724668A1BD2C4C11E9F5D0D6DE4197A7AA251ECDF3F9C139915149B8</stationID>
+ <name>P6 SR Stockholm International</name>
+ <shortname>P6</shortname>
+ <icon></icon>
+ <frequency>89.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056012DBA0C4DF73FA86D8784B1CA356E89976291C0887E3D99D2CD8C9099F097288</stationID>
+ <name>Radio Nacka</name>
+ <shortname>Nacka</shortname>
+ <icon></icon>
+ <frequency>90.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056071E8966817A233BC98AADBA82B540E317ABC169C9099847AA4BE073E670FDEEC</stationID>
+ <name>FM Norra soedertoern BMU, Tumba</name>
+ <shortname>FM Norra</shortname>
+ <icon></icon>
+ <frequency>91.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905607A91C511A17475ABAE0583C7CDD8959FAB6BDD68C54E45705069A5EC21CDD3EF</stationID>
+ <name>SR P4</name>
+ <shortname>P4</shortname>
+ <icon></icon>
+ <frequency>93.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905604866DDD4AA84CBBF48C8C9D77294D655D78AED1703ADB1AEE6E9B8D0745E075F</stationID>
+ <name>Stockholm Naerradio 2, Student</name>
+ <shortname>Naerradio 2</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560485A036B6099D67C4F6761B78340D88564FF3D47F946099FC4E25FE7F3EE60B3</stationID>
+ <name>SR P2</name>
+ <shortname>P2</shortname>
+ <icon></icon>
+ <frequency>96.2</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560300DC610C19547276D3427163A0A8245F4F941463E6F5C1CBE48DBCF694EE67F</stationID>
+ <name>P7</name>
+ <shortname>P7</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905604B5BD0F9504B4FAFDC96DEC21E407F97E900C36C8FB1DF5222D0711F57B1F33E</stationID>
+ <name>NRJ Soedertaelje</name>
+ <shortname>NRJ ST</shortname>
+ <icon></icon>
+ <frequency>100.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560ADE0F661D249DF25EE0D269B6BE4D6452A0E2AA7DCBD6259B1EF5F5E99C2C88F</stationID>
+ <name>Radio Viking, Ekeroe</name>
+ <shortname>Radio Viking</shortname>
+ <icon></icon>
+ <frequency>101.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056017E8C4C7F8C069B2D580D594BCF788FA62F368895FDDC5BBFE43D83FA78D6B01</stationID>
+ <name>Svenska Favoriter Metro FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905608DB40A775DBEC51C7293F09AE09315947CFD59C8666173898061F53BBB3AB545</stationID>
+ <name>Mix 104,3 Megapol</name>
+ <shortname>Megapol</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056085AC0A68995E2EE075D3C3370A91CAD253A0D2D7FCE4A75386643F7162EBC965</stationID>
+ <name>NRJ Stockholm</name>
+ <shortname>NRJ Stockholm</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056051275A675833B94111D3B75A08F31833270024AD3DCF7757A0B2547D49081F7D</stationID>
+ <name>The Voice</name>
+ <shortname>The Voice</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056016D424433FD7E5B96B50DE51F9A5C8AD4064B7E2A1E330DB156064DA11863E10</stationID>
+ <name>Vinyl 107</name>
+ <shortname>Vinyl</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905600B677D81A4321DC396E5BBCDBC6854003796EDFDA5DC111B5177F2DA84854ABD</stationID>
+ <name>Easy FM</name>
+ <shortname>Easy</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905606642FD3CA77DA06DCEBE1A800C550FCBE3DE07EFF33198A9EF40E182FBEBD115</stationID>
+ <name>SR P1</name>
+ <shortname>P1</shortname>
+ <icon></icon>
+ <frequency>92.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905604DA99B566FC6EF09760857CE5EF4EFDE13AA65EB94DA53EDEDF2C220309CF0C3</stationID>
+ <name>SR P3</name>
+ <shortname>P3</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560B718E7508C9F716CFD4B978BF66A9023CA3B058563B2F25E9FD8BBEEEE1D0B18</stationID>
+ <name>P5 Radio Stockholm</name>
+ <shortname>P5</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560A92ABC0B0F532D81E8E4884EFC351D6562AC608116B6928C5D79787CD7450079</stationID>
+ <name>Radio Sydvaest, Stockholm</name>
+ <shortname>Radio Sydvaest</shortname>
+ <icon></icon>
+ <frequency>88.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560F3B26965C0400A632677E4F38AE0BEE5057A97F4187D74D3A25C4FA6393DEE37</stationID>
+ <name>Stockholm Naerradio 1</name>
+ <shortname>Naeradio 1</shortname>
+ <icon></icon>
+ <frequency>88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560C476E3E8B85692243FEA165F4D0BCFE706DFD3451C1D35A8300A79F4CF814029</stationID>
+ <name>Lugna Favoriter RTL</name>
+ <shortname>Lugna Favoriter</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560651A044E813C1ED68313FBAF553827D138D6F5AB6D3772B2453403CEAF2DC099</stationID>
+ <name>Rix FM</name>
+ <shortname>Rix FM</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905608F3DC01D8101C262135D3C5096C32E782CD9A32DF994F9120018A59170EED086</stationID>
+ <name>Power Hit Radio</name>
+ <shortname>Power</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560A0609C423A2D937F10B96A10706756C9FBE7734D62D87888FFE6D5FB7E0089A4</stationID>
+ <name>Rockklassiker</name>
+ <shortname>Rockklassiker</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905601C098C808CF6B524D37261CCB836FEBBFC1C11A8AD1495711A8AD5B776966066</stationID>
+ <name>Radio Roslagen, Bergshamra</name>
+ <shortname>Radio Roslagen</shortname>
+ <icon></icon>
+ <frequency>91.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056013153B8444CC738CA7FF00599BC35518A9B8FA175707CF9FD7FBCB295E331A41</stationID>
+ <name>Radio Haninge, Haninge</name>
+ <shortname>Radio Haninge</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905608A99FADA6834E9701FF2428D2A0AC52AFF27F709287F7C145FA769F0ABB22D01</stationID>
+ <name>Radio Roslagen, Hallstavik</name>
+ <shortname>Radio Roslagen</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560CF5535A76CA0FA53A70AE5F1984657C5525C0A1F8B1A7F2DB61B62D3A5FC142B</stationID>
+ <name>HIT FM, Jaerfaella</name>
+ <shortname>HIT FM</shortname>
+ <icon></icon>
+ <frequency>94.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560B9374F52C99BE6A209A7C01274A57165A673CE665A3239434477C7B0081296D6</stationID>
+ <name>Radio Lidingoe</name>
+ <shortname>Radio Lidingoe</shortname>
+ <icon></icon>
+ <frequency>97.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560B3B138919AD4F898373178B2D702251F63418C0CFE996629E32FC8D2870BA25E</stationID>
+ <name>Radio Sigtuna</name>
+ <shortname>Radio Sigtuna</shortname>
+ <icon></icon>
+ <frequency>88.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056097A725332D49613BB4F9DEF2D4CBA2B83677F3402777AAA9250B04200A2FF20F</stationID>
+ <name>Radio Roslagen, Norrtaelje</name>
+ <shortname>Radio Roslagen</shortname>
+ <icon></icon>
+ <frequency>107.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560227A38C40436A7295DF0816EEC011FBCCE34249D1C23A2A1D7A166685F42CF14</stationID>
+ <name>Radio Nynaeshamn</name>
+ <shortname>Radio Nyn</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056082E4DE620121B89F75C836CEFBF3331334BC30761D893885B59924F628B4F0F9</stationID>
+ <name>Radio Rangarang, Radio AVA, Sollentuna</name>
+ <shortname>Radio Rangarang, Radio AVA</shortname>
+ <icon></icon>
+ <frequency>94.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560D9515833575F3331367DD21DEE8CE81C42A771447A98DD9F83CB9DF041FD7788</stationID>
+ <name>Radio Sedaye Shoma, Solna</name>
+ <shortname>Radio Sedaye Shoma</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560ADB0482FE20E0CE17675FDC96486D601D4B9459C3A1BE2164B27FD1B97D1EDF7</stationID>
+ <name>Radio Nacka</name>
+ <shortname>Nacka</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905604218134F07F4D8F451B14AB062B3172A31700DBE0883D4F0CF500447FA0CA0EB</stationID>
+ <name>Stockholm Vaesterort, MRS</name>
+ <shortname>MRS</shortname>
+ <icon></icon>
+ <frequency>90.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905609B92B10DADEAACE7CA3540021642B6A69DD8E8745AD19C2CBF94570D1BE14D97</stationID>
+ <name>Stockholm Jaerva</name>
+ <shortname>Jaerva</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905601433C6FECDE72498C0A406D341322DF268694E004B7FDBC5029FFFC38551B50D</stationID>
+ <name>Stockholm naerradio, Radio Sydost</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109129056041998E2C57DBAF411B0F4E4457FA3B67C61ABACDC31A177CF30962EE170C922A</stationID>
+ <name>Radio Match, Nykoeping</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560707A00DD2349A643C946943C11BDF507419ADD0E7F28822F9B5C909E6DEB34F4</stationID>
+ <name>Radio Futuro, Soedertaelje</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>88.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912905605F4ABAE5A0AA48986F4DCCB887167B64C1CB58C532146BC99A09430F2DB0F915</stationID>
+ <name>Radio Nord, Taeby</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091290560513F932C4A4AC9AF6046007EAD25EDF685392ADB499703DDDD287F4CA7C17A2E</stationID>
+ <name>HitNet FM, Radio Oesteraeker, Aekersberga</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/sweden/stockholm.krp b/kradio3/presets/sweden/stockholm.krp
new file mode 100644
index 0000000..2d236b4
--- /dev/null
+++ b/kradio3/presets/sweden/stockholm.krp
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Erik Erlandsson &lt;erik.erlandsson@nilhe.se&gt;</maintainer>
+ <changed>2004-01-25T23:56:54</changed>
+ <country>Sweden</country>
+ <city>Stockholm</city>
+ <media></media>
+ <comments>Stockholm (South)</comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>107507020966107243C3D47E67B2CF5657B881D914E231E91CE8FF61ABEF033CED174DFEE2</stationID>
+ <name>Radio Sweden (local)</name>
+ <shortname>Radio Sweden</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.6502</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>107507021502C5ADD2DECAEEB8DB5A5F1EBB82C393356E952F45ECC4D671ACF40F26D026A2</stationID>
+ <name>SR P1</name>
+ <shortname>P1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.4503</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>107507021855B096A693936A2DA7BE3B81E82C72904646CD143BAF68BF8E6169AD3C30F639</stationID>
+ <name>SR P4 Stockholm</name>
+ <shortname>P4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.8504</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1075070222D1144915192B2DA13BC0E83CC55BE53D3FBEBF512F1EBEDEF3456AA18A61BC12</stationID>
+ <name>SR P2</name>
+ <shortname>P2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.2006</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1075070228BBDB0BE2F5E39A77337BCE5D1676F68624833E13BA7B4F681C87FE044227735D</stationID>
+ <name>SR P3</name>
+ <shortname>P3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.3258</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>107507023745946D6418A2C05EFD64FA855936672213DBC5F0C70AD0F9565902D2DDECAFD5</stationID>
+ <name>SR P5 Radio Stockholm</name>
+ <shortname>Radio Stockholm</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.326</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10750702400521DBDC09EC65C8CE3CF58BB5D382C6A7ABE280FE36AC5FDA174076E790FB72</stationID>
+ <name>Lugna Favoriter</name>
+ <shortname>Lugna Favoriter</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.701</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1075070242EF64B47AF55A2CF10059C5D76A0D936C2244964BC06804DD6C34AB342A3467BD</stationID>
+ <name>Rix FM</name>
+ <shortname>Rix FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.576</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1075070243FA59BECAE371AEFB2684917652C845FD977751D377AE1BAC22D0708BE3565349</stationID>
+ <name>Power Hit Radio</name>
+ <shortname>Power Hit Radio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.301</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1075070244FBD78AC79177A6F3FD706C171FA67751E1E4C76B969EB722B0FEA38E04A0C096</stationID>
+ <name>Rock FM</name>
+ <shortname>Rock FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.601</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>107507033734B925F491BFFFFB8F4BE3E09AD217C2A7FFC51CA39DA16B96EC7096DD5E757B</stationID>
+ <name>Vinyl 107</name>
+ <shortname>Vinyl</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.131</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1075070396D3F9DB5998F3B71BEDE88B9F3DC7BBC1820142BD2895DBF1124C7C342D0057EA</stationID>
+ <name>E-FM</name>
+ <shortname>E-FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.501</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1075070234FA2C9C7D76D4E73146F4384D76910D6C18FECE19AC9BFF8BB916C74F78653209</stationID>
+ <name>Metro FM</name>
+ <shortname>Metro FM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.926</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
diff --git a/kradio3/presets/sweden/vaxholm.krp b/kradio3/presets/sweden/vaxholm.krp
new file mode 100644
index 0000000..e4a55ef
--- /dev/null
+++ b/kradio3/presets/sweden/vaxholm.krp
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Jostein Chr. Andersen, &lt;jostein@josander.net&gt;</maintainer>
+ <changed>2004-02-19T09:05:05</changed>
+ <country>Sweden</country>
+ <city>Vaxholm</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1077175514A32B23A3BB56FF5CBFE08365D9D3C2576346295A047E183D3787EF8C86670FED</stationID>
+ <name>Sveriges Radio P1</name>
+ <shortname>SR-P1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077176397038FB37FB72E64FB90BA02C4FE82CBE370CF8737E27A8F4C01CE612134AAB927</stationID>
+ <name>Sveriges Radio P2</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077175520A096202AE824E27F5CA1EE55EF1CF2E307EC77EC78029FFDEC5B51E2D10D5C7F</stationID>
+ <name>Sveriges Radio P3</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771755230FB4E1B28A34EC93BDE4DD3F19D2B25E5ABB36E4A7ACE7D49CB00126CB889A0E</stationID>
+ <name>Sveriges Radio P4</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077175527CAAA82381624F031C92DA5E7F1928812B9DD5D2B00B3DC0C01FAC0CF78D8974B</stationID>
+ <name>Sveriges Radio P5 (Radio Stockholm)</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771755309717C67829293F3503D36E90E69EB49468E5B6E07EFEA2D54CA5082539D1710C</stationID>
+ <name>Sveriges Radio P6</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077175532B0062724B205B3EFFE0BDAAE3599D3ABC7D50C936C3EBCE26C2B8E3304A5CCCF</stationID>
+ <name>RIX FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107717553328985984F280F5788515CEC40D3F21B4521110912E36D6F8DE950CBC4B06B5B9</stationID>
+ <name>Mix Megapol</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077175534A819629406C56310E0E35E84596CA120AF2C48944025943D65423D30E009E427</stationID>
+ <name>NRJ</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077175537B758EBE8EE2D63D8F90AEFFFD721EB7537008082BA6A6A36C1DE84EAB212551F</stationID>
+ <name>Lugna Favoriter</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771755386025F683443B33250FF7DED9BEB299C015F88A30147B5C3BE0BF4BFA25284F63</stationID>
+ <name>WOW</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771755185C602C92A8F3F340C56FFF61933119DF8CF9704F3EDE1154A33BB5DFD3F66A64</stationID>
+ <name>Radio City</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077176153D5D1BEBF79D494276641D613CC18C4F3674DFD36403CE8B3A6F28124418B4271</stationID>
+ <name>Power Hit Radio</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10771765235101EAB9AF5002928D7481A0979887369437949B542EB4A2C2EECE511DF74DE7</stationID>
+ <name>Rockklassiker</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077176538BA24524D2821BE1B1A06BF163E5029CA6FE35F6A3744034C158F4C00395952EA</stationID>
+ <name>Easy</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.5</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
diff --git a/kradio3/presets/switzerland/Makefile.am b/kradio3/presets/switzerland/Makefile.am
new file mode 100644
index 0000000..bba93ad
--- /dev/null
+++ b/kradio3/presets/switzerland/Makefile.am
@@ -0,0 +1,14 @@
+SUBDIRS =
+EXTRA_DIST = "diepoldsau-cable.krp" "stansstad-cable.krp" "wrenlos-cable.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/switzerland/"
+ $(INSTALL_DATA) "$(srcdir)/diepoldsau-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/switzerland/diepoldsau-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/wrenlos-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/switzerland/wrenlos-cable.krp"
+ $(INSTALL_DATA) "$(srcdir)/stansstad-cable.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/switzerland/stansstad-cable.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/switzerland/diepoldsau-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/switzerland/wrenlos-cable.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/switzerland/stansstad-cable.krp"
diff --git a/kradio3/presets/switzerland/diepoldsau-cable.krp b/kradio3/presets/switzerland/diepoldsau-cable.krp
new file mode 100644
index 0000000..0d879bb
--- /dev/null
+++ b/kradio3/presets/switzerland/diepoldsau-cable.krp
@@ -0,0 +1,319 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-1.0beta3b</creator>
+ <maintainer>Thomas Reich, &lt;lvol@gmx.de&gt;</maintainer>
+ <changed>2006-01-14T22:00:40</changed>
+ <country>Schweiz Suisse Switzerland</country>
+ <city>Diepoldsau</city>
+ <media>cable</media>
+ <comments>http://www.diepoldsau.ch/dl.php/de/20050308090414/Programm-+und+Frequenzliste.pdf</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1132489058C9309FF4601A441216F100AE43B463091B97B0B399292080CC3BC9EF0C30C3C9</stationID>
+ <name>Radio Swiss Classic</name>
+ <shortname>CH Class</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137271716815A76FD73FF4E0ED1C5D275A96F46E0B120CEA0BB541285775F16342B4E414C</stationID>
+ <name>Radio Swiss Jazz</name>
+ <shortname>CH Jazz</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113727198457880BE185E03625A53D5E82DF783F0C9D92D051DD705CB3518A94273EEA0660</stationID>
+ <name>Radio Swiss Pop</name>
+ <shortname>CH Pop</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137271842132D9459B73944B32A571446F1E771B67C3BABADA807DC4404C7DD7AB6176CE1</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113727199097589B544670E6EF4196870109A7E11980C36D922ED1E58BA1F7E640E71957E8</stationID>
+ <name>Swiss Music Radio</name>
+ <shortname>CH music</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137268639EA10106B1671B91388175A1DB681AB261453C29F5EC5EA936E7EA7FF4912BF26</stationID>
+ <name>Bayern 1</name>
+ <shortname>BR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137268704E527735017525CD0266F8A234F5F710DB4162A6A99A4FAA189B12BCD26B45BF6</stationID>
+ <name>Bayern 2</name>
+ <shortname>BR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11324889370621F53C1166AB7B26BE88E31143B027CBE36E14A75256794EFEBCAF0AA101E2</stationID>
+ <name>Bayern 3</name>
+ <shortname>BR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11318213127EEEFD340C4C410CE2DF1A9A03C45F9890F934DA7E7FA8E64B28C088E0978A68</stationID>
+ <name>Bayern 4 Klassik</name>
+ <shortname>BR 4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137271491BAB360EBDDE8B7E2BB5B1FE5228489CE1ABA7B2B2BF4760C84E25F713799E8E2</stationID>
+ <name>Radio �terreich 1</name>
+ <shortname>�</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113727150907D42164116FF3722571FAC4C46F96E5155CB5542EBE56313480E3E86B6A09D6</stationID>
+ <name>Radio �terreich 2, Vorarlberg</name>
+ <shortname>Radio V</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11324888428D48C321DDB108D3261F086670066FE147F61C9314E1146EC61A97ED441AD4DE</stationID>
+ <name>Radio �terreich 3, Hitradio</name>
+ <shortname>� Hitradio</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1131821237026C36D4F8AD3D56AB13959EC4722B19E424C6395243C145A468DB7A8458459E</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DLF</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137271600FC15F7BE653ACA78FA498901EC1AA49F5F5D9656521EAA7599E8DA93386A548C</stationID>
+ <name>Antenne Bayern</name>
+ <shortname>Ant. BR</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11372716216292BE57CF82E1F81A0B030E9D43FF889EF3D20E752945941AF9F513FF943EE1</stationID>
+ <name>Sdwestrundfunk 1 BW</name>
+ <shortname>SWR 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.95</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113727164392D9D791F7E29025FCE3883CB5EEC727E68DDC917792C78225FAA8257BCDDB4A</stationID>
+ <name>Sdwestrundfunk 2</name>
+ <shortname>SWR 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1132488544D77FCB9465E7EA3138F24B88CFDE3C12F105B1BE47A040CD0A4E4DE6C18B7B75</stationID>
+ <name>Sdwestrundfunk 3</name>
+ <shortname>SWR 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137272008E6D34F0BB3E733BA0474862A8971E4046E027D11E64327D51A9326844DF719B4</stationID>
+ <name>Sdwestrundfunk 4 BW</name>
+ <shortname>SWR 4 BW</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11372716977723C06E5EB3226A573B4FB08ECE302CFF50B8B7B6C7F6A7E121082FA1043075</stationID>
+ <name>Deutsche und r�orom. Schweiz 1</name>
+ <shortname>DRS 1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113727173679728CA7C73020BCF3B910D030DD14B228BE84C450F084F11C6BFF98A5CE8E27</stationID>
+ <name>Deutsche und r�orom. Schweiz 2</name>
+ <shortname>DRS 2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.65</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137271753433CE2266FA7CE924E3C39D6C1980A8AE3705F185AAC15126F63AF34DCFFB480</stationID>
+ <name>Deutsche und r�orom. Schweiz 3</name>
+ <shortname>DRS 3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1132488990D44035C12EC7299C4E6CE05F74AC6DD06D4DE1EAA3B9B239543EE1C1D92D5CF4</stationID>
+ <name>BBC World Service Europe</name>
+ <shortname>BBC W</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113727190514CAC8725769DF2E5CB783D1CE9278E8B58A2E64FFCBA45E80E171742BC55B44</stationID>
+ <name>Voice of America</name>
+ <shortname>VOA</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137271799AF2B7C305597EF8201ACAB4CB183DEC218247EBDF0E52859F74813FE44DAB935</stationID>
+ <name>Radio Ri</name>
+ <shortname>Radio Ri</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11372722787507B897D2222853FACD11B9FC250FD294091CAAB21087EECB8F19B069B7A379</stationID>
+ <name>Radio Grischa</name>
+ <shortname>Grischa</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.4</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137272175CA278A9531E9740388CB57BA64648C8E02B6EC22C700E03CCFE991C2781832F5</stationID>
+ <name>Radio Liechtenstein</name>
+ <shortname>Radio L</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11372719297E4FDF332619DB5241B76C072F6291112B2C9C9BFC339822BB0760C354EA8847</stationID>
+ <name>Radio svizzera di lingua italiana</name>
+ <shortname>Rete uno</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11372719456D252143F55F018F20DC9FAD5183B72A5FDC97624C06B1524E674C46431E4071</stationID>
+ <name>Radio Suisse Romande la premi�e</name>
+ <shortname>RSR 1�e</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113727225090566035704F5955FCA47A009CE56FD0F74C5E3EAB6DA202C7C1AB431F55DC6C</stationID>
+ <name>Radio Rumantsch</name>
+ <shortname>RR SRG</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1132489037BE6EEB344BA62244371EDFF5CD783B55780408FF59E2E92ADDE1E383FB8B1875</stationID>
+ <name>Radio FM 4</name>
+ <shortname>FM 4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137271859CAB7E0EEEA9F7FA7C9E6C1ADD8807A8E5B016BA74B8E714AC048FB37ED7A4D80</stationID>
+ <name>Jugendradio Virus</name>
+ <shortname>Virus</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113727188340D14FAE4CD61ADC0D541B7986670D00FEC8C32FC91CA7658361B6C3948AD8DE</stationID>
+ <name>RTL Radio</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137272135D3EFBC4E525B49CE3169159951D841BB79EABB8E7571A23BB182657C6C7A6C07</stationID>
+ <name>Musigw�le 531</name>
+ <shortname>MW 531</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137272162A425F662E6696B679EBB533F7BD9235C330C17572B6AD3633824D32B4B489E4E</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Melodie</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11372722010E8F2623A1F6389274F5AD817B64998254C9A72700C7F179B7D8C9AA59A263B9</stationID>
+ <name>Radio RSA, der Allg�sender</name>
+ <shortname>RSA</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11372722112D39A2FBCF68278B64651F4E9B15108FD1164FD7220946FB9C5E3F06D6E98014</stationID>
+ <name>Radio Aktuell</name>
+ <shortname>Aktuell</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11372722335F88BB8E66D424FCE7686B241097321AAE363A84A5FAFFB607D02F6A1D938CD7</stationID>
+ <name>Radio 105 Network</name>
+ <shortname>Radio 105</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.45</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1137272263E6E6A509A60730169FFBEAB51EAB493CB1BC9C8C289CD2D84F8E40C82F643634</stationID>
+ <name>Radio Eviva</name>
+ <shortname>Eviva</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.8</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/switzerland/egg-cable.krp b/kradio3/presets/switzerland/egg-cable.krp
new file mode 100644
index 0000000..e2c9342
--- /dev/null
+++ b/kradio3/presets/switzerland/egg-cable.krp
@@ -0,0 +1,375 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-1.0beta3b</creator>
+ <maintainer>Fritz Staeheli &lt;frstaeheli@bluewin.ch&gt;</maintainer>
+ <changed>2006-02-10T11:34:29</changed>
+ <country>Schweiz</country>
+ <city>Egg (ZH)</city>
+ <media>GGA Maur</media>
+ <comments>Maur &amp; Umgebung</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>11395692808B680B29B8B8BE2801F25F5DD8BE70B951F859271B08E7BE0C7F572ED2B1A801</stationID>
+ <name>DRS 1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11395692817596ACA12E06CB32ECA6889E09CA1C7D7FA8DF726738AC9959898E214755A7B7</stationID>
+ <name>DRS 2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113956928258D90487314B4BAE338202432F0A861CDA17AF7160B09D536C064102CEF831B6</stationID>
+ <name>DRS 3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1139567623122A849A548F797A313C530CD4BC295CE6AFB95265D5762729B2BBDC10713398</stationID>
+ <name>Musigwälle 531</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113956927879AED0A4C222B0145BAB78CD71280342CF4EB6E1AB0B5F6875D91BC532A44EB3</stationID>
+ <name>Virus</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113957051963FBDDAA260729975ABA276394DA70A7017015876806FBEE053AA19B5DC16760</stationID>
+ <name>Swiss Pop</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113957037138DF9E75C49C7E93D21824D6AE9E4A1390D3F5A9DE06B65E75B2029A61899626</stationID>
+ <name>Swiss Classik</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.05</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1139567631385BBBB8605A21A36A0FE181F66AA661A2A8CE50A6B75332E8AAA546F344FD66</stationID>
+ <name>Swiss Jazz</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.7018</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113956765732A699C87EF7B739CB0455EECB11729DFF2AC575903DCD8CA4ECCBF73F43B7EE</stationID>
+ <name>Radio Tropic</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1139567658D8CE7AE1F412400AF993043D2099546117643824469C491BC30C526491E17204</stationID>
+ <name>Radio Eviva</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11395676477696711237429590C4F1BC15F8F366AE8D5EE8038D2C324A8D57F532F3EE3702</stationID>
+ <name>Radio 24</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11395676487DA4D6C456D309D747A60544367DEA7063B5A2B6B15D5F7ABD91FC86B6E22000</stationID>
+ <name>Radio NRJ</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113956764505B1E55E059D88FD794CC0238990C019CA80DED1AAB01EF68A6EB66A13CE0C6B</stationID>
+ <name>Radio Zürisee</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.35</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1139569741A508DE393FC1AC428541D6349BF7ED626B445658C5D37335041DC43AF7151F2C</stationID>
+ <name>Radio Top</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1139570711D6E6ED19853F3C1450858BE8049E9024B920403679833E5C218B15DD3BC12131</stationID>
+ <name>Radio Top Two</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1139567660EBCEDEF5B695E3B47CC691542B2EF18C71A9DF8C177852392205B42BCC8BB487</stationID>
+ <name>LoRa</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.8</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1139570810B1B67876065ECD6EC36BB5AFA871FA968AABF9845AA9F4BF740B827806C98699</stationID>
+ <name>Swiss Music Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1139567629A619170E16012240E23C741418F9C5EB6C48C0692A9E2156D0395DC8D8BBD9ED</stationID>
+ <name>Radio 105</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.0017</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11395692751D45D930D0DFC79A1E0640C82A4D8ABA0EAAD14899E79C589C7638D3D90ABCAC</stationID>
+ <name>SWR 1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.802</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113956927764FB4F25A7D1647A3B82195A4F2F488B603942668E9BA7496E28BA993A7F189E</stationID>
+ <name>SWR 2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.452</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1139567624F6146312BED70FCD9695ED3AB61AEA2B5F153E9D1BEE10B4701A0ADAFFDD8DE2</stationID>
+ <name>SWR 3</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.6</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1139567644624E75D26E270E1F253AF339F35BA52D033C3DBCD0071E2AA06D8C7A5AB7D2AD</stationID>
+ <name>SWR 4</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11395676281DB5FDF8F893CB386CE2EC412D897EA5A4CD6770835C770079A600AB07B37B2B</stationID>
+ <name>Österreich 1</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11395676301413824E895DFFC7F467141852DA450B7A6C8C4E7A22E3289DD2A47623AAC728</stationID>
+ <name>Radio Vorarlberg</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.4017</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113956763254E7906A73D2B502F8BEAA0F11F051BF08DE2993B3D39A4BFDD78E0DDD717FC9</stationID>
+ <name>Österreich 3</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1139567636A2E40840AD8967ED9CBE520609187668AD8434D65A218F8570F558CB983C5E51</stationID>
+ <name>Bayern 1</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.0019</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113956763917CE6CFC286F9F1DABF37E6F7622037EA2A0941A0067517218CF13AE53A8834C</stationID>
+ <name>Bayern 2</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1139567642C893274145D946D1D55FE94D2941FD65D02860B4206A3CFB19A4CEF6C5435451</stationID>
+ <name>Bayern 3</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1139569774F6BD4795DEA4B7DE988AD78FB9E80CDFF1ACADF5A49F4384DF5E3941C8105600</stationID>
+ <name>Bayern 4 Klassuk</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1139567657A7049C65B5B6023F28C84737F3BA8729323B1133CA1572AF0A246CA06EAEC0C0</stationID>
+ <name>Klassik Radio</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1139567626EB1DFD22FE09CA495F68A2BADE097B6FA93D7B8C91396DBC2EF16361293345ED</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.55</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1139567629A9562DC4ADA397480B423472B59F587AEB8B050D4E08F4C7F5E8968C260C2953</stationID>
+ <name>RTL Radio</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1139567649B59D6E4FB9F4727D9374B6219AF44A89FF6AEC1BBBC01737AA5FEB5696FAD065</stationID>
+ <name>RSR 1</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.602</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1139567651030C733B4C95427EC114F47B20A3DCC6377EF3BE1EF7D76B806B709EE52B57BB</stationID>
+ <name>RSR 2</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.202</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11395676518B01AE46C8E450F90A56C605B93DDC8A062888ABFFBAC83B6D760EA74BBCC9F8</stationID>
+ <name>RSR 3</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.552</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1139567653C4D102CDF9981B336ADF5067374D51783760AE81D0B7DC173C7456F98856D5A6</stationID>
+ <name>France Culture</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.25</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1139567655C39A7F196329D99AFC200062014665A370B2B98E5759906F75B378C918236F05</stationID>
+ <name>France Musique</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.15</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11395676592C58BAA5D608EE579B0D7469F804A28DE95E5C40763CD5DCA4A1E600AD0E3F20</stationID>
+ <name>France Inter</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1139567638BDF0DA72D30B603158D129CB73E0907E17C04FA7782B1A44A52491530C9F4870</stationID>
+ <name>RSI 1</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1139569825C09B9369BAC2CF2BE83872C64CF2FF28864546E49B094B9C92948EB7D0C57C10</stationID>
+ <name>Radio Rumantsch</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113956985976223C73FE340775965C68D2F20C7CC8646DB88D49EC8F40590D35B0E8BF489A</stationID>
+ <name>BBC World Service</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1139569937CCE3FB2D2FC45E45CD30AFC377DEB2EC3D5AE1EA55F6349B2E8F378EEAC09E20</stationID>
+ <name>Voice of America</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113957130513BF4210557DFA8A90EEB5B1526704A97160D016D1F0D86DCD86CA5105C98B84</stationID>
+ <name>NPR National Public Radio</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.75</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1139567641EC061ACF383108A8B041A85D993445188C566F9DBA901BAD409997E07A43B485</stationID>
+ <name>Sky Radio</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.2</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113956999398C3A4372E6EC78320D28D38C7E980D72FAAC1B3809B35B22152C58998D367F3</stationID>
+ <name>Life Channel</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.5</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/switzerland/stansstad-cable.krp b/kradio3/presets/switzerland/stansstad-cable.krp
new file mode 100644
index 0000000..e2b7f3f
--- /dev/null
+++ b/kradio3/presets/switzerland/stansstad-cable.krp
@@ -0,0 +1,326 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Alexander Jesse, &lt;falco@kfn-ag.ch&gt;</maintainer>
+ <changed>2005-01-02T12:09:00</changed>
+ <country>Schweiz</country>
+ <city>Stansstad (NW)</city>
+ <media>Cable (KFN)</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1116455444C069D69FE1555A719ADA26F948052D2035EF7C1874BF1B5120F6AFF5415B1232</stationID>
+ <name>DRS 1 (Region NW)</name>
+ <shortname>DRS 1</shortname>
+ <icon></icon>
+ <frequency>92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544468B1DFF1F93940FE2D66ADD88D89FA5FB1A9A9E948FE319B069B2B5DFAE878C1</stationID>
+ <name>DRS 1 (CH)</name>
+ <shortname>DRS 1 (CH)</shortname>
+ <icon></icon>
+ <frequency>103.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544477A0ACD964A44DE9FE9313E61896B35FA777F1892A86B535DE8F80C62B8CF40C</stationID>
+ <name>DRS 2</name>
+ <shortname>DRS 2</shortname>
+ <icon></icon>
+ <frequency>94.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554445933253E7ABC23F447F5F43E52DB694254A4A07804F423E8E0876CC858996037</stationID>
+ <name>DRS 3</name>
+ <shortname>DRS 3</shortname>
+ <icon></icon>
+ <frequency>88.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444FFAC0EF5DC5C7CC0EDCFFD7313EAC13CEF2C0D911709E734C0396D87CCD7BDFA</stationID>
+ <name>RSI 1 (Rete 1)</name>
+ <shortname>ESI 1</shortname>
+ <icon></icon>
+ <frequency>102.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554444CCAE5E2A9070A5BD305EF816118513B5D0D2ECEDA00B544D5379B0F4D4E6EED</stationID>
+ <name>RSR 1</name>
+ <shortname>RSR 1</shortname>
+ <icon></icon>
+ <frequency>103</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554447909BEE356D1C74D78040FD56D6F1325C3925B74DDA4CA329BD8BB1665089FDE</stationID>
+ <name>Radio Rumantsch</name>
+ <shortname>DRSR</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444A35D50873D48A18A1CCDB2CB1879BC7AB684FF3996906E38DBA58A0A6E191F27</stationID>
+ <name>Radio Pilatus</name>
+ <shortname>Pilatus</shortname>
+ <icon></icon>
+ <frequency>93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544433C8ADD40403CF1D40F12A04224081AD337463D831BF3D082C8A1DE8FB8920AB</stationID>
+ <name>Radio Sunshine</name>
+ <shortname>Sunshine</shortname>
+ <icon></icon>
+ <frequency>88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444BE9FA6A1F1B6970F0E4A891B45A1E812BEF36D8A0E3C66D3E8C331009B49E9AA</stationID>
+ <name>Radio Central</name>
+ <shortname>Central</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444BF3CA819E76A6EFD65181E3A4FA0AAD53A434DE0619BE00145BE615843192FEE</stationID>
+ <name>Österreich 1</name>
+ <shortname>OE 1</shortname>
+ <icon></icon>
+ <frequency>101.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554445DBCD84ED68FF42CBC66721028B0F0AB665EC6D0AD66BBB2F0C541B12F9890BD</stationID>
+ <name>Österreich 3</name>
+ <shortname>OE 3</shortname>
+ <icon></icon>
+ <frequency>97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444DD913BC52D667DF1D989C00AD09CEB42E6E0D6E10F14DE19DF30FBD76DAE055F</stationID>
+ <name>SWR 1 BW</name>
+ <shortname>SWR 1</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444929DB8D0FF062F1F9A721073C4904E5A5D502972D62F9EA61A3423D5BFAFC17A</stationID>
+ <name>SWR 2 BW</name>
+ <shortname>SWR 2</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444A6BEAE869288D44C9EAF00BA1E91A834C57A3858A29C10C03187D001197F01A8</stationID>
+ <name>SWR 3</name>
+ <shortname>SWR 3</shortname>
+ <icon></icon>
+ <frequency>98.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444F7DAE078525BA65544545684781B5D70757FFFA23A1184F5638C042C036486E7</stationID>
+ <name>SWR 4 BW</name>
+ <shortname>SWR4</shortname>
+ <icon></icon>
+ <frequency>100.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444D9590F24293E1AC2FE1014BEB7592F1833389F79ABCE29D22A5D9ACA890CEDA2</stationID>
+ <name>SWR 4 RLP</name>
+ <shortname>SWR 4 RLP</shortname>
+ <icon></icon>
+ <frequency>105.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444A74DB2DF57E25C73F75E4EC51BD5E4E00D6D783EDBCB4B508D4536583E98372C</stationID>
+ <name>Bayern 1</name>
+ <shortname>B 1</shortname>
+ <icon></icon>
+ <frequency>97.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554444128949C0701D14AFFC19C72DEFCD7F0B0DCF11D1A41CEC358DF83B450B30E17</stationID>
+ <name>Bayern 4 Klassik</name>
+ <shortname>B 4</shortname>
+ <icon></icon>
+ <frequency>97.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554445FE8A5A5B3B37A2C37EBC240CD7EF6F80820DCCAD66D8F43B2A0AEC09668ACA3</stationID>
+ <name>RTL Radio (Oldie)</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <frequency>104.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544429427CE1A09746CAB2574DFDED5FB7EBFD1F90B4FD9D44B2F0D7BB60980BE874</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DF</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554442914D5EE760662C93522728BABE9EABB1DF3285B8E738BE9915B03ED2CBBB369</stationID>
+ <name>VIRUS</name>
+ <shortname>Virus</shortname>
+ <icon></icon>
+ <frequency>107</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554446BDCC24AFDB4728E904FCA08AE235D38BB45356223E977C177687032F1055BBF</stationID>
+ <name>Musigwälle 531</name>
+ <shortname>Musigwälle</shortname>
+ <icon></icon>
+ <frequency>90</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444AD3992F884DAB8DFDE0E51837E349976662D57C8232BD39701A0897D5EB20C54</stationID>
+ <name>Radio Swiss Classic</name>
+ <shortname>RSC</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554441649AC975A72B90D1F8B12B6902FADA2D3AECFD39AD3AA30EB901D06ECA094D0</stationID>
+ <name>Radio Swiss Pop</name>
+ <shortname>RSP</shortname>
+ <icon></icon>
+ <frequency>106.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544408670CFB0ADAC63B71CFE99524027DE1CD30BD9BE6304E5AEF51C93353ADBD02</stationID>
+ <name>Radio Swiss Jazz</name>
+ <shortname>RSJ</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554443CE7F6CCA25715B7D3C0BE9191AA6B1A033A98359FC92BAA6255659721EB2524</stationID>
+ <name>France Culture</name>
+ <shortname>Fr C</shortname>
+ <icon></icon>
+ <frequency>101.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444D3CAC4719FE37CB692D9FA94C34F1B67986A20D6076B9311437021EA2074DC09</stationID>
+ <name>France Inter</name>
+ <shortname>Fr I</shortname>
+ <icon></icon>
+ <frequency>102.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554446A473FF3F50F4EF394635F46823109681138E04184814B1D5BD730D2984520B9</stationID>
+ <name>France Musique</name>
+ <shortname>Fe M</shortname>
+ <icon></icon>
+ <frequency>98.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444E03607226AE799AB0E5A9D4DE06C07983EE0049A5E64C90E759077277456021B</stationID>
+ <name>Network</name>
+ <shortname>Network</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554445FAC226A90E577AB5BDDF313A7F621A72A6752B012C45594F6E77F4B588D8D8F</stationID>
+ <name>3-Fach</name>
+ <shortname>3-Fach</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444A06ABA83B1AE142AB7D7E6BE8664181F454573E5AB4897C7C9E07AFCB5F73815</stationID>
+ <name>AFN Stuttgart</name>
+ <shortname>AFN</shortname>
+ <icon></icon>
+ <frequency>100.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444BEF29549A1C6F1D8C3607058BE96BE2558EDC05A0CAEFA6F74A9430D354CF658</stationID>
+ <name>BBC World Service</name>
+ <shortname>BBC</shortname>
+ <icon></icon>
+ <frequency>104</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554441FE07836322741EEFE9472590ABB27C2FC1760356737352D8A5AFB42E3E356EE</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>D</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554444DDE9B7255F6A05081905DCC5AE2FBE28D3D8DCA26155E7B5E00C91D6C96DB59</stationID>
+ <name>evviva</name>
+ <shortname>evviva</shortname>
+ <icon></icon>
+ <frequency>105.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444AF59F05B523A29C5A9B5B02D758D94A2F29EED965AE99004BF9145B55FC12166</stationID>
+ <name>Radio Horeb</name>
+ <shortname>Horeb</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554448B8E0B3E47A2232199D7EC28FFE875AFD40D2C3249AE623BBA21880FAA7BBC19</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Melodie</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554441EC4F33CE3D2F634C23992A7EB5099FE461E469D7FE70ED0B921112114A76D59</stationID>
+ <name>Reserve</name>
+ <shortname>Reserve</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444DC63A2D67603FF49020127D4B8DADA05FF5FB51C1951E6B8125B038382FDE667</stationID>
+ <name>Reserve</name>
+ <shortname>Reserve</shortname>
+ <icon></icon>
+ <frequency>107.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/switzerland/wrenlos-cable.krp b/kradio3/presets/switzerland/wrenlos-cable.krp
new file mode 100644
index 0000000..7d2214f
--- /dev/null
+++ b/kradio3/presets/switzerland/wrenlos-cable.krp
@@ -0,0 +1,374 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Dieter Landolt dieter.landolt@secs.ch</maintainer>
+ <changed>2003-01-21T00:26:49</changed>
+ <country>Schweiz</country>
+ <city>Wrenlos (AG)</city>
+ <media>Cablel</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385402C7819E274606CC8F250503EA7908F4BB5E5F678C7191159D93AD15ACE18F57FC</stationID>
+ <name>DRS 1 (Region AG/SO)</name>
+ <shortname>DRS 1</shortname>
+ <icon></icon>
+ <frequency>87.9375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402902450C5C7CC70B33EE9E6DC1995B122C291FE2F0E58A8BA72009835563BE34F</stationID>
+ <name>DRS 1 (Region ZH)</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402A209E75B8B11C29CA3E1ECC51EB68B4B27E235B1D2A62140BAEF2FE225AE9652</stationID>
+ <name>VIRUS</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>93.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402C56E08F173C7DAE46ED3656CE2CC132DC5AF6E1E2AE47FE471C57F79A7ACC10D</stationID>
+ <name>DRS 2</name>
+ <shortname>DRS 2</shortname>
+ <icon></icon>
+ <frequency>95.475</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540260A630D5E5CFC090BBC49CFE4DC9575D3F8E7009F8E343CB5D80C09A6B4F7AEE</stationID>
+ <name>DRS 3</name>
+ <shortname>DRS 3</shortname>
+ <icon></icon>
+ <frequency>91.538</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402E9FF7E704EE193F70B005A409D1626E1CC4E4FB2D69E1B6ECAD08570357CA666</stationID>
+ <name>Radio Rumantsch</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>103.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540248C14C58EBEBCD39A1C31D4C49F2AE311076629BC3250192326CBA67548D74E4</stationID>
+ <name>Musigw?le 531</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402D1FFFCA8444ED4555998BDE406A369549968DBAF445154E678288D93A6779351</stationID>
+ <name>Radio Swiss Classic</name>
+ <shortname>RSC</shortname>
+ <icon></icon>
+ <frequency>88.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402AF2749BF2CAC152012435B63DD8CCBE8D6EE673F359BAF3A90FC861F461D5878</stationID>
+ <name>Radio Swiss Pop</name>
+ <shortname>RSP</shortname>
+ <icon></icon>
+ <frequency>88.9375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854026F24E1435291572E12CDF17D1C9E62C38EC1C3FD11C8A75943DFEF727E97A2D3</stationID>
+ <name>Radio Swiss Jazz</name>
+ <shortname>RSJ</shortname>
+ <icon></icon>
+ <frequency>89.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854025AB187FA5F6A6DBF8976BBD1D15E105ADC1CA19C60C489FD56108E84A539BE4E</stationID>
+ <name>Radio Argovia</name>
+ <shortname>Argovia</shortname>
+ <icon></icon>
+ <frequency>89.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402EE879F997D5FDC2F390EF3417D814F2C42A466071BD2E9BF784E5C987E9BED68</stationID>
+ <name>Radio 24</name>
+ <shortname>Rado 24</shortname>
+ <icon></icon>
+ <frequency>90.0625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402DAF14C1BF02854AC2750AA0D0B19ECAF5FCAC0A8B43BE2AFB271451F7ACE9A8D</stationID>
+ <name>Hitradio Z</name>
+ <shortname>Radio Z</shortname>
+ <icon></icon>
+ <frequency>90.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854024DB969A64738AC019697E27A7186020DDF85432492C625F18F6F9C3B7136CA53</stationID>
+ <name>Kanal K</name>
+ <shortname>Kanal K</shortname>
+ <icon></icon>
+ <frequency>93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854027254957B1600EF3938E9B105B4CB439D0290B4A0629A5C670806B330D3D2FD08</stationID>
+ <name>Radio Sunshine</name>
+ <shortname>Sunshine</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540259F0511E998D652292F86116A2819337C5DD517E70B9D0AD5E4A8DD72638DA7E</stationID>
+ <name>Radio 7</name>
+ <shortname>radio7</shortname>
+ <icon></icon>
+ <frequency>102.625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540233420B8F08194D87A2D24826D7B72DDD159C9295C7CBF764448857996771BC56</stationID>
+ <name>Radio Regenbogen</name>
+ <shortname>Regenbogen</shortname>
+ <icon></icon>
+ <frequency>99.8125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854027706C4C2DB3FD19168025BCC9F0B8D8963469EBD651F0D8D040A065AAAF21096</stationID>
+ <name>Radio Melodie</name>
+ <shortname>Melodie</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854026DD6B04F09103563FFC46D93BAFEB747D04E47668563ACB8780B504C404A3BE7</stationID>
+ <name>Radio Eviva</name>
+ <shortname>Eviva</shortname>
+ <icon></icon>
+ <frequency>104</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402E950A43B7B008DC46C8F2DF67119C9406FC81B7CFF9F06BD8F015F555F920F86</stationID>
+ <name>RSR 1 (La premi?e)</name>
+ <shortname>RSR 1</shortname>
+ <icon></icon>
+ <frequency>96.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402054D3173E53A2C19358B46E0534E91F63D13BB0480D01013899E492984111FC9</stationID>
+ <name>RSR 2 (Espace 2)</name>
+ <shortname>RSR 2</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402FA679E7474B93D7F56B2329DFCEAAEBE5421A6474DA63068B0DEEB73A6D33D35</stationID>
+ <name>RSR 3 (Couleur 3)</name>
+ <shortname>Couleur 3</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854026055E034244A60652D6F2AA7BB1F81AD93AC6209F68910488FAB9AD256749550</stationID>
+ <name>France Culture</name>
+ <shortname>Fr C</shortname>
+ <icon></icon>
+ <frequency>101.812</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402A646D19E58AF2D654781368AD04880858BF5AB52B83972AA73ADEE646A89DA3E</stationID>
+ <name>France Inter</name>
+ <shortname>Fr I</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540281F5FD7ED606DDB20048E2A20ADAD6B5A74F5E04BAAEDE342CB11D6339917318</stationID>
+ <name>France Musique</name>
+ <shortname>Fe M</shortname>
+ <icon></icon>
+ <frequency>101.375</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854028E57BFC283612B1E1F8C1BB0708D97311D907C1AAA872B1F3F2D0A6B9A3165E6</stationID>
+ <name>RSI 1 (Rete 1)</name>
+ <shortname>ESI 1</shortname>
+ <icon></icon>
+ <frequency>106.312</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854020E80CC5CA3EA4773B851345A3DF6F0CC8D0556A0DF72C6A8D43CFE58FA4DF4CC</stationID>
+ <name>?terreich 1</name>
+ <shortname>?1</shortname>
+ <icon></icon>
+ <frequency>94.3125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854023A8AB6C22FB0F85DA6B03679490F25CC93A6D20C4CE2A908B96126C3E029304B</stationID>
+ <name>?terreich 2</name>
+ <shortname>?2</shortname>
+ <icon></icon>
+ <frequency>94.825</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854022F5287224259E228DD4391E1ED4AC7ABC472EDC5FBB81E0DE58A15B544C453EE</stationID>
+ <name>?terreich 3</name>
+ <shortname>?3</shortname>
+ <icon></icon>
+ <frequency>95.8125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402E4955F6D19D3B13B683A52B9B7BC3DF9F2AEE257770918F024D7BC0FEC28A1C0</stationID>
+ <name>SWR 1 BW</name>
+ <shortname>SWR 1</shortname>
+ <icon></icon>
+ <frequency>92.3125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854029E416B3537CD38620B6DD9245668F6BF13EFD4653067B4B854DF64F6FE9CB7A5</stationID>
+ <name>SWR 2 BW</name>
+ <shortname>SWR 2</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854026A914F61F120399BA4F8D354513AD62B29006BA4D7F6798E1F6D20AA813A129E</stationID>
+ <name>SWR 3</name>
+ <shortname>SWR 3</shortname>
+ <icon></icon>
+ <frequency>97.3125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540205D0B46BF4C6BFC102274C2F509DD57D5094A3BE239CC3180F0BAB8EDE8092EC</stationID>
+ <name>SWR 4 BW</name>
+ <shortname>SWR4</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854024D5423F6C53E3D35EF8F73C8E12E503E508795BB3EDA12302A9DB19E7AAB0442</stationID>
+ <name>Bayern 1</name>
+ <shortname>B 1</shortname>
+ <icon></icon>
+ <frequency>97.8125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402F7DBB36EEAEB705B24E5312A81792D63C22717E0EA14E603A2B4FB08465265FB</stationID>
+ <name>Bayern 2 Radio</name>
+ <shortname>B 2</shortname>
+ <icon></icon>
+ <frequency>98.3125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540296564D1DA57FF304A33421736F2D51A31527B1696E77BEC3A2C9E38A2B87B04E</stationID>
+ <name>Bayern 3</name>
+ <shortname>B 3</shortname>
+ <icon></icon>
+ <frequency>98.8125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402463C662FEEE74BA3B590F2B89DF4C682673874B731029DAD6B8048D8C5A961DF</stationID>
+ <name>Bayern 4 Klassik</name>
+ <shortname>B 4</shortname>
+ <icon></icon>
+ <frequency>99.488</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402724FB26710F95921ED22B31D3C1A5C8AAB937CF6014126C4DEC42C79AF7DBD97</stationID>
+ <name>Deutschlandfunk</name>
+ <shortname>DF</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385402D641939B476A10231354DB3B2EEF04D128AFD96903357DE623E648EAAFA794B2</stationID>
+ <name>Radio 105 Network</name>
+ <shortname>Radio 105</shortname>
+ <icon></icon>
+ <frequency>105.062</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540248943D4E0700F27893E5C74EB33BB8D640212ECB914B755C96FC3C8409460CB4</stationID>
+ <name>RTL Radio (Oldie)</name>
+ <shortname>RTL</shortname>
+ <icon></icon>
+ <frequency>100.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540267FEA0BEA0A79C312A022F6EDCADCD1F1DC2CFA0E731E290EDA994704EC8EDE1</stationID>
+ <name>Sky Radio</name>
+ <shortname>Sky</shortname>
+ <icon></icon>
+ <frequency>106.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540260CEF32200F1CC237298BE391B67EDF587E0CE6EEEF3D00E1A09974378DF89F5</stationID>
+ <name>Voice of America</name>
+ <shortname>VOA</shortname>
+ <icon></icon>
+ <frequency>107.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854023F578B8490E6755C3E6A082CF88CBEA2C9F8BF43AA8E783A3269076FA0CC9F0C</stationID>
+ <name>BBC World Service</name>
+ <shortname>BBC</shortname>
+ <icon></icon>
+ <frequency>105.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540234C3B7E5D5AB3F93788BB95D5A9E78F0C23F83AD739F263F7229B0143B33E48A</stationID>
+ <name>Klassik Radio</name>
+ <shortname>Klassik</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540295B3FF4FB23F2D80FBB71A8F967102D69B65D0594554DE6CA91DC070381456F6</stationID>
+ <name>Swiss Music Radio</name>
+ <shortname>Swiss M</shortname>
+ <icon></icon>
+ <frequency>107.488</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/turkey/Makefile.am b/kradio3/presets/turkey/Makefile.am
new file mode 100644
index 0000000..0bccd72
--- /dev/null
+++ b/kradio3/presets/turkey/Makefile.am
@@ -0,0 +1,10 @@
+SUBDIRS =
+EXTRA_DIST = "adapazari-antenna.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/turkey/"
+ $(INSTALL_DATA) "$(srcdir)/adapazari-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/turkey/adapazari-antenna.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/turkey/adapazari-antenna.krp"
diff --git a/kradio3/presets/turkey/adapazari-antenna.krp b/kradio3/presets/turkey/adapazari-antenna.krp
new file mode 100644
index 0000000..131c92a
--- /dev/null
+++ b/kradio3/presets/turkey/adapazari-antenna.krp
@@ -0,0 +1,222 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Nezih Kartal, &lt;nezihkartal@yahoo.com&gt;</maintainer>
+ <changed>22/09/2005</changed>
+ <country>Turkiye</country>
+ <city>Adapazari</city>
+ <media>antenna</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>11331032563063855FA8319AA8C9683B9329810FCD7AFC25153815CFF082FB5235EA02B146</stationID>
+ <name>Show Radyo</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032569AB34686F421BBDAB1A1454DC85734BAD813C940057A7C029EF5BBBE13AC5EC3</stationID>
+ <name>Radyonet</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>89.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032566368D622A547FC60E9C008F34F789AE44DB9BD5B657BD95AA88080F3141F0DF7</stationID>
+ <name>Ada FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256F976C1C9EE76F2A0358FF48D0C8CA359A63AB04AE6170E6E6DD15E535DEDCE6F</stationID>
+ <name>TRT FM 1</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032560F7121DBCB34D537AD1A03F44CA586717903F6A5A280127C508F5CBFCD924991</stationID>
+ <name>Metro FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>91.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032560BC71AF1443D07D68F7AA660D6ED3CB72F51561D0868328E48112C379A2ECEFF</stationID>
+ <name>Hur FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032560DAF105BA4EF17AEB45103D9129DFEA293409989B56A7C8952D1818DBB25042C</stationID>
+ <name>Radyo Ses</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256DA5A6933830D45EE5115C15AEBC121DA36ADCD16308642B9FE159234C4FDA992</stationID>
+ <name>TGRT FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032564A1086A845369C8F051B1FBC9F021A505A4BD4A812D2A5049418CB3EE677E07E</stationID>
+ <name>TRT FM 3</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>93.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032564E7A550EEE6211419FBC18C3E9B0AB9BC2A5E73A99F889A811893A0BCE956F81</stationID>
+ <name>Radyo Aktif</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>94</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113310325667257411AA7CDAA02CF2BF8682CFAE0730F602AE53D1E377B6AAEA8D73644F41</stationID>
+ <name>Radyo Life</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032563CCD20721596677CE8F9F5590205147CA1F6D2E9F2F0C638C3C2A9138AB733B4</stationID>
+ <name>TRT FM 2</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256027AE7ACDDA8B25B6DD21B02DA5E86924D65EAC985866CA95C42D97D285CA211</stationID>
+ <name>Radyo Taka</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113310325617FF29CDA8F9D0FA2C43EA73C6F2731F567865A6DA43816A8838FCFB5981669D</stationID>
+ <name>Super FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>97.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256557AE0ADE93517AA8FCB64ECCD75652F9008E93790175915C8987E14D602EDE0</stationID>
+ <name>Radyo Eylul</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256993932C327E1E6728B2991C26A117AA31507B69F280FC07885EDD4B6C94444F9</stationID>
+ <name>TRT FM 4</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>99.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032566E340315A3C3FFD132FE6A71D036623CD6A6D3437FF98BD12681CA47B71A784C</stationID>
+ <name>Radyo 7</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>100.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032560A559D71BE292F346B96164129EB47905681168232A8129E3FFDCD626BB1F9B3</stationID>
+ <name>Power FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032568361DC126F4320BB3A88CB142BAA17B6381608ED1FE62C0C23E09BC8385E7A40</stationID>
+ <name>Radyo Relax</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>101</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256B7EB1EBEEFA0A2990C6F6E6CA8BBF4EDB07B47E815062EBD5D39B497610F843B</stationID>
+ <name>Kral FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256AAC27E61C4EBB1104FBA47A7912A2D1FE2741E5C2A770041D85BE6EDC05B1BDA</stationID>
+ <name>Burc FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>101.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032563B5E68A8A7C5554707F352C57558953910CB785F4179D06BA58D201CFFC66233</stationID>
+ <name>Radyo Mega</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>102.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032564133D26A4C9D715126DA6A05821C2C8547ADB0B6E292ED2AC5D886CD695A9AA3</stationID>
+ <name>Hilal FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>104</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1133103256F9BF82DF0814AD9897CB0CEDFBEBA9911945B367CA3271986F54C6F7A31D9A07</stationID>
+ <name>Radyo Tatlises</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11331032569F8CE7D28C4F3138F9F9ACF2749676CC067BF21EB826430BFEE560C5B321171B</stationID>
+ <name>Moral FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>105.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>113310325652A761312F07237C7671866B97CBE6B48547F34456FCEE48957F9607C6569023</stationID>
+ <name>Akra FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>107.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/update-makefile-dot-am.sh b/kradio3/presets/update-makefile-dot-am.sh
new file mode 100755
index 0000000..edf7421
--- /dev/null
+++ b/kradio3/presets/update-makefile-dot-am.sh
@@ -0,0 +1,63 @@
+#!/bin/sh
+
+THIS="$0"
+if [ ${THIS:0:1} != "/" ] ; then
+ if [ -e "$PWD/$THIS" ] ; then
+ THIS="$PWD/$THIS"
+ fi
+fi
+
+THISDIR=$(pwd | sed "s/^.*presets\/\?//" )
+OUT=Makefile.am
+HERE=$(pwd)
+
+echo -n "SUBDIRS =" > $OUT
+echo -e "Makefile\nMakefile.in\nmaintainers.txt\nmakemaintainers" > .cvsignore
+
+
+find -mindepth 1 -maxdepth 1 -type d | sed 's/^\.\///' | sed 's/\/$//' | grep -v CVS | \
+ while read line; do
+
+ echo -n " $line" >> $OUT
+
+ cd "$line"
+ "$THIS"
+ cd "$HERE"
+
+ done
+
+echo >> $OUT
+
+
+if [ -n "$THISDIR" ] ; then
+
+ echo -n "EXTRA_DIST =" >> $OUT
+
+
+ ls *.krp 2> /dev/null | while read line; do
+ echo -n " \"$line\"" >> $OUT
+ done
+
+ echo >> $OUT
+
+ echo -e "\ninstall-data-local:" >> $OUT
+ echo " \$(mkinstalldirs) \"\$(DESTDIR)\$(kde_datadir)/kradio/presets/$THISDIR/\"" >> $OUT
+
+ find -mindepth 1 -maxdepth 1 -name "*.krp" | sed 's/^\.\///' | \
+ while read line; do
+
+ echo " \$(INSTALL_DATA) \"\$(srcdir)/$line\" \"\$(DESTDIR)\$(kde_datadir)/kradio/presets/$THISDIR/$line\"" >> $OUT
+
+ done
+
+
+ echo -e "\n\nuninstall-local:" >> $OUT
+
+ find -mindepth 1 -maxdepth 1 -name "*.krp" | sed 's/^\.\///' | \
+ while read line; do
+
+ echo " -rm -f \"\$(DESTDIR)\$(kde_datadir)/kradio/presets/$THISDIR/$line\"" >> $OUT
+
+ done
+
+fi
diff --git a/kradio3/presets/uruguay/Makefile.am b/kradio3/presets/uruguay/Makefile.am
new file mode 100644
index 0000000..b2c4f22
--- /dev/null
+++ b/kradio3/presets/uruguay/Makefile.am
@@ -0,0 +1,10 @@
+SUBDIRS =
+EXTRA_DIST = "montevideo.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/uruguay/"
+ $(INSTALL_DATA) "$(srcdir)/montevideo.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/uruguay/montevideo.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/uruguay/montevideo.krp"
diff --git a/kradio3/presets/uruguay/montevideo.krp b/kradio3/presets/uruguay/montevideo.krp
new file mode 100644
index 0000000..25153b8
--- /dev/null
+++ b/kradio3/presets/uruguay/montevideo.krp
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Diego Algorta Casamayou, &lt;diego@algorta.net&gt;</maintainer>
+ <changed>2003-08-01T14:24:03</changed>
+ <country>Uruguay</country>
+ <city>Montevideo</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385401C7D7E3AEF0687F6038A2F22F6289ABBEAA478B0324E687448C0DE15B599DCF5E</stationID>
+ <name>La Costa</name>
+ <shortname>La Costa</shortname>
+ <icon></icon>
+ <frequency>88.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401CCD8DF836EA4B05E81D2844F46ACFFE3E3CB77687F27F03BD7337BE77457A17B</stationID>
+ <name>Oldies</name>
+ <shortname>Oldies</shortname>
+ <icon></icon>
+ <frequency>90.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401E44F8F72AA26F1FB258066C90D2D519093D0B3FE6D014DB3DF640F3C5179C600</stationID>
+ <name>Gardel</name>
+ <shortname>Gardel</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854017450B058BF7BB0B410B3380C6B57FE94F57C809F2B662A4D5B3AD34815083794</stationID>
+ <name>Urbana</name>
+ <shortname>Urbana</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854014F483BED5AA4DF0DFD86EFD22B3022A873486E02B711D0E4C32F7373FF684B03</stationID>
+ <name>Inolvidable</name>
+ <shortname>Inolvidable</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401B1881CE40425D4A43471E0F23609EA1E61F00D6B8BB95F76AD454F192E5DE64A</stationID>
+ <name>Océano</name>
+ <shortname>Océano</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401657E5BD66725042233DF43A3EE387153D5C37F1225A0DECF7FAAA2A5DAC29CBC</stationID>
+ <name>Concierto</name>
+ <shortname>Concierto</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401B6E33CF849F0CF73B34885EC7D76F627A6132E1DD0F2C2BDBFCA7C5AF90A1807</stationID>
+ <name>Del Plata</name>
+ <shortname>Del Plata</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401AD1EDE3D452B9CE1DD431B7962E8F5EB50826B08D87FCB59FAD33D57099C3359</stationID>
+ <name>Alfa</name>
+ <shortname>Alfa</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401B165C76166E070F39476F83B875B5DAAABE3926A4DF3B77A712B4AC169F3B8D7</stationID>
+ <name>M24</name>
+ <shortname>M24</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854014506D459EA2F0DB5630FCC0B3BD00ECF7D1FD88655FA5A2BB4E109CADFEFB743</stationID>
+ <name>Diamante</name>
+ <shortname>Diamante</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401184F237F70F0DE9A9D6F3F6095CD19CBEC412943E6B57B0BBF1A21EDF77B4EFA</stationID>
+ <name>Del Sol</name>
+ <shortname>Del Sol</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854011C981F507FD46734C6982247BED0297EEA8247E6C8285A825A3B7B4B87812340</stationID>
+ <name>X</name>
+ <shortname>X</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854010904CFBABD7AF19119F8F5861DBBC98934F9AA418D1289FDBE8FE43BECA3EBCE</stationID>
+ <name>Setiembre</name>
+ <shortname>Setiembre</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401C751FD48A604718C3E3B5C8CDFE1C87D192ACCE768AB2F1EDCF350609EBA5CF6</stationID>
+ <name>Azul</name>
+ <shortname>Azul</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854013EB91E6465CDD28A42796CFB69E3F471E2FC24EFF33AC25F9C81491C4AFF041A</stationID>
+ <name>Millenium</name>
+ <shortname>Millenium</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401FA222743DBB1D9F1ECFC01D35FD4C11D13A8EB7A7A89366AE4C951CE6DC62B6A</stationID>
+ <name>Radio Uno</name>
+ <shortname>Radio Uno</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401D268473162944AF2E14EFB0596822E7C2669C65175BB73FD5D87DDE962AE1464</stationID>
+ <name>Metrópolis</name>
+ <shortname>Metrópolis</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385401B831C00B8E50199F79F6ED20927B97608068CD088297125524DD2DEEA8F92C69</stationID>
+ <name>NRG</name>
+ <shortname>NRG</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Alabama.krp b/kradio3/presets/usa/Alabama.krp
new file mode 100644
index 0000000..70fc519
--- /dev/null
+++ b/kradio3/presets/usa/Alabama.krp
@@ -0,0 +1,838 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Alabama</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338535742D5174EDA903E1C688F8909D0565B171389DCF9D33D7BE28984E359A8A73529</stationID>
+ <name>Religious @ WBHY-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357CABEE2312BBF63CEC78243C83AFDC7741E85D5DB456E6649310004AB278F7F90</stationID>
+ <name>Christian @ WOCG-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>90.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853570EFA8A06A83BC76EC3B1277BEE65F2466E1B7A02EFAE54A8CB22C069B132D3C0</stationID>
+ <name>NPR @ WJAB-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>90.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853572E9138E1D0CF695019129D288232F7ACACFEA570DD22B6F5534CB244D9703DAC</stationID>
+ <name>Alternative @ WEGL-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357891CC0080673C5AF54DDA3B368AB7A331E7ACF818DC836BAAB4BD961A2C83760</stationID>
+ <name>AAA @ WZEW-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357CA148E4027059DB89DEBCAD59E800E11D6CDB59C732E6B261A091013F4019EDD</stationID>
+ <name>Oldies @ WWXQ-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853572C90CF22EF55F41477702D13C5BA4C62E7BF1EB3535C5A229F01C37FD15024B7</stationID>
+ <name>Urban AC @ WTUG-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357989BA0EE24889AA5BE1CE8878A510669F962C4EBDD523914089DC05EFD758C38</stationID>
+ <name>CHR @ WGMZ-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357B0FB6DAD2EC1600300442261B8A9E4A3B36FE3D7EACF055158A403DC599B6A43</stationID>
+ <name>Country @ WPGG-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357461035C2286EADB8390126B1C75A55D5058F4FC074C28BBCF042E7F2A88A4EE4</stationID>
+ <name>B/EZ @ WRJM-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357D0A012E9C48801D37CB605C08F29FE63C15D9903B9165BA50506DFD1290E4D9A</stationID>
+ <name>AC @ WYTK-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357E23C66F9150D80B597C122DD992989DE19431A66B47CD09A3DC8E8BAE8B71746</stationID>
+ <name>CHR @ WZBQ-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357CD97B6419D83C29AF7E491207A8E7E4D8DF65C39A5D855EDA71D454D49F909E1</stationID>
+ <name>Christian @ WIZB-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535765F92CF503B939583AD100F6B56A08E68AC976B43E9426165EEE7C97B387B8A3</stationID>
+ <name>AC @ WYSF-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853571663CF12CA6633CAA7BF3BEA63FD30AD001E26E92BECC2DCA15EC045C62A7EEA</stationID>
+ <name>Country @ WKSJ-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535760847E17E7928FFCDE5E357989E522B6F70FE366A8F614F1C001EF3AC7D8BAA4</stationID>
+ <name>Classic Rock @ WXFX-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535756F455233FBFBB4DC2886B1BCA89F9F0DE7016076DB80DC2ECD3741563D917C5</stationID>
+ <name>Oldies @ WRLD-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535787D2CA5E5B6279275B5C2617B2C12657D43EAC2C87CADE3E4B4B734A7852B50B</stationID>
+ <name>Country @ WTVY-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357B20B0F1F035F8796146B58C8D906DF6521003CD136E5EAFF3DF516B731D274F9</stationID>
+ <name>Urban @ WBHJ-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535758C03241244A07B07B100CADC7ADE82E8C20C5D11CB37BF0C177185C0AA0DB30</stationID>
+ <name>Country @ WTWX-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535746184978C98B597A2B7B7DCBA571507DEB2DCE5B78BAC2C39F329F67DF49538C</stationID>
+ <name>CHR @ WQKS-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357D91352AFCF7FFB9BAD5684B7CEEA8BAD35E9ACA7676ACE81737463C5103DD751</stationID>
+ <name>AC @ WMJJ-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357AA4AFC17DECC17AB7A0126781917484E01393DE66D22FAA1F5437D8FC53246F7</stationID>
+ <name>CHR @ WMXA-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853571FDBB29CBFB7B7901875EFA7B1ABFF79C2CF7E33E33DFE9B086A964A7FA3B8E3</stationID>
+ <name>AC @ WRSA-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357D00ADC263F729197D1BC54AC63F508B0A58CADD5E49965896BCCCAB1AAAC12DA</stationID>
+ <name>Urban AC @ WJAM-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357BD8F9C1D5C1F3032FDC819FC0B45D4B451DC2072BA192A8102066580B6C86D47</stationID>
+ <name>CHR @ WABB-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853579844B4DDB54B4BBE3BFB26EBB10D35D3EC8671D00BCE545942915099A145404C</stationID>
+ <name>Country @ WKKR-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357E84A9AACFF6958E7068125E2AE8D74A561F39A818272C943D2A710A96C795764</stationID>
+ <name>AC @ WVOK-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853577C75B3D2D156EAE407561293B59360D9A131305CF387335362370DC26CB2A647</stationID>
+ <name>Country @ WTXT-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853571731C7A035CB6FD986CAB90E13264470A8A5C6156967CFF1A873ADC003996C17</stationID>
+ <name>Hot AC @ WAWV-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853570441BFE3EF6C82D3F9B39D73E53BC88EEEDFB5F5351FD9D60C8ADFDBA5E951D3</stationID>
+ <name>Urban @ WBHK-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357B89F35C6B25D8F8BB41BD275654D705914552585CD8CE883FF008492681FBD07</stationID>
+ <name>CHR @ WBAM-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535728EE1AC49FA4521C600A9FED57DE110049BDF184AFF1FDCBFFD8CD48A7EB6353</stationID>
+ <name>Oldies @ WDGM-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357A49BC67D37DFC48180DB1AC0C0F6C26E66D11F694108CD2C6406C7A36E81EDF3</stationID>
+ <name>Classic Rock @ WZRR-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357CB038390C4D810ADDD76B2FA90C559EB724FC77F1D25D9511A7B3A0F91F571DC</stationID>
+ <name>AC @ WOOF-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357D3AA83522386439E11BF193DAD21C2D9099687E69A81EEBAFDDA88E09CE96751</stationID>
+ <name>AC @ WMXC-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357293889B4478F0169F2991546B9E9240FA2501329D80207346285BA8B8216D326</stationID>
+ <name>Country @ WDXX-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357223EC3E5EEA3DF24F7B10B9785AAE7865900661F916995F2B9739F62C5F0ABE6</stationID>
+ <name>Country @ WLAY-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853572E63DB45DE3476B656E1F1C61D7DFDC07833A0BEAE6B09CEBF9FF72DF06C9770</stationID>
+ <name>Country @ WXUS-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535745E3464A80F83DD9D81668BE86280EFED49B5FC5E34BD8A45C53AC22EE4B70AD</stationID>
+ <name>Classic Rock @ WLXY-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853577CE6E44423A256F4A6A74DED05480BABB145B56D43947F8C8141326D76DF25E3</stationID>
+ <name>CHR @ WALX-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357AB741ED37AB84EC531F48500FDFF993BFDCC5E32ED00EB64411D85F0A14E9709</stationID>
+ <name>Talk @ WYDE-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357721C57A4836A98E18062436A6B572DC5FB4AAA2EC5C0A29FDFC0F7E89917A437</stationID>
+ <name>Urban @ WAGF-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357A288E24793CE63EBFE73282406F6B9BA153F7B2BCC30C15967B4254818BA9CB9</stationID>
+ <name>CHR @ WQEM-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535776D98E588F1A284A87F60BCEF61251637AEA275928B85385C1F797558ACFBD3A</stationID>
+ <name>AC @ WBEI-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357A9774F4DBF3CCCD1C0B347D0890A92E6AD046AD14C349F77C67C28A158050351</stationID>
+ <name>CHR @ WHHY-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357DED0A4A30B4156083A75E0FAAB4B55C051A730FE32AA0F3F68DF9D281BBE93EB</stationID>
+ <name>Childrens @ WQUA-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535750B683E22A2E9E15A48A4FB4181415A16468B5D5C2B07B2B832BF42DC7076468</stationID>
+ <name>Country @ WELR-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853575A7F08D30365C1CCE9D800BDEC4A340F21A2DE3EEDE3C267B32A184BA2C4FCB8</stationID>
+ <name>Rock @ WESP-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357EA742D5866A537653030C30187E052FFA1791B2FEFD0F52137385449DB79A5C7</stationID>
+ <name>Hot AC @ WKXX-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357FBBE1CACEB6C00634A6A21C213AA5269EB26B9BF484C90825D7925CDC06660A8</stationID>
+ <name>Urban @ WEUP-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357C55EDAA0AA6D41AEF9D921D938A23FC9B1326B0CE3E9DA79C44238145D308B20</stationID>
+ <name>AC @ WMXS-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853578A86533AE55195D767FBC69C0EC4F04288513E6F7F7BE73737C852C4BD290590</stationID>
+ <name>CHR @ WQEN-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535787EA7C510D98AA14B1E2C886E7CB2B44DF5385A9A0190600A3EE71EF899D5985</stationID>
+ <name>CHR @ WYOK-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357AC19C070C4D5EE31709E2784FF42ADBFDF08E1EAFDD6A2B0130E5252BF35F0C6</stationID>
+ <name>Oldies @ WQLD-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357B16BE7C3A78E4FEF388D75E06AE2AD31DBD564868BCF30F2FE5476BA059439E7</stationID>
+ <name>Country @ WZZK-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853573C60FE3EA37621C28E357D672A8DAA0FDD22C9C465C0201235835767FA10AB00</stationID>
+ <name>Country @ WBUB-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357C6555F708BFB7AFDDA60834297A69472D42122A524D849356DE08CFF9F2928FB</stationID>
+ <name>Country @ WQSB-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535706105D1CEBBDC26A17425185AE7E14AE4DC27A6943A76B3FD7D47E41FC6E7DAF</stationID>
+ <name>CHR @ WZND-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535725BAD325A53CECE24ABA2636525CEB16DE8A72A376BBDB64E5DEECB51FEB0E55</stationID>
+ <name>Rock @ WRTR-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357786B631CB6E55BFE27A1D8887A355DD8DB790910CE9ABD607E4822FC06869493</stationID>
+ <name>AC @ WCSN-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357AFBB76949A6C800E1A394279BE9D62E06CA71075B7CADDCE8C88C9FB8A6A97CB</stationID>
+ <name>Country @ WRHY-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357272649DB31C4495796EB40B7C3FE1A8AE5175E3422F1412A34C6F18181850863</stationID>
+ <name>Classic Rock @ WTAK-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357A69DC79ABDF954EACF035AE40E767CEAA6C44A5C3C6D6978C6C8F78835E3011B</stationID>
+ <name>Oldies @ WAVH-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357CA6FA4EFE7F292400428B6C44E1DA5235D9956FA437407B07BAB93CA9F31D3B9</stationID>
+ <name>Hot AC @ WKMX-FM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535783FED835CFE75AE7B6FE440DA3C4668ADC4A6AF1BF8037EC2093F7A63F803B7D</stationID>
+ <name>Eighties @ WBPT-FM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357519CB1D4EDDF2191B40B25C26D005CE1EC975640C4F9182DD2207D12B7FBE9CB</stationID>
+ <name>AC @ WQLT-FM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357AF571A32730657EEA589E8508803A3734BD921B32E52BCF41C00DC2BC4B20F23</stationID>
+ <name>Alternative @ WRAX-FM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357E95CBCEE384214E80879F0C1B6AF3EDE31369941A7997D70001C9ECB7E03F97B</stationID>
+ <name>News/Talk @ WOOF-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357903D3E772263BD3FFC94128C194B8DF5A10B0CB975B145049DFA6610CE47A0A4</stationID>
+ <name>Religious @ WAGG-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357956BD2568B9015F37E7A09644436258829C519C60BCCA0523024A1E0DACE4215</stationID>
+ <name>Religious @ WAVU-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>0.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357985E65C83491915952C2308CA96E7D8236D527D7A273C871CCA6537E05BCBB31</stationID>
+ <name>Sports/Talk @ WJOX-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>0.69</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357B2A855AA2897B5A80AED7296D3B925A45D0EBEB8D1BDC93CDF0360FABF383569</stationID>
+ <name>News/Talk @ WNTM-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>0.71</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357DABDC6A70AC1E6F5A1CE13F9D87ECBF3B2A2CC5D7311115C9BB31D966587DFD1</stationID>
+ <name>Sports Talk @ WUMP-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>0.73</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535777FC27FF12156F941E89BB1F0BE6F55B2B4595ACBBD7E687D5D9206317BDEF30</stationID>
+ <name>Sports @ WMSP-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>0.74</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535708F35FB9415D3B85C3D2CDED39DBE41F982C824A74CE50B8EC5EED740700E0A0</stationID>
+ <name>Religious @ WURL-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>0.76</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357FD14EB1C337711ACB68377CD14F61D883471A69091481E2B401496B6BF8620D0</stationID>
+ <name>News/Talk @ WVNN-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>0.77</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357E10B6A2D91D414D629A652853421269F2E90EDE7A7ACE4CE842A4AD1ADE18C54</stationID>
+ <name>Gospel @ WTSK-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357C09560288724E79B9060D9C0F84C554DE2AF95E1C18D54879630807B9D0D7624</stationID>
+ <name>Religious @ WMGY-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357091EDFABCF854E0200A11F27E7FC51B8F7CA613874F30EC63C60468302B981A7</stationID>
+ <name>Religious @ WBHY-AM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>0.84</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357506D982BC1D7936A81B7C1F4C3285B641ECC0C2E3A6AB87182F2916E1B48334B</stationID>
+ <name>Country @ WAMI-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>0.86</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357EA35EFCA45E3ABC98E531FEA3DA4C99272F540516AF16468C4F7F371E44A04C1</stationID>
+ <name>Christian @ WJBY-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853574DD2B1BCDF7B7E2A928EF53B9407A73B3B8BAFE77875287EA0CB5AA33E4CB592</stationID>
+ <name>Christian @ WLPR-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>0.96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357C251F727F42947CC6A43E4E72BD92AF50A41B77BFAE561920C31353731951DFF</stationID>
+ <name>Country @ WLDX-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357C1F2E5D77DB09ED3F8229ABED7D75EC4882536F437B50AA465868539D21825BE</stationID>
+ <name>News/Talk @ WAPI-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>1.07</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357C6C13973C2AC326B8D8921B9771FEF8A67A281D5EF17EA912BB1B6DE11C4581F</stationID>
+ <name>News/Talk @ WTBC-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357C12023DD178A2C7060D47DFF647233F5B656C33971A6DC7CCE3C409F543F25FF</stationID>
+ <name>Nostalgia @ WBCF-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357FEE78DC2DAF5FCFC53F97529810056218C51AA61BAA4A5A16BBDDCD0A864A290</stationID>
+ <name>Childrens @ WMKI-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357AA15DCCF2A515780DEF0922F6509586709891060C5AB2A1793434B0442F0DFC7</stationID>
+ <name>Nostalgia @ WKSJ-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357412BC4A5D46ECF11391A59129A25453876A9DFE06ED781B6323863D7498284B9</stationID>
+ <name>AC @ WTLS-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853571719E12882A75E8A9A540133E3EAA4731E1B6F22E6AD19A01610A98B5262E0AA</stationID>
+ <name>Religious @ WZCT-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535789AD5AB6B06E5C10BC152B3760544365C8138232038C466B372562AE9636D61F</stationID>
+ <name>Urban @ WSBM-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357A1A5556D7D6CAEC98B9F6A234B4B0C824CE88EA95D136EA81CBEB4A654C15CC1</stationID>
+ <name>Oldies @ WGAD-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>1.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357151EA513DEF3D05762B587B090B8391AD778AFC43E07C72416FF1C29D031BD85</stationID>
+ <name>News/Talk @ WJHO-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535720C1C34528DB140D92EAF5B09DD9781CB41E4A7E5A97B326D0BFBD174935B1AF</stationID>
+ <name>Religious @ WLVV-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535784C4E52DD2792C4160ED7451BBC984ECE66640B11C4EBC0E0B474599E2F11EEA</stationID>
+ <name>News/Talk @ WACT-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853573822998DD1FFBFE3B57943ED86B1FC74A839B1D7459D7F803547CC3CE2681E38</stationID>
+ <name>Sports/Talk @ WLAY-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853578DBC8BF42F5845F013376BDD20C9A722720E4167C0B4B901177160FCB6020059</stationID>
+ <name>News/Talk @ WABB-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>1.48</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535711E16FB14F326A1F18E31414A59814DFCC826D4EA294DA0222CBF0D519096746</stationID>
+ <name>News/Talk @ WHBB-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357B5CFCBD37C1BEA0BC4B405A5287DA71AA3F5CFD43492E89BAFF265176C8C11CD</stationID>
+ <name>Religious @ WVSM-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>1.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357F3B90092DC9C589EE621D1879B304120AFDC6FF9FBBF976A1927BD4BE74F513B</stationID>
+ <name>Urban @ WLOR-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357B3AEFC87A4C76C6451E02F18FC241327C7B760141CEE5601377DD8DF6F658F22</stationID>
+ <name>Oldies @ WCRL-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>1.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357364AF983AF075C8C8E739DB7428F19569AF99004057A3404E9E42C26BD03CBF2</stationID>
+ <name>News/Talk @ WXVI-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Alabama_am.krp b/kradio3/presets/usa/Alabama_am.krp
new file mode 100644
index 0000000..b5e00b8
--- /dev/null
+++ b/kradio3/presets/usa/Alabama_am.krp
@@ -0,0 +1,294 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Alabama</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385357D243A2A25E64F66AEF72B393465AC84EF78873D05FC7F821C51CF3C897A3BBE5</stationID>
+ <name>News/Talk @ WOOF-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357CFCBF1F80BF22B2E3173DEDEB646B3726DA048733B886D5F817F1A91CB30F2B3</stationID>
+ <name>Religious @ WAGG-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357391DF737B77EDD45E06266BB5C438290C8462E5BE4F5BFA63BEE8FBAF5B1EE09</stationID>
+ <name>Religious @ WAVU-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>0.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357DD5829138C3F476D4427701A06E89850B85A8E7019EBDD15E0B35E9A4E2911DA</stationID>
+ <name>Sports/Talk @ WJOX-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>0.69</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853578BE4FEB3828B45A0AF416EB81E73B3C96D8665A4D3F077904D82C4670692B99F</stationID>
+ <name>News/Talk @ WNTM-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>0.71</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853577D7FE3D089B80105C95946DEE263A9108119A7C81911AB2075DCBC4EBEC4FF25</stationID>
+ <name>Sports Talk @ WUMP-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>0.73</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853570A8522C63D319DF49D5704C1771A6DD8ACE243FEC43AFFB98ABF4C0D8363122B</stationID>
+ <name>Sports @ WMSP-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>0.74</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853574B8F39D7FBFCE16727237EE5941D061838C0B9091B7B22F84C95662D4B031C1A</stationID>
+ <name>Religious @ WURL-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>0.76</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535756C893E54E57397BA1D8BEF34D7664F1AB1A764C919EE11C7BB29C97E487BB38</stationID>
+ <name>News/Talk @ WVNN-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>0.77</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853570A58F8793E0CBD86218EE1AA084327D6607846C9703CA363B22B5EB90DC17955</stationID>
+ <name>Gospel @ WTSK-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357924EECD8784474016FDD9485FD52BCD4CA9125677EA2450F3FF0FC19F981271B</stationID>
+ <name>Religious @ WMGY-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357D3EAC303C0E6135D4D5D563E927BC15AA26911F623C632FB6DBD95CA368CB1A1</stationID>
+ <name>Religious @ WBHY-AM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>0.84</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357803B5D64F5309EA3857AA910C431D880F5C7174CE4EF9409DB28D8A944104306</stationID>
+ <name>Country @ WAMI-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>0.86</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535701CC99A9E3494A4BCB775781AEAF0E3249A8DE8BBEA1400208D9B93A0FD6190B</stationID>
+ <name>Christian @ WJBY-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535772F9E7FC198F6EB146A964E0DF733193BDC0DB867B64203EA23E542FA5E1FD66</stationID>
+ <name>Christian @ WLPR-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>0.96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535795486B9BCDB40C0ADF1B58E90CB2EC996F9315BD72EC8E662F6BCAB58422F773</stationID>
+ <name>Country @ WLDX-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853576D6F38FD77F1D02B4D716A6C1EC6B64AD507AD44F2CE3166636CFD7D6A615A7B</stationID>
+ <name>News/Talk @ WAPI-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>1.07</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853571D1DBE4E29B6388E106A61BB10960366E280AD288249AF438AFCF75CBFF9A5B7</stationID>
+ <name>News/Talk @ WTBC-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357F8E254DA7AD0154691676CBCB27CBAE26DE45454F8B88C2729FB70324EA71825</stationID>
+ <name>Nostalgia @ WBCF-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535784B0C0D025CB4A6FCA8827367D32EA45CA3B5C248BBAB8CAB1CCC9248A07AC0B</stationID>
+ <name>Childrens @ WMKI-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357435B42C9004D305FD5A2388E5A00D8F3999D640AB8E54FA301DEFB31846D60D3</stationID>
+ <name>Nostalgia @ WKSJ-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357B90F800107E072330040732CFAA9822EE96ADA2AFD3FD0D2DCAF9457E4F0C9B3</stationID>
+ <name>AC @ WTLS-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853575E8DB542065C190BABE70ADB5183D22C06BCA58B880B00B6E6490227BDFC9404</stationID>
+ <name>Religious @ WZCT-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357D2CACAA5ABA59BF7A782EB0FDEDFDB04FC596609EB31C1B0AB692D716EF74A99</stationID>
+ <name>Urban @ WSBM-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357FDC9705FF5D7CA1572A644324A6D12F402A9C3B0067EB4167A9EB425733F9486</stationID>
+ <name>Oldies @ WGAD-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>1.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853579D78200F66946C17489D21A9EE13422797777DDB69865BA6DF879CB8ABC98763</stationID>
+ <name>News/Talk @ WJHO-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535749624C38A639C2E6DAB4B783E5CB4DEE2D3F266532F81B1C4B2F0DE238CDFC45</stationID>
+ <name>Religious @ WLVV-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853576A31EA667A0B0B3B4BA89AAF4D56F9557A56347921569EB6DAB937C38D81837C</stationID>
+ <name>News/Talk @ WACT-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357FC2193FD2B10434FA7252BF43C549C56B58AD8C16ED6E3E58094CCE718E5262E</stationID>
+ <name>Sports/Talk @ WLAY-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357E2B19B6F2CFFAB063AEA6CCF3004A5C1D5041CCE0AD42CE32E3EC2E70D1F6C45</stationID>
+ <name>News/Talk @ WABB-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>1.48</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357C3BD126CB270C5D57657F95F8789B097795E037DBB8FD8388E3E17A496452FB1</stationID>
+ <name>News/Talk @ WHBB-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357B87C2EA55076BB155DFB669E559404488D03166816322ABF2E04AF67EFF97BAB</stationID>
+ <name>Religious @ WVSM-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>1.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535705696694FFE4FC040AAEEEA92A0BFF8F5863907F6851972C344A62E2D5A9FE7C</stationID>
+ <name>Urban @ WLOR-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535765B373853B2DF614FAFB1827BB36924534068ECD4CBCAA4763F827E47CEA4637</stationID>
+ <name>Oldies @ WCRL-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>1.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853578E6AE1A4936C9AC3B3F5C6AF58497740A7B07DA42EFD4B0D00ED26247C4B8EF2</stationID>
+ <name>News/Talk @ WXVI-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Alabama_fm.krp b/kradio3/presets/usa/Alabama_fm.krp
new file mode 100644
index 0000000..9f88e5b
--- /dev/null
+++ b/kradio3/presets/usa/Alabama_fm.krp
@@ -0,0 +1,559 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>2935093-02-28T00:00:00</changed>
+ <country>USA</country>
+ <city>Alabama</city>
+ <media>antenna</media>
+ <comments>Generated from
+http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385356DC9AF24DD9D817F7607E124BA86092E083CD85FDBADE6F6C075366591F25547D</stationID>
+ <name>Religious @ WBHY-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535631E37F4D6509F2E384F21641EAEEEFF25C869E86EF84C6DFF0D7C5FDD44B49B4</stationID>
+ <name>Christian @ WOCG-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>90.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356D410254508ED9874D3553C5D29DAF13528983B4E28E77F3307FBCBA9B275ADF7</stationID>
+ <name>NPR @ WJAB-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>90.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356316DB0CF86278180B635E47236AD63CCB2F3BD7C566F1D6399813D431F6C72D5</stationID>
+ <name>Alternative @ WEGL-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356C0F40F43C567C4A3019520D4799F43A88827A2D059A66EACA0284F19E05F7EDE</stationID>
+ <name>AAA @ WZEW-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535616E198324C4396BC10633E6644FA82D0A9729936005BE8CB95E7996E7EE2E424</stationID>
+ <name>Oldies @ WWXQ-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535676F14D15499B4A638DC76B70BB26F1CC14E1A7CB450783F471861D40EB726AB3</stationID>
+ <name>Urban AC @ WTUG-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535638FEB4FC13E795CC0BAC1154405151F51911B246D70A3E8B39D2917ADF663057</stationID>
+ <name>CHR @ WGMZ-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853564F0E024BB78DF2E84EB45A1DC6728FF4D5E935DC71BD3346A2D01F44469AED8C</stationID>
+ <name>Country @ WPGG-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356EAD02478F90D3F0E8436286A14E6E789D927B9C77C9F78BA00A32DC67E6557C3</stationID>
+ <name>B/EZ @ WRJM-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535688939BD3E5B5E9274D5B9C8C3D9D1B5D3722569EB81041D0B01005F8C4459D61</stationID>
+ <name>AC @ WYTK-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356162421939E82DBE9B1B3F0C286DAFC5774C635BBCCF76D97650492FBD93C1426</stationID>
+ <name>CHR @ WZBQ-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535669E006A77A3F088721E8D15A65F80954F81A08ABFD7DA3E86B74A11472AB5DEB</stationID>
+ <name>Christian @ WIZB-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853567A0C948F7CB268002EAF5F8E9FD66D6A3125E3F241B453E1B85D25A63FE85FCD</stationID>
+ <name>AC @ WYSF-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356578C281B430DE7D50BCFFAFC3963D788158C451ECC97DB62FBA8AC04387CC539</stationID>
+ <name>Country @ WKSJ-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535661FBF7D1033F29F18ECCAEFD818A6F0B5C9226989683F4F9905BDAAC18CDE952</stationID>
+ <name>Classic Rock @ WXFX-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356B441C04FD704385CC6E30256A7EEDCF19FAC8D2B4CD07A0858369796456D7390</stationID>
+ <name>Oldies @ WRLD-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356030B56D49393BF3C664AF7AFE018960A358676B7356C1071498FA7FFEC32DA4B</stationID>
+ <name>Country @ WTVY-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356E41FBDF5E02770397A365CB061F48B0E283156E65D51C3710FCE4439C296AB71</stationID>
+ <name>Urban @ WBHJ-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535617CB75FEBDC6F2BACADD0E4B3CE6C0DA6F9DA0BFFC03AD95D69CEA6A5170D0D0</stationID>
+ <name>Country @ WTWX-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356F146AC84B66AD70448C8BDFD9B5F1EA2642ECD4EAB89D8906A3F327966492A0E</stationID>
+ <name>CHR @ WQKS-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356A2E372AD14169E1F04DDF20D27A3BA29911FA0322B135B77763D7E827C365192</stationID>
+ <name>AC @ WMJJ-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535680AEC4925A01F80EB6CFAC53A79B39F2C9D2BA7208C44B2C281AD2248FE4EA73</stationID>
+ <name>CHR @ WMXA-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535674F993BC2A2574D1D4D2DFCC5AFECBCAA78EA65515D18E72B9F3E55516FB05E0</stationID>
+ <name>AC @ WRSA-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356ED6B0EC10C4228AFB76540774BB2160A3156A245952FB1683A66382D0434C7AF</stationID>
+ <name>Urban AC @ WJAM-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535666F81FEE499D6C62E9C6ACAEAEF3F1C08ACF6C008DDFFC5CF81171533185F6BB</stationID>
+ <name>CHR @ WABB-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356508A2F10972E81080C17B60FDB5C6D68A595D1F0620EE06528E6522081BB7241</stationID>
+ <name>Country @ WKKR-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356BD797312A2805A7446647B40222667B6C7DF89C7D2D7EFA5807669EE5E86DFF8</stationID>
+ <name>AC @ WVOK-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853562C06141995CD31008BB93C5138292A588EA5978988CA35254724198FF6A99790</stationID>
+ <name>Country @ WTXT-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535621C980B6184ED6881460E1002D6733CEA4A4B812437E555129563BA30167A718</stationID>
+ <name>Hot AC @ WAWV-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853565A37F91EC3D0556C05DD350DF69510EBFF424409B8CB928B09C4E42353AF1A9B</stationID>
+ <name>Urban @ WBHK-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853564F3449D61B6A7D1FC5BCBCF34C40B6D640FDA80AAA7AFD96E65FF648C3A0B3A1</stationID>
+ <name>CHR @ WBAM-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356735BC5DAD65AF0727A5704A2CA8616E8EA02AB8B4AC2DA58A37DB54A7308683B</stationID>
+ <name>Oldies @ WDGM-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356821C4B580A9F67D26857F78290279498C75B9D6598F9CE4B85A1BC60B3949409</stationID>
+ <name>Classic Rock @ WZRR-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356EE448776E45AFF8D8ECBEF72C6BAF511BD2791CB7B3F5478533DD1477199D678</stationID>
+ <name>AC @ WOOF-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356BCC75FB264A4549370B985A8B8CFDA5BFE60B8B5F4C8FF4E57D1EF62502658C1</stationID>
+ <name>AC @ WMXC-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535686E1EF4A86457016FB68B880A8ED7AA00418BACD08C89E052258798FFEF12356</stationID>
+ <name>Country @ WDXX-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853564925CBA7EC3FF422C702C6092CDD844F195217C5DD118F903E0E44B3B89E9215</stationID>
+ <name>Country @ WLAY-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356800BD1D648C09063F60AF6B2A9A56DB736D69C538337940D5EA2880AD0E10138</stationID>
+ <name>Country @ WXUS-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853569F54395CC39733FF240FF541530AACAB6D74EF9F53CEB40CC2C36DAC70DCA879</stationID>
+ <name>Classic Rock @ WLXY-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853569E1DA18B1BDBBAF858EC602629663C3BB1FE6C2208E0442BE51FDDACB56AB60B</stationID>
+ <name>CHR @ WALX-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853561DF8211A3C3B03A6386033E39342D645C2D95413FA2EEF79116D1342C340AF7B</stationID>
+ <name>Talk @ WYDE-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535650D21E9EE894CAC1B914360D27E62AA01F7C939479ECCB7DEB9F5A4447BAF6B0</stationID>
+ <name>Urban @ WAGF-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356EB1FC898883E249AA58A42B255443DF53E108F2E5410BB9C10D53231E364FF58</stationID>
+ <name>CHR @ WQEM-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356BB3B9C81342674BA6580891C9D4320A3A0E6E27C43CF8624F2B73EAD733B44F9</stationID>
+ <name>AC @ WBEI-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853564F8E3D5FC91D7D366888CE602EE0BF5B46E68D5CD3F2B49CAC473741E84694A6</stationID>
+ <name>CHR @ WHHY-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356641CD5308FEAF72F3DA2E8C3DFC277EABA27DAF529F62463C1993D57B0F684DD</stationID>
+ <name>Childrens @ WQUA-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356805600C4BD3F9F32E0D22C57155BC47B387C9CEDF90389C8830DAC5F0B856AAA</stationID>
+ <name>Country @ WELR-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356955A652AA5810A1C7642DD4D232E77CDBB18141867464722D126B1D3B40713E7</stationID>
+ <name>Rock @ WESP-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853562BC93110CA5C1E44B76E596692BF10043B11DEA8BCADEB87500E907062707AA6</stationID>
+ <name>Hot AC @ WKXX-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535684915667E79A4FB79432D5995033171F37D90F5B67C386F9BA0013B070C60166</stationID>
+ <name>Urban @ WEUP-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853568E3BB75F8FB6FEDBF0F5FFC2F24ECD2594626BABA46542CCBEA61D4C0FC0C8BB</stationID>
+ <name>AC @ WMXS-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535636A03FF9C68803EAEC03B9799836FF4E21F73E4F7FD4561B4678482EF26E0856</stationID>
+ <name>CHR @ WQEN-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356F2C5E50C1F1FD1CC2C4095880DED68997D657934DA020CEEB1C5711245649065</stationID>
+ <name>CHR @ WYOK-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356A3654F3C045239C385484BB8EC90FA2886637EBC27331177A49B917D5DE1C9BE</stationID>
+ <name>Oldies @ WQLD-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535634234404854D8AF47133297F7EFDE8511983A22500AF1B19130B872EF57BB66F</stationID>
+ <name>Country @ WZZK-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535633C864EC00F00F81744ADC68FBEE56EBA434490BBB9417C04A7A0FEFAE70239E</stationID>
+ <name>Country @ WBUB-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535609ED33B35C5D6E686286006D04FE9BEE0075C8167518AFDCDC737F36470B32F3</stationID>
+ <name>Country @ WQSB-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356F02B1770C6EFC1A3459AB82307C5CFD4ED2325A0A7898E6947664E665F55B0AB</stationID>
+ <name>CHR @ WZND-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535607EE96F6679E98C67615BA4306863B80650165F0D0E038E3558289E2C7BB4EE6</stationID>
+ <name>Rock @ WRTR-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853563C6558D9DF897EF354D1EC1C481CF1022DE629577AA4AEE7682C78608E1E0F82</stationID>
+ <name>AC @ WCSN-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356FAF494FAB2F64DDF806EE06FAF4356FA57763DF8E8911666EBBC09794F2F7856</stationID>
+ <name>Country @ WRHY-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356155FDE0A0BE53C9FE11CBB4682BB433B1A07507D2DFAE1434C376AE99C399DB9</stationID>
+ <name>Classic Rock @ WTAK-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535679243E013F11BD2001858F93C4F344FBCD30C622FA7876877AFBB8ABC69288D2</stationID>
+ <name>Oldies @ WAVH-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535668416552FDD444DB7D7A3926FADD7917E94CB1A8275488C5F24FF5D925A78E17</stationID>
+ <name>Hot AC @ WKMX-FM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853560EF5575C3C51C22B8BAA6DBA98F8D90F121B8B196134C20809A8DAE761EE444C</stationID>
+ <name>Eighties @ WBPT-FM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853563F040215550F37456F9051FDB0CB2809B1BDAF691BE7BB399091A799DC929956</stationID>
+ <name>AC @ WQLT-FM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535622435A292227DC4AAEA89D3FB90049C4CA19055D05B2BCAA08AC8267B819F611</stationID>
+ <name>Alternative @ WRAX-FM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Alaska.krp b/kradio3/presets/usa/Alaska.krp
new file mode 100644
index 0000000..b41952e
--- /dev/null
+++ b/kradio3/presets/usa/Alaska.krp
@@ -0,0 +1,366 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Alaska</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853788BAB0FBB5C2C03521EAE181173E89DAB2CF103C9EE20F0D999FAFB985F5C2349</stationID>
+ <name>Alternative @ KZND-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>87.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378CF6F91A262BC714A805E954656821797701CB9E11C98DCEBE425D8DB2CDD1C61</stationID>
+ <name>AC @ KQEZ-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853785210F7ED014564FDFCB7591354459A8D19802368CFAA72B4213039F5CD184797</stationID>
+ <name>Rhythmic CHR @ KFAT-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853783E72FA8D65B36B6D568E021D61F0961D5A76ECCB8DDD04C690BF23C71E5A6E4E</stationID>
+ <name>Christian @ KAFC-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378DFA4730457342AFDE17CA886ACAD2CFF1DD26275AE9BE420B758128BA1B8A67A</stationID>
+ <name>Classic Rock @ KXLR-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378225A7DD6304C19300BE043374A48030BAB875F6AE37417E9D29BCB8E4BB73712</stationID>
+ <name>Eighties @ KRPM-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378E3BDCEB3D20666CDAE0D4EF1E735D5044B165E2F9667E4E4296AF404A9790147</stationID>
+ <name>AC @ KKIS-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853785B424B38BF40318224B4397D4F44C022D5502275D998CB102F7405AA711936A6</stationID>
+ <name>Oldies @ KEAG-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853784C652F34C5530493C66A275A780672769DF0ACE1EABDBD197C8F9FDA80BB84A4</stationID>
+ <name>AC @ KWLF-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378B08EA3CCD58FDB66A0DFD26F44F57090BA66C5B5355975454E2010B855327504</stationID>
+ <name>AC @ KMBQ-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853788E460DAB1850542DC4FFAF03EDEB304664BDB29DDCA8FCDAAE6891FD6E1F6F96</stationID>
+ <name>Country @ KWHQ-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378BFF9F1BD99ED6CA43993FAA54BFD4FD415C1E5E7897FF8FFB5601EFCED8207CD</stationID>
+ <name>Rock @ KBFX-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378DD08F0C2F92D54539DE499C299427BA38D9192D69E88D6FF9B3AF9F9CB57F43D</stationID>
+ <name>AC @ KFMG-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853784ED9CF833E87E37F0A4DCAD688D11EFCE50E5502F331E82D662870186250FB62</stationID>
+ <name>AC @ KCDV-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378DF38B21FD46101CAB6962DB2CD8DE86CE462FBA07F45E828744C3CB96EC94FDB</stationID>
+ <name>AC @ KAKQ-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853788D5D81428039DEAD83B82F9B364799E166424C5CE0C6F8587C7E8AE9BEB5C25D</stationID>
+ <name>CHR @ KGOT-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853781ECA855457D5291585E523A9072C4159A1352B4F120D9D3D1C2A15E91A54916B</stationID>
+ <name>Modern AC @ KDBZ-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853783DE1426EDC7957E6B4C050EDF8BB4683E0BF04DB65755AF69CE2A0EDC6EE01AD</stationID>
+ <name>Country @ KIAK-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378C70631B172E7516E8A5C4BDF9B3F3E3DB3D6B283D2532CC2E708053F4DA76E94</stationID>
+ <name>Hot AC @ KMXS-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853786DD11E2837153C554D6E541827DF57D353B7BB61A9C18CB8841306C007FF7095</stationID>
+ <name>Oldies @ KUWL-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853788A01609BF63D1AAFEA9ABE715937E1EEA9D254D428807FB0572AD9D4F96E69A2</stationID>
+ <name>Country @ KBRJ-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378694A501252EDD966BCB54A6B632FFD575E56A7764E815233B465ED52CCB42332</stationID>
+ <name>Rock @ KKED-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537898128F62C689FA3F97BAFB105714916EE5822CBDA2646F97F7E1D82436B85711</stationID>
+ <name>Country @ KTKU-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378DA4AD104682159A37AC782DEEB10E8A61B3752D554B971FCD6F3F72182E5D65C</stationID>
+ <name>Smooth Jazz @ KNIK-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853780E6298CC034F2C615B7724DC36AF319F1493F9220C0D743EDA9597048AA1EC4A</stationID>
+ <name>Rock @ KSUP-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853785AA74AD1D4C351E98211DB486ACEE20EC9C8849660E58422DE0BB925B28A45D0</stationID>
+ <name>Rock @ KWHL-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853781F479374944700945811E4E06A016DE41A4A30F418B5067BB792F05C0F89E5F7</stationID>
+ <name>Country @ KGTW-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537803A57121AEA2E6BBF607809337E714B4009E61FC571CA46C47EF901A4F121347</stationID>
+ <name>Country @ KASH-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378B96CF826473CFA2C32D3F51EF19CB67FEC1FC824BC69664C9E98CEE3EC3D3E37</stationID>
+ <name>Christian @ KRSA-AM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>0.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537818AA1553485586162410609ED44923EE185E965B768AFCD5F0F79A2E683B55B5</stationID>
+ <name>Sports/News @ KJNO-AM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>0.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853788BC69497D21B5BBA18A360C3D7908691739B933AB1836100FD21D682678D0D78</stationID>
+ <name>News/Talk @ KENI-AM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>0.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853787B3CCCF4D56A2BE197BE9FF76F71AE109980A1B791B8602AEB26261EB695E69E</stationID>
+ <name>News/Talk @ KFAR-AM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>0.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853789CB77726A03301FB18202184D937BB17F82FC114B3DDA441511001C12BFE9235</stationID>
+ <name>Country @ KFIR-AM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>0.72</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853781D6424759FA38DC85D7E7AADC3A41BFAD755F34649D34AB8EFB377920E263783</stationID>
+ <name>News/Talk @ KFQD-AM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>0.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537875736E7C6226BBBDC9E034BCE3E814F40928E5C0D9021B6426D7C5D6174EC0EA</stationID>
+ <name>Christian @ KCAM-AM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378BA2B82D189887BB8EF4D21DF0734263BF77315352089D6CB22493AFD8D29996A</stationID>
+ <name>Full Service @ KINY-AM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537875EBA45E960486A19E682A3FC3E006BC90079BA33E9FE324D84B92960683A8A5</stationID>
+ <name>Country @ KCBF-AM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>0.82</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378E413FBAFE29ACE7ED13DAF86B54305CA3CDB93BA740DF89A1EC130D7D8EB1B9A</stationID>
+ <name>Religious @ KICY-AM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>0.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853781D3AF83D8CB4D919EE405FD0BAA675EFA3566F75B785496B402DDF868A0973FC</stationID>
+ <name>Country @ KSRM-AM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378131C1319AF7DE91B538988C1C2C4A98AE0DD033BC809DD4FBFEA55B841F1C924</stationID>
+ <name>AC @ KTKN-AM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853781C79B6427B5028A4AD51473E76898984F75BD8612A3294CE780683500C809EAB</stationID>
+ <name>Sports/News @ KIAK-AM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378A6BEFFED4B54F9C2B8BF7B6EB2059816E638B1F99427B7C715808DF5FA72BB1A</stationID>
+ <name>Business @ KUDO-AM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>1.08</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378909B7613B09A21E10F90A482455BE3AC4B2A537B8ADF7FB1D6682D4C8015CD75</stationID>
+ <name>Classic Rock @ KSLD-AM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>1.14</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537802795EF6E3C6F07F76F923D693924D072E79DA7A96AECDE0C9557995F805C038</stationID>
+ <name>Classic Rock @ KLAM-AM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Alaska_am.krp b/kradio3/presets/usa/Alaska_am.krp
new file mode 100644
index 0000000..dbfd67e
--- /dev/null
+++ b/kradio3/presets/usa/Alaska_am.krp
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Alaska</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853785B4D8D47B242E2A629A0DF68AD5B13F17F95A6DBE8FA52AFCC7F944FE2D4B19B</stationID>
+ <name>Christian @ KRSA-AM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>0.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537854311A48A68D0F090C84798BB7B87EC300BA878B8EC1EAE6A22A267FAAC4513B</stationID>
+ <name>Sports/News @ KJNO-AM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>0.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853781BA20F18A13F4C4CD830D15FF78EEA5FF43AF553AD642192F93913ADF920766D</stationID>
+ <name>News/Talk @ KENI-AM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>0.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537868C3EBC14B323C4C885D5BB23FCF7D002306BADE59416BD04AA5DD7F8D9C9C67</stationID>
+ <name>News/Talk @ KFAR-AM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>0.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378780FB529CC68B4EBE62395BF6AC3AE3F901270A74437B631F1AF078C11D8C8E8</stationID>
+ <name>Country @ KFIR-AM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>0.72</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853789F91A0DF711A2D9BCECD4975FEB623D803C4921D2BCF2F3B688E56197C2A36C0</stationID>
+ <name>News/Talk @ KFQD-AM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>0.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378B8A28E9E68E6B5F96B99C48DDB6B797BBF39B95CF5CF79BD8D4EFD2E86704746</stationID>
+ <name>Christian @ KCAM-AM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853788241732ADBF12C7318BE8042113E2E150BA0D0CCCEA10439647100CD12912554</stationID>
+ <name>Full Service @ KINY-AM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537864390E6C08B505D238B652211240E57A35B0E4D349191C494F1F436965C0E272</stationID>
+ <name>Country @ KCBF-AM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>0.82</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378195FD37DF9A775CCF6F77CC65647FE2714389330EB6EF3493605ADE588C4A2E1</stationID>
+ <name>Religious @ KICY-AM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>0.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378B9D23EDB6BEAB9F318EF14CF5F7813AEC87AB47BB8530D94FBE7FE1586E3A1EB</stationID>
+ <name>Country @ KSRM-AM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378CB306A439AC01029AC89B62F0D217FE66FA6C782716AA29A9D2E40DEFF8972A2</stationID>
+ <name>AC @ KTKN-AM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378254386AAD3028BBBA35D1EE4A1A2386A0D1B5188C1565CF3BC5784D9B41381FC</stationID>
+ <name>Sports/News @ KIAK-AM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853782488C834972431909C6B1CD82AEFEB4A604BFB47084FD5C60CFF36DB4E32D6F3</stationID>
+ <name>Business @ KUDO-AM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>1.08</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378A447C628368E45DC1689222E19798A4E55F58D2DF8468844D0C7D32AD3BFC66D</stationID>
+ <name>Classic Rock @ KSLD-AM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>1.14</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378981C4B015C3EB69E4A1728B8B1D9BBE424CFB7E73A94112D351623B2228087E7</stationID>
+ <name>Classic Rock @ KLAM-AM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Alaska_fm.krp b/kradio3/presets/usa/Alaska_fm.krp
new file mode 100644
index 0000000..e974d99
--- /dev/null
+++ b/kradio3/presets/usa/Alaska_fm.krp
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Alaska</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385378802346D4AF4476AB669321D095FE723F6BA2260F7D5EB1D5FBEC99E1A69FDA37</stationID>
+ <name>Alternative @ KZND-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>87.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537880910FFAC480AEA1F1D85100888E39433487C93BAE511775D5197D9D5624EABD</stationID>
+ <name>AC @ KQEZ-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853780E24EB7C3D463C3B09328D027FD5FBB3059B179189E13D4CC442C428761C2B15</stationID>
+ <name>Rhythmic CHR @ KFAT-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378C59E07123B3C8AF1D91418A98A461BC8FD76BC13589E581E7AE8EF1169034049</stationID>
+ <name>Christian @ KAFC-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537884358C110A8A1514177345BC26494EE870DD3A186CC473252F78AA6E507C7BF2</stationID>
+ <name>Classic Rock @ KXLR-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378C7F18ACEBD2EBE0CFAF57CB6EC849C347F996031D825F7BE50DBC6D820A9D230</stationID>
+ <name>Eighties @ KRPM-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378F072AA7775E444159F4632929F5036D58C3E5411BA5F15C5C149F0838BCB60EA</stationID>
+ <name>AC @ KKIS-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378B47BAC21DDE1A4265F95C80D43B6D18183505DFF3D1D0DC34043B31D0D99F743</stationID>
+ <name>Oldies @ KEAG-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378746E05963125F66483DAC3CE1878685A62F3C761F162DD7824B108EE5D0A4756</stationID>
+ <name>AC @ KWLF-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537832FE3D87FC1169F75AFA556066DC68800F3D8B021C2EDD23763AAEB7D036F324</stationID>
+ <name>AC @ KMBQ-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853781DFBC086A4F976CEEAE7341D040F22508D9F14EA9B97B494346A3A3A15D54952</stationID>
+ <name>Country @ KWHQ-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853784993E156BE579E4416C2A1F56F1857CB9DB8CA7EC28A631EA5063055A027C285</stationID>
+ <name>Rock @ KBFX-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537864726041ED7AAA971203F834251B5F307A6A195F268FC07E26BFB830B005D950</stationID>
+ <name>AC @ KFMG-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853781E46CD51B4463DF72D7EE4A6480E74DBEDB435F27DF1A41F7D5D0E0163460C9A</stationID>
+ <name>AC @ KCDV-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853786B2ACF7284763B5B23FF4235426EE57399B7897271582D1A3598302B41A19F56</stationID>
+ <name>AC @ KAKQ-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378711EBB0CE1B6402A21919AED159E9B08AC493AAF4A954E73A1CD515EBA49B0BF</stationID>
+ <name>CHR @ KGOT-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853782839D7447F2AC3D2BBCB320C6744C6007461076BA4725E38F77EC2B2CA526236</stationID>
+ <name>Modern AC @ KDBZ-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853781D5760609D1151E4E46122A1AFE9A0A697E2857067EEC9E93BEE57F76F1545B9</stationID>
+ <name>Country @ KIAK-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378CC03C6FAB36C5D3D0DD4BEACABD617A4AC0BF23E2BF9DD6CCDCFCD563123C3EA</stationID>
+ <name>Hot AC @ KMXS-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537880F1A86A244C08E08DDF61BA333F4E904106C0DDEE36EA071FED89AFD8013768</stationID>
+ <name>Oldies @ KUWL-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853783A31FB1ABE70CEBBFBF60AB5A2F1AC9461C44BFA92A793EF81833A871795577C</stationID>
+ <name>Country @ KBRJ-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378936753E8AFDCE944814E45B8601551865CA90BE1CE49A54B61304B21FE6EAD30</stationID>
+ <name>Rock @ KKED-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853785DD2C9BFECDACAC8233B8001E259D038DA0DDFE07CC0D66C7B26A9F826796CE1</stationID>
+ <name>Country @ KTKU-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853782BEE947F79D14A17D9FAE8CCB519B7A25EDB84A3CAB8F736E113845CCE54A04E</stationID>
+ <name>Smooth Jazz @ KNIK-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537873FE149308D8E8069084722B0609F352AF14BD94843CD2BF9F01E07FB4132B6C</stationID>
+ <name>Rock @ KSUP-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853787B69319B033FF4CB5101F910863919A7DA67D716F10F4B8F412FD98674C9E0DA</stationID>
+ <name>Rock @ KWHL-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853785CFCD8B270F673ABEABC5CE0829160012FEF590353C7AFE637FBA6FA79AA8370</stationID>
+ <name>Country @ KGTW-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378439FAE03C32D305909E2B10F1779F7B9134F6FABD2986AD538A4292651DB1BA5</stationID>
+ <name>Country @ KASH-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Alberta.krp b/kradio3/presets/usa/Alberta.krp
new file mode 100644
index 0000000..1cf3766
--- /dev/null
+++ b/kradio3/presets/usa/Alberta.krp
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Alberta</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853780FAE1C6C25061440A80A603674BE0548BE72CF9FA55F35ED9EE4D5BD8C0363A0</stationID>
+ <name>Country @ CFWE-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378C0AADE85A43442C43CE31F22BFA5F05EAB2CEBE52AC7A0CA28965C42A8061F66</stationID>
+ <name>Rhythmic Oldies @ CJSW-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>90.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853783A71CA9D83193792249CEE100AB8927715CAEA722FA7240A6744558DCB6C319F</stationID>
+ <name>Rock @ CJAY-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378AD37014EE4E733A5ACA31247FE51168ACD129E2B22CE7FC884C06561EF1B22D2</stationID>
+ <name>Alternative @ CKNG-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853785F2EB74C8B58F3AA9BCD474B30D7C13A78DB847009E914B1E0EB3F3D8C1A175A</stationID>
+ <name>Classic Hits @ CHHK-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378F6E51ED3C76252FA6524D27E5109BFA743791D5C56A86B11AE5E14E4E9A254A6</stationID>
+ <name>Country @ CHLB-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853787B2AA8D76B6F7627D521207BE1E1727C415C3CBCAC18CA22E29B5A83E60E973E</stationID>
+ <name>CHR @ CHFM-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378CDF63872C81ED21D08337FC844CD89E7C95F5FB5AF367A8BE45F277B8A473423</stationID>
+ <name>CHR @ CJTS-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853784B3D9C8D49E1503081AFEAF9F4E1AA3F4D00062F4711C58FDBED37A190BD7B53</stationID>
+ <name>Classic Rock @ CIRK-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853780D4C3A7F642534552322E8E2D5BE2F913D8E94568FCE9B9A93B5A586740F4ABF</stationID>
+ <name>Hot AC @ CFGP-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378A60ECF6358DA10AD893E14FF5F6EA521FEBC59BD8F4BD26CE0E041DBFF56C4F7</stationID>
+ <name>Classic Rock @ CFBR-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378312FBB264D4A90BBA83EF41FF6D5FB60F1933C759111D733CCC46D8010F38D48</stationID>
+ <name>New Country @ CISN-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537844B72671AA9A88CA5D5934C4C15852741904DE3B6F7B93BDE3A49E88F270EC49</stationID>
+ <name>AC @ CFMG-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378FE4CE6C37EB5F1811CD58132512AE292849E04893DB76F057732703C8D64F89E</stationID>
+ <name>Rock @ CKIK-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378E0379B23681449EB8C901A44454F0E59D23ED3B51D872513A1C89CD13F68E3EB</stationID>
+ <name>News/Talk @ CHQR-AM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>0.77</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853783FC783D1673373FF08C16C68DD4930E57F3DE24D1289E2E31D08EC123E749EAD</stationID>
+ <name>Country @ CKGY-AM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>1.17</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Alberta_am.krp b/kradio3/presets/usa/Alberta_am.krp
new file mode 100644
index 0000000..2875a4e
--- /dev/null
+++ b/kradio3/presets/usa/Alberta_am.krp
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Alberta</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853787DD40C1BEEE3947B3134F34252210E517164CC5FDE203EAA19C29972D39B139B</stationID>
+ <name>News/Talk @ CHQR-AM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>0.77</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385378FE7442F39084CB89C3B5E38960A058F0B9D6B0AFC789AB4AF3EF8EC5470FE06F</stationID>
+ <name>Country @ CKGY-AM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>1.17</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Alberta_fm.krp b/kradio3/presets/usa/Alberta_fm.krp
new file mode 100644
index 0000000..08ec42e
--- /dev/null
+++ b/kradio3/presets/usa/Alberta_fm.krp
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Alberta</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853778674CD580E00787E07AC1528B7CE8861157AB80B1ACBE1285D16CF68661D1EB9</stationID>
+ <name>Country @ CFWE-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853774ABE9752541CE4B9628567B81024E05450628AB02E5E25E6942B9046C41F9ACF</stationID>
+ <name>Rhythmic Oldies @ CJSW-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>90.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537733E08552CF2DFD0C7925003F6EC2B02D2801E37F0C694335DB228F2E39CF35EE</stationID>
+ <name>Rock @ CJAY-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853776C25F86C70CCD31CEA23564BB708A57EF5F9085A7688B43DC6FD872014910FFB</stationID>
+ <name>Alternative @ CKNG-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853772A8F9E92C1CB29A7A59350909BED4BBFDF7F39660C352B878D9113D14013712D</stationID>
+ <name>Classic Hits @ CHHK-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853773611391247EE7FA954C7D9B66FF417A1608BCDB991260EC536CF043E5908BF78</stationID>
+ <name>Country @ CHLB-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377096D0B37514F6B02B594995C4461722DF8DEB8C60824F18245CA27A729986A3C</stationID>
+ <name>CHR @ CHFM-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853775B02D76F9E43FA4A53B9795FF14D1A1D22A970EDA59D3D43C9F507E715EE112E</stationID>
+ <name>CHR @ CJTS-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853770337181A7624FFA5AC1B478A0805106E22AB7FBAFB49A68C7D7AEE9534A97007</stationID>
+ <name>Classic Rock @ CIRK-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377A83A6C70A32728E42BE200437F2605AAFF3BFB342F0A7596AA60C88442F49700</stationID>
+ <name>Hot AC @ CFGP-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537734C34BAC629451F47196D3C1E703AC8E6513CDD2740FBBFFA54CD6995FC0B642</stationID>
+ <name>Classic Rock @ CFBR-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853770976EAE07E91233E016FB68C6D0EC2ECAEEB6662F974C444D3CA59F2958C9118</stationID>
+ <name>New Country @ CISN-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853773DEE94D38AB8333A773EDFB9ADE76F0F8161D381D1A7AA36906EAD1DC10D39EF</stationID>
+ <name>AC @ CFMG-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853776C4C04904D4EBF1B4B6CF03AD5B98DF21541D8AF56F763E7D6935D45D34CDC64</stationID>
+ <name>Rock @ CKIK-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Ann Arbor (Michigan).krp b/kradio3/presets/usa/Ann Arbor (Michigan).krp
new file mode 100644
index 0000000..36a13a1
--- /dev/null
+++ b/kradio3/presets/usa/Ann Arbor (Michigan).krp
@@ -0,0 +1,334 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>The Mad Doctor Kaeding, kaeding@kaeding.homelinux.org</maintainer>
+ <changed>2003-01-01T00:00:00</changed>
+ <country>United States</country>
+ <city>Ann Arbor, Michigan</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385399005A74622415F2FDDEBA5DE614AB39E70C3A05BD488EA05FF7959CE37AFC154F</stationID>
+ <name>89X CIMX Windsor, Ontario</name>
+ <shortname>89X</shortname>
+ <icon></icon>
+ <frequency>88.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399EFD1610C7B294BE1BEEEFE57951D3007153626AC1156A1E4197F1A5D0D50D5DF</stationID>
+ <name>WCBN University of Michigan, Ann Arbor</name>
+ <shortname>WCBN</shortname>
+ <icon></icon>
+ <frequency>88.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853992E3A66486CA59773049D35D3B64F9EF810EF5B5208A4EC7060625B1047256277</stationID>
+ <name>WEMU Eastern Michigan University, Ypsilanti</name>
+ <shortname>WEMU</shortname>
+ <icon></icon>
+ <frequency>89.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399F3E0F0A82907F7E72EAB3078B284EB292D60D8D2582A674533DF7980708AB73D</stationID>
+ <name>CBE, CBC Windsor, Ontario</name>
+ <shortname>CBC</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853994F2383C315AF4888298F68E323F2DE18B8619BB306D03B64BC9B2208D46BB9A7</stationID>
+ <name>WKAR Michigan State University, East Lansing</name>
+ <shortname>WKAR</shortname>
+ <icon></icon>
+ <frequency>90.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853994B06CFBE8C11D31853B6CC1201128EA7B8144C9478C06FFAA6FC8CDB5E1481DE</stationID>
+ <name>WDTR, Detroit, Michigan</name>
+ <shortname>WDTR</shortname>
+ <icon></icon>
+ <frequency>90.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399432F3E0E7F9211239B47F893EE0E9CBDC85955CBED4F598295194E0A68D228EE</stationID>
+ <name>WUOM University of Michigan, Ann Arbor</name>
+ <shortname>WUOM</shortname>
+ <icon></icon>
+ <frequency>91.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853997474D6F94D53EA62057457A0E36DFE84D0C9C5E9BF114EB811AE9432BE2EA875</stationID>
+ <name>Mix 92.3 WMXD, Detroit, Michigan</name>
+ <shortname>Mix 92.3</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399057C15A535C89D414020872268F57B59E960BDDFBDBE793518DD0C24B8B4CDF7</stationID>
+ <name>Kiss 92.5 WVKS, Toledo, Ohio</name>
+ <shortname>Kiss 92.5</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399E972D1585FB93DCAE7FD29B04C582B66D19B0F6AC12C3B659C117B86367F10EE</stationID>
+ <name>WDRQ, Detroit, Michigan</name>
+ <shortname>WDRQ</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539945B2458C1670AEA6831E59EAD9B68A82E81AE852F965C2EF433206C7B0059A56</stationID>
+ <name>WHMI, Howell, Michigan</name>
+ <shortname>WHMI</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399992696D6CBABEA7C76E99189C579CFB48483EECDF575B9F94D850674F71B6F5B</stationID>
+ <name>CIDR Lite Rock 93.9, Windsor, Ontario</name>
+ <shortname>CIDR</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399834FBC612E7DC68F88147CF16166BBB808824FABF72CC21170027401B86A7F82</stationID>
+ <name>WXKR Toledo&apos;s Classic Rock</name>
+ <shortname>WXKR</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853994004E8C949BB5FB6BF2F1F59DD5962556B774CCC043BC4A1D099899AB3A07279</stationID>
+ <name>WCSX, Detroit, Michigan</name>
+ <shortname>WCSX</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399CCD155FCF6FAC3C357112F0C7CA94EDBFC17EA8BCA4D3906F99BBFD6308AEF92</stationID>
+ <name>Classic Rock 94.9, WONB, Ada/Lima, Ohio</name>
+ <shortname>WONB</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399214A4D4A06C9B654729493E14F4A55B769CDF835DE0774E46A50319F3D62D892</stationID>
+ <name>WQTE Country, Adrian, Michigan</name>
+ <shortname>WQTE</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853990C395D4C1561B8BEE4F927BC665C114B95C3BD44960066354C80A731546A5993</stationID>
+ <name>Channel 955 WKQI, Detroit, Michigan</name>
+ <shortname>Channel 955</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539959F016DD641FC2FA5F5FA4C6537C3E067F1A4F06976B2C2277E1FB4F9CB1CA14</stationID>
+ <name>WDVD, Detroit, Michigan</name>
+ <shortname>WDVD</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539949A7D21CE0EE66829B1FD992DBBCC845E31DFB46CEBF68B5F0DFFDA4CB7FD6F1</stationID>
+ <name>Detroit&apos;s FM Talk, WKRK, Detroit, Michigan</name>
+ <shortname>Detroit&apos;s FM Talk</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399D6B8D7236D1238C4BBF5727F17551B976EF4397FC35C3BBD1AF3A0B3D5C1761A</stationID>
+ <name>WEJY, Monroe, Michigan</name>
+ <shortname>WEJY</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399300AFB781FF5C1F57CDEEE2AE71F1B9E8B4C1C0FB0113AC44D696CF01F6F9C04</stationID>
+ <name>WJLB, Detroit, Michigan</name>
+ <shortname>WJLB</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399552792808951F429B9439DD185D8C862540B24FEA2013B650191DD9109C0F661</stationID>
+ <name>V98.7 Smooth Jazz, WVMV, Detroit, Michigan</name>
+ <shortname>V98.7</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853998C67004465F088B82C6D383B38BDAF8081751A78E575F1162F975406E5849FD5</stationID>
+ <name>WYCD Detroit&apos;s Country, Detroit, Michigan</name>
+ <shortname>WYCD</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399C8F9199AF06523CBAB5352BD5372C1F6F04C62E6D12A27920A4356055F206F59</stationID>
+ <name>WNIC, Detroit, Michigan</name>
+ <shortname>WNIC</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399B3951A2857BB08D603D8E29F565C1F71674D2F63B6D65C1AACADD7AAEF66DAFF</stationID>
+ <name>The Riff WRIF, Detroit, Michigan</name>
+ <shortname>WRIF</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399F54E78A7583AFEB46233D2234DAE1D4E8F00701F61D12E7EA4000C2E98A82B1A</stationID>
+ <name>The River WRVF, Toledo, Ohio</name>
+ <shortname>WRVF</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853993A8C5D2EFEDBB9EDEA7492AB07F97DCD18AC7B47A3B068E7571B6272DCAE231E</stationID>
+ <name>WDET, Detroit, Michigan</name>
+ <shortname>WDET</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399E0BE620D41DB088636173A5E445E9B6114C97BCEE5D3957D3A4B224349144C2A</stationID>
+ <name>WIOG, Bay City, Michigan</name>
+ <shortname>WIOG</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853996467EF21C3A454CE64F2856535198A913E332755066B427332F6EFEC2E2A3EE6</stationID>
+ <name>W4 Country, WWWW, Ann Arbor, Michigan</name>
+ <shortname>W4</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853991685E29A91616F9222AF37F79B5CC44A99AE84572EFEA4D5145491274EBD7750</stationID>
+ <name>WMUZ, Detroit, Michigan</name>
+ <shortname>WMUZ</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399F85C8AAC4FF9B71EF48FA3E2F4C89ECD57280ECCF7EF078364D68639357CA9CD</stationID>
+ <name>WLEN, Adrian, Michigan</name>
+ <shortname>WLEN</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853993E0370DA1113928D6DE6CDC38C104299EFD40DDDB458F9D8BE2B32EF832D5F3D</stationID>
+ <name>WOMC, Detroit, Michigan</name>
+ <shortname>WOMC</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399472E70E9000953B5EB27A679A01FD40D6C1EDC35089FDDFCEE8F80086A3F2DFD</stationID>
+ <name>WIOT, Toledo, Ohio</name>
+ <shortname>WIOT</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853991DBC67776DB8AD7286548A5EB881B1B27BBB1D9498B4C25F2BD5A0B4C7A46DA8</stationID>
+ <name>Magic 105.1, WMGC, Detroit, Michigan</name>
+ <shortname>Magic 105.1</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853990C1E20E6DEC883C45D1A6BC20EE929CAA19A444F9CF99285240291DB7D03A087</stationID>
+ <name>105.9 Jamz, WDTJ, Detroit, Michigan</name>
+ <shortname>105.9 Jamz</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399B99491B928D2B5A13E955B7C72D2122BC6A4CAFC325632FF97A028B766FFA6D0</stationID>
+ <name>Q106, WJXQ, Lansing, Michigan</name>
+ <shortname>Q106</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539977CEB45224C8DE3A8A849875530543FEA5622D0DF9D78030C0DA24730FCECDE4</stationID>
+ <name>106.7 The Drive, WDTW, Detroit, Michigan</name>
+ <shortname>The Drive</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399F49BE231FC1807651E2A349302B715D7A81E52E2650522240488F898FE49DC22</stationID>
+ <name>Kool 107, WQKL, Ann Arbor, Michigan</name>
+ <shortname>Kool 107</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399FE25B77559FCC855CE55CA66E9EB51FFE83EE2450ED257579581410F731DF86A</stationID>
+ <name>The Rhythm, WGPR, Detroit, Michigan</name>
+ <shortname>WGPR</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539929DCFAA388C1F38BD8414A88FE999F0FB7FF9F2819238BD823DAB7EAFF83DA2E</stationID>
+ <name>WVAC Adrian College, Adrian, Michigan</name>
+ <shortname>WVAC</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Arizona.krp b/kradio3/presets/usa/Arizona.krp
new file mode 100644
index 0000000..5570b4c
--- /dev/null
+++ b/kradio3/presets/usa/Arizona.krp
@@ -0,0 +1,702 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Arizona</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853589A6F0B2DAF1AB2EDCCE6388BDBF9DD35B232A3486246D29618108691FCED579E</stationID>
+ <name>NPR @ KUAZ-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>89.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535875C2C13A6A7FDEB8E65E28C8BD27E59BFE7BFDCD7E3BBF507046DE9B106C94B9</stationID>
+ <name>Religious @ KFLR-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>90.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853582930D4D3210BC14EA11B051B6E4C546D671D4BCFD7B7807F4C3F669682BE289A</stationID>
+ <name>Classical @ KUAT-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>90.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358077542BABA76A9FBAC407D184CC742D575F61669BF87F41F37FC8149DEF4127F</stationID>
+ <name>Country @ KGHR-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853587D94DBB663531B2BB7C132BA3E13E7CF14050A9931372BF4F9B296F6B6FB9A71</stationID>
+ <name>Alternative @ KFMA-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358F130BC9BF3BBCBB0FC2F4F4B92AC1EF3B8BDB2B6DC5503848F6AF23A76AA017B</stationID>
+ <name>Rhythmic CHR @ KKFR-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358F11F84C82BDF7E0CE6DDB1F6DA8EAA8E792A8B947CBE235811E8C56B494619A5</stationID>
+ <name>Country @ KOYT-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853587C440AB3307754C3D8FE3020F0DB6299D5DA35C5AAF111340A19B08D23F411BF</stationID>
+ <name>AC @ KLJZ-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358DC5A99A5C935352CF9BE5EB2F1A88FB145A64E8B7D203C623BFC1DF9173D25A6</stationID>
+ <name>Rock @ KDKB-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535882CB440D753F3BF0C369AFD5DFBC4018ECAA6E07BB22A42FFAFD805510A8FA4A</stationID>
+ <name>Country @ KSNX-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535880AF69F2848618FC66647A6C102A1E94078C539110AE51BB26F174E45C86434F</stationID>
+ <name>CHR @ KRQQ-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535828EE812EEE109F6932E1DCABA0FA14D9702FEB15F6468F522499076691EE114F</stationID>
+ <name>Classic Rock @ KMGN-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358DF18B65FBB4088F61FFF07893CFE7B3C11EC6775AFE6DD4FE3596E6CCE3162F4</stationID>
+ <name>Misc @ KBUX-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535874325EF025642D7FB1E09E8F451D3DB8E317D2C8B9165FFFF922CEE485E6F34F</stationID>
+ <name>Oldies @ KOOL-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853585B94FC6449E9C9EE1589AD9CC5711DDA5E73FF0179BCC784509866AC94FE7D1E</stationID>
+ <name>AC @ KMXZ-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358C661121DC7D3FB2186371B181340F23C0A74B3FED501818E6713BE7283CB53FD</stationID>
+ <name>Smooth Jazz @ KYOT-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535847DFF45F9600AA81564CADA1740271B9147E13D52F06F543FA4861EBCEEB5791</stationID>
+ <name>Classic Rock @ KWKM-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358A78605065B1D92E25F7DB484C4C8FE6770A97C39DF3950C6F20AB3E81B6F6841</stationID>
+ <name>Active Rock @ KZGL-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358FC9C7F044D99B0E726E5AAC1C8F64E4654F8BF84FC2E4B69BAD414CA1D46E3DA</stationID>
+ <name>CHR @ KWRK-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358D789F97B98FFA86B5408A6AACF4DA313C337C7FDC848814CB91CBE847E9EB756</stationID>
+ <name>AC @ KRFM-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853587C64E7D6796E70FDE58D9CB8604C922218E84E53FB890D13DE832E7428120D96</stationID>
+ <name>Hot AC @ KMXP-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358BC95B1BCEC9F38E605297113E5BBF243778400D7E533F5437DEB630499C7E8E0</stationID>
+ <name>Oldies @ KWFM-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358023B56B3D60B856EF36DE1A57CCA065746B352F55E7E2929851DCB72BC10822A</stationID>
+ <name>Rock @ KRXS-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853588148B5B47FAD49F8B4E1E7BB6C84B27AE88A7B5A990D0330CB052BC6C5A390E6</stationID>
+ <name>Hot AC @ KSZR-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853589208AA6E41B0E115A52AD6B60D26928029363EB2AB6DD0662670CC442DF88CCF</stationID>
+ <name>Active Rock @ KUPD-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358BD9954D6C2562D6AC74A27A82946B6E602128FA6F5DF79BBB1FBFA856B2406DC</stationID>
+ <name>Rhythmic CHR @ KOHT-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853583E065E6FB5F94089C38F655F5484B289ED5503296A11967C2EA9F188CCDBD2FF</stationID>
+ <name>AC @ KKLT-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853580E558237AB61E624E0FA949ED540A23D521A7E34791FE355F2C37F21D235A3A1</stationID>
+ <name>Country @ KFMM-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358AB0CD74F6AA3740A711B7D59F928D19E5F95A4BDF9963887CB1988B64BCC330D</stationID>
+ <name>Country @ KIIM-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853581D7647B069E6995A4CFA3F14865C32761E3735A352570EC542875AB9B41E5705</stationID>
+ <name>AC @ KESZ-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853589C1B260CCB306923EDB8CD1A207B3D1D6AC4367905F4519A9326DBDBDDB4D096</stationID>
+ <name>Country @ KGMN-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535891771629AF91BF9C74872C266614120B358C021E39AF24B7C1ED902D15593D21</stationID>
+ <name>Classic Rock @ KSLX-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853583003F72B926F8BD6F99F668689324068384CE2E946840EC398F237DB6CAE24F9</stationID>
+ <name>Classic Rock @ KYJT-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535891BE08A7E9DF893CDE4F007931D117FCC63CE4F1E41C709B42DA6D0E4F8A98B9</stationID>
+ <name>Dance @ KNRJ-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853582821C2A42ECCDCB21BF7D8518CD18A54A0EAA193288D82D26EBCAA772A415466</stationID>
+ <name>Modern AC @ KZON-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358F9735D15A745255EBF51B2A3DA0B6DA9E865CC9A447FE5FE7D17C869FB17BCF8</stationID>
+ <name>Mexican @ KCMT-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853589EE807B3F42E138BE1990F16B759D4079094AA527A59E557B0EB00292D9717B8</stationID>
+ <name>Country @ KNIX-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853587034D0ED6E823F895ACB3719ED49BF91B977B136C9C5EB018AB97D2C7ABF5091</stationID>
+ <name>CHR @ KQST-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358F2ED6E30CCCE372A6677859B159B28F77D0985467D66B7420B59C244DB4D7C6D</stationID>
+ <name>Alternative @ KEDJ-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358632DED52066099D23075672FAAB4709E71C389D78A8594EA2118E9A4272A7A2C</stationID>
+ <name>Hot AC @ KZPT-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853582F5FCB29C0DF3608E03F570686EE9D1140C60E9B5C0D5C06DD1EFE85EC5635BA</stationID>
+ <name>Rhythmic Oldies @ KAJM-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853588DCAB726E6FE454B5B688F590381D9BFC053FBDF5BFEE7FBF3762A595D70453F</stationID>
+ <name>Spanish @ KCEC-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358AEFBE5760AA26EA2A7DF4AC4990141EA623A6B2F7DAE8A31239D7FE7A9C114C9</stationID>
+ <name>CHR @ KZZP-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358206E27A0EB5F46EC714220F6A2412580F2A3788E40219E99FEC2F8531E6C073A</stationID>
+ <name>AC @ KFLX-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358E557CE97138A966235C4506F0255227D6167464FFD9455ED21CEEE34AFDB5A2E</stationID>
+ <name>Mexican @ KHOV-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358679FEBA17A4509006E94A77734A3C58ED8E3400BFE7F071E27425185910F98B7</stationID>
+ <name>Christian AC @ KLVA-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535815092324D2B0D19658D0BAC31E80A32C089D8CD2B9710FDAC0C1BA6E8C25A113</stationID>
+ <name>Country @ KVRD-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358EC28511251E7E4768BB144EDF5208B48CE5748377F050CEEF2DEA77A964FC3C0</stationID>
+ <name>Mexican @ KHOT-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535837B2C92A23010EFDABEBEC12FA8322D40F225532A741C496B22E529B0ECDA62D</stationID>
+ <name>Oldies @ KPPV-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358C024CB63325E4EDBB03B6766461F43E3CA5F3711F045BE0C8A651F9859F0F7F4</stationID>
+ <name>Country @ KSED-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358F976135855DAF63275683D587757B85AA98B969289FD94950A51DD17BABA14B6</stationID>
+ <name>Country @ KMLE-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358CFF2BEAE5E92CE923B9BC091D5CC8E47EE94416AC4A204B9A8F6303338C5FD97</stationID>
+ <name>News/Talk @ KFYI-AM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>0.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535897C595E5ECA51163649F23B8B1F96D80C9369E49209656401AC4F489F9F3A30D</stationID>
+ <name>News/Talk @ KVNA-AM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358C4B426B4022BF8AB6302A074B8602B6D6301A16342FF3C5638D02C52DDB18B5E</stationID>
+ <name>News/Talk @ KTAR-AM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>0.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358A12DA55B18EB1CBC9FAD54393CB36A89F04EC5A2F18FF36CE597EB4BACFF7E03</stationID>
+ <name>Country @ KTNN-AM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>0.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358E6068AD20EA2C58EE387FE129400B8910C7F31F83A5390DAA42EAB35C5AFEDE7</stationID>
+ <name>Religious @ KVOI-AM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>0.69</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358804E351FD239B9FB267B4CE4A4DEEAFABCC955F0CF7DF44C99100240B358ED4A</stationID>
+ <name>Spanish @ KIDR-AM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>0.74</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535813110210A0E6EF18C6AEBCF1EEA33944D04334AF6DAB5D265990E00D5350A56E</stationID>
+ <name>Sports/News @ KNST-AM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853588CA7173723F7D3FCD135EC4029E42E1B06051C3F23827ED616F54F28AB29716C</stationID>
+ <name>Sports/Talk @ KMVP-AM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>0.86</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358E78ECCD059E10B2DF66CB87522E068672C1A4FBF9DE7D9DC888897BAED03A71C</stationID>
+ <name>News/Talk @ KGME-AM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535851B1B0D0306EF23E21AAB3D3C770B96EC13BA771311D7AADCE72DD9E1D561BE5</stationID>
+ <name>Country @ KAFF-AM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358D6ACD052C0B8DC6CC7903A276E45A2AD14F04FDADC3244BE361A08CC9B1D7247</stationID>
+ <name>Oldies @ KVWM-AM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853588116E9CE25B9C65B256663DDE5A6E63AAECCC56F70EF46ABCFB1F08347765690</stationID>
+ <name>News/Talk @ KNTR-AM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358ED70FA3D15001E65A12872098A8AD161E5601F6F516D2B2D2CA9E77EF55CEA90</stationID>
+ <name>News/Talk @ KTKT-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358C771465D5BB9DBEE860A9173CCD6BE3A552F20E378145FC2631DAD264E376352</stationID>
+ <name>Spanish @ KXEM-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>1.01</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358998F2A7700EAFE44E4EF40C20F8A57341CC3EBB8E25F814C9EE06D0BDBA2CC0C</stationID>
+ <name>News/Talk @ KFNX-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>1.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358D3BE974AE14301CFA5FFC51248B903CBAB06EC402255951FC67240E21A9D9167</stationID>
+ <name>News/Talk @ KYET-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>1.18</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853587F17EC7AF7CAB6F0AA9D2AA626EB4AB1C14101DB2E081F0F5CAC16BDE3B1AAA6</stationID>
+ <name>Talk @ KMYL-AM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>1.19</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358678CEBE546909AC82F8C293E8498C6AD75F156EC233E767AA5B32125217E0113</stationID>
+ <name>News/Talk @ KQTL-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>1.21</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853587E3D9D022DE1EA3C7419CDED22799B48E85C4C30EA88C4A3006EF377C4C2A02E</stationID>
+ <name>News/Talk @ KATO-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358DE7AC7BC29C5907788D26C2A651D46DC7F7C534B6CAD30A6BD6518BE53227ED7</stationID>
+ <name>News/Talk @ KXAM-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535849F0D30FD6D06AC90871C81C74ACEB0E4B42B725169163A86D4CBFA3C567913E</stationID>
+ <name>Sports/News @ KOLT-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358BFCF9469C1C5650266DF49E982EEBF026D74092A3A9C15A703B8C56F73CC3F9D</stationID>
+ <name>News/Talk @ KJLL-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358BF28F1EB35EBEDEEE81BF91236AFE0602B58A164AB1F9AEADC228777F31346AF</stationID>
+ <name>Oldies @ KPGE-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535804FE273B2FD72329F4031215D954422F03402AF3C8801DA43D89E3CD763DA60F</stationID>
+ <name>Religious @ KPXQ-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853584DECD54120B62C2B5E604424BC290F01E47B6DC82E7FBB857AAA321FC117D458</stationID>
+ <name>Oldies @ KJOK-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535878817E2F7BAA474DA22C1DD61412AA7F5A62FB07E625F76C44F0F2702857A643</stationID>
+ <name>Oldies @ KAZG-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358BB520C196D732E039A3BC00DD9E446587E6C2449D287458CCA36C3230EDD0C87</stationID>
+ <name>Spanish AC @ KTZR-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853595034D7355FC696E95224F0D58FA4B8D82377590676E7432BC29E446AE07D798A</stationID>
+ <name>News/Talk @ KNXN-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359FD218E9BBEA6EDDBB719FB624A3394A2A902B9B302B33097B4A2784E84FE3375</stationID>
+ <name>Sports @ KFFN-AM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359C5F061F22898C681BC6334741CAA7C80DA8E3510F4B5F6063390A8B0113FBDE1</stationID>
+ <name>News/Talk @ KFNN-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>1.51</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359DA23AA809DBF693350262C0DD7B2F2691B57585B2220A97A271A2F4582A24E44</stationID>
+ <name>Spanish @ KASA-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>1.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853598020ACC319D8B0AAC4C9F7A2F0CCF814BBB794CFF1715C776AEC2A41F50724EC</stationID>
+ <name>Religious @ KCCF-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853594DFDED40E76C5A212040A51616C6BE6DCB0571FB225FAABDCF582864157D4F2E</stationID>
+ <name>Childrens @ KMIK-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853592C114BB4DC23C7B9788755A6E453870CA1617C08204A78D129360A21612B4738</stationID>
+ <name>Tejano @ KXEW-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359150FA0A5A17C243B9D37FD5FF77DABE7CAE4FD1F56D47E4C647C665AE57599CB</stationID>
+ <name>Alternative @ KJAK-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>1.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Arizona_am.krp b/kradio3/presets/usa/Arizona_am.krp
new file mode 100644
index 0000000..6adfb02
--- /dev/null
+++ b/kradio3/presets/usa/Arizona_am.krp
@@ -0,0 +1,294 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Arizona</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385358B59D658BFAB1013C9F9E551CDD157D99F75BEF57FAF5859979287403270A7FA1</stationID>
+ <name>News/Talk @ KFYI-AM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>0.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853586651401C4B30E41A3D02461AB8A09594D9A6B21F94762B23DE9CB4709D9D65EB</stationID>
+ <name>News/Talk @ KVNA-AM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358593ACAA2C6FAACD926FC6F1B0C118E7A5EF1BC6325807046748A5B55D9E55F89</stationID>
+ <name>News/Talk @ KTAR-AM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>0.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358EFF013EC7881E816A4ED84CC4EF4665F2220CD62DF825626CED6F53D4AE22EE5</stationID>
+ <name>Country @ KTNN-AM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>0.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358182DDE28FD350C9B42BE270D7831B993EB20822E3983FB9737C5CB6E9A1263C1</stationID>
+ <name>Religious @ KVOI-AM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>0.69</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358CFDAC849DA0CBD516284967ADBF61FB3AB759980F092981262F58C7A0451F18C</stationID>
+ <name>Spanish @ KIDR-AM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>0.74</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358EC77C6483AB27AAF9F729E210547A901F348D840ECFB6B7CBF82C08E05FF398E</stationID>
+ <name>Sports/News @ KNST-AM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853589F5C8BC2CC39322D4DF9999E245AFBC78CB8BBF4EE6FB161BC41CAFD26608BFD</stationID>
+ <name>Sports/Talk @ KMVP-AM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>0.86</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853588241FC705549F4AD7AD557B4BB0A04CF3EBD5996D6963792A71EF0E326135820</stationID>
+ <name>News/Talk @ KGME-AM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853587C6F3AAAC21FD3D83930CC4D84FFA38DC99B6F365F04E0C26F8FF0D7869A462C</stationID>
+ <name>Country @ KAFF-AM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535804359684B07331B7391034DBF577DE431F8251783DCCBC1968083485AA7FCF5F</stationID>
+ <name>Oldies @ KVWM-AM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358C8E18D8DF16F89B4DC856082047B91426CA1E25160A6D9342BAFEB597E7B032B</stationID>
+ <name>News/Talk @ KNTR-AM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358A1AA9820A22BF464AD704A7FCAF62305EA4D6D8FC1818C6770280C6DD7D8458F</stationID>
+ <name>News/Talk @ KTKT-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853589A3EECFEF7510EB9F20F12C4954529AE237F4DEAB5C1E9F4133C462E470FABC7</stationID>
+ <name>Spanish @ KXEM-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>1.01</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853583BD66E65E17FFAA0F861C1847C8528FFABA172B09B4E81F3DF8E3F417A347455</stationID>
+ <name>News/Talk @ KFNX-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>1.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358DC275EA336B6F67302AD641B3943D555399E16B97E2E7179701EE4A8EFEA2844</stationID>
+ <name>News/Talk @ KYET-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>1.18</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853583BE425F4EAD2A871AAB268FBE56615FCFA1F1E4868E225A1DD23A775E255F653</stationID>
+ <name>Talk @ KMYL-AM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>1.19</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358734C612D8477AB6DDB71ACE38E71D2B08A8E7A6FA407879D0D5826BEA63B20C9</stationID>
+ <name>News/Talk @ KQTL-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>1.21</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358BCF1083F5E88269E31ACBBC9D33C8BF87E747BFB742B88A51CBF2223F1C49C2A</stationID>
+ <name>News/Talk @ KATO-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853581099AC7489936C03CD8CB72355CD3F2378264107DD6C7FE5A4472D7C36C4B9D0</stationID>
+ <name>News/Talk @ KXAM-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853589750367CF4FFFF380606C9BC51AB26C7F77B2AD3DF76BD20864EBC1C6CC9A218</stationID>
+ <name>Sports/News @ KOLT-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358CEA6C9B2B75B403D34A10EDA8BC7B54C7C55E0E4BFB9B87F00BEBC6054577D51</stationID>
+ <name>News/Talk @ KJLL-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358D8BC4ACA8FBA21455081F439CD889C9EA09E123B540A100A4A6219589709FA51</stationID>
+ <name>Oldies @ KPGE-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853589E0479B03F023E179880782644DED89A4C0CB4222A25957718604EBA9B6C3A0B</stationID>
+ <name>Religious @ KPXQ-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358F098049E87800B90E8E0E28191BB90B695FD552343159BE100D6DF04FFE49E85</stationID>
+ <name>Oldies @ KJOK-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853585E390912A4F8E7934C7FD2738659A2A42C2E0C6AAFBB8548640453A3C113CC76</stationID>
+ <name>Oldies @ KAZG-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853581DB8109A6ED796A74A08949F60B9C249AD20A66CA8DF2B1EDB66A18A39AA1E87</stationID>
+ <name>Spanish AC @ KTZR-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358CC7800FF69BDD10A5DBE1E9747934AFA75A15F1258EE624424081D14B99B9B05</stationID>
+ <name>News/Talk @ KNXN-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853580D4C0EF978845E680888677E964D8F00545EC4CCA6137495BE19338417023172</stationID>
+ <name>Sports @ KFFN-AM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853582FFE1D11DA5CFF3CB48C5844E0854B089DD8AF8049C8ADDB9EB09AED4D2E2F7D</stationID>
+ <name>News/Talk @ KFNN-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>1.51</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853584B84ABDD9CF46C4A61DB0BB45F39CC50C3B15870472AC4109BB86D5EF7D1FF25</stationID>
+ <name>Spanish @ KASA-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>1.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358D966A2BB55105DDAFF65EFF50630169EDC65742718B6A3C64232AD69BD73E89C</stationID>
+ <name>Religious @ KCCF-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853589B938FF32DE17C743D92073CD567AA356BD193C5DA3B461F01807813289E5004</stationID>
+ <name>Childrens @ KMIK-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358FBEC87D80CD8C1CBB1A04B19C5CFFE4C5134EF36569773AB469751D005B10A5D</stationID>
+ <name>Tejano @ KXEW-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358A18830394E9DA0B7E9B5BAE5D6F212DB73940B20A49FE5EC64A6949951A09C1B</stationID>
+ <name>Alternative @ KJAK-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>1.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Arizona_fm.krp b/kradio3/presets/usa/Arizona_fm.krp
new file mode 100644
index 0000000..e827e19
--- /dev/null
+++ b/kradio3/presets/usa/Arizona_fm.krp
@@ -0,0 +1,422 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Arizona</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385358459724FA3AF32BDA3A859FBF71A97AA94FB9EE3FBA96BA5957BA73811E567DC4</stationID>
+ <name>NPR @ KUAZ-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>89.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853586738AEE9924ED26C73C7F2E5ACBE62E359E942BC55D4ABC8953EF52F949F5B06</stationID>
+ <name>Religious @ KFLR-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>90.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358AAA22BD5DCE8E5D64F1A17B98F7F66987B874F7BBB9E65FACF6B20BDFFD11C5D</stationID>
+ <name>Classical @ KUAT-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>90.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535893DAED44F658C49DAAA70A022EDE65F40E63C2AFEE043910BE148925E3A3A660</stationID>
+ <name>Country @ KGHR-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358534146816F94C6C7B488CC49C7DE2C45DAA952451F9AB45E3A55AB1B7C12EAA9</stationID>
+ <name>Alternative @ KFMA-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535815BD6975D46D54CB8FC0ADDBAAF53B36C46D741266C3FB7B528CC6AFF63CAE61</stationID>
+ <name>Rhythmic CHR @ KKFR-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358187D206DCB41468764B7CF8C9329B07E2F046645FACA31681EDFC1E361595950</stationID>
+ <name>Country @ KOYT-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853585D1B990C09BEAEFA6F99837D3938961FB9175004231B270652E888FA2DCE967D</stationID>
+ <name>AC @ KLJZ-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358061CB5262E64D2FD9273D1F90F7E34E8411112C1D686C235F37117B9A2222047</stationID>
+ <name>Rock @ KDKB-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358CEC337B3411F3ECA1E6015E55851921C90C4854AF8956BA7F479BCBFDF1792C4</stationID>
+ <name>Country @ KSNX-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358B5238556B68727BF2FC76A33EB25686D2DE4219E68F4DF511EFBE0C5E5B90A05</stationID>
+ <name>CHR @ KRQQ-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535868DF556135BDBCD45F68723E03935E04AF32BE26EF7C8BDB302149CA7A7718D2</stationID>
+ <name>Classic Rock @ KMGN-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535865FA04CCFC29D9E5ABFB782B7D983A6C5AC7388370C9A8F2FB97CCCDABC1AA38</stationID>
+ <name>Misc @ KBUX-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853581EC0F5AA7931699CB55677D55036CF0D6B1148E0E1EB9E87C45570ED0B339631</stationID>
+ <name>Oldies @ KOOL-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358865DB4145B915FD1A8C0D464A6DD9210DC973F539B7F3BD6B40A8F76F68A20A8</stationID>
+ <name>AC @ KMXZ-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535810239682D399AE8F0A8F8998A269C1BB86F64761FC9FD8EDACFBC41DD8FB97CE</stationID>
+ <name>Smooth Jazz @ KYOT-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358CBE6DF60B4650AD58F6976163D2036EE4636DBED2B5915B19E4418DF456A183C</stationID>
+ <name>Classic Rock @ KWKM-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853582F7070E6FD054D40AEA0C55D54ECA1DA2CA6B648DBA00F88BC10646310EBDDCE</stationID>
+ <name>Active Rock @ KZGL-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535868E32B7818FE416C1DA8F6E4297A09A73D21E652DA12206927B86999F4DFB008</stationID>
+ <name>CHR @ KWRK-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358B3210F6F020E43F54EB0A6EB9A616372FAAE894B533517E9F6EF84E4D513B8AF</stationID>
+ <name>AC @ KRFM-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358FD3190937C71CEE1C2D6E32476C44CA5EAB99AD1B7E52707E04E01D5D8D3F1D1</stationID>
+ <name>Hot AC @ KMXP-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535861B49E35CE8DF554FA3ED00EEBCBAC80F2CBC8599B64A1FF7BB9F20CD39D5D71</stationID>
+ <name>Oldies @ KWFM-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535865DC9DD98B8BE636591F4744951DD370D49F0BE6B73C3A1C0EB4B25F8D25F213</stationID>
+ <name>Rock @ KRXS-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358E7FAF51DD0157EA02D6351A08F4608296CBFDA45238E82A4B052D9DFE6136880</stationID>
+ <name>Hot AC @ KSZR-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358C7492A9DA3D2ADEAC40E00A76E45F68DC48D721E3D3B979329635C0EB11A0E3C</stationID>
+ <name>Active Rock @ KUPD-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358D2BACC2948E30DDFED7B64312A2854AA41352745DFD665DC4EE1FCDC3F9AAFD4</stationID>
+ <name>Rhythmic CHR @ KOHT-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358CFAEC30CEADD0B1D05FB72C30A82714963436EC7124B5B39C17A462BC09BF0FB</stationID>
+ <name>AC @ KKLT-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358B383F8D2C36A6C89988DCB669063E7A930822F8E8A3B823DA97F8034B5532450</stationID>
+ <name>Country @ KFMM-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358D9ED7A2896FD777516FA9774E86FFD307444E4E40724F78446E596673F8189AF</stationID>
+ <name>Country @ KIIM-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535809FE5FA6AD5E0F7E243FE1F0E7D030F2A117D2477C13EE2A43C0FB5176D01B89</stationID>
+ <name>AC @ KESZ-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853589040E9A0674067DFB64CC43784F07817FA08681588DB7873AED178C04C7A002B</stationID>
+ <name>Country @ KGMN-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358D8851397DC09541DA9CE1C770ACAB5050BDABCF7C3842500AFDD04AC75E2F7E5</stationID>
+ <name>Classic Rock @ KSLX-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535836CC0CD6863C14D6E2807CE10D6DBC94502D0D5DFE7332F0C87CF545C769D297</stationID>
+ <name>Classic Rock @ KYJT-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853586640D87F50DF53F83A2C836905DDDC6E517B00C0C78ED8EF7E92148836D53EE0</stationID>
+ <name>Dance @ KNRJ-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853587B690BE0E36E81C67333CEBF31ED7C1AD566731A5642CD907BBCBC062673D869</stationID>
+ <name>Modern AC @ KZON-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358369F618CD93C366CF30BC8AD993CCE30A6D4086BC46A6C80D413F020E98E8D16</stationID>
+ <name>Mexican @ KCMT-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358B717F2A32C32E8F5FDE9B0B589C40FA7BC4DDA8CDB34FE086BCE839BF5D2DD49</stationID>
+ <name>Country @ KNIX-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358029008EDCFE96A781D45F3EF631EB1DC784871881E9651AB5ED2BE52DC215377</stationID>
+ <name>CHR @ KQST-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358FFB97A3128D5020C0AB28D6CCBF4EA00467B29E6782E9EF223F04AD4E0730CED</stationID>
+ <name>Alternative @ KEDJ-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853585D6981D51B1D402556C09A2CFA9EB265E330BAB0900E3BC6B651FAC899D2AA59</stationID>
+ <name>Hot AC @ KZPT-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853587E1F32273B796C1A1AF0FC1011FA85231752B1706FB5DBBB9659A90CFC700B3F</stationID>
+ <name>Rhythmic Oldies @ KAJM-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853580E6E15E0BFD2D484F660918EB456CD54580FE2DD4F30B07B3F24BB38A9293E61</stationID>
+ <name>Spanish @ KCEC-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853589A513B4CBDE055F1877E76DF6DB45A75BB2CF91B22C049C3724008BCA89CAC5D</stationID>
+ <name>CHR @ KZZP-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535804714851810E6E7674E300D5AB03DC0946B06EF8AC859A9B4911D8058A646262</stationID>
+ <name>AC @ KFLX-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853587CD12BFD92EABE7E5ED2800E16ED93EACACBF2242260EC0B47D0A32895FD9D20</stationID>
+ <name>Mexican @ KHOV-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358E4077419A337F670568E73B5075B69A0AC75F101825315B1D046D0D8D1C573F0</stationID>
+ <name>Christian AC @ KLVA-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535863CE4735168BEE609BFD9315D79252947B81052614DC5EC1F54EC4552C482B30</stationID>
+ <name>Country @ KVRD-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853583A2C4289002374AE602F90D4ED3784A34986879B876F21C6B8766A44BBA01309</stationID>
+ <name>Mexican @ KHOT-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358C100BEDA797F2F9845B43B1A3B6C3DBD48D6342171C6D857D49D20FC868462CB</stationID>
+ <name>Oldies @ KPPV-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358A6CF5FCCBC725C525731D69502C67518C83F4B108455D2CDF296619011E6E560</stationID>
+ <name>Country @ KSED-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535871D96202BF357C94C825259F64D1183D83EC49B1571F4B899DC1231D2B09AC5E</stationID>
+ <name>Country @ KMLE-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Arkansas.krp b/kradio3/presets/usa/Arkansas.krp
new file mode 100644
index 0000000..1ae8e96
--- /dev/null
+++ b/kradio3/presets/usa/Arkansas.krp
@@ -0,0 +1,614 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Arkansas</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385358717F721465201FB2A8B26D0197F49DA0ACE407906C9D046161428FA6F29CBCCF</stationID>
+ <name>Alternative @ KXRJ-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535827F2DD6D660F1D027302A18ED494C1D68CCA833F13FB41CA2508829464526464</stationID>
+ <name>Alternative @ KKEG-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853588EEF6A39EEEA8B9FE6D10C73F2216FE8A58EEC847867DDB4EFCE852A832DB9AA</stationID>
+ <name>Urban @ KIPR-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358FD5913F2D954E4F153D7999D9AB838D0807E1A80682BE29EA190D501DAEBBA64</stationID>
+ <name>Country @ KLYR-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358394D58EA16F2BAF2D421D0E828AE56A19EB226710DC34C722A90FE87AFABF742</stationID>
+ <name>Rock @ KZLE-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358BADE2CFD6FCD74F8D37C2C10DAA767C79E29097234ACB22C9B7F6D3C8AD15E25</stationID>
+ <name>Classic Rock @ KJEM-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358C549B3187A9921D7B15D76481C35CAD0DE86177E895622B15D0B2C5FE1370DBB</stationID>
+ <name>AC @ KKTZ-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535807E8870E2A401131AF5B42D15BE0ADACDD4238F18298AF4641B30B6CCC7CADA3</stationID>
+ <name>CHR @ KISR-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358B36E0BEFB0CD77F402786E22DB2D931F3E6DBC7F8191AFB3822AA1160F2E2562</stationID>
+ <name>Classic Rock @ KKPT-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853586C47142B3E1E44F3869F5418500EE4F0DCF502AB99DAE224DF929EEE39C5BDBF</stationID>
+ <name>Oldies @ KAMO-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535873F922E5072B7F0894A74E074F240478E3D497C3214E020D77E75681645D2D46</stationID>
+ <name>Religious @ KOLX-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535885CB1D79AEFB216F435F2015B7E78450B5619FFBA9AB908B5F012B5F647EFCE3</stationID>
+ <name>Oldies @ KOLL-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358C888729F51BFE1DD11BBE017723ECDD9AE1569F1FF1075AA1FA79F6D409B1DF7</stationID>
+ <name>Oldies @ KEWL-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853584BEBEA3D34F9B9A688089A749EB31737FBB33E5DACA416387A5CC09D0B882047</stationID>
+ <name>Country @ KSSN-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535840276A95C827C3FDAABBBA12E0784BC1ADE6383E5FFB1BC994695D72F195AB07</stationID>
+ <name>CHR @ KPWW-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853580F165F7D1BF10A8BE042A3700DF652309CC2F71A7F583C02176C43C096EF9CDE</stationID>
+ <name>CHR @ KXZX-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358AEF061740F73F311C0DB44050A7BAE2CDF5C688941EF4A40722B3AE1723A57EA</stationID>
+ <name>Rhythmic CHR @ KHTE-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358B92B1B14688B73B2AACE855339D6B95E714ECC126C642A9CCD3B0607C18FDF67</stationID>
+ <name>CHR @ KLXQ-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358A04A8F8206849F8C9AFF873FE2462DE135759E22F2CBE83EBAFCB55710DE2C1B</stationID>
+ <name>Country @ KQUS-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358146796D42B3FA2F968E3A12B0D04D037B7E7B513839888FC13F9C9A3CE37E159</stationID>
+ <name>B/EZ @ KTLO-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853588251C77EFE7918F3412F10828927568856957699B7D592C85E224FFA39124F23</stationID>
+ <name>Country @ KFAY-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358D00F482F8591D75DC30654B46492C3CCAB509C6CD39B0761107002FD594BBD7B</stationID>
+ <name>Hot AC @ KURB-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358884B5A965064B2B1E44A813F575E8A395855C0A3CB3023111E7D5012A7320E02</stationID>
+ <name>AC @ KLBQ-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358FF8CD920993EBEA516488CFA51214DB803831D442EFD029C6E240D21AE8FA3B0</stationID>
+ <name>Country @ KMAG-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853584A480EB7D3C4B16A313793EA3CE7E7481C26427A527CEDAF515AEC9D809E59A8</stationID>
+ <name>Country @ KMTB-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358D7DA4BDE5E2872C73D82B35999E6B94D45D0153B71160A60150995093EBB5750</stationID>
+ <name>Country @ KWCK-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535822D653BAA2AA6149A5A0DA975A358426CA6573205C7B717FB60885F3F27C2897</stationID>
+ <name>CHR @ KQAR-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358B3449280E5482BF71F8953F5C823471BBFD96AEFCABBCFC6743CCD33FB9CB9B2</stationID>
+ <name>Rock @ KDEZ-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358E90366FF91D89C5A907B80849C704B47054201870703C05A58083DBCD2C8E6B4</stationID>
+ <name>AC @ KDEL-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535856538D8913E030AD8006F354DA77B288C8CB65EEA23FC7209E11C62BB1D44C6C</stationID>
+ <name>Christian @ KLRC-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853580CC5CA95DBBAB3938BA90EBDF347AA3F8D13B0C561DDDA4925AABDCEB3849D3A</stationID>
+ <name>News/Talk @ KARV-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358C6AFB5CD61032BF909A0584B6B0A3960C9BCA53DC311EEB7561C9E4094028827</stationID>
+ <name>Urban @ KMLK-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358FFE6B7D2F0AA2B80B2444A6BB5CB3EFFD57E9F6D042EFD3C4581039E9C37B5A5</stationID>
+ <name>Oldies @ KCTT-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358FE1E84BA5F8D47F60CA5A7A7DC34FB38DF1659075D54FDC4A441CE9B01E050B5</stationID>
+ <name>AC @ KZBR-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358274B9142B031D35196753F40D7FB5AC06A700A5F6E23CDFCD6AF9688DD85D8B5</stationID>
+ <name>Country @ KKYR-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853588AE35086B14CC00AD01892F0C55BC7643275DD881FF8C5DD4F752471809C6FEC</stationID>
+ <name>Classic Rock @ KLSZ-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853589AC42645B9821DA5DB3B748AA70A39F414DB682EB8B7C9F46E54FA8DA95EF04E</stationID>
+ <name>Country @ KVLO-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535804B759FC2D913B7DC3FA127584E016343F60364315E5B4B4580EF117FDC1EE89</stationID>
+ <name>Country @ KIXB-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535816A32B23AE0324615814D6131461BF7B3E424A5919D1EEA72C91101B8F04F9E2</stationID>
+ <name>Urban @ KZRB-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853580E334A2A396C109AD9BCB75BF0DF9704F52E5F1BA6FDA63FCF7406FF04C27601</stationID>
+ <name>Talk @ KABZ-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358F18A3CECE6D4E40042A0E74ED2443EF00B767A672B64A52BE1F6A1F1DA3410F2</stationID>
+ <name>Country @ KKIX-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358D296F1BC26FF9B60A908AC2D97F4937DA9D32CBF0F85465F66B47D43DC11721C</stationID>
+ <name>AC @ KTRN-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535822A23EE39D5B3744E2E860A54675207C72D0D1AB12415572657D157C266E52B9</stationID>
+ <name>Oldies @ KRBK-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535834B7FF8258B7228298BCAC5732D4BFC57F81A57198FF44059FE32BD901D4B3EE</stationID>
+ <name>Country @ KDXY-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853583D82792F70EC8DF1125B36BEF1AAFD78B64498BF0D3586D006D137FCFEDE69AB</stationID>
+ <name>Classic Rock @ KMJX-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853589E3C1AB8A15FAA2182BC3BA4F497777001026706B145426ABC84CACEDF14ADBC</stationID>
+ <name>Country @ KPFM-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535808EB93B8741A5FEA9F7760DFE4F4FDAA0EBF80B4567154A44DB53BD6A1A9F8F5</stationID>
+ <name>CHR @ KMCK-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853582E07EFA555154C324844DDE192E83185442D5014F5F55150F7D8E6E8619A35FF</stationID>
+ <name>CHR @ KLAZ-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853589F3F4F74E50DB05543C0052871B4B37BD395BF3C3C0BDE9A5859BBEA50A86CF9</stationID>
+ <name>Classic Rock @ KYGL-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853582D60428B4DD1901264115E7EE339C7272BB0F18B293A9F321FA2A01C2F51D3E3</stationID>
+ <name>Country @ KHKN-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535832B4B01362B31103104BDA4A882FC98CCF1921D06906645F584B4D5CB98384B0</stationID>
+ <name>AC @ KKSY-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358B9E4E99E43070D1C0F7F955EAD59CDDC0918CE2EEFE2A294D567988659DD397F</stationID>
+ <name>Country @ KOMS-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853586DD88D0205A483043D1EC468FF0C376161E16160453F88E8B31AF11A30579CC7</stationID>
+ <name>Nostalgia @ KOMT-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853587D558B674842EA715797BFAF4A22C5335CE15791B3DFE251C2469E9B01BD3FF7</stationID>
+ <name>CHR @ KLAL-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358D008A140804BDC85C8A91BCE1CA4CED30D6B323E1A277D0EC6A4574FECD3E0E0</stationID>
+ <name>Country @ KFIN-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853589F16C183DB79756E7CEAF65F847A8A91BF644EA04EBDD22BCBA025F36EB8A87B</stationID>
+ <name>Oldies @ KARV-AM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853588EBAF50FDEF0B20B989EC7FDDA5792A4D5F4FCB3AFF7F4F229DD3FB5E9AE80DD</stationID>
+ <name>Oldies @ KEWI-AM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>0.69</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535891B03D3731407E27EB77DD61BA398AF7BE6F99BBA42A5E4D7AC217A64C585B9C</stationID>
+ <name>News/Talk @ KURM-AM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535866F0E54CBC8BB61803AD1CD14055C433BB3CF2BD98C2ABAD3DFB4F3E61EEC0B4</stationID>
+ <name>News/Talk @ KARN-AM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853588B4D1BC3E2BABCC89D111B34B6F4D9AEFBE4AD15FB7AF039B600E80C8EE872A4</stationID>
+ <name>Religious @ KFSA-AM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535835600A3AA103F5F5662E8CA2E56C9CC8C6949E347338359F2B618559FBD3E171</stationID>
+ <name>Sports/News @ KFAY-AM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>1.03</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535896040D1C6DEDE9FB67C3C196C0706092642B8E0769AD1C2EE2506136A56C859E</stationID>
+ <name>Religious @ KAAY-AM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>1.09</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853583EAD6A8AEF5EFDCB31F6225F94990E224AF0315A15A04AAB9AFBEB194753D95E</stationID>
+ <name>News/Talk @ KREB-AM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>1.19</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358892CCD8E07E132E6D12BEE80FEE841EB76FA2F4B6F40FF8E6A36D2E5B1ACED65</stationID>
+ <name>Sports/News @ KBTM-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358B17565E03D2A617D09DA664DF63A5FE0A0E5C577EE1686552B73C34848466E61</stationID>
+ <name>Country @ KTLO-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853585CD316E6493E757884B96848EAE4366E581A705162C967145114AA240668009E</stationID>
+ <name>Country @ KUOA-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853587CE9F6DCFF2A2433D2B41D011F3EA038456AF7946C91EB4CBDEEB1E20A20D00D</stationID>
+ <name>News/Talk @ KZNG-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535850D618361792506D781972DD3C95CED5C62909830C679484B4A04C62AB3D2912</stationID>
+ <name>Nostalgia @ KFFA-AM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358E4909D680E8134985A45DEEA9395275D55A2034F2B35A9CA7D168265F61E4F1D</stationID>
+ <name>Spanish @ KZAR-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358EECF749F2DF73720AFCDD6F3F3B2A6FBAA110F267D695A7153AEE1818A471DCA</stationID>
+ <name>Oldies @ KEWL-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358DB25FD66E413FD15443E3F18862F2A08C087D30A59568D247F0802BD99ED35B6</stationID>
+ <name>Religious @ KTCS-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853584FE4BA2724C767E2E3BE8461D24891546ECAF5B689E7A8A0071A9829718B3677</stationID>
+ <name>Nostalgia @ KXOW-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358A4255B0E368DA03C60586721A1E38F50ECF7BEEDB39250B03286340B0E0FD7CC</stationID>
+ <name>News/Talk @ KHGG-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358117353CE1BC91678D5629D7E39EBA30A344CAFB9EC7BFFBB9B1DFF3F7FB8F50C</stationID>
+ <name>Spanish @ KZRA-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385358C863FADA9EE7D5D6E8B42C9A0DAEB6C62CD389FA9F879BA32745EEC941617528</stationID>
+ <name>News/Talk @ KWHN-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>1.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Arkansas_am.krp b/kradio3/presets/usa/Arkansas_am.krp
new file mode 100644
index 0000000..ca399ec
--- /dev/null
+++ b/kradio3/presets/usa/Arkansas_am.krp
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Arkansas</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853574FAB8E14878D08560DD8ADB29F9115DD519787D59A0928D590678229CAABE225</stationID>
+ <name>Oldies @ KARV-AM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535752E6A2A7BBC816B22C667D931FFBDD5ED451410F5AEE6032C682F405CA358DE2</stationID>
+ <name>Oldies @ KEWI-AM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>0.69</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357588AFB8BDC47EEE7A2BD4D4123EB332A8FBE5D6272F4BE5C891ADE57E18F68BC</stationID>
+ <name>News/Talk @ KURM-AM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357EA3EF8D1AF13E770794025BBEF1FD5F84FD011DA570CE9BB3ED212075980823F</stationID>
+ <name>News/Talk @ KARN-AM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357BCB500F39D4870E37294196CFCD8A85A2B2ED41EC3CB7E4725112A072EC8DEAB</stationID>
+ <name>Religious @ KFSA-AM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357493C5C15B76051AE6584B9A5BFD0E1ADD0471980B899AC07CDEAB57212FDAD06</stationID>
+ <name>Sports/News @ KFAY-AM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>1.03</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357CC3313C7FA169B7D7115CA7336006E44ECE95D18D396FEA6BB34482F91F13E9C</stationID>
+ <name>Religious @ KAAY-AM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>1.09</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357D0DC63865EA5D1B977034DA57FE47D479E810B23C06FC185095A95D7DC202F31</stationID>
+ <name>News/Talk @ KREB-AM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>1.19</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853572BD1738AC342AADA2C63F7A78D0B7E2A792B2FF5E2D7FB7EED34E037F7EBA04A</stationID>
+ <name>Sports/News @ KBTM-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357CBBB3108D421B91B48A951F3A6C8F7A55A0EC9EF5AE848EE460AA2604FA50043</stationID>
+ <name>Country @ KTLO-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357DBB4ED303A5E5DF47C643508970B6B1EC0A8580F749AA95F83CB016A6213006B</stationID>
+ <name>Country @ KUOA-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535780BCA6A2420D90B55CADD817162FC308FA8FA6C10B9963726165B2E533B48B81</stationID>
+ <name>News/Talk @ KZNG-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853577A8646BD2F961C4DCB8426ABF8969D65E6834AE33F15F506B4BD83C386DBFEFC</stationID>
+ <name>Nostalgia @ KFFA-AM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853578B489E55370A63751A9230793FB4D54D1CEB6C9560BB04CE3FD53B34AF0125FE</stationID>
+ <name>Spanish @ KZAR-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535709F95F3D2BF412A8F4211057C49FD247EC25575CF6ABE0EC78F9222640A5BAB4</stationID>
+ <name>Oldies @ KEWL-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357140C9A8C4D331C231961CEE624F253C14E5F6E736CE2C1300D94D347CCC6111A</stationID>
+ <name>Religious @ KTCS-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853572987DEA30CA495D8EA753EFBE88F7996F9551C3B7E8AA33628F04726C97689A6</stationID>
+ <name>Nostalgia @ KXOW-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853577F7D3834064B301C073EBA362116A4D935CA57875ABE691A49319EE859D820CE</stationID>
+ <name>News/Talk @ KHGG-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357545133C08663DC342E24FC4C8ABF099FF7722340181EE92D0F2D634959CD1E2F</stationID>
+ <name>Spanish @ KZRA-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357C257547E487FDACD94811E26589809F62103DE6FC5C2C173CD8A839C8A8D11E5</stationID>
+ <name>News/Talk @ KWHN-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>1.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Arkansas_fm.krp b/kradio3/presets/usa/Arkansas_fm.krp
new file mode 100644
index 0000000..f05f4ce
--- /dev/null
+++ b/kradio3/presets/usa/Arkansas_fm.krp
@@ -0,0 +1,454 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Arkansas</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385357A5F82CD7C6A2341B7A83814A39AC2916FA1FE0439CD9C8B24789FDA9149484D0</stationID>
+ <name>Alternative @ KXRJ-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357888C0D38CE648ACBF41287A5832BFDBCD9C667C41204479644C3BA056BD1553C</stationID>
+ <name>Alternative @ KKEG-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357F3765568747E6D77FB54E1AF1C7668AC9F48BC1929CAAA9281D3ED9F33B0A042</stationID>
+ <name>Urban @ KIPR-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535794AA496EDEB4732A169DBAA829501228A222138AFCE52F201D937B416ACE9E71</stationID>
+ <name>Country @ KLYR-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853570C939E2D3175AEC8F2497C307D7C96B0FFD3EB4D3C51EE5B2820D52020A80F72</stationID>
+ <name>Rock @ KZLE-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535797DFCD6FF9E6BFDD9D87887B5C1AD5B45105AA195CA127A2A6324D571C4F7AE8</stationID>
+ <name>Classic Rock @ KJEM-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357DE0985552AECF01529829B2A768864BDE52B1F50113923A76B3DB274E6A4EBEF</stationID>
+ <name>AC @ KKTZ-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535713543ACB373E95E242AA0ED7DDA82156A646657DB65952569D19BB4EF2DDE29C</stationID>
+ <name>CHR @ KISR-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357AFFF5113E78CBFCCF77C32E0FEA3941B4E410C201224344E2C75FDCF94B1B86A</stationID>
+ <name>Classic Rock @ KKPT-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853572E412B0156B608C236DE3392A66E625AB5B12EDAE419FCF361711D90D95B68CD</stationID>
+ <name>Oldies @ KAMO-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535766494246CD3101D5FC4D65998124D10B84C86F3411A953568DCF0FE159E192A0</stationID>
+ <name>Religious @ KOLX-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357B0757E2BA486EBFD5543D2B9E79745A439B7F12D76D85D3E3A886A5DD09C1926</stationID>
+ <name>Oldies @ KOLL-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357DE274E1588BC1A0A47BCD8532ABA761E7EAD81C21EBD4E6EE52836AB9903FA51</stationID>
+ <name>Oldies @ KEWL-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357A9C99CAEEEA7C64BFE300D3D3576AC6075FF6D95E36DCC3B29C18749487B0590</stationID>
+ <name>Country @ KSSN-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853576CA79AA93B442BDC2D6236E006D7F4982E332E5C767F00AF13565A5213A2B98F</stationID>
+ <name>CHR @ KPWW-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853573F5AA0DA56D630559EA4D2DF4CADEBB354A9CFAB80736DEAE5F5302C4FA86452</stationID>
+ <name>CHR @ KXZX-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853570EC25E64C3EF6DC6C12E3F74895C9D5404AF19A11A0A9E13976A5505194758FA</stationID>
+ <name>Rhythmic CHR @ KHTE-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853571ECC140D331957BA7072C2FB31F25E3EEFD886339BBF434F03F15D58A903586F</stationID>
+ <name>CHR @ KLXQ-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535728E85BEFEB6CAFD6A7C24431E7B41E3B2C949DF0441AF2D21DA1561BEA480BB0</stationID>
+ <name>Country @ KQUS-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357E57F98E52EA206F4EE606BBC8774F7B2C82D4F97EF471D30CBDF02D9E62EA54B</stationID>
+ <name>B/EZ @ KTLO-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853578669727D96D62919E84A8DF089BE1008C76A372AD58C87E5311714806FEF0E26</stationID>
+ <name>Country @ KFAY-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853574C881D3F412C72D5B303DFE626065062612CBDED382ABC45FA25392A7A27C748</stationID>
+ <name>Hot AC @ KURB-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357BA24E1ADF5DCCE50713D7EC8294070E98ECB9C58CA2BBFDC0F55611A5B0518F2</stationID>
+ <name>AC @ KLBQ-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853578FF17E2624F138D1BDC64436739807D8A99508586145F6C18493390B5DAD9DFB</stationID>
+ <name>Country @ KMAG-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357F9360A3A74CBDB85161BCC78CD73E4ED4A37A20E198EC7AAE68F7E209599E759</stationID>
+ <name>Country @ KMTB-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357DE7667837AEF44A27278912C2AF21075B1F76347EF4D3BD84D6B974E7B8E9FE1</stationID>
+ <name>Country @ KWCK-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357BA1BB3E2A576EF49B11D9E7A4911D7B5635835C44453C906D4F06A8568987899</stationID>
+ <name>CHR @ KQAR-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853576E6A74861800E30A63AD14B5B98FC4C6AE0D0CF9F50349655D67993A06DAB629</stationID>
+ <name>Rock @ KDEZ-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853577F0C743ACC2F983BEF36DA4858DDCD5D4E69E64898779F983D7D09502DB92015</stationID>
+ <name>AC @ KDEL-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357FB1E1CE1883FF99D90797873E1E2A8E0615323A9A7DA9243BB7BEBBD422312E9</stationID>
+ <name>Christian @ KLRC-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357C35B78D47A07916F19486BB700D1CC1E13BC7BD42AD8D5644F0F97CE7DC115F8</stationID>
+ <name>News/Talk @ KARV-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853579A4A6A4262831990CFE152D3AA6F68C2EC0F28DED09094DA641F242004D4A1A5</stationID>
+ <name>Urban @ KMLK-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357578C23CB0E6031D6ADB6D1CE83F228A861D1F03A38C53D67FBB4FD1CA663CA8C</stationID>
+ <name>Oldies @ KCTT-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357F733728DECDF4F3A50F959854E95476EE5E9F4BDAC89AD855F5CC60111835221</stationID>
+ <name>AC @ KZBR-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853575686EDB230C395F1E22544A99CD500347B8F8B301BEBD440A3ED8ABF23A0E0A1</stationID>
+ <name>Country @ KKYR-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357DDAFA293D142321624D6AD5D1BDBCB2663C2215AB542FC790AD1BB97F4084B10</stationID>
+ <name>Classic Rock @ KLSZ-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357A31856A1D17A683509965B92DFE3ED2220CA108D168B85AD2DED745178E044C6</stationID>
+ <name>Country @ KVLO-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853578C8766689B82F0468C897EC878960F5788E8FD25A1BD948356F2EAF2FB3AFB30</stationID>
+ <name>Country @ KIXB-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357CCD21D8C251E35ED3C17A151D2039B60E007CA63B8439B27876DE9F3415716B0</stationID>
+ <name>Urban @ KZRB-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357EC4E6195766084EE175649B481390EDFAF1B11967DC5308849493E84212D4A45</stationID>
+ <name>Talk @ KABZ-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535748843AAA96421F0B0692355B30BED073372F5F5CF16074D2139BB0BF60ACD238</stationID>
+ <name>Country @ KKIX-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853575F65F1EBE3767BC080D2C63E0373687F0734243D282F7FBF28C5461FBBC742E6</stationID>
+ <name>AC @ KTRN-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853573F6BCA81928DBAE626FDBADC93CEAF1DF86F49962A3363894A164EB36CD0B9F5</stationID>
+ <name>Oldies @ KRBK-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535744473F9ADAA7457274A11D9BDFCF60B345CD8C783E40FD2C28705CFAD50E347A</stationID>
+ <name>Country @ KDXY-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357EE97DF82C49585742DE3FF52B2399C29AA6BD47E1DB1F5197A2899537E40350A</stationID>
+ <name>Classic Rock @ KMJX-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357107A96AEE7BA6F0E0E148B49ED73CE8A251D4807E1EA7EBF2DAA1F69A6910D05</stationID>
+ <name>Country @ KPFM-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357CD48E47501B365DD488FF76FA2C4D802403D502274C5E41C37353BF2868099D7</stationID>
+ <name>CHR @ KMCK-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357A7DED9183299D4F8ECC97905D8D8469BAFB21DC081B6DAB24D62DAB265E87066</stationID>
+ <name>CHR @ KLAZ-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357B7045EC88E8E38B0ABC229463851584E8D7E6FC08D87BB0D450B8323EE4B5B5C</stationID>
+ <name>Classic Rock @ KYGL-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357ECD437E7BBF2BA6D05440EA00C1DFD245CF236B006B5FAEF6EC898620529E6A0</stationID>
+ <name>Country @ KHKN-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853573F856A219B2FF3241AD07C4843377202A66B479C22EC3B52D29205B28F3B6B20</stationID>
+ <name>AC @ KKSY-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357018FEB50A4C92C433CCDD9F7AA3347F220D5D5601B82D436BE3A802AE144DE0D</stationID>
+ <name>Country @ KOMS-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357FF59328656F1FE8F80C3B69DB028819DCE01C5CE17DF6DAEBD23B7B2262C82E7</stationID>
+ <name>Nostalgia @ KOMT-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853575AAF88619812A35F734084D8659867FF40DE00EF9EFA9DD72E7C6D26985AF1C4</stationID>
+ <name>CHR @ KLAL-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385357358A71C679CE99E62AF6D08CD785BFFB83F80DA7F7182F95CED0569DB9C2993B</stationID>
+ <name>Country @ KFIN-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Austin.krp b/kradio3/presets/usa/Austin.krp
new file mode 100644
index 0000000..5606781
--- /dev/null
+++ b/kradio3/presets/usa/Austin.krp
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Rodney J. Duffin, rodney@austin.rr.com</maintainer>
+ <changed>2003-06-12T14:51:37</changed>
+ <country>USA</country>
+ <city>Austin</city>
+ <media>Broadcast</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338539909AE88C80FE8B054E6E65F2401903610B30BA65E3BABF23B5A8B248A70B97A3E</stationID>
+ <name>KAZI</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>88.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399A717D9020B77A2AD918978741BDA03002BCD08C74A156635E0E3141FBC2EDE60</stationID>
+ <name>KMFA</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>89.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853993E0CDC5538982454AD83686F04DD1EC7FAD1E5664E9F7E78B51B3E119974F733</stationID>
+ <name>KUT</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>90.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399989F795835DCA257FC07CD344215349451A3AB3635C1AFC86166F370B55A514F</stationID>
+ <name>KOOP</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>91.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853993B5FF1734A0ED1C2DCC20639CA146BAD5C27E6F730D3C3673CC33CA77385DE7D</stationID>
+ <name>KXMG</name>
+ <shortname>Mega 93-3 &amp; 99-7</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539949A0AA02AFDE3E99CB3115B2E95B12014A5F89B1B54CDAE05267284823A15DD2</stationID>
+ <name>KLBJ-FM</name>
+ <shortname>93.7 KLBJ, Austin&apos;s Rock</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399ACFEC77E487B0FFE1F0991325029F4E234E388FE2DE7858A60D1E2DBBDFD0B06</stationID>
+ <name>KAMX</name>
+ <shortname>Mix 94.7</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399AED85C7816559C18B58DB7CC9DBC040B19965EDB1CD8E7C81C38518001F8766A</stationID>
+ <name>KKMJ</name>
+ <shortname>Majic 95.5</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539977AA270D1419C3FE5BB61CD8A99751C8309CCE864C8EE04779017E12EBEA5A8B</stationID>
+ <name>KHFI-FM</name>
+ <shortname>96-7 Kiss FM, Today&apos;s Best Music</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399EC861EF5B813C233A2026FC8BE075DF3A9AB2BABD9BC14DE01225B3CF7EB13D2</stationID>
+ <name>KVET-FM</name>
+ <shortname>98.1K-Vet, Austin&apos;s Genuine Origional</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399E62E38BE41C7204427B49EDA8AF20A36EDC6878C6C2F72CB1EB50382EF1861B9</stationID>
+ <name>KHHL</name>
+ <shortname>Exitos 98.9, La Que Te Mueve</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399E26D0AE60D47720902096650FE586EB8B8E0CDB53B3E64AA573CBC593AC434B7</stationID>
+ <name>KJAZ</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539924E01C5258AA8035CA8547757E665D1C1838EE213A11E5BDFF4181C9B8EDBDFC</stationID>
+ <name>K259AJ</name>
+ <shortname>Mega 93-3 &amp; 99-7</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539903D6D955486482C73E42B8BB820496F82304AADDD407EFCF9B26E912FBC22F8A</stationID>
+ <name>KASE</name>
+ <shortname>Case 101, Austin&apos;s New Country</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853996B2C7437400C8A15BEFB45680C6252370176F973FA5801EF705D29DDA924ABCE</stationID>
+ <name>KROX-FM</name>
+ <shortname>101X, Austin&apos;s New Rock Alternative</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399E4A759F84B0749607E5B41099BB0F81F3CA161878D128FDF06B5C5DEEB4256DA</stationID>
+ <name>KPEZ</name>
+ <shortname>Z102.3</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399C1422D5F89E050C6D153EDEAF9036A81D6042C1C224A995D2B6BD66EE87FE022</stationID>
+ <name>KEYI</name>
+ <shortname>OLDIES 103</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539954837911CB91B94A4A246E42E283449D60A3F63CEBF2D76077DB64C968E82EBE</stationID>
+ <name>KQBT</name>
+ <shortname>the Beat 104.3</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399FDC83D6D275C83289A06CCF048F5106DF44014EC396FE7AEFF82DBC377715AD8</stationID>
+ <name>xxxx</name>
+ <shortname>xxxx</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853996FD32ECA48A0D9EA0AF50C78A680A5D31EAC5E6C4A831C338264C03FDEB8E013</stationID>
+ <name>KXXS</name>
+ <shortname>104.9 La Mejor</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853999917F0305509DF82E6A30DEE1AFDB89CC97A1D2851B13C9D6CCC644091E11FB7</stationID>
+ <name>KFMK</name>
+ <shortname>Jammin&apos; 105-9</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853990D94E748E1F1B4407184AF14F13978AB49A40AA294C57F3EE669D32881397290</stationID>
+ <name>KQQT</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399FA201E6E6A6A63BBB43E0EE2CD8CD57E7D82D40832F092512DA86DC21D07964A</stationID>
+ <name>KXPW-LP</name>
+ <shortname>Power FM</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399E90E88CB21121A1944F87F90D203D28FB292DE6DCCE93A0C00263023696EC06B</stationID>
+ <name>KGSR</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399974200ECE2E6AF42F09BF775BB5D8E1B0499DFBDA00D61B080C1A71B2C42F52B</stationID>
+ <name>KINV</name>
+ <shortname>La Invasora</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/British Columbia.krp b/kradio3/presets/usa/British Columbia.krp
new file mode 100644
index 0000000..afa88e2
--- /dev/null
+++ b/kradio3/presets/usa/British Columbia.krp
@@ -0,0 +1,294 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>British Columbia</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385359D5F2CDD6F12A5F08FF862B6F04EA76E90E0991B9C7D7458CF70C393634632D94</stationID>
+ <name>AC @ CJSU-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359F6AC17F18E655860B8E7A65E0ACEA3DCEAF1CFBC707956A527D23FEF188F82E1</stationID>
+ <name>Country @ CJJR-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359F097F1B15886BD01849C57468F86A3DF45DB5CB8C9C99029C95731643002E89D</stationID>
+ <name>Various @ CJSF-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535915DBA56B6EDE5B843C04601D2FE4268B3268753DCF93F5163A854CCF922AC458</stationID>
+ <name>Rock @ CIRX-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853593BCA4073FFDA7F36A62A318B05925FA115E4ACFBC36E577C9B117D7EA141D92D</stationID>
+ <name>CHR @ CKZZ-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359A7EAAC3B45AA6CE4523502CD83FEC0F72BE631F30D8E4678C3BF3378233805B0</stationID>
+ <name>CHR @ CJAT-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853592A292C842356FD1D291AEFD315BD4D7783C877CA847D3E3653A6388A4C9D1238</stationID>
+ <name>AC @ CKKS-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535948C956430AA3776A8778C16544612BB332ED8200CA7E8AC3E75D1390F39F4E67</stationID>
+ <name>Hot AC @ CJMG-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853598906ADEE03A37745D1E98FD6E7381F0EF6AB1263856188CD3DC3A69275AA5148</stationID>
+ <name>AC @ CIOC-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359BC752064BB4DCA331A9A0069107485A8F1D01BFDC7F65A9EDF34F798421C8CB6</stationID>
+ <name>Rock @ CFOX-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359560FB9E2053F54D71A04853510FD008F006060176BFE043D77BE11F5CD486A44</stationID>
+ <name>CHR @ CHSU-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853594FDBC3B886FDCDBFF49FEE354B2BC4821D5689BEA38809EE8273D58BE6A3DB8B</stationID>
+ <name>Rock @ CKKQ-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535969D7D59575FFD8F0EC4CBF739E4639BDA43AE5C2EBAC6EAD9BC7D623D157DF4F</stationID>
+ <name>Classic Rock @ CFMI-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535995DF4F9F6E889895A10D733C97DFBBF922DF50AD582DF00330002ED3CED541AF</stationID>
+ <name>Hot AC @ CKKN-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359CD92F5B64E70F31826D15141911D3765A9E610892208309C26C6C60294BD2BCD</stationID>
+ <name>Nostalgia @ CFUV-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359A3CF06A48F737C1199BBDDF557FE48C66ECE84796B92EA76A29BA5B84B89BE19</stationID>
+ <name>CHR @ CISW-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535959DDAA60D9DE068BC3EBD8D39F2D64376F3CD34B7E4DB871D99E4E90E7326900</stationID>
+ <name>Ethnic @ CKMO-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359E9D75073B921265DB610B1AC0E4EC4984B42A155EEECDFC4CE2F021F83984BE1</stationID>
+ <name>AC @ CHQM-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359A86C3AEDCD0A5B0F28BBEF316913D1B5DC58E60348B09D8A18E1F35B00498736</stationID>
+ <name>AC @ CKSR-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359D542249A6C677F5F03CE3A40DD5A2EE487CA792B44BEC9CFD7D3D2C73CF38FBF</stationID>
+ <name>Classical @ CBU-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853599FF38288DD86E0286B6161E6F3479C02B06D69B4286D4B7E95B6B0AF3EEB5DF0</stationID>
+ <name>AC @ CISQ-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853597B45BBF753EF6A529D838E94FBFED83E44AA192B4ABC6B9653AFA84BCC6702D2</stationID>
+ <name>AC @ CKIS-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359C551EE7983FBE6F50676A1589616E8776CD1440F3A9CC531C77EA7D83E1B46C4</stationID>
+ <name>CHR @ CKPG-AM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>0.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535928ECE0C3208B4C9F52EE381CAFEEC6DB8F5AF2C3167DD9D50932DCEA0BB8FCD9</stationID>
+ <name>Country @ CJCI-AM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>0.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359CE6FEA4D0940467DCAC059101954593CFF0BD234C58D8857B9527E9E4F3A03EC</stationID>
+ <name>Oldies @ CISL-AM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>0.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359701D86995E780498A6FC3FD0772E8F5599BBC17FA8FF9EB7C202DE12D4ECFCF0</stationID>
+ <name>Country @ CKQR-AM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>0.76</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359740D66F68A08A73502B36460F77D6168494179F8C928CE9DA4104AAD5423E8A2</stationID>
+ <name>CHR @ CKKC-AM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>0.88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535962BD3E066AE7DBD6DDE0011ED9F372CB301FEAE8D57C38B065A5AA56081D69D7</stationID>
+ <name>News/Talk @ CJVI-AM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>0.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359EBEFAE79981DC478EDB0BAD7EF80A1206C7638F975AAFCDCE0627C6F724952DE</stationID>
+ <name>News/Talk @ CKNW-AM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359349E399273A6FE830A43975752CDD50BC23546EDBE9075D597F25119DD274E4B</stationID>
+ <name>Classic Hits @ CKST-AM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>1.04</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359B2E704463BC0D4C38CF3F3EAC9EB6E370FC9F6EB41BBC238539318D425E9F117</stationID>
+ <name>News/Talk @ CFAX-AM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>1.07</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359899124E77D5F886672AB575E45B1155B6F318E584D613582DF9CB2A2C0F52476</stationID>
+ <name>News/Talk @ CKWX-AM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>1.13</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535953AE20D883ED79AB9F258DCAEF6D01D97445E45412C6397C06F7A2AA8F5B079A</stationID>
+ <name>AC @ CJAV-AM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359A28D4D85FFC1AC307A2CA461DC1244D6C80D781E090AC6B6EED2D427563048AC</stationID>
+ <name>News/Talk @ CHMB-AM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359278A3675076B786C676F1819843CFD9EC039C049A15DE1EE2CC3EF87FD3AAC97</stationID>
+ <name>Country @ CKGF-AM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/British Columbia_am.krp b/kradio3/presets/usa/British Columbia_am.krp
new file mode 100644
index 0000000..834b987
--- /dev/null
+++ b/kradio3/presets/usa/British Columbia_am.krp
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>British Columbia</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385359E5A2DBA3F6BFD77DD674D149FC604C4F7A0936A253710318B042B49A09995ABF</stationID>
+ <name>CHR @ CKPG-AM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>0.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359DEECE66A5C95CE02E6FA5674424B3AFD9E4814AB5DC04DC6EDDDAFADF5429A72</stationID>
+ <name>Country @ CJCI-AM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>0.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359427537B107932F2983F3D1D0D44CA2506DCC66A5F53C1B83DE6045B010B40B97</stationID>
+ <name>Oldies @ CISL-AM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>0.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359F44A29C1C5F4DA4F3D073EF63EF6A55861CB5EA72D75EFAD5FF2881F33636C35</stationID>
+ <name>Country @ CKQR-AM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>0.76</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535922F1BC67CE0B8A3E32521C82ACFDEB520AE5E4218C6632F10B598F407879ADD1</stationID>
+ <name>CHR @ CKKC-AM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>0.88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853599EFD17AD0095E71E572E37BB8B56588EBF6CAC82FA4065A5A2D29E663E9CD565</stationID>
+ <name>News/Talk @ CJVI-AM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>0.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853596D496E7338CACD5A2A0D5823FEBC25DF8D3037DB3D5DF4D6CAC3C441322C98F4</stationID>
+ <name>News/Talk @ CKNW-AM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853592EE5091A6A34B19E2C4A6EF25D0E241096F3F31DDF66F588E5033BF9D208F0D4</stationID>
+ <name>Classic Hits @ CKST-AM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>1.04</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359AC95EB6E19BCCA350D209B8BE4B23F27B5776EC48ADBC1E9396A50D6CF916DF5</stationID>
+ <name>News/Talk @ CFAX-AM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>1.07</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359C31F7F7ED4DE20DAB0166BA881C584F64C6E6E4330F234B5252BB1CFFED8F348</stationID>
+ <name>News/Talk @ CKWX-AM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>1.13</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359658EB256EC4AD36DD8F6A61BD1DE02EBA0814619463FC7B6D744D4D480E63268</stationID>
+ <name>AC @ CJAV-AM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359228FDE7DCE8C430CCF137F5F5AB3D1EB7AA95E1092A8EEE04F9264DB2F335185</stationID>
+ <name>News/Talk @ CHMB-AM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853593F73FB4F279E229596A57660ABB5C7392D69FF785C19F2B362EAB67C1CD5F4D5</stationID>
+ <name>Country @ CKGF-AM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/British Columbia_fm.krp b/kradio3/presets/usa/British Columbia_fm.krp
new file mode 100644
index 0000000..1b22f3d
--- /dev/null
+++ b/kradio3/presets/usa/British Columbia_fm.krp
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>British Columbia</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853590D470913EFF51B2E353F3ADE718349C4AF7C0AFD4222586C8074F52E97281DAE</stationID>
+ <name>AC @ CJSU-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853598DEB5D6CCB6220FB51C87F8542D06F962F8F46FCEA7369CC6C62C7A1C1542EA7</stationID>
+ <name>Country @ CJJR-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359EC9F32C83C8CD51CA92EE014B64585F70B4795EF42F6F9BAE724190A2D382FD4</stationID>
+ <name>Various @ CJSF-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359407D77C53DC9D578813E568E34073FA92102C995570DC6FF13C7D015986B18F1</stationID>
+ <name>Rock @ CIRX-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535932CD0CFF6C389736FA7CD3248111742DFC335DFF2D743DD5F272B85BEC177541</stationID>
+ <name>CHR @ CKZZ-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853593166C89AD687C9854C5F92E569B032E78677E0E3BA1562B1913FC8ADA5541CE1</stationID>
+ <name>CHR @ CJAT-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359F067608C6F11E5DA3F31447A8AF5783D28BFB5C46A6FBB5A94B913FF77E399FC</stationID>
+ <name>AC @ CKKS-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853591D4B72FC5F5F6A0287A2933BAFD58E30CAAB997576EEE3665370CDB53101163B</stationID>
+ <name>Hot AC @ CJMG-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359D582AA50D1BC56FC1064A087A25684950DDED72ECC3B54ED2A112A9925001C01</stationID>
+ <name>AC @ CIOC-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853592D38CA7610711D5D51231A8AE8DE0EF88AAB7C9A24955420EB51A122C060EC32</stationID>
+ <name>Rock @ CFOX-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359B22CAF40A16FFC20B1BA2BB6F7D61336072726150F9DEE61FEF2241CD82C7D94</stationID>
+ <name>CHR @ CHSU-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535902A7FCBBE58AAFD8D958D2E9661731AFA87E565A7F9CA40D72FF247BCCC79CF2</stationID>
+ <name>Rock @ CKKQ-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853598C23C12C9F97E562E09D3EAF8173F6E28B6C129B84FBD940BB519FA1241D56DD</stationID>
+ <name>Classic Rock @ CFMI-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535998E0E628C51AB2DCBFD1061E392851023B8EB9B207D8D781F04CBFE0653606C9</stationID>
+ <name>Hot AC @ CKKN-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359680649EC02D1E110145649B23CCB744C33FA008846AD78598CD46CDABE40BA50</stationID>
+ <name>Nostalgia @ CFUV-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359DBCEAA7F0DC6E8C73261E912CAC0BFE60FC66692BC44BCBC8225B365CA17CFE2</stationID>
+ <name>CHR @ CISW-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359B368E35C2BBD3F01B51027029FCBDF631CE9B019CA9D58B55499ADA58E812C9E</stationID>
+ <name>Ethnic @ CKMO-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853599BD2AE95C3F9AB2B89997A030A18FFD39CCB35072A4945807960B8BEC5E06E51</stationID>
+ <name>AC @ CHQM-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359B54D9766475D0D613D1C5604ADDE7D0F49E91F7B56C22E524D94F156373CFCD9</stationID>
+ <name>AC @ CKSR-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535905B485F99B1F3D8448C8EF1D69BE9473F472F7D58D47160F90E1668A570D7D1A</stationID>
+ <name>Classical @ CBU-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359123885D3FDDD740756AD138F88B2676EB0D6324453529C5BB1F5C826090A2018</stationID>
+ <name>AC @ CISQ-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853595E73E741DA155239CA2CD23C6BDEA442B856714F6CF309C70E573B062CD88A1C</stationID>
+ <name>AC @ CKIS-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/California.krp b/kradio3/presets/usa/California.krp
new file mode 100644
index 0000000..f89f8f9
--- /dev/null
+++ b/kradio3/presets/usa/California.krp
@@ -0,0 +1,1486 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>California</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853606019AAE0106BBC2C6B3B3F6D87BE68D668B79F40C188F8626DD16C7DE0D4C266</stationID>
+ <name>Smooth Jazz @ KZSC-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853604D58A1A8DF7E08ADAE26F66942C4D1A675488769BDE63C0787971C9C99CF0424</stationID>
+ <name>Smooth Jazz @ KSDS-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360836D1FAEBC1A18D2AC61EFB4E5292BF6E5BA93BE11AF1005E34183C6D9E23DF5</stationID>
+ <name>News @ KQED-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360AF94C081E272E37D2B06034FBBDE3D8FA8377EE43FBE5507826C535CBEE0F3CB</stationID>
+ <name>Religious @ KTLW-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>88.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360DF67AD5311D536E00F4F70F7E53B382A384A6C308155EF0F762E622C5AC6CDB4</stationID>
+ <name>Pop/Alt @ KOHL-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>89.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360334E308800E23D7BDDB8A2F0B0F5ACBDF260CD78E811897129040672120CAEF5</stationID>
+ <name>Ethnic @ KPOO-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>89.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536032CE5645FF5B44F0100DEF39BB6955262BE3CCEFAF01B0A2DC6E544E4B588DF9</stationID>
+ <name>Christian @ KSGN-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360DEF360929862ABCFF404512EEF395CF0E60BE88E0C20992594C9341FB19B1C9E</stationID>
+ <name>Alternative @ KCRW-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536032113C67D104FDE9528251291A1194C884F88FDC25873312F47C04F3CE003051</stationID>
+ <name>Alternative @ KZSU-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>90.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360123FD4671F8FA9A67AE7AF31B4A4E147FD2577F3630F6E44B9F2B304BA13C7C3</stationID>
+ <name>Alternative @ KUSF-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>90.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360272A063304FA401BDE320FA45078714CDBA8B215EFA4FF350C6CA8BA3E437507</stationID>
+ <name>Active Rock @ KVHS-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>90.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853604EC9EA9E26C736A5804FCFE4EA79DCA0096EA1BFF544B8700E7F95DE2AAFC1FB</stationID>
+ <name>Alternative @ KPFK-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>90.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853602904755B536B64552E8A81DC666D49D7BA7C3E33A2D7DBAE1457E69145F83A73</stationID>
+ <name>Alternative @ KCSF-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>90.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360425CCC2F736CA29F8CD0A1170A70A96D741E492C1DAC45F58F66BCD90E8B62B7</stationID>
+ <name>Smooth Jazz @ KCSM-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536003A3F00DF0AE538CF4B117C3835DF6E991803E5B58D78D0752CE73A927615829</stationID>
+ <name>Alternative @ KCPR-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853609F6A418810518C01CCDB2721DEBA3E04982ED7036A04F28F65B9383D02A4B8AB</stationID>
+ <name>Modern AC @ KYDS-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360EC37DE1FDC53F71AD5E48ECC35C4049A6CAC09B6319D09EFF0D98E10CA7C3FAC</stationID>
+ <name>News/Talk @ KALW-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>91.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853601B6C3D209BD41278698DEEB6154F7ACC6BDF8352DA1840A0849258A4E7D8E5BB</stationID>
+ <name>Rock @ KFJO-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536029D29D4A0DA1719248968C906ABFD65154D28C46CFA5D2DEF14F1156F7FDD726</stationID>
+ <name>Rock @ KSJO-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360D08EF60E6F7A7648A0191B7E7D68635852E99BB160F800ED12ACBD27AD23CD83</stationID>
+ <name>Urban Oldies @ XHRM-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853605F0C5417E962662DD049E94ED96D6A2CC04DEA2C986DAC40901B3B25EACC53B9</stationID>
+ <name>AC @ KMLT-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360C11833A153ACED7921434E9F063F55B3909AAEB9F73F30E2F951F82230638D02</stationID>
+ <name>Country @ KFGY-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360B88CFC31AA13F501C770C31136DE47C6A07D3DA9FD84E29C9F4E382EB4C13D0E</stationID>
+ <name>AC @ KOSO-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853608A8D076E028CC103B22BDA6A241B32A0B4B8F77E5A774C5EE6C78BA6F541F81B</stationID>
+ <name>Classic Rock @ KZOZ-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536081DC101C632440263F4066B631260ECC292EB0634ED4FFC1B5B5B9CC0DCCB1CC</stationID>
+ <name>AAA @ KMKX-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360294DA6A0D057F2563B9747B1944C39C439B35603A19C09063020A08DB8866F81</stationID>
+ <name>Jazz @ KJZY-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360A2EF6858B142B548808EF1BEFD5ABE853D00B97C91EA0383AD1937E66FEEB332</stationID>
+ <name>Hot AC @ KRLT-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360923D9CE419803E55D207A040A159BD258D2185787F4B377A8BFF935A042A376E</stationID>
+ <name>Hot AC @ KMYI-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360DED289EF8539E74874DBD0687111883765B3BD1080139C53D46063FE965C8CFD</stationID>
+ <name>Alternative @ KMXN-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360E18E7C6E527524B401F435B0B18A474CFE45905D5583DA18AA2164B10492854D</stationID>
+ <name>AC @ KWNE-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853602646EB6C6FE25CFA0B02843CE159E2AA3E809D18CED388D63713B173F100B26D</stationID>
+ <name>Smooth Jazz @ KSSJ-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360FB37EBA9279B13DFA92484CFFDBB68B37A04A375C78A72E94B45711228EE94CC</stationID>
+ <name>AAA @ KOTR-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853609B0CDCC6CE83D7D2CB0BF6FCF808C0A5DA88BE9BB73ECA8C4EBFD3AEC5C872E5</stationID>
+ <name>Country @ KFRG-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853604F36CD1640D1A46E8A0C7D961718BF9C7745CA12BE05987B2236417F9B54D0D0</stationID>
+ <name>Country @ KRTY-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853604E16D01F6627BC1CA0CBA8D65591FBC048C0CD51866960ADB6BB07323FE96B5B</stationID>
+ <name>Classical @ KBOQ-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360DEFB11FB04E435D95B05EC45AB084CA79DD5343CC7B5BB51AF30240001E8B1D0</stationID>
+ <name>Classic Hits @ KKDV-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360E51DE1F340298EB76287C5915EED6FB5B6B38C7F9AC4BA8677E40BA30D669505</stationID>
+ <name>AAA @ KRSH-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360EDEB4520C18DCA182506BACA4C5A0AA1CED34E8803D4F1353BB3A2115DA293B8</stationID>
+ <name>CHR @ KSLY-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360444F51EF31249413FFE3E0D358CF8658BF1E4566F42DA762713229F900A6CA23</stationID>
+ <name>Country @ KUBB-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360555C99650DCBD42EC13CD5A1AF86D47CC109F9943DD05B19A6D06C42CB57297C</stationID>
+ <name>AC @ KOIT-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853603204788A341A79F07B32E2862D5418C5679E4F021AE119537CA313D0EBD8DB25</stationID>
+ <name>Rock @ KCAL-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853605EF0DC8505B2C2CA94C6BC6436ACADFA518476BFEE8EB3347AE18DF98535EB9B</stationID>
+ <name>Classic Rock @ KSEG-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360211390635EB2716B2ABBE452BC325D43A524484FBECF36EC54EA62901B863A49</stationID>
+ <name>Spanish @ KTSE-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536049A4BF6B842518E4ECE03C29F4305621C2CC0EB6D06CDB52CF0F2247B1EF6885</stationID>
+ <name>AC @ KLLC-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360F4297863A6219E86406E51C59CFADA44F7D3E0DE325DDC0EB82B7547793AAEAA</stationID>
+ <name>Jazz @ KMGQ-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853606398357C59117ED27C1B88C54897F43783C478B818F498A1A3B4DFB7E39C86EF</stationID>
+ <name>Rhythmic CHR @ KWIN-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360BBBEFCD3E69459A5773E1E5F52D3444B47E31AD93A5B685CD6690FAE32C5B138</stationID>
+ <name>Spanish @ KTTA-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536070A515C1E5C0F1DC6477F35EB11BA0AC557E8E310E5748B7631B698F30A7D769</stationID>
+ <name>Country @ KKJG-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360B98BE8A1922EE36C42DCA2BB098C8743CE6CF0BBC767DBF993887882CCA2DDDF</stationID>
+ <name>Rhythmic CHR @ KWNN-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536045FEF1F19231EF5D549893C7BE974440292E53B523A8EB7A3E883DF433C4603A</stationID>
+ <name>Classic Rock @ KUFX-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536013A50D608ADE1BE0C5A7465912213FA232E73D61806B09840233C85A74ACCD8D</stationID>
+ <name>CHR @ KSXY-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853608BACCBC9013EAB92F8A93A5E38F8F738EB243AF6E3E14C4AC690FD42BDFFFAA3</stationID>
+ <name>Mexican @ KSOL-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853607AF8C78B71D4F4FEAAE5E5A114A97E9CB9240EA3BF2E8E11D0EFF0BC71E42B2A</stationID>
+ <name>Classic Rock @ KXFM-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853608E5406FC57FF7AADCF12235C8945B3A7A59873B9F874B895A63FCB7309024FC0</stationID>
+ <name>AC @ KVYN-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360D45D40FFD7AA511EE3D0FF3A507E5AFFDF366B332D236E4A1D357185872E3D3F</stationID>
+ <name>Alternative @ KMRJ-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360A7ACC9341F4751741717D47FAD34CC9520A00B23FAD2F76D0383DBDDF15199E5</stationID>
+ <name>Oldies @ KFRC-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360E53E0D119A46CD1511EDB2507D678562E5CCD0458694293B7D1C404405BF7B2C</stationID>
+ <name>Rock @ KTYD-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360E04BD0C33D1279C3463E82F433A471811C30D63F8D4A7AECE7C18E6A87707028</stationID>
+ <name>Oldies @ KQOD-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360AA05353A46FF9686D9A67DEC5B63CD513A3617C682813BDB2A3877985CE7AE9C</stationID>
+ <name>Christian CHR @ KDUV-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853609C3BB993BE1F0F75DB07268FF2BF657DA21D0F9311C08115BC7330BD12D04422</stationID>
+ <name>Modern AC @ KZZO-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360A1B36C43040783592213114F7C32FC63FCA501D0A756EA40200C9D2316299B13</stationID>
+ <name>Country @ KATJ-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360F83ED966A14F3CD50F87F46BE0A9E3467DEFF983631F6716B9430B30AFB93F29</stationID>
+ <name>Mexican @ KAEH-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360AB4962987E593C9291E8227E14EF115994E09EE50B9DD0155971CB54A7CF2DF1</stationID>
+ <name>Rhythmic Oldies @ KHYL-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360247DF4A5DB1B6D09160B196A2A0AE1CCA639BD202CACB0D5CC6972DA6D5C6DF9</stationID>
+ <name>AC @ KSTT-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536063C8FCA7F0C2D91031F224F644B2461958661583403ED62D624B586433D7B408</stationID>
+ <name>Classic Rock @ KGB-FM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360E6C45E94C8AB7406845BBAA16BAB436C107CC39BF1038C0119899900FD991739</stationID>
+ <name>Rock @ KXFX-FM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360D4F914C3721B646655C7AED2F47BEF96BE962C6651A00D53745D9A59E77FFFFC</stationID>
+ <name>Spanish @ WZAR-FM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360C35D05C2B03687F15024B0768E7A0D8F5DE955733A09098E657AD8BAFFD69B71</stationID>
+ <name>Classical @ KDFC-FM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360877EDD5DDDE87CBFD039D05B39237310086C18B7A98D9B6E8CA1FAE147A8EA9F</stationID>
+ <name>Hot AC @ KZXY-FM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360CEAF2654746FF944210D7C691E3687D73C7D38AB3252D53F7BB2AEC294F9051C</stationID>
+ <name>Country @ KSNI-FM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853605C79F9A6B43E91F3AE2DC1D8FA47A320E1804692AF833F4D176281FF55D1D7B7</stationID>
+ <name>Christian AC @ KLVB-FM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853606ECCA2C530337135BC84806929B68DF6AF0E70AFBCCCC4922C5ED1864B54DED7</stationID>
+ <name>Urban AC @ KBLX-FM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360CD6DA7629B3991D050AEA29F6A1078E9C2604F1A1A509186E41E1A63996828CD</stationID>
+ <name>Rock @ KHRD-FM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853603BB3EBD2B3AD5BB4CB8EBDC4FF21E80232AACAE9A5AD0922726FE7E095AD6F34</stationID>
+ <name>Country @ KUKI-FM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360187F286F9A129C33DD9FAD273DF9862C99C709BB968A2A2411E8258E31D7C36A</stationID>
+ <name>Rhythmic CHR @ KBMB-FM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853603C2A219949FEB22E6155373DE4A7A9E1E0DA2604484F8F78F67A4C0DB32775D3</stationID>
+ <name>Smooth Jazz @ KKSF-FM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536002D1CBDF70CDE808549A662DE4003E186F80DCFEBCEFEC00D292FE23DC384D7A</stationID>
+ <name>AC @ KXCL-FM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853601A3AA8E18458D5D89C551EE72E90174B39E3414F9CC937FF08A43EA2A692A0EE</stationID>
+ <name>Hot AC @ KMHX-FM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360BB8C118E74B774798CB4066587609403E229A09830A4E5319B810FBB9605D4A5</stationID>
+ <name>AC @ KSHA-FM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360B66F0C34856DA00B28FB52B7112EBB7D25E971F1F132C22C63FB8782AF65DDFC</stationID>
+ <name>AAA @ KFOG-FM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853606D70F82AEF6A7ED73DCE27D4337FE37AA9BC3C9EE98AC8024D762800EC3D6371</stationID>
+ <name>Oldies @ KDES-FM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853601AFA9F16C36AA5D36686C48B15953F1E53A457AB57B8D622E8F93B27D4ECE1A4</stationID>
+ <name>Oldies @ KCRZ-FM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853600DE77DC0F7B929AF8AF71216F2C66A077E9A8A078A7971FEC1E0DF094F13B69C</stationID>
+ <name>Country @ KNCI-FM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360403BF5260A339C51FADC548A82F6AA440067131651E07EDE626C2DB92BEEBC8A</stationID>
+ <name>Alternative @ KITS-FM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360AA4675A304B3847F3512FC9FBEF59A426BC2AF888F7891B6A2D7EEC0770E5B4D</stationID>
+ <name>Soft AC @ KKBE-FM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360FA72F23B0FA398D2A5ABCDA6A736E08E0C662CDC2498CB2E05370C2B5A491E87</stationID>
+ <name>Spanish @ KSOL-FM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536090537126A8E5B4D45149FCC1266DA0427C38B6793DF306809AFD342F1AAF1D7D</stationID>
+ <name>Country @ KRAZ-FM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536080E2986F3B66C6F43F12B0077F30688B0975FCCFBCDDEF711D10F736D95B5771</stationID>
+ <name>Rhythmic CHR @ KMEL-FM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853609DFDB842DB9B8371F996FFF3E8E25513110F49BEDA64B9343A76C0553E42AAF1</stationID>
+ <name>CHR @ KKSB-FM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853605AC6F6D70CC0027FF4EEA13FA4118C0A42850B831A3963C66986B9DB0F7FD3AB</stationID>
+ <name>Oldies @ KIXA-FM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360D35D52434A7C5800F91CDB1142718A1D693E67095DBEE7D280CC2DEE6999CCFC</stationID>
+ <name>Country @ KJUG-FM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853608E6BBEEF58ED40410223F892FF4D4DE48F25C62D23AFEB58F8EE7D54119AF00E</stationID>
+ <name>Hot AC @ KYOR-FM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360B3472D2B8A18F0AD35BB29CF89707F72185DD0C9F50B324368875D2159BAFFBE</stationID>
+ <name>Eighties @ KESR-FM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360ECD16A28A15E8C27173842F12B880F872432D428613E09900B0D5BDE46C2141C</stationID>
+ <name>Spanish @ KSTN-FM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853602EB66EB4FE948AE844359C83BF27BD12755AA8AF7157B71506BA9CC001B4557A</stationID>
+ <name>Classic Hits @ KARZ-FM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536059CB77961750B284539E4044C599BCEDFE2AF68D55AB5F2DCB482F4F1A00E20F</stationID>
+ <name>CHR @ KIST-FM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360FC0B95A7AF3044C5D9648F42F8DAD99A2AC78D3974F004AE79F7BEDA3DFBF58C</stationID>
+ <name>CHR @ KDND-FM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536024F1096009F16B8FB39291E708F3B678096F8A92E2C79ED6B6095ED4ADF056DB</stationID>
+ <name>Sports/News @ KSRK-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>0.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360B6E885F51EE52A6A9FCA27F23574D5EE4A5C90EA803ADE6BE9E176A429FA86E4</stationID>
+ <name>Talk @ KSFO-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853601501D37D015427B3726BE01F3D41D69D1B7088A082D5E2D290214BD6A147544F</stationID>
+ <name>Nostalgia @ KLAC-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>0.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360C394800A56638C25FBC6C461CDDCB85821C3E1AAFFCD24B8765ECD0DEAFFCC77</stationID>
+ <name>News/Talk @ KMJ-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>0.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853602855453C0DC30153BBBCAA5265A9E6C99C70C34436C5850CF5A3933F59B95BCE</stationID>
+ <name>News/Talk @ KOGO-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360D1B59DF09477CB8B49691C55EC99035EB58E7FEEC48E9F5487E2E6B7EDBD736F</stationID>
+ <name>Oldies @ KFRC-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853601263E631033691933A4054560571B106F8C8A0860AA044DF31236F8CF4AAB5D1</stationID>
+ <name>Ethnic @ KIGS-AM</name>
+ <shortname>104</shortname>
+ <icon></icon>
+ <frequency>0.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536096EE575E0B5F1ECAE94F443EEC8CA5699B3571B58F6A9C9A882DD9F0C7F0F610</stationID>
+ <name>Nostalgia @ KIDD-AM</name>
+ <shortname>105</shortname>
+ <icon></icon>
+ <frequency>0.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536013B2421E6ADE6AD1F5066547BF3FC91D9DBDDF519CD1DAE0B3CAD6F30A3161EC</stationID>
+ <name>News/Talk @ KFI-AM</name>
+ <shortname>106</shortname>
+ <icon></icon>
+ <frequency>0.64</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853601DD728C2D3A9421689800B64B8D4CBD33C7BB8015DDEB26DAB2CAF9562267163</stationID>
+ <name>News/Talk @ KSTE-AM</name>
+ <shortname>107</shortname>
+ <icon></icon>
+ <frequency>0.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853605E385BEE1A41ECD332776E114CE7826B7733C63448E9E598D2F67E16593146D8</stationID>
+ <name>Christian @ KGDP-AM</name>
+ <shortname>108</shortname>
+ <icon></icon>
+ <frequency>0.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536042F10B5FAB4897F4B06C0F52610B507CA10F8CAD6B904CF8BC81AC79855901AF</stationID>
+ <name>Ethnic @ KIRN-AM</name>
+ <shortname>109</shortname>
+ <icon></icon>
+ <frequency>0.67</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536058E80745B849F1411CE40E04D2367E1ACE15986F98B84DBF9F6D2540F4242EEA</stationID>
+ <name>Sports @ KNBR-AM</name>
+ <shortname>110</shortname>
+ <icon></icon>
+ <frequency>0.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360FE2976969FB4C3C868CF873AE3FCAF9804ED14E70BC89D963117CB3EF3ABA2EA</stationID>
+ <name>News/Talk @ XTRA-AM</name>
+ <shortname>111</shortname>
+ <icon></icon>
+ <frequency>0.69</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853600863A81A30F5072A15D657502E7045E2DC41192AD00A25D930F76C32C48FCD96</stationID>
+ <name>Christian Talk @ KFIA-AM</name>
+ <shortname>112</shortname>
+ <icon></icon>
+ <frequency>0.71</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360806C16D42D20E47F57BDFAF48492FF1937B6C2B5D0D9D8A961C68A749D380F4D</stationID>
+ <name>News @ KCBS-AM</name>
+ <shortname>113</shortname>
+ <icon></icon>
+ <frequency>0.74</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536069C222DA354511C4C0984D0DB9AF038B41293CE8789CA1E7F1103E0C25C07B0A</stationID>
+ <name>News/Talk @ KFMB-AM</name>
+ <shortname>114</shortname>
+ <icon></icon>
+ <frequency>0.76</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853607D0BC79465180E26500EE7142DBB7B1BFE34517982580CB6C00A084CE83CF9FF</stationID>
+ <name>Talk @ KABC-AM</name>
+ <shortname>115</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536090C69B26F57CF7F0286DB30B4B7B75AB657DF596DFFCB24F23CAE5CDB81A2714</stationID>
+ <name>Sports/Talk @ KDFO-AM</name>
+ <shortname>116</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360130E60A961A8273DA89A9447A8CD40820DBC7012900C30B506DF4121BE5EE937</stationID>
+ <name>News/Talk @ KGO-AM</name>
+ <shortname>117</shortname>
+ <icon></icon>
+ <frequency>0.81</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360F0D57AD7D12CA6CFF9B1D9EBCE09E183956FC7BD69EFC481C54D835FADA9F9ED</stationID>
+ <name>Talk @ KPLS-AM</name>
+ <shortname>118</shortname>
+ <icon></icon>
+ <frequency>0.83</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360B1CD15CED138AFB885210795EE6D1E616D12B897414387BDE65C2B2893D93CDA</stationID>
+ <name>News/Talk @ KRLA-AM</name>
+ <shortname>119</shortname>
+ <icon></icon>
+ <frequency>0.87</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536065DD5F4D13182CF9F4E0D9EA373E511FCCB7B383F4652A65CAA392EF7F644067</stationID>
+ <name>Religious @ KKMC-AM</name>
+ <shortname>120</shortname>
+ <icon></icon>
+ <frequency>0.88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853604735CF5B33CDDE74191A449B1B9CADD75F3D485DC0A3857F1FF2B85A632EAE04</stationID>
+ <name>All Tech @ KNEW-AM</name>
+ <shortname>121</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360B6C21C63D2BBA37A5A2073FF2E8573112640ACC8AB642BE755EEC976CE32525C</stationID>
+ <name>News/Talk @ KVEC-AM</name>
+ <shortname>122</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536050E1F5DBFF1A4A76FF6BC2DA2B94CCCF06CC7447624973AEAE7F3A700A5A469D</stationID>
+ <name>Spanish @ KHJ-AM</name>
+ <shortname>123</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360C581DB1C8E6330C823D37C860EB690455BE5A2894FDB28F088C7ADC04DACDD6D</stationID>
+ <name>Spanish Talk @ KWRU-AM</name>
+ <shortname>124</shortname>
+ <icon></icon>
+ <frequency>0.94</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360BF94D84CEF7E6E8A4A8876E9BD3D6568655CEC4228CC9C423A93EFDBE438AE59</stationID>
+ <name>Oldies @ KAHI-AM</name>
+ <shortname>125</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360E40FD36E48F8D0118DFB868DCE427886022D081032573EEEF38EDB96BE2330F8</stationID>
+ <name>Nostalgia @ KABL-AM</name>
+ <shortname>126</shortname>
+ <icon></icon>
+ <frequency>0.96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360623F7183A3B137766E4DBDBC3FBDDB3990D20B4E807139EB5EFBB9B29E7654D5</stationID>
+ <name>News/Talk @ KESP-AM</name>
+ <shortname>127</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360835A90D2B8D08E1E4B367A9A4A11BA208AA8EDF403BE583680C07EFAEDEFF1E1</stationID>
+ <name>News @ KFWB-AM</name>
+ <shortname>128</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360866FE853D915E5CB328CE252A00D247B0EBDC1F48F68DAF3F58D8651A37C37FC</stationID>
+ <name>News/Talk @ KTMS-AM</name>
+ <shortname>129</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536004804C0FBFDD33E5936FB8FFD0F8BC825CA2862B0C8AD4AA34C419AED5FB3CF9</stationID>
+ <name>News/Talk @ KCEO-AM</name>
+ <shortname>130</shortname>
+ <icon></icon>
+ <frequency>1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853602DD34AE5342E3AEACF95744DEDD52EB5258A3789B311965621E8A112536A26FB</stationID>
+ <name>Sports @ KXPS-AM</name>
+ <shortname>131</shortname>
+ <icon></icon>
+ <frequency>1.01</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853601B2046C54043564146B7FA3FCA122E83E801958550F74F6217E4E5641814133E</stationID>
+ <name>Spanish N/T @ KTNQ-AM</name>
+ <shortname>132</shortname>
+ <icon></icon>
+ <frequency>1.02</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360F8676D24484A1ADFC909C153B1FD6C7399EB7B94BD6F776CFF2B5934D191F488</stationID>
+ <name>Sports @ KTCT-AM</name>
+ <shortname>133</shortname>
+ <icon></icon>
+ <frequency>1.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853602F37F927DD0B59F794713FB5368FC30865A7AA6E183BB58B84B68B00FCFAA102</stationID>
+ <name>News/Talk @ KNX-AM</name>
+ <shortname>134</shortname>
+ <icon></icon>
+ <frequency>1.07</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853609C394A8D8FBC90D6470C76362BA1A81EF15E120131D001A02BF2D72A0E3CB91A</stationID>
+ <name>Nostalgia @ KTNS-AM</name>
+ <shortname>135</shortname>
+ <icon></icon>
+ <frequency>1.09</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853609D73DB30D7F24DDAB75D4A44BF9BD436FCDD35D2B70DA5D0BAD6972AA0946EA5</stationID>
+ <name>Religious @ KFAX-AM</name>
+ <shortname>136</shortname>
+ <icon></icon>
+ <frequency>1.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360180C0ACB7A1E457CCF34179018C498209D5B790B3ABC9815C3CFAE8C10C2BBF1</stationID>
+ <name>Sports @ KSPN-AM</name>
+ <shortname>137</shortname>
+ <icon></icon>
+ <frequency>1.11</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536025601B676577106AB913D2D27AE89CD0F30B07283F0FBA8580BAD02D59A96EED</stationID>
+ <name>News/Talk @ KSDO-AM</name>
+ <shortname>138</shortname>
+ <icon></icon>
+ <frequency>1.13</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536067514B5E69EB9D2987EE0F1C29AC1DE9BED9438688E1A9325A5A17D75544D774</stationID>
+ <name>Sports/News @ KHTK-AM</name>
+ <shortname>139</shortname>
+ <icon></icon>
+ <frequency>1.14</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360AA3DBC48802F0642131E8CA1B2B54BB4F4CFF456052ED1B261C12EC615AE623E</stationID>
+ <name>Sports @ KXTA-AM</name>
+ <shortname>140</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360F2B76449F9D43AA5BF9CED98D1CB7D537B735D865BB14A9E87B5CF409E0EB2BA</stationID>
+ <name>News/Talk @ KCBQ-AM</name>
+ <shortname>141</shortname>
+ <icon></icon>
+ <frequency>1.17</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360390ECF54A8839B56903937A90860CCE766058FF896A5585E4547CFD549E5E4C7</stationID>
+ <name>Religious @ KERI-AM</name>
+ <shortname>142</shortname>
+ <icon></icon>
+ <frequency>1.18</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536087BF5983E6046869D236B3EF41B72435A0E168DFA2C4A08930414FCBFB525B84</stationID>
+ <name>Oldies @ KYAA-AM</name>
+ <shortname>143</shortname>
+ <icon></icon>
+ <frequency>1.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536001553FED574248289E1309B6895F296202DA34934DF78702C350A8927F6A1B03</stationID>
+ <name>Religious @ KPRZ-AM</name>
+ <shortname>144</shortname>
+ <icon></icon>
+ <frequency>1.21</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536016E4B6F5B80FAAEEC2A62D793BBD6EF0192AE737656167E66E87726832C684BF</stationID>
+ <name>News/Talk @ KBZS-AM</name>
+ <shortname>145</shortname>
+ <icon></icon>
+ <frequency>1.22</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853603CBAE69416EB6F26837A5B2AA0A47B8F63307044176471984C01916787760DB2</stationID>
+ <name>Religious @ KWG-AM</name>
+ <shortname>146</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536052C805097A465C41CF22DAED2F45C1688DA22377DC61C82BBAACF3B3FD151817</stationID>
+ <name>News/Talk @ KSUE-AM</name>
+ <shortname>147</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536076863212C868AE7C45B8C27AE6094AB7AB4A69625F55ED884CEA6CDA28D669B2</stationID>
+ <name>News @ KEYT-AM</name>
+ <shortname>148</shortname>
+ <icon></icon>
+ <frequency>1.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360DC3880EDAFD7CB4587A756270C002CB5B4D8A6E73CD352200E322E6FBBAE0A80</stationID>
+ <name>AC @ KOIT-AM</name>
+ <shortname>149</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853606186C18ABF5A93278E6025ABD15D75A9E38D6FDE0997CF3651DA45901ABE15BD</stationID>
+ <name>Country @ KJUG-AM</name>
+ <shortname>150</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360200FD15984C79FADB65C6758F79CC0D6213B644F36BCD1B019A71E5B1D43E09D</stationID>
+ <name>Oldies @ KUYL-AM</name>
+ <shortname>151</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360CBBD88BD9FD8E8B026158BFCD88D52C079EA0865D8E2D832AAD3FC90049CB9C0</stationID>
+ <name>Childrens @ KKDD-AM</name>
+ <shortname>152</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360FA4BB08B9A82C51605CA9F30E8D60EEE4A790AB64E7F441A4F212F4E472E77EC</stationID>
+ <name>Ethnic @ KAZN-AM</name>
+ <shortname>153</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360E6DB552ABA8EED058C0A8835D7BEFEF1748E748435A99BA94951D7476E801410</stationID>
+ <name>Childrens @ KMKY-AM</name>
+ <shortname>154</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853607241BEEDB9812C6E5CE8C9BB920D7ED61AA7A59D407E18C0263B95E0AF62300A</stationID>
+ <name>Alternative @ KKSM-AM</name>
+ <shortname>155</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360567A36715B6DC23DB27AEC70C8C0CFD6BA14A94FE45612DC7E7EE735B65669AB</stationID>
+ <name>Spanish N/T @ KWKW-AM</name>
+ <shortname>156</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853603F841FC8CB898BDFEFA92C3EBEC80C8183FD9A28210C27658B084B484DB5AA2F</stationID>
+ <name>Talk @ KGLW-AM</name>
+ <shortname>157</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536001987146B087F888A8E88360640E6332BEDDA9E916EDE364B05AEB8021C7ACEC</stationID>
+ <name>News/Talk @ KSRO-AM</name>
+ <shortname>158</shortname>
+ <icon></icon>
+ <frequency>1.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360C5D4151F721A80D77268BAB58412E37DF9CE722BF7C19C81D0061393AD9D2DEA</stationID>
+ <name>Nostalgia @ KPOP-AM</name>
+ <shortname>159</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853606848CE5A67756E6CCDAA67F913776B0F9357B2A714E711AF062CCF5B8DD99079</stationID>
+ <name>Oldies @ KWRM-AM</name>
+ <shortname>160</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360E2F27A70695A8DBDCA3BAFF570BB912BF1731C3EF69C235E2BF25393073AA880</stationID>
+ <name>Talk @ KTKZ-AM</name>
+ <shortname>161</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536074BD618F71078AA8C64CC0945A6EA1F66F6DAF906B3FC184D07FF0EA40B9E901</stationID>
+ <name>News/Talk @ KQMS-AM</name>
+ <shortname>162</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853608C4535B6D69F8D01B49CB74403E38340D51387F4A66A663B758A94FB311295A7</stationID>
+ <name>News/Talk @ KERN-AM</name>
+ <shortname>163</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360657B93B81DC1C0BF8567CA2B655BFECB9483CBA67E2BAA9E15ECE4408C7EAD29</stationID>
+ <name>Rhythmic Oldies @ KSTN-AM</name>
+ <shortname>164</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536067010DDA86F26BF3CCD9B80767BD5AD2227D10AEBD7B20C18EEF88F3C56A3F5F</stationID>
+ <name>News/Talk @ KVON-AM</name>
+ <shortname>165</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536075E38EE579D16D13AA4F33ADAA72D4A9089A1D78C3883D7275BA3D567ADC3797</stationID>
+ <name>News/Talk @ KTIP-AM</name>
+ <shortname>166</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360C7719018363D45672CE9675CD8F692562C7FF802817F7C7A610FABCADE38CA47</stationID>
+ <name>Spanish @ KRRS-AM</name>
+ <shortname>167</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360FF0F69509A477E038CE4C7FEE9CE78F2D3643864A46465515FB6620C782EA13C</stationID>
+ <name>Childrens @ KIID-AM</name>
+ <shortname>168</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360E5D3904EFBFD42B65E9FD16996BB3C944B8A47647446F6B6F1536B439B11472D</stationID>
+ <name>News/Talk @ KNTB-AM</name>
+ <shortname>169</shortname>
+ <icon></icon>
+ <frequency>1.48</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360590F86B62BB733B3913AD0B5C95B013331C602FC333D8A33669FAC3F8639FF8F</stationID>
+ <name>News/Talk @ KOWL-AM</name>
+ <shortname>170</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360E5461F9B080DEB724D6BEC113F8F7520B2138E81994E5A3DE03F3A131B78F3DB</stationID>
+ <name>Country @ KTIM-AM</name>
+ <shortname>171</shortname>
+ <icon></icon>
+ <frequency>1.51</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536017D3BA4E48822E9F1D7EFB49429DB68BBD619D38CB1A2039FECE44912B74D4F3</stationID>
+ <name>News/Talk @ KVTA-AM</name>
+ <shortname>172</shortname>
+ <icon></icon>
+ <frequency>1.52</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853609DBA973074EDA4FA342A70D65613033FBE9BE0128394A614246C40547522DC11</stationID>
+ <name>News/Talk @ KFBK-AM</name>
+ <shortname>173</shortname>
+ <icon></icon>
+ <frequency>1.53</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853601191F276CB44C3BF1CA15113F27631C7BDB49E7BB323D16A0E324C699AE36A8E</stationID>
+ <name>Sports @ KMPC-AM</name>
+ <shortname>174</shortname>
+ <icon></icon>
+ <frequency>1.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536087B827B910B01A25F206708217ECA94B82E5C45C4F369191FF2C12B56025F582</stationID>
+ <name>News/Talk @ KYCY-AM</name>
+ <shortname>175</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360FB041CE7A355ECA4FCEF6C2C81CABBC0FFE42638534C2DC8EB1C7A05A80F1D64</stationID>
+ <name>News @ KNZR-AM</name>
+ <shortname>176</shortname>
+ <icon></icon>
+ <frequency>1.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360EEAAF1F8B8551F6ECF0400A7941D67500C313C993E1B93F4450D9A1CE1E28DB0</stationID>
+ <name>AC @ KCVR-AM</name>
+ <shortname>177</shortname>
+ <icon></icon>
+ <frequency>1.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360BAECA85E729575D9146E1BAF22C67B2147516A569BA733F1139A2161653A612E</stationID>
+ <name>Spanish Talk @ KBLA-AM</name>
+ <shortname>178</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853609376FBEC144E11EE41F7F95276A83367C51E7D7D2C804C9CAAA8B8E6E5590720</stationID>
+ <name>News @ KLIV-AM</name>
+ <shortname>179</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360BA2EBF21CB39600CD6077EB7DEC680D083E6DD95C7252930DF6DB50DF730B839</stationID>
+ <name>Nostalgia @ KUBA-AM</name>
+ <shortname>180</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360DAA6628E32418E814076C822DB74AA747298BEFE2C84AF222BCBEBC32C85B01C</stationID>
+ <name>Ethnic @ KFOX-AM</name>
+ <shortname>181</shortname>
+ <icon></icon>
+ <frequency>1.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360AC9D29DD36A0DC6D597204FD402214A41D7E0A15940940575E49738CA8286D50</stationID>
+ <name>Oldies @ KRCT-AM</name>
+ <shortname>182</shortname>
+ <icon></icon>
+ <frequency>1.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536042C13268541B9A2CEDC0E117F9E127256586366D2E5B727C24E58C8E93DAED71</stationID>
+ <name>Country @ KNRO-AM</name>
+ <shortname>183</shortname>
+ <icon></icon>
+ <frequency>1.67</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853603D11874C1EB43AF5B29E7C5E5D01307E7F725AD79A79868901C844F2C411F4D2</stationID>
+ <name>Various @ WPMD-AM</name>
+ <shortname>184</shortname>
+ <icon></icon>
+ <frequency>1.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/California_am.krp b/kradio3/presets/usa/California_am.krp
new file mode 100644
index 0000000..6e55aae
--- /dev/null
+++ b/kradio3/presets/usa/California_am.krp
@@ -0,0 +1,710 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>California</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338536016CD001F38FF2C89F3FA1FE94CFC88E76285AE0FFA1C09F1B47E9DE6E252DEE2</stationID>
+ <name>Sports/News @ KSRK-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>0.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360DB3956056C31E60E64813509D557B65E78BB8B86C83EF6AEF1C82F3A05C05635</stationID>
+ <name>Talk @ KSFO-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853608006A0156828764B4E58D921C6506D094375CD9D63EF4151991FA97D43FAAE2F</stationID>
+ <name>Nostalgia @ KLAC-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>0.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853607BCF08435E3E1B6C5F85D23BBCAF3392467B7FB3D5B5F8AD20F93B8AAC2184AC</stationID>
+ <name>News/Talk @ KMJ-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>0.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853605567C5DEAF12BE6871FFC8AF5718DE8A6602D0648954E60110E487713F9DFDA2</stationID>
+ <name>News/Talk @ KOGO-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360580F8F89277FAAD7A259F68C863CCAF57836E0B6F4C84360B4573E56D84E1366</stationID>
+ <name>Oldies @ KFRC-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360C9CBEA893BD1E753F16AA5A231D2119E824D6C1EE5FB9085D64D62FE9C554BE0</stationID>
+ <name>Ethnic @ KIGS-AM</name>
+ <shortname>104</shortname>
+ <icon></icon>
+ <frequency>0.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853601F97B3667F997A2BFCB2819A6BA524B6327AB1D14916E7EB11A21B9821725CEB</stationID>
+ <name>Nostalgia @ KIDD-AM</name>
+ <shortname>105</shortname>
+ <icon></icon>
+ <frequency>0.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853605C5E8F0E403B7226B64504D3F71302852CBE56A13A0865B865DF23950BB060A6</stationID>
+ <name>News/Talk @ KFI-AM</name>
+ <shortname>106</shortname>
+ <icon></icon>
+ <frequency>0.64</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536038E22A8D577D5EBFB4312841335C46528F48862D031BFB2A0980F8B01FA796F8</stationID>
+ <name>News/Talk @ KSTE-AM</name>
+ <shortname>107</shortname>
+ <icon></icon>
+ <frequency>0.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853606D9D19A3D80A8662182229AD7F2B0F23E589ED833C49C86AF54EEEACB737B59F</stationID>
+ <name>Christian @ KGDP-AM</name>
+ <shortname>108</shortname>
+ <icon></icon>
+ <frequency>0.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853603ACEE3626FD5712789A2FF1EEDE63FAE68F97B4CCD8F2B83E23A48697F9968BD</stationID>
+ <name>Ethnic @ KIRN-AM</name>
+ <shortname>109</shortname>
+ <icon></icon>
+ <frequency>0.67</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853606F79B260496FBDC2F6BF843A15C3505DC44483BF992693F27628D83446DC928A</stationID>
+ <name>Sports @ KNBR-AM</name>
+ <shortname>110</shortname>
+ <icon></icon>
+ <frequency>0.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853604DD2948452396A6A44C1E85B126DEE88D16313D3D12A9888B051B417EAA0A475</stationID>
+ <name>News/Talk @ XTRA-AM</name>
+ <shortname>111</shortname>
+ <icon></icon>
+ <frequency>0.69</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360C13682C164C7F6BC5A071C87FA6DC1DBA19B6285706E51592CD765D353005FD3</stationID>
+ <name>Christian Talk @ KFIA-AM</name>
+ <shortname>112</shortname>
+ <icon></icon>
+ <frequency>0.71</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536068A2CB9F767D01C83BF04D34280D95886D93D02DDB1B7C5D0EE98C1CADA0960B</stationID>
+ <name>News @ KCBS-AM</name>
+ <shortname>113</shortname>
+ <icon></icon>
+ <frequency>0.74</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853603D9C30BFF91A03B7D3287217623B7F81C3E41C5B745A7DB5AA58F65AF292EA63</stationID>
+ <name>News/Talk @ KFMB-AM</name>
+ <shortname>114</shortname>
+ <icon></icon>
+ <frequency>0.76</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853600AE8E08366FD0AA808F22CF22D418BC170C3B75AE451B62A9FC2EAE5901A636C</stationID>
+ <name>Talk @ KABC-AM</name>
+ <shortname>115</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853606AB633B7FBFEBB3DF87F0976AF041DE8C7B3E146EE52DEC6DFCCC9114D8FD1E3</stationID>
+ <name>Sports/Talk @ KDFO-AM</name>
+ <shortname>116</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360994805C55D55B0A527AD71C47A022D0DA9091679A58ADD04E27849B201B83D66</stationID>
+ <name>News/Talk @ KGO-AM</name>
+ <shortname>117</shortname>
+ <icon></icon>
+ <frequency>0.81</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360E43254AF774FC8C622111FA01D8A3D9A74BF4EC0EC562FBABD60DD477A9D2AA3</stationID>
+ <name>Talk @ KPLS-AM</name>
+ <shortname>118</shortname>
+ <icon></icon>
+ <frequency>0.83</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536053F1CA46808D0F20B6333FB2722E084570BA4F9870525B172959F69C5CB3A591</stationID>
+ <name>News/Talk @ KRLA-AM</name>
+ <shortname>119</shortname>
+ <icon></icon>
+ <frequency>0.87</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360D5C09980A14D367C10EE8654B06EFABE75E431E5654876725C3984414C5C0C93</stationID>
+ <name>Religious @ KKMC-AM</name>
+ <shortname>120</shortname>
+ <icon></icon>
+ <frequency>0.88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360896F007E5DB573395EC20AD9ABB75AB8C3EC1D61F1F2C6EC4D6456EC3563597D</stationID>
+ <name>All Tech @ KNEW-AM</name>
+ <shortname>121</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853601F5129B951476C1975A4BF1F687104551808E50024F741E7822197560801A788</stationID>
+ <name>News/Talk @ KVEC-AM</name>
+ <shortname>122</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853604B69B1F6419AF8AFF6838FDF7CD6D74A16F6FCC731C33F95F27CCBFD715A9FC8</stationID>
+ <name>Spanish @ KHJ-AM</name>
+ <shortname>123</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536088642EBC5D2AAA8C78EE3547790441216195101470C2003A5B3109AD76D22868</stationID>
+ <name>Spanish Talk @ KWRU-AM</name>
+ <shortname>124</shortname>
+ <icon></icon>
+ <frequency>0.94</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360CFBB32AB887335F3BFC5A9DD7EBA7A23F0309435BBA6FDC385482016DBA4DD78</stationID>
+ <name>Oldies @ KAHI-AM</name>
+ <shortname>125</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853600ABAF149FF23A28D5ED1F9243EDF22EF121CC8134BC6FE17CCF6CD89EEED5F71</stationID>
+ <name>Nostalgia @ KABL-AM</name>
+ <shortname>126</shortname>
+ <icon></icon>
+ <frequency>0.96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853604412EF86C7DA2C4318101A3D37D56B74A873DE533A027D14900C5B4B61F1C918</stationID>
+ <name>News/Talk @ KESP-AM</name>
+ <shortname>127</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853602BDE9EDBFC5BD3C41C6A95B91C7F44B39FF01BEDDB95276756269EA5882283FC</stationID>
+ <name>News @ KFWB-AM</name>
+ <shortname>128</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536099307D5B2EBD56E1C69E6377D78BBEDBFA379C148DAE34D0D915B4A7A3E256BA</stationID>
+ <name>News/Talk @ KTMS-AM</name>
+ <shortname>129</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360622F97441CAAA0FFE1163A20FFEC8E4AD360576859E429E9E27E5D97DA949ECB</stationID>
+ <name>News/Talk @ KCEO-AM</name>
+ <shortname>130</shortname>
+ <icon></icon>
+ <frequency>1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853607B3514AEA6867ABA250D28AB4C9FE36C86A49224B9CA71BAE3D35AA25155BCA2</stationID>
+ <name>Sports @ KXPS-AM</name>
+ <shortname>131</shortname>
+ <icon></icon>
+ <frequency>1.01</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360CB5149EB1CD3E904F698A5AAA12364908E7411C1C8C25FBF690F679D8E61BBE6</stationID>
+ <name>Spanish N/T @ KTNQ-AM</name>
+ <shortname>132</shortname>
+ <icon></icon>
+ <frequency>1.02</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360A6F432E0CBACC5634E8D8407ED3C4A7C34440352117DF4EC8976D4385E5461D6</stationID>
+ <name>Sports @ KTCT-AM</name>
+ <shortname>133</shortname>
+ <icon></icon>
+ <frequency>1.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853606CA596D9FD4DAA54BCCE3792EF5B5094F7030A11B42A54E0E1B6EEA589344E1F</stationID>
+ <name>News/Talk @ KNX-AM</name>
+ <shortname>134</shortname>
+ <icon></icon>
+ <frequency>1.07</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853604D02FB307F941A4F2433E3DD84A46BD955EF27A014D4B55F218D377E0E1E6F33</stationID>
+ <name>Nostalgia @ KTNS-AM</name>
+ <shortname>135</shortname>
+ <icon></icon>
+ <frequency>1.09</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360DDD6BA917FE8D56E30ACFA4E3C8E78DC155689C8562B09A298C999C91CE15158</stationID>
+ <name>Religious @ KFAX-AM</name>
+ <shortname>136</shortname>
+ <icon></icon>
+ <frequency>1.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360071E3AB8D9A143836ECDC4467CD66FE06CC82FE103FEC00A5ABFD6883CAA78F5</stationID>
+ <name>Sports @ KSPN-AM</name>
+ <shortname>137</shortname>
+ <icon></icon>
+ <frequency>1.11</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360D3BAB72D65AEFD251FA584E298FD58F3133D66597FF5F3A61BDA38CE560B45EE</stationID>
+ <name>News/Talk @ KSDO-AM</name>
+ <shortname>138</shortname>
+ <icon></icon>
+ <frequency>1.13</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360BC56F3295F66A0763C0C50EC03EE3CE8065D7D5A9D3C62CBE841F72094DBA08E</stationID>
+ <name>Sports/News @ KHTK-AM</name>
+ <shortname>139</shortname>
+ <icon></icon>
+ <frequency>1.14</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360FA55CC446526D3C7DD19D75560F8FFE039EF634BD645A36B65F981EE2267A8F6</stationID>
+ <name>Sports @ KXTA-AM</name>
+ <shortname>140</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853608140A262A03B566245D9BC9A3831FA6A61B4566A96197A828722A062DF0A062A</stationID>
+ <name>News/Talk @ KCBQ-AM</name>
+ <shortname>141</shortname>
+ <icon></icon>
+ <frequency>1.17</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360D966001BFB4DCBEA863950BA87E2A07AE6B1E5CA3C6B7172DC6FD852127869DC</stationID>
+ <name>Religious @ KERI-AM</name>
+ <shortname>142</shortname>
+ <icon></icon>
+ <frequency>1.18</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360586F971F4B17FE3251039BF4AD5DF327E43B3E8F906EFCD98867B0361710B685</stationID>
+ <name>Oldies @ KYAA-AM</name>
+ <shortname>143</shortname>
+ <icon></icon>
+ <frequency>1.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360C753576D991F4D61435C01090AB844AFDAA51E79219BF0024BDA6AC5ADA7F53A</stationID>
+ <name>Religious @ KPRZ-AM</name>
+ <shortname>144</shortname>
+ <icon></icon>
+ <frequency>1.21</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853601503A8117DAEC51B68C01A33430451FD327FB69931BE962476AA2CA913DC9339</stationID>
+ <name>News/Talk @ KBZS-AM</name>
+ <shortname>145</shortname>
+ <icon></icon>
+ <frequency>1.22</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360B2C714C720CEF67D8D37ACFC17214BC8202FD968EB00DE062E96B3C21343F884</stationID>
+ <name>Religious @ KWG-AM</name>
+ <shortname>146</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360C2CF0D2C9CBEDC200300818BDBE14EB14790E1F244174A895CAF9432E44F78A9</stationID>
+ <name>News/Talk @ KSUE-AM</name>
+ <shortname>147</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536006D57BCD182223AFCEADE653E55BF1B94A35CF81EDAA2F8CE1FCABA6AC2E546B</stationID>
+ <name>News @ KEYT-AM</name>
+ <shortname>148</shortname>
+ <icon></icon>
+ <frequency>1.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536085E410B83AE1C17FA208C07D9ECCFE2DB674752E7493B743127118B67E61F218</stationID>
+ <name>AC @ KOIT-AM</name>
+ <shortname>149</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853609CCD4725AC30C700CC9AD1ED31C923F2D9C725DB88B934522841D2DC84724F50</stationID>
+ <name>Country @ KJUG-AM</name>
+ <shortname>150</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536092F32D4C8F87B878C8D07A181687093976C5B53EE0334044F5A42A19B75F314C</stationID>
+ <name>Oldies @ KUYL-AM</name>
+ <shortname>151</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360D8710C300A5413EF52D300A0DCB00B5F910B01C42A7FB702AD155DB0567302B0</stationID>
+ <name>Childrens @ KKDD-AM</name>
+ <shortname>152</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536077C93D18D7A58DA49AA7101FCE54E18D6DD5C495E87B3006E464C12D89863EFF</stationID>
+ <name>Ethnic @ KAZN-AM</name>
+ <shortname>153</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360B061E1A0D91F0E7E0B881AB6A491DE0E89C78C331B4CF5ECE07FB40839B2F38E</stationID>
+ <name>Childrens @ KMKY-AM</name>
+ <shortname>154</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853609B0AC0FB7170551D9963297BAFF1A39AADC2B58A4437489B002EEA189327C227</stationID>
+ <name>Alternative @ KKSM-AM</name>
+ <shortname>155</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853607A7CD76D5ADCCE7EE848943F7A62C74AD0E3C63CC616F61423A5DC270E11FD8E</stationID>
+ <name>Spanish N/T @ KWKW-AM</name>
+ <shortname>156</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536041D6781FB5998319B885B40DDC6C7FEC5E5419DFBD473419C2E752FA5697C4C5</stationID>
+ <name>Talk @ KGLW-AM</name>
+ <shortname>157</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360672014624F62637BB50F577CABF376121E769341DBBD2311FE1DA52B2BDF3070</stationID>
+ <name>News/Talk @ KSRO-AM</name>
+ <shortname>158</shortname>
+ <icon></icon>
+ <frequency>1.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360430D73E58F2B937DA3CCB1F5A853F4496515F663F297317A677325BBA57951B0</stationID>
+ <name>Nostalgia @ KPOP-AM</name>
+ <shortname>159</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360C6F4D29980C7286363B2BE7FED8A666DBAA5D7C14DC908786172A3340F0D7F79</stationID>
+ <name>Oldies @ KWRM-AM</name>
+ <shortname>160</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360AFC342E90BDC7F089B67ADC7EAC9C489CF87768A2B0EE7D0E6A20D05CAC22E8D</stationID>
+ <name>Talk @ KTKZ-AM</name>
+ <shortname>161</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536048AF464FE6B3A5B818FD1A204374A5DDE011694CABF1E29155BCF359FD64E3D9</stationID>
+ <name>News/Talk @ KQMS-AM</name>
+ <shortname>162</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536022EFCF9D22B1AE8571A164BC234DC1757335CE68DA50E1BB1CBDF0D35C6DA705</stationID>
+ <name>News/Talk @ KERN-AM</name>
+ <shortname>163</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536013A6EA64485F5E2A7FBD04F0BCCDD73F588467DD8B22C67001166CDEE3FEC254</stationID>
+ <name>Rhythmic Oldies @ KSTN-AM</name>
+ <shortname>164</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360586D5C84DA4EE7FAE9667332F9C344BD9963C8D9E74D43FB697EECD90A0AFF39</stationID>
+ <name>News/Talk @ KVON-AM</name>
+ <shortname>165</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853608AD74A2022009B57C2D542BF075BD33D4A5C7CD5CC0421CD3818AD02EB3607F9</stationID>
+ <name>News/Talk @ KTIP-AM</name>
+ <shortname>166</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536030BFB827C59132BE0322335C0F59C2CB54869BDFEA7F638FFBAC8D5A9AA135E7</stationID>
+ <name>Spanish @ KRRS-AM</name>
+ <shortname>167</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536083BDC12D12159234E9E4FCC49164E389B54D17F14F070464FAA5DFD49E0F3A9E</stationID>
+ <name>Childrens @ KIID-AM</name>
+ <shortname>168</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853604B80448189E5F736B3F2D8F0B3D551430373441009F7F02DDB6A4B11B2310905</stationID>
+ <name>News/Talk @ KNTB-AM</name>
+ <shortname>169</shortname>
+ <icon></icon>
+ <frequency>1.48</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360825B8FD2E855A8BDE18D01B1E09453B9FF3667D2BD5EB9985FBDFE69F2B2AD9A</stationID>
+ <name>News/Talk @ KOWL-AM</name>
+ <shortname>170</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536033DE150C144CD2349AC01D4A0ACBE37FCD354806BA35CD337060419A6EC4D0B6</stationID>
+ <name>Country @ KTIM-AM</name>
+ <shortname>171</shortname>
+ <icon></icon>
+ <frequency>1.51</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360650F4241A0DB181CE93CA19E74F1B01D3AD794CB2C10EA2944B8EE186A80EB46</stationID>
+ <name>News/Talk @ KVTA-AM</name>
+ <shortname>172</shortname>
+ <icon></icon>
+ <frequency>1.52</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360B53AF5669501CBEC606190A0416E1BD4994BDDAEE99E8A45D879962B390C6FDF</stationID>
+ <name>News/Talk @ KFBK-AM</name>
+ <shortname>173</shortname>
+ <icon></icon>
+ <frequency>1.53</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360C6D87B6207E991116ABE7DAD2DEFD4C670BDD1EF44ED65BE909E2F519234A667</stationID>
+ <name>Sports @ KMPC-AM</name>
+ <shortname>174</shortname>
+ <icon></icon>
+ <frequency>1.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536066613BF8D8F7A614F277844BDDAF30742B835AD66B74320D91AC6EF7A641E464</stationID>
+ <name>News/Talk @ KYCY-AM</name>
+ <shortname>175</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360DD88709D61A00ADAAF6B29A296743584D0F6D01ABF0FEF1F3F50471A803F3E61</stationID>
+ <name>News @ KNZR-AM</name>
+ <shortname>176</shortname>
+ <icon></icon>
+ <frequency>1.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360D294C43EF58EB4680061305E8483D537632BE6D2A3B49C7B3DD3BFBC12163219</stationID>
+ <name>AC @ KCVR-AM</name>
+ <shortname>177</shortname>
+ <icon></icon>
+ <frequency>1.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853605691CE1E17DD8BDC047A3878A903C49295A3CBE3276DFE9A6195526F533F1A09</stationID>
+ <name>Spanish Talk @ KBLA-AM</name>
+ <shortname>178</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360FF6A2499BA34C5312A0E78294CC31C0AD55FB21B0286F105CFFD3C5096D68C74</stationID>
+ <name>News @ KLIV-AM</name>
+ <shortname>179</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360567236CF5F41F6B130FBDAD6CF1EE9C19721A59196B0DC1F0F58697AFC4E1087</stationID>
+ <name>Nostalgia @ KUBA-AM</name>
+ <shortname>180</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360225A2387CC42362E976B2120B24CB2CC2CA02D4589F28BB39B54A6F4D394E3E6</stationID>
+ <name>Ethnic @ KFOX-AM</name>
+ <shortname>181</shortname>
+ <icon></icon>
+ <frequency>1.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853605431799B22A7BA4286D683EC7083407A5D4ED35ACBE5B2B231F3B049891C751A</stationID>
+ <name>Oldies @ KRCT-AM</name>
+ <shortname>182</shortname>
+ <icon></icon>
+ <frequency>1.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360F0511FB83F3EBCDEFF88BDBD192F71BFC7E57A9465D0790ADB1BA24E8A835E76</stationID>
+ <name>Country @ KNRO-AM</name>
+ <shortname>183</shortname>
+ <icon></icon>
+ <frequency>1.67</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853606FF65B72535D7D0F50806BCA6BB51BDBFB9807D150C14AE37BCF626C8005E201</stationID>
+ <name>Various @ WPMD-AM</name>
+ <shortname>184</shortname>
+ <icon></icon>
+ <frequency>1.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/California_fm.krp b/kradio3/presets/usa/California_fm.krp
new file mode 100644
index 0000000..aab2781
--- /dev/null
+++ b/kradio3/presets/usa/California_fm.krp
@@ -0,0 +1,790 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>California</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385359D97B84A3972D21AEAE5BB530B711D055EC09AC946656DD2EFCD035ACAC40FFB3</stationID>
+ <name>Smooth Jazz @ KZSC-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853598C5E06480511EAB06595F0C25A52001E2A5CE3215388BFE73CF1D16C533EEADB</stationID>
+ <name>Smooth Jazz @ KSDS-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359086AF64D480DD0964E6411B70B77721AF65D96E6CDFE9A646CBAEF844D0B576E</stationID>
+ <name>News @ KQED-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359F81750D45DAC11D3FC449FC5C406214703265D7E0622BE2F64232342BE5F04BE</stationID>
+ <name>Religious @ KTLW-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>88.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853592A232C7B6F4B7352E287D540FC8D6ACBAEBE44B80EEB9A60A95C963959AE3928</stationID>
+ <name>Pop/Alt @ KOHL-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>89.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853597CD7EF6FE2CC5B532BD667B694CA55CE22AFA4F16297B73429EE496D7B0C742A</stationID>
+ <name>Ethnic @ KPOO-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>89.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853599146A9151D0D64628CF5A778A159501020941475AF7D85446B8A2AF46761B6BC</stationID>
+ <name>Christian @ KSGN-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359324F936228026093B09910076F1489BD1524AD548A576473B8B43590BAB1C7DF</stationID>
+ <name>Alternative @ KCRW-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535927660CDDF39F05698A2DEA52EAF5472DED7F3EACBDD6B6D03FD1B695734AE126</stationID>
+ <name>Alternative @ KZSU-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>90.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535987A6489EF0CC467E3ADEE12324AF441AB573937EF4197A7CE1737B29D4CBE00B</stationID>
+ <name>Alternative @ KUSF-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>90.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359F3224CD3AFDB86F54AAC02266C8E5AB739B2A4C70928E50F08AFD0DD29A89B34</stationID>
+ <name>Active Rock @ KVHS-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>90.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359DE50F799A788BB7BA23D1EEEE7A492208183AC359B40A216D924757DE98F92DC</stationID>
+ <name>Alternative @ KPFK-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>90.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359907E7DDB32C131572EF38769070E78B99523D3F3F3ADC7D605378D9D703093C1</stationID>
+ <name>Alternative @ KCSF-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>90.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853595A5F54F2177E2DEE405EB84B23A106CEEB0C2800E14E7375AD6F7DD5BF1BCD59</stationID>
+ <name>Smooth Jazz @ KCSM-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359512592B3730E50BCCB4DE31923119C9E670202ECFB50CDB1E374DD1FB6F76A72</stationID>
+ <name>Alternative @ KCPR-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535936ED1C1BB8D659D1A08EF699022EA1A46102218ABB7DE53547B506D9FAD64852</stationID>
+ <name>Modern AC @ KYDS-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853592EF33347BE724439BF9BC83912AC7C460B3058FE1E6521FF913B2F0000AAF244</stationID>
+ <name>News/Talk @ KALW-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>91.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359FCFA8BA8E4FE2B20D413F37C06FC4BDD32D293F3FB61C6A460C3F57B1A5AE64C</stationID>
+ <name>Rock @ KFJO-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853596A1988C4A725B954C542AE0AEAF47A709114DF2729656DBA104F77C68C293D7F</stationID>
+ <name>Rock @ KSJO-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359DDDD619ED516FEE60E20A8C13CA0BF77BAE0D8EA5AC02DF2B550A26E126E3C25</stationID>
+ <name>Urban Oldies @ XHRM-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359E4E2BDDDDE66B1A863D70AAB16CCC4CB44897E0C235428D475B226DFE105582D</stationID>
+ <name>AC @ KMLT-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535981759816C0B2985A401862F9287940E6949D7D777B7E990F591D720E3093AC57</stationID>
+ <name>Country @ KFGY-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853594CC5FA142358CBD0E634E8CCBA2B3516B3550F9C27F2333FD2B5569990FB49C4</stationID>
+ <name>AC @ KOSO-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853594B424EC404C06533F93C72DBE9BB5F6C9A96589D6C862F5687C12236D58C0140</stationID>
+ <name>Classic Rock @ KZOZ-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853594AF93CC78DFA66F51442E9EA7D3EE55AB9CD9847E4C55135BFE1BEEACAA1E6EE</stationID>
+ <name>AAA @ KMKX-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359DAF95D288A7F52811E6089590378C9144CF594DD8578534E7908C1D7049F3421</stationID>
+ <name>Jazz @ KJZY-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535987DA3A89611E794BECCCDC3D4BAF07903F7638B19D935F074ABDFF96ADCCBD7D</stationID>
+ <name>Hot AC @ KRLT-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535972F336DFDF1D6F7EA7C8145F8474D0ABE43146C222076423DAF49576A581175F</stationID>
+ <name>Hot AC @ KMYI-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359CC6879F6934E6AB5D01535C2D7BB213285AC3067D2920A275081B6DEC2F4BE15</stationID>
+ <name>Alternative @ KMXN-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853592ABC9B3E6B58CDB3CA76656BADF13858E697E287FAEF8C36A258C56D4134F4F5</stationID>
+ <name>AC @ KWNE-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359C2BB10623D50E73D1287A3EC008D0FCB508C814C06C3477B8B8764486480B57E</stationID>
+ <name>Smooth Jazz @ KSSJ-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535982FC8BF5FE4395F5BFE70B6448D75B4F66D58B3E2AB168C87500D752EFD2422E</stationID>
+ <name>AAA @ KOTR-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535908C01A91C1C64CDA7AFC8411E11897F0524D11909706B940D54852D99C2B5943</stationID>
+ <name>Country @ KFRG-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535978B135570401F4B0761E350679BE43C8258635B8200E234C162E67078E201D97</stationID>
+ <name>Country @ KRTY-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535934F2F94AC12606D1EBF4AFEF762F7C30D49940FFDFD3ABE45137815DC9BEE7A9</stationID>
+ <name>Classical @ KBOQ-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359AD3B4DEFBDB3FD1B87A58BA9E90593BF22A8166D5E5787E42601724BEA1F0D7A</stationID>
+ <name>Classic Hits @ KKDV-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535993F93D7AFCC2E94FAAD394310BC6C371C80E0F86B7D2A5E34DDED57119D3534F</stationID>
+ <name>AAA @ KRSH-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535965B364C57530EEBD2DFF6168FB8D369EF8E4D41FD302EC12053FE8255000B69D</stationID>
+ <name>CHR @ KSLY-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853591189A984EEF7080A5B716D42DA549646D5B8CA481107EDC633278E773C62DFCA</stationID>
+ <name>Country @ KUBB-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359426D1E8B2252A8799DA26B4ECBD6B1A3537E8C2924AC0BA5C167AD7E2525F7E6</stationID>
+ <name>AC @ KOIT-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359CDCB4AB0FA23E12B9FECB798DA1D36A9940E2BB4EF12F0F2B322B6098D402385</stationID>
+ <name>Rock @ KCAL-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359DCDFBBA5F015024BCE01E49E9C9A6A20991B70FC2C226CE6AEA1F8CF2B1A3734</stationID>
+ <name>Classic Rock @ KSEG-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535932CEC86C47BD5F58EA6F9F687F546B2A11B3A341BF4FB59C955F92983222C77F</stationID>
+ <name>Spanish @ KTSE-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359B82F3D240B701DF491DFBBF251220427946FB6B6F8B0D2CD8525A5744156420F</stationID>
+ <name>AC @ KLLC-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359C1847995819D86A9381F42C9CFF61ACF73F991BA4BB2555C9A6627127574A2DE</stationID>
+ <name>Jazz @ KMGQ-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359F6107618FCCB661D3D0B41294C41E5F24AEB8F436EAF2B4FAC074E680F08DC29</stationID>
+ <name>Rhythmic CHR @ KWIN-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359FDF2EF7A03C6A4653D2026AF2D755E98264A71B17184CCF4FFFC5ADFF990AB38</stationID>
+ <name>Spanish @ KTTA-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359473B160E9C24FFFC66E3ABC1E207C5FD754EF115256ABC2AA6EF7C84A79509F0</stationID>
+ <name>Country @ KKJG-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535900FA0DB8F9095316F0F6E16D0C9BC4CB900EB34F3587E61ABD624A6CBD697C8D</stationID>
+ <name>Rhythmic CHR @ KWNN-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853593F0B2246967F9FFD3C822C8F8B1BC4C07143DA1DB174F32E9E21136BEA57824D</stationID>
+ <name>Classic Rock @ KUFX-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359BF6615980FACD96FB8CB8A885C14BE5C3E2C9F476BCA06A01A83FE6F21277B77</stationID>
+ <name>CHR @ KSXY-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359F50653976E4706C6B5EEE18D9329645FC28874E4DC6A022445C16F0ABD27434B</stationID>
+ <name>Mexican @ KSOL-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535986201DD46803F7028FC3E8F63841C5E8094E4ECE03A9090C76298EB4D26599B4</stationID>
+ <name>Classic Rock @ KXFM-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853592D8E30048AD7BAB76F642BC6256A9E711DA060CBD9700884E37F2E9AA5FBD2AB</stationID>
+ <name>AC @ KVYN-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359FAAE208C07726E93DFAD443947B365A5FDD19B755D63D36BA97B718CC56EA814</stationID>
+ <name>Alternative @ KMRJ-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535962D2B09FC16816AFAA222195B4DB2C7E9F1BD888072C1B34A719ABBFA01890A9</stationID>
+ <name>Oldies @ KFRC-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535982C4A572A9E6009F06FF5EFAA2570ECFAAD8DD9AB0728DEB650CFCDB3BC6746A</stationID>
+ <name>Rock @ KTYD-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359BFAF4A7DD47C70D2B479F3F34D03B67D228E1BBC9422F254E65DBF47CC311F01</stationID>
+ <name>Oldies @ KQOD-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853593BBC12DCEF158A6286B72B533EF4DB1A7424B441CE3F5E33DD2B89F2CE1BFEB0</stationID>
+ <name>Christian CHR @ KDUV-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359715065DBE108B2CBE7EF8CF04E9ED1CD46F109A89BE39D1DD45FF63054B6806E</stationID>
+ <name>Modern AC @ KZZO-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359925164DEF21A08CAD6D1375E56085CE255B649FEA2C7BAF428CFB70ECC7142DE</stationID>
+ <name>Country @ KATJ-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853591AF03DFD2753C5E444B67016F2C387D4C35B867B430310E8DEF76A97FFB543D8</stationID>
+ <name>Mexican @ KAEH-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359AE87F2BAB86643E219FDDF9F6501ED5B059E4ECDC2CAF922771356BF2A9412FB</stationID>
+ <name>Rhythmic Oldies @ KHYL-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853591491842B55295DDD3C2FB0DC119DA862E3E295ECA374B70BA515DD5ADF47A018</stationID>
+ <name>AC @ KSTT-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535946A961B2E2814F4FF83D1D3CD49115884FB91CBB7CFCB03D8ABC61DAF1EBFDEB</stationID>
+ <name>Classic Rock @ KGB-FM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359679EB5E6909408ACA8E4933439F7F05D6BC726DE42F704424ACF1B6098C1723C</stationID>
+ <name>Rock @ KXFX-FM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359C09C1E7178C43FFF3A4BB4011424463EE9C975FEA4D021EDC9F256B2C8E68F86</stationID>
+ <name>Spanish @ WZAR-FM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535931636972621730056B6C1CE016E7D2C6678955D5BDF7616DE5EDECDC3A36F503</stationID>
+ <name>Classical @ KDFC-FM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535984F1626581463A2AC119A31D615AB18B9CA3090D11F968BF6A9F76ED310AFE38</stationID>
+ <name>Hot AC @ KZXY-FM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535944EB92BF052264279BA8F95DE4462DCABEF6D5C22A02E07BC8F2B1DA0EDF96E3</stationID>
+ <name>Country @ KSNI-FM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853594AF1A74B03F7FB27D503EF2AB61461DDF4B42189D453F19138ED0F6D2A134786</stationID>
+ <name>Christian AC @ KLVB-FM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359A27964317420F37FF8FD9F97117B766DAC11C8A0D9C7165B535079DA6FF90E0E</stationID>
+ <name>Urban AC @ KBLX-FM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853598603EB36C1DC34E8CD193B9E3A578C59D8EC617E631308E2D0D6BFD570EDEBF1</stationID>
+ <name>Rock @ KHRD-FM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359FC34A0468ED446482B03D4D1DD435CC3C83653C4C3EDDBA2C3DF2F2D6B025764</stationID>
+ <name>Country @ KUKI-FM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359FF561BE7884070E2E513306749FDAA021844ED9C4709F80DD044AA285DFA7046</stationID>
+ <name>Rhythmic CHR @ KBMB-FM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535994A173F0A395C9A6C10135FCC04592EFBCD5F50713BADC61F0B36CE4CE283A5B</stationID>
+ <name>Smooth Jazz @ KKSF-FM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359353C27085D1F1703F39876BFE5DDDD5732D4215540EF753011DE2E046F875F85</stationID>
+ <name>AC @ KXCL-FM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853592A9902D3543801A44FC60E5C42BE19C461F3731B3A270FE04A21E395A890FC3F</stationID>
+ <name>Hot AC @ KMHX-FM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535990258B79105FAD94B0D1602950CF335860312DB3F29B30578DBCF4E566A0A162</stationID>
+ <name>AC @ KSHA-FM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359C17BE0CBDD96CCA51587AD16529C5F933DFE570D8F63945291C915B15DFEF668</stationID>
+ <name>AAA @ KFOG-FM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359BFB717A49640EB817D433EF02A89FFFDE2D7CAB7C9E2AE77DF251388D5D3A4D9</stationID>
+ <name>Oldies @ KDES-FM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359022A333A7AD2D34080926C260C4FE116973264E62A3D96D99DF913032F6FAA8F</stationID>
+ <name>Oldies @ KCRZ-FM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359F381A1EA9AE734C46D0CD01922A5AEE8DC7B496D85B5586FCBDA82B95A5D52F8</stationID>
+ <name>Country @ KNCI-FM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535999074846A26E06AAD16959DDDFF78E857EEA701FA56CFC6FE3B5AC63597AC30C</stationID>
+ <name>Alternative @ KITS-FM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853593351D7C647F8AE2ADC58182B6D845636D8B34B2ADD9F87B944AD5731B744EE56</stationID>
+ <name>Soft AC @ KKBE-FM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359C1F23ED18A1295477F17A072E086A906F4C8D557D02A532841BBBAF57E426776</stationID>
+ <name>Spanish @ KSOL-FM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359DD0DA0109BC47BA4A375C6130392563EE632FE889B471D4E2B48F1234CF5B64B</stationID>
+ <name>Country @ KRAZ-FM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359575DA9349E61842A4797A2FEDDC091F0B580C94222C391F218A7D1AE4D53A529</stationID>
+ <name>Rhythmic CHR @ KMEL-FM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359502C5E6F0A6EF91FD1E8E5D05D58EACB58FA5A277FB80EB1A655BA5EE09568F1</stationID>
+ <name>CHR @ KKSB-FM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853597090972D57666C5233DEACEFB7E7ADC1C7BD7D9230B2AA42FB73777D70BA43F0</stationID>
+ <name>Oldies @ KIXA-FM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359035620161DDB0B8F6F8FF3025EADD76278A00EF5145279F80AC45E8E36928348</stationID>
+ <name>Country @ KJUG-FM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535914850B662333AA46E8DAD299F4DF026208203DCCDDA4C70691FFE8275F40B54E</stationID>
+ <name>Hot AC @ KYOR-FM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853595A6DB2C97FCA6AF2FF4E7E2FDA9B0C18A0FE37781A2E30FCE6F9499DD2B4EF06</stationID>
+ <name>Eighties @ KESR-FM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385359F408EC1615F1EC86331FAEC0E92111CB41AAE2A4E0FA39E19AD328765E397E38</stationID>
+ <name>Spanish @ KSTN-FM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853594B42593DA49992FD330E83D25A61EF40E332A971752BF1A0276849FBE4DCF02D</stationID>
+ <name>Classic Hits @ KARZ-FM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853594FAD903ADEC947B0DEF328475C2FC8085405BCE02A291BA069C0A735BFB76003</stationID>
+ <name>CHR @ KIST-FM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535991F15385BA1F237C6A479B4683BB0D6F4F48F092F1DB0B7168F73864DB6F5777</stationID>
+ <name>CHR @ KDND-FM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Chicago-antenna.krp b/kradio3/presets/usa/Chicago-antenna.krp
new file mode 100644
index 0000000..d706f0c
--- /dev/null
+++ b/kradio3/presets/usa/Chicago-antenna.krp
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>TakeIT2 - Paul Stewart &lt;takeit2@takeit2.com&gt;</maintainer>
+ <changed>2003-06-10T15:42:22</changed>
+ <country>USA</country>
+ <city>Chicago, IL</city>
+ <media>FM Radio</media>
+ <comments>Metropolitain Chicago Radius</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1077384173519BE3B6C829FBDF514E51F8423923A385D99B31DE996A31834C03EC2F247BBB</stationID>
+ <name>88.8 AfroPoP</name>
+ <shortname>88.8 AfroPoP</shortname>
+ <icon></icon>
+ <frequency>88.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10773841734578970E78B68E96695FF669BF3F41AD1382E9BFFADD135FB699775B4677811B</stationID>
+ <name>90.05 Worship</name>
+ <shortname>90.05 Worship</shortname>
+ <icon></icon>
+ <frequency>90.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077384173EA7D4A53B2AD75205DA2C3BDE7E9C553DD8F94D7A61A9FA21A32655D81F39F0B</stationID>
+ <name>WBEZ</name>
+ <shortname>WBEZ</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077384173F614DCBA655061DC6595846F8CD928ED112E2EF07D6E0D44F31CA5EA9A1CEEB8</stationID>
+ <name>WXRT</name>
+ <shortname>WXRT</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107738417321852D16A59F43373E13F313BF4F965F8315E6103829FB26987DB453CD4F1638</stationID>
+ <name>94.7 The Zone</name>
+ <shortname>94.7 The Zone</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107738417310357668D90BEFE99A0113D303B14529CFE9C86B104E46324881FF77EC32F9AE</stationID>
+ <name>WNUA</name>
+ <shortname>WNUA</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107738417343DAA345A292CC02535B9C307842FCA1C0490B20326F50032A475BD2C7AFFF02</stationID>
+ <name>96.3</name>
+ <shortname>96.3</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107738417311F8E843A7C9A4793DAC872D3143276F7D5564A0A0CF2743AF3453E42A5460CB</stationID>
+ <name>WDRV 97.1</name>
+ <shortname>WDRV</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10773841730F329A5A51A2631A5AB609EDADAFDB342CA124EB3F4810F5827927840F739835</stationID>
+ <name>WLUP 97.9 The Loop</name>
+ <shortname>WLUP</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077384173C6F312F49D76F0C3DEE58E35BC059C237B2F016C7595871B209264D389314571</stationID>
+ <name>98.7 Clasical</name>
+ <shortname>Clasical</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10773841736A2AFB6EFBF9A10A6B506D8F3DE8868F9041D4E391FF819BFFBBC08506706B39</stationID>
+ <name>Country</name>
+ <shortname>Country</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10773841738A1BC696F897D5788A16B89E33C661445E1CD1A855B25E168B48665D7220E140</stationID>
+ <name>WNND 100.3 PoP</name>
+ <shortname>WNND 80s PoP</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10773841738C0965926AF049E0A96E16626BC77D49C495363C5AA65A1A547EBD14ED8142F0</stationID>
+ <name>Q101</name>
+ <shortname>Q101</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10773841736B3A399BD3D71630E8172EB65F8477D0C45B0EC52952655CFE9EB6E7320A0D81</stationID>
+ <name>101.9 The Mix</name>
+ <shortname>101.9 The Mix</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077384173B498BE5B6A27649CE96BEB59FED09A25715AEA131B7DBD8937F370BD92CB2E91</stationID>
+ <name>102.7 RnB</name>
+ <shortname>102.7 RnB</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077384173C89C8538AE803E05FAD2D4B127C39025A43659FFC2107D3E0E6B81188794A3A8</stationID>
+ <name>103.5 POP</name>
+ <shortname>103.5 POP</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107738417349DD1071709F5A0AB39BFCBD67585A5CABED8658B79572FBF4586BEFFDBB60E5</stationID>
+ <name>104.3 Oldies</name>
+ <shortname>104.3 Oldies</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10773841730952D2EF632A3A0656DF3FC59E5E97B726611D377B0E6534B660FAFDE976E81F</stationID>
+ <name>105.1 Esp</name>
+ <shortname>105.1 Esp</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077384173F94B314C6D80C00D5AAD8606C7645BB9B3E759D6996F98459B87A1EB91E23C46</stationID>
+ <name>105.9 WCKG</name>
+ <shortname>105.9 WCKG</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10773841734D760167BE1C45DD92A5A7BB2ED458B187411CB5AF0F57F285ADE520C3472FD9</stationID>
+ <name>106.7 Worship</name>
+ <shortname>106.7 Worship</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>107738417325AFBE8C4D7C1EC318BD507F60C3471D28884379643C903EF760F3EAFE4EE7A2</stationID>
+ <name>107.5 Club</name>
+ <shortname>107.5 Club</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1077384173D80D7643A542770E7596569C0EEE2953CCCD5AB37730ECEE620681AAAA30769D</stationID>
+ <name>107.9 ESP</name>
+ <shortname>107.9 ESP</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc> \ No newline at end of file
diff --git a/kradio3/presets/usa/Colorado.krp b/kradio3/presets/usa/Colorado.krp
new file mode 100644
index 0000000..5de3113
--- /dev/null
+++ b/kradio3/presets/usa/Colorado.krp
@@ -0,0 +1,750 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Colorado</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385361C27F1B1C9AB35CECBAF4A351ACCBEDE9B82D6A0C8C4C473378E7028F703478B7</stationID>
+ <name>Smooth Jazz @ KGNU-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361CF6126568695D6054E20A6A036DEDF38F08F5D36A2DE49FC4EC2A6B89F8AA7CD</stationID>
+ <name>NAC/Jazz @ KUVO-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>89.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536196C178980127EAF1E5C87BEAE3DF8170F56DDBDC87503F558863E9CA2D493E19</stationID>
+ <name>Smooth Jazz @ KUNC-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361BFB0DFF48397BB57F8F17BFE4111D77C31304DC701635F5FB2971490F25A3066</stationID>
+ <name>Spanish AC @ KJMN-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536134C4C092CFA73E64CFE8947279F047DCCF65DFD99467C4673CAA63D97DDB8975</stationID>
+ <name>AC @ KVRH-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361BF127999BC688A1B70FB2F57BB69431B16C13A11B64C2CC498E743CB44CF50A0</stationID>
+ <name>Oldies @ KDJM-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536198A9CF31B41C1E9023BF5866F7F2499BFB7F16F01E330CE81C47371A43F63ADE</stationID>
+ <name>AC @ KKCH-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536141067EDD30FCD65C993D6720B83EA365EFDD8F3CAA198CA3807D5527381507B6</stationID>
+ <name>Oldies @ KSPZ-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361C12400DA80E2FD85C0CF9A06315EC3D0FBC1DC5586D4091CDCB74AC8B57C2E58</stationID>
+ <name>CHR @ KMGJ-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361B4EB247C0910A50DDAEDBBA82B2FE18882B463E1D7D3E13AF07D0C4A8203E189</stationID>
+ <name>Alternative @ KTCL-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536108A7A6A0644B4A1A7414491F829507C883578778C408B8C727EEAC3A01FA3294</stationID>
+ <name>Hot AC @ KRAI-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536106D5848FD3A15DDE5970488DE673607E4FD8C82BD62F593F51D20B755750ADE2</stationID>
+ <name>AC @ KYSL-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361DA932B1826E6E262DD98584DFFF22CC31181EB30AC8913EFF7BA5835059DACF5</stationID>
+ <name>Country @ KKXK-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536172F26DC804011259DF43799F32290CF59312210B4AB0779F34FBDA49F650E8D4</stationID>
+ <name>Active Rock @ KILO-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853616EC4D2425D6B8919ED30D1126AC8145892DD2DAE3443995C9AE5801C4C55A153</stationID>
+ <name>Religious @ KRKS-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361B1C08D637BCED621DC05DE1A0957D0B9068A7EBA92C303B3A5F67FDF2EB46D78</stationID>
+ <name>Classic Rock @ KKNN-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361BF11FF9184111662975E09FC686FBDE51BFDA65477EF66C6DB2C6E5B5B9601ED</stationID>
+ <name>CHR @ KFMD-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361CF3AAC80081C37091700B3D2FBE49165CF284676F422BFB2819D546E257DA68C</stationID>
+ <name>Classic Rock @ KSTR-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361A9B1A85107B7D13D2F41866F6D7DCB404F7FED113A4D6E8EAD87A18E0D25CC6C</stationID>
+ <name>Mexican @ KXPK-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853614E3977880D0C3D60D66754AC4A63651F12494274515057C0A75AB2813A7EF8AF</stationID>
+ <name>Oldies @ KWMX-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853610A890C04F1489E6BC265BB2176E13EB348ABB29956884AD618E162B6865DC261</stationID>
+ <name>Country @ KBCR-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361D1CB58B7820ADFBD6917B6413910E5F32D6EB15D6409D89D3EE82645E3E186B4</stationID>
+ <name>AAA @ KBCO-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853610DFA9DB3783B2661D1032E76E2261D4F060CE0529FB57F11D044AFE3A697C4B9</stationID>
+ <name>Country @ KISZ-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361473F1D4A1A3EFB7F40D337A92FAF64EBC54ABFC21243CE4F4F115A6E05632C2F</stationID>
+ <name>Country @ KAYW-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361D41E447981CFBA7718FC68EDDADC3491EBCCD9E7C69EF2468E7E68A7B7F78EE7</stationID>
+ <name>Country @ KATR-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536131C382D051B12A34BFD9B1C527E204146945B23845EA57FCE9CCDC9952DE703D</stationID>
+ <name>Country @ KYGO-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361EFCD0C56944C1201F058E8BABD280FDB8E97B16FDC81D3B513830CE37643A270</stationID>
+ <name>AC @ KRTZ-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853614140A58C8A7EF02552D867E49B3A4CA84E03244B02C59A6F2A47F7A28BB6D6CE</stationID>
+ <name>CHR @ KKMG-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361FC69356FEB28C26AF18396E962A4F81913ABCE53C717AEEC280911D0F3512BDA</stationID>
+ <name>Country @ KUAD-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853611ADCEF6066B28185E8A47F521D76163F461488542570811081CD3867903D4FC5</stationID>
+ <name>Classic Rock @ KQMT-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361E901A4DC6769BCC5442BEC9A1F30081F602F6E55D092FBDC7482029D04872FFA</stationID>
+ <name>Modern AC @ KPTE-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536106A2DC2BA8E15D243C0250CC6E0E8972ED9B886DC8F17A00A5908FB6649F9872</stationID>
+ <name>Country @ KEKB-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361C517D7D9AD8B0A52B4D990B3FF26707102D2283CFBE029AE0AF200EC6B6ADBC1</stationID>
+ <name>AC @ KIMN-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536138722241FA3F9A92BDB13C0884AC29524AE63CF705689CF723BC076AF9CE68D3</stationID>
+ <name>Country @ KRSJ-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536155B25B00BEC2C7C301E4A19FA66ECB2A5EF4B203483BBA331208B3F5FD3D1AB3</stationID>
+ <name>Country @ KMOZ-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361C2CFB73889370D2753EAD05B8945F1C145EE58B65E8B2CB119EF518D82B8061D</stationID>
+ <name>AC @ KNEC-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361E646590BBD7B9F0E4E253177B5E4870B009EC1DE09598F4BB0C2581E51B5FFE0</stationID>
+ <name>AC @ KOSI-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361848FCB41F8815B4143F320F46A83F78B9AA9BFECDE1031CA1B1CE7302FCCED19</stationID>
+ <name>AC @ KIQX-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536190F6875C2700E78FF65102C3F4E4C0EE7C38D06FDE13588C447DBEC38CBD2B0A</stationID>
+ <name>Classic Rock @ KTUN-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853613EF602B9C1EE012BE9C723BA7F14395BF2C02CC0D9B7D252AEEDDBDB921BAF30</stationID>
+ <name>Country @ KKCS-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361C1FF5B296D3BD20B4D97D9E5F3A30F35EB6AD1B7595CCDD2A9273A7260FF6141</stationID>
+ <name>Rhythmic CHR @ KXDC-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853613671BED6FD6A4D8B2FCF002E3C7F6F7D07D5EA03FF330512A87AB5CF85AF49F5</stationID>
+ <name>Country @ KSPK-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361D46E89F4E90BE92FF39F8B98EC82130EF7B4E6D273EEBFB562D402512B15FDFF</stationID>
+ <name>AC @ KTRR-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361B23B80CD9C389E94E4CF70CAE102F057F62E1ACD3C1126D75C5686234C77E907</stationID>
+ <name>Christian AC @ KBIQ-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536188D6156F98BB732B49439B0379FF5E958ED625DAF6EC3C9C069C8BE126E22CF6</stationID>
+ <name>Classic Rock @ KRFX-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361288821902CDF2F136790FF883251104CA60038030D0D504D3E28E2107D62C8B7</stationID>
+ <name>AAA @ KFMU-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853617B265E6E3DF75B064026A73CF3C7BB32C4D162005412E2EA87250CD240271700</stationID>
+ <name>Hot AC @ KMXY-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853616D917C079972197BC69A3F8E3A9E6494252F03874796D406E243F9EB2720C336</stationID>
+ <name>Country @ KSKE-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361B91E92E536C680DA7316A80C95067713477B4E53E4A7669D4FB9B292F870D8D2</stationID>
+ <name>Oldies @ KXKL-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361D550BF66E0909FF833EE9A1F05BB7257BF20FB28F057DA3FB7FE2744E48493FD</stationID>
+ <name>Country @ KZKS-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853613C436D71610E13844F57C67F6C3DD0F436731B834DB5320AAB74924365F76ED6</stationID>
+ <name>Religious @ WFDT-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536183B4D3196C5D0E53D20B63AC40389F91707585AA713CE68C1286A9883874B845</stationID>
+ <name>Country @ KVAY-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361E0FD813038D7977DB6D1A146C261F474F3C28721D52FC2952EFAD2F5A439BD96</stationID>
+ <name>Hot AC @ KALC-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361BD06C5C8F51B5D1CB571AB20378F6D49799FBC6E5CC179D20170935E439772EA</stationID>
+ <name>AC @ KPRB-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361D0FAE587D6D86315F1D41254A79BDD3A595D56FB6CE29C95DE892F76F2634ED0</stationID>
+ <name>Rock @ KBPI-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536115DF62FC79357B2464EF693C48BAA700F8BCEB70F54BA088F86B1A8B2C2B48DA</stationID>
+ <name>CHR @ KQKS-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853616FDBBC243B99C4D572F4746CE28B77C1C5DA0DA4A314DD6527BB781371646ACA</stationID>
+ <name>Oldies @ KDZA-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853615CE4489AACFA3DD17A3E24331572CD77A8CCBA0460629AB7705F0C905D778BB5</stationID>
+ <name>Sports @ KLZ-AM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361167509DF7A15A11946D885628C749154829A7EF06E3032F6A39CA7AE57B35897</stationID>
+ <name>Sports/News @ KCSJ-AM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361A981CFE964BF9B5AD94602380C59BDA13D86F0EF237F98E455E302F2566FBEA7</stationID>
+ <name>News/Talk @ KCOL-AM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853616BC9053F9255FAA5CB78BFA28F382B0006B2F4155036EF664B7C4A2CF7F135E1</stationID>
+ <name>News/Talk @ KHOW-AM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>0.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536138228A4DCD17A95E76AC03708A778ED6EAE9BCB4E0B22291FA140D6EE86A20BD</stationID>
+ <name>Spanish @ KRMX-AM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>0.69</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361321CB7E69706DA4B9FDFF2AA7C166AB1F781CDDDF7860E440BB37EFC688EE9DD</stationID>
+ <name>News/Talk @ KNUS-AM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>0.71</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361702FEBC04C495AFA6D4BE1464443E3FEF1E3385F1CE8C737C46F0B384AF6F36E</stationID>
+ <name>News/Talk @ KVFC-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>0.74</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536123BF4325B9BF3DF8E7192B7F1739D57E0C535486B174AB1131F64FCD9711077B</stationID>
+ <name>Sports @ KKZN-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>0.76</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853618BFB9D05910D090B19B8AD267D0B0EB8790EF47D558F6E6223B94BE2FBFD0F97</stationID>
+ <name>News/Talk @ KRGS-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>0.81</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536156421084BCAD578E53682A15F5E09076171F65BACB6278624F23AD4E4260408E</stationID>
+ <name>Sports/News @ KOA-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>0.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361D3E4AD08B87E9DE0A46066724D2194F4BEAA4014D0DE1EDD7E33E3EF051D0F31</stationID>
+ <name>Religious @ KPOF-AM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853615334B7FB6BD3534487A7502AE2C2116DEFF464FEC94E97106CFF83A5890E35E7</stationID>
+ <name>MOR @ KIUP-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361EA13ED959F176C4B7087C3E0EAD47F7D254D9A422292752BD6043F3FFAFC3B25</stationID>
+ <name>Sports @ KKFN-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853617717DF9AD98F58B470F16A79D499CF8974865250EA4E85A9466333F6AA601A6F</stationID>
+ <name>Oldies @ KGLN-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361C41186DCB1C7FBFBCD5A990DAAC390E7161741387E7FD095C414E74824B42200</stationID>
+ <name>Religious @ KRKS-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853617E2F80E78926EA6CA1BB39C1F64C864C552204968C283CCD5098E2A0B30408CF</stationID>
+ <name>News/Talk @ KSIR-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>1.01</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536151C08C0E38CC55581636770DD99EA41E0BAC72B39A4073E568CFFC94DA827B54</stationID>
+ <name>Spanish @ KMXA-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>1.09</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361FD8C98FA7FC7D7683C9FAD9D9A20A58CB82E2DDA4ADDC678B8413A545F400FF8</stationID>
+ <name>News/Talk @ KNZZ-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>1.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361771A98119E576599A8FDB68B0D4FCC2550D1490E1C52080E073B86FC7947E5C1</stationID>
+ <name>Oldies @ KHTH-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>1.13</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361107D4D01E66B7C0291AC74E246BAF4C7EC33C94C944F8379D5FB45C345FAA919</stationID>
+ <name>News/Talk @ KCUV-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853610CBCFE784A27AE749C75C1AA38E234B445FE27E46B01ADCD5A4146C7D2EBD43F</stationID>
+ <name>Oldies @ KBCR-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361726C5C410CF8C4F52C35F7DEB46CAF3E7FF09D05881012A0AF8B14C7A0242CBE</stationID>
+ <name>Country @ KCRT-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853613D4E7A4B146562AF0E4E3AC73704A8805D6B27D127C3E1C3974888DEA9AACCC2</stationID>
+ <name>Reg Mexican @ KBNO-AM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536167E64301C47058E3C4ADEB487529D43924D16BE42F47B5B44F03A980106C81E4</stationID>
+ <name>Nostalgia @ KBZC-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536119A6A294836CA9198B68EFE6CEB8465F6ADE9AF7F8444BA284338141DB0EF118</stationID>
+ <name>News/Talk @ KFKA-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361E7B0ED3D02B1AD9CB22BAEF8993D115FD794EA027D15A312DBCC97F7EA8B3121</stationID>
+ <name>Sports/News @ KTMM-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536149D94F9795D108BEC620EAE291EED1AA64B340EB7A0CAF6852DD297124E3C53A</stationID>
+ <name>Nostalgia @ KGHF-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>1.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361349D1A81E958EE54FBC2AD77F099E49E0DE2CB7179FC0D12ABC4A46AEC01B9C2</stationID>
+ <name>News/Talk @ KTMG-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536102886EE37EE947EFA9FD44DC295158308CA55CC9787F4C5BDB93E185688AB128</stationID>
+ <name>Mexican @ KJME-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536144677A70E12871FD9DC602A1345B5F76B83862202A7490D2B93136785CAF74BB</stationID>
+ <name>Sports @ KIIX-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536182870DBC8B4E3EF9F9B7DCB672D757C81F852679A95256620A5DB7B4A799E3BC</stationID>
+ <name>Oldies @ KRDZ-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361E7C05D53E20E9C7EA199D95B23DEE8F76DD1B55051BD8A4D7E8026130BC02E75</stationID>
+ <name>News/Talk @ KKCS-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853616B9E06F88E380C873016204F91CF802C435D27AD05A222DD13EF8F535718830D</stationID>
+ <name>AAA @ KWAB-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361ACD5E9B3F16024CD945096F94173885CEEDB879A816F9E79AF7CB02EFD7C77A8</stationID>
+ <name>Childrens @ KADZ-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853617001AE6EC83EAC0041F69FC1FA960CD9220160A644C9DD3D91A556BCAB420E04</stationID>
+ <name>Christian @ KWYD-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Colorado_am.krp b/kradio3/presets/usa/Colorado_am.krp
new file mode 100644
index 0000000..4dae95c
--- /dev/null
+++ b/kradio3/presets/usa/Colorado_am.krp
@@ -0,0 +1,294 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Colorado</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385361E8C713659471EB7A57A81CE167060FD28660EE99D7929DEA593474A401E44B70</stationID>
+ <name>Sports @ KLZ-AM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853617D6CB2CA85DD1A8729ACAD3E0C0E5297D096548A3E7B514CCC8D9717E8462D65</stationID>
+ <name>Sports/News @ KCSJ-AM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361E6C05270B3771EB2DB8EA1258A4238E3A8FFE35F1033694217E50C197AE49F46</stationID>
+ <name>News/Talk @ KCOL-AM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853615F59903C2A62098E16824DE7A740CBC58699DD5E84914ACB363A0D91E139404F</stationID>
+ <name>News/Talk @ KHOW-AM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>0.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853610D8074774B103E4F0B15D12956E3C9D8B451C72AFC30387F55283B7019F14667</stationID>
+ <name>Spanish @ KRMX-AM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>0.69</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361EAB4C7AEC764B9D9A9A3B14EA430565DD58F315708834AEC162A063B1CA8FFC2</stationID>
+ <name>News/Talk @ KNUS-AM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>0.71</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536154410A63B3BD428CA1AB38DA074C831606C7A0B1DB650F6A83CE69C56D7447C3</stationID>
+ <name>News/Talk @ KVFC-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>0.74</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361CF9AABF9F875B73700CEBAA8807778F6263A6818669F266E7BB1104B891E4EB3</stationID>
+ <name>Sports @ KKZN-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>0.76</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361416DDC46140F7C01DD1A8FA74E411B0B011F027E132E34B03857E0B06AFCD9D4</stationID>
+ <name>News/Talk @ KRGS-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>0.81</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361DF7560F055016B5EDBEDF9ADE833C9012D1599C6B7F4E22B2D3AE49EE4007432</stationID>
+ <name>Sports/News @ KOA-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>0.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853618715A3E8695D8A1476279464FDE6AFD0B2EF7AB83A1750F2DFA813CDCE9BEC5F</stationID>
+ <name>Religious @ KPOF-AM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853614FED026408037C308DB1CBAC54F48E8D1BE20A0CFA697BFCC060CDAA01D4EB14</stationID>
+ <name>MOR @ KIUP-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536135EC8CC9924D2F6D20F7539099C35B6AB3C54AB9B8AE2A1D65691E9C9E6D4E5D</stationID>
+ <name>Sports @ KKFN-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361381B398BE0ACCC4DB93A0B098ED383BE4AF6189B947AFA1A43D1FA950071A9B8</stationID>
+ <name>Oldies @ KGLN-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536162BE54ED2CC72CA57234160DDE22A717EDD34C4CEB21D51191959263F5F2DFA6</stationID>
+ <name>Religious @ KRKS-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361F89AE6CB6A8644D10B2720CCBFCA1E4C792D674F6B2AF27B2120F4AE28EE4977</stationID>
+ <name>News/Talk @ KSIR-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>1.01</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361F997201CF6C7859933BF2618831D4BE8851B459319DD3679CA18C664F3B867FD</stationID>
+ <name>Spanish @ KMXA-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>1.09</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361D64B2995250F7F0945D7931840A71D18E708762DAF6F5D27A9F005C3E984F1AE</stationID>
+ <name>News/Talk @ KNZZ-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>1.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361054180C8DF8F9438C553FFA570FF11C0AD430480FE845A4E9D68EDDA9D22B76D</stationID>
+ <name>Oldies @ KHTH-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>1.13</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361EC2B05D3ED15CF85671FA9308DAF79E468CC1B65CBC039DF510DE3D43347A61D</stationID>
+ <name>News/Talk @ KCUV-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853612EF93F28DA0BBF1BD137F60A4C4104EF3FAAF354D35A9341F342EAD6E2F26BEE</stationID>
+ <name>Oldies @ KBCR-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361D2BE92A5AE3A1587D72F21A45C353DBD2932F493BD05537B60BD025C8DCAB673</stationID>
+ <name>Country @ KCRT-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853613587356CF0FB7F5FE353C7314EF84CC5C3942EADE383514D9B7290216BF6E69D</stationID>
+ <name>Reg Mexican @ KBNO-AM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536178FF49ACF843BED409F03E415D9F4DAA34ECB2BC1153F0EF0661B87D9041186A</stationID>
+ <name>Nostalgia @ KBZC-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536130DEAE11398875783ADD091D4289CFE42756A6D9DD33EF934C3EE25A0969E82F</stationID>
+ <name>News/Talk @ KFKA-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361238A3C16A87E36531BBAD5BA896F3F27B21E8EB924C70DD625C030F812CE1457</stationID>
+ <name>Sports/News @ KTMM-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361364327552AFE06AA872ADDE0C3E8FBB7FF0D091DBAB53566BDF9F76AFAF2E3B5</stationID>
+ <name>Nostalgia @ KGHF-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>1.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361F6031358B9EA811690914FBDFC6F26B3EE3A7700E46AEC5F44D27E55F632DD3D</stationID>
+ <name>News/Talk @ KTMG-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853616B1EB29B675923C7901BEF72D2C9092EF63C403F91A6087E781FC4AB7D73C45D</stationID>
+ <name>Mexican @ KJME-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361F874A671934577E08F56BC149067DFFB4B06AE1C62B0CF62FBB245E9B9B846A9</stationID>
+ <name>Sports @ KIIX-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361BBE8A7DC47BF159A032089A4FF7615C6F5B1151D8990FEBF4610988A7B770139</stationID>
+ <name>Oldies @ KRDZ-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536139E50C50F24201CF073D19E8E5C19B0B5F79F41059B83A8BC4B68A9A5D7E25DC</stationID>
+ <name>News/Talk @ KKCS-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361003C0A73F259DA8191B56A0BEFB8B083A16EBE6F734D550CF25505777DC92F30</stationID>
+ <name>AAA @ KWAB-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853615BF17DE26C697A2AEB0D402FD97B62F68137A51E52CA55A68383D93555535572</stationID>
+ <name>Childrens @ KADZ-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361C1AD68E543770684577B33E273ABAB110429940FCC3FCDE387D712934ECEDD85</stationID>
+ <name>Christian @ KWYD-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Colorado_fm.krp b/kradio3/presets/usa/Colorado_fm.krp
new file mode 100644
index 0000000..92b1f5b
--- /dev/null
+++ b/kradio3/presets/usa/Colorado_fm.krp
@@ -0,0 +1,470 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Colorado</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853606371CC2BF30151E1C3351C734E434AB751DE1E54F5E444E64176F53AD9977209</stationID>
+ <name>Smooth Jazz @ KGNU-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360630FBF5AFDE0930D5FDA02EF138E1754677578D418C4C425A0E1A1AD867F124F</stationID>
+ <name>NAC/Jazz @ KUVO-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>89.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360EBDB4CB1D8F2261EFCD6AB671A5F73B722C94DA0FE9A1097CEE3089A976262B0</stationID>
+ <name>Smooth Jazz @ KUNC-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360F7A631848D52CAA3816BF5A9B4267A9B475D768023BFD323CF0DB99CD78FC00E</stationID>
+ <name>Spanish AC @ KJMN-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360F82AC425C7EDDFFCBB12C3A03A443332020E9E1F6AD3F28D71867B9C76D037E3</stationID>
+ <name>AC @ KVRH-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536055E0748B3E21DBF71CE3B004BB070324C289787C90C1B33714FA36B5B200BD5C</stationID>
+ <name>Oldies @ KDJM-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360A7A94B7513B3B232D8E2E8256A73C0D4A82C77DA9899717EB6EA59D3C9DBFF51</stationID>
+ <name>AC @ KKCH-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360F76FC2B5779A2884E9B84F24274FB0E42391FC99317701F9C1A7CFB2C1B0BBF3</stationID>
+ <name>Oldies @ KSPZ-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360BF40666D514848146541C5D9598E54D35B1CF8C7D8C8E11CA0874DE48488DB7E</stationID>
+ <name>CHR @ KMGJ-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360A183E0CC7555E312264E9A1A1E67486A1E2986D901828AC6A6398DA012259BA7</stationID>
+ <name>Alternative @ KTCL-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360904FD2CCF38675E5D9A45CE98174C85963F481641767286536EC138E03854A91</stationID>
+ <name>Hot AC @ KRAI-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536011F10B5949937A0A45E03B83808A3AB66A9ACCD35FDBCFAA15AC44F4A95D61F5</stationID>
+ <name>AC @ KYSL-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536009C8BD884308C859D661F8D782E326C9D4850B34F2B5B9E4B77709CE36C22DDD</stationID>
+ <name>Country @ KKXK-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360CEAAA9344C3025EC8DFEEC02949B68F205FFC859F3DBFD253D431CA96D5CE822</stationID>
+ <name>Active Rock @ KILO-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360C2AAEE7CE31EA41D2F1D57761A377E068248E5ED75586B2952B85BBA96A77DA6</stationID>
+ <name>Religious @ KRKS-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536015E3B666652211437623938E3A9864E9108C1CDF38A127FE085ED1D50D22B34F</stationID>
+ <name>Classic Rock @ KKNN-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536037CCB0615778432D5F19642803803800DD5CF1312150D0777DDC6422CBF6EA5F</stationID>
+ <name>CHR @ KFMD-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853603FE3D379C26480E4BDDC0D6FCAF79C5D833ED5D8A038CA54D16D229EC2C6AD8A</stationID>
+ <name>Classic Rock @ KSTR-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360162A08D258333FF1C640B15EAE3AB48743A69AB95CD748B273C8C809397AB3F2</stationID>
+ <name>Mexican @ KXPK-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360AAFEE439F3D80DB9E2D2A5317175AF129985081C462042A20C66439E054D3037</stationID>
+ <name>Oldies @ KWMX-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360726B422F0AAEEEB11BF30D7476558C66E9F9A77C4A4ED599F568A10E039D3E10</stationID>
+ <name>Country @ KBCR-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536063E8C18446DBFA8199FE3A7279823D7E8D6125E0E054627C14399FC68031ADE8</stationID>
+ <name>AAA @ KBCO-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536019026D1CD6FEB9888359007445B4927326271D411AF9E907A34AC669BC8B1353</stationID>
+ <name>Country @ KISZ-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360146D9D210516612F08590844294DE2111E08625B95E491A55E58FFD6B7677C5E</stationID>
+ <name>Country @ KAYW-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360DE29B67EABBCC24CD762B4B07578F3A3E39CA4596994F7AB3B9EDCB5243C275A</stationID>
+ <name>Country @ KATR-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536011A15793BAA3104F85FA1E4AE4EEE19C37FAA82CE8A3A7CB8C3C85CC43F81354</stationID>
+ <name>Country @ KYGO-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360FB310E826A6FDD255EAE0C694866B576510920F473EF5407679BD617CBFB17D5</stationID>
+ <name>AC @ KRTZ-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360FD048612ADF60D515448660AC705A3186EE1D3D5909F1A77DB6949B443419796</stationID>
+ <name>CHR @ KKMG-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360CA953968DDAF2961E31267F8C9EBF82E68A3D0B2575CD4294AD6137CDC4B5BBF</stationID>
+ <name>Country @ KUAD-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853600D2D0A1BE0EA57C1D96A9D8345E6E4A227A14A5118975042D594DD899127661D</stationID>
+ <name>Classic Rock @ KQMT-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360FFD31F15248BBA707D3325D746A8E033EC5D4DB2C1A17B2909181A366F85BA5B</stationID>
+ <name>Modern AC @ KPTE-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536058D1FC8D676330F105D0845AF1983D56B4182C872AE6C4AB8DC636C05A609270</stationID>
+ <name>Country @ KEKB-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536032832224220B844FCAEE4D0E6495DD6E7C2CC3B37FFDB7601D31BCEA9F86DD96</stationID>
+ <name>AC @ KIMN-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853603ADA9CBF679B39C60F1E2FA115471F3055082E110710590571F0E7B95D23971F</stationID>
+ <name>Country @ KRSJ-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360616BF59240034B8EDE46882E8DB02FEA7063026461F4D7A99C30FEE1B0A577C1</stationID>
+ <name>Country @ KMOZ-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360B8AB3C0A52B46F3AD3F2AE1CC7FE1237F4E4944445C2DB982BC73D210F37AA0B</stationID>
+ <name>AC @ KNEC-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536098CB7DC83807F4E916EEDE24F08D7984D215C6225D803D8657ADE281336BA63C</stationID>
+ <name>AC @ KOSI-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853605EF30D93DF784475E093B8C8CB47E058D9652FF72C709F9681A4BF59CA31F530</stationID>
+ <name>AC @ KIQX-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853609BD9DF59B424AF7BE85ACE2D976C7DB74C8AD06F2189625A7B9126B1082ADE35</stationID>
+ <name>Classic Rock @ KTUN-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853604EC24E1A1B0414FDA65495210368E0AFCD65AC2DD62306957C8E10EC7882DEE6</stationID>
+ <name>Country @ KKCS-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360777844D627362347D64521F14259B2000CAD8F93615263CB107919C77BA69B91</stationID>
+ <name>Rhythmic CHR @ KXDC-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536010CA9EACEB40397AF13A22756E25A2EF22C3BEBE5B99CA8878487BB5CBE6F7EA</stationID>
+ <name>Country @ KSPK-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360EA966A2B320150BC96DF11380CA01272A316397619123E38AEC1D8A8F4E447E6</stationID>
+ <name>AC @ KTRR-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360A3AD48E4412456BDF86D54565CE4653A4C005E4EF0EE7BC0C2F91A463E298175</stationID>
+ <name>Christian AC @ KBIQ-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853602B90AAA7587F72252FBB83FC27AD83D89EC488190D39DEF3BC5C01BC12E28222</stationID>
+ <name>Classic Rock @ KRFX-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536024F0D48ADE412F3046FAA7853EA2856496AE9C8F1EABC1394E0BCB6A69526080</stationID>
+ <name>AAA @ KFMU-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536057794A546149315A162FDF0240C628AC461D24A65FDA26D22E8AC3CB9B24928C</stationID>
+ <name>Hot AC @ KMXY-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360615DBE18E0D4D5CB290C7F2B4B9202B5FDE66FEA33D1F23F2571D671D8A64E5B</stationID>
+ <name>Country @ KSKE-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853609230A67F08109369CAF5090886DB56EE36CC0D0076F17624D9BD92C9643D135B</stationID>
+ <name>Oldies @ KXKL-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536066157E16FE5CAD8F38910F065A86E4917904C8BD09EE38E41CCBB8784A9B38D8</stationID>
+ <name>Country @ KZKS-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360F969793B80E18C59DF76DCB5599B3FC5E07B6A2D5B264F7B54BEBA48BB30F4B3</stationID>
+ <name>Religious @ WFDT-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360AFC6D7A675CFCFDB1363BFB17A9BF12B7E64FDB817AC55A1FB99F3669C78180B</stationID>
+ <name>Country @ KVAY-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360DCA8D965CA0A80FA53654AC2BB91609E038202787B87BC981889AB07B4D4778E</stationID>
+ <name>Hot AC @ KALC-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360D107AEB219BB9BA457DDAF7D16D02368E32911533A481AFAD41AED5261E6F4CD</stationID>
+ <name>AC @ KPRB-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385360D829815C2BDB03314BB2A3807A1D6388DB956DE36455524902D55C504D873622</stationID>
+ <name>Rock @ KBPI-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536041F2DF5FDD4C9E34BB376201874061F34E16BD95699C815ADFEBAB7A9403CBC2</stationID>
+ <name>CHR @ KQKS-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853605B3417FD87BE09A8F8CC7DBBD559763D3B837E78F762DF278DB0D8D5D67015D3</stationID>
+ <name>Oldies @ KDZA-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Connecticut.krp b/kradio3/presets/usa/Connecticut.krp
new file mode 100644
index 0000000..04752d2
--- /dev/null
+++ b/kradio3/presets/usa/Connecticut.krp
@@ -0,0 +1,430 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Connecticut</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853623EB5832108B2D44989903B5E1313E5F0748FCDFE7AEF545ABBA6A18D4D6F450A</stationID>
+ <name>Alternative @ WWUH-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853628437F1A8FF27B602F822FD92D798DC3AEE77160973AB8819DEF189D1ED06F2D4</stationID>
+ <name>Alternative @ WHUS-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>91.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853628A14E2790FEEEB1F0D840A2A89D77B6DEDA606864930F8397023697984552696</stationID>
+ <name>Country @ WWYZ-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853625BA277C22FBE64832415778737782892753B964A1279661C0CF3E15009308589</stationID>
+ <name>Christian @ WFAR-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536278B2B69913C905098D00BEEA6DAAAAD5109EC25C7E128F7865159117BA9C1A0B</stationID>
+ <name>Urban @ WZMX-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536272A8FC4F8B088A4CB69BF45EB7AEB8AB19A8C977DEE3506F84E1710EFD5F84B9</stationID>
+ <name>Urban AC @ WYBC-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536290FB94FE7C2547C913B145669AF6F60E474104F5C152F6B14503CCB2DCF143BF</stationID>
+ <name>Rock @ WRKI-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853620F8D8933C861F2C629F1D8B47A37AC741E319A281B8CE05D6F88B11874694825</stationID>
+ <name>CHR @ WKSS-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362EEDBEE608E7EA53B3B11E06481C45F22FB7CF1775C039383637C5B45B592019B</stationID>
+ <name>Classic Rock @ WEFX-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362A74CA887B6A776277FD5E91A589164FB999E753798163D16F0F114C4B713E4B6</stationID>
+ <name>Hot AC @ WTIC-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853621DAE0FF8ECD4EB3C99E05C8B6D7D5E6752F735307CD6E933D33DD8BF718B690C</stationID>
+ <name>Oldies @ WKHL-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362523882FD6535D657365F52ACCD72AD05BA9702A1C8124395F20220FD7350A842</stationID>
+ <name>AC @ WZBG-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362D17B2C6DCC21A444B3F8806AF047159BA49F7512F8A3652AF317DB74DD2AB747</stationID>
+ <name>Country @ WCTY-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536284C61FFDCAC4215D1C231B1E7C0F7B5F6FC841EBCD3217DB359D7D21413CDDFD</stationID>
+ <name>AAA @ WKZE-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362F6F349F127F0C6B84D51FD5ED4A8EF449BEDEC8E76DC3EF5398C4CFEDA69E6B5</stationID>
+ <name>CHR @ WILI-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853621BFF5438776849AFFFCF7F4EC8413BDEEE3EFEDA48EE05F3B379DAC137370E2D</stationID>
+ <name>Nostalgia @ WNLC-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362CDAC1CE9C42EC6CE19FB09515F4F574FE7A34DAA294BB55ABEAE7A2AE53C56AB</stationID>
+ <name>Classic Rock @ WPLR-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853624E31C45C5F1A4FD1EC568400708A65B3247494B4EF96F88C819D03371613098C</stationID>
+ <name>Hot AC @ WEZN-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362F928334EDDD6CAF83DE5B9807011167ACAE4EFF251C3FC551735E3778872D8AB</stationID>
+ <name>AC @ WRCH-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853624534B7D731FFC22A70C40333B820F78A019ED3916EA0F19CF6AEC126583C05CF</stationID>
+ <name>Oldies @ WKNL-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536273FE68441F682A83C89E8E0B395A0A34B438817DCE14BAD85C4E05FCDDCACC49</stationID>
+ <name>CHR @ WKCI-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853622BDBBD55A39B6DA8C9E2AF4529837B4EB2DAA879B5BE7B1AAFD9A49BDF409693</stationID>
+ <name>Classic Hits @ WUXL-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362469A9E03B5CB70A5C9C01E10679E942A902C26793BAC4277F9F432235F53EACF</stationID>
+ <name>AAA @ WCLX-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536226A622D857A5480B2179838F3274C896ECF8EDDF8FF1163C39F1FC25A22B2700</stationID>
+ <name>Oldies @ WDRC-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362A9DE6C5CC5B3DD63CD7E00E00A9107601BFFD5CFD25F37F5A4D18BBEF232DE2B</stationID>
+ <name>AC @ WQQQ-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853622B488214EC7941563B9ECEE833F01270803340ED09151851AE07A7063A357AE7</stationID>
+ <name>Alternative @ WMRQ-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362231B6B7C56657B255CFF9820393F35C5523EC4CDB69D1AEC0F3ACB6257264F30</stationID>
+ <name>Various @ WSAM-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362D5623AB4D50B1B64F2110AA43F17920356FB74ACBBC25C4FEA6C4F2BF96FBAAD</stationID>
+ <name>CHR @ WQGN-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362280DEF52BB8C77710EABD12CD84335E3301CB8016FB7826FA81B9070E35070C0</stationID>
+ <name>Rock AC @ WHCN-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853626F6CDD0C3DED1920C3E4C457B90D7E825F3FB822DB74FF3571CFBA43E28F9780</stationID>
+ <name>Oldies @ WMEX-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362982AE432D9820050357243C0AB372FD409919B82D1AD6318F0BD0FC33FF9C9CB</stationID>
+ <name>Rock @ WCCC-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853622F4C1632421C37FFAE1F28E0385F63A432171B16CB6DFA6EE515A365626C8D75</stationID>
+ <name>Hot AC @ WKCD-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362F7433DFE454FEEE5417DE425C4892B8EAB530232B099EFE798CF42550AA9717D</stationID>
+ <name>AC @ WEBE-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853622BB27F8E4F646E6379590A8938677EC98B711E11C39D045FEC54ADB4D7EDE276</stationID>
+ <name>AC @ WICC-AM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536212A8158F28978DBCF5DDB27658078BFB0608E4712F6F2D58E6EAC19AC2C0CCC8</stationID>
+ <name>News/Talk @ WELI-AM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>0.96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536282DE57896377E4D9A16AA1B2292CD2872304DA9A114C9E45F9C870E64B8135B2</stationID>
+ <name>News/Talk @ WSUB-AM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853620C01772B87D86BBBA0F682605D085192E4F7EF6DADA316AB0393CBFD034D2C04</stationID>
+ <name>AMERICANA @ WKZE-AM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>1.02</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853627AA71BCC2F81286B7DCDFE0485006903F5A0E633EC8C9EE228174D9541D0A13C</stationID>
+ <name>News/Talk @ WTIC-AM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>1.08</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362C9700D1EA5982AEC8B80DC9D35C1682706E48595E643F41D5C526D18E19786AE</stationID>
+ <name>Spanish @ WPRX-AM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>1.12</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853621DC93581F23CA285E4C1D5C27BDB014DAEE2C482321D09B5A814370D5D050C06</stationID>
+ <name>Nostalgia @ WQUN-AM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>1.22</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536284F16449B13C628825D95FCDF631B43FDB25C7761A7103A5A6C390ADCAEF2349</stationID>
+ <name>Spanish @ WLAT-AM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853620FCAAA1BE3DDA957FF3BF226D208A419E803C968814D914FB6E61DB5703E0279</stationID>
+ <name>Classical @ WTMI-AM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853622899796970FDCE2B6CCFAF50EC6D2C36D230A6581B51C3CDC516E165E439A09C</stationID>
+ <name>Sports @ WAVZ-AM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853627A82F572556EF6EA1B363F6E47E888297C213AB43765F3C45249139AD174AF53</stationID>
+ <name>AC @ WICH-AM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853629CE527506C26E08D5BDA6D6D1A3D134C9FA56AA1ACECD762AE8E468CD86E9529</stationID>
+ <name>AC @ WATR-AM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362FABAD966559CA181478F805739813F1F70CF4E7D11784CE61AD1C271047DF4DE</stationID>
+ <name>Misc @ WYBC-AM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362E39F7D18038A46D874092B5A523AF4D392DE6C4EBE1C2728AF0DD4A563AA66F3</stationID>
+ <name>Talk @ WDRC-AM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362959225037C0EA64A6E5F66F074AD6FA64DE233176809BB5A07DE235DC717F5FF</stationID>
+ <name>AC @ WILI-AM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853624CF0E941B276F75E592CF41A9E4E59E35FF87848DD1B4CC08DA6F526DB4584D0</stationID>
+ <name>Sports/Talk @ WPOP-AM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853624925D51495023836366292A2C68CE91E9DD0E7195CF53A0BD49BDF36E19A358E</stationID>
+ <name>Nostalgia @ WGCH-AM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853621B7A2F076D30F5C4247BDFEC7D10955FC8B79B7CAFA6E79E7E8B79DCEE48F66E</stationID>
+ <name>Religious @ WFIF-AM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>1.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362C02AFDE496FF2B1B7D7A3BA4CEFF532E4DED6B41819E3981937B06F908D465E0</stationID>
+ <name>Childrens @ WDZK-AM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Connecticut_am.krp b/kradio3/presets/usa/Connecticut_am.krp
new file mode 100644
index 0000000..eeaed6e
--- /dev/null
+++ b/kradio3/presets/usa/Connecticut_am.krp
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Connecticut</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385361463C9A401F09EF6606A5E4C5280AD6C01097D54596872562832CE6106AA02AB3</stationID>
+ <name>AC @ WICC-AM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361D9AFC16E4B75823AFE4A7D390B324D0D9F3686F43009020068500A8E89DE40C1</stationID>
+ <name>News/Talk @ WELI-AM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>0.96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536133ADE9CAF9DA317A2409ED4920E953ED24878C18A5E9228676D3DFDEAFD05242</stationID>
+ <name>News/Talk @ WSUB-AM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361A52D543C40C05C22894A09BA287E5315EC27A11686C9093F97B9992794D23A27</stationID>
+ <name>AMERICANA @ WKZE-AM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>1.02</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853615D022C60B751900A314B65344CB98273E104861E418468FF2D92DED8B28991E1</stationID>
+ <name>News/Talk @ WTIC-AM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>1.08</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361A7C5DBC047E785B6891A84C98056F153D8E96D4E9F28212C2660811F13C415C4</stationID>
+ <name>Spanish @ WPRX-AM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>1.12</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361C294EA038FABFCBBDAFE1054EB948845DADDAF78B348DE32E3C58C144ECB804C</stationID>
+ <name>Nostalgia @ WQUN-AM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>1.22</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361B752F585502459A37F9866C0886E93B26D943248F7780A86640470FE9F1FB515</stationID>
+ <name>Spanish @ WLAT-AM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361C5C50E18F7100F48C72B754D46C3DCE0DF9F6D8EB2B41B9D8E7D3CE5D337B3E1</stationID>
+ <name>Classical @ WTMI-AM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361A4AADF34EABD522B3B3E794D29AF60FB1EC6D520F90D01E7C02960DB652F8240</stationID>
+ <name>Sports @ WAVZ-AM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853613C5DEE78D3019DC96BF70F12F40EABB517AD3237C2711B13D6D5540E452A9B7D</stationID>
+ <name>AC @ WICH-AM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853617D4F4D4225703AC68814D714727D4F685DB265BD437A17338F4DE1D056F94638</stationID>
+ <name>AC @ WATR-AM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536101AA76D70EFCD61266DC57C9489759B93A3FA7730A1DDF563CFAA4B5EAE15C40</stationID>
+ <name>Misc @ WYBC-AM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361042D7F8188AB46A0D3061E1EB9C785905E67AED5EB4A5042A1AD726B092367DC</stationID>
+ <name>Talk @ WDRC-AM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361EEA76212B9729A4A1B414AC47E1CC621EA4187CE8CB31AA6041AF3272EB6C320</stationID>
+ <name>AC @ WILI-AM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361F0F344468DE8A5FA7D98F2F1DE159A7E9C24913730A2CD87DDC300B25F5C70D2</stationID>
+ <name>Sports/Talk @ WPOP-AM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361187C9862A143D02D3F0E67843909A24E70CB325371BD0574DCE1E0138D46DAAA</stationID>
+ <name>Nostalgia @ WGCH-AM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361BE3F4A45CF6CDFFC49948AE3915EE0EE68B64D86F746386C53590A635FF51A89</stationID>
+ <name>Religious @ WFIF-AM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>1.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361A35E782C3F7AFAA70EBF61B54B652907541F9CC0D885E84C0FD1DAAE09E3ACF4</stationID>
+ <name>Childrens @ WDZK-AM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Connecticut_fm.krp b/kradio3/presets/usa/Connecticut_fm.krp
new file mode 100644
index 0000000..1ff8bb6
--- /dev/null
+++ b/kradio3/presets/usa/Connecticut_fm.krp
@@ -0,0 +1,278 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Connecticut</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385361132C2ABFB7FCFCDC57FE00AD7462B5D4BD2592C101F84AF19B98650998A6F379</stationID>
+ <name>Alternative @ WWUH-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536166D872712AFEE4CFC3E229B0BAC19C56F64FB5E82F0D22D57C3EDD9CE9E9B92B</stationID>
+ <name>Alternative @ WHUS-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>91.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361FD29AA3FE625279DB15B6D1974FD223F9243F014CC69069357EBEB0E084B9FF5</stationID>
+ <name>Country @ WWYZ-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536158DB85CC311EF0733F7561A47F7E2BE23E1053EDE943B234A466C71ED491BC0C</stationID>
+ <name>Christian @ WFAR-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361B2306C1FDAC6520C50782074851262E335006AFA0B395DF7D3A9879FD1D115D5</stationID>
+ <name>Urban @ WZMX-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536112F9A2DC7B3FD2CAC5C92F9F9B4742FA4CE69F7E93AA403F63D8F48C0E78E3CD</stationID>
+ <name>Urban AC @ WYBC-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361BAA45980A232BFF7C5C5DCA823D6D0562D74DD1203ADC190A360E50C839274F1</stationID>
+ <name>Rock @ WRKI-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361E8FDCE85D7B4A8A03E762525658E6DE9B28CCBAA937A55403219286B682B89C3</stationID>
+ <name>CHR @ WKSS-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853618DC246AA0BF015A751DF17F890E902A154825964888C0AAF38BA08CF2B979DA9</stationID>
+ <name>Classic Rock @ WEFX-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853618567FAC3920313F0510C7909644B277A80EA2748997926F12FBDC5FBA77B0BFD</stationID>
+ <name>Hot AC @ WTIC-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361E55F13A7AD06BC12854C7FD1F9DE416A3853B820D1BE05A8CD9A54A33B238054</stationID>
+ <name>Oldies @ WKHL-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853612A3204E2CDBCFDBE307756A9935C503091F00B47682369AA800B6B60C0DDC8AC</stationID>
+ <name>AC @ WZBG-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853610AB0ABBE211FE0878411CA269C949659D21634C881C4CC27965A80BDDDE9017D</stationID>
+ <name>Country @ WCTY-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361E2711FF2BAA794059EB02DC293EDC95F7617BA3E2019B5E34CC65BCF921B3FDD</stationID>
+ <name>AAA @ WKZE-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361951FCB4754CDA1FA78281C712F8FC4ED28CA7D6E830CF679BF343F83F78B2AF0</stationID>
+ <name>CHR @ WILI-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361BF379AC6562E89E7EE82716CD8C615D03AB1B9BFD6AC907198D7F35CCFBC7D02</stationID>
+ <name>Nostalgia @ WNLC-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361E6674E4CDAFE55842719CD1969DECF1A7704128B7DDE1BE2F732E7FC54C353EF</stationID>
+ <name>Classic Rock @ WPLR-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853617CF530682868D8AA2F85AADE53089898F6C9F1CFCC007F48D7929E21C28735BD</stationID>
+ <name>Hot AC @ WEZN-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853612E029942F717D87B9F544305E068FF8C0F6BCE7630EC5EE3779943A355EE73B1</stationID>
+ <name>AC @ WRCH-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853614DC72BFC0A9157F35DA78520120FBECBB6C46F342EDCB851ADEDCCD656D5DCC1</stationID>
+ <name>Oldies @ WKNL-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853612E89DF6D4997FA88D6812929C02C39E4547D9DBA3EC4EEAEF32A73D91266C132</stationID>
+ <name>CHR @ WKCI-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536170B6464785E50572E328B78078195FC654167E3D15363BA8CB71E8C0F1EBE1EB</stationID>
+ <name>Classic Hits @ WUXL-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361AEE83FD9B77B398670BB0528B613781DFCA4D0BD33FCF96A785E8BFA897BECDE</stationID>
+ <name>AAA @ WCLX-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361925C90ABD0D7DAD50706D38232B1E4F802C39D211E3AAA312DF95C702377F70D</stationID>
+ <name>Oldies @ WDRC-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853610FABE6A77925812955693DFBA02C8CA2E3BCC12176850941D45E83B358E5479E</stationID>
+ <name>AC @ WQQQ-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361E6191413D700A9BD06CE5C060B24F4B6E7BA54D2F78E4C76A0E43410B9947C1B</stationID>
+ <name>Alternative @ WMRQ-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361876A7BCF250D8FA5ACE648CD974D2F94FFF05A87504FC4C105E344A9B638522A</stationID>
+ <name>Various @ WSAM-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361B58623D0D07AA5660C9E57F37B2A217E396AB2C1E7F600E1A9C8F3A204C3DD85</stationID>
+ <name>CHR @ WQGN-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361626B147C08038148D25D00720A40D90B5C6097E9819A2A3182D6AFEABF8DF0D8</stationID>
+ <name>Rock AC @ WHCN-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536115C50D0FEAAB1CEE447A94D0B8835234ED583222B65065F89AC3C855682F2114</stationID>
+ <name>Oldies @ WMEX-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853617209FD8843DEDDACD8645D89F47836645634439AFB0C74F70A554DA12E56937A</stationID>
+ <name>Rock @ WCCC-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853613DB2FEAC65C487123E4CFA89AC4BE4A4FB0E2415B2AE6DEC66527B694253FB85</stationID>
+ <name>Hot AC @ WKCD-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385361589EF895DD3AA641F57FFE82CAA7E1BE220BFA40747BA1AFA1C8A47B8E2ECF73</stationID>
+ <name>AC @ WEBE-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Dallas.krp b/kradio3/presets/usa/Dallas.krp
new file mode 100644
index 0000000..4b014bc
--- /dev/null
+++ b/kradio3/presets/usa/Dallas.krp
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Mike Mulligan, &lt;tonkajeep34@earthlink.net&gt;</maintainer>
+ <changed>2003-04-24T10:23:05</changed>
+ <country>USA</country>
+ <city>Dallas</city>
+ <media></media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338540072AB030006A18D0BFE8DCE1972E46F6FCAE70DD06A99858B230417808299A911</stationID>
+ <name>The Bone</name>
+ <shortname>Bone</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854006048D97C319D4EDCF3E9ACBBDA018038983417FA7351FABC17B8556A0A272C59</stationID>
+ <name>The Wolf</name>
+ <shortname>KPLX</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854002C3323D8FE0121497901D806733CE03847FE43B86FD4085F464BE520F278364D</stationID>
+ <name>KSCS</name>
+ <shortname>KSCS</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854004F9C39AAFDFC509C324C4FB861090F7C341533BDDF618C3797FAF05998CA828C</stationID>
+ <name>The Eagle</name>
+ <shortname>KEGL</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385400B9FF786251C591C72660355F6EF1F82BB0373F4A66F9B15C2AB8BF54648C24E4</stationID>
+ <name>KZPS</name>
+ <shortname>KZPS</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385400A0AFF184D079762A373A5E00A1613A7A39742395FA8D5FA84CA473EA3F9E886F</stationID>
+ <name>The Edge</name>
+ <shortname>EDGE</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385400436E4756A859E9E712F2E11F60B1B5D361A28753536C577BFDB0CB679FC3EA24</stationID>
+ <name>Mix 102.9</name>
+ <shortname>KDMX</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Delaware.krp b/kradio3/presets/usa/Delaware.krp
new file mode 100644
index 0000000..8ffe69b
--- /dev/null
+++ b/kradio3/presets/usa/Delaware.krp
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Delaware</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385363C9CB84EC9027442E4ADEA87E1630EB42F2D98F65D562D6837F3C902059F325EA</stationID>
+ <name>Country @ WDSD-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853630D98B4D0F6557109532CD01844EA213342F3E4D81AA1F5324F893D4852FFFD84</stationID>
+ <name>CHR @ WSTW-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363ACE3FAEFF8AF45266A90972F8915C215F057A02D268274112174B46663DE6049</stationID>
+ <name>Classic Rock @ WRDX-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536397C33B26CF7AFA97A73684F4C11BA947FE9AC31BF95E6574C430FA637D09E956</stationID>
+ <name>AC @ WAFL-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363CF16FCC535B1FF35E201C48178EF537246F9EEAC48C8DAD9B80337D3B31E0B51</stationID>
+ <name>AC @ WJBR-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363822E2A3B32568BAC967B7EF2E0B65C5AAB66FAD0F307AAA8FCCD568C067D7F8A</stationID>
+ <name>Urban @ WJKS-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363AB6CEF2D4E0543A745B236925D66217606BCBB282028E377B43DA920B91A5CBB</stationID>
+ <name>Country @ WXCY-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853639357FB572177246FBD4E84453A6E2570456B2305AD77AEA3D3BF8F9BD76C36B8</stationID>
+ <name>News/Talk @ WDEL-AM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363B36947E510AB89FDAE3FFFA598D349BE29C25C0EB17436436F76A3B6DD2A7E4B</stationID>
+ <name>Nostalgia @ WJBR-AM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363694375432D82785D4A13483CAE7E63C224CCAFB4A256288AB5C46439E5FB9177</stationID>
+ <name>News/Talk @ WDOV-AM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363525969F32FAE604848533D68512FA84FEB63FB76AA1F49B6AD5DF38635C5AB6D</stationID>
+ <name>News/Talk @ WILM-AM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536352B2EBA2BDB7523B6AFC66B63496AFCE8E1BAADBCD6D3D2FC9A6367653125EF3</stationID>
+ <name>Religious @ WSER-AM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Delaware_am.krp b/kradio3/presets/usa/Delaware_am.krp
new file mode 100644
index 0000000..383d2ba
--- /dev/null
+++ b/kradio3/presets/usa/Delaware_am.krp
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Delaware</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853631BD0958B2AE47C62E10C64036AE39DC5FF0684428D8EECD0B57E0B3A31374E39</stationID>
+ <name>News/Talk @ WDEL-AM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363425971CAB3A263E0598D67FF7A8B20F683320774FABE498949CBF512DDAB8092</stationID>
+ <name>Nostalgia @ WJBR-AM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363AF6563189B1F1EAF65942161B6EF188003B99247DEA7D29124F7953AA72C0ADC</stationID>
+ <name>News/Talk @ WDOV-AM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853631D415DDD2372A76094BFE27EBC537F942BD969B18FF568833CCABDB6BD02D78A</stationID>
+ <name>News/Talk @ WILM-AM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363A58875C5A5AED04F53EBE75D73ADF266AE888312C9AD3FA38C17340C2EA34950</stationID>
+ <name>Religious @ WSER-AM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Delaware_fm.krp b/kradio3/presets/usa/Delaware_fm.krp
new file mode 100644
index 0000000..3c22a36
--- /dev/null
+++ b/kradio3/presets/usa/Delaware_fm.krp
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Delaware</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853638BB402CFFF4162009BC697DC80EA20F54198DDA6CC656ECE2CC96377929F5E97</stationID>
+ <name>Country @ WDSD-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853638397928A342DE48ED4EF43C6A343CEFCD6DA7C772F39038B907A1C3710953A84</stationID>
+ <name>CHR @ WSTW-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363EEE018539BDD2B54FD668BE7EBAB7F46462B5EA37B8FCD682323ED15ED76E282</stationID>
+ <name>Classic Rock @ WRDX-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363A42DD3FD061EC21B4A1082BF435225E3691A92876364B81AC3D17E23AB7CC6EB</stationID>
+ <name>AC @ WAFL-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363C5677E24564D0776F949B97710E09BEB1BDCF83BF22F22D95D0247F582CB2323</stationID>
+ <name>AC @ WJBR-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363499028977844B21A1CB08954D0A994B5BE4BACC767B53A4824E3B2B7B1947AAE</stationID>
+ <name>Urban @ WJKS-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853630E2AE9DE33061BF4B490AA305235A6D9857F2AA60B40EB25994457043346066D</stationID>
+ <name>Country @ WXCY-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/District of Columbia.krp b/kradio3/presets/usa/District of Columbia.krp
new file mode 100644
index 0000000..6d3f0dc
--- /dev/null
+++ b/kradio3/presets/usa/District of Columbia.krp
@@ -0,0 +1,326 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>District of Columbia</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385362A7B5AF8914733B575CFA2EE310F527369411EF589862C0035188E99EDFC7128A</stationID>
+ <name>Nostalgia @ WPFW-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>89.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362D402430821E47DA8E31AE636BAF7E07C7B5725BDD97029AB20D456294C9F27C6</stationID>
+ <name>Christian @ WGTS-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853625F168D8828AB6175A69B3ED49870BCE67CD90925B74E48CF197135821F9295EF</stationID>
+ <name>Spanish AC @ WBPS-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536279AD26A96B95F63D01CB1F5E29D99F90D0C9726E644A1FD91FEBDE87E1B8629E</stationID>
+ <name>Classic Rock @ WARW-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536239E192D4F47E0C461DC57E4EEA25208FDD34CC28FE6C8134AC684B2480D1CA1A</stationID>
+ <name>Rhythmic CHR @ WPGC-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853623C61E6B66B86126BA04FAE678DB27F8C5DAA5A23D07B10A94CAD384244319162</stationID>
+ <name>Urban @ WHUR-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362F6EDA258DEB818E14D41B022F0C91A99B861B3E7875A5894FD24EC746F04B691</stationID>
+ <name>AC @ WASH-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362933A4FD2E99A9D0963D49269AF0F18B0C88BFD2810C37E4F65AB5AE1CA495912</stationID>
+ <name>Country @ WMZQ-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362BEDB8E15BFF8E5D14ABCB5B638B2E3127848B23E3E1B510630DF1DC4A71F9320</stationID>
+ <name>Alternative @ WHFS-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853629B03D8B6437446EF851139C58CD65A387396DA5D2A38FD63A6F0FC9B7C40026B</stationID>
+ <name>CHR @ WIHT-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853629C0E9F858D3526B267BCEC02740BDF906E60800A0893139C5A1D8EDD199F80D6</stationID>
+ <name>Country @ WFRE-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362441F1CE5E88DE516548164EB429C80ECC8637900A56F1327174778246DF8E234</stationID>
+ <name>Oldies @ WBIG-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536241837065C9309D7781AF5DFE239FDDD5A29DA1ADC5B893A6C22200A823AF2F3C</stationID>
+ <name>Rock @ WWDC-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362240031F7370E5B5E0CA44AEE5623DEE1F099DB063D6E0A51388E6D066B0D290C</stationID>
+ <name>Classical @ WGMS-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362350DDF45B7BBE6EC75E216680A1E3FEB91225B6C93DD6B010323859B540D83D1</stationID>
+ <name>CHR @ WWZZ-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362E164C57FF5E9E880368E8A639F0A6AF4FF602E7FC52471079817B52F57B5AFF3</stationID>
+ <name>Christian @ WAVA-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853624D870758C24C7E27BF8A74445793757CF45A665738F68435A09201C89365CC88</stationID>
+ <name>Smooth Jazz @ WJZW-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853620ECCB2CFA9106FAE0BFF2A4A9F21D9E51CF0D7D3754F886D525FABD94A689A72</stationID>
+ <name>Hot AC @ WRQX-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853623059FB195F933461723F20DD0B0F244378306BF9FFA814DEE5169655EAA92862</stationID>
+ <name>News @ WTOP-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362E84FF09EDB4DBEDA85ADC3DFEB935EDBA5600C398C2A9FD18769BD220013B273</stationID>
+ <name>Talk @ WTNT-AM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>0.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362380DAA0D7A7E6530CFD610131EC42B03821CB5A0B46349D336731848B69A229A</stationID>
+ <name>News/Talk @ WMAL-AM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>0.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362F82FF910D726C7DF3E80B83C0F2906F491A028BD6EB0DA16F93B2DD428FCC553</stationID>
+ <name>Spanish @ WKDL-AM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>0.73</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536215FB37E18AFF79CD3B95FFD4427E4287B69186FB362737EADFCC64EEA270BBEE</stationID>
+ <name>Christian @ WABS-AM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>0.78</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853627334FE1AE3A37EB6F8CADB5D8A14B2D8A39BCB0CEB6377EFFB014C97DC37F541</stationID>
+ <name>Spanish @ WILC-AM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>0.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362BF32C73398892BBA6035017FD92A4FDDA81E18F81406B108EB97B2F64610E681</stationID>
+ <name>Christian @ WCTN-AM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362583DFD42FEE561D196EBEE53E34F64C4AF100E7BF861AB68D637B0A3974BB726</stationID>
+ <name>News/Talk @ WTEM-AM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536217298776FF08DC6180B5CC06B8BD69954E9388266CA3343A9A94C8A135E3E60C</stationID>
+ <name>Religious @ WINX-AM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>1.08</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362C57BC7A8A8A095FAFECA4FA37022326AD4909BA387ABBC7A37F83C7FD77D982F</stationID>
+ <name>Ethnic @ WUST-AM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>1.12</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853624A5A7A893FD53EB0EF61C7B9027417AEF660024A4F47F9FD7082190F39C02F7E</stationID>
+ <name>News/Talk @ WBIS-AM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>1.19</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536284FA6D0E6726899F03052E5A29EA9660218D736C7A9061E49CC5E63BC2B9811F</stationID>
+ <name>Christian @ WFAX-AM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>1.22</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362F83D93E16DF5695CD90926546FA197284012000C677978FCF64C1CF6C9903E22</stationID>
+ <name>Religious @ WAVA-AM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362497515B14238C78B61729C63C24BB32E94B0A360142EE0F89660B0A91D131CE1</stationID>
+ <name>News/Talk @ WWRC-AM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362A8DE72F9045482F96FD3147B40D4A944CB4205BEB5FAA4FA36C688ECA2B8FA77</stationID>
+ <name>News/Talk @ WJFK-AM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362D67BD8927D97810F95A86CA9936E04FD9440D9BF7FFFC122AA350A9642CE90C3</stationID>
+ <name>Ethnic @ WDCT-AM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362FDCC9FD2867269EB0F8E8D52F453FEC830CC3E9B601821BC0B959DE8D23D72F2</stationID>
+ <name>Ethnic @ WZHF-AM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362B31CF3474C6D75C613969EF3C3F7ABAE8AC75C979248395AC1F719E3B0A37488</stationID>
+ <name>Ethnic @ WKDV-AM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853625F65209C2453A5FC0B5F059B854D779595CEEFE7A44025CFD516E41117E50E23</stationID>
+ <name>Sports/News @ WTOP-AM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>1.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853627D323266E6E23DB284BDBCE75B11D442B7595849764E2D9E269ED947CC248C0B</stationID>
+ <name>Spanish @ WACA-AM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>1.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362415B59521C20B5673004222859302C1A5D944239D051E93E7662FCFF5A3DDA93</stationID>
+ <name>Gospel @ WPGC-AM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/District of Columbia_am.krp b/kradio3/presets/usa/District of Columbia_am.krp
new file mode 100644
index 0000000..dc96438
--- /dev/null
+++ b/kradio3/presets/usa/District of Columbia_am.krp
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>District of Columbia</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385362F515A106C97D19BD51060CC98AE036EAE33A088F75695857766454305EAA144D</stationID>
+ <name>Talk @ WTNT-AM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>0.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853628B3873B73F0F69C746B718484505927410C53C2DC101CF8B693AD09F13BA1E48</stationID>
+ <name>News/Talk @ WMAL-AM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>0.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362448F837F73F3E4A7CB70DDF6C86DC0FE673D93C18FBF838B33FFF750AC572011</stationID>
+ <name>Spanish @ WKDL-AM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>0.73</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362ADD097EF99DA2DFB12E806BBBA548A314AE08CE881A1B5C1D902B54BFEF6A3B3</stationID>
+ <name>Christian @ WABS-AM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>0.78</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536211FA706200779B44B1A1B745DD4A4CE282A51C971E0C32851AC88FA8119F23F8</stationID>
+ <name>Spanish @ WILC-AM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>0.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362455E04BDE9CA426B5646C6C9505FD12563BBB41E4B63C485DB7D437577BDCAF6</stationID>
+ <name>Christian @ WCTN-AM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536294C4A08427FCDC6F7CEEB91500C0590CDDCC815E7EAE7AAEC1F5137875F02E1E</stationID>
+ <name>News/Talk @ WTEM-AM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362222CA6399B0567870670955A1084A649EFC15A2850F957C2B5DF04502ED4202D</stationID>
+ <name>Religious @ WINX-AM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>1.08</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362438BE8F4A91EE35F5014C47671B5A333E5CB2409441665FEF51DFDA754127D9F</stationID>
+ <name>Ethnic @ WUST-AM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>1.12</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362AF9C12C76F0422FB82D813AAAC897F30C42BA3C9505A5F075C40F3B1BEE89C73</stationID>
+ <name>News/Talk @ WBIS-AM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>1.19</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536272B8AC5CAD455A8E031319FBFB63E69C9A2C781754FCBD1048B54D10241F0AAE</stationID>
+ <name>Christian @ WFAX-AM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>1.22</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362B96833C1F20FFA6ADFA7A8C5170C9CEB9F1596242AFFC38F72AEF177F70986A9</stationID>
+ <name>Religious @ WAVA-AM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536211ECFA807A0C4E38E73BAEEC3A208AE7C1D77DF87AB83E31EBD04E258710E0D6</stationID>
+ <name>News/Talk @ WWRC-AM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362825603F1E2E8D091B23DAB03AA3467CA0743BEF3E0DC1C187EC15DC3D9813317</stationID>
+ <name>News/Talk @ WJFK-AM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536277CAA4B2A36E132CA4BE71F22CA6D2A9DF5B680921235DA1D3F774EFE2549F85</stationID>
+ <name>Ethnic @ WDCT-AM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853623A172AE915528BE54B2880EE6556A725FDAB0526F6F34193A8CBE7687DCAB0E8</stationID>
+ <name>Ethnic @ WZHF-AM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853627D0C276B10A3A7A2800CFE7A1C06E86455D95606F930408525696B870346CC75</stationID>
+ <name>Ethnic @ WKDV-AM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536223D4366BFE1AA1FA0786AAE61DC489A09A02FE00529EDCD2903371D912BA3F4B</stationID>
+ <name>Sports/News @ WTOP-AM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>1.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362C00DC0852936211FD04ECF32AA55F75B8E32B4DDE038B6262770A9FED777D923</stationID>
+ <name>Spanish @ WACA-AM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>1.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362DE1EA29690A56F8D40F144BDE7CE505FE13C55F1F10247878736D7B82F98470B</stationID>
+ <name>Gospel @ WPGC-AM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/District of Columbia_fm.krp b/kradio3/presets/usa/District of Columbia_fm.krp
new file mode 100644
index 0000000..4ea084c
--- /dev/null
+++ b/kradio3/presets/usa/District of Columbia_fm.krp
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>District of Columbia</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385362E54984EE95FE99E4D66279C32F65329DEA46099FA57252C9713ABA33B3EB3BC7</stationID>
+ <name>Nostalgia @ WPFW-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>89.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853628112F5A4FF3F9B4BBAAE1F46E7C34E6F5CFACA22F2B8DE63C0D253CE98151D8E</stationID>
+ <name>Christian @ WGTS-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362410CE2629CFB33F98CD9DA2B3A639A1CB2F650AC49EC6676C0E475D7D49E8BF7</stationID>
+ <name>Spanish AC @ WBPS-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536254971F60EF52EBD35C6BCD98491AD91F1F48EDCDC7A4A3E9D20146F20C236A9E</stationID>
+ <name>Classic Rock @ WARW-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536271FEBBD0C5506185AF0E0A27992C7F878541204CF0F88D9FEB872B58368CED55</stationID>
+ <name>Rhythmic CHR @ WPGC-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536242621C6303B8322BF413EB941AB0895C40090A965589420DE6324553FF801F6F</stationID>
+ <name>Urban @ WHUR-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362F4429535969CDAC8C05E7D17B2F42762C5D9A4555CE19E3C4C458796BB1F6C8B</stationID>
+ <name>AC @ WASH-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853620AEFE7F26A587948BF2DE0648E9D048316F467B7F769579D4F7AE7985722FE09</stationID>
+ <name>Country @ WMZQ-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853621901850B6DF5A6D21CEB145CD7FD5835CBFF9F1B78B13172F4E3A64813AC9545</stationID>
+ <name>Alternative @ WHFS-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536271DDBFD4E8F13CBC85EC6A3FD1C1C6499D929ADF847D21C13D162CADC11068EF</stationID>
+ <name>CHR @ WIHT-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362286327206F66009ECE2C523B99DFE86B58E4BDB3DFB247402FECB5630338D4A6</stationID>
+ <name>Country @ WFRE-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362D2F1B46B10A0F8A1DA64090316FCE678426B9605A6B75C1ADFDC12646AEB572C</stationID>
+ <name>Oldies @ WBIG-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362C709F10F821AC75FA1DA10EA453DFB4DA2373B0DFD4E9FA9166A4E69C0272233</stationID>
+ <name>Rock @ WWDC-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536277669EF32C8F3AB799BB625F97D4EE98A27F328F3E6ECB36D3CAA928699C9658</stationID>
+ <name>Classical @ WGMS-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853622BCC343EDEDD8A39062F9FAA59055FFC9F1588FA8D22694A22B5CB46E46DF34B</stationID>
+ <name>CHR @ WWZZ-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536236433FEB572C1DD8D4FE56236899F25F62C7D6F81FB9CCC123D07B7D891BBFCF</stationID>
+ <name>Christian @ WAVA-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853622C42EC02F01F937DF97750D66834B57FC636A4428BD14EDDE1D51977F4E32F32</stationID>
+ <name>Smooth Jazz @ WJZW-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362541826F539D0142830B0206411CE2078DA59933917D69E4EB988CB602A8DA97C</stationID>
+ <name>Hot AC @ WRQX-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385362BDDE37001022F0DD31A4A44000F54DD5DD817DBF9D84A268F958A4784DDE666C</stationID>
+ <name>News @ WTOP-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Florida.krp b/kradio3/presets/usa/Florida.krp
new file mode 100644
index 0000000..3751d4a
--- /dev/null
+++ b/kradio3/presets/usa/Florida.krp
@@ -0,0 +1,1246 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Florida</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385364AF65BA1A7CE3120BAEDD13D245066009A3AA1C5D7375BF0FC0090ABC0048333D</stationID>
+ <name>Christian CHR @ WAYF-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853640AF04D1A2BE8E87183ECA43A5AF0514DCDC460ECA9C3E5AEFF0269019F0D1CF5</stationID>
+ <name>Religious @ WLMS-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364FDDD72BF773C9010D1DF45B72DD0AC01BC1FE9D56C8171DCA8E65F4B871F6866</stationID>
+ <name>CHR @ WMNF-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364A3D2F4C13606A7FBA6E1FC0F0F8511BB4DB0B60770E80C968655001380EC8F2B</stationID>
+ <name>Christian @ WAYJ-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>88.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364FA22C9DA4396B6E4F95906FFEEA80713252766CC6A2FD483024AB57277F78149</stationID>
+ <name>Urban @ WANM-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>90.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364D304F449DE11EBA2582C88ADD5C44BB49D3F0E553DD9D87D342C9076D1F03DD7</stationID>
+ <name>Christian @ WJNF-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536401B83ABFBBF39F8B9A911193D44E40BA2E98A7EEDFEF4F4E9ADEE0934618814B</stationID>
+ <name>Christian @ WHIF-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536456E85691219E97DDDF51BFE325F0B97F71562BA65C77F494189964ABF757BB9C</stationID>
+ <name>Christian @ WJLF-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>91.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853647C935BCF611AF59DDAE7AAD8C2E502466DD75AF5F4C278F7664F694FEF5800FB</stationID>
+ <name>Religious @ WAYL-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536425F10191489A09C870EA30844C54E24266403A8A5D4DDC3B1009D16D1FD2AC52</stationID>
+ <name>Smooth Jazz @ WRLX-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853647C1E7EF2EECF37EBAC8483746901E1141CD042458DC71B20FF8012C6055ADD3B</stationID>
+ <name>Country @ WWKA-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536476FC7AF9C0621DAB50E2456729E101F1070CB2F34B11FF73AFBC4D6F1E79B66D</stationID>
+ <name>Country @ WYUU-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536458157A3E3B21DCEDF91A1B1C7B913E56C39335C70B9ADEAD1137A78D482EE235</stationID>
+ <name>CHR @ WEOW-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364501B666B5F90A1A554361CC7320FD359E201456411816B9D09AB5A890DB4E445</stationID>
+ <name>AC @ WMFQ-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364B863F96D15044DF01F2D9E5E7DD83C88ADCBE63D07989EC496291460C01ECB55</stationID>
+ <name>Rhythmic CHR @ WPYM-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364F1700C2A5D70DFA7D40876B16D30F5C3B5D009268B9620B2877214801EFFDE78</stationID>
+ <name>CHR @ WFLZ-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364863A0278B1248481E5A41CFB3DCD77E3DEF6661B2AA762EAD03A9E16D0DFC6DE</stationID>
+ <name>Urban @ WEBZ-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536409D1222E6ABDA67D9D7620E6CE25138B44FE2AA4215523CE7947FDC30D3652A2</stationID>
+ <name>Country @ WOGK-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364451844F4049695AFE7CF95541D097582B17E7D011516CA6035762C51B3252A19</stationID>
+ <name>Jazz @ WLVE-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536431B45C6C78D81D23D4F27E415301E6740C16572B64799AA3C63903E53CAC96BA</stationID>
+ <name>Jazz @ WSJT-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364D9A74F3AAC3D728EC12D2E3FC391C8A53B64CA5F6520D795CBC41F2FC5387A36</stationID>
+ <name>Jazz @ WWLV-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536409893D679E5814CDC79B7DEA24E8C40650AA54F7DEF7BB6E26A62182C58A3545</stationID>
+ <name>Rock @ WPPT-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853646C9EE64546EB12823FE0F0BCB43FB8393590957BE7A39F41DC5F7EDA88DB2586</stationID>
+ <name>AC @ WWRM-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364CA3F4C4F0C37259005FB7F4952D36AEC777EC1B9ADF43EA7ABDE016B2487A481</stationID>
+ <name>CHR @ WAPE-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536463E37FAAD07C36F62C71343327B0770BA7FEEAB5F926E155DE41E1F967712F75</stationID>
+ <name>Rhythmic CHR @ WPYO-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853640D8A383A4318F631E79F1B16F6EE018544D749DAB01DD135927DA5DFA3A8CAFD</stationID>
+ <name>CHR @ WLDI-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364FD070A7052B0A3CD374A9AFA7FED25BE7DF673F786D3CC182BE875CB6F05DCB0</stationID>
+ <name>Modern AC @ WSSR-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536421C7B9631EAFBC23070CF53D8FF486171D88072FB0F46DCAC0BCAB1B5F746CD7</stationID>
+ <name>Classic Rock @ WRBA-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853649983385097EED22EE4D7BFBE4BC9F59582016BF94AA041B7547E56E57AD5B10F</stationID>
+ <name>Urban @ WTMP-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364F1BDDA3944409B856256278D082DC3F45E2AC2EA962AEFBF2E10A04363F754C3</stationID>
+ <name>Country @ WXOF-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364E7E7BEB07D98D36D95BF4CE99BCFEFE7A187CA1B95965DE8C3DA7592DAD6445E</stationID>
+ <name>Classic Rock @ WHTQ-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364F0F8CC62E6B56F2B356046B8EA8BC3127D28CB0D4112112A9068F33223BD7E0E</stationID>
+ <name>B/EZ @ WKEZ-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364EE6484D24308E6CF93815FC9F9E2705B0B14B92B4FAB3595B7513BFF995B3D89</stationID>
+ <name>Alternative @ WSUN-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536468025E1CA32D0D0163E6268319381DEE3CBEC5EBD0B53E3597ABB49A12557C2B</stationID>
+ <name>Hot AC @ WFLC-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853644E35E4B833C66E2750D3681339F5C1075E703F5F4DE26B5345CB6D98E67B2D93</stationID>
+ <name>Country @ WPCV-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536487454AC87A922443531ABCCFC917667D3FCB137DF226F92CC89614FCE6474D2F</stationID>
+ <name>Active Rock @ WYYX-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364B928CA551B050500352FD2A4EC7D6BCD97BAF9FAEA3DE2930D040FD8A1FA4D9B</stationID>
+ <name>Hot AC @ WRMF-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364400BEA1E0C6CC33C7BD15B9AF6688242675D7945F6818F258D9B82F42BC9B05E</stationID>
+ <name>Spanish @ WNUE-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536428D1FA9A74634E10FD682B7B14BFD8F7B88210E2F4A01D74AB7E4F03A2FCC125</stationID>
+ <name>Spanish @ WRTO-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853642AD25E4C93BE2ACB254946BA9D0D340D75962D6A4A83B2AAA05338D0C15E4F1C</stationID>
+ <name>Soft AC @ WFSY-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364BE0FAEB009D1C57E6770310C4C724B6BB7F946FF7C00F2A6697098E59D1BA842</stationID>
+ <name>Classic Rock @ WKGR-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364BF43D3C5291ADDC2E5BBC1506AD4186A3D5DB6D911362379FB51E0E79F792E1A</stationID>
+ <name>AC @ WBZE-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853647BDE9F7DE47B3C2C425C69264B6AC686B06EE40AB680245194598A9DE3C49478</stationID>
+ <name>Country @ WWOJ-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364125ED5C5840E39BEE358678E7B3D27086048E6C9AD933A7842A6A2481E8D06E5</stationID>
+ <name>Oldies @ WPBH-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853641F572C29A1C87723421775D09201E83770ED649A55D5A0C0ED909B14B70016C1</stationID>
+ <name>Country @ WQYK-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364CB578E5C76AE4936C3307A5AF8FFADBDB5AC201B418A9BC93E68CD12B5B73F06</stationID>
+ <name>Eighties @ WGNX-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853641069E976E8AC4FC5B71FFB2823FB79E779DDEBEC2FB0F918BFCA0F8B316AA75F</stationID>
+ <name>Rock @ WYZR-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536446F57EAC3E24BE37FCBC744F287EAFBC9FCCC47C5F9451E07415C245C04DC281</stationID>
+ <name>Oldies @ WSHE-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364845071F9D2E33B5B2E15D97E52F7ADBE055C4694B816C7C883D31CCC20EA9616</stationID>
+ <name>Alternative @ WHHZ-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364B017EB203B56F2CA3A36621E5F36FDCB82FD974F2C85AA31E5A65C391735AD1F</stationID>
+ <name>AC @ WMTX-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364B1FA106A2C316BE826FFBFFE3C560BA2BA40BA64E00F1D4091DC56E710518850</stationID>
+ <name>NAC/Jazz @ WXJZ-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364CB5BF8ED882C7853F0DDB6C73421BE904B2441F1F384A5C1C83BB45986318521</stationID>
+ <name>Talk @ WYOO-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853648BDC94AF894444AB346456AA11058884232ED9445D575EE06A01870128D2E956</stationID>
+ <name>AC @ WHLG-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536405E6F3EC80ABA8369BD28EE76BC6D53CF1FC1A4D9F005FD222693F6F4254F48C</stationID>
+ <name>Eighties @ WPOI-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364ED14313DBDF65AF2BE00ED57483F50CBC82D72E291A9EC189EE204B94B00FD9F</stationID>
+ <name>CHR @ WYDA-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536489CEF7C89EEC9A1CE27A5DB424D0B248D7322FB83C2C83B03E033C3F4B863843</stationID>
+ <name>Rhythmic CHR @ WJHM-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364D3825CFD07DBAE3E406964C81D784A83ECF3444A2E2187357612B066908DB011</stationID>
+ <name>Rhythmic CHR @ WMBX-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364A3E636AA9802FFD969BE537F163F1E6E54287765B0A32F547B7081ABAFDAD59B</stationID>
+ <name>Country @ WPIK-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364FE58C2AB2C624109085EAB3D2008AEE18BFCE04A573301432DE4BF7F977E140A</stationID>
+ <name>Country @ WXBM-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853648E4FCAA1A8DF5F2082881708D8331BD07C235A635255B5AF791117C2D1C5E027</stationID>
+ <name>Eighties @ WMXQ-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364732887EC8EFED6619242909BD74BDA88E432909B90FF1CBDE6039861D3965E59</stationID>
+ <name>Alternative @ WPBZ-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536400C18E5076668A6404B4E37F349AF84196FB76CE4926616536311ABD2398C257</stationID>
+ <name>CHR @ WVYB-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364D65C2C67B810E4431145AA1C4F9DF81F3B9FEA7B06E71790526C6C6F484B8EA6</stationID>
+ <name>Classic Rock @ WTBT-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853644BFA0F10EACEF75036EA622346C93A9BFB331722051518A6677CEDE1C9C05DBC</stationID>
+ <name>Active Rock @ WRUF-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853643BB5D09DD659DA47F873B78E9C052F9FF9CB1D6D20BC2EC17CF909F7BD3D7ADB</stationID>
+ <name>CHR @ WXKB-FM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853642E63F7029451A0FCE8376166B4348E22B1A8B91041CAFBE86A04A33E7626BD9C</stationID>
+ <name>Classic Rock @ WGLF-FM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853644E09B5D2E69704DB5DB3CED2ABA6A17F5A75663302EDDDD1BCB848A7FB85F655</stationID>
+ <name>AC @ WEAT-FM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364DF6B109D3FD9A1DF5576081F39766398F71E4E6F82B0E891E7E110C2122A5BD2</stationID>
+ <name>Talk @ WACW-FM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364EC6633B17B58F6A2B32CB83965C4ED1A5596FE5B69DFF986FC93BBA39382FFF8</stationID>
+ <name>Oldies @ WRBQ-FM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364AFE5ECC02AD56D4E5A493FABA70EC46DFBAC483A46CCC1F0D254BE898F9F130C</stationID>
+ <name>Modern AC @ WFLV-FM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853644E5B911B90D72B5616D89193FE1DA794001C2DC8C8A02F2D7D7DE7DA50C80177</stationID>
+ <name>Hot AC @ WOMX-FM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364FEBF8EEDA9BCE5971DC925C10DE7FF41007C72177A302D8D29F5564665632680</stationID>
+ <name>CHR @ WYKS-FM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364300836ED1D0DC25CA3CA867091FC32F26812D5AD2AE923658F8AC78DF0BBCDD9</stationID>
+ <name>Oldies @ WOLL-FM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364A8FAE48BAB414BCE1655450F415446B25CDA4F0489916F424FD5C584985B0BC1</stationID>
+ <name>Soft AC @ WWLL-FM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853641AB621F9139D6F09CE6EA1A5E0C1BE80FAA0B688C605F32AF56C3148ED07B43D</stationID>
+ <name>Talk @ WYNF-FM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853642F0469536791F4D135948F16E451CF1A084F929BC87F52BABD6A2E28D0F41A0A</stationID>
+ <name>Urban AC @ WJBW-FM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364D1800BBC36AC38169F7221B5D3EB108AFD5CE8BEBBA94A60E45727E38DFED87D</stationID>
+ <name>Country @ WCTQ-FM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536456591720BBEC1A669A77B6373940189D2941E0EF042EE7AA9DB2BEB29E2F9589</stationID>
+ <name>CHR @ WXXL-FM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536407EC01CDC5F03CE988DE3A1DF132EE54E3495566B5490B362C53DA32C43627E1</stationID>
+ <name>Country @ WZZS-FM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364A5791BAFD10A51CEE656E913A9124E34A896626427279937FA52AA07AA19C0E8</stationID>
+ <name>AC @ WTLY-FM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853647FB1C68067EB4A38CA7374740C3AC1CFEB82EA3FC218488A49D9FDE3BB6718AA</stationID>
+ <name>Oldies @ WYCL-FM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853646AD43DA56B6BF0743908C26FDF3EC05111875E177481C6C0B38F74484754FAF1</stationID>
+ <name>Spanish @ WAMR-FM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853645F4C023E17230A665210BBEF0D4E28EDECAA803131E21F2C4B64FD9FD797CC64</stationID>
+ <name>AC @ WMGF-FM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853648ECA3FEC6EC666D4020E40F08B7ABCEC00F2316EE26DF258F438622394214C7B</stationID>
+ <name>Country @ WIRK-FM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364E0EFBB80CE3F0143105B0257999ECE4FED481C3976970B4FDDA01F4F84784396</stationID>
+ <name>Sports @ WQAM-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364E6B198D7A92B4B25134D23F8C6993F0EC2DD9AAFEB4E58AC8A98F548CB6A019F</stationID>
+ <name>News/Talk @ WDBO-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>0.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364673F71689720E8A850D6176D32D2512AFF5B6696ECA240C6E41780B51B129986</stationID>
+ <name>Nostalgia @ WDIZ-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853643CBE97038BE066BAEBDD8B7F91BEDDDF9A62D78990D1455B0D4E130AFA3F45BC</stationID>
+ <name>Childrens @ WBWL-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536484F4DD488F4D150A205012DE046C730FB39CF0BF6F8DB315E2FCB39BEEE5588A</stationID>
+ <name>News/Talk @ WIOD-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853643C1A0727AF1B74052C5BC880DC27ED504008005693BE5227D5E0A4AACB8EF76F</stationID>
+ <name>News/Talk @ WDAE-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>0.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364C641992776410051896AB1C50DC33F879E225A917E1A2374BF5E998A6F094E65</stationID>
+ <name>Religious @ WLVJ-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>0.64</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853645526DEF328F9FC0D8B622F47B7C766C01253CE3686666084221346E6BCFD2A66</stationID>
+ <name>Spanish @ WWFE-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>0.67</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536475338F82CD7ADAD81DEDCA95DE433D89053FD7AEAEA6908E399D7A550E0245AB</stationID>
+ <name>News/Talk @ WOKV-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>0.69</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853644E9D2DA4AECD4C274D3523963146CD9FEF30FBCBD798003F0E88565C03031AE8</stationID>
+ <name>News/Talk @ WAQI-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>0.71</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853645314F355828E4FF91A9D657DA88BAA39622C95C056ACCCA123E3FBEC93D355A8</stationID>
+ <name>Nostalgia @ WRZN-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>0.72</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364D5F4AB50F1387203E391820DBF9E5BE9A3D5F5E975AA980620A617FFDC4CDB27</stationID>
+ <name>News/Talk @ WWTK-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>0.73</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364BCBE61A852068C9E56228F6CAA18CB317747B425EACCE4B55097128CF39238FE</stationID>
+ <name>News/Talk @ WQTM-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>0.74</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364F23626622BA9369310A76DA373B6E2E8C15F7B928D5EA623621BC71C39ABFF28</stationID>
+ <name>News/Talk @ WAXY-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364DAEFDC5DE9554F697710A1CA1CEDB28BD146D3B1BB2AEA9323DFF02122525191</stationID>
+ <name>Nostalgia @ WPLK-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536494F1E642313AF2F7196472CE61E5E804EBB9E8A97FC170A6FE7DA73B03707321</stationID>
+ <name>Sports @ WZTM-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>0.82</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364DFDCDA45E6B819DB081F6A9925A6A47E5570BFCD0740B04C2F6649D6D354268F</stationID>
+ <name>News/Talk @ WPGS-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>0.84</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364F20CE966262DCBBCC2B035A83E61C7F3BB08417BBFB148340BD2744C709BEB5D</stationID>
+ <name>News @ WDJA-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>0.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364ED45229D51D4C301716CE1EAB9C04B9DDF84FBDE95A72222AF9A9FC9D324C8CA</stationID>
+ <name>Nostalgia @ WGUL-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>0.86</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853643B987E2EA0F43F56B5A2AD7218E1448FBE28B6769C7AEDF7CF31BB2553F8A8FE</stationID>
+ <name>Sports/Talk @ WMOP-AM</name>
+ <shortname>104</shortname>
+ <icon></icon>
+ <frequency>0.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364F4A5E6E93CC6A118953079520E88D77EC98F62FF335C4AC8BEEE18BA851E9D8A</stationID>
+ <name>News/Talk @ WMEL-AM</name>
+ <shortname>105</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853643366325D03A8D65CD1741E72F346365293D2F33965223B3230B373D40F21509D</stationID>
+ <name>News/Talk @ WFXJ-AM</name>
+ <shortname>106</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853640434DA033A421E158003109C68AC28D4004AB0FE1CDCC41E80704B3F7A967CF0</stationID>
+ <name>Sports @ WRFX-AM</name>
+ <shortname>107</shortname>
+ <icon></icon>
+ <frequency>0.94</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364402992CF59FE7F75795605A35BF66AC3B863CFB0757005895B2556C7D202DAE3</stationID>
+ <name>Christian @ WTLN-AM</name>
+ <shortname>108</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853648940E55AD3ACE6075AC1084D9AFCF67DD2F0B1D94EB71CAE64A5EED31C8D52C4</stationID>
+ <name>News/Talk @ WFLA-AM</name>
+ <shortname>109</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364CD933280D76A8364A9155921042498AABE3C9C82E744E2154908FB9DE7BCDC66</stationID>
+ <name>Urban @ WRNE-AM</name>
+ <shortname>110</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536444BF2FB0B39852FAD1CD0D3558D44CF99E6C15B9E0D14DDC4ECB083C8D130806</stationID>
+ <name>Childrens @ WMYM-AM</name>
+ <shortname>111</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364BB4D24E7D82D79045E45682EDFDD5EA001161110E81578FB7125132005E56EBF</stationID>
+ <name>Ethnic @ WRHB-AM</name>
+ <shortname>112</shortname>
+ <icon></icon>
+ <frequency>1.02</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364F25B6AB4D77E95A1430D98C1C2E6963D05F4E110D7CA52CBE5A8FD3E36D48CB1</stationID>
+ <name>Spanish AC @ WONQ-AM</name>
+ <shortname>113</shortname>
+ <icon></icon>
+ <frequency>1.03</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364C654C2E1AB10B64D03D6B6F1F8C75E9029F054E2DFDF94D183CE31405293D3C5</stationID>
+ <name>Nostalgia @ WJNA-AM</name>
+ <shortname>114</shortname>
+ <icon></icon>
+ <frequency>1.04</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536476393A5C9A4CBA27F0A7F1C4D7081D11458016C1F19D35975A97AD9B34F76DCE</stationID>
+ <name>Sports/Talk @ WIXC-AM</name>
+ <shortname>115</shortname>
+ <icon></icon>
+ <frequency>1.06</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536420C1363D2224CB5AB9548E200E40B9A7E54EAF1E26CDECE2740CBEDFD098B879</stationID>
+ <name>Religious @ WFRF-AM</name>
+ <shortname>116</shortname>
+ <icon></icon>
+ <frequency>1.07</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364D250689BBE15616BD170CB5E9B349015D1A5C16FF57E5B915BEC79E98CEA678F</stationID>
+ <name>Oldies @ WWBF-AM</name>
+ <shortname>117</shortname>
+ <icon></icon>
+ <frequency>1.13</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364D832F450E1DB52D16DB68B5A9CC1F07B4645AF9A54EB43A899ECF6E0B9FE64E0</stationID>
+ <name>Tropical @ WRMQ-AM</name>
+ <shortname>118</shortname>
+ <icon></icon>
+ <frequency>1.14</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364C8095F3B118D22E8B5F1DBE09EEEFCE1E26FEA8FECAECC10E556CC29E62C1024</stationID>
+ <name>Urban @ WTMP-AM</name>
+ <shortname>119</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364487D98C4180925FF201FD58BCDAED70E60539288F66B3CCA6023792192D4C409</stationID>
+ <name>Caribbean @ WAVS-AM</name>
+ <shortname>120</shortname>
+ <icon></icon>
+ <frequency>1.17</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364BFDB8AE0E36D8C652791C942B84EF731295043B332A2AE46950F17EFC64E7FCA</stationID>
+ <name>Spanish AC @ WPSP-AM</name>
+ <shortname>121</shortname>
+ <icon></icon>
+ <frequency>1.19</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536495769E0DA14BC2D8BF9B2D084B7680B5AD39C7BFA2AFD3F04C9D0DDB721531AA</stationID>
+ <name>News/Talk @ WNMA-AM</name>
+ <shortname>122</shortname>
+ <icon></icon>
+ <frequency>1.21</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853640EEEDEFE92D8C018B4238056B0B6ADAD3570B0B959B2A521FD0EFED7B6FA8245</stationID>
+ <name>News/Talk @ WIBQ-AM</name>
+ <shortname>123</shortname>
+ <icon></icon>
+ <frequency>1.22</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364FDDF9549C552A7AC39A8701AEE82AE893D20AF94DFB8A92E9F871361D2099F58</stationID>
+ <name>News/Talk @ WJNO-AM</name>
+ <shortname>124</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364D3ACF8BEE51BF5AA8F1155E3F1785037E47D130B8A34B24C84F10EDB355DAF92</stationID>
+ <name>News/Talk @ WMMB-AM</name>
+ <shortname>125</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364A56CDED2AAA938DD5646F4FB6BBB99E956259D2440E76D13EE0F684DE753FED4</stationID>
+ <name>News/Talk @ WHNZ-AM</name>
+ <shortname>126</shortname>
+ <icon></icon>
+ <frequency>1.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364F733FAB7D79371AFBBA8B7AAE94E4490729EAFC040C6573165E00938B16D93F8</stationID>
+ <name>Spanish @ WSUA-AM</name>
+ <shortname>127</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853644799E39EA5798C27141E1F085222037ADD79FD9D5EFE1E90B260456807EA306E</stationID>
+ <name>News/Talk @ WNLS-AM</name>
+ <shortname>128</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364BED0CBC1D57B452D3868AAE0B773E23165ADBFEFE1FC41C84F8D6E2794B93350</stationID>
+ <name>News/Talk @ WTMY-AM</name>
+ <shortname>129</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364D92844560D7A4DC66D403B6A27AD0D193867D85FDFC2E6BC1A49025D6CA4DFB8</stationID>
+ <name>News @ WCFI-AM</name>
+ <shortname>130</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853648F861A364CC9C5638311001E4C763430335A421075A4ECE4DDD3554ADDCFF2EA</stationID>
+ <name>News/Talk @ WAMR-AM</name>
+ <shortname>131</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364C2680FD00A86D61D594A1547EA5A0EF24154C5CDF2F584DFDC34F9F8A7268139</stationID>
+ <name>News/Talk @ WJNX-AM</name>
+ <shortname>132</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853641440797E772294AC1E75B59E6C6C883075C60F305E83002F8957E2D8FABCADC3</stationID>
+ <name>News/Talk @ WTAN-AM</name>
+ <shortname>133</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853645F155C56BFEB3B5B72CBDEC11D48A78674D7B08E6CC45B5D8433D65701CC4A1A</stationID>
+ <name>News/Talk @ WDCF-AM</name>
+ <shortname>134</shortname>
+ <icon></icon>
+ <frequency>1.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853640860FF069273D118C4E70989546C7F73E032898C23E64940E0DE17CD7ACED8CB</stationID>
+ <name>Oldies @ WKAT-AM</name>
+ <shortname>135</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364BE9AE0B9C30426C71E4DFD0295C8FE45B38FCF455C6319B2EF6B044452A5F664</stationID>
+ <name>News/Talk @ WCOA-AM</name>
+ <shortname>136</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364992FE5FAF03514FC3B005588849EB47C2EC359E287E2F5BCA255550C7B932889</stationID>
+ <name>Childrens @ WWMI-AM</name>
+ <shortname>137</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536458E28E0FF05193A78ABAF29446C983C8612B86447435D3E9CBB4631BC1E4E005</stationID>
+ <name>Nostalgia @ WZHR-AM</name>
+ <shortname>138</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853645E74CA6E72C6D80AC872CF75F64603D5896A615F6031DA8111571BD62B271C4B</stationID>
+ <name>News/Talk @ WQBQ-AM</name>
+ <shortname>139</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364F46295118255ECFBCEAE951F5F762C8468A080EAF98BE74EBD9FD74043AC691C</stationID>
+ <name>Sports/News @ WAOC-AM</name>
+ <shortname>140</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536476FB65792F8E1EDC041929842B99E92396B5D9A4744A6786255EEB132F25F3EC</stationID>
+ <name>News/Talk @ WLKF-AM</name>
+ <shortname>141</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364EF4FD1D7D7CFF1D2DE8441B8B10B969150E52EEFE3AE55121A769B5219B047B6</stationID>
+ <name>News/Talk @ WPRD-AM</name>
+ <shortname>142</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536409CF35437F6E46F6BC0A6BC22333F1FD7953F0645FFE46ECD30BC5169133F03C</stationID>
+ <name>News/Talk @ WTAL-AM</name>
+ <shortname>143</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536408E999588240A6F233DC703E7E22D3ACD0AC8712DBF43E4C6CE78FEF66C84D7B</stationID>
+ <name>News/Talk @ WZNZ-AM</name>
+ <shortname>144</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364C08D50A34A245EA7997F92BCA4C7CDC3C4E89FACED2A7BC5AFBE118E8CB40027</stationID>
+ <name>Oldies @ WWPR-AM</name>
+ <shortname>145</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364B2A16D05DF166D754C070853B06AF1136F41F8DAE1F2594287FFB33BD4817199</stationID>
+ <name>Ethnic @ WPSO-AM</name>
+ <shortname>146</shortname>
+ <icon></icon>
+ <frequency>1.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536492610B37531D4111330EB3E64C431214D250CFEBC9AE990140B814CB98D0B640</stationID>
+ <name>Sports/News @ WENG-AM</name>
+ <shortname>147</shortname>
+ <icon></icon>
+ <frequency>1.53</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364D476C91ECE26629F2FF095CAED082806D033B765120AB36CFFB4C4742E544F3D</stationID>
+ <name>News @ WAOA-AM</name>
+ <shortname>148</shortname>
+ <icon></icon>
+ <frequency>1.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364CD153EEDE06F3F16F414E89CF5FAB775E600F02A9EFD7CB4CBD13E91DA9BFF8E</stationID>
+ <name>Religious @ WTWB-AM</name>
+ <shortname>149</shortname>
+ <icon></icon>
+ <frequency>1.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853648F591EB6D6CCE76E140BF5E2039D61319D6687E05C775080300EBBA72DCCBD9D</stationID>
+ <name>Ethnic @ WSRF-AM</name>
+ <shortname>150</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364CCE45752F629BEA788995B428E7D822E840EB59B9FFFF6CF7D0BC6FD376918E9</stationID>
+ <name>Urban @ WRXB-AM</name>
+ <shortname>151</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364760E3D6E5DD67AF6AC6D0BF58AAACDB33F92EA7AD62094F6C31127CE318EFFBD</stationID>
+ <name>Childrens @ WMNE-AM</name>
+ <shortname>152</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536442C69062B677E0AF75719206F7C846AA6B6E0CE561217BE18514FEACAF78048F</stationID>
+ <name>Alternative @ WBUL-AM</name>
+ <shortname>153</shortname>
+ <icon></icon>
+ <frequency>1.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364298446A1DF3CE2278C947F88EAF3F0E6E3A9F620AEEE628ECD14C689CD647788</stationID>
+ <name>News/Talk @ WTIR-AM</name>
+ <shortname>154</shortname>
+ <icon></icon>
+ <frequency>1.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Florida_am.krp b/kradio3/presets/usa/Florida_am.krp
new file mode 100644
index 0000000..9cfd8d2
--- /dev/null
+++ b/kradio3/presets/usa/Florida_am.krp
@@ -0,0 +1,574 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Florida</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853630BDC486DF4CE09329E22883A71D39C6CE9531027AA7065F1670C41640498A61D</stationID>
+ <name>Sports @ WQAM-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853632A124419F202BA66031264F51DE7B6B87D01A74E43E5ADF1F0C62B3DD19B957E</stationID>
+ <name>News/Talk @ WDBO-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>0.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536398074C54FF5DC987CAC0B07162504D011E0E9412A61B0376B2AE088478C16833</stationID>
+ <name>Nostalgia @ WDIZ-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363C8DBC4837BC3F26B8FF93357B492373142961D92F3C72F670D7799D258841D94</stationID>
+ <name>Childrens @ WBWL-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853638F3107A716E42D2B8EB4B18004C20D93B3A90EF642947E62E2D2EF028FC9EC7D</stationID>
+ <name>News/Talk @ WIOD-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853636EA6A4D04A203A405B99E8F832BFA6767B1240DCB56FE80C9570E02BB89A395A</stationID>
+ <name>News/Talk @ WDAE-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>0.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853632A7AB506E8E60881F3EDE18E525155B0701145E78355116073C44D1BC9276925</stationID>
+ <name>Religious @ WLVJ-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>0.64</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363CAB8E610285248C73A7E7F9E9D03AEFE4003A28048E4865FE48B3420A6E752BE</stationID>
+ <name>Spanish @ WWFE-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>0.67</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363847A270D9B2A7B4EFDBBEF8EDDD7E91B7F3A8C128178B9D9D12D90CC2DAB1AA6</stationID>
+ <name>News/Talk @ WOKV-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>0.69</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363D74A396502A96618FA04CA0CC872C1195E8A464C63F25355A08BCC745FBB0C49</stationID>
+ <name>News/Talk @ WAQI-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>0.71</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853636CBA01A1FAC28D045EEC3A3F07C1307028B705737FB977ACB3FA948E2D8128C8</stationID>
+ <name>Nostalgia @ WRZN-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>0.72</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363F7DB6DA7A017997BED20E3B74EA567FD22B3E6B76EDCB74126D31B29140077CB</stationID>
+ <name>News/Talk @ WWTK-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>0.73</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363613110D86CFFDADB7F81A1B49966DB8BAEE3987FC5E5F329E14E4631DEE97DD4</stationID>
+ <name>News/Talk @ WQTM-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>0.74</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363644455F5E03AA1A8D62383EA90D1877E28BEF537BB21008D02F37AC2779BDB11</stationID>
+ <name>News/Talk @ WAXY-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363F80F3A47DF0AD5997643876105A685183E2770628249810D1593C5EB2A15B1EB</stationID>
+ <name>Nostalgia @ WPLK-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853638144F15D0759C64D1C8E3255BF324ECA3F164EE5940CE6B28B2DD63850A82CB8</stationID>
+ <name>Sports @ WZTM-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>0.82</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363AC41BCC812D53412948BC05D13A2605C4E642E5B1002E3716C74FB3C333E8659</stationID>
+ <name>News/Talk @ WPGS-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>0.84</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853634D872A9972D6637B59F9A708837AE0548965020795B78A10545F665A1F9E550C</stationID>
+ <name>News @ WDJA-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>0.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363AF762990C2381341C6D9443459D06E0B804062CDC5AD138B08963EF4E4614C21</stationID>
+ <name>Nostalgia @ WGUL-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>0.86</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853631D3F5F2D5B2CC76CACE483D62FE2BA09BFC27BB7AEF415BA16F164E8FCFE23B9</stationID>
+ <name>Sports/Talk @ WMOP-AM</name>
+ <shortname>104</shortname>
+ <icon></icon>
+ <frequency>0.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363648F6345AB8BF704A77C1FA7AA0B6B6606CCC6B841D81394F9E29DF70A2EBF38</stationID>
+ <name>News/Talk @ WMEL-AM</name>
+ <shortname>105</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853637531DF4388722762D8962EC430EAC65225B1628773D16C73E08A56833A971CB3</stationID>
+ <name>News/Talk @ WFXJ-AM</name>
+ <shortname>106</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363EBB7E217BDE3BB056390067566570C0507176870E9C3C21C352773E2DA7A4E4B</stationID>
+ <name>Sports @ WRFX-AM</name>
+ <shortname>107</shortname>
+ <icon></icon>
+ <frequency>0.94</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363F35671E76F59C3674FC63BC5EEF028CBD97FD8A5212F644F0CDFF48D5277535C</stationID>
+ <name>Christian @ WTLN-AM</name>
+ <shortname>108</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363A3B8B2F3DBFD3E3DCBA2BD121ADE6AC95D9A7B4150A0AB95C816C144294F7836</stationID>
+ <name>News/Talk @ WFLA-AM</name>
+ <shortname>109</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363E8C9C0E567BAC4A739420FF7A3659403D4FC4BD1828FF94495870F1324CAAF21</stationID>
+ <name>Urban @ WRNE-AM</name>
+ <shortname>110</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363F42A7CF1F9926D7604E10BFF9EF6179E1211C22A29DA80D489E583A57C01FE9C</stationID>
+ <name>Childrens @ WMYM-AM</name>
+ <shortname>111</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853634DEDD10A49D5092CF46B72619E4692B662AAF4346F98EB0CE48ACCC918892BF5</stationID>
+ <name>Ethnic @ WRHB-AM</name>
+ <shortname>112</shortname>
+ <icon></icon>
+ <frequency>1.02</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853631DECD0669A15A397D4148E98BC7334D80251618667DBC4103688E747BD99ABCF</stationID>
+ <name>Spanish AC @ WONQ-AM</name>
+ <shortname>113</shortname>
+ <icon></icon>
+ <frequency>1.03</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363EB8F7CDC6EA0A7F01512B5448B758A03C6C6A3767BC26CDFA2F13E2D4CF18465</stationID>
+ <name>Nostalgia @ WJNA-AM</name>
+ <shortname>114</shortname>
+ <icon></icon>
+ <frequency>1.04</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363F4F03B2E03A8A665E54253A74E727530A23F652921A35B79DF323192E54CDF80</stationID>
+ <name>Sports/Talk @ WIXC-AM</name>
+ <shortname>115</shortname>
+ <icon></icon>
+ <frequency>1.06</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363D6D3A12BC3518DAF24D8371C6F51F7FAE284F0864DD2C2162C977E2AEFAF7448</stationID>
+ <name>Religious @ WFRF-AM</name>
+ <shortname>116</shortname>
+ <icon></icon>
+ <frequency>1.07</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853637D2B39631B5123B5EA5CEF8F420A7208086AF2E56C2E30F1FE9A56A64A722EF0</stationID>
+ <name>Oldies @ WWBF-AM</name>
+ <shortname>117</shortname>
+ <icon></icon>
+ <frequency>1.13</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363636C8D9A564DCFC5DE83BF419CE31F76167BDCB58EA2BF0592F75AED54529626</stationID>
+ <name>Tropical @ WRMQ-AM</name>
+ <shortname>118</shortname>
+ <icon></icon>
+ <frequency>1.14</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363DF8F4F10BFEBF9895FCC0BFB0B1FA1EBA274FEEA7EFDD7EE202D179BED63AC99</stationID>
+ <name>Urban @ WTMP-AM</name>
+ <shortname>119</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363C42144504CA8CA7053E515A644670BFC10D18800CA74228A4F5B4974D6CD596F</stationID>
+ <name>Caribbean @ WAVS-AM</name>
+ <shortname>120</shortname>
+ <icon></icon>
+ <frequency>1.17</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853637248355967B33BAE1B069D45E784719BFA4913E71849B00450EA83215C729890</stationID>
+ <name>Spanish AC @ WPSP-AM</name>
+ <shortname>121</shortname>
+ <icon></icon>
+ <frequency>1.19</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536308347917C8794B74A5EA09435B5287AD6A8BAA372E4382B1D4E11A6346A5F630</stationID>
+ <name>News/Talk @ WNMA-AM</name>
+ <shortname>122</shortname>
+ <icon></icon>
+ <frequency>1.21</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363824DFDACCA2A3BB14D315880A8431F081258FCEC37A7156ACBFDDEE2A72454C1</stationID>
+ <name>News/Talk @ WIBQ-AM</name>
+ <shortname>123</shortname>
+ <icon></icon>
+ <frequency>1.22</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536358D7DF0794123AB61FF41A46E446C49021753F9E51F3DCA8E2488DC79089C25F</stationID>
+ <name>News/Talk @ WJNO-AM</name>
+ <shortname>124</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363A7A8C6353F3C8584D3103A5606816407ED632AC43BC074E72E48FFD5B944E416</stationID>
+ <name>News/Talk @ WMMB-AM</name>
+ <shortname>125</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363E03E9C14F8A078B305F53AF543F79DC06D0A4CF05AB0F95D85C89D64589F4F28</stationID>
+ <name>News/Talk @ WHNZ-AM</name>
+ <shortname>126</shortname>
+ <icon></icon>
+ <frequency>1.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853633948271E9CE6215AB5346097B45D3A02E0DFDD810F144A3B7DD1F14C41B0980C</stationID>
+ <name>Spanish @ WSUA-AM</name>
+ <shortname>127</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363D4EA68F930C7307056BABEC6D2BF85633F2D3CC5A8542ADF25E61C48568C2C90</stationID>
+ <name>News/Talk @ WNLS-AM</name>
+ <shortname>128</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363A8D12A45852BDD876075C3E6E6CCDC004848631B6D1F187980A75A3881DF1E9B</stationID>
+ <name>News/Talk @ WTMY-AM</name>
+ <shortname>129</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853638ED8592E33FFF374A977C9F813BE14645D7E1C13AA317FA5E6D8AFDB4FC4B13D</stationID>
+ <name>News @ WCFI-AM</name>
+ <shortname>130</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363033213BFB9DC8C01FD764AE9AC6EE2F081159AC29771B5B593C4B05EEE690EDC</stationID>
+ <name>News/Talk @ WAMR-AM</name>
+ <shortname>131</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363259C529F309D34E62D564AD2844B083DAE7F396D69AACDD93E9AAB51BB3F1991</stationID>
+ <name>News/Talk @ WJNX-AM</name>
+ <shortname>132</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363542F925098D4AC33715D10074C82A700D675983F11C71904CCAC525D1D676C67</stationID>
+ <name>News/Talk @ WTAN-AM</name>
+ <shortname>133</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363B0C49E8003A5C7E92EFB2C515D4183F926351E3B8FBDAF3B1DA1CCE46F1D6FC4</stationID>
+ <name>News/Talk @ WDCF-AM</name>
+ <shortname>134</shortname>
+ <icon></icon>
+ <frequency>1.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363E58C385DA69B2C4C20576C97321BEBC54BBEB895630C6454ECC5378ED1A6C723</stationID>
+ <name>Oldies @ WKAT-AM</name>
+ <shortname>135</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363C3E682FE5C803CACF38826BC0EE64E868CC861C8C171CA0216D12A203C9F14AA</stationID>
+ <name>News/Talk @ WCOA-AM</name>
+ <shortname>136</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536329D679B2C97CC0BE775B32587AEF1C0E8537BD4D1FEA0EDDAB1F110B417E5337</stationID>
+ <name>Childrens @ WWMI-AM</name>
+ <shortname>137</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363C7A2239122074B28D84060A3A6EA64FCD05B053FE62679F6B9F81427E85BB209</stationID>
+ <name>Nostalgia @ WZHR-AM</name>
+ <shortname>138</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536390E57D755270ED7A7DC20A50760DD6309F047B05C3C4B097342FDA25C4D6EBE9</stationID>
+ <name>News/Talk @ WQBQ-AM</name>
+ <shortname>139</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363B695BFF3F39B93B198817B18A0518712D19D8CE73457BF5FA896F560F63C7EBD</stationID>
+ <name>Sports/News @ WAOC-AM</name>
+ <shortname>140</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853648FA91A2CCEFC718B3E8C41759CB698A070D19C6BC49CD4E3A297BA4C92F55CC3</stationID>
+ <name>News/Talk @ WLKF-AM</name>
+ <shortname>141</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853640A7D0982D34CC7A7EC4876665FCCC44FB4FE6233CFCECD5D936DF4ADA3717717</stationID>
+ <name>News/Talk @ WPRD-AM</name>
+ <shortname>142</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536481C8895F3D7F29635CE52FDE46F88D3533873D1A1E269DC1FA64EFCCA101252C</stationID>
+ <name>News/Talk @ WTAL-AM</name>
+ <shortname>143</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853644B7FFC05127C427C96B08464B8CD85BBF9B2FF767F4BFF819D6F9AD4339814C2</stationID>
+ <name>News/Talk @ WZNZ-AM</name>
+ <shortname>144</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536448CA888E925D745715B8F4674B04720A60C92786A7BC0E46DB533D39A5E4692A</stationID>
+ <name>Oldies @ WWPR-AM</name>
+ <shortname>145</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853644D934A908DF4DFE616672F5761BA4835A22609C3BD24BB535D7AA9FFCF1FDE98</stationID>
+ <name>Ethnic @ WPSO-AM</name>
+ <shortname>146</shortname>
+ <icon></icon>
+ <frequency>1.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853647ADFE7EA6D854BFBB7000FDD9FCCFA42E2BAF0EC0D3373DEBB32A7DD6CE8A8E6</stationID>
+ <name>Sports/News @ WENG-AM</name>
+ <shortname>147</shortname>
+ <icon></icon>
+ <frequency>1.53</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536420CD28FD8EE8FB6CF831203849EBD037991CB5B842CB508078B78D6ACECEE737</stationID>
+ <name>News @ WAOA-AM</name>
+ <shortname>148</shortname>
+ <icon></icon>
+ <frequency>1.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536475E2BF64E030BD5995CCBA8E22A7DB0ECA4FC87A26B24337C8F655DADF67FE55</stationID>
+ <name>Religious @ WTWB-AM</name>
+ <shortname>149</shortname>
+ <icon></icon>
+ <frequency>1.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364F0650D89C20C1A598BB4515B3438423DCA083D910CE39D19E73F1883C1E8E8E9</stationID>
+ <name>Ethnic @ WSRF-AM</name>
+ <shortname>150</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536476347C3B5B2BC9359ABE8BD42967A6BECAAD273C2314F287321C8C48F5CF1D80</stationID>
+ <name>Urban @ WRXB-AM</name>
+ <shortname>151</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364CC42D96C30B729DAB7BBADFC883C3A9C85BB3A3D85BB0DC77CF834D6F2A003CD</stationID>
+ <name>Childrens @ WMNE-AM</name>
+ <shortname>152</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536417E86C83C420EDCD9EC4DC2153B332C73E800B2B0C64FECDB794C8EDC2265459</stationID>
+ <name>Alternative @ WBUL-AM</name>
+ <shortname>153</shortname>
+ <icon></icon>
+ <frequency>1.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364704DC64CBCB5ADF941D8C20C421D6ACF52302CA33046D07055062072C061F0BE</stationID>
+ <name>News/Talk @ WTIR-AM</name>
+ <shortname>154</shortname>
+ <icon></icon>
+ <frequency>1.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Florida_fm.krp b/kradio3/presets/usa/Florida_fm.krp
new file mode 100644
index 0000000..b4f2cb8
--- /dev/null
+++ b/kradio3/presets/usa/Florida_fm.krp
@@ -0,0 +1,686 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Florida</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338536331F9802F064148485A3652434470BFFB24503A829CE7A719535FBDA5EC304EE2</stationID>
+ <name>Christian CHR @ WAYF-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363ABADCE98523FF03B717AE51E413C8F21C01289DDA4F43DC31DA1F4D3BC7BB8CD</stationID>
+ <name>Religious @ WLMS-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363E85318AFFDDB36A8BBD1443439A2FD04FD758FBEC456AFBD6D34C4A48B64084B</stationID>
+ <name>CHR @ WMNF-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536327E6364E0B5F789117B9651B892FEEDF9A8B8F5DFD8B3F188F0C58AE400A939A</stationID>
+ <name>Christian @ WAYJ-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>88.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363AA85116AC428F379BF55121B26106C2488D816B6B158AA8FE754427FC857F7CB</stationID>
+ <name>Urban @ WANM-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>90.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853631B6B6014F67B01D52827CA97503695407D628F537DBDFB608CA6E627626F28A9</stationID>
+ <name>Christian @ WJNF-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363BE713A82B8F61A23BBC6BDDBFF3CCE100229648EFE97A7219712634B396DF224</stationID>
+ <name>Christian @ WHIF-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853630B32E641E14A627788EE7294416C6AE7F7563BC7F7EFC9D0C4EFBDBDE884C17C</stationID>
+ <name>Christian @ WJLF-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>91.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853634205C6295E6139564F3FB7F872394DF111A81144E1F5D61C7581727290476F91</stationID>
+ <name>Religious @ WAYL-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853639F2F31EDBE844CD22C82509526C0E424FC2C79B4139379D33008F78BB0D9CC1D</stationID>
+ <name>Smooth Jazz @ WRLX-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536340A05BAD3F42FC782E8FEDEABDFAD528BF28DD878440E7910BE9FF062A72B546</stationID>
+ <name>Country @ WWKA-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853633C3DC1C954E7D0646C829A5CB0625FB84307B5AD4A57A21C8427F7532EF3EDA7</stationID>
+ <name>Country @ WYUU-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363504865646A218839CF7B6686D1462832EF4AA8530018850E444B72930C9167C8</stationID>
+ <name>CHR @ WEOW-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853638700FBB0143157D75A27F38B5A84CBC9B0B4F091B2ABB949DF68AB4D49744F35</stationID>
+ <name>AC @ WMFQ-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363F0618AB7E618F02FFB411861985A2A0AC51A7750D8C8592FBA483DA984CAAEF2</stationID>
+ <name>Rhythmic CHR @ WPYM-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363C9C6C29301E22935BD4355A7321C61B5BCBE283B733CED5573B6E8F4F8B0BFFA</stationID>
+ <name>CHR @ WFLZ-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363F289D06F891BE0E20E34723695A272CBBE81913286D4966798297261BB333335</stationID>
+ <name>Urban @ WEBZ-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536327581AE5BCEF05715B0ABA206B8024A80461AD003359744CB5364FD301AD3C3E</stationID>
+ <name>Country @ WOGK-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853636802DD8F6B20E1A54BC2AFA1E05B681F2A7472BC78F67EB50FDBD13AD351EE3A</stationID>
+ <name>Jazz @ WLVE-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363E2B0E1361ACC2FFF603646A117B3E2A06FB733C79858F86476F8DF6822194238</stationID>
+ <name>Jazz @ WSJT-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363FE5E07CA253822C63D44F02528FC7BEF5A8790758BEDBE9E0B0CAE54F02C2E94</stationID>
+ <name>Jazz @ WWLV-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853635BE7782F3A7F771CDF7D039F839B27BBCAF2399D42CBBED513EC6ADC707643F3</stationID>
+ <name>Rock @ WPPT-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853634E5615021897F49370AE5263DBDD3E2056003DADD1887ECA5B532EFDE1766884</stationID>
+ <name>AC @ WWRM-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853632FF66BE92BDDA5D88CACCDDF1EC95A9134D9D3C538C671C5F2C1A9C6AF7F993B</stationID>
+ <name>CHR @ WAPE-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853639E1E016563C1D9DB10CFE1093ACAAD277116FEF2CB27D5BA72189979B3897305</stationID>
+ <name>Rhythmic CHR @ WPYO-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363605D937643F8B33F04AD8AB05F41D86BDD65F2164EC29222E44439A9E23EE8F1</stationID>
+ <name>CHR @ WLDI-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536316EC3588ED19D2D7C737C534CF7659195853EAE035D9BD1DFE330B54C67FD746</stationID>
+ <name>Modern AC @ WSSR-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363CF08A1EF603BE4C5385D11F027E98C38A2E06E9853218B82F8ACCA9729BA0553</stationID>
+ <name>Classic Rock @ WRBA-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363B70FECDA132BF57FAD030891C65CE88BDD6FF3A8D79F1272EDEDB35D3EB94F74</stationID>
+ <name>Urban @ WTMP-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853634E3A3B0E4F899EBCB198D232FAFE121CA9B5DFF1E48B6BF64BFE1E11800FE9B1</stationID>
+ <name>Country @ WXOF-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536357B3DFADD91A86BB944AFC334AAC8E3C52A8584BEA460DF16A51F8262AE19B3F</stationID>
+ <name>Classic Rock @ WHTQ-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853639B61D35CD412669A191521451952847CB1153E3D4D954E0769378141746624BF</stationID>
+ <name>B/EZ @ WKEZ-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363C6161B863F92F2AAB15E636996FB81DF9AA1436155CEF5E37ECD31D1E7DF4FC5</stationID>
+ <name>Alternative @ WSUN-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363AD1CDE6D0976ADFABECC61B355C17E18F9C3E78A4C1D1FE142DBB134D1F11960</stationID>
+ <name>Hot AC @ WFLC-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536359F4448D8FECFF6190420CDF1B85C6742211B5EF9A8853C29DFF6D9850AC7130</stationID>
+ <name>Country @ WPCV-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363345985CE8560E34709E06F3D6B8969221DEEEB8F4B6CB637274F6ECC1241F540</stationID>
+ <name>Active Rock @ WYYX-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363319832E9885C70F484117C477D51C5C3EEA5B5E0F32CB78570096FD22B22D3C4</stationID>
+ <name>Hot AC @ WRMF-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363351B37EC999426F82E28B12DF43772E53C0347F9DB9117D79A2217D315217FAD</stationID>
+ <name>Spanish @ WNUE-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853639520D0A6508372FAD12BEF0A73287CE87463387F176A0EBE27C1ED293F737C08</stationID>
+ <name>Spanish @ WRTO-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536340D470B507EBC53957CB2749E620FB63EDFB9523A01512F02F4F6B0247FE0E83</stationID>
+ <name>Soft AC @ WFSY-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853636F0EAD9C999C0DBDBB1931D0725BE18A3B8E664D629F3C98F4170217705C5687</stationID>
+ <name>Classic Rock @ WKGR-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363851DAB3B0240FE0382F5126985F380259CA1D6BE499CB91C9ACEACC53AFFF509</stationID>
+ <name>AC @ WBZE-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363A5DBFBF720472FF646E59FBF4962DB31414EA4A364849CAE09A1985C6140086A</stationID>
+ <name>Country @ WWOJ-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363ABCF0166F38FD81A77273C0197A0095F2B121E3C1517946F27B79ADBC389CD45</stationID>
+ <name>Oldies @ WPBH-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536329554AC4BC4C0FD37E791AD0B2F7C5C7950A9E50276DD7E7FA7C5475E0CB8322</stationID>
+ <name>Country @ WQYK-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853635B862BE8C0D5688C31A8AC2B9208E4A00D7C201BDB049CADE658D47669001887</stationID>
+ <name>Eighties @ WGNX-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363942C35E36A5BB7654D8F7AFF8161D9022C2B0E93C4E897AC791FC12DE1EBD783</stationID>
+ <name>Rock @ WYZR-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536377430787FB5B8F00C2CEE81DD143C487EAFD43C5BA3EB131B2156F16EE56D5A3</stationID>
+ <name>Oldies @ WSHE-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363F3019A5C62CC3AC4F7E3766C3BF16B18383B28D694559D5AEB2D480D47BDD592</stationID>
+ <name>Alternative @ WHHZ-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853639A926679E222087512F77D1DD39F766F3FD9043162D6A360C68F5E7AB65887CE</stationID>
+ <name>AC @ WMTX-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363135808B43FF44090BF0A787AB4FD7A3C2625F5FC7EB0220EADBE2E0E934E7689</stationID>
+ <name>NAC/Jazz @ WXJZ-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536343ACEF3FBD0A0DFD1D0E29716F32B6D5B496FB958C35AC41BEBB9FC55489A680</stationID>
+ <name>Talk @ WYOO-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363D3D0BABDE7615047F7330FA230E1EFC079FEBFDB9C77FE8A5A739B2C5F3F1728</stationID>
+ <name>AC @ WHLG-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853636971D4F821004CDF78CDE7D9B318C40363FEF3E7C7C60397B9E779D13EEEE808</stationID>
+ <name>Eighties @ WPOI-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853630E697AB5F293D1BC5919D07CF382CA7A9E74204B97CCB850D8BCC68ED3FFD765</stationID>
+ <name>CHR @ WYDA-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363A3AF10DD6F1B5137745FA76308FA16020014F386DA2B37E1C198988EE18344DF</stationID>
+ <name>Rhythmic CHR @ WJHM-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536336B139D207D2D4A0FF3692F9273D826442315DAB36043E98A262B88D203569B8</stationID>
+ <name>Rhythmic CHR @ WMBX-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853639A61DBEF951E1F118BBD48A99B3688E235933F531D78B1AF2F43378F30A518C6</stationID>
+ <name>Country @ WPIK-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363CE9A3365D35E1A88115FD158EE36A45C0132A280B24116FE34A829C64A45EE56</stationID>
+ <name>Country @ WXBM-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363B4FDF19FD7B019BE4105B17FB603B3FC20A285454EC58B7DEDC452715F95A637</stationID>
+ <name>Eighties @ WMXQ-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853636E763880E59DD2C2F23FF8730AAAF7A6B122B6EBDB081C512A436A34E8AAE9EA</stationID>
+ <name>Alternative @ WPBZ-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363E276D08AA4566768CC3B395386F9F7189E3CA214DE315DC39774118E8F64C654</stationID>
+ <name>CHR @ WVYB-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853630302948AD5ED8FF1EB4E867D06AD37FAE9CD04CC12A5FB44A500DB5815B0E789</stationID>
+ <name>Classic Rock @ WTBT-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853631557FFABD661F1CD5035092650BD25BBCE154ABC29B9F833B270EE8540C157DE</stationID>
+ <name>Active Rock @ WRUF-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363BB8AB72D055196CF7BBF7148AF1664A808B2EBBF2222C03DB9477CE6188BBC0D</stationID>
+ <name>CHR @ WXKB-FM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853637E8BF3F419B67C9462BABB5DE2B472FFE98608D907C92D91BACEB22BD398D647</stationID>
+ <name>Classic Rock @ WGLF-FM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363F4528EF18783EFA0651C6CA4FE19600292E435C032C4E367E018BAE58A322C30</stationID>
+ <name>AC @ WEAT-FM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536351E4AF88BD74807D2B0B153BCEB2424FAF3AB0121049FB88536BA777CCB85D60</stationID>
+ <name>Talk @ WACW-FM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536370E74AA3E08D0B0D0372AA0D4508F26CDFD3C38B8901438C76050C92E9087C73</stationID>
+ <name>Oldies @ WRBQ-FM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363B956A6D17B7B10A22946CB2CCF910EFF98C2AB3623A2FC63BE46BF02028B84B6</stationID>
+ <name>Modern AC @ WFLV-FM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363AC303C1D8542BCB1CE6224E5668406544B63CF8E3ABF155E9F2FB8834AE9341A</stationID>
+ <name>Hot AC @ WOMX-FM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363EED3691C0CE12F5062E663E5F534459D9038131797E90B76739798FB2F4A984D</stationID>
+ <name>CHR @ WYKS-FM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853630E18F18377AB69EE5BD585030FEFA994246DFF56FAE0FE25AD5CCCCC034B32F7</stationID>
+ <name>Oldies @ WOLL-FM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363ADC3951C8765911B1DBA1AFA6588CDD46C8F7BACAD656AD845C10005AD26342E</stationID>
+ <name>Soft AC @ WWLL-FM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853636C6BC365581179508218F76EDB0FC49B811F4865483AC0D53C95E9FF8C36096F</stationID>
+ <name>Talk @ WYNF-FM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853635FBAB32AB6055FA055AD978B5C1B148A2F033299CE4B98AB24CE3739BCA74F7D</stationID>
+ <name>Urban AC @ WJBW-FM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536333B04AC85A9F88D06CE6B270F87FCDE59999C7B6B49EA68BC750DB9720E7F9F5</stationID>
+ <name>Country @ WCTQ-FM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853632E4B2FF8A60F56EDEE0036AA2BD1B919977E1B6E151ED7CAC92E0C244F9E3E7C</stationID>
+ <name>CHR @ WXXL-FM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363B3913E335AE8EB7D47F2825F96C2A676FAF2D87FC5581EC7860BB2B22A446E32</stationID>
+ <name>Country @ WZZS-FM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853630C0C1586C492B76DAEDF071B9F88E6BC421F0F656B3326F5943A21571643B8AD</stationID>
+ <name>AC @ WTLY-FM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363E75A126AEB3EF8006DBE680F9F4B7EC8A4D2DBA33373C04511CE8943AEB2E411</stationID>
+ <name>Oldies @ WYCL-FM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853639373DFE758731269BF1845C5515476738CBF44F58EBCC1C5B97E427F535ABBBE</stationID>
+ <name>Spanish @ WAMR-FM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385363C4E4ED98D7F767A13C3FE6EB0C3A20BB3BFF00E4EE4977A7281B1D4E8A3EE054</stationID>
+ <name>AC @ WMGF-FM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853636DCA40B95B5AC271868BFB750045AC20BA125875C4797E1486556E1B83F574F4</stationID>
+ <name>Country @ WIRK-FM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Guam.krp b/kradio3/presets/usa/Guam.krp
new file mode 100644
index 0000000..6336c5b
--- /dev/null
+++ b/kradio3/presets/usa/Guam.krp
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Guam</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385364F71C16C9168566D0ADE381CF6ABF6DD98752DADB1CC1F2D33B986D3ED9A4138F</stationID>
+ <name>Christian @ KSDA-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364651F0C0C7067990A895EBD4B5BEA2FC3A85CD60BB969238F6F4452443B18ABFE</stationID>
+ <name>CHR @ KUAM-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853649E608400193A5BC41FD90F697B25E03A5CE65F9863AF7B3E727E1A201E688F76</stationID>
+ <name>Rhythmic CHR @ KZGZ-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385364F31AB091FBE1231DC7FE9E089B12D9B946931B44541CED4ADB272BBC1E3C2910</stationID>
+ <name>CHR @ KOKU-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853640ECCF54AC9FDD29901DF548A478AB72800F8ADEF5D67AB16553DF87D3F1C66B4</stationID>
+ <name>News/Talk @ KGUM-AM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>0.567</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Guam_am.krp b/kradio3/presets/usa/Guam_am.krp
new file mode 100644
index 0000000..df1c876
--- /dev/null
+++ b/kradio3/presets/usa/Guam_am.krp
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Guam</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385364A8E214E77A6501C61787A8CFD4743EFD97CFF1C5BDE80519D02C0846EB73CE6C</stationID>
+ <name>News/Talk @ KGUM-AM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>0.567</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Guam_fm.krp b/kradio3/presets/usa/Guam_fm.krp
new file mode 100644
index 0000000..a7c65e8
--- /dev/null
+++ b/kradio3/presets/usa/Guam_fm.krp
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Guam</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338536424701C27C00D1116D8EA37A096BBDA439108424A2BB23B584E2A982F4C3C361B</stationID>
+ <name>Christian @ KSDA-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536425AC2E22439676A76ACA328999DD80449D513B1692C0864BADF4DA898B5D79DA</stationID>
+ <name>CHR @ KUAM-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853648DDCF21AE38322028E0E2649A516287F224150F988F1894EA4565B3CB86A529D</stationID>
+ <name>Rhythmic CHR @ KZGZ-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853648C7182123AEFCEF8FE9859D7C2571DE7185B5034949C59DA9D07ED3B85CA929C</stationID>
+ <name>CHR @ KOKU-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Hawaii.krp b/kradio3/presets/usa/Hawaii.krp
new file mode 100644
index 0000000..8665468
--- /dev/null
+++ b/kradio3/presets/usa/Hawaii.krp
@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Hawaii</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338536599B5051BFAD60082198D265A6114C9D8D6D5D6EC7B1B03DC66E790E9967118C4</stationID>
+ <name>Alternative @ KTUH-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>90.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365813FCC456B2C72F291E619B18B7E97EDA0059BD4B1F066DCEEFC682C577C958D</stationID>
+ <name>AC @ KSSK-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365198C172BCCC2CE3F3D2D1542C521CDD4D010B442904433A5B7C1C3D4E06A9BD3</stationID>
+ <name>Eighties @ KQMQ-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853652FC762CCCBA3C29B7CB455CAF60E2A00EE91766648331B4C302932A7BC76DB11</stationID>
+ <name>Hot AC @ KQNG-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365AF878E715C19DEC0D5B3BC2019D48FB2F252D11ACDBAD1A142D4018F615FECE4</stationID>
+ <name>Rhythmic CHR @ KIKI-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853659CA534E95CBB4B3F3AE9D8264D9159B3ACF32E75AF19BCDE699B9B7CC47E8128</stationID>
+ <name>Soft AC @ KUMU-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853652902678620D02893ECA19AD5CA554E50A668EE9EF9D70B133B6D105262296190</stationID>
+ <name>AC @ KAOI-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536533BC3D51CCECAAD3CF2AF3475308D0E6E8EAB2A7C22F908D4933245F99B03CD9</stationID>
+ <name>Christian @ KAIM-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365B6E6ED5FFC9B735252C4B90E703FADCBAFAEC346DB3CC3DE14F913618E597F94</stationID>
+ <name>AC @ KRTR-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536539890C263F730790F62408388386232A6BFE100E6BF6EA057B4CF4F5B37103C5</stationID>
+ <name>Alternative @ KPOI-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365CFDDE5179325961729E42A50135A77787D1C7E6DD6A5D4B982765061A32A1DB5</stationID>
+ <name>Ethnic @ KDNN-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536592A7CC72EB8288B05884C97A9BF85B14E3BCF1F558B10AE6110D3BDFF397647B</stationID>
+ <name>Hawaiian @ KCCN-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365A7FAC0282C4706E98F2CE4377776E0D8A712B524042414610F15836265BD3EBB</stationID>
+ <name>Hot AC @ KUCD-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365DCE61679BD5D21396A72E5726B02001B722EF1511A18616E9004FBF7F215F14B</stationID>
+ <name>CHR @ KDDB-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365E66F5C5CD3B0F82645EEA430B4C493F1E8AE557230256FFAD6651DE6788FD50A</stationID>
+ <name>CHR @ KNUQ-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365B21F0950F8985FF3BA5034961828BE49A0CEE97A9F415CCB06FF1D41019E75C9</stationID>
+ <name>CHR @ KXME-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365C3F9D9B3E2D6189CCC18BB1042532687172369DB1DF8ACBECA935EF07A7FDB1D</stationID>
+ <name>Oldies @ KONI-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853651B2046A39D7F22B7A2F16E1BB03CA8E653DFE2F69A70E3C93FFD265D97984868</stationID>
+ <name>Ethnic @ KINE-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365FFD8357ECC0E2CB9A304EA2100B9AB60398480B441A108420B012DE81A2824DE</stationID>
+ <name>CHR @ KPMW-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853652A2E4BF639CA15DDFE3122591BD835E80307F7C49E14E432BC4A301C9A6BA881</stationID>
+ <name>Classic Rock @ KAHA-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536553435CDC3288466FF94CA890CB70133A82506107B1F6AB1BA406FBDD68AD0F84</stationID>
+ <name>Oldies @ KGMZ-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365DC6510E62F9E72AE30E8CC2B3596EA2BA9A43886C00B8208D84B4A88C49E9C77</stationID>
+ <name>AC @ KQNG-AM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>0.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365E54C557A5B62B9B86556259587FA667ECB82DA18866A2CA8B0A0682FB91F31BC</stationID>
+ <name>AC @ KSSK-AM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853654AFE81CE0AD94113741834B323A2EF75E0B69C18DAFBE9B7D9A0BB51C51F2A5D</stationID>
+ <name>News @ KHNR-AM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>0.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853659500C24956E4D1E45C588BA51B4EC42EB7CCF25341EF34D231BA26FA2EB8DD3A</stationID>
+ <name>Childrens @ KORL-AM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>0.69</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365BF9DCD089AF32B2AC00E77E708EFDAC5F35D02C830DB845A2BBE7EA6F133347D</stationID>
+ <name>News/Talk @ KGU-AM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>0.76</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365DB84668EDFA99E50122EFC9C7A13E975D6B1B2D32A0CFF945204DAE6870B8FE8</stationID>
+ <name>News/Talk @ KHVH-AM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>0.83</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365D73472E48F3885E44F39380FAA38A0778606147002B08FB6B92696CF1EAE914F</stationID>
+ <name>Country @ KHCM-AM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>0.94</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536511ABB049E13B23A6AC45597C8A072B8678D3E1BE4AC8D162DE02D26FAB31DBE1</stationID>
+ <name>Business Talk @ KHBZ-AM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853652771FDF8497755B1164BF0185EF9ECA127C41E6DE60C7071359877B5C960CD03</stationID>
+ <name>Sports/News @ KAOI-AM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>1.11</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365BE9616DA72CAF67F95D468512ED12ADB19091DFF0C9EF75C0F8E8C6D7E6107A1</stationID>
+ <name>Sports/News @ KKEA-AM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853651BFDB3089A46A6D22E4A5DFA85B76E4FF3A472E2FA2AD6BE050FDA36B9BE698F</stationID>
+ <name>Nostalgia @ KUMU-AM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>1.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Hawaii_am.krp b/kradio3/presets/usa/Hawaii_am.krp
new file mode 100644
index 0000000..82c520b
--- /dev/null
+++ b/kradio3/presets/usa/Hawaii_am.krp
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Hawaii</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385365CDAD63C4B1514D0A472FCFD3F114925845B73AD1A94F0370D37CBC5FB8413B5B</stationID>
+ <name>AC @ KQNG-AM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>0.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536536E4DC37CA67452E1919C65D9178A32FAFF507ED9FAEBAA8833136C5EB10EDB5</stationID>
+ <name>AC @ KSSK-AM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365DE2E0133291A7FCA4425811E39DF0F2C5E5D0AA71A1C671B0D51DE7576935E47</stationID>
+ <name>News @ KHNR-AM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>0.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365CD301BC7EE4D4056B472D86A2CC9620D6B58C1EF1FF8EAE79BA44E6F730B6165</stationID>
+ <name>Childrens @ KORL-AM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>0.69</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853655439D70AA3778F25B5CE603A168BEDE4BE93AE11BD44A6D71D10EA042E4C6A71</stationID>
+ <name>News/Talk @ KGU-AM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>0.76</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853655FC5E44326B8CE41861917C23F8314D14DD602541BEAD20965B29F3A0187375A</stationID>
+ <name>News/Talk @ KHVH-AM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>0.83</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536590A0A14A8109B582FA574D30F547DD62D6EC22ADBAEEC5FEEEDDA9ED86E51DB3</stationID>
+ <name>Country @ KHCM-AM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>0.94</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536582D19F93CD0E9B5F20781147C0A2D7D4AAB12855375E1C9C7689D9B6FC7322F2</stationID>
+ <name>Business Talk @ KHBZ-AM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536557BF86A6F3F134D83B772F8B034A1F1644083895C581694C2D395936011D02B7</stationID>
+ <name>Sports/News @ KAOI-AM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>1.11</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365201066D61B7D9C472DB3F48D0CDF4EC9888F8B58EC27FB99E9F19B05BC5EFBC0</stationID>
+ <name>Sports/News @ KKEA-AM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536515532481041EAD7BF1E86604171E25C5B28C83AEC553E239CF2D69FAF3A58E99</stationID>
+ <name>Nostalgia @ KUMU-AM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>1.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Hawaii_fm.krp b/kradio3/presets/usa/Hawaii_fm.krp
new file mode 100644
index 0000000..f8e404d
--- /dev/null
+++ b/kradio3/presets/usa/Hawaii_fm.krp
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Hawaii</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385365289F3D0C881A8BDDB628440B29350E73C90E3692E24E3B2D17E2CE2047278758</stationID>
+ <name>Alternative @ KTUH-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>90.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853658AEFA59CE3E22E2789252CD8403EC98ECCDFAD6EC71C15F05993293F33C43A18</stationID>
+ <name>AC @ KSSK-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365CF12D677436D0181277D76B432EEF25B96A9D101C5F464BAA1C8D6607167F706</stationID>
+ <name>Eighties @ KQMQ-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365A79E2C4820AA882B474607400D3C01844B3EF5DD2B3EC7370A1D70BADEBD56EB</stationID>
+ <name>Hot AC @ KQNG-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853651E61C69B8FEAD0EC07904A11A44F9A478C203F49F8D5565A61615AD0D8BE8E77</stationID>
+ <name>Rhythmic CHR @ KIKI-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365276809E86252A81DCABB60460F2B4EB5C42A2C06B7C1A59A5E421430B45CD159</stationID>
+ <name>Soft AC @ KUMU-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536520ACA097E1232F439825E30438589FDA1435655363A94CDDEDD23575A943D356</stationID>
+ <name>AC @ KAOI-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853658EA4223323831FE894B9AF5FAC194E786E83CBB4FFDE52FF2F02B8F198EE7701</stationID>
+ <name>Christian @ KAIM-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853658C4245DD210D26C96ED9120C2BF5A71ED503A4783830D50F56B55234CE22E889</stationID>
+ <name>AC @ KRTR-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853655EDAF8D5E8FE6932095F4AF72F84AEB78A55D59EC497663AAB9A9C369BC94191</stationID>
+ <name>Alternative @ KPOI-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536536722DBD814C562D74A751B8B8FDA38D56C1842BDD20B4A72600A408861856C9</stationID>
+ <name>Ethnic @ KDNN-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365E176F323B01EBD0F6F28B821ADACBAB93346FE81A09E4E9A841E01AD61471DB8</stationID>
+ <name>Hawaiian @ KCCN-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853652CA6D668B050753C41EF323A5644F05830A96DC3889A2DA230B551AE291156B2</stationID>
+ <name>Hot AC @ KUCD-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365B9B2A2358AA3C6AA2848753AE0645B61B91A8D240A8E0B159709177A6F5FBB82</stationID>
+ <name>CHR @ KDDB-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853657C9E34ACF4F0CBD53051E57B7E35E6C64EF1916336AC98F237B942DE554E12F2</stationID>
+ <name>CHR @ KNUQ-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536575FA177B5760A4579F3308F04587FE23388D913C7D5F46A07B868E90E76E4D52</stationID>
+ <name>CHR @ KXME-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853659D9B902859DECBD7976678FC8BEF2E2045DD65A72F6CFAB7BA5BF7E6FD6A2910</stationID>
+ <name>Oldies @ KONI-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365B840D9E9554A7AB994BFD78B1EBB1DD76892432475F6871D28B877A00694991D</stationID>
+ <name>Ethnic @ KINE-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365174E3F47B3ABF3ED12EE3A2B4B7C46FE9460E178B02358B9B4F6FD28F7B202EA</stationID>
+ <name>CHR @ KPMW-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853659C0FF76F4B18BC5583D70C76E1C7CFD7640F3A4BF81E0C173E3F15DBD52655B8</stationID>
+ <name>Classic Rock @ KAHA-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365EFD1E45ADEE5B1847089CD77C8D0E477A265238369A06A9F0260234078838F37</stationID>
+ <name>Oldies @ KGMZ-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Idaho.krp b/kradio3/presets/usa/Idaho.krp
new file mode 100644
index 0000000..c3a26ec
--- /dev/null
+++ b/kradio3/presets/usa/Idaho.krp
@@ -0,0 +1,398 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Idaho</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338536740C5A62B9610B6058FDAA5CFBB66111E47037CF783CEE12B8B827404F1C9F23A</stationID>
+ <name>Country @ KIZN-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367B5DC1FD33C392C0C2FA08D0CBB46D21F223C976D1C21CF8A427571A646F2CE5B</stationID>
+ <name>AC @ KEZQ-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367F02E87DDFE60CBA98A0A97CA58B3315FF838EFB4A8004B4572724A5191A128F0</stationID>
+ <name>CHR @ KZMG-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853679FFBD45919797855627AC11AB4B58059ADA19A604BF632AEF168A87B1316E225</stationID>
+ <name>Country @ KZBQ-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853678F16030354FF57CE590DC1EBEA21C26350656C36BA62BD29A9345BE448CCF183</stationID>
+ <name>News/Talk @ KBXL-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367D688D42EA57017C761DF2805D6F4CC8DD51C9B3EAAD3FA3F2E8181ECB570433E</stationID>
+ <name>AC @ KADQ-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367ABB7CD5EBE3EE12A7337D22A51743BA8CEFF0E6F50B21EB6B8543BE31AB198F1</stationID>
+ <name>Oldies @ KPKY-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853673D9E887C391078D4AB2DEB34BFD39E9FD6D0862B0BE9ACCC1E134462FA1315AE</stationID>
+ <name>Classic Rock @ KECH-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367DDF0F7876A4231632401413CDCF8D9F407ED20E3BF27EA8306F7574A3543DCCC</stationID>
+ <name>Rock @ KOZE-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367729E1894029863D6ABEF304D3C1C4D24A685BE3669F3836EAA769400861EBCE7</stationID>
+ <name>Classic Rock @ KKGL-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367A59AADE329DD7B9CD957934E1A3ECB7B46F5994FDB904DB90FB0331ADCA891B9</stationID>
+ <name>AC @ KLCE-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853678F7904FBA0FBAAE9860BA1E70CB929CB0FD6F97E0AECCD8838289615467142A7</stationID>
+ <name>Country @ KQFC-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367D2F75ABF2F09D73E1924AF9F7FA05AF82D7AC827D0D84CDAF80CD5FF3CCE781E</stationID>
+ <name>Oldies @ KGTM-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853676EA2A42FDB718DE6314963FF5801B830477FE9C2AB988AE06B97BC3F1DF5374B</stationID>
+ <name>AC @ KLLP-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853678FB9E8D8CCC525099F5FDFF53FD18A6BBF083461ED73F20AEA8353071861F06F</stationID>
+ <name>Country @ KUPI-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367B9B17D4D2AB499BAA11BB9D3A40A54C4BDF4CF5956B1ED158162598AF6F55BAE</stationID>
+ <name>Spanish @ KWEI-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367573A4DD1D8ADCD3EB66931CEA6733C35690A1794E1C770F0602DC2813C711F59</stationID>
+ <name>Alternative @ KQXR-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853672339EDAA398FC8356780BDDD8FEC206471A3937A9D37241C21B2E5E2D86C3722</stationID>
+ <name>Rock @ KCVI-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853671578F661EADF31980EBB9A5BDC2F2C5D80E0D4178681ACCF8C94EAF8373326AA</stationID>
+ <name>Classic Rock @ KMGI-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367D641E7A07C57E9E7A1E78BC4609DD57B2255EACD87BE8892F5F6A89F9F6D6356</stationID>
+ <name>Country @ KWYS-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853670FCB1143A6400261DDE22CAA7493342CC84169BAA190112D5105DF43AC0395FC</stationID>
+ <name>CHR @ KFTZ-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853679CF26D79A33C2F268C9F78E0C9EC6EF86852745D6862D7BD8E1AB6FC9C303A63</stationID>
+ <name>Christian AC @ KFIS-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853671CCF379EAFDBEBD229F999ABBE8DBA87F2E42312E81760D431F8C0A5CD2A5B3A</stationID>
+ <name>CHR @ KHTR-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536755FD197CFFE9D19B908033F53C33C66094844691697E229D12A42CC520DA1364</stationID>
+ <name>Classic Rock @ KIKX-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853678A8560EAA61240460D332C51E041959E3600D8EF8262765D3145C33C8211F78A</stationID>
+ <name>Rock @ KJOT-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367AB6D4CE41DC180E6CE336603D208CCA3F90FA544EDD62143EB9E4CA16DBDD5BC</stationID>
+ <name>Hot AC @ KCIX-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367F14D4BF77C59EC168FA2B1DDABFD6AC3E7A423968645B9194EC5AC782139AF7E</stationID>
+ <name>CHR @ KZFN-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367041642007F429C5CAC78FF28AD4C1146866FC6E2CA95A4C5462963201080CA1F</stationID>
+ <name>Hot AC @ KBJX-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367FC58E6A2C312D6C24385C20E0F51C4C85E5DC8E28ACDAC48783F05FE8BD3F6C0</stationID>
+ <name>Oldies @ KTHI-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367129BF042FDB3D8C35EDB8FD5870A394D55E4DD35108B260C8C71E8971DC12CC6</stationID>
+ <name>AC @ KXLT-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853671A67CBBFBFBF5EF98DFED427C7615B2F47C4A4A7627BE5490B619D0AACF2C72C</stationID>
+ <name>Country @ KFXD-AM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>0.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367EE808313184C621D38CAEF3F9368087BFDE2E2478815B059420D5505DB81E797</stationID>
+ <name>News/Talk @ KIDO-AM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>0.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367048C490B0C33CFE9D055D416825E1C56013C7A1850913CD535E3F8409545D84D</stationID>
+ <name>News/Talk @ KBOI-AM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>0.67</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853674C90ACEBC28E79D6CF60FBEB0BE4B84BE55A06259B667A4616ADB923A2C1B700</stationID>
+ <name>Country @ KMJY-AM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>0.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853670B18525CB11E6BCA6AFBDB55BD920A00689FF92F1E3585CF3AD9293B26E83151</stationID>
+ <name>News/Talk @ KSPD-AM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536741781549AA7B5DDFE111F35E36D14F7A781ABD1E29614616E5FBD47E2F5C0157</stationID>
+ <name>News/Talk @ KMAX-AM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>0.84</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367948188DEF3B2C0082FF5CEB8DE825B83F9F819D7891F5310694CC39337E81C8C</stationID>
+ <name>Sports @ KSEI-AM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853673ADB33A61032CE85835DDC9C4F7DAE460074C098912BF0BE6E0F1C7C2CF4E322</stationID>
+ <name>Talk @ KOZE-AM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853676F2D2D4CD5515D7C11C0A749DD588F2581392A0354CAA62C86E429C027D9CFCB</stationID>
+ <name>Nostalgia @ KUPI-AM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536726202E968AAABD70B5D1347E59A326164C92287373A62E313CB46335BFCE4630</stationID>
+ <name>Religious @ KBGN-AM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>1.06</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853674B34CFB6E978721977CAE7D4EC27C91D2526B0B2D9D1DEAFCBFF5EDD7AE8B577</stationID>
+ <name>Nostalgia @ KGEM-AM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>1.14</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367FF5963AA0CEA08FA3F8FEBC0B29455296B81CB1CF0EC0E2263236F617936E860</stationID>
+ <name>Country @ KOFE-AM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367728DA01217803F9D39EC1F797582B30DD0127E7E7B9C52844E801C88742DC6AB</stationID>
+ <name>Spanish @ KWEI-AM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367A9DDDD1DF1D6BF511B7B11DF5E2027CB388AC2164A8AEB7CE6E4E92427BFB12F</stationID>
+ <name>AC @ KTFI-AM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367076BD2F7E803080B47C1D30CDE085DAC6F220B77A4E5054C6D6AF9BD1EC085D6</stationID>
+ <name>News/Talk @ KTIK-AM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>1.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853670020B37B4F92A068D8C4C641798A6B0403728CB85705EB20E704C4A4F291A0C4</stationID>
+ <name>Oldies @ KRPL-AM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536702876B84C1E17D37485BBFB5385038123591953B362F6355D9F78B888FF0304A</stationID>
+ <name>Sports @ KIOV-AM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367402E518DB18F4835C9399D0DB0E9DD3CE25CEA05338E4E39CE586AB780C1C650</stationID>
+ <name>Oldies @ KCID-AM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Idaho_am.krp b/kradio3/presets/usa/Idaho_am.krp
new file mode 100644
index 0000000..488238b
--- /dev/null
+++ b/kradio3/presets/usa/Idaho_am.krp
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Idaho</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385366F20A148B11968F20C08E0FBB79BA35A3479FAE25E1A1E5A22AE4E96BEB3E0C1A</stationID>
+ <name>Country @ KFXD-AM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>0.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853661B3B3B073F05A57BE439C36695A701C8FC568C96B5E1D60CA3E459FF0A1EF9AF</stationID>
+ <name>News/Talk @ KIDO-AM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>0.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853661E9122CBA74949D9021C702BFA538952C85D62E2A5433AF5B5FC05CD9A14B0DB</stationID>
+ <name>News/Talk @ KBOI-AM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>0.67</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853669EDD26DDAECC667C08879A2347A0E6AEF99E7B4E6EB95CEED177685F1DAD3C19</stationID>
+ <name>Country @ KMJY-AM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>0.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536686A3B6AD7BEFDB49C8D7CCE6A38D7357DCBAFA8DC374627089FF20FB6E23DFF6</stationID>
+ <name>News/Talk @ KSPD-AM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366643D410BF3D30E4E078FAF71ADFFDD37B9AE3EFB539085DFD49E0994A4600D3C</stationID>
+ <name>News/Talk @ KMAX-AM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>0.84</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366C01EA682744ACD6D5E157B9DF61EB67C56703EA0E70D8B52F224575581CB0E35</stationID>
+ <name>Sports @ KSEI-AM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853660B12D33934471BCD9E7915C237900D758D3CBD97F35FB0DC7B54A3CBB791CE0A</stationID>
+ <name>Talk @ KOZE-AM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536640A198D5AE4C9E31DE1C6971FD9C93D086FC61FF295990C60107BD67AE9AA278</stationID>
+ <name>Nostalgia @ KUPI-AM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536613657EA0E9F9E5BDA04E388CFAF39EAC9E3F43A8D002E0B9D7CBD829F9456971</stationID>
+ <name>Religious @ KBGN-AM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>1.06</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853668B8671B7A957159654C1D799A3F75123281AA3E60468DAF5DC34F6A833872576</stationID>
+ <name>Nostalgia @ KGEM-AM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>1.14</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366405D94AD097C5DAEC8859F0E8EB5D9E6C04D49992A7281114E0030CC0C43E58D</stationID>
+ <name>Country @ KOFE-AM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366C03F2059128100DD6417F1C99DFA7D59C42B40B948B73C7AEE33CE264C344EF5</stationID>
+ <name>Spanish @ KWEI-AM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536672E4D32A25BC19180B38F8CBAEC1FA30D09F939D19035D2796F7071D205D2A46</stationID>
+ <name>AC @ KTFI-AM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853663C09581051240A7FED7767B86622573A61D4AB3B6034DB9CE46D058C6946C5E7</stationID>
+ <name>News/Talk @ KTIK-AM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>1.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366FF607CB9332C46107D3EA63A25D9478B2DD0BF3310DF9F35D11771BD43C551B9</stationID>
+ <name>Oldies @ KRPL-AM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366DC369399F411EF3924C95AF87309AED627A80995CB1A3E4B33DA5E0790B01F5E</stationID>
+ <name>Sports @ KIOV-AM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853662997CB201FB179EC829E94227A26778DBE303E93B78188B9DA8D0D84082D9B42</stationID>
+ <name>Oldies @ KCID-AM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Idaho_fm.krp b/kradio3/presets/usa/Idaho_fm.krp
new file mode 100644
index 0000000..a38287b
--- /dev/null
+++ b/kradio3/presets/usa/Idaho_fm.krp
@@ -0,0 +1,254 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Idaho</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853662347F91805949FBE047C52B93352F5CA5AC7E1CB1959464DE645095B28E972A3</stationID>
+ <name>Country @ KIZN-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366EFBD80D96DF00D42E4BF4C0053968A81E2E60D43532E08380D27886209594FA9</stationID>
+ <name>AC @ KEZQ-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366747D65CF738B7CF41D736BE0F8A77800FB35643385369E6AFCFFFF0DD12A7F37</stationID>
+ <name>CHR @ KZMG-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366AAAAB3FAA2B85AB7D7BB6ECFD85F4AF0E2322E188E5FDA7CC2E7BC3FC85132A9</stationID>
+ <name>Country @ KZBQ-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366C14C632354D71C77642204DC401B0B1A89E390AC2207FD4EBD1340DA8837E9C5</stationID>
+ <name>News/Talk @ KBXL-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366882198D31BA6F313EE361131A621C0C94D22F9E1D98DD5C82E00282EC0957F16</stationID>
+ <name>AC @ KADQ-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536689F9849404FA0198AFF541B76D1EEE072B7C1A30243F4A0CE51A77031A9A75BB</stationID>
+ <name>Oldies @ KPKY-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366294C170C71EFB9142209C5BF496C034E6CFA7D26B6FFF68D5EB50BA89F9FA0D2</stationID>
+ <name>Classic Rock @ KECH-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366738D773ACEF355ADB8DC5D532FDFF9F88AB1BEA02498956729E9D91608D4D990</stationID>
+ <name>Rock @ KOZE-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366F7A90433A5E65EE0FAF6695C0EA518ED978339F2D3698E462F36139DCB9D761F</stationID>
+ <name>Classic Rock @ KKGL-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853660917DF60F477C1DE10EFF696F547833B88D64761EBA15537A18101712E4CF9A1</stationID>
+ <name>AC @ KLCE-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853664F8A6CC1CC3B9F94E44B68081CA325CD63FB33CDE50D4F6EBB5757E6A56E0E79</stationID>
+ <name>Country @ KQFC-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536691951006E7855958183F192927CB53DE6082A2987E507B5C3C67D7FD165C9EB3</stationID>
+ <name>Oldies @ KGTM-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536633DC84C4A719FBA58B1DBB945293E2016FB771A5A7FDE3E02A24554D568AAE22</stationID>
+ <name>AC @ KLLP-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366779D45658E067E5C2CC0B6ED5329E01C707292694781B359F1F9033195AC7E49</stationID>
+ <name>Country @ KUPI-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366304B220520899E92B2F6839E2F58B601D97FD01AF946073B3CF93A35032469AF</stationID>
+ <name>Spanish @ KWEI-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366DF7AA831F7224C576B589C08B85D1DADB171CC7CA1BFC99FA18F278137E827F6</stationID>
+ <name>Alternative @ KQXR-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853663B5DE79B4D1B778C50293CE53037269312A6F2AD81758871E68FFF6E8142DA7E</stationID>
+ <name>Rock @ KCVI-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366E6F2916DEAF0683E8CD72603C3BF0C0B4390FAE3548D0B5DDCD6E8EC768AF2BE</stationID>
+ <name>Classic Rock @ KMGI-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853663E72022C9BC9108E812310EDD053858E20EFB07422EFA82A4C9BE8BD393DB549</stationID>
+ <name>Country @ KWYS-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536690CEE7C7D5BAC80F4BB0F26AA44DA9784DBA633097FB9574F96B5DDD27D77650</stationID>
+ <name>CHR @ KFTZ-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536699C09F97880F1A1B24DBE14A848143147C2607F379558ADF2DECA28B2D870E10</stationID>
+ <name>Christian AC @ KFIS-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536605C9ED1D740BE5C5F55CC0B066A7E2D0766F52A71082B8CBBD3866A38CE9A621</stationID>
+ <name>CHR @ KHTR-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366591859922075C95CC4F50234727BE96B17E927EF19086A0B2EED7975C26ADFF2</stationID>
+ <name>Classic Rock @ KIKX-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536674C275A9593B3BF22C0AB960F246854F013410E4A8888D88CD822E9456FEC88E</stationID>
+ <name>Rock @ KJOT-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853669B1E408291738BC2ECC6BF45360E77F4FE580540DFC16AEE8F37F4C21EF22969</stationID>
+ <name>Hot AC @ KCIX-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853665AD8B5FA4B02AA8CEA2AE2FA2EA67BE4F0E021AFA6489B828BCDB5A2D66D885D</stationID>
+ <name>CHR @ KZFN-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853663DCE8F17DFF9C396F9FD777502B05BB779AF3FF612BDCC039CEE4E70434B29D1</stationID>
+ <name>Hot AC @ KBJX-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536691510494F56D823C0F38F2BD2A8630BE5FFE19D6F952491C1B5DF12E7E3C5334</stationID>
+ <name>Oldies @ KTHI-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853665AD7183316E108DAB9AA7AAA83E0DB8C19D76E3E3AAF5244457526F317613D68</stationID>
+ <name>AC @ KXLT-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Illinois.krp b/kradio3/presets/usa/Illinois.krp
new file mode 100644
index 0000000..166e7ad
--- /dev/null
+++ b/kradio3/presets/usa/Illinois.krp
@@ -0,0 +1,998 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Illinois</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853672830FA7D7F5F431AE03EE065143E058F06CC0B72DE6472D7CC42258F8FB8D168</stationID>
+ <name>Religious @ WETN-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367A1AC7EF0BBFD63CC3F346DCC3D57FDA6FB619B20D3F921663FE243750CF179A0</stationID>
+ <name>Alternative @ WQNA-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853675B9A2690424AE24847FAA6C48D37D98E327330B36E242F6431EEBDA38856070F</stationID>
+ <name>Rock @ WLUW-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>88.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367FA02B50B834090E53D8233C2802825053DEE91242E53950D238CFF6AF913DCBF</stationID>
+ <name>Rock @ WONC-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>89.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853676DC971CDEA5DF091BBF3BBDEADB85777C188C9C4B33F070EDDF8A78BFCFEDEBE</stationID>
+ <name>CHR @ WUIC-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>89.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853671B40B38B372D1274CB3BFB4C232A536CAF5008149D795BBB146B7F3DB136DCEF</stationID>
+ <name>Christian @ WONU-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367F66AC59A6E3C4BF66D7E345D5CF1A171ECC56D779E0C83ACCEFE309BF92455EB</stationID>
+ <name>Religious @ WMBI-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>90.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367BFD639CCD4F2E205991D845A7C46B2D0C0379BC5EA335F3E0EAB9DB39061C2CE</stationID>
+ <name>CHR @ WMTH-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>90.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536733E3218AA0F9E32B7CFF3D64B23D60C6C3B9C0F9802E2EA94A67E96CAC862AF5</stationID>
+ <name>Christian AC @ WIBI-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853670013C94CA4F586C8A83D00BD5EA7661CC0AD6A68B6F9B0BFD880719B238819E0</stationID>
+ <name>Christian AC @ WCIC-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367232513902D91A61707720FC242A091D232D8E71E98FC816BA41BE2F9DAE77569</stationID>
+ <name>Christian AC @ WBGL-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>91.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536740FC722DCCE0D52EABE7931892451B4BF14B5A981D4C6F467A1130A11DA69487</stationID>
+ <name>Classical @ WSIU-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853676CC448F924271C59B8DE55D7E75D0654CECCC455A348AEF70C9F3148920E173B</stationID>
+ <name>CHR @ WWGO-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367C14B75BC826FD2DB7190E5536870F7BDC706787FE49A15D3265ACF05D746BE4C</stationID>
+ <name>Rhythmic CHR @ WZPW-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536790B4EF9F0D6DFC53C30D30944E61F0495730D7E7A7531B060C4C3FD5838499A1</stationID>
+ <name>Spanish AC @ WDEK-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853672715A21CEEF8BD6248ACFE36A0F20EE768CBAB09DEE1F7AFE1F70ACD1D5E3555</stationID>
+ <name>Active Rock @ WQLZ-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853677D89A9CA9E723FE2FF8BD9B89395391E38543CABEAFB62ED79055733473CBB2B</stationID>
+ <name>Classic Hits @ KGRC-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367569B168CC5CAC29F57C57EC6D496F3735FE5D709EF2B42CA23566AA558730403</stationID>
+ <name>CHR @ WYDS-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367DAC0691F31390897440C2BA58D15E46AECCF59585B055EF88FA6C102123F3CC8</stationID>
+ <name>Oldies @ WPBG-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536713EE4A88EEA4E75D7E0DDCA11857D6F8A2EF2A70CD220024B730D03C33720DCB</stationID>
+ <name>Rock @ KORB-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853674FFF59C9426A3EA9F30C9617B3954C49AA6557E88AD0D5F74FDF690053BC3787</stationID>
+ <name>AC @ WJRE-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367CE970C7B27894B01A2CD301DE468D7D269C1922CD03BC09124B41B820BAC089E</stationID>
+ <name>AC @ WMKR-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536754A85D21586131B230AB4278854619B23C5E6F0D25CF77C7374490D7E89BABBF</stationID>
+ <name>Hot AC @ WLRW-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367414819C50D1517C9FDE944CE66C9C137E953077FF7315765A0984CA207040B34</stationID>
+ <name>Hot AC @ WZZN-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853675085A52558BC4EA396BBEB034E688311C6D2CFF8337902A6E3E2C5CC25D2C240</stationID>
+ <name>Country @ WAAG-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367168C72F261755C2983D520951C7DB8687D83D230AEBBAA542D438ECD08E6A0DA</stationID>
+ <name>AC @ WUEZ-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367F3C1909CB1BDB3C8971E9A278ADAA0414535A87CC537700D085A97758FCDFA3B</stationID>
+ <name>Rock @ WZNF-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367B223BF8F2EAD23C2364FC86AF4A3F7E3A4E521932E296A7198702B84B4E1B292</stationID>
+ <name>Classic Rock @ WGLO-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853677F7AE7164F9F08A2934C07E85B05E7842FD43463941912799C95DBD657907C27</stationID>
+ <name>Classic Rock @ WERV-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853676FE20AAC6B66855D00579F36564A1B7D606D5E4C5C4ABB53CE3C3378A243C7B0</stationID>
+ <name>CHR @ WQQB-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367F8D7DC5B64182A2F4239D4840CE1612A34F2FFA7082261AFCC2D3F11C4E656C5</stationID>
+ <name>Rhythmic CHR @ WBBM-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367AF94E390FE8C10A67A9590EF06BB6EFC4FBDB0AA5B983D11D4439B78CEE50E73</stationID>
+ <name>Urban @ WJPL-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367E3B7888155E4D5BEDD963B7998793CAF83672AE2518664582CE4A6A14DE8A95E</stationID>
+ <name>Classic Rock @ WCVS-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367BFA2F05F8C04FFD3A75521876212F7F8BB281CA1E40708F45215D7CF2B7BCD68</stationID>
+ <name>Classic Hits @ WWDV-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367495AFD91CB338F1BD19A3F1AEF45910D73E7140C5104BC7F8AA1934E116EE3E0</stationID>
+ <name>Classic Hits @ WDRV-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367B05DC4F15042E7C43C7571C1F9B27E54A3F46DE963286CEE1E73FAB1454034BE</stationID>
+ <name>Country @ WFYR-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367189E8FE61BB3E93DD8BF723B75FC43A4C31872EBCA88A5E5B565B2C89D81AB66</stationID>
+ <name>CHR @ WZOK-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536713CF7C3C23472EFEAD60DB536F90B7AEA6B2B5338686332335695B6C66572E47</stationID>
+ <name>AC @ WYVR-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367DECAC555575E14E827587820970FAC4B6AFB7DE34258B8342FD5207AA564C0BF</stationID>
+ <name>Country @ KICK-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853670EF193987A25910695E9462A6872EACAC64E12675BA650BF4505F71E5FDCCCAC</stationID>
+ <name>News/Talk @ WRAN-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367C1721C71A99D0D1317E093D76BB0C21F3A9A3BB78FC85FEB29F57E8069357A2B</stationID>
+ <name>Country @ WXXQ-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536743C2E48660AA82F83F25FC3C8CC4CE8C9535021461B4B694E2D138D8F481AAB5</stationID>
+ <name>AC @ WNNS-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853677A9D805848D9316AA445033974A6616BD1AB1983AD901ECA65B92D45E3188952</stationID>
+ <name>Country @ WCOY-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367C98EE04C333590DB1AC5EA794A4D772912B0CA066B4500772E82891D680B757C</stationID>
+ <name>CHR @ KBEA-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367E668FF2931FDC90FB9C38D4F9144EA7F617C0D8E415528089B4DA15934CC7158</stationID>
+ <name>Active Rock @ WIXO-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853677F54C64561C41814752C52FAD57A42CE13600045C2791A73C0EC4883E76FC6C7</stationID>
+ <name>Country @ WGLC-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367FDCEE0B1A4441691A64FA487A9EE82E1967685AF0DD9BBD454155653AD21AC9D</stationID>
+ <name>AC @ WNND-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536710DE5D91F8F3FBDA1ABE42E0052EAD0FFBE8238446FDCA4F92F98E2A6D549CD6</stationID>
+ <name>Classic Hits @ WYMG-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367AD67A85F1CDC96BB05283AAE21614F2520E8DD8BD9A457C47055E2C9870DCDD0</stationID>
+ <name>CHR @ WRXQ-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367E4DDBA8C778670535B33EAF3B674A761AD0D1C26837FB5DACDA1EDA3BA4070C5</stationID>
+ <name>Country @ WHPO-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853678AD9BDC8520DFE9ABF45020311456EF0CCD08F7D531F438347BB132FA184D7C6</stationID>
+ <name>Christian @ WQFL-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536733DDE5504C18C280DB64B75E1ADC4FB748C8875E674D78CA36B33320D44CCA4F</stationID>
+ <name>Country @ WNCO-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536758FC923227D0D7517967D57C45338A0C621287F6189C101FFD4D535018463809</stationID>
+ <name>CHR @ WCIL-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853672E8D49198D22A5275D331AF82CDD2D6312DB7F316E0F3786D2CA78899145E422</stationID>
+ <name>Hot AC @ WTMX-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367877AAFD8AEE6A73ADFECB0AF85A30C8CD7A8B58A582AE07702FDC0F71D67DEC0</stationID>
+ <name>AC @ WEBQ-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367B90C74CA9FCAA2F0D4B6EE3D473715B463C50339930B26317CE65CFB6B28C5AB</stationID>
+ <name>Classic Rock @ WJEQ-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853674AA605CB841DC7E7091900AE996686F8C63D7E52F58475AA5F61649B4DC90476</stationID>
+ <name>AC @ WGFB-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853679621B21333CD0011946117D6D469736540783F6929DB9A9EC6DDF7A9943D051F</stationID>
+ <name>Alternative @ WXLT-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367C17DEDBCD161F93CB4B397D0DEFD74B21C7CE8FD6FE63033AD0DE370E82E8FE8</stationID>
+ <name>CHR @ WDBR-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536798D7DB461657B5B5142A0643BFB7238C486834DBCD4D14D6D4AE6FF8E00FBAEF</stationID>
+ <name>Hot AC @ WQCY-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853675F32D2D2BF588BD35400B7231E966B3A7063FB17871B4B589442B4833E17A61A</stationID>
+ <name>Country @ WPAY-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367E996632A3CED613365416AA84B86F9F08519E61DD5AA545526A52769C289AC21</stationID>
+ <name>Nostalgia @ WIDB-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367F6B649178707AEF4546892C20C834A2ED510B3930746F19902A654526A9C78A2</stationID>
+ <name>Country @ WFMB-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853672F0CFB50D1246E1034E94E69D7D5218792A6D37C0C83C1256DFCFD846D901EB2</stationID>
+ <name>Country @ WLMD-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367D70EAFB0C87554A46E01F05EF205B8C3A1B08A8F5E0E4F4D5C8977B6E3D7327E</stationID>
+ <name>Country @ KBOB-FM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367AE86A3C915E03C54241B415442272DE095D9E13C1EABEF8843001D7D1754486D</stationID>
+ <name>Rock @ WTAO-FM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367FF53FB2BB9B961777E5C7C1D83A8400254F78EDE1BE7428BB37245A6C4EC7E23</stationID>
+ <name>AC @ WKAY-FM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367F684BDB2B421A97A02FB854B9DBEEA95080C9DF3C5940A53AFB12FAC7C2F0A90</stationID>
+ <name>Country @ WJVO-FM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853678F55FAC2DC4428F834562745F0C38DE4034911D0334A3AB3FE72118F2F1793AC</stationID>
+ <name>Classic Rock @ WWCT-FM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853670F9297E38FC60DEE3FF65DB2FF8E85C9DC13FE5F0575979E2724BD2B63818DEC</stationID>
+ <name>AAA @ KZZK-FM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367561AB0B62A6E89088A159B47F1E37F4793791B223ABF4480D1D8DFB9B2923C15</stationID>
+ <name>Oldies @ WQRL-FM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367886683D5A57A0B722436228659B23091E0CC0866E550AEA7C60C44048586E619</stationID>
+ <name>Classic Rock @ WZNX-FM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853674A952438B51C715F56E6FE20BC38106B42974C125E474105976396F104E115A6</stationID>
+ <name>AC @ WSWT-FM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367B64B6D033C25C8A814A8E53BE5B6119938DB92C9D4C6E8ECD8B7D79A914CCDED</stationID>
+ <name>AC @ WZVN-FM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367BEFEDBE5BC2DE71E209F29B0BB272FDD2BF24AF8A83E53F35A26E893814E526D</stationID>
+ <name>Country @ WDDD-FM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536736C4AF03DAD6FE6073AB473F7D4F4279E5C9C614652C69B99DE35D747C7472F5</stationID>
+ <name>Urban @ WGCI-FM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367F962FBDEE4245CE485FB530A2337CE0492070BECCED4418DF58259D465F033C0</stationID>
+ <name>Mexican @ WLEY-FM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367D9E45960F7FFBB32F0F2E2E17F95EAC5BB4A3D0489D7FB1F3775C106DA14E826</stationID>
+ <name>Childrens @ WDDZ-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>0.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536765EAB8A455FBB6F37D705AB5A5CF563D7865F564AD8F0A355298CB4A1F0F7B5D</stationID>
+ <name>News/Talk @ WIND-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536780FB771E21C630534C8974B6178B5736E9A8A3FEC66DC3E92BC2DBE32DB8B829</stationID>
+ <name>NPR @ WILL-AM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>0.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367C62AD0C5387BA9CA44CF109C485FB599327D513C77DA89D7AED1FFD3E2AF8586</stationID>
+ <name>Sports @ WSCR-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>0.67</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853672924C687C022496DAC3E93FDFA1BACCA89F1A744828FB1EE1C2F620C7F3CA5A7</stationID>
+ <name>News/Talk @ WGN-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>0.72</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853671E9AB7EF452162806AB077532AEC330A5B6C0F12BA2AA4406A1DB73714FAD929</stationID>
+ <name>Misc @ WNDZ-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>0.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853673F91B7B0FC8DB22D164687C6AE08D9EF6FD9566898DC039E62BDBF1AF083F350</stationID>
+ <name>News @ WBBM-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>0.78</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367BFF44D6D21D77BE9A131303D4DBDC067E590D29D87C722456EC361A99F04CE6C</stationID>
+ <name>News/Talk @ WDDD-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>0.81</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367A9CA94AA68EFDD03BCB03F00A5E4268AB26643DBDDD067FC4DFF01241B6B7E58</stationID>
+ <name>News/Talk @ WCSN-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>0.82</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367D24AECBFA27F986C2C3DCF9DA06918FC9756AC35E72FC577B699B582AB518A1E</stationID>
+ <name>News/Talk @ WAIT-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>0.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367F5705FECF23CB4BE6E3467332E6F81CDB1218BFFA6E6403A62A31DB0019D63D6</stationID>
+ <name>News/Talk @ WLS-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>0.89</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853670ACF84185ECD0D168D451A24E3531DC25BA4EF901CD8E687CE4906B6DC094600</stationID>
+ <name>Sports/News @ WTAD-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853673B007505B28821AA4483167AEC1793C6CD06991BBDD566718B54A1C7C5DE4BE0</stationID>
+ <name>Spanish N/T @ WNTD-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853673EA1252CB9E810910F1C52F4817AF748E125DA4414AA4A18A5129E925ADB93CD</stationID>
+ <name>News/Talk @ WMAY-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367B6874A2D630CA7EAD47FFC62C0551AECACD549537EA0BD76165C01AA6B765811</stationID>
+ <name>Oldies @ WITY-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367A532558EED0576A5BA6DA46F031FCE688F372AD1F1C50E000011AA64E011164B</stationID>
+ <name>News/Talk @ WCAZ-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536736CE5E500855804E2E9D318BA37B07B8821AAA09AE7DBAD2FD4A2D5372BA0EB0</stationID>
+ <name>Sports @ WMVP-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853670594B853D7437C1FE5FA8F4B5958688EC5508698AFC4A1C5C51E7FEF2F00FDF3</stationID>
+ <name>Religious @ WPEO-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>1.02</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367B0198EA82AC20D38F00762640823D70FF389627CB24F2BAA4754168F94D0844F</stationID>
+ <name>Country @ WMCL-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>1.06</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367081DF70369EBDE6AABD79E1F2DE6BC200CD3F32456911EF1A2EBE49364995F30</stationID>
+ <name>Ethnic @ WNWI-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>1.08</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853677E30CB634ED4CB99F704C98F66FB9A1C2853C5DAA6C8A13129A0E727F8DB064B</stationID>
+ <name>Religious @ WMBI-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>1.11</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536704739C54D41B673B9A59C66DF5130AE867C4434C9EF2B2CE640F0971B4433F75</stationID>
+ <name>Religious @ WGGH-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853677A347631F4462656CBE13DA2D258F49691AC7A937BA23351B7A0EB91E36BF3B3</stationID>
+ <name>Religious @ WYLL-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>1.16</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536731594FCC4C74FB52FDC1709FC54A63901E0D3BFB384EB1468AD840882CD033B3</stationID>
+ <name>News/Talk @ KJOC-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>1.17</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367F6B71785415E8B70FCE942365B418BB4FDDD9A2068F68C7533735B2E3972DD21</stationID>
+ <name>Spanish @ WLXX-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>1.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853674163690A6FAA9E937B941CD3E14CEF891FD57C8C059C6EED42BBC48FA0608E75</stationID>
+ <name>News/Talk @ WKRS-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>1.22</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367AD2224D041103B46A7F1AF43E5DA67261D498BE3FD75530E801B0F877A945582</stationID>
+ <name>Sports/News @ WHCO-AM</name>
+ <shortname>104</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853672AADA3CC3DE92FC7728EE430BC8DBACF814A29A84F4DDF8A7CC9C05DDCCD1F2E</stationID>
+ <name>Nostalgia @ WKBF-AM</name>
+ <shortname>105</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367CA469DCB68B9E63F44B9A86CC75C8C311CAB07EF8E579B442BFB62A8315C1146</stationID>
+ <name>News/Talk @ WBIG-AM</name>
+ <shortname>106</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536796D8EAEC6C98557E382C3B26ED28F4BA6BEC8AA17603FBAE375B14E6BCFC4949</stationID>
+ <name>Nostalgia @ WFRX-AM</name>
+ <shortname>107</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536770AB6196BF0244FA3B5268727236A0AC3A65B378DC90C7C7A682D43BE8CBF05A</stationID>
+ <name>Country @ WKAN-AM</name>
+ <shortname>108</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367D14BC224AE11856E16F042CE421F7E696D4C55780F9AB2EDF56A07A1B73881B2</stationID>
+ <name>News/Talk @ WJPF-AM</name>
+ <shortname>109</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853678555A230C90B7354C19665C494C8AA8799653795D5BC6F78CDBA17450CC33DF2</stationID>
+ <name>Nostalgia @ WOAM-AM</name>
+ <shortname>110</shortname>
+ <icon></icon>
+ <frequency>1.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367EDBFFF03BF0864418D9455D20F6A42FDD8F88530DD9F499616CDDF274AEF8453</stationID>
+ <name>Nostalgia @ WGFA-AM</name>
+ <shortname>111</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536712DD6E3B8175D22B83D2ED3EEC78B6E5F142BC6C909D7FCCFACD1C9136CB0059</stationID>
+ <name>Sports/News @ WFIW-AM</name>
+ <shortname>112</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536711D476BE5EB925F13379A38F57A37FDA9743908D86A4DE7C1454ECC5C4B58F02</stationID>
+ <name>AC @ WGIL-AM</name>
+ <shortname>113</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367BEC90077772C4D310AF7D17ABDE4D72B975D5E677A2F77F554468B43225C6C55</stationID>
+ <name>News/Talk @ WTIM-AM</name>
+ <shortname>114</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367B916EA408AB3ED60967F8E75B61A3F01A7C9460CEBF34D94776EAA89E4F5C638</stationID>
+ <name>News/Talk @ WROK-AM</name>
+ <shortname>115</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367153D1A2ED08621443E332D885B2350440B72D4A0CFAFE68BD3453BE3EA0FD692</stationID>
+ <name>News/Talk @ WFMB-AM</name>
+ <shortname>116</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367947EFCC36C0C60E77912E294211446EF51E166813789E39C4314CC4A71ADB054</stationID>
+ <name>Sports/News @ WMBD-AM</name>
+ <shortname>117</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367A3092BD85BDFC10E8E1F5CAEFC37AC50B1C42A455F74EC3F43DF935C80B64F28</stationID>
+ <name>Ethnic @ WPNA-AM</name>
+ <shortname>118</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367BD6DB190375D1CF046D3380809A81473C25DBEB351AEE3608C7B48997427F819</stationID>
+ <name>Nostalgia @ WAKE-AM</name>
+ <shortname>119</shortname>
+ <icon></icon>
+ <frequency>1.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367EA2A879E43BA0B2C1584C831C15116B477404AF5548C213F203FBFBE347A0008</stationID>
+ <name>Nostalgia @ WLRB-AM</name>
+ <shortname>120</shortname>
+ <icon></icon>
+ <frequency>1.51</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853678A657F50C278877E5B375F567A62040615DCCA62F58D01A1F67A68FE441C86BB</stationID>
+ <name>Oldies @ WJJG-AM</name>
+ <shortname>121</shortname>
+ <icon></icon>
+ <frequency>1.53</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853672953657E2A232CDA57DD9860EB27483D0DF76197EE78648C97D986889CEF1862</stationID>
+ <name>News/Talk @ WKKD-AM</name>
+ <shortname>122</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853678AF2FBB0A06D25777D56822DDCAE6C5D529DDBDF88C3DA5FAF9E5E2900A9DD18</stationID>
+ <name>Nostalgia @ WCGO-AM</name>
+ <shortname>123</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Illinois_am.krp b/kradio3/presets/usa/Illinois_am.krp
new file mode 100644
index 0000000..906194b
--- /dev/null
+++ b/kradio3/presets/usa/Illinois_am.krp
@@ -0,0 +1,382 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Illinois</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385367B81C7FC319DB227312B2E784300324ED1F9B2B8CC1984951BE54650D7D1A1D03</stationID>
+ <name>Childrens @ WDDZ-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>0.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536799233A9CF162B32965124305D4A1AB634FA59BA7FDC104B87FBC8348611A07D4</stationID>
+ <name>News/Talk @ WIND-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853674EBE319DFD2E859222FF0FDB1C1E62507549A8A5126F35ECCCEC1DA8EDB3C107</stationID>
+ <name>NPR @ WILL-AM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>0.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367347793B502EDB868435C2CB41EA62DDDF663281795A92999D825CF6CB5826575</stationID>
+ <name>Sports @ WSCR-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>0.67</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367A77364FB4BCFFB2CA85AE110D4E0EDBE1FAC675420E7E61119AB33CD74A25973</stationID>
+ <name>News/Talk @ WGN-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>0.72</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367F60E9C73DFD79A7E002568AC889DFC7FC5B49388D9A86812494E8CC15A87F1D6</stationID>
+ <name>Misc @ WNDZ-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>0.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367989344CD7A9A2C937D164232D155A6FED622278F45D4E7A4F601D333814C2601</stationID>
+ <name>News @ WBBM-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>0.78</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367189D343B6F17C8E58B5A7C6A6933B5FAC169801AC2C4CE24D9EE20F9ACFB400C</stationID>
+ <name>News/Talk @ WDDD-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>0.81</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536716642C24C166827093EA35B36AA0A2433D5838D1256CC9DEB7A5EC1B8B03A8F0</stationID>
+ <name>News/Talk @ WCSN-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>0.82</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853672AFC72AF902ECC351B84CF7FD1232F5D13A087B0C776FFE4C214E3D384212CFB</stationID>
+ <name>News/Talk @ WAIT-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>0.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536793C87200D1F405B091BD9F416574DD4EAA9474345C7171DEA169F6F551027FBF</stationID>
+ <name>News/Talk @ WLS-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>0.89</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536774EBA43C1840C52B938173EE76BD5408C1B2BB8E60A3E4075A1692715265B2B3</stationID>
+ <name>Sports/News @ WTAD-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853671200EC2658608AEDC0D113D3BB1849C9BA0BBECFE7CA4747692EA9B32DDADFF1</stationID>
+ <name>Spanish N/T @ WNTD-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536705B31795F165BC4F752EE133818AA6BBCD4BA8B850F71753B719A25648DC1668</stationID>
+ <name>News/Talk @ WMAY-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853675325F7D14B6C6E3F79D41D81349BD9D7E6ED8004BDBB20AECA00161906F01B48</stationID>
+ <name>Oldies @ WITY-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367963955B971CD732724EFF74089101971427DB92C511C5AA1FCA66D126FAAE18C</stationID>
+ <name>News/Talk @ WCAZ-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853675EC2C9F60AAD7F15F0817834D3751725A983DD795B462CBE6A7DE281326F076D</stationID>
+ <name>Sports @ WMVP-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367A2443509551EA74927AE79324052C346461897E12AFE90F60FDA0A01A7D9979F</stationID>
+ <name>Religious @ WPEO-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>1.02</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367ED5DC360F971B75638C3A0FF9255E336F2E313FB567E588CD47D7F4044E60B0A</stationID>
+ <name>Country @ WMCL-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>1.06</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853679C291E3C5CD9D1B28F18EFD459507C184FCEDBA7C47B18BBF1CB84E7DA922865</stationID>
+ <name>Ethnic @ WNWI-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>1.08</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853670EB24E195322E1CF5B60C5D9513A7D4CF56B10C729FCDB928C36454110D8701B</stationID>
+ <name>Religious @ WMBI-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>1.11</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853677DE14F56331640C27E7B43D6D7D525C265C46F51FB59C85B6171FFE917C06D9C</stationID>
+ <name>Religious @ WGGH-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853677C94C14C63EAF5A73888A0EDCC2A64BB3F7B78D63D7F44FDB7423ABC4827002F</stationID>
+ <name>Religious @ WYLL-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>1.16</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367640AA272E29F0F8ABE1EA5F1F67602F6E69946621FCE76112890E64E6B314011</stationID>
+ <name>News/Talk @ KJOC-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>1.17</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367A2E17AEF6CDEFB63A6F30ED80DBF5A4EE8B747A058ADA4799CA6F23553D9DEE3</stationID>
+ <name>Spanish @ WLXX-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>1.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367FDA818047978628F1790F4B816DAC06AA0BC3FE596225428C19736D47E365123</stationID>
+ <name>News/Talk @ WKRS-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>1.22</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853672A37581E221042030A156BFCD658570EF44C7D916C21CA4DC76218C1763C01C1</stationID>
+ <name>Sports/News @ WHCO-AM</name>
+ <shortname>104</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367336E6443675AB56FA7DFD0309B6B37957E6AFE510A8125A6816DA8B7500FC35D</stationID>
+ <name>Nostalgia @ WKBF-AM</name>
+ <shortname>105</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536782816FB28F92D47C464E014C0BF44833EF2F819A63A8A80C4BF827AEBC26EBA9</stationID>
+ <name>News/Talk @ WBIG-AM</name>
+ <shortname>106</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367830F8CC359FE859E48EC5AFC42885B60CFF7AE5C00C17F936E39A044C73B4514</stationID>
+ <name>Nostalgia @ WFRX-AM</name>
+ <shortname>107</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536750E3C4E0FE7DC6B853B0CFE229B2B10234A3F31A55876CF1398D042505E0B16A</stationID>
+ <name>Country @ WKAN-AM</name>
+ <shortname>108</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367650F8178B45104CF9296322D89AB1F53E5B22920AD05278027498EDE5B1BCAA4</stationID>
+ <name>News/Talk @ WJPF-AM</name>
+ <shortname>109</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367C17CE6DFF58C9C2537C5E27CEAC97CD7FB0AEEC13ED18244A48875CDB0AAF1BC</stationID>
+ <name>Nostalgia @ WOAM-AM</name>
+ <shortname>110</shortname>
+ <icon></icon>
+ <frequency>1.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853672FDDA142926AD1EC2FBC8BC10F58ECB50C3C93570FE5AE05646FE9B2FA09DDDE</stationID>
+ <name>Nostalgia @ WGFA-AM</name>
+ <shortname>111</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853675D506E03EC7FA1A412984F5A4E06DDF0595C265B92A312AC99FC2DFE82A08682</stationID>
+ <name>Sports/News @ WFIW-AM</name>
+ <shortname>112</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536702B3D26BCE03E24C46C0F129D967810C2D5DA0C957A23FA3B917898B7CF00D00</stationID>
+ <name>AC @ WGIL-AM</name>
+ <shortname>113</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367091CDEF632A05C5616EB19CD8851E1E884AF8F7ADA2478ABE802A91D442B1FC4</stationID>
+ <name>News/Talk @ WTIM-AM</name>
+ <shortname>114</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853675139DFAD71E2CF64963433632CD926C3449E6C1009422D0AB9D524F71E058FE5</stationID>
+ <name>News/Talk @ WROK-AM</name>
+ <shortname>115</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853672C626BB5EEDEC4FAD9956AA7A71A74B069A47686953A718BB86DDC9CF2D1E95E</stationID>
+ <name>News/Talk @ WFMB-AM</name>
+ <shortname>116</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367F3BB56CC9EDD49090D46FA1AF631B5383911B0533D80F2F8DCCB57441A159D17</stationID>
+ <name>Sports/News @ WMBD-AM</name>
+ <shortname>117</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367973803184D337B26CD1EE508E461E457A1007F4B1C55BC1AC3A4C8750714E2E4</stationID>
+ <name>Ethnic @ WPNA-AM</name>
+ <shortname>118</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853677E4B7E46C0482615987247A966EAA3014A19C29E1C5B0ECED075D3621DFCDC5E</stationID>
+ <name>Nostalgia @ WAKE-AM</name>
+ <shortname>119</shortname>
+ <icon></icon>
+ <frequency>1.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536774D2E393DCE5ACE8F65D47F3C5303548D908995B089D59792289BFF8B3E93AFF</stationID>
+ <name>Nostalgia @ WLRB-AM</name>
+ <shortname>120</shortname>
+ <icon></icon>
+ <frequency>1.51</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536750355BB184091990761146EB0D430204DC9F9CB7963273D7930F43BB6F222301</stationID>
+ <name>Oldies @ WJJG-AM</name>
+ <shortname>121</shortname>
+ <icon></icon>
+ <frequency>1.53</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367D6024D9FDCA010A96F27EE4388040D4D34B507E61C88EEC18B40CA307FE73EA3</stationID>
+ <name>News/Talk @ WKKD-AM</name>
+ <shortname>122</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853679F89A2356059CED3E81E0D51D36E1A2F0418259E66269D8AC2154295BE064246</stationID>
+ <name>Nostalgia @ WCGO-AM</name>
+ <shortname>123</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Illinois_fm.krp b/kradio3/presets/usa/Illinois_fm.krp
new file mode 100644
index 0000000..54b5d02
--- /dev/null
+++ b/kradio3/presets/usa/Illinois_fm.krp
@@ -0,0 +1,630 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Illinois</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853673C61F3691251B9B989EEEC40155DCC9B48AD311E3B41930A93BC68F635B49098</stationID>
+ <name>Religious @ WETN-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853679EBCE5C68C15214884B7D45E7DCF446D768E590F145D2317E86ECE900974B641</stationID>
+ <name>Alternative @ WQNA-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853672D7D7AC1DBAD0917DC08CE65A4B2D24F1835017FE3274E2BBCD68EA1B9844245</stationID>
+ <name>Rock @ WLUW-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>88.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853676BE2A3F8EF9CE6E98E4AA5E9DD4AA4819547A524F515AAC226BE55BE807DF000</stationID>
+ <name>Rock @ WONC-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>89.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853677FAD25356AB7159ACD467FF6774E0EE3C1DB5EFA675A50893E04474C5E4853EC</stationID>
+ <name>CHR @ WUIC-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>89.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367F8A8A0331629F8F916193B000B4D341D19759844D2F5D70245EA16BD75B97704</stationID>
+ <name>Christian @ WONU-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853675C93ED5DFC51804D6589EC507D2DE81F46721DD3250AC394CA184C3F4AE08850</stationID>
+ <name>Religious @ WMBI-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>90.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367FBDB76D19598BEF1DD8A01A2E720D290B0371A06044C9EBDC972741F48FA8835</stationID>
+ <name>CHR @ WMTH-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>90.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367369D5C2A418640F59652F83F7B28BBF41B7C6CB4832BFABDFFAEC1925DE72DBF</stationID>
+ <name>Christian AC @ WIBI-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853670258645E95298AAF7E4C815371B7C2EC6564986D0D0E6B8DE65D8AEFFBEE52AB</stationID>
+ <name>Christian AC @ WCIC-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536785CAD321E043EEA48CD44140DEB3608747F0439DA35067ED02754663BFBF7A36</stationID>
+ <name>Christian AC @ WBGL-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>91.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367723AA778D804A80422B393B2F9AB27C520F118CE02476A4C1CA84FC1631B3EA0</stationID>
+ <name>Classical @ WSIU-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367106BB1A0E0CC4808BBAE7493F17CAF1553061D05CB133AED30DEBF06A5F7B4CB</stationID>
+ <name>CHR @ WWGO-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853679661FC784A42C1E38851BC12DD952DA497BE2EAAFC736A78F6232EFCDC733664</stationID>
+ <name>Rhythmic CHR @ WZPW-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853672AAD42DA188E0D267F175979AD28C4DF01CED718AC5654A8301AE2F7BA76D90C</stationID>
+ <name>Spanish AC @ WDEK-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367B17F94BA5A8D38C0DEE928394C1F83F0D67899AE03D68A965627F31AAA37219F</stationID>
+ <name>Active Rock @ WQLZ-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367B3E3B34C68D5BCD26D4B64906790B3586CA760274167D2E70E407355EB4BD7D4</stationID>
+ <name>Classic Hits @ KGRC-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367994EBF46991B68B45DA6A9A3AF22016D496CF66FE3D14CBF9DECC4BD4D135034</stationID>
+ <name>CHR @ WYDS-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367907365DFD77B505E5C1E6C42A63A542C5137E495C0DEA2B14E21912270F6B316</stationID>
+ <name>Oldies @ WPBG-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853675A3FD097F4EA3D1E3B71C8E8A8F59FE2DB84EC0192768B3DF8FFEB06E42A7D38</stationID>
+ <name>Rock @ KORB-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853670CEE1C32A620817194056C879A00FE56C1BBBE24EB3D34236168FDDE318AC377</stationID>
+ <name>AC @ WJRE-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536796D20F5DAAD9B2B087241A909FC9D379C21B5826045BDFF804F4C6E68AC0CA97</stationID>
+ <name>AC @ WMKR-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853674B912A1270B7549D6E21B8B6E90B7D7CFCE547DD94D19CA1DB511C402090F9F8</stationID>
+ <name>Hot AC @ WLRW-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853676DA8D1C3D02B6E9E1B52ED8FF3462B53BF39436D8F332EB64114544FC67A592D</stationID>
+ <name>Hot AC @ WZZN-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536726A60827234F158BD16DA0AD74BED104544E824FDC071FDB089DBB65DBAD1AB8</stationID>
+ <name>Country @ WAAG-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367E98AAFCB116B8CBA73D7BA2CD64F1A62B04E92718F2675DF49BAA34E25A382FC</stationID>
+ <name>AC @ WUEZ-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367BDA209E60ED328565E573C3A0F6526D7F3C88C7C6D31575448ECBCCC67C5C8A6</stationID>
+ <name>Rock @ WZNF-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853671F98A500F975EE9E468A7AAA806CDE22261ECAFDC71069EEC2F282AD24755245</stationID>
+ <name>Classic Rock @ WGLO-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853674E90A17E2ADE86E3F74DFD4ECF6FE5DC7ECC4520219F72F13B8E48CE6667C7FF</stationID>
+ <name>Classic Rock @ WERV-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367198EA32CF2F4AA23106E5FE111C59562435378B0BA1D1BFEF27ED1620253F4AF</stationID>
+ <name>CHR @ WQQB-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367191ED697A32518E3553298CDC9963C57C2DAC51C801C2696A084A931D9258F9B</stationID>
+ <name>Rhythmic CHR @ WBBM-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367748719B5AE0E6792C76B36FB480AC7B5FD021B5EE4A65F897F22D36B012EFF52</stationID>
+ <name>Urban @ WJPL-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536705859939AD600B341972DF0BDCCC87CAE3CDBCB1DFB0524C770A1D6CC23B5B39</stationID>
+ <name>Classic Rock @ WCVS-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367C46F4574506F9345ECB1A922A9E8BB08DE866B3BE2F9DF4FF8CD50C0C53635C0</stationID>
+ <name>Classic Hits @ WWDV-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536738DA41F9079862F6537C1A68818D76AFF4C8425B99604EFD46CCA5061F57040A</stationID>
+ <name>Classic Hits @ WDRV-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367345C7CDC704CB51869BB4D924001CEE685283876F597B8D5F815EFC8BE792173</stationID>
+ <name>Country @ WFYR-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367C044CEC5B4B78570036B48C4B1E04C1A99BD0BB4D5704F74BBEC71266CD1EEB3</stationID>
+ <name>CHR @ WZOK-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367F0B77F6F007F4F7C4DEB952AE4ED8EC160BD8CEC8AD925BB1C0A1CA437434579</stationID>
+ <name>AC @ WYVR-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367945415653F626C9C01E3B3134C3200F75230B9948FEA625A3BDC4343A0F93F0E</stationID>
+ <name>Country @ KICK-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367FC6EFC3F3D35182D3115CFFCE9BAA6EF042716C7E73C83B9A242BBF23A4D5773</stationID>
+ <name>News/Talk @ WRAN-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367EBBA16401AF576EC6A314DB1D999CC9E5BFD7E338BFED2C5214047BD0D308A47</stationID>
+ <name>Country @ WXXQ-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367016323385D9BA524A4BCAC6485A397E016D0E38E8AE1CBC512FAD0718A2B9331</stationID>
+ <name>AC @ WNNS-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367E656F7E9EBCBA05535FAE94038281752D3AF652C58FC216B5B676D99A04B0FCB</stationID>
+ <name>Country @ WCOY-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367DE14DBE117AFB8A76F1FF139D9D3663DA3AA80DC8ADD315E31E46E7EE3A72D01</stationID>
+ <name>CHR @ KBEA-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367E17BAA340CE28D56810385600B164A181FE6EB41363A11D30F2187ABD9FEB752</stationID>
+ <name>Active Rock @ WIXO-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367C046B97A82918CC25262A40BAD1AA88BD23243585E726F731D0343BBC8EFCE65</stationID>
+ <name>Country @ WGLC-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853678E6F22C847ADBD694C992A4418F17B5D5673A386441E82127D6D0F51C4D369A6</stationID>
+ <name>AC @ WNND-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367E2733AF95266F5E5129DD07D03F1470CDDBC373D26DBCCD5346E9C7EF31845B0</stationID>
+ <name>Classic Hits @ WYMG-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853675949DE532FB851FC8A6D6E701E01A057AB88F1342EBB9E78522EA01C07A69FAC</stationID>
+ <name>CHR @ WRXQ-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367C09747FBC2E94C44ED4417525A79CF134162D68B2C015E5150CFB17A6FDAD931</stationID>
+ <name>Country @ WHPO-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367A349FFD129A5F656403B1A770379A3896678CBC1AAC4CFCA23A7D0BDE3A649A1</stationID>
+ <name>Christian @ WQFL-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367E543E6AB527E5C4C01B3AB8DF36CCDC8691217F06A66F3A5F35EB26B16990193</stationID>
+ <name>Country @ WNCO-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536741E7B59BF34E564CF4A2205D344C4CC74FB6C62F59D037B314275E5510ABB3DD</stationID>
+ <name>CHR @ WCIL-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536755B271878D455B42737F64AD4D9627DF8F160BD5D38C911681BD8442BA247C66</stationID>
+ <name>Hot AC @ WTMX-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367411567C4338986001455EC776D730947E23A61F490F94E7A9894C53926F36F2E</stationID>
+ <name>AC @ WEBQ-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367A05E3149CA1C06D772BC8C1C7EA1846157558AB1ADC307B549AF935276763D39</stationID>
+ <name>Classic Rock @ WJEQ-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853678DF403A6C9D9F6CB26BADD7C6DABBF002547DC225E75B11B39B88F69E9B2608E</stationID>
+ <name>AC @ WGFB-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367BE7DE0F6C5FBD270D390DF2C48F411331865CB2BBDDAD2BB3D90F477A4E69E86</stationID>
+ <name>Alternative @ WXLT-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367CA2419A7F28CC62C00FF3DFE9556DE10D9E931AA4A4AA0FBCFCB437667A9BA56</stationID>
+ <name>CHR @ WDBR-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367F3DB15E09DB55AA2148FA62D916F35EFC1ADA379D0675E5D3B2F346F3E8E8B75</stationID>
+ <name>Hot AC @ WQCY-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367C2CC7064EC837E391F85F5CF5654029FBCA206355AE468A75DA2CB14CEF02B86</stationID>
+ <name>Country @ WPAY-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853674E669BEDC8946E65F69559FB77B82105EF561E5771806F9D520691D6C2DABB7A</stationID>
+ <name>Nostalgia @ WIDB-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367131F75A4853042E8A856846FAB7E85F3CF8C6590ABB8CA1FA38E128A16C67FE3</stationID>
+ <name>Country @ WFMB-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367DDC8A361B39D550C86DA2EBF3BEC85BCBBAA0E7B3A8B1D7E1DF1C711297FF852</stationID>
+ <name>Country @ WLMD-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853678F41EB245D7DDE34508DD8DA16019CD7D419988D3D1E8B40FC1BCD425DFDF048</stationID>
+ <name>Country @ KBOB-FM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536752F5D6E5E8FD20024751C44AD1D785F3D2362ACBB7D3B62579F39087FC493BC3</stationID>
+ <name>Rock @ WTAO-FM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853670B44A7B939C91E4CC448F9260F6869E588DAE870D8CA88835F296B907F1FA84E</stationID>
+ <name>AC @ WKAY-FM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367ADA6BB103BC9043D58B807BD3C74DA36F8BA82D99A87FB598839AC058007B9AD</stationID>
+ <name>Country @ WJVO-FM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536773E5906D6FDFAA2FC35B5E0FB95CB5B4DC9B853CAFCEF944DC05B3FD3E490E83</stationID>
+ <name>Classic Rock @ WWCT-FM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536741C73F2770BF544ACA95F358583621EFF7F5AB260106E59328B384536ED44604</stationID>
+ <name>AAA @ KZZK-FM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536772A39EACEB25BE512F2A6C5A0A65466AC8EEFB3E7D8061249F59D1F5825FF936</stationID>
+ <name>Oldies @ WQRL-FM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536742D15913D5A1D101C6B7F7AA3B16335C743105CC6948D308C0A73B8F8D728298</stationID>
+ <name>Classic Rock @ WZNX-FM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367FB7E802D799DB91838FF5D245777453734F12C914C3E3B449096FC26AF574019</stationID>
+ <name>AC @ WSWT-FM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853672741030F80499F958FC7A4D0AE5A0C18B30E545ECE193645586C3D0721D03F30</stationID>
+ <name>AC @ WZVN-FM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385367A10EBC4D69B563EAA3D998B08914527B163F50ED3BA108CD7A162BC7AE7EE6A9</stationID>
+ <name>Country @ WDDD-FM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853673C567D9D42AADE2B58101202DB84A272BB355831E38B45A0695CBE58F8BEA002</stationID>
+ <name>Urban @ WGCI-FM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853671627835C45352218C8ED3EBB9CDEC1CB15402ACCA96BC51619DE62C54CFB4C8E</stationID>
+ <name>Mexican @ WLEY-FM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Indiana.krp b/kradio3/presets/usa/Indiana.krp
new file mode 100644
index 0000000..1b40c7c
--- /dev/null
+++ b/kradio3/presets/usa/Indiana.krp
@@ -0,0 +1,854 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Indiana</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853689118890B47F70CD4A77154C1724687DEC6921D00452943CBC68D1DFBBDC46C26</stationID>
+ <name>Christian @ WLAB-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368F0E4D1058900BBF0AAC40E018176F88AAF9098105FAC22722BA90ACC95E8CA4E</stationID>
+ <name>Talk @ WGVE-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536852569224037EB0E1B06386C4224F0CF89C0F7E4F3243FD52E93F20FADA97013D</stationID>
+ <name>Gospel @ WBCL-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>90.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536896032462BD27D7A8EEC18335737F8ADFBE71C3C26E6C84878ABBF1A46406F566</stationID>
+ <name>Alternative @ WCYT-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536874A41D1F15D37C4251F980F1631FE3F69A5CE0D33CF170B24CAA250895FE9D85</stationID>
+ <name>Alternative @ WHJE-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853682F33FBCE7675CAF116AB81F82F212AE384A11A7A51B65235701EB4493A9BC4C4</stationID>
+ <name>Smooth Jazz @ WUEV-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368D45D49EF417798C1064088631A34A3BA20E3DA4E90A6DFEB2ED20AF1CF2C26CB</stationID>
+ <name>AAA @ WQKO-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853680780D81324EBCBB8A0774301AEA76E5585FE33A2A7415BDD039E70A4F778B4F3</stationID>
+ <name>AC @ WZDM-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368799793262DDE9D2C4254ED2ACE95E85092D47B091479F8CC734A05AC42F28272</stationID>
+ <name>AAA @ WTTS-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368D10BE5D886C024084B834D56772289F0F38A9FF81558DDF9F8BBEAE967F075D8</stationID>
+ <name>AC @ WZBD-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368DB713695DD7F823865F615F23BD3FAF90C31CEA709C8DDF3BD0135759EAA113B</stationID>
+ <name>CHR @ WNDV-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536815869A35A8DC30BC578BE7BF984F425452A676FCC8EA05DFDAA835067038AA56</stationID>
+ <name>CHR @ WNOU-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368D71D615F2F21A6181B4225DECF1C5EB845607B80924F44D1E3FF79C8E8F47772</stationID>
+ <name>Country @ WBTU-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853684444A5306C28A77697CA4B68AC5CE56D67D3432B4624D476B112C13C0FC2D73B</stationID>
+ <name>Classic Rock @ WWWO-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368D9D754617AAEB36C87CA6D7639735D24CBC8AB1FD4E0C112786D43DC0A147613</stationID>
+ <name>Eighties @ WGRL-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536815CEA4A66C2B1CDC9C27277AB1E1889FD4551297278AA0DFB26895D83DCB14E3</stationID>
+ <name>Rock @ WMAQ-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853687371407FA8A4BCBAB1AAAA24BBB767D88C8BBF4539128AF232BF3B13945CD239</stationID>
+ <name>Classic Rock @ WTRI-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368F4E61B3F09BA7E9414144E6020CC4CF66A401D969FCD9FBF1EE888A549DF587F</stationID>
+ <name>AC @ WAJI-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368182D8C38D9E3FE245B653C0F0DB3196F6A47E0799E2F297B4934C1EA15C05B73</stationID>
+ <name>Classic Rock @ WAOR-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853689B493878357C9433AA24221982373B29284DF56C6C71232E6FDBD31BF5092D47</stationID>
+ <name>Country @ WFMS-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853680AE2B10B18412B51301A02262B03E2E8CAEE6184AA00C163D44097EDB4C5E94C</stationID>
+ <name>Classic Rock @ WSHP-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368664B8BA9AC580FF153027C5B7B9AB51DC5347C0C2F22192D91FC650AD155685B</stationID>
+ <name>AC @ WEFM-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536820BF4B408A5B479E4914FD08D89D78A505515494139CEB6D77E32E5C81955C46</stationID>
+ <name>Country @ KID-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368C2169A7E4D1EFF61372BD68C6F03C8BFC838BBE0DAE2520CA682E0C4F10E441C</stationID>
+ <name>Urban @ WHHH-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853684B650866253E3BEC96924B5CA9EA425B417CA8E8FD9E0A7E26F8DB21A63F7678</stationID>
+ <name>CHR @ WAZY-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853682933D8CE69137D71750E371E60C085AA18DD9E100CD8DB8B32EB4C8079B6A782</stationID>
+ <name>AC @ WORX-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853688060F67B5299F196B886529460E6130D869FB9BCA8FFFAB8FA8BACC948461FF2</stationID>
+ <name>Christian @ WHPZ-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853687FC5E7638544AD82E3005978B6E53209F4745D713752FFEE15AFF9BB8557DA6B</stationID>
+ <name>Hot AC @ WENS-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368782035CB9CD29DBE54E0C05D765C5945A806CBB41B3463F3F148EFCDF74FC24B</stationID>
+ <name>Hot AC @ WMEE-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368E70FDB84DDF4BE5909150D929D7B409EE632B1181185E23EB5FCC3338413BA52</stationID>
+ <name>Oldies @ WSDM-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853684AD619DF7C2F727CEF8A5490261CC6D945D83F4D91B4749861ECF61E4F3335B1</stationID>
+ <name>Christian @ WXIR-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368B1E8C395BE4D46C9A3E512FBB339258DE69B724AC3C201127B625EBC8F8BFD28</stationID>
+ <name>Oldies @ WASK-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368A87CC0F0D0EA27D73FBC4EC44A5794219C8175DC10120632158DEB81C129D4EC</stationID>
+ <name>Active Rock @ WBYR-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368519A8B20FA704056FDACD189D283F7964F0445C9EAB642CC4B4C059149FCA695</stationID>
+ <name>Country @ WCJC-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853686C178C66729A5E5B029CAB945881272FBE94F07E489DD5ECD8B0D722767A9FD2</stationID>
+ <name>Hot AC @ WZPL-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853688E09FB89049CCFF0C24E98BD2D0279AA312E3EE286C3212D539184B7AC1DDF64</stationID>
+ <name>AC @ WSHW-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368617E3BAD3105F927B5FA60CCBBE901A94ED27D3520575CADA5B977803A3DCF80</stationID>
+ <name>Country @ WTHI-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368EDE53EF8A9885375BBC60B2EBA1D6CA1C7666BEB6A0621A9C0727791D908DCE5</stationID>
+ <name>Country @ WFLQ-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536848B4AD5E7A08AF248978F2B18B9D9656FC82F24E77371E0E09BA897534D5701E</stationID>
+ <name>Country @ WIFE-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368F5B73A83FF64CBA840E05BE88D201FFF547C317BE5D39E0C7E0EF659E38A28AD</stationID>
+ <name>Country @ WWKI-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853682CB91813779F4E35E53E8E93232F27C66579718E2157911DA62F4744B92336C8</stationID>
+ <name>CHR @ WMGI-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536804C4FDBB52546A024934ECCDE47A04757CCF9B34989D805C5F6040283111A2D2</stationID>
+ <name>Jazz @ WYJZ-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368E9341E50AE7B11FEE04E29BF1AB715437A52CDDD557043E9396BEE312E293A28</stationID>
+ <name>AC @ WLZQ-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368A5E2ED055CF84BA98A7C1B2E069C1A23C907C1B06D452D6B5161BB7C76354F11</stationID>
+ <name>Country @ WKKG-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853684287731D5E5BDC1D332FE4A25891AC986ED35EC1A38B304150D8A589497869AF</stationID>
+ <name>Oldies @ WLDE-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853684419F07229DB1F2A184932B49017D3947BE38FE98EE20D5DDEC559511A4F078B</stationID>
+ <name>Classic Rock @ WKLU-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368123FB4CF3A6699F79B9363CD7728E38B78DE67B0E37F2454CA165F73011BAEC4</stationID>
+ <name>Classic Rock @ WBTO-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368CC652FC422C91E5D1E0D7CDB83893D16380417DEF4F841A80571553AA3D2CE3A</stationID>
+ <name>Country @ WMDH-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853683D563E0D4AA34E646A1ED2FA64FAF301384A4A5129A4F8D4E56A70BBFC8E5859</stationID>
+ <name>AC @ WLEZ-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368233042B748FE6353844E680A2AF490C005D343D462869048D402626A31B0D05E</stationID>
+ <name>Alternative @ WEXI-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853688A038D60DCE74A8BD8519E3386D4517440F7C7A6A5F2066165E0B35E8CB7D7F9</stationID>
+ <name>Religious @ WHME-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853683F873B9270A303035209DC33561540692AD6F4D44F962B109E5CBC11EB3F189B</stationID>
+ <name>Alternative @ WRZX-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368A097174C6E232981ED89DEEF6E50F6683CBA57E23A975BBE0CE28E7E57504416</stationID>
+ <name>CHR @ WAWC-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853684EF63A67876D7AB357AAB4456496A82AA45377708B0B170E63C55A093BE89F88</stationID>
+ <name>Rock @ WRBR-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536846B7195AE20F3C186BE062A81A907106B4EA078296117A38F15716D771608A60</stationID>
+ <name>CHR @ WLBC-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368187C2709983E989D01CB4E44F80064B1F6992C885B0A8B4C39D6626C80801981</stationID>
+ <name>Oldies @ WGLD-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536835DF7BA3F1F7F92F462150290F3642EF43D571E69F724B577726CDEDF7FA076B</stationID>
+ <name>Christian @ WFRN-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853683B0BB98412FBEB2FE5305D204F41DA608407E93621D48361F1DCA0E02B60D325</stationID>
+ <name>Nostalgia @ WAXI-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536883D5095691DE844E576425F1F64F51E92A29A9855FD5B6957E85F2B23E8586C1</stationID>
+ <name>Country @ WGCT-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368D12D29D395101AF8E699AC9DAA9C0E46E1A19246AE2FF308AA2008D962241075</stationID>
+ <name>Country @ WKOA-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368DEC91A794F9A99C17100548C1CED5472C9ABBB3CEBCDCC0688BA42723E69EFED</stationID>
+ <name>Classic Rock @ WWVR-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368FA344F7BB17321B8297F9F2F0AB7DDE512798977D6FC66507E307FE26522F13A</stationID>
+ <name>Oldies @ WUZR-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536897E1E7112987A55F2D48F524C11839236D3D67ACEF53BE83E998BC4C338BCAD2</stationID>
+ <name>CHR @ WDKS-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368CCA96546BE10EE7083A40321A48C2E1B1B252FD7F725FB11CEE231BAC29A88A4</stationID>
+ <name>Nostalgia @ WSHI-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368DA84C5AC5005CAEE9D56305569B636ABB0482E64A242A1E1DCFF57BE727D3929</stationID>
+ <name>Country @ WWBL-FM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368902EA3847180B280A070CB7AC5F27BC8D2EFA05C0145540A6CFB701029DAC218</stationID>
+ <name>Urban AC @ WTLC-FM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853683D319D39CBF4F3F484C82286FB2E9039334B85C97AB386C9E92464430688C239</stationID>
+ <name>AC @ WMRI-FM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368B7189B398EA64939617C3468C8859C5F63DB40B7646970A8AB9C324BA5A2034A</stationID>
+ <name>Spanish @ WEDJ-FM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536841F8299E6FCD115F5E8E5F6DAD4360B4B560AAB5CAE43FEA4C5C2C2BB174F327</stationID>
+ <name>Hot AC @ WRZQ-FM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536808E503FC28C6BC197B3904EAD0A7B0C8568DBDA4BDEFC32133904ECF13B022B5</stationID>
+ <name>Alternative @ WZZQ-FM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536845272EA7C514F697ABBC1B9997FAD537EB8B239F3BA4867B790F9BC5F5B429A5</stationID>
+ <name>AC @ WMRS-FM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368EE7FE940822529B17BAD7AE62243D9D02A6652CE13B9BA08D4F351B41FB29A4F</stationID>
+ <name>AC @ WTPI-FM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853689583567F404B33382413DCD7A6B8B76A0749C634BD71EE2101D5E80E5C56B4F7</stationID>
+ <name>Country @ WBOW-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>0.64</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853685EC19AAC3CAE2D81ECEFEABF56E19D2B0619E15BBB0F57BE34BF0DCB1E8F98DF</stationID>
+ <name>Alternative @ WSWI-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>0.82</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368D38EA6FEA055C2724BA3721B25D0C6D59079F8A2BF23B75EE89CC69C1402DBE7</stationID>
+ <name>Sports/News @ WGOM-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>0.86</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536856C73165850D8A8D412A844055ACFCB924F710E1BB7F9D790224252346849F8C</stationID>
+ <name>Oldies @ WGTO-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368DE701B912B592EA6B04C584092074C959F57BBCDFD6EDFA20CA91FC0C829E789</stationID>
+ <name>News/Talk @ WHON-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853684095F825FFB360FC1C2034C9EA9B7AE3AE3855EE1D258001E5AC60BFEF9A3F0B</stationID>
+ <name>Religious @ WXLW-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368C8588483D2615709C6557FE919D491CA911D2BF21F50E79C8CD61710A6964C7C</stationID>
+ <name>Sports/News @ WSBT-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>0.96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853685F66F1989A5E442ED2B0DE66070B68EA4E4BA52E31C1DEFDCA97A842E176949A</stationID>
+ <name>Oldies @ WTCA-AM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>1.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536800FEB2A56BADC7E365B78CA732E1F2A1747129F2D5124D023304542BD8DDADB0</stationID>
+ <name>News/Talk @ WIBC-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>1.07</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853681A8E86CD661837A2E245D67DB65E718FCAD672A80B01A9330D940E2A58229CF2</stationID>
+ <name>Religious @ WFCV-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>1.09</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853689A77649CEF724DD45A599D87DC6771709D0E7C194D5A19B2544B95308931A594</stationID>
+ <name>Oldies @ WAWK-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>1.14</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536874C91D31A82797FC29F8A73F88EEBC9E346192DCDD4CD27C0D6209AAB1211F01</stationID>
+ <name>Religious @ WKCM-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>1.16</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536898BAF7AC688F06A4013626B0E6A60B6F204B9EE654D1AADF7B68BD7BF6F45BAE</stationID>
+ <name>News/Talk @ WOWO-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>1.19</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853686C45A9BDC4379E16DB02DDD0CF13AAA7C01BBB61803523E9D679D15407150E52</stationID>
+ <name>Sports/News @ WTCJ-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853682944E0186684E2A2AB1357988349BEAFDA110087BA0F91FB89E39426BE6D40E1</stationID>
+ <name>Sports/News @ WHBU-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368932794F749E409BE009637C9ADA432C17E008B475AC54F23F5BF1ADA74F1398F</stationID>
+ <name>Sports/News @ WNDE-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368677481FF1BDB15AACA1334B5A9694B927F7D23AA391FC5B5C4F4661E691D4577</stationID>
+ <name>Country @ WTRE-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853687A90D7C5A81F5FA09D2C2D2F5BF8809536D0BDC716295748961D0E72BD4CCEAE</stationID>
+ <name>AC @ WTRC-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853686ABF8B0461D769333C1F2416D8624B1321320AFF53A50A86D79799EAD0D728A3</stationID>
+ <name>Nostalgia @ WVMC-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368CB669226A6B9221429BF9DF2315C4EFD4F4864945356410317EF9B738799E099</stationID>
+ <name>Nostalgia @ WONO-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536853375A98699A8DFE45BB38826BA34B650F4B38BB6A052E546DD764B776F9F495</stationID>
+ <name>Oldies @ WBAT-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368896566968B261C216D04388646A84982044B26D9F951401C92217BCE2AE3CCBA</stationID>
+ <name>News/Talk @ WIMS-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536870998AD11403D664F1D81A270987D7461A0C46D601E38D13E133EA7B68D4ADB2</stationID>
+ <name>News/Talk @ WXNT-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368368FE446C325E3A426BBD76AA7AC068B46810FDBD04ABE5D3D090C269FC72C87</stationID>
+ <name>News/Talk @ WAOV-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853680EA5CD7CCCFAFBCCFCE5BF431EEB9BD83FE1DE1200DF2A7656554647E3A94216</stationID>
+ <name>AC @ WKAM-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853683A794196E49BD5D50AA44E660EFE66D0215CB982361675BB5B094D0B071410C2</stationID>
+ <name>News/Talk @ WTHI-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>1.48</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368BF7347DF408A84502BC98D6C34ADD3909BC7F305680E6EEFC857F69181C7E013</stationID>
+ <name>CHR @ WNDV-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368AF3771CE28AC720A4AD22D73889397EB72D6C77C8981AA3C89D7F24298478826</stationID>
+ <name>AC @ WKVI-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>1.52</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368E855F6834C64920830C26ADD0EFC7E641E7D3CF9AD33F75F09639ADB34A73B27</stationID>
+ <name>Sports/News @ WMDH-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853684D62D80D13F1954136BCE24CE17AAF6BE8580AFB5882C4D1CB224D0D04C47528</stationID>
+ <name>Oldies @ WRIN-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>1.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368892BF4EE04FD0E28EEB34F10B45E774DAFDF5D6233BC5B9ADA17537A85EB1714</stationID>
+ <name>Oldies @ WILO-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>1.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853681B2082CA9CC260AB6E69CC60ADB566484744119758D6DE562E5D3C4D1171709D</stationID>
+ <name>Country @ WJVA-AM</name>
+ <shortname>104</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368223CFEDE3D3F4BA1169D243194A9A32C95284EAD81C25650EEB1D0CEBDF0BBD2</stationID>
+ <name>Religious @ WNTS-AM</name>
+ <shortname>105</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Indiana_am.krp b/kradio3/presets/usa/Indiana_am.krp
new file mode 100644
index 0000000..34787dc
--- /dev/null
+++ b/kradio3/presets/usa/Indiana_am.krp
@@ -0,0 +1,278 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Indiana</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853681D830523A341350188CF7EFC9AFC605983A35A0938C7F61B17EC9890BAD4DA50</stationID>
+ <name>Country @ WBOW-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>0.64</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368C8346E710770106E54B493AEA27E399ADDEBFA1866A155C57D656C7DBED3B9A3</stationID>
+ <name>Alternative @ WSWI-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>0.82</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853686BA9DE5FF4230CBB222F9928725C0FC4C3D81624CD887D13C121845566318A1D</stationID>
+ <name>Sports/News @ WGOM-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>0.86</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536899E9A171CA80B4219813F990925703B878CA97612484D04A1DC940C3BFBB392E</stationID>
+ <name>Oldies @ WGTO-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368490619ABF1821D22E9B6171875F16A218A4D6AF3232EE5F1E95AD0019E3A94EA</stationID>
+ <name>News/Talk @ WHON-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853689A64182C08AB51FC42F397A9455DFFB59422937997B062BC8FDB7DDBE35A73C0</stationID>
+ <name>Religious @ WXLW-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368AA4EF7E1634B9333E8CCA5CEAC290572011F28C949E108F54DA50174FAE9EB74</stationID>
+ <name>Sports/News @ WSBT-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>0.96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853689683CA713A0849D15A5050F2A8EF976FDD54EE4CC58DC26CA75D8E4A6FD67CA5</stationID>
+ <name>Oldies @ WTCA-AM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>1.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536836FA146B77F781F36E832202AD33F96E61FA8C842CF6E40878320F4F285D45AA</stationID>
+ <name>News/Talk @ WIBC-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>1.07</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368E67F2244F5EF3A2C5F7947B89716AD1867ABA8CF49B12AF578FFBE9D2023FBD1</stationID>
+ <name>Religious @ WFCV-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>1.09</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368452FBBAC60D2E74390EB9804EC78F8EFEF3C9EAF76593BEB66C6EF64DF964AC8</stationID>
+ <name>Oldies @ WAWK-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>1.14</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853688B0D3BE2D14588563FA7B707DC016FDDC6C409E1773DC2367540F1E28B19E1D6</stationID>
+ <name>Religious @ WKCM-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>1.16</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368D6001E9A1A36D1DC273F4C7683D110218D6290BBD1E8326C2E40D5C6E406F5B3</stationID>
+ <name>News/Talk @ WOWO-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>1.19</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853688E4A7EBBB1A11F589CF838002A9408E968E8074A6C84DFC3A27B0677C84D232F</stationID>
+ <name>Sports/News @ WTCJ-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368597A0C91040BB027663C545D255314D7FF2BE2BD851032EFE4EC659C5AD1FB3C</stationID>
+ <name>Sports/News @ WHBU-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853689BF179316348BEE62B921B54B5FC97E5ECFDD91AA761C853A6112B7A0D1EE81B</stationID>
+ <name>Sports/News @ WNDE-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368B6396DA8D430B330679B556D18406867B5BE20DAD21A602B36575CF9EC520F69</stationID>
+ <name>Country @ WTRE-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368C1D23E26375835825808D7C85D1A38F2C9B83C8009D70564EC06489EBBB1FE98</stationID>
+ <name>AC @ WTRC-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536817EB233E32CFBE754258CE35A0C3DFEDEF31EA2243A6BCE3404567FDBB9D6B06</stationID>
+ <name>Nostalgia @ WVMC-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368CCB5FCACA4DD2FBBBE9EC3275E7940FD4C96B91AD8B6E32187F9810D66FBEF6C</stationID>
+ <name>Nostalgia @ WONO-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853686618E804C9FE3AD43A5D0E3D59024B102DB78CEF19599AADA149754EA0B35716</stationID>
+ <name>Oldies @ WBAT-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536848AEC63D47B1A06B89AFFBAA8FB00E621664C3401CA7B26730851D82F1BC11AE</stationID>
+ <name>News/Talk @ WIMS-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368EAA800F2CA5BDFB4BCA859AFE4534BE8400D79460E88022770E8DCC788F1AB03</stationID>
+ <name>News/Talk @ WXNT-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853684BED3A74E99170B01E7B7ACDAD08FD3DF978912E115B4B22B3A546A9DCA86751</stationID>
+ <name>News/Talk @ WAOV-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536870AC0D413B655086DAD94CB524CDE99135D19FAC2A4AB5370C78795E853EB9FC</stationID>
+ <name>AC @ WKAM-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368BE621B4E3C1F5AEB371BF4C69EDD8941D52DE181E8B7E44E0B0EC96E62A938F1</stationID>
+ <name>News/Talk @ WTHI-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>1.48</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368F9FAB144DDF269FEF705D4219EF2456432E286AB0BCCC12B1B90723A507835BC</stationID>
+ <name>CHR @ WNDV-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368263EE869A7666BD32AEC2A5671A429C2014A1735B88632388D4917C237AB491E</stationID>
+ <name>AC @ WKVI-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>1.52</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536859439914CA6A5D8F44B25D7B4415CEFC25918D1CC1AFC9E83B42F792E466E884</stationID>
+ <name>Sports/News @ WMDH-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853685DFD11D8F1939A5BD892F5CCF55CE1A831A25DBFC763FFF5D258C52A8661E114</stationID>
+ <name>Oldies @ WRIN-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>1.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853683E3EE60A34B214F023437A8F15BE9FB4EF07F2F51B84D76FBB1BBEB9B2048ECD</stationID>
+ <name>Oldies @ WILO-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>1.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853681D59A7732A9F7A57E5B616470A20519856CFF8A2ED6A702C159E2C15E19E2EEF</stationID>
+ <name>Country @ WJVA-AM</name>
+ <shortname>104</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536890A8A070619CDA7BF456BF583E4689356BC28F889D12A6189FBDCE2DBA975A0D</stationID>
+ <name>Religious @ WNTS-AM</name>
+ <shortname>105</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Indiana_fm.krp b/kradio3/presets/usa/Indiana_fm.krp
new file mode 100644
index 0000000..efd36d2
--- /dev/null
+++ b/kradio3/presets/usa/Indiana_fm.krp
@@ -0,0 +1,590 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Indiana</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338536852B3EDF6D70D0327C9ACE370A59B197FA33D520E8C2C40FF79058EC7753CD0B4</stationID>
+ <name>Christian @ WLAB-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368D481888E8AA24075FF0F69737B8B3FF6EEE18B96A14BD2F05CAD19DF569BB903</stationID>
+ <name>Talk @ WGVE-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536899763AD203E948835141395AD680F448CD3EE57F715BD60630F9FD1299DB78E3</stationID>
+ <name>Gospel @ WBCL-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>90.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368C7AC301EA2683777EE1E8DDBF4D374D7CBE5831A248403FA3A9DAD3DF7A3ECDA</stationID>
+ <name>Alternative @ WCYT-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853683181EB6812C62DB146879C8EFF431E63BCFBBD503BF1700B54E252021064950A</stationID>
+ <name>Alternative @ WHJE-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536877658760E0EBDDE033906E5678CB97B275DD9BEFDF7E13685C4D003EDE37E272</stationID>
+ <name>Smooth Jazz @ WUEV-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368158DE02D1774E09FEE981F59C8770995FB26DCE8D11F588CCCFAAE17991CB783</stationID>
+ <name>AAA @ WQKO-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536815259CD23826C30AD01841BAC7C7FED5CEE6FB05A9EBC03DD743569D2F2ADE44</stationID>
+ <name>AC @ WZDM-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368EE8985A5E5DF892959721FCBCD71EAB3F697AE6E8476927C4A0812784CD94229</stationID>
+ <name>AAA @ WTTS-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368AD3C93BE016D1C85F948FC2FEB7DB7E0F5339E4D4C150131C86FE9005CB4AFF7</stationID>
+ <name>AC @ WZBD-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853683FA589B76AA217F71C026119528FB92652774B90309691D9F9CACAAA246A9FE9</stationID>
+ <name>CHR @ WNDV-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536857F704D8B75A612C6FC5B76711CAA04E7BE4B8D628F7DCBDAC57B13089352A5D</stationID>
+ <name>CHR @ WNOU-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853680333E5F3CC38F943D3ECE837C46772EE67CAAFBA49469823D23D6CCDC81540AA</stationID>
+ <name>Country @ WBTU-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368DE8D922166CCBB5B44E9C842B1610A8C070075E2183D53B34E8A9449197073B9</stationID>
+ <name>Classic Rock @ WWWO-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853682B4277AD761A86B09A4F1CA7D6F3220809F8004C95C0A2CDF8529DB710F49A80</stationID>
+ <name>Eighties @ WGRL-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536860135C49CCF7BAD43A65F8EDA008C848DDBCECD463980FC518BE6DF4373DA1EB</stationID>
+ <name>Rock @ WMAQ-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368E61404FD70C2582BE2D5895AABFDFEA52B89A1516ADE105C008A5CE83B037ACB</stationID>
+ <name>Classic Rock @ WTRI-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368449FF31AA8D7A3D3A13D90DCAABD0A8772CF471BECD3258069F207D3D41D72F7</stationID>
+ <name>AC @ WAJI-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853685550F65A7D7F50AB33B6ADA4E3012088767B39681AACBF959757A3EED00DADE9</stationID>
+ <name>Classic Rock @ WAOR-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368455F4BD3B410C7C03B078E9FBCE0C1E68EC6EB97BE6A8457930057FE1AFC4CF9</stationID>
+ <name>Country @ WFMS-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368AEB676EFD71EE5AFB9152C85F11AE557301AF728446DE7DA879C7F99B89309FC</stationID>
+ <name>Classic Rock @ WSHP-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368C0012602154D3B9F59BA6EA58DBBEEE88BDB9977DDA20A22B5E3C259271A0490</stationID>
+ <name>AC @ WEFM-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853687F53D1EAB72397BCCA8B12E6560B52ED695F025723C690D93C40B5A09FCDB296</stationID>
+ <name>Country @ KID-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368AF6C087A560AF35FDD2FDAF915EA4559915D9AC5B92F195F395F281782B6CF8D</stationID>
+ <name>Urban @ WHHH-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368E92CF08826666D82C06C6991AFF382FE6C1306DAF9C22F96A0881BC05495EEE4</stationID>
+ <name>CHR @ WAZY-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368B0673AE265C613A7BDA7945F93581D87A0DB103916EA3A1B93B16F90EA0E051C</stationID>
+ <name>AC @ WORX-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368C379C434CB4403851E02A5C1D20C9F7CC8C274AA57314853C51386C2B868686E</stationID>
+ <name>Christian @ WHPZ-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368C53B2A4EE111C2A81AED078D90D5BF5E59E23582A41F1276E9C106721EB156C9</stationID>
+ <name>Hot AC @ WENS-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368971FB5EB812EDD78FE3363B7CF36C9AAE668AE125FA7ADD2DD7C5ADD4773215C</stationID>
+ <name>Hot AC @ WMEE-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853689F498A09BC76FE09294754D5C5D688E03143DADA26E990657BEECA255FF4A773</stationID>
+ <name>Oldies @ WSDM-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853682B4881D2BB462C7A5CAA9F373714B2F38BB2F00A31AA30DE20F37320C1CD66A5</stationID>
+ <name>Christian @ WXIR-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853684E75734ADE01A2EB6863EBFD97CD90EEF21E46179FDF54B8C45FAF7D4BFE479E</stationID>
+ <name>Oldies @ WASK-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853687191C1810DFE75B2C5B1C1326D19E667F69592BE8E928A1B646E4C949E2E7126</stationID>
+ <name>Active Rock @ WBYR-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853682A404412D82535A3056F9FF9BFCAFE15A07CDBFA4789FE44461427481CAF0266</stationID>
+ <name>Country @ WCJC-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853688E57357A9486EC2AF4CEEB8B9A8E8E2A5E551634D2D2E1F5C91F098745B8D194</stationID>
+ <name>Hot AC @ WZPL-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853683B49A5CD15E713E481FADEB4FF2C61D6B7C3C2ED4A0926E6ACBC4E8959C8A738</stationID>
+ <name>AC @ WSHW-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368C11389FD8071E5BC75E11CB1971B1A64ECA6F965279837A6707E956D81938B04</stationID>
+ <name>Country @ WTHI-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368C81332417F8495015FF73959981D324025B87A7CA62F65F32B439875F62C91D7</stationID>
+ <name>Country @ WFLQ-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368266209F2A4992A4E4811A043A86ECCAE3AD5305AE3F3C8AF289CBD81C7ECB9FA</stationID>
+ <name>Country @ WIFE-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853688C5D75144295A755A12CA131B22B1D0E65D1A79C6389999846500777CD236345</stationID>
+ <name>Country @ WWKI-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853682551E367598C0AB4B1AB269E4E27071D54E17E53789734DCC0C6324F59365D3F</stationID>
+ <name>CHR @ WMGI-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368D80D4E117A82D60ACE3AC91301B45C008AB0C25FDFCCEC4077B180C6F266EEBD</stationID>
+ <name>Jazz @ WYJZ-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853686A972DDCC6C74D9618CD637AB7E9F276CA044CACFBD0F51D60AA1B16DF4B9BDE</stationID>
+ <name>AC @ WLZQ-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536868E6FA675FB1F487B7D436B0784970C158D26E7F8F340B0E937E4C1901D4F4A4</stationID>
+ <name>Country @ WKKG-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853682543D0E08EBF21D28222C168AF95E7CE2297350D47B9B9E45642B37E8C30B2E6</stationID>
+ <name>Oldies @ WLDE-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368B04FD171CABCAF31AC1508554B448D8A8BB5DBB74D7E90739E95A83659B774EF</stationID>
+ <name>Classic Rock @ WKLU-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853683FBE63881D13E9C1FABE449CDDCABD8D0257822D004529E3C701B397D2174D42</stationID>
+ <name>Classic Rock @ WBTO-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853684E408BDFF0AA9294A39A02DA21D8E997F28123D0645EDDF9B9E4995ED5F9E22D</stationID>
+ <name>Country @ WMDH-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368252835E965196277953E49968DFE61A6D694A19C229F60C726CD0A876ED3965F</stationID>
+ <name>AC @ WLEZ-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853683E7D14E7CB2C7ED57777266DCE114CC36E47EB75FA90B454A35919DDD450A6E5</stationID>
+ <name>Alternative @ WEXI-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853686566FD2FB1368F80B8BB424909B48E63C6A4B7AD3E982949DC89C8B554153BDD</stationID>
+ <name>Religious @ WHME-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368A5671C0B27D5F2814AD78468EB212A332F0E2907697C25E5F141F4DC673C84DB</stationID>
+ <name>Alternative @ WRZX-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368C97122F1A2C1118E258BCCDAF90D49E9601AAD1A6ED534DAE33267AE130C37B6</stationID>
+ <name>CHR @ WAWC-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368817C63486C3D9C40062F81CEF33834CFAD5D9162ECF912A1AACB8F5122D86BA7</stationID>
+ <name>Rock @ WRBR-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368C978A5936E3965B3D508F0B48A398A93DB2AF052903D6D425A1DF8413215586C</stationID>
+ <name>CHR @ WLBC-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853682BE13893E1F1DD28F4F8AEF093FA6E85494244F6783AC54F11BDAF5C9B3BC5BF</stationID>
+ <name>Oldies @ WGLD-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853683B7BBD3FE3A398F37EB8566C4D033232E0DE43A73078E65F530973FA0FB25A18</stationID>
+ <name>Christian @ WFRN-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368D742B3AE1DF0059BD30F568E8076A66F2749BD807838391A173E955531AC348F</stationID>
+ <name>Nostalgia @ WAXI-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368BA8F92FDDC76DE3D05678D04218C40CDBC6FF2D19144220FFA9BB18E88C8A85A</stationID>
+ <name>Country @ WGCT-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536831CDE10E859EFA1FA0D77F54BE5AD21A1870E8518F177A18AA8AFD46AE5FAC85</stationID>
+ <name>Country @ WKOA-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368BC161DC9B2FE520C6E2F887BF59AA70B9989C9BC1B24141568BD55E70D2A361D</stationID>
+ <name>Classic Rock @ WWVR-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536881F82287009E4FA967F3CE90E539DBE6083227A7A999001DD1447024504D931D</stationID>
+ <name>Oldies @ WUZR-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853688283F0DEDF5531760B11EF1CE19FE1A6548CECFAF088B887EC9E2BD1F312EEB5</stationID>
+ <name>CHR @ WDKS-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536883F0475991FEDFBB80DD4C1FAC20E414D102FDCE0AA491CB518E8871983525E0</stationID>
+ <name>Nostalgia @ WSHI-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368CF3CA54805886E1011E92FB87AF4324BECD5AC0F0E90CFB2051E9265B7AEE353</stationID>
+ <name>Country @ WWBL-FM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536839F70E877C485FC0BBBC1B1723FCEBA97F7C24977F9036117FB53E184A4410CA</stationID>
+ <name>Urban AC @ WTLC-FM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536826C4F650E858265C08F5B00C94B6A20D26AE586378E6F7595D64C51F22F803F4</stationID>
+ <name>AC @ WMRI-FM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536874616342DAEBD25303E7DB59379556AAC63220DC81E3DB2B8C1A99AB996C7785</stationID>
+ <name>Spanish @ WEDJ-FM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368A1B7B0EA1B0E52A735E4798161FFA723EFEAB8531D3E3E69874E4B3F91E9A303</stationID>
+ <name>Hot AC @ WRZQ-FM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853689AB0DFF902147B862573B3AF18F1DEE0EC381CE5735366B4D69A6F0344529920</stationID>
+ <name>Alternative @ WZZQ-FM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368EF52F1251F277ADF50D5E07AC05D25C670A2C9C04698F33C5247901EBD6AD709</stationID>
+ <name>AC @ WMRS-FM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368B43BC69F16E1F60943AA6DD4546ED690A934BA0C2BCE8F784A1C1CF0CA0D7168</stationID>
+ <name>AC @ WTPI-FM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Iowa.krp b/kradio3/presets/usa/Iowa.krp
new file mode 100644
index 0000000..3b5f6ac
--- /dev/null
+++ b/kradio3/presets/usa/Iowa.krp
@@ -0,0 +1,750 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Iowa</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853668294429D2920E94A1A3D4C54EA3DE8AF66D2A1BE87D0D267F300D43E858D4531</stationID>
+ <name>Various @ KDIC-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853668353B007E478025FE648B096625A1167CDD0658BDEFFF24F3B0471CB91A3A0B2</stationID>
+ <name>Alternative @ KWDM-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366E05D736EF46A6F9A3AD6863A53387DD1C586AEAFC246E494BA918F292C4ABC8F</stationID>
+ <name>Alternative @ KSTM-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>88.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853661F760EEA152A89C888E8FEC50BDE1B9855E51FBF5F884080A8FBE735480ACDCB</stationID>
+ <name>Alternative @ KWAR-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>89.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536671032E8CC41F6594B54D41F690F31CE28B850984E209384A4983A63B5048DB3E</stationID>
+ <name>Urban AC @ KJMC-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>89.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366B5A8DDA47A9BD82F4C4D7EDC25ABF15A6B702B100B8EC0992D06E2C97DEA1409</stationID>
+ <name>Smooth Jazz @ KHKE-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>89.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366234406FDC7A98AD42B6C34D9607AFD555FE58A584EA2FE3F6A92557F30CE76A8</stationID>
+ <name>Alternative @ KRUI-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536618AE7E1A7094E30D75969C6C8757EACDFBFA417FAF8CAF11C1238F460B5C4718</stationID>
+ <name>Classical @ WOI-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>90.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853666F7A341A7351B4FA7343A35C216D74262A4418890DBF204BC755DAFA8E520FCD</stationID>
+ <name>NPR @ KUNI-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>90.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536624B2AE1C20872067D0B8A58B0D3E202269FF17BEBB887B5D3DC0275558CDB975</stationID>
+ <name>Classical @ KSUI-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>91.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366CCF60CDF493DC0ADC68064DEF6A7C02942C60C0028D4B101795A18F2720E7FEE</stationID>
+ <name>Country @ KOEL-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366ECB260B1B865963744048B4B871FB6B6E82DE014252F94DA4CBBD77EF6239C28</stationID>
+ <name>Country @ KJJY-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536652AD6AEC3D4CD2D73377AA4661CE37503040E74A691CEA169C64390BB5EFF017</stationID>
+ <name>AC @ KATF-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366A21FFF04A76465049A4C903D19C91CE46BD713F8BCEA75F66D8373315FA97F1A</stationID>
+ <name>Oldies @ KIOA-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853663439C1472E6AC9028CA75FC657214209FDAC10E0654D5960DB8993A69DBC128E</stationID>
+ <name>AC @ KKMI-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366EAEAC5ABBE4B810387DD245C31A7789FE2B67589F993D19E843C87542F3E01A9</stationID>
+ <name>AC @ KSOU-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853665E2D8EDCC7DEA4C63716D0CEB8C27F2F6348CFD95C613B26F52556B4BDEC304A</stationID>
+ <name>Rock @ KRNA-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366ACDC6D5982AE48A9F1B31574F64039BD55D33515C2EAAA5688FD25B81C48DDC7</stationID>
+ <name>AC @ KKEZ-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366A628D6D22392461BB0D71A32C814938C197FD4849AE1183FA07B86965E7F025E</stationID>
+ <name>AC @ KMCH-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536698A956A572D973346970B70305A66949EC54C28994E6C13001DF18ECAEB7D48D</stationID>
+ <name>Classic Rock @ KGGO-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853663642A4C5C24D0CA80DB64C971456EBC29D6F026BA16A033A1D1C8346B12F0BA9</stationID>
+ <name>B/EZ @ KMAQ-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536618A971F998F7AEB300B7E8096F8AE128595E6ABBD4BE8CEA7EC9F5890384BAEC</stationID>
+ <name>CHR @ KGLI-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366C2312236C5A6B6D8DD76717237EBB94D938AD64D2D443565DA8348D0AEF56ABA</stationID>
+ <name>Various @ KQWC-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853667E387891CACA0CBCBC08806B2A56222407FE8B10F4E475E07ACB79D482D102B0</stationID>
+ <name>Country @ KCOB-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366C8A8CEB011AD6A6CC5E1136241C5C1D4EA83A163122425960148AF9B001102A9</stationID>
+ <name>Hot AC @ KCVM-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366AE7804CA48A8B24F03E02EC68A9BE4F5811E53DF0BFED7C8B83E1941D1FC9810</stationID>
+ <name>AC @ WMT-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536655A6F8D50EAFB69F5CE5CC0DB4AEB5E1EF510C3A489D7DCCAAE862E350C6706E</stationID>
+ <name>Classic Rock @ WXLP-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366FCD5A85733737A0AC5BD1178F7AAFC2E1C8CAD2D5530FB2EC3582B6ED0321612</stationID>
+ <name>Country @ KHKI-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366D0E2B12196BFEBE4F7EDE485E20B55D16351D29406BB4A59ADEAD539D1E822C4</stationID>
+ <name>Alternative @ KBVU-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853661255BAB882765368C014A6F4120881922355417081FF746A60C08033AD242B19</stationID>
+ <name>Classic Rock @ KCRR-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853666D154DD085B0B4F2170AC5F8F2B011023E1CB6915E5B8F63AC15CF699073A834</stationID>
+ <name>Rock @ KSEZ-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366BCB0E9481BCFCD74D323CB38B91B321A00D81A74412238E90C85420CC3CAD320</stationID>
+ <name>CHR @ KGSA-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536635FA0340AC08315B85D706A713F9A72F789273BCF866173E8EDC93C08E738691</stationID>
+ <name>AC @ KRKQ-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366A79D1BA91EC07F4B0BE3CC87E5517B15E66FC5AA447BE2B491737F6E81181A4E</stationID>
+ <name>Country @ KKCV-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536661DCD5C2433EDB03A03748FBA194BDCA60C6A6418894EAC5F2BD8A5BB3D1F4E4</stationID>
+ <name>Country @ KMGO-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366700DC911B98CD43F1E215E5AC88376E1E011B97161440AAD563C87B3329F52A7</stationID>
+ <name>CHR @ WHTS-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366CF62DBA0B8D1E4294620A370B690E7A74685BE7B81186B003E7681B238EDA269</stationID>
+ <name>Hot AC @ KKBZ-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366E1010CE58F055DE53D86803500749C6457C128ADFFECF4FF3C457E09F46DE9D9</stationID>
+ <name>AC @ KDAO-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366D5924F92D8ED565B383C18A01157A283330189CCE2A448D0F816A12FCA0ACAF8</stationID>
+ <name>Country @ KCTN-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853666284BB024B5B229E726E6EA2236F815EC9AD4D5E5BF83762071F61B174B9376F</stationID>
+ <name>Pop/Alt @ KMXD-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366E9499FAEE2B57EA861D6ED05FAE9FAD86EFC6281DAE64E78FDE473E64270F14D</stationID>
+ <name>Classic Rock @ KKRQ-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366396C10DAEAC8001417025CE6B5FA1B4A80A11C72F8868A530E3E0B57479DF605</stationID>
+ <name>Oldies @ KUUL-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366C6EDFA71F8665601DD7107A2111E6F8452AD666F24715660685397837367A686</stationID>
+ <name>CHR @ KDIS-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366C4931F9C48CE39B11D2BB5F38AE87E63D378FCEB92A339F70B5556B5D9C7320C</stationID>
+ <name>Hot AC @ KZSR-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366F80F6768BE4208EBE9EDCB6B5A0EC81E41E3ABB4B15A33603EB7A981CCCE0B2A</stationID>
+ <name>CHR @ KSTZ-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536657DEA01213C8C32537F5E5434E361373575F045F87C8FEA38FF0861BA58D7481</stationID>
+ <name>CHR @ KZIA-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366E06D5E0782FAA88EB678E7914B4FD62D6D784ED9A7BF5C2D75FB7595A0670CBB</stationID>
+ <name>Country @ KDMG-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853669D6EF8451CB86B80CE070F755C20C607021744F429ECADBA7F731F858B82786F</stationID>
+ <name>Rock @ KAZR-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853667ADD81570CF9B4B0300FE327FC35CBC9B1E79409D6D74925AC685146C514ED20</stationID>
+ <name>Country @ WLLR-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536657A25D0E9F23F19EC8A768283893FE915418399811D84A1BB000BF577E0C6D5E</stationID>
+ <name>Soft AC @ KLTI-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366CC53788E1E33775C0D6345B8B59D2E92AA755EEDA6733675AB3BA830E4D9642A</stationID>
+ <name>CHR @ KSRT-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366DF07149D47F295FB5D742912289805CD8D70F9FFEF6AE644C6D9EE1D8380B5BD</stationID>
+ <name>AC @ KLMJ-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853666EF261FD62962344653D8511BB4DE4F39D045D16F78BB9F93F36737E967B68AC</stationID>
+ <name>AAA @ KCCQ-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366D5EFC218D8217379734FE91756F7B80350EF766662B6C3BCFC89423F694E56A3</stationID>
+ <name>Alternative @ KELR-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366CC2BC3B7FCA68E62A7697643269EB08D5643B49DDC5C99BD85CFED74DBECAC90</stationID>
+ <name>Oldies @ KOKZ-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536641B2A37922633920EB8E850C62C426FC4BEC68D7C6D8B0CB0F03202E9332AD8C</stationID>
+ <name>AC @ KLSS-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366F1A74EBDC1CB168988DF5F8C2B8A999A2E56D51AFBF309BC90B1E7A965351D52</stationID>
+ <name>AC @ KYSY-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536632B3417882D5574E82D3939CB2DA1AC713B0A8D12D0D9FB9E2A4FAA7E5B16E61</stationID>
+ <name>Modern AC @ KRTI-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366D25CACC266E119E400E6FFD05C581E10CF832E343AD802EFA2047B126B00E56C</stationID>
+ <name>Country @ KIHK-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366AEF4F03B95F77C1BED51B35E3E5A58A6D34121A707ADBD54E9DE7E8DD22380FC</stationID>
+ <name>AC @ KSFT-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366F946EA03EE88558FE843B50CD4E2D5A4AF5261B0474FD4DB82EE2FA6A1FFBA6C</stationID>
+ <name>AC @ KGRZ-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536611D0AB05574C679AFF810CCE746C962E09F1F86B82B9187A7F21086F2A722314</stationID>
+ <name>CHR @ KKDM-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366A4CE5B97F2F0A81C6B20D3C9D2975240C62505B0B921DC9AE883D7CA38A9C694</stationID>
+ <name>Active Rock @ KFMW-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853661893AA446780B69938E590A9D0C56E6BDE99D7363F22AEC70BA17AD0BE1C85EE</stationID>
+ <name>MOR @ WMT-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366689FF747CE6C8C9095AC29C8CFCA57EE50EF97051A8FE90B31B328E2D1417ECA</stationID>
+ <name>News/Talk @ KMNS-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>0.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853667424183E7A5CDD0513877A93C46CB001037A5D725C7FA7CE731E9D3A6D35153D</stationID>
+ <name>News/Talk @ WOI-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>0.64</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366AA0FFC016F05A4945C7B8E0FC8589D06D7CF6A5F3A93698F261EEF651668687C</stationID>
+ <name>Country @ KBOE-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>0.74</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853662637CC995E424B692F0F79F15202018DAE326EEA1F3CCC6B001A479CCE53185E</stationID>
+ <name>Sports/News @ KXIC-AM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366FC275D6C26982ABEDDEA826E874DBC1D4AC22CBB748E11B9F42FCA1D657CC594</stationID>
+ <name>Talk @ WSUI-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366848CFC987A9B2793AA8DB65948DCD4208AF13906E6D41857ADA439929B977C32</stationID>
+ <name>Religious @ KPSZ-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>0.94</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536642F85C4CEAF79ECAC0B73F6E21CB7F158286D402CAFB1891EEB09348DD699F71</stationID>
+ <name>News/Talk @ KOEL-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366A0A2D1F313521C3D245881FC125AA8199F87D63D8D24590AD01290DC6BFCFEDF</stationID>
+ <name>Country @ KMA-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>0.96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366CAA1E9A52743478F68084C6D0E5C518A19C580A26C61A374311E666B8B670F40</stationID>
+ <name>Alternative @ KGRK-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366E0DF00C65F56E8855E0904DB023CA7D367A9BFF145DCC3D60A2200C02C9E37ED</stationID>
+ <name>News/Talk @ WHO-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>1.04</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366D258915CD665CCB3E2694D4085FF7853682A36E28F7A253473F98828EB0B8CD5</stationID>
+ <name>Religious @ KWKY-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366BA0F43C574C91AA882F5361B86F15E425FA45798713511F89DEB6CDD0B0A97D4</stationID>
+ <name>News/Talk @ KCNZ-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>1.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536691AAD44DA9F7040565E038ECD77AE83AA7B07572975B9B516817B9063374E847</stationID>
+ <name>Nostalgia @ WGLR-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366D795B739934F55220CF003E4BD6E0C4C77E7988611E1D21CE0A66E51BBF19775</stationID>
+ <name>MOR @ KGLO-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366FD13A84EF3FDC6D54C6B0C1148841B0B078E949E24DE8F89EF00CA73591D13D4</stationID>
+ <name>Country @ KMAQ-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853664ED2F16C46D2C7B3724288BA4E8126F5A5726213E6004E9A68E4B475856DC52A</stationID>
+ <name>News/Talk @ KSCJ-AM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853662473DC5BD2CB7C63ECF1EB25D2F3717BDAF73B140B361F6DE0952A9B17AA5C69</stationID>
+ <name>Nostalgia @ KDTH-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366A32F2612BD5FE998F460D3B534E72362694DF86FDBBEDA7FDE50D1CC32BD818E</stationID>
+ <name>Childrens @ KKSO-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853666EB58F120F54746AD05F2D0751B39F90B8511A20E8DC3C1FBB885D24B111C246</stationID>
+ <name>MOR @ KLEM-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853669C1CCD62BEE70D33558EC27D9A16AC494034C872285591DFBF12920C9B7FC4B0</stationID>
+ <name>Sports/News @ KASI-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853661253BF00A30F44F459A568F88BBC1858186CF7C9209AE7AAA33F50B9611E2751</stationID>
+ <name>Nostalgia @ KMRY-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366991801239DD4ED5D7ABEF5864F883B6C3A24B31DAB7FEEE108601D9972303CCD</stationID>
+ <name>Sports @ KXNO-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536667EBE71D8B39F518E55167A91A3A372EEA68A1006A93658B280D10E9203BAB17</stationID>
+ <name>Nostalgia @ KRIB-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366A833DEB56CC25A02A1CB9E693CD69B29BBDC6CC6B35599F39E53DA9529A71440</stationID>
+ <name>MOR @ KIWA-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366B121F9E81E6DCB988AC776D1D90B696174F7BBC8AB12DB724AC9D91284B781E4</stationID>
+ <name>News/Talk @ KWBG-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853667880C88DDA1BED8A585D16EC564DF324274A7EC947A15E88AE3420EBEDEAF161</stationID>
+ <name>News/Talk @ KCRG-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853663C4D96739FDD634127AB1E8E5AEB66B2E1758CD0DA83CF93B157B43A0BCE7005</stationID>
+ <name>AC @ KCJJ-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>1.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853662835B95632D989B8FAD6A012C7E85F2B0422BC73030EE0D9FF4358B3B8FE866A</stationID>
+ <name>News/Talk @ KBGG-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>1.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Iowa_am.krp b/kradio3/presets/usa/Iowa_am.krp
new file mode 100644
index 0000000..f83e37f
--- /dev/null
+++ b/kradio3/presets/usa/Iowa_am.krp
@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Iowa</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385366686A3E37F88405DE9340A95AF6F4DD39D9F83DCD5BBB9CF400E07622DA2FAC4B</stationID>
+ <name>MOR @ WMT-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366B92E726084F3759D998102476740AB16E1D08817BDA5A869028BFC1551604E20</stationID>
+ <name>News/Talk @ KMNS-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>0.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366073A44C3C3CFF93A3AB08F8B7164A44F2047F73B53C7BAF37CFF0EEBEDE3A369</stationID>
+ <name>News/Talk @ WOI-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>0.64</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366157A14FBD62EE4633E71A10BC8E0853DD251DD31A79F222FB72BC476DBFF9864</stationID>
+ <name>Country @ KBOE-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>0.74</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366CCF295EEC840704F829861A925DB9ED85C43125A369E0C41BFD4A51245AA8E31</stationID>
+ <name>Sports/News @ KXIC-AM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853662CA852FC891CC8CCB9CFE454A2C31B00ABDD2BB560C89040FA2D680406333ADA</stationID>
+ <name>Talk @ WSUI-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853660E95C32FB498E6843087303DF9E1439DCEC360E5BC91BD9326AC44FF9D611B61</stationID>
+ <name>Religious @ KPSZ-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>0.94</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853663611C07CCCDC1ABA5642AFBED9C4F56393DD83997F4B78714C1151660A9839A0</stationID>
+ <name>News/Talk @ KOEL-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853662258CA2B5A2CFDA698611D9E956A8974140BE17390199DF29A0365F7E93E2759</stationID>
+ <name>Country @ KMA-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>0.96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853662C7B5646C17EE15018206E4FDFE03C67F577E148DE50063E0DA9E753E3DFFC58</stationID>
+ <name>Alternative @ KGRK-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536641EBAA151A1F060F782CC484F1240B23350287556BC7942C9BB73A888778BEA6</stationID>
+ <name>News/Talk @ WHO-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>1.04</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536690CE408903DDC7E6C52618A0C4B5E2E94B1BC0463DB10E42185019649F21C2C4</stationID>
+ <name>Religious @ KWKY-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366857E4A37093ECC695478CDF9BEEC58086BC3893FD4D7240510A3CC932EB4D0A8</stationID>
+ <name>News/Talk @ KCNZ-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>1.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366AA691D93DCE4D4098D1DA6A12A9EC60BD5A0B2EA1DCDB8834F3BF64F85344B4E</stationID>
+ <name>Nostalgia @ WGLR-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536679F507CD4472A286486E98B58B5351E83099A76B6C87D2E96A572C52FF3ACA07</stationID>
+ <name>MOR @ KGLO-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366101ECAA30255021F5252401B1C4B3D325066919AFBC598331B04109DB168C266</stationID>
+ <name>Country @ KMAQ-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853664B06A6EEDA9D3869702F46A94DBA560AC9A87E73CA588CDBD0389093AA516552</stationID>
+ <name>News/Talk @ KSCJ-AM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536687D5576B121D0A7F253806D6E6285B6FBC45BE9CE98F713FD9526727CBBD23F9</stationID>
+ <name>Nostalgia @ KDTH-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853664CF934AE43AA1AE5B2B81654C63A1B29D41821BC4CD151EF324AEA96BA8A949E</stationID>
+ <name>Childrens @ KKSO-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853666341A59B31DE548834552CED5868E12EFDB6B0DFB7C2273C5E48C6ADD30A29C3</stationID>
+ <name>MOR @ KLEM-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853666642447AF444A42C051B36406873997A30F1518F2938F68CA5BE22E35ABCF860</stationID>
+ <name>Sports/News @ KASI-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366295D6EEE66515E0E5D84471F87843E2D76834C66687EBAC7F4AC4C772DD2C268</stationID>
+ <name>Nostalgia @ KMRY-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366ABE75B7929799CA2971C4118C0DC977D752EC0B3E8E2C60AE9FA776BE08E85D4</stationID>
+ <name>Sports @ KXNO-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536668D1D9F74CFD88CA4BB29388F007D9E8FC3471937199764590A2D301D493D270</stationID>
+ <name>Nostalgia @ KRIB-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853663CFB6760574E0F1A5CBB5DF2CF730D0DB2AFD68A0BA462D98BF6BC83AFC613A1</stationID>
+ <name>MOR @ KIWA-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536630826153339F0FC368A63510875D89A3AA0DAD6BA74B4045D0E4BB0AA5D93536</stationID>
+ <name>News/Talk @ KWBG-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536647452BB1F317B74EC27B2C968592B5785CEA0B689F8785092A797D90FB2EA677</stationID>
+ <name>News/Talk @ KCRG-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366AC65B904DA42C8026BF913345C110697E4DB8B40513FC7DB6963B6ACD5E1855D</stationID>
+ <name>AC @ KCJJ-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>1.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385366C370879B326D61022FEC4ACAB48D05D13FF420A17878B7C89EFA7D60D30D7FAC</stationID>
+ <name>News/Talk @ KBGG-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>1.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Iowa_fm.krp b/kradio3/presets/usa/Iowa_fm.krp
new file mode 100644
index 0000000..06e16ec
--- /dev/null
+++ b/kradio3/presets/usa/Iowa_fm.krp
@@ -0,0 +1,518 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Iowa</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385365539C0880DF9C38494BAD6B08BFDCF3AB2B0C2DC05C62352C54695A532E8E0DC0</stationID>
+ <name>Various @ KDIC-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365EACE6605EF8ADCFE119351EB5A2FEE449AADA0BEDAE607981B883034E8E9F364</stationID>
+ <name>Alternative @ KWDM-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536576F6E2E83B8B8E6D8944982002ED8B83D2CE3BA80F867A4A9A3EBE5CBEB518DB</stationID>
+ <name>Alternative @ KSTM-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>88.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853654ED2F6A0D20D61E27D99D3F15A0020324BC6E672610C2948442913E1C48D4D86</stationID>
+ <name>Alternative @ KWAR-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>89.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365E19946DE0B598F59D4E5C7069F1BC13323BB0F2F57B6B84CB6FC9393576AD836</stationID>
+ <name>Urban AC @ KJMC-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>89.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365EE65776A8F4A6968F1213DFEA1D649D6E895E5FFD5B2E75222238A887AC9DA84</stationID>
+ <name>Smooth Jazz @ KHKE-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>89.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853658EE594D0C64F49BA1721FADB68E62E81F7D2461BDD83F4C4D5A7D28A1FD135C3</stationID>
+ <name>Alternative @ KRUI-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536531B2936B316DA27614530FACE322924FE996AFC5EB4D3811FC7455465F5D78DA</stationID>
+ <name>Classical @ WOI-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>90.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536555790A781C1E9CCC9A4B79B0A4F45F323A58A233762E3864F0AE9FA95C38AAC5</stationID>
+ <name>NPR @ KUNI-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>90.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536532730C96087BDADE46D5FEF0477B63D478BC849B2A48330C42045B63871EF497</stationID>
+ <name>Classical @ KSUI-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>91.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365ADDDFDD1F6FDCE9BF1E73905BA4BCF4E658D381A69AC919F8B298EC18A31CD6C</stationID>
+ <name>Country @ KOEL-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853653E8978F469DB6B6966FF88FA7DD35C58B445A5AA4511D3A18D7B47664D890665</stationID>
+ <name>Country @ KJJY-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853650043FC5F8C511F862A969F567F0FC64D14748A192589EE752317CFF822997579</stationID>
+ <name>AC @ KATF-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365247C17677F9CE99B01C85856CDFB3F2B3AB87F05812CA65A6B50C730CE2BCB16</stationID>
+ <name>Oldies @ KIOA-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536513B5F592D11654875644EFCAD50CD8EBABE9FB4A5C389C74055FD3C2505EFDE2</stationID>
+ <name>AC @ KKMI-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853658950EF97B8C3B90E137DFA2FA6F8BB0D6DA461653F26F0AC9D899CDAEF13F88D</stationID>
+ <name>AC @ KSOU-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365668C38AECC2DD674DDB33289A2828BB84B937DF02112E8C4DDAAEAB182AEC6D3</stationID>
+ <name>Rock @ KRNA-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853659DA9C7D439E8D76455E7EC96B797FC1DAC445020D359624D93DC0951F9357960</stationID>
+ <name>AC @ KKEZ-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853657085C1791ACFDB6086DB00A6CF6AAFF1EB683E4025E95214B769ECF06A3A338E</stationID>
+ <name>AC @ KMCH-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536584D5217C636935AA4861CE91BEF4689F06C8167C8898A9190F46B80B6BF33392</stationID>
+ <name>Classic Rock @ KGGO-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853658B93CECC59B1BBF2A47F5F6214B2BD566308354CD9157CEFDEFF7C6F8BC12EBE</stationID>
+ <name>B/EZ @ KMAQ-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365961CEFE369B12D06778BDDF5AA5DB774C74A654BC1CCA7D905B0A6AA948B0F80</stationID>
+ <name>CHR @ KGLI-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536528B709A2CD1AFB71F23BB3DDCE4BE5185D3D0D4A484D1B4BCB1BD178352A1B11</stationID>
+ <name>Various @ KQWC-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853652E5CD4FA07FD0E18AA015A76A6785436032FB15D1827EC613E4A073C64D6DCA4</stationID>
+ <name>Country @ KCOB-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365E022D93D83038D762CD7C46D285608E308031B3C5BEC23960B79D7F814D5B4BB</stationID>
+ <name>Hot AC @ KCVM-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365E2705B2ED3F05B3F84A0A9E6335BDBB5C34682B9D81D0B48D331F2226A80B94D</stationID>
+ <name>AC @ WMT-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853652EB24ECFDA775BF1CDDCD9B22AADAF3A7ABD4FC3C16151185DA4D4B483ED59CC</stationID>
+ <name>Classic Rock @ WXLP-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365E6EA778AF7099BB1A19C70AC46A48BB7109BDAE3CB8F6242087335279095A595</stationID>
+ <name>Country @ KHKI-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853651B3D38A4D10D8F3B9E0C99DDEB7B6D207D0AA45C1A944B2BAB2961BDB56E80CF</stationID>
+ <name>Alternative @ KBVU-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853656C8ACA55876F08C9B027C37CF713A10E0EB05F6BEBCFA837A2D523235467EE4F</stationID>
+ <name>Classic Rock @ KCRR-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853652B61634E0626DD20A0E7D967892E80A1E40BD9D0CEE1FE1AF5C578D839C625BA</stationID>
+ <name>Rock @ KSEZ-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365B830FA23332CD46011B5CC5924D7CCAF20599C6D02BE37DD9102C18DDDD8AAF7</stationID>
+ <name>CHR @ KGSA-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365B1A2642A125DEFCB4D5E51B0E42AFCE1B998A3F059D5DA6CEF2460B5C8FDDBC6</stationID>
+ <name>AC @ KRKQ-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853654C65C00C63E6FEFACDF32E01384A9A950E57DEE7580EB0A4BFDB3D1219D9B479</stationID>
+ <name>Country @ KKCV-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365CBDCA62C3FCC09C7883EC058CBBF4B704AA80844C6D5761EEDDC71B14EA26243</stationID>
+ <name>Country @ KMGO-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365F3AD9BF214A359A38A89EF0EAE34C6DF67E906221F8B5BD685C39220E83438BC</stationID>
+ <name>CHR @ WHTS-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853657D1ED45C9F4D43908F33D378F8A487C5987A81075CACE7366FF53C34A34CFD50</stationID>
+ <name>Hot AC @ KKBZ-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365E8D23FE87458F9D2D6E44CB25E4E62CBD8B21603D301B01884D9C60E08FE430E</stationID>
+ <name>AC @ KDAO-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365225F5DE1B572D170B6D3353335587BD158BB53FFA3FB2EF4235E6F8FE05E9EC1</stationID>
+ <name>Country @ KCTN-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536520C75D56942ADFF154952BC984BE33D32CE5DBA421B95DD3008DBB7033C6BB69</stationID>
+ <name>Pop/Alt @ KMXD-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365E703C29A32065C66B71AB89D2D418F39F7085B34DFC32322FCA0821684CC6621</stationID>
+ <name>Classic Rock @ KKRQ-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853656F132D38ED7890B521E48469A18BD551AE103D90E08C85A324BB0DA524BA6B43</stationID>
+ <name>Oldies @ KUUL-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853654129CB0B709A675CC260A6C0F492CF9756D569B7096B2CF9077F5E567354F9FD</stationID>
+ <name>CHR @ KDIS-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853659D469267998FE8E9E7DD52516B69E7EC3D2DED78197E4B898B629C0AF56CF224</stationID>
+ <name>Hot AC @ KZSR-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365298CB222A57C1C99DDBFD95A482F4696748F18A5B5DBA928EBAF7656A06E4224</stationID>
+ <name>CHR @ KSTZ-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365782682AA7C67270C3DFA3C9062D8E23FA84BE4A48BFBC7B7DBA8477E9C109FE0</stationID>
+ <name>CHR @ KZIA-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365F7C371B518DE38D73041A1A079801739C8AE0A6364EC127E2705FE824DA07497</stationID>
+ <name>Country @ KDMG-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365C17386D40059747FFA025ADEDEA76DE0C80232DEE8E7F424617E4936F94003D5</stationID>
+ <name>Rock @ KAZR-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853656C35E7626336506723EC36BE62B69E8F03F28C6F658E04F9AD64554F6182C3E1</stationID>
+ <name>Country @ WLLR-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853656A546B059B1F303B5CC600C36C11E26DB7115F5377F534B7063FF9340903C7AF</stationID>
+ <name>Soft AC @ KLTI-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365164A9D119D00B7DC23E3274B375F8208B41FD87FD2DB9D76B0A43BE68A6D67E5</stationID>
+ <name>CHR @ KSRT-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853653123EFFE1473D99A18BE7A39BF1A2C6A6C5D2CBF0FCA53BEA6A46B162AD97B82</stationID>
+ <name>AC @ KLMJ-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365A039C47AB555893BD6259C374473248DB5069466F4B3DABDC68F688015034117</stationID>
+ <name>AAA @ KCCQ-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365197F3B4A53FA6A6CAA39AEBA4288A26C2600A04EA7EAA21BDDADD16F1516940E</stationID>
+ <name>Alternative @ KELR-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853654A889EF3A04FF4644CB2CD7B8708B0FDCD387BD4F980499C3A042610085CB786</stationID>
+ <name>Oldies @ KOKZ-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853650B244DD41072465413D11C7E2B94A842F3DD0340BB0E7BFE783A9833DB55A728</stationID>
+ <name>AC @ KLSS-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365D2C3A19FCEC6A6B0E644DB179D5C3DBB655CC9D82033EC6976AD7343FB6886D9</stationID>
+ <name>AC @ KYSY-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853651C2D5FA616B6C543E7F9E0D8EFB444374E95DAF93A3F76E72F799AD7FE00A901</stationID>
+ <name>Modern AC @ KRTI-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853653233EF53194201186F21706A146B3BAA33AE8C0941BA72D66F827528325E034E</stationID>
+ <name>Country @ KIHK-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365665E3760E82F1600171F4E758A5E64610D07B370275273F1B53B5D5AA96A4255</stationID>
+ <name>AC @ KSFT-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385365EF0BEBD0582BE4F8E5A6DD5A8508DE7B260B60D63A72F5FFFF9A4978CB1AEB35</stationID>
+ <name>AC @ KGRZ-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536547C3F0C4786C3DACE18305792D67E71012C72DEE5EB88E6F9E0E70843EEF8539</stationID>
+ <name>CHR @ KKDM-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853654501F726529D004CDA993E199607E6D584662B70F722F0B06F6CBAC2493A3594</stationID>
+ <name>Active Rock @ KFMW-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Kansas.krp b/kradio3/presets/usa/Kansas.krp
new file mode 100644
index 0000000..157cf44
--- /dev/null
+++ b/kradio3/presets/usa/Kansas.krp
@@ -0,0 +1,550 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Kansas</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853693703CA740E218E3FAEE7410A039F84134BDAF5AE013E8E96E0203F04683BFE41</stationID>
+ <name>Other @ KJHK-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>90.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369AFA5EDB89150BB42FF688459DBA80F79E2CAE4594BE992FD69BBD07EF6DD3EC3</stationID>
+ <name>Christian @ KCFN-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853693C6DC6141C22EDF39B0517B7CF04BEC27FE75F0E8C85E40DF8EBA6F7D2312EE2</stationID>
+ <name>Gospel @ KBDD-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369E71C9D30832B2F2B93177D3B58B397C2CD56EE8B17F352DC0263E67B86302216</stationID>
+ <name>Alternative @ KMXW-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853694BE06DC70802214C0783790D187771C1459B00F28FA99B63378977B31D8958B6</stationID>
+ <name>Religious @ KCVT-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853692100C0E5255B21F1AE02FA476B5C5B40ABDD5EF45D9A5D6356C2E00DF6ED82A4</stationID>
+ <name>Rhythmic CHR @ KANR-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853694FCCF7F5897A9247BF84B6ADC15C6FD75A4DFFF90426C2C139FFA553DCF9A766</stationID>
+ <name>Oldies @ KANS-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536963B9F4080206A5C01332C61978C8970616BEE5325DF1F68584DC9E17DCF3DE38</stationID>
+ <name>CHR @ KDGS-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369257DB96C2FE1E9AA454B81113D351C72E586818460B2BE6F642E7B586FCED233</stationID>
+ <name>Religious @ KCVW-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369606128634F32F300CEEBF024BFCCCECBBC215239A1672910262C28D60BB88090</stationID>
+ <name>CHR @ KJCK-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369822E094947A694D4BC92DAC168049A0611984CC771FE17D851E26315F4BE18E4</stationID>
+ <name>Rock @ KICT-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853699DA4D510AA774512F43632F0A916F7FCC89D896180325CC2D84E1EE973908000</stationID>
+ <name>Christian @ KHCA-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369E08A8E43A2B3EC40044DDA899B3605F8E93528B8CBC7DA4A7E0C3319FB12C7E6</stationID>
+ <name>AC @ KQNS-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369501844C5B133B43A55B3D9E3F258AC532413FDDA3EA790DE7538C89DDBD5293F</stationID>
+ <name>Country @ KSOK-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369E24F77391C4014040CF59126441BD75DE8ECF8B59C19260D814D76A13365B8C4</stationID>
+ <name>Classic Rock @ KRZZ-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536923CDC10979EB9AD45CA6B5F4673C6C73D53D4008005634B2DA2B0DC0F8B6CAF4</stationID>
+ <name>Classic Rock @ KFIX-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369C94C2DEDCD0DA924591BD8CF81BB08FEB695685B2F42987451E028144447B120</stationID>
+ <name>Country @ WIBW-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853694887A8576FFF2B9A2DB44AD76674D1EFEE94CDA38DA3FDFC3D114455D240D327</stationID>
+ <name>AC @ KRBB-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369A2E950AE512AD3A621111E77E5D97E55623271FEBF79572FC6FA660978C4F679</stationID>
+ <name>Jazz @ KFH-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369CEA2101E335688B3A28AFACE87405EA9380EC5FB84F2FE88BCB2609E1B032C83</stationID>
+ <name>Christian @ KTLI-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853698A7C68FE18EBFBC4D52D041BF2A5F82A265F7935CB96107530E9EB2015A0AED8</stationID>
+ <name>Country @ KHAZ-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536936B533AD02BC2FDE7EE8BAC7BCA017EE033180CDE1D0067DE07E2B4F7A203711</stationID>
+ <name>Country @ KSKG-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369D618953D80C0B5CE161368C7F3B851182F622E49E533D9E6673CC8E5FA533176</stationID>
+ <name>Rock @ KDVV-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369C1875C1654732459A709884C847233D52221D8E3FA8557749AC1A8BF6F4867D5</stationID>
+ <name>Country @ KHOK-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369F88236F8A477FB58ACFD6ADF907DCA4AC3B26079C95C24A0836DE4FD9263EA5D</stationID>
+ <name>AC @ KCLY-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536908162B633238EC1EBAAA4C6F80A1F3A185E4DF73EA0DD9E532A66DAB87B4DD17</stationID>
+ <name>Country @ KFNF-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369199792CCC311C248A779CD6D9B9895B77C234D82269F582B2350B46C53E86422</stationID>
+ <name>Country @ KFDI-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853699BE703DE01B5A8585B43C2405A8FDDC1D107DBC797D07323E8AD54B32B132AAC</stationID>
+ <name>Rock @ KMKF-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536959EF1F3FC01BFC0619963D3C4DF416F185BAB877E27F976697F73688B1315E05</stationID>
+ <name>Country @ KKQY-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369AD8CB372B125CC9852271E2937E411E2639A866AE2548E1BA6739EF91802EB19</stationID>
+ <name>Country @ KZSN-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369D3FDDDE72E2C36CC700A1D08865F7C7BEF149246185C72E5FE03DD05199631A0</stationID>
+ <name>AC @ KBLS-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536989D542EAAAAD8FDF8262633CE90414CFB34AC808BB32DFADCC1E8095A016659B</stationID>
+ <name>Country @ KLDG-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369F3323F65064F37DC88DE8C3FF3693A3EEC043FE1EF94814362FB83B9B502634C</stationID>
+ <name>Country @ KHUT-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853697D781320EEF8EC5613367D360BCAD70C138749F22C67A7017A4EDB62D811D685</stationID>
+ <name>AC @ KJLS-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369144F18A5050940B291E6D596EF623674B24BE044FBE7F5DE5C6D8702689AD611</stationID>
+ <name>AC @ KQLA-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853697C164C8AC5F6BD3B7E6067491E93BF201502B917D1C66490BCD1502333A39886</stationID>
+ <name>Oldies @ KEYN-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536959B88A4E095F7A47BFA84FF89A049121C114E9E47CBE76747DE1DCE70EA04C15</stationID>
+ <name>Classic Rock @ KVGB-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369EC18D7B9E7560C6C1C7239DCBE625D6D94B1C6EAC52FC0D9721E07142861DB88</stationID>
+ <name>Classic Hits @ KFXJ-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369326AF16A73F5618B3419F221FC0362FCE520469B929BC822261755F8FDA7D193</stationID>
+ <name>Country @ KXBZ-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369DE5B0AE33AA03E38CA0A01373F0B1C2666F3251E88C321240776C4541789EF09</stationID>
+ <name>AC @ KZBZ-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369D2CF472B3E16BF61510F082EC59C57415E7C9AD4F45717E911C4D77DE93D3896</stationID>
+ <name>CHR @ KLZR-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853694C920D1E59273F5E60AC618FBCD259362EF929B9C23EED54BAA9F47E122AFDEC</stationID>
+ <name>Mexican @ KYQQ-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853699949CC210ACE7FB2F285F126EC40F51EBC9D9F382E25633A01B60491D29A4D3E</stationID>
+ <name>Country @ KTPK-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536910ECB213D93FC1FC923EC4FBB2FA7A2CADF9FF09DBF728FC1DA89009434DB647</stationID>
+ <name>CHR @ KKRD-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369D8C9B137BAAE665081D5E0E8E63CF31F0F162EA6703A997E6BF2C52705414304</stationID>
+ <name>Hot AC @ KSCB-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369B034002100602F5FAF5BFC7D4203120989CA8260145E6B96741B029E2742613E</stationID>
+ <name>AC @ KMAJ-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369711AB4700EB5F7ACE71613E682DA69549EEEC42A7F33E4E81A8BAD20E35EF4AB</stationID>
+ <name>Oldies @ KSJM-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853691204DB869ABA55BCC503315DF8EECB8CB404EBCBB1D48B57B1BFAC80E63C58AB</stationID>
+ <name>News/Talk @ KFRM-AM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>0.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369C307187F0FAD3835A48CEAB4714AC0A5FA88B1E91808269859C75B3BCEBACDC0</stationID>
+ <name>Sports/Talk @ WIBW-AM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>0.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369F8E6BFC71CE9943ABC3AA8FE942F9EC6701D8F827851E4D8D3B97C26A7D90B24</stationID>
+ <name>Classic Country @ KINA-AM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853692400E31124D4BA064F4977B71EF7E24F3584F2722EA58CF505FED3CEFA54A6CB</stationID>
+ <name>Country @ KFTI-AM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>1.07</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369D4F9BD1918C68E48E922527114B5727FB56B90C763F240FDFFCD028EF45E1F25</stationID>
+ <name>News/Talk @ KSAL-AM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369731216B3B18A25B1C231FA81422D4624290CCAF12C36E90F4A7C512D077CDBD7</stationID>
+ <name>Country @ KOFO-AM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>1.22</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536944B14C940ECE7DDBCB991E87B2A83CC1FFAF3B93961AC0F172080EA80BDE709C</stationID>
+ <name>News/Talk @ KNSS-AM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853692C999141FE8B63D6FBD46D5395940FAEA98197D42A4F77E5E3A6730E4F9A95F8</stationID>
+ <name>Sports/News @ KSCB-AM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853695287D6A6D1BF96DC6BE6D895138027EDD7A5F4D133F7BE363103AE994CCE9C72</stationID>
+ <name>Nostalgia @ KSOK-AM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369DC53493C7A135007724BE3130F8937DB449C86518BDF1C7B254E90DECBAB559E</stationID>
+ <name>News/Talk @ KLWN-AM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536954856FA49F8100E0E581D081AFF67E80F9945ED78B832A75A1B68F5172A418C4</stationID>
+ <name>News/Talk @ KFH-AM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369C06820014E6D8986DD11FE6088DA8EDF784266234196ABE2D92ACA8BA86CC06B</stationID>
+ <name>Oldies @ KAYS-AM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853698BB722E59843CDD1A628B664D3E9F65DE58DBB692C960522725C8F2D944C7766</stationID>
+ <name>Religious @ KKLO-AM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369B95F107A4974A9728F1660DD8EBAF8BF099F90ED31D020156767C3D7BDE9016C</stationID>
+ <name>Country @ KJCK-AM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853697A58D6107D4EB1102DC5E62E666F7223D2A1AFB57C402C5D10BCD6659EDF230A</stationID>
+ <name>Sports/News @ KMAJ-AM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853691AD26375D9BC7CC110FFD3EF4AB35E0DB9E918BA1363397C5ABD27678AAC11C5</stationID>
+ <name>Sports/News @ KKOY-AM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369E8953DA03534BE8B416956FBE40F626AD501CCDD7075DC6B016EF917B886ED42</stationID>
+ <name>News/Talk @ KQAM-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>1.48</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369BA285761113B5305BDE8BAA4FB90F5FCF9291A25C94CF227957AB44235EAC78E</stationID>
+ <name>Country @ KTOP-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853694B106CC7D557A0968990F7319E372DA0D97DC3D5E32321FE298FB8C5867E5009</stationID>
+ <name>Nostalgia @ KABI-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>1.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536983E62F167A212CF47C7442743FFD8EED09C9B1D502614D15C5B88BFC5C05A520</stationID>
+ <name>AC @ KVGB-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Kansas_am.krp b/kradio3/presets/usa/Kansas_am.krp
new file mode 100644
index 0000000..474e902
--- /dev/null
+++ b/kradio3/presets/usa/Kansas_am.krp
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Kansas</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338536921D7DE339BEB3403FCF1DE53DCAA13F09D9934F84D3AB104A586EA4FE230A2A9</stationID>
+ <name>News/Talk @ KFRM-AM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>0.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853697D9B1778D6BEF1F521D544623B41125A9F5A84BA1FCECE6A72FF1C798B2A5163</stationID>
+ <name>Sports/Talk @ WIBW-AM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>0.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369E199AD488E94217F9F10244C9DA9486888B68B350780DE3E5967B3B3F2877BF7</stationID>
+ <name>Classic Country @ KINA-AM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853695C4915676735471CDD5C53314EFAD2B87A93838900D70A8C6905BBA49C14E8E6</stationID>
+ <name>Country @ KFTI-AM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>1.07</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369190D54D34C2BA16406DC241AB115E6B87F75A01CE68AA78DEA44A653E5AE7D5A</stationID>
+ <name>News/Talk @ KSAL-AM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369B102D478157942186FFBCDF116A284F8476180C9194557B2A46DAA34995A6C14</stationID>
+ <name>Country @ KOFO-AM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>1.22</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369F4CCF31F5A2488AFF69D08D18EA625E71DEFF31D2FA873DFA1E865E5D1077AF9</stationID>
+ <name>News/Talk @ KNSS-AM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536935D247E36819B6A0E0685B262B49A19E7A811C3CA3C90C4C0A180C8F6EA444FD</stationID>
+ <name>Sports/News @ KSCB-AM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369E07702A086FCF32DE4663A72533CC177BC4BF2646F7FF3D5686B724E59AD4412</stationID>
+ <name>Nostalgia @ KSOK-AM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369626D562D84900994DA8BE2AC9BCF6A83C478F0E481D8E1D105370A6724F8B152</stationID>
+ <name>News/Talk @ KLWN-AM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853699AFCDA213764A98B1F5A4D1920102D38CB9F5726F121A20E81C5FE5711704BB4</stationID>
+ <name>News/Talk @ KFH-AM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369F96252EE92A1AC4289631F16F45C0E76B737928B4CF70F589F73C8295B2ECABC</stationID>
+ <name>Oldies @ KAYS-AM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369F35E728B11E4D70E92A83E7F8E84B9B4D7FC37D17BC092E145CEE6AB15F72D54</stationID>
+ <name>Religious @ KKLO-AM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853699A3E351BBAB826F8753E3D62C209E9562303BABCC6AF997C3450F578AD421B6E</stationID>
+ <name>Country @ KJCK-AM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536977829F9474F0099CBDB02885B34D566E404E6BF54FEEBA179505E8EB9A1D02EC</stationID>
+ <name>Sports/News @ KMAJ-AM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853694C65531CDDD4528D14C634A23860D4C461E0E61F51CF6402956B7F405DACC792</stationID>
+ <name>Sports/News @ KKOY-AM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369EFE38C5C3B2D52B0C6F4B0F6B106362C67980099C415D410DD937CCAB5646D40</stationID>
+ <name>News/Talk @ KQAM-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>1.48</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369328EA50A73DB1CA7DA55AB2D30465274669044B6AFA6DEEF90B96C25DBED4794</stationID>
+ <name>Country @ KTOP-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369929A28A573E116A1BCF0F9F7CEBB90C78FF61CEF033E863A54BAB85AF9EEF1FE</stationID>
+ <name>Nostalgia @ KABI-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>1.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536946AA8C1D39091D8A8B90E9AD895AC6B929FC84EEF9770E69A752F4155855E7C6</stationID>
+ <name>AC @ KVGB-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Kansas_fm.krp b/kradio3/presets/usa/Kansas_fm.krp
new file mode 100644
index 0000000..cf89252
--- /dev/null
+++ b/kradio3/presets/usa/Kansas_fm.krp
@@ -0,0 +1,390 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Kansas</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338536802F6FD56A38434D9D87A3D86A6ECFDAAC7782CF1F62A9F4010B0D0EBF5C6690E</stationID>
+ <name>Other @ KJHK-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>90.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368481C18D7BCBA555D9ED7BDA5CD6FDABD70AAAA00497E9AD20A34F32AA0D70F7F</stationID>
+ <name>Christian @ KCFN-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853686F5EC8B68FE5E912D64CC8A7CA45B2B342A10E394DA91390F8664F0DB2AA38CA</stationID>
+ <name>Gospel @ KBDD-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853680830C79ECC13C817EB6EC0C61BA52CDA373A10249C571E1DB867A0965ED8E18D</stationID>
+ <name>Alternative @ KMXW-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853684508EE67F3C4F58CB44879849CB0A1A08B83661BBB61ACD369933C6DB115C18A</stationID>
+ <name>Religious @ KCVT-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536842869789D6FBD5DF8F440633EBD087B02996D7A5C6D73B536BCBE9859C6C84D2</stationID>
+ <name>Rhythmic CHR @ KANR-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536882C139C45F24D3CFBD4FFB0F41EFD7BAA2E345D1D9927B8422A95779C964DFA9</stationID>
+ <name>Oldies @ KANS-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368AD7D59C74DEB5BC41B267CB45C2E92978C7B8DDB521C4E3D0C4ED66F0BE726A0</stationID>
+ <name>CHR @ KDGS-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368C6C6770A74524A579E509EEB61039E310605AB12C9FCA56E9DEE2A351CB04481</stationID>
+ <name>Religious @ KCVW-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536808F48CD038FA342A8840E4E881C8E821231308955DEEB18B67ED3C73F1AA4BF2</stationID>
+ <name>CHR @ KJCK-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853688572462C1EC51E15A2BD30514694B65180EA99A1F3C233B1D87041731F7FFE84</stationID>
+ <name>Rock @ KICT-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368C6DE11482AB34EBBE6893A717CF232BC5204CA2B1159B709A8470BD7EEE5BB33</stationID>
+ <name>Christian @ KHCA-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368B21F4735678A7FD11004CC414E58842A8F5DF41724D56D1AB91BEF51B36F94BD</stationID>
+ <name>AC @ KQNS-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368E19BDFFCDEA714C1BE71BEBAE5F6516C51A0626C4FFD4594FA031236EBE4913A</stationID>
+ <name>Country @ KSOK-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853688DB4E7A42385E3FD3EAE89D964ED03FAD57E1AA0C94145B0F232781297755D0E</stationID>
+ <name>Classic Rock @ KRZZ-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368F661016DAC801F907BB23C12DAA788FCCEBF127F16B84B1F4CBE4351F2CEDEEC</stationID>
+ <name>Classic Rock @ KFIX-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853685DAAE0330F9251538454286E1258730ED42756BDBF3A6DCD41BCBF935FB29C91</stationID>
+ <name>Country @ WIBW-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368FE5833284AD7BAF64FF969C80215421F35489C60AA8B3D37E52C942E6428424A</stationID>
+ <name>AC @ KRBB-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368B4FAFF0B1905172E6CD130DE11ED32B27DC30C24C2192F82AAEB572737077579</stationID>
+ <name>Jazz @ KFH-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368ECB012A4D71213A6328BC74907B22B9C4EB9A2A5ADBFB8E686D3A99C442EC88E</stationID>
+ <name>Christian @ KTLI-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536806FDFFD6F501032A314015E5D41106A4FAB2FDA4E5D81BCB7095D9200769DE2F</stationID>
+ <name>Country @ KHAZ-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853682A820E36CB67F8D9D95E73AD81859F7FA058D1E37485CD2CF173899F944C29A6</stationID>
+ <name>Country @ KSKG-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853683BB3BDD170E9A2E75A838B5F8D2D3735AB35A452A0931BA4F0CEBAC4C925AD03</stationID>
+ <name>Rock @ KDVV-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368F9EA6EAD7B5D9ABCD32052361AC4C695D9EF02BC7FF018A373EF6AF622CEC7C9</stationID>
+ <name>Country @ KHOK-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536873423FCE7FC6F6C3517E85DF15E29C0B2DE8E5187A8F19CE31FEF59F6EFC8521</stationID>
+ <name>AC @ KCLY-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853682A1ECBEF8A533F68E4EB95CF22C03CCE420455FEED5A8100B8861956E0E57736</stationID>
+ <name>Country @ KFNF-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853684218ADF37525DCEA1E32D11BFB438E09A44CAE4CBB47AF77AB826FACBC61CC08</stationID>
+ <name>Country @ KFDI-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853681F12B6C3B3F27E25CE663070935C4876133EEA49585FC37BA413A0C5B54018A6</stationID>
+ <name>Rock @ KMKF-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536894A4F1C1A196ECB98B3CEAB9BF58B217436553754CFD960D7CFDF950E4451662</stationID>
+ <name>Country @ KKQY-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368CCCFC10FCDD50C826DA44D678CB355A5BC0FC552FE29E67A9CEB55365F048296</stationID>
+ <name>Country @ KZSN-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368A2D0176CE72661C74EBA6992AAACB1334231E1B16E3EE00C59B4EE8A697D7680</stationID>
+ <name>AC @ KBLS-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853686A7E70FBBEFE5256618C723C8CC86DAC31662DC98BDFFF9DD8B8A12DA1CD3E9F</stationID>
+ <name>Country @ KLDG-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368F7CB21ACEF1EB0DC962681DE5469A65D52C0A795CBD0EF056E8A6DA584D16332</stationID>
+ <name>Country @ KHUT-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368E34CB3CDEDCCD8179540914CB5F3EFF22263D29DB58B2E92D1E816338E267F35</stationID>
+ <name>AC @ KJLS-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853684BB8C02ADCE9DB92CE5BC9F803CF2C7B77BC771FDD8B5F9D26FC9C2B4488EBD1</stationID>
+ <name>AC @ KQLA-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853685E3B08859F38733E3ADDAF4FDA1DAEF2D818ACFA82A739696233BF55D7CA8BA6</stationID>
+ <name>Oldies @ KEYN-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368E4AB312B057D1AB2F6C258486891BFE223B648DEEE332CEAE26DAA6737E21E7B</stationID>
+ <name>Classic Rock @ KVGB-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853684D975C5E3BEC50B9BE903136AEEA35F19CF7DC27261EEE4E6AFD4D0A228B2B8B</stationID>
+ <name>Classic Hits @ KFXJ-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536867D5DDCD94D28B92320F13621AB956A8BE5F251A9EDDD7AF5C88A225C9A5528D</stationID>
+ <name>Country @ KXBZ-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368502EF0D10EF69641A03CD3BC2AD029E19DDEFE1244F24A28461FFE9C3E1A491C</stationID>
+ <name>AC @ KZBZ-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368C9D40EB08D13BDAF07B41B37E535BF4B2EC094FE1305A832B94E71D4CD9770C1</stationID>
+ <name>CHR @ KLZR-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853688AB1485074C87FDF008318F2178766226B05065A2C5E3396DB939E59DD8F6E9B</stationID>
+ <name>Mexican @ KYQQ-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853686F31FA74B0E74E8B59EEE3EFC20E722170AAF73E74D9F9BAC42B970DCD541F00</stationID>
+ <name>Country @ KTPK-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853687707A36DE9ACB528A439C701AD49B1B0EF7E76FF4605850F6D71DC25DB1C1098</stationID>
+ <name>CHR @ KKRD-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536889790CB7632E468C27756C5AAC5375D336714DBF453C8822705BEFFAD7B0C029</stationID>
+ <name>Hot AC @ KSCB-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853688AD954403DBEBB1597244FE2630E9EB457206DF07CDC4E1B54C6D45225832B5E</stationID>
+ <name>AC @ KMAJ-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385368981804D8CFCD6859B39946C81A4E2E3886FD06527F3BAACE98B2C8EB50FD0A82</stationID>
+ <name>Oldies @ KSJM-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Kentucky.krp b/kradio3/presets/usa/Kentucky.krp
new file mode 100644
index 0000000..e88a7c9
--- /dev/null
+++ b/kradio3/presets/usa/Kentucky.krp
@@ -0,0 +1,622 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Kentucky</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385370ED10735AD1E6838DFE84B21396D32BE29DD22794E42373D9EEC8702E7B215AB5</stationID>
+ <name>Christian @ WJIE-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370646A32A26C61B891C1D34D5E3C1B7913D62EB2D9BA1082CCB8B5AF8448868181</stationID>
+ <name>AAA @ WFPK-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370F778820825633D23CD605ABB5CBB00BDADA0D50385DE65A50F8D9D8F20C42FA4</stationID>
+ <name>Eighties @ WBVX-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853704C2ADE6BCBACE82FB93845830E453E1227B59A1F81FE4F3BBA47704C5FC636D5</stationID>
+ <name>Country @ WBKR-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853706198A7C9D33CE5FCFD0860CA3E7D7B3D4427FE4A3D6BDB9CAB47F19AA0E2FFF3</stationID>
+ <name>Christian @ WMIK-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370FD5C49AF6AB27B7057F56341BE2FD6C84D8DBA1376917B73635940B5CD1A36CB</stationID>
+ <name>Country @ WVLK-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370BC18BB218F88BFF29CD22A3B9173C4F4B69D7C8B1B963F48916BBC5DF445B889</stationID>
+ <name>Country @ WDHR-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853705AEFC3EC285912386902308390C9009C2E9A597FA0305D9BFCF40D0F75670A1E</stationID>
+ <name>Classic Rock @ WDNS-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370ADA032596FA8AA266D3DFEEC194BC2125545E5B8E322513BC787C8843965A772</stationID>
+ <name>AC @ WLLK-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537006CEBF4B67DA55FE66DD799AF083A7AADFBC24856F6E774E904272B8A52FCDCA</stationID>
+ <name>Hot AC @ WMXL-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537084BC271EE2241704A5C2364ABDD82BB316105F4080D012CBDBC8750EB6D94D2F</stationID>
+ <name>Country @ WBIO-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853702B2D7E3B943A4EBD4E4C6CFB589C66B50450732195BEB3979109B9BC7A1AA2E3</stationID>
+ <name>Country @ WGGC-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370B91CBD8C8E4DABF9BE041F18ED7BAA706036846D85BA5C84E36E581D2EB8BB8A</stationID>
+ <name>CHR @ WQHY-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853706839A8904DC8CD1C957D07C8AE424C8956867A74A165F9797FB835F10E4A3F43</stationID>
+ <name>Country @ WCCK-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537062EB1C35F04A8EF75BED14C29F196D143CF289CB59D9A12C70C3C57090EFC1B4</stationID>
+ <name>AC @ WFTM-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853705877D3470223AC272C0B6687D7D78CF79DCED49D3CB88A4521AECE62DD711D22</stationID>
+ <name>Oldies @ WLXO-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853707846F259755CF7784E74ADF4A865F1C6B19693F296254F382EBB396F5D82E446</stationID>
+ <name>Urban @ WGZB-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853701F80B6B16269E94BE517D3274A9FC94AE6C690CF670D5C2A4C24AB8ACEAFA595</stationID>
+ <name>CHR @ WDDJ-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853707C5254658800A25E4260DB1957717B87C80935081602ADC133D9D21EFC421099</stationID>
+ <name>Country @ WSEK-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370D5285889F7F8084CF4E0DFB8A1909E0850EB000E4AAD17853AD640B61DBAC5FF</stationID>
+ <name>Country @ WAMZ-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853708D284F340D9F8CE900D228C81C4FD6C55CF87AC0B23978610458937F37ADD914</stationID>
+ <name>Country @ WHRZ-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537041CA4312FA117CFBAD9D524BFFB7F8C1323598B8B8A1F727CCB2CDBA665304AA</stationID>
+ <name>Country @ WBUL-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537043E93DB9ADA890977F3D1689B5BD9E12DCC8FF1C9C93E7C7C99646513038170C</stationID>
+ <name>Religious @ WOKE-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537030CF611FBD27B3180DEB7196CE74BAF83211B8F7185C5A11973F8F68703E229D</stationID>
+ <name>AC @ WZKF-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853703F033330CEA67D5411115F7AF6322A2D62093DA250D03885DE8CFA4A5E976B80</stationID>
+ <name>Country @ WKDQ-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370F46262C1E934FBFA1646C9260547E66F55499AAE673381A61EB81CBF741E7C5E</stationID>
+ <name>CHR @ WDJX-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537023D50BD1A58A1C5E2F69E36FCF432C048B506055779A80C4922B6AF5A8028832</stationID>
+ <name>Country @ WVLC-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853707152FBAE42CA553112BD1B4F05E5778B5A76D8D3AA05CAFDF3B7FA7AC0719E5D</stationID>
+ <name>Rock @ WKQQ-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370174FB5A0CE30B51007E6C29A327C85B4CA309C64CD1DCD9400BA0CD9C4FBC399</stationID>
+ <name>Rock @ WTFX-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370EC77754F1E9B6394B114F5672543341F85FBAD359B46AA9F6E7F0C73176C4389</stationID>
+ <name>AC @ WKLX-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537008D96F031E08BBF00110D46877BC5F0884D418F1CD49170BDAA8DBD162D93C47</stationID>
+ <name>Country @ WSGS-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370820D3F75DC8FE545DBAC5CBE7376C466F560A5EBF672897E36770D0C4DF8E0F8</stationID>
+ <name>Oldies @ WMJM-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853704176789A9382C1CA18956795C2031571B3E3EC1C63D8CD88613E29633B777521</stationID>
+ <name>Classic Rock @ WLRO-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370DE66F795627113D0B2CD278F529682109FD82E3F2335BEB37D4B11785ECA1039</stationID>
+ <name>Classic Rock @ WKYM-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370600AD472331AA61DFA7E616CBE032C676E66E0A0A67900A672C834398436F146</stationID>
+ <name>AC @ WKYL-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537021B7C2F37F72010458A3F153CA2E0C4050C008773F23C0D6C93B690502782ACA</stationID>
+ <name>Hot AC @ WXMA-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370E853D5D597273C62BD2CF7293ADF133D0953E764A884C89C644F3ECD15131A47</stationID>
+ <name>AC @ WEKX-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370E00D9FBA21593834AD247417BA66F39F801CE2D4751C5E549BBE4AE746DAA11D</stationID>
+ <name>Oldies @ WLME-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853700024EFF50B90EE2BB0F67B48AC8D1062ECA1F7C6B05D291AA4A6D0F6D6F024B0</stationID>
+ <name>Oldies @ WRKA-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853707723E96AEF26632091528B16B500F0A4CD8C652D1EC6BB61014FB0F083AE4A84</stationID>
+ <name>Active Rock @ WXZZ-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537009D8C4C4CA723FEC0C7F122C6EC240F4BDCF2CCAF5936573633E87711A1D555B</stationID>
+ <name>Country @ WFGE-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537098293530A53259B92B1318044948B74CD5DB2D3175A3D61EE27520674DF38340</stationID>
+ <name>Modern AC @ WCKQ-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853706930CF6BCA23EB164F10D79D6778C471EDF4F66897731A36B7C087B1816D4B92</stationID>
+ <name>Urban @ WBLO-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370B26F7B2E88881C56FD73F531965D17D1D4BC0C4E4AD91C64F8C0EBC0D93B133D</stationID>
+ <name>CHR @ WLKT-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370EFD48EA7B85CB6A03EBC18C16F25A4CDC3DDE8E95139F1F0F6EDA2CFC2B6A783</stationID>
+ <name>CHR @ WKHG-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537083DFDDA73C9C7BD4642F8A33C6E6584F5D07A64FC4D747057B6431AFA86135A6</stationID>
+ <name>Alternative @ WLRS-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853705840E101AE7E721C8DE1320B106984DF6D88B8F84B5266AB12CD44B901F93BE2</stationID>
+ <name>Country @ WMPI-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853708C6E90CF8791CA7F91107FD8E77E019724DCEFB707FC57D781424D02DBD129C6</stationID>
+ <name>CHR @ WREZ-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537012BEB2B2BFC49DF5AA142CAA3DD686C1D9DD30E918514F6400A7E00B1F5F5F09</stationID>
+ <name>Rock @ WTBK-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370F3F56AB28A3A660D66E0BC3EC0D385585616D4AF6F0B6B8D1CBBF9FF4DD30BBA</stationID>
+ <name>Americana @ WHAY-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853704962DD266E946F9B7AB1E0F1D2216DAE087536334A70FF63946CF0117A8C39D8</stationID>
+ <name>AC @ WWZB-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853707F15712E054955241BE79779083F35650A4034401DD8CD473C07E1F6AA819B33</stationID>
+ <name>Country @ WHHT-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370A3A3F806024BE38891F106EA252D768E672C7934BD63F2DE33D15BCD91199C84</stationID>
+ <name>Soft AC @ WVEZ-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537026335946A965C6CA15439379EF7C44F0C41A615B1B9E6F602BCBCEA2D71C59E1</stationID>
+ <name>Classic Rock @ WKCB-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853702E7B6881271902F39F72E409167582733BF931A2BD8A6679D4A6257328E53C09</stationID>
+ <name>Religious @ WMIK-AM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370980EC815B36EF0DDF4FE1F4169FEE74834FAC2D62012E3BDF4C0A90D408F8CFC</stationID>
+ <name>News/Talk @ WVLK-AM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370D43412FC9F1BBE10B89557AE5E2F2ABF2A97BBEBC7AB79B241170C4337912C0C</stationID>
+ <name>News/Talk @ WTMT-AM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>0.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370587A2CBB6EAEDB7BF9E58CDE1F909E1F8B588252D07A0B64C1579D194DB6C7A4</stationID>
+ <name>News/Talk @ WLAP-AM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>0.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853702AA9FD576BA599D9700DC70C6F21C8785F376025A399A2B5A32AFCDFEC924E8A</stationID>
+ <name>News/Talk @ WHAS-AM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>0.84</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370434D152DB1EB7BD1EAB3776A7D6BCEA7EBCCD4921648B96C2ADB91C84E512124</stationID>
+ <name>Christian Talk @ WFIA-AM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>0.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853708A2C16DF53226EA71B87D07B7C30705FD73EAB198ECE51A134EA1011E729E4BF</stationID>
+ <name>News/Talk @ WGTK-AM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370990DB6F68BD3CC7FECB72BA0533108201BB046C34EACA920803F263FB289CD72</stationID>
+ <name>Talk @ WKJK-AM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>1.08</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537007D7DE212356744DBDA65F41081573FEF49F0CA0EE8F3D54B213F93105BCE7DA</stationID>
+ <name>Nostalgia @ WKED-AM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>1.13</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370CD3516B87F2AB6C8915E823925163A52A39CC206466C1CC6E0FA099D2E5FF351</stationID>
+ <name>Sports/News @ WHIR-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537087EC2A173470EA65E2629A445C8C0EB4FDF3CD18F2B3488CB958226A5B5CF2D5</stationID>
+ <name>News/Talk @ WSFC-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537026BDDE9B9ECF3DD56D38D82F8AA654F221087D6C5EA32D1979CC05037E5A8B21</stationID>
+ <name>News/Talk @ WLXG-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537053B65E2B2FC233994D459F315EE0CC3258A7FF45F1FCF3B0B8DEEFD49185AA4E</stationID>
+ <name>Country @ WDOC-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370809A9396C112590DE15134600CEA6979F592C3F703984782504093F7F8D95C32</stationID>
+ <name>AC @ WBRT-AM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370919B88C9266206A95DA4DF189C82FB5D37DF7F1D3B76F703856D18615726519A</stationID>
+ <name>Sports/News @ WBGN-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853703FFAFC1C5E1C46E230FD4F8B5B74582FB82A1C2D48C9A66FC2430E849EC14181</stationID>
+ <name>Religious @ WMJR-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853705874F489165D97FA3B8AA03C1564575D0D722853109210761D40C1545D776B66</stationID>
+ <name>Country @ WEZJ-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370DF763782222F897B136BB282BBFF44B71FC4B653F03FD199924BC7D32E44F3B9</stationID>
+ <name>Country Gold @ WAVG-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370423056A782E7CB27D74577F84158E78A33A01C07B364D6619A7CC56E3C5D8AEA</stationID>
+ <name>Oldies @ WCLU-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537019EAA7FD77F2EBA69B68F6FE284BA5FBF365B13B72BE506BA6E6F410D3A1CBDF</stationID>
+ <name>Oldies @ WQXY-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>1.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853704C3B3D0846A2584159EA07C9F07E4CCBFAA15DD59C27617504CC8A1D26C54A7E</stationID>
+ <name>Sports @ WSNE-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537031C21D02A1B59B0F0211C812D7727D770BEFF10EF901C564623692121907F326</stationID>
+ <name>News/Talk @ WTSZ-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Kentucky_am.krp b/kradio3/presets/usa/Kentucky_am.krp
new file mode 100644
index 0000000..26525b8
--- /dev/null
+++ b/kradio3/presets/usa/Kentucky_am.krp
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Kentucky</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385369797B92308831DBD6D5B9206E60EB410173D168CB6062C2DEFA798A5DFDCAC980</stationID>
+ <name>Religious @ WMIK-AM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369A1ABB2A24C4FB46A088C37B933417BC3263648D6107B17925A59A2DBBFF956EE</stationID>
+ <name>News/Talk @ WVLK-AM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369829FC7C4ED5C3262A98556C477B138B7C748CFC5D6DFC70E431E461F3C6049B8</stationID>
+ <name>News/Talk @ WTMT-AM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>0.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853694F5CA6369AD61722F6CA5E62D75C4337149563B7453A067FF0231E0A4D14995C</stationID>
+ <name>News/Talk @ WLAP-AM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>0.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853697FC29ACDA1F4EF9814BE851A2D384FC15EF77B68454A41A4E538069951721003</stationID>
+ <name>News/Talk @ WHAS-AM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>0.84</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853696136EF321CD9D11C0FE45640EFCD45A89CB4A4F3D43B0EFA5AF1E291C02B3C44</stationID>
+ <name>Christian Talk @ WFIA-AM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>0.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853697A7D41CE543C13280AB2FEFFB5DF5E6965C052B1BF0C73A6722764E95930310C</stationID>
+ <name>News/Talk @ WGTK-AM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853692783EC14CFA00AF50B3A6472382189CD1DDA6FD4BDFBBAA9C13B558DF5B449D5</stationID>
+ <name>Talk @ WKJK-AM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>1.08</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369BDC3EF0E68D8EDBEC7E1E0822B413064F50CFDCEED29EF676BC5C7A9F9DB5516</stationID>
+ <name>Nostalgia @ WKED-AM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>1.13</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536976B679DC9DCED0916E9036B57D304A868A986D41CC0B17B88FD835D1086C9404</stationID>
+ <name>Sports/News @ WHIR-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369383EA0B12C83F655EC7740FBDB5925B9546408AB74716A51DD8DE3961E836755</stationID>
+ <name>News/Talk @ WSFC-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369601A0E0129CEAC873388F00D058A963E776CED50E670E9B12667CFB584C75B17</stationID>
+ <name>News/Talk @ WLXG-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536915600DE7805DEFF688961B45DD156DF896562C879B7AC4FB351911D6E78D5C36</stationID>
+ <name>Country @ WDOC-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369BE206733FA0B76D73373F759AA57DB4A34D6823504E04FCCD865619398BA0D3C</stationID>
+ <name>AC @ WBRT-AM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369FF091A95633BA574C0BC3BC7F37E118D12128FD1645BBAE3B8ACAFD569840840</stationID>
+ <name>Sports/News @ WBGN-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853697C1236B1A57CA36F15F8F77085142323415952E27850A64504B6C328C3C5768F</stationID>
+ <name>Religious @ WMJR-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853690B90A91B8593C7D20A8A063C0AB8ECD1006A40B108405C091503A35E73FC4F4E</stationID>
+ <name>Country @ WEZJ-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369758432C9B1C897E58C15E9712FBB7CED180D1B618A79865700606C9094EC2620</stationID>
+ <name>Country Gold @ WAVG-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369E9696C08F19EF8B88F67A03E16C2AA0BBF0D425702DE7622FA20E3B09329ACF0</stationID>
+ <name>Oldies @ WCLU-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853696B0F60679B8AF807B4357B2EC529B62DE4C4BD9437A52F20F425304A2450F9B4</stationID>
+ <name>Oldies @ WQXY-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>1.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536963DE479EFE0D85F8EF3CEDB9BCEA5B055206DBE12E52BF639F8E8A2666B46803</stationID>
+ <name>Sports @ WSNE-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369D032B9A95649EE6C144EB5CF46961FED1ABBAE7956930EDF9583ACA2117E0637</stationID>
+ <name>News/Talk @ WTSZ-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Kentucky_fm.krp b/kradio3/presets/usa/Kentucky_fm.krp
new file mode 100644
index 0000000..6676d57
--- /dev/null
+++ b/kradio3/presets/usa/Kentucky_fm.krp
@@ -0,0 +1,446 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Kentucky</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385369FCDBED60BF63471A1AC212EF6AE326F52FF30F9C42185DC186FDD8901C85E97F</stationID>
+ <name>Christian @ WJIE-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536937B353ECA5FB02090C86522795FAD1FCCB94369130707B8AAED07AD61C18C4C9</stationID>
+ <name>AAA @ WFPK-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853695C91FECB604391F24582C48817B4618F94A697E9039BAEA3E28BA4B85CA3207D</stationID>
+ <name>Eighties @ WBVX-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536999A5552D6F4F1F41D032CD7F188C0143917FD979740FF460A98F46176DF33B29</stationID>
+ <name>Country @ WBKR-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369165AFE0EAC348D0B163F820B6F2ABEBAE0E8F08E0AD55B12F89EB01A0BEF9BDF</stationID>
+ <name>Christian @ WMIK-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369DBFC062312B6B07FA06987D51D79031EB55052A7EEAE3A641E750D802FDCD3ED</stationID>
+ <name>Country @ WVLK-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853695A16121544D6809D6B826C7CCA0E0F5890CD70C1CFDFF954466B2BF333C3C4F3</stationID>
+ <name>Country @ WDHR-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536983C6F9BF2F6AB3F7D29D7AEA906A9D037EFBEADB0FC03C6AE025C9B2F0391811</stationID>
+ <name>Classic Rock @ WDNS-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369917E40F52973FB4EAFDE229547205ECE920EC428AA00D4099E6B81FCD6E96DC0</stationID>
+ <name>AC @ WLLK-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369E5468164EC4A284FEC52AD08F73BEB357C4E42E1BFD8DD6D009A9E28F82D2D4C</stationID>
+ <name>Hot AC @ WMXL-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853691279D01E092FEB55CFDC7EFC74CB160D78F77C44E12537A20412053F86FF78AB</stationID>
+ <name>Country @ WBIO-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369391BEDB4F01F892D780244A6CB0322A3AE742ABD6926AB7C4F8F84D10390B997</stationID>
+ <name>Country @ WGGC-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369FABEBDE4168A9AD59F0E6229B7705782EF80F31A18CDB677AED05FE283DF5C58</stationID>
+ <name>CHR @ WQHY-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853694B8C3753DF6C4250E5BB4C18FD069CDD27DB3904B3D4085371E9D295F209EA78</stationID>
+ <name>Country @ WCCK-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369688D85A9531D2843198186C72F9F80D98F12AB9F504A4E376C18B5FDE37D5B3B</stationID>
+ <name>AC @ WFTM-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369280F6275E2D4429F9C566715113B4AF278CFCFCDFF81D8B30B6BFC2E571D9057</stationID>
+ <name>Oldies @ WLXO-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853691FA3AEE69B4F85168A1A1DC306E44D7070ACE346D3BDD05B04A27697E6631D47</stationID>
+ <name>Urban @ WGZB-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853690B78676333ECCB0286542D95B85500DBAF0772AD149FAB6AA1ED4B332C2EF462</stationID>
+ <name>CHR @ WDDJ-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369624B291651B71B88F851B9A65BE206B2F6FE60C4A066364E80C6BB55EF76A14F</stationID>
+ <name>Country @ WSEK-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853690FEBC840E8D6B762AC83F52DED2EC41FD6B7B0B04DA70D56A932070176602A5C</stationID>
+ <name>Country @ WAMZ-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369E4D53703BAA2F65CD77069BFE4D1F4950948EB1D35875FB5EDB30119D5DFE50E</stationID>
+ <name>Country @ WHRZ-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369D3106DFFB65D9C97BDCA95CEFEF90E97837E1AB2C82027F7B9C64EE51A35A4C6</stationID>
+ <name>Country @ WBUL-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853699D0C42EB6AC89BAE3AB19A8EA654D4C3E1DBE7092D9AD6FEEF7E5D77DB87BABC</stationID>
+ <name>Religious @ WOKE-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369E5F5523961E7EE8806D139F627EFC4BA926ED206441DD30FF052531920988EF8</stationID>
+ <name>AC @ WZKF-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536939531AAF64BC89F781543878443EFDFEFCBBAAFAC6AFADEC64FFC21EACBCBED6</stationID>
+ <name>Country @ WKDQ-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853693CB9C88B772DAA4FA868B011382494449BAB414D7753CFC452BF61B970AB2390</stationID>
+ <name>CHR @ WDJX-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369EC09674DED881E76460BE302BB611EFA76AA176FB6B0B1078A1003F15C79208E</stationID>
+ <name>Country @ WVLC-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369A18CE1ABE30AB3D8480B901225424E746A2CFD3069815A63A01199216CBF2769</stationID>
+ <name>Rock @ WKQQ-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369E2487D6690B8CC4637B96DE963C5719A17120B57C599FFC9DE57F0CBD5A9F075</stationID>
+ <name>Rock @ WTFX-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369253D757F77F4D231C09C216116CBBEE239A506D5EF693F61E14BBB069902A512</stationID>
+ <name>AC @ WKLX-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369008E0BD182F06846901E2CF7EB30F06D46A684C28446BFF2AA57D60F034533D1</stationID>
+ <name>Country @ WSGS-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369F9412184BC96BC047E5D62BB86A4D6CA3BA300DC1B43CBD6D25B9089E313C0CA</stationID>
+ <name>Oldies @ WMJM-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369DD605F9DF17F34B35C16ACD50FB7237C48C82AF06E33F681D7159CE85CEC61AE</stationID>
+ <name>Classic Rock @ WLRO-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369D43BD9E91E67484BA5FD44C9B461D26B6B6006A3732C4F9E96F77E51BA5FEE67</stationID>
+ <name>Classic Rock @ WKYM-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853696C82BD616A77CE3A18D96505BA3E7EFB529F0E49F8B8DE4CC8DDE0764E9F26F8</stationID>
+ <name>AC @ WKYL-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369CA7A7FA9CD68CAAF84BE2DB9EA1884F7AF9B86587D0F5D9FF98CA34683CFD1A1</stationID>
+ <name>Hot AC @ WXMA-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853690C5DF3FFA14930F314E0CD3AD678CB763424B30A2D689EFBD0CF0A5EB7517CA6</stationID>
+ <name>AC @ WEKX-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369213F2242B8AA9F2045AAC331A6170C0599E6C62529F77C3F978886985C74DBF9</stationID>
+ <name>Oldies @ WLME-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369814515D05FC370AE482909577484F2C5E27C6D5618F4FD604F006B63F2F9C899</stationID>
+ <name>Oldies @ WRKA-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853696998509057D081AAC5F4B1EE6EF1CBD036DF1D12EF2190E010CBD77F847E8F61</stationID>
+ <name>Active Rock @ WXZZ-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369F22E85E2BAE35F3D888C3D0C6B5A01D5126C7026993DDB25D707C2D261836C04</stationID>
+ <name>Country @ WFGE-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369B50B160D79432835F552D9120515E49384EC2AC30E91909D6F17A27634ADD867</stationID>
+ <name>Modern AC @ WCKQ-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369BE15500A40A3BE3FBD3252F78F3A1D36F12FBA2D3D3FCFD07DE13D039621E3CD</stationID>
+ <name>Urban @ WBLO-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369B11013D23C6D8C0E42B8A9141875C4F74D541EC8EC97D7E4C292CE6960DF3973</stationID>
+ <name>CHR @ WLKT-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369EE3CCFAFE71A42A6049AAFEF03CECCA6D8D3C0C02E4C448AA9E2BCE102F0902D</stationID>
+ <name>CHR @ WKHG-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853692917CC241234FAE7C61D551B18928870D9B97147E332EF9CEB296F68593A426F</stationID>
+ <name>Alternative @ WLRS-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369F70F1A50A43E46E0F5FA90875FBE1E8B3D63187884DB1E33AFA689F888B4B7F3</stationID>
+ <name>Country @ WMPI-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369012E7D93A448C0C359482AD74A5176BD7B3389E3CCB989D97FD311BC5DD2FBE2</stationID>
+ <name>CHR @ WREZ-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369107E9DA65A4664929CF1617DBBA0B93A7F429449E6A64EBE6F02DAA9673E16E5</stationID>
+ <name>Rock @ WTBK-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369EE291B756375AFE9BEB2674B420A511762F8C626B2DAC70008C10B3C40603067</stationID>
+ <name>Americana @ WHAY-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338536918B04138DC276583564085C3BC2F659D3F75DEC7200107A88FBBEC1DD9A1AF7D</stationID>
+ <name>AC @ WWZB-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369A57E1E9A5D897E04081E88B814D3D59A09DA6E67D1F614A963568C3F15C5248B</stationID>
+ <name>Country @ WHHT-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369950FF6627B3BF123C59D238594BB91BDAB6897339607475953BDE2B128C76CDB</stationID>
+ <name>Soft AC @ WVEZ-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385369A913B333CEBE1C2E145D2F9B570DDA4257917A0E37D5A3EA989721B1958A29F2</stationID>
+ <name>Classic Rock @ WKCB-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Louisiana.krp b/kradio3/presets/usa/Louisiana.krp
new file mode 100644
index 0000000..c425ef6
--- /dev/null
+++ b/kradio3/presets/usa/Louisiana.krp
@@ -0,0 +1,758 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Louisiana</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853713E36ADBE9B7D4F61046B64520D92E0CEF21E06D7FD866914C210CCE4B24A5274</stationID>
+ <name>Ethnic @ WRBH-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853715379830BFE0DDA05D8F0039BF5E375F74FB815ABD008FE953A29BB609EAFCBDE</stationID>
+ <name>Christian @ WJFM-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537132C92E7C8C60F4ACFB802FFE80652B35757DAE7B3FA6663DB43B79BB992E6FF0</stationID>
+ <name>Christian @ WBSN-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>89.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371E8E7C90B7BFDE73CE5697D5DB401037F28F1B1F7F695D5AFF8F1C9F7FC8145F3</stationID>
+ <name>NPR @ KDAQ-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371CF10D940FA3AB4E7F570F971570C1A10CCD6DC86150EBD544820F0B324778F4B</stationID>
+ <name>Smooth Jazz @ WWOZ-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>90.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371C627657E206F553B144B78F4E636C8AF2D9C53468858044E57DE0EB96BB251E2</stationID>
+ <name>Rock @ KNLU-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371661F973621A3970CAEEE011083B2EDC4819C6C6240BBEB4CEA0D45481E1A7351</stationID>
+ <name>Smooth Jazz @ WTUL-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853715113F7C21E2FA87F80A33477BDB0A0930AEF4A531A68C817F271C89C1F054AB9</stationID>
+ <name>Alternative @ KSYR-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371C3AED6CE755FAA1930C3A603A6FA028775A1E151A41DF3CF770901334EAEDB2C</stationID>
+ <name>Hot AC @ WCKW-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537134E1C0E021DA1CD63A9F83C1C02BEE9A2494E686FC186C9CFA49986B366B35E3</stationID>
+ <name>AC @ KWJM-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853715748E47DEB6E950A2EA7F828DD060D28E5068FD7B1BAF7B16D6B21C31662A5EA</stationID>
+ <name>CHR @ KQID-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371D9307AA69C20D572E613D621B6D9FC70AB5E55C4F2EAF55DB5165FBE2732AB92</stationID>
+ <name>Urban @ WQUE-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371B0182C8C86DE44B714703A4DF1D994684BC3EF5468748E0D58EE0FCEC5F040EC</stationID>
+ <name>Country @ KXKS-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371037AC70C4E411B7473587A9B80D54AB3FFB3887B1859EF75FAFB2883B7CF6F64</stationID>
+ <name>Country @ KFAD-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371CB7829155B78EC975EAAA12C8044B82F0D5E9C0A36B7D4CCCACD49A9F7EBC536</stationID>
+ <name>CHR @ KRUF-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853718EB570282610B41C625843722D97FDC8E2F765EF9A926D91062AC55483950CD7</stationID>
+ <name>Gospel @ WXXF-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853718CD7C1177035CFFCAEF45A081E61A5D2C02219A4AA0E39D548D93D7F70C8A6A7</stationID>
+ <name>Gospel @ WXXM-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371035B2C1937B7C80829DA33B2AEF0FC4A45D64BB3E206E618C61F0945C86F9242</stationID>
+ <name>Country @ KQKI-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853718C1BDB8EEE50C363FB8D811802FC260C5E342541C43E67780B4A2C5064A30319</stationID>
+ <name>Urban @ KRRQ-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853719FC867F172073FE8DEAF5B9B7078DB83D30CA6F677E9719EE395B70EB1D68BE3</stationID>
+ <name>Oldies @ WTKL-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371DE9CD2F59AC1C1B123B2720665927789E874B2ADCD5276D4102E885515A3F92C</stationID>
+ <name>Country @ KYKZ-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537105F58D2DEB19C67C80C5CFA4749FB4590C1908470432A9DAD993BEAA2C96053F</stationID>
+ <name>AC @ KVKI-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853713135620356C6EF4654899D4CBE874A6A82B38D8B2E643436D36E3123B66EE88C</stationID>
+ <name>Modern AC @ KFXY-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371FDE728CF64897294D8340F20FBBC7AFD15720726AC4B9907E01CB613BCB2E48B</stationID>
+ <name>Rock @ KZMZ-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371EBC26764E55D3FCEFDF5F1A63A93143B745945762D841F6CDD84844ED24BA044</stationID>
+ <name>CHR @ WEZB-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371FBAAEC676C8D769F867B599D18A1E6E1FFCDBE8A165AA56E23A8201DC705B2F0</stationID>
+ <name>Urban AC @ KJMG-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853712922B2A619426D7C14A497D436598A958051EBD86185DDFB1DD047C76B14F65B</stationID>
+ <name>News/Talk @ KAOK-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371D8CE035DA577EEA20DFD7A5F1710EE3A2974E258503437226D40D2D9A2595EE3</stationID>
+ <name>Classic Rock @ WDGL-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371E678DA3874EB34B576CC202C1A57DC799B0DD5FC9C243D457D025CA182E17D8F</stationID>
+ <name>Hot AC @ KZRZ-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537140E00E10EAB52A154D30494BEF65FCA91138259C0080A08A83D6F443E1038255</stationID>
+ <name>Urban AC @ WYLD-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537168F43DFF3976E5BC7E9271B75E61DE9ED20E66B62608C3AD811BD0BE91649314</stationID>
+ <name>AC @ KKST-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371AD5557D58FF8357F7FC84825618133082EEFEF7B53B171ED3CAD327BF53BC0C0</stationID>
+ <name>Rock @ KTUX-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853717A86721167CC48520194C50614FD85ADFC09E07A315D4921836B3FEC1935FF80</stationID>
+ <name>Country @ KXKC-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371F8B25703D7C50EFC08B276BDC1A62B95C990624D43C21D731B67B1DD0BA343DA</stationID>
+ <name>Classic Rock @ WRNO-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371256577E7F5C05FA87C5690B7D6C2CFC245386EB70087120F7BE3E2F7EF30F94F</stationID>
+ <name>Urban @ KMJJ-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371032CD43947DDBD42DC76855A6BD2C605A18AC8107017543D358E97B5C95730DA</stationID>
+ <name>AC @ KTDY-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853715A06CB253E031E690AC4C7F89FD6084DFF1C2F87AA318AC8DE1C47C700566226</stationID>
+ <name>Urban @ KRVV-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853710F1DDE8F99748EEBC03EFBDE390791F400DF147158D3625D2DD135D1BCB8504E</stationID>
+ <name>Various @ KLRZ-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853711B5B2D482672DAA083A9E36875C99375C180EFF06CC101E70D7BDB12F4AC0925</stationID>
+ <name>Oldies @ KZBL-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853715A9D1A6EA612F19A8E8EB579C00693334F1B33456878D2ADA75D2812E82D0497</stationID>
+ <name>Christian @ KHLL-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371968FB46B10848ED940EA375DFEBDF1067C36F173AF49CBA32A981FD161B20480</stationID>
+ <name>Country @ KRMD-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853717570CC97781A11EC9BF338BC81CF8131D060B4ACFC5254521351D5C0ADEA6C04</stationID>
+ <name>Classic Rock @ KKGB-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853712D1807B456075CF128FF744F938AD31E67550C93A208823470FAAC7992BD58E9</stationID>
+ <name>Soft AC @ WLMG-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371195A18D78EABF6627D55E6C47D4191AC1883BCB4FFEC21534FD468B9C74C77DA</stationID>
+ <name>Hot AC @ KQIS-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371B78C92C0EEBE08962DA016432E9C1CC11610393287B2DF05270FB7B7481FB87A</stationID>
+ <name>Urban @ KBCE-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853710DE0FF1EEE768AD97764815D61C6E508A076C7F8CFE9FA023463169F17CCB754</stationID>
+ <name>CHR @ WFMF-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537157198D6025E2E28FF8CD9A688A673D61D4AA36EB615CA23E0CC532F744CBA133</stationID>
+ <name>Urban Oldies @ KMEZ-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371057F31073932A9CC1BEF671D213F5E5E27DB1A2F3BB73C2655CADF7AC431CB96</stationID>
+ <name>Oldies @ KQLQ-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371B227BD169472927D2472ED6DBF8A63DACF8F7CDE08AF8BAE344309CB3003D7FF</stationID>
+ <name>AC @ WBBE-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853717B5FD79C97362A7134E65ED53887D46240839DE0191A130D8C98FB1CB63D80DC</stationID>
+ <name>Country @ KLAA-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853717F9F2BC4F6908D20A82C061AA6D0794510FF9BA212E21A53CCC41F61F1CB4F69</stationID>
+ <name>Hot AC @ KBIU-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371685EDE0C750474B430B84492DAF8ADA0DFB4C5322662F001FB628D0BB3A7917B</stationID>
+ <name>Hot AC @ KSTE-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537166E2573E33CE543BA7934D05A22F26D99851E50BE6477E676CAED377577699DD</stationID>
+ <name>Oldies @ KEZP-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371A0EB8D5224202BA95B7613FFD499F2C9998CE119D2B444E0E3F7D49B2488B2C6</stationID>
+ <name>Urban @ KZWA-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371EC02A2E191EE9BFF9C18601B4807CE11C375E5982E46A733BEF7E10889E6A36A</stationID>
+ <name>Hot AC @ WKZN-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853713CC872145382A3DDF922BCB6D8FEF6178E463541E9E013E9982EB1F1C7A741AA</stationID>
+ <name>Country @ KJJB-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371B345363AB60D1BE27253C379E36269BFF53DF31A1785A49DF4AC7AB74C3EAC8A</stationID>
+ <name>Country @ KVVP-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853714EA26AFC51CC6B5DFB91CF06ABF8137337188AED7EC17FED73B839375C530083</stationID>
+ <name>Oldies @ KBZE-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371A8073117D836A1AF6C51269FE64D3F977670109CC07E776D5B44A1A99E477B11</stationID>
+ <name>Soft AC @ WKSY-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371BFBB61EC25891D642A9B0E0D2932BF6F4F92B589A892FBB7057FDAF133148743</stationID>
+ <name>Classic Rock @ KXOR-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371A8674AA9A59E62F05672262B8D318F13B2630DFD8D51CF92EBF38CD195C7FDAA</stationID>
+ <name>Alternative @ KKND-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853718B62AE5A264912DE70984CDEB4C88CBB29AEAA4D9A8B9AF74338C72B882F0383</stationID>
+ <name>Urban @ KEDG-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371D8A9B0879CC88D1147D39F2257072C3626448611A20C7C6A99E332C6038948D7</stationID>
+ <name>Country @ WHMD-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537124DC7BA815B95E3ED6FC7E71ADD22C046FA77E567D7BF4DAAB485A2B35EC5209</stationID>
+ <name>Country @ KCIL-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537168FC90E96F1AB3EF39E38EED1479177793A06B7472D2FB9AB934DF6E92DCC270</stationID>
+ <name>Country @ KNOE-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>0.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371217A7AD2E8716C6F971C6CF7BDEBF76146EF782E44CE063CD6FF75459BCFA488</stationID>
+ <name>Religious @ WVOG-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371EFD1D5AF74BBB6FD541A9547ADBB367ED83A6B44EF08594C8CD37FC24E557FD9</stationID>
+ <name>Oldies @ KTIB-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>0.64</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537170B453C8CA2FF9E35C869B8BDE410C66D8367F3F9141ADB3F981B177088DB37D</stationID>
+ <name>News/Talk @ WTIX-AM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>0.69</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853715FD64566F63ED8FAE3E177DAB435F406035719E59BE7408FA5B6A5C4659959A2</stationID>
+ <name>News/Talk @ KEEL-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>0.71</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371225955F793294B7E2015B00C6840CC20EE4CFA4BE8B8CA4B1FFDEB1FE6C037AC</stationID>
+ <name>News/Talk @ WASO-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>0.73</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371FD327ADA42634C1D615383A44567B00D3FBE2CFCDD98EE78F6567607738014E0</stationID>
+ <name>Christian @ WSHO-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853712125C1CF35F213D7CAF03CB100A9ECA679181C96A8306F3A330ED314194597F4</stationID>
+ <name>News/Talk @ WWL-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>0.87</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853711CD907AB5542CC79546AA1A4A5F4D995F03DDB827D5D6BE82C6E30AF765529C5</stationID>
+ <name>Religious @ WYLD-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>0.94</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853716D05EA6DB7C2904943DFB04CB957160650C92C91D6BE8F163824C62F9319E4BA</stationID>
+ <name>News/Talk @ KSYL-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371E3AF3F297C5C6CF7BA2E515D8E63EF8A5D024CCF994D568ED97343340BB94614</stationID>
+ <name>Christian @ WLNO-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>1.06</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371EB4D89AD6B88287EE7E30C19F2098F476C40006D93A7DB28B2930B546AAACB94</stationID>
+ <name>Country @ KWKH-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>1.13</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371E57A78167FEC84A44BB1B79376B80687F364984796D54AE206DCF60B1281FEC0</stationID>
+ <name>Sports/News @ WJBO-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537124EAFF3FA334303FB74A78E502D030B6EEC8F36795938703E960E2A5EBEA8C92</stationID>
+ <name>Blues @ WODT-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853710B83D8A15CD4582EB69A15378E15E726A0A90ED6448DBB010F141EB1B9708CBE</stationID>
+ <name>Country @ KJEF-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371383290D0E32EC806A307C1A322F39F73EB8EF6019A505A33989F3B42698F354F</stationID>
+ <name>Religious @ KFLO-AM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537158E8AE11E91E02A554118D24D5BD3033CC72603E64792E915963A275E4C4EEAD</stationID>
+ <name>Sports @ KMBS-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853715809355FB423B1B7ED40E0C734D170E8C406D3CA7A8569A6E75BE3FD572597D6</stationID>
+ <name>Sports @ KVOL-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371F43185D4EB151152CCE2C6E52C45CAE61DACF757F15313C740D347343A0D644B</stationID>
+ <name>Sports Talk @ KRDM-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371E8D5F210DECBC483D232197C52C04E33AB63E4FA0FBA101B758973C0F95D267E</stationID>
+ <name>News/Talk @ KAOK-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371823E6BD73C008C6E33DE47C2E365B5A22BB75CAA91E856BA4E794311D5D26387</stationID>
+ <name>Sports @ KDBS-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853714BC337A7A6A452BB50232C910B1126BEC5ADF92F62EF4FAC8C59A6898A2D04D2</stationID>
+ <name>Rock @ KMRC-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371B7C9FA89B86A1EE725337E0D173D004F763457D4A8FD8A763FB46ADC5C3E69B0</stationID>
+ <name>News/Talk @ KMLB-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853713163D0463B917B8219EEDF35D95BD080C97BDA505CEFA303CA95D5A2AC3CAD21</stationID>
+ <name>Talk @ WBYU-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853713FBE411F60AEA84B7F570897D8982B5793FEF79E5795A311EDB8A60D1DA63F3D</stationID>
+ <name>Religious @ KLCL-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371FA825C57120D52484DB42132658DEC46C47169F8299C43D33F3AAD92B5525997</stationID>
+ <name>Country @ KFXY-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537133E9C2B2D24BD55ACEBB76CA208C99FD6441425C30A8A63B572AD9BE2820913C</stationID>
+ <name>Childrens @ KDYS-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>1.52</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853716839A6824C17A0E0A81C15FF7B4CCBB846602FCC14D89B29FDC4D30479DB89DD</stationID>
+ <name>AC @ KGLA-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>1.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853714E6B8A75609FB386E8D46CB4FB972D5A8F02F0801B99DA40840778B304B61D36</stationID>
+ <name>Religious @ KRJO-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>1.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Louisiana_am.krp b/kradio3/presets/usa/Louisiana_am.krp
new file mode 100644
index 0000000..bab8af0
--- /dev/null
+++ b/kradio3/presets/usa/Louisiana_am.krp
@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Louisiana</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853709AD4E9FA60C57E33C0E73B126F4AAB08F4FA20AE0DCE77704F693354C343C743</stationID>
+ <name>Country @ KNOE-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>0.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853707B7EF33D4198386623A47FB7568EEE369886C80990251697403B307B07CE257B</stationID>
+ <name>Religious @ WVOG-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370B78D996B9CE55A7914B36475A09CCAD89DBDCE06113FC6C1949D02F52EDD43C1</stationID>
+ <name>Oldies @ KTIB-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>0.64</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370A0D2E9B797597869ACD5E728A346795297CD2DA6FB8190F9E669E38B02D1DB7D</stationID>
+ <name>News/Talk @ WTIX-AM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>0.69</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537050ADDFD3856A66C85A8FCE1BDC8456BCB85FC24A2AF951C9FB8561FBBD0DD100</stationID>
+ <name>News/Talk @ KEEL-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>0.71</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537043BE69AE5F2BBA39CB33FA4C4FB9DCA5821494EA5E91F71971F114DEB58C7847</stationID>
+ <name>News/Talk @ WASO-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>0.73</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370F588B050C8082C4A3F9269309692640CE2A4F5F27FF820C1E00CD6A18438127D</stationID>
+ <name>Christian @ WSHO-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853703D9AB4521C77DBC817E2B3255647210883FF772E5C5E6A3F140D9852F6265E62</stationID>
+ <name>News/Talk @ WWL-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>0.87</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853700201C03317B61432C4B9E949A4886F4CBA31877C64585B709F388B2E9C9A2D4C</stationID>
+ <name>Religious @ WYLD-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>0.94</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853705186E5F3E9AD15A646E3B73B08A086D63F11FEA048607B70E8E53782B017B99C</stationID>
+ <name>News/Talk @ KSYL-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853701C3534A7900C52D5A2635BB7906E8365BF5B7247AF4E0BA82273C1CF246FF54A</stationID>
+ <name>Christian @ WLNO-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>1.06</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370CF6AFBD6DA8C8EB0F240C406E33B4CB2B5DC02ABDD7C0EA04A96E4D282F5FBDA</stationID>
+ <name>Country @ KWKH-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>1.13</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370AC8F4FDF05FEA2884FF25CDD08AAC62B161BD8763B7D4EEB297CAC4633377B42</stationID>
+ <name>Sports/News @ WJBO-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537071A0F89F85284C7052CF6B13E2A886EA77B564AD93B4DEAE7A4DBD23EDD4FCBE</stationID>
+ <name>Blues @ WODT-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370468B85ADC597515357524AE19109A593AD4926974FCF283EB7DFA941FB42B3B0</stationID>
+ <name>Country @ KJEF-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370EE94FE5226848658BB5A3820368DA4353D4E33BC5FCD2A34F087448D93E46851</stationID>
+ <name>Religious @ KFLO-AM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537097ED7BED305DB889B02D8E726952B3F94BA95E288DEECC3632FF4437F79F0C9B</stationID>
+ <name>Sports @ KMBS-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370018026FC7641B1184C1AFC590F12381BBE52B778E142A869DCFCE9E1CD9FB335</stationID>
+ <name>Sports @ KVOL-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853708072DD2ADD6EC3DA539FD4BC1F1DDC06285549609F7BBC107054851A19524A24</stationID>
+ <name>Sports Talk @ KRDM-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370AAD0FC17377D962981730853E96D7815032F681B060D6AD633ED33C2F2BA2744</stationID>
+ <name>News/Talk @ KAOK-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853701A0790EC4138A1AD070E0AA6C6C155419A13EADF22929E41ABF82E7F2F643D5A</stationID>
+ <name>Sports @ KDBS-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370B8AF4BB62B17B63B5ACD38828CB70D658DB671DD9547DB6A1595F77082AE8084</stationID>
+ <name>Rock @ KMRC-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537071A5737182B7B4FFB6BB6383DAB9B145B1782D0FA6F4D87F8F97EA0157F7476F</stationID>
+ <name>News/Talk @ KMLB-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370E5F4991CD05D331D55E1DF29DDA7BB9918C5BEE73D01E4A0B9CDAB7495A46160</stationID>
+ <name>Talk @ WBYU-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370511F0765CD85D1CFB1D65B3E2ABDB7AE4168060412ACF5556907C9183006369B</stationID>
+ <name>Religious @ KLCL-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853703E2D9E43804258515FE1DFDE2A759445361CECCAC31A0DAC2C63B90CFAF05888</stationID>
+ <name>Country @ KFXY-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537010B9CBC413543E0EF0C822B4315552EAE0D6E781EABBB77B161049CC6E9CD8CD</stationID>
+ <name>Childrens @ KDYS-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>1.52</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853702E27056E2D6875B04A38D9FFA40872EDF201F2CB479E25CB9C3D159C98DB2025</stationID>
+ <name>AC @ KGLA-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>1.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370B73FD07473C65CDEBB5CD8731DEE8E293457400B1126D8490C6F70C407A0120F</stationID>
+ <name>Religious @ KRJO-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>1.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Louisiana_fm.krp b/kradio3/presets/usa/Louisiana_fm.krp
new file mode 100644
index 0000000..c98196b
--- /dev/null
+++ b/kradio3/presets/usa/Louisiana_fm.krp
@@ -0,0 +1,526 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Louisiana</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385370BF43E1E168A55D666B953AE84D34424D9B85C5F1C32F710B785E1EA69956B814</stationID>
+ <name>Ethnic @ WRBH-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370EB858E42AC9F28081E01E3E3048D8564F2CE42FF1CD4D614358A94075ABB52E6</stationID>
+ <name>Christian @ WJFM-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537045CA8D9A7FB4D7E3BAD6CD470C9EF08CAC065CB2AD098C1EAD441F581521DBA7</stationID>
+ <name>Christian @ WBSN-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>89.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370DD402F10689A8D11001289405A38836BA184B88A85676F163008946633A62C72</stationID>
+ <name>NPR @ KDAQ-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537046F41939915BA489F758D79596540D74AF7659A00495A6D8F39773CE10FD1DCD</stationID>
+ <name>Smooth Jazz @ WWOZ-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>90.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537054F8E5403864398A8A25C21207084081D1B8F444CA8F33FB1D1B2E4ECDD74C1C</stationID>
+ <name>Rock @ KNLU-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853706A351E823F6C3046405B8992DB9235B4AFDC6A89DD941105BD8712DF9405030F</stationID>
+ <name>Smooth Jazz @ WTUL-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370425022F70C7F4CA3D8A8C59C1E23CCEB3FEAFF04AE31371BB90B016BD0F351B7</stationID>
+ <name>Alternative @ KSYR-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853707374CCAE6CEE1319ECA3B8F35B42A159397BA289C95DEEE8905CD2F486A6B7A7</stationID>
+ <name>Hot AC @ WCKW-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537051B55B043DAE51B5AC107F33E96E9E9FEDD2C2D5A4534A15ED7B715B9DE3A50F</stationID>
+ <name>AC @ KWJM-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370F8C9C392CAA6C3BC890B40877BDDB442CF662777C94CC984D3371C537479E1EE</stationID>
+ <name>CHR @ KQID-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370086DCFE40316CD6E4D05F2132AF5AE97FF130D7C8DD1C8AA9AA6874B6815F496</stationID>
+ <name>Urban @ WQUE-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537034E2DD635F2AEB79062B5319FCE2B8ECF6574890220D116F5422D9BDE6CADC44</stationID>
+ <name>Country @ KXKS-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370D040A840FB61A6823836FBE6FBE1C7CA6C31257A99CF16500F9C1F7BA1E2FFBC</stationID>
+ <name>Country @ KFAD-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370218D99DD9CD4277F8A94A82133B31B35D516A7C2481BCDF8689596406C9199C7</stationID>
+ <name>CHR @ KRUF-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370DA9AE153311844B6DED39889B04595E7A852A8CA1354603E9C4F2A589DF0A18C</stationID>
+ <name>Gospel @ WXXF-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853703BE5EE1D1AB9CF037AEFDA18B6C09E2E019D5293CB18A7987E94EDD721332497</stationID>
+ <name>Gospel @ WXXM-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370C566C6BD6FC9BF5699544AA104C432E31A0BCE6DF4463E387CD7581792ED2A92</stationID>
+ <name>Country @ KQKI-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537023D333A0ED9C35C0F1EE2EDD642BA2BA9F01158A6545B1BAA54F6DA56D77A91B</stationID>
+ <name>Urban @ KRRQ-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370AE783CAF56F274B3FBA1C53BEA0F826C15DBE548DB0FC6F7B5A5646157305C6E</stationID>
+ <name>Oldies @ WTKL-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370694DA4C12565528DC0181C9BB98AD792F1F7AA6C6E9566FFF5D078F5C65630CC</stationID>
+ <name>Country @ KYKZ-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370EEDB2BC54DF23E1A54A573225ADE58136194531530B13AF3C310A95DF8B62891</stationID>
+ <name>AC @ KVKI-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537056F4FA4AD29E8A1CD68DF61E2992024DAFDFDBF47FFCAF85D8B6DCCE89B82B99</stationID>
+ <name>Modern AC @ KFXY-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370598F72238ED5C2362FB4E49D15302392B14220AAE44C10A03F1A7F95604AFC84</stationID>
+ <name>Rock @ KZMZ-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370212A3965CC57715A589D41B3CD6AC46200BFCABE75379601974EA1B5A72F9A59</stationID>
+ <name>CHR @ WEZB-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370D233260F2E44DA01B922DC3FC7019A47A0A66F977D3CA2783C8AD6ECBC14835B</stationID>
+ <name>Urban AC @ KJMG-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370C3060167D617AED5B332798DC5C4CC3FEC77F5E72DF35272D62B549DC9CA15A7</stationID>
+ <name>News/Talk @ KAOK-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370FE04064FABA5588B27AA5A6E8980B7ED9A1B06E2B4A8B8BB02235AAC3CCDBE69</stationID>
+ <name>Classic Rock @ WDGL-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537013A4199DA8C0D5634E990CD35A725B92C8A37D8FD2547B3243293F7A4B1E4F67</stationID>
+ <name>Hot AC @ KZRZ-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537020517A3221A8DF15827133FC1B22A85BE1BB0C9D0CA55D2CC89B536787BA9600</stationID>
+ <name>Urban AC @ WYLD-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853700C03A56D9ADF4A738D3C84A0BDF256238BFDA13139C925A097CAF5A1544818B3</stationID>
+ <name>AC @ KKST-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853700A0A5D5EB3C917591A7133D6423ABAA897E6C5E2F5C3233089F7A41DA2C2B56D</stationID>
+ <name>Rock @ KTUX-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370C336AE1F8E57C5F5B2270B5D19D020A5A75FD4818DAF518AACF49FC4F6EE170E</stationID>
+ <name>Country @ KXKC-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537032945B76F52327F6F3981088F36DFF676FC4080A09D65C29561A7CDCD5B4555A</stationID>
+ <name>Classic Rock @ WRNO-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370979EF5E5788EE66ABA052DAE67570C1E18972C5B3C1429B46555303A27415C34</stationID>
+ <name>Urban @ KMJJ-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370A3055EC352B177871C6A88A7D0D9CEBC357EB8269BA306CAB38FD55CBE19DAAF</stationID>
+ <name>AC @ KTDY-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370C7B576854CC519CD4D76F7F6674E8C7E9BC9F7391278A3567AF3716EAD5E9C3E</stationID>
+ <name>Urban @ KRVV-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853708B2ECA12FA3B468E1A02804ED98DF0D8C048D6A406CA9F4A68ED5EE545D2D88F</stationID>
+ <name>Various @ KLRZ-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537041D119A3D285BF4D0A965799D9B747656F186D725FE4001AD32B83E93F63D44C</stationID>
+ <name>Oldies @ KZBL-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370CC45C26B33EB5187C3310CA3F7EFDF494119E33E84657E760269AB6372702EE3</stationID>
+ <name>Christian @ KHLL-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370B3A7B7E810EF33F5072D7A87FF7CC79CDBD6A3982D71C3B8B637590191689318</stationID>
+ <name>Country @ KRMD-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853700393CD23DD4C8BE4E24653053CB0B3C78AB273D946CA721F3017836EA087B338</stationID>
+ <name>Classic Rock @ KKGB-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853707E5E7CE936997C68AD33D031AAA1FD0D419CE76659096245C240D07BA289B4B7</stationID>
+ <name>Soft AC @ WLMG-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370F1AD24FFB044A101BF6B6B6D5E288D6E9C89D6F4A3E9D7C2C889C88BD37825AA</stationID>
+ <name>Hot AC @ KQIS-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537075162853C16866E65F8A51A7A482CCABC2B3EA2ADE38EAE297718EE20644E611</stationID>
+ <name>Urban @ KBCE-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370EC34FB8F753950392D285F8CE601E763650B52F81B3C5267F7A10D0FF1E09E6E</stationID>
+ <name>CHR @ WFMF-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853707631D25E27AF1805147341B9C8EDF5505607C084A58BCF7861582888AEA56664</stationID>
+ <name>Urban Oldies @ KMEZ-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853703700E8EDD653ABF152F3F7148A425F56468DE9DDBC8A21070998626FEDA34688</stationID>
+ <name>Oldies @ KQLQ-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370F1064B77E2EA9697EB897634D42DBDB196B2C10A5CF77BE47687189C395E984B</stationID>
+ <name>AC @ WBBE-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370EAD2972C68040B85D8BC912C97910FDD8A21707BADC33DFF67E3E6C86D016B09</stationID>
+ <name>Country @ KLAA-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853704B9F18372DDCFB79AE4173DFA24621DE3E6E3A2B9BBD51309CA1C07500722DE3</stationID>
+ <name>Hot AC @ KBIU-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370C9D48549FDE5E98A8C25495A418CCF8B1CCA43CEF94460C5893763DC837C469C</stationID>
+ <name>Hot AC @ KSTE-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853703B30787F5BB1515A6B17C36C1B61E4DC7A9CA7237CC337C14F1293591ED5AE3B</stationID>
+ <name>Oldies @ KEZP-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370FF594E07E52A47CC94C52D7A5213381B88B794BABD1E5172BB68AD5B074DD369</stationID>
+ <name>Urban @ KZWA-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537057EA3990755D009943D917E7C5F4D459C8CB2F3A94977263E6CBE916CC0A483A</stationID>
+ <name>Hot AC @ WKZN-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537026A78E20AD86F1C50DF1C893447E2B6C5FCFC3E4C65B8BEA0FD634F955566025</stationID>
+ <name>Country @ KJJB-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537069B4832AFDC0BF0720D43B0C4B7759B13941C91908C1CD46DA5156A813611479</stationID>
+ <name>Country @ KVVP-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853700708705A7FEE65BF9F47995F2C8F57A93754EDB4BB9F5BA1087F761C83C1CEC1</stationID>
+ <name>Oldies @ KBZE-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370E2FFC97A4300ABBAD057C3CD342B2F01D507A672A5F89A9DD73C99722E7DA0B4</stationID>
+ <name>Soft AC @ WKSY-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370C40D219D22D07524E9DB94FDE6FEC94FB9C1CE816120644BE40498AA464988CA</stationID>
+ <name>Classic Rock @ KXOR-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385370502AD60A86CCF0C670499F1D115344F76BDD8EA90924506D2EBBD3FC8CB027A3</stationID>
+ <name>Alternative @ KKND-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853707B6D002A96DA2ED62AD67322F29B30AD3304E3711862AF1907D07ECCFBDE7FA9</stationID>
+ <name>Urban @ KEDG-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537071C41E2C802091E0895F4E3E44CE8627E78D27FF427D98A1F65EB60AFEECF3B7</stationID>
+ <name>Country @ WHMD-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853704B45653552B65A9FB00F85B0129BB02C3166D55E839AB56B2D11634222A586DD</stationID>
+ <name>Country @ KCIL-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Maine.krp b/kradio3/presets/usa/Maine.krp
new file mode 100644
index 0000000..1aa1c56
--- /dev/null
+++ b/kradio3/presets/usa/Maine.krp
@@ -0,0 +1,254 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Maine</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338537341629C46A47D685280C9AB20C2226605FC9861EB13183B0F61724D9643818E75</stationID>
+ <name>Christian @ WMSJ-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>89.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373CB6F477859824124E92091C2B7FE64E288C3FCB2BC2523AA9AE59CA435EF1AEC</stationID>
+ <name>Alternative @ WRBC-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373696150C263B45404F152BF4C91964DB75DBBCFDC2827F5553C4DDABA4788740F</stationID>
+ <name>Rock @ WCDQ-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853738A4C17444D496C04AD0E8A04BDC0C3AAD6E16E419F151D8BC4FA69D08B3DEDB2</stationID>
+ <name>Classic Hits @ WQDY-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537307ACC4A4E54C58CF04C8FFA17978FA53C8E2D264EA85A9A822EBFCED65C5A53C</stationID>
+ <name>AC @ WEZQ-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537364C6A6A1CAC87BC45F4D77CE02085B681F97CA6EAF5DD00EC32FB94CD75B9446</stationID>
+ <name>AC @ WMGX-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373452EB4A047C853389F567D737603896CDB7A471AFB797F86DBEE285D3B12F5AE</stationID>
+ <name>Alternative @ WCYY-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373477485BAB3AAE3827EA27FA63E5B46F93B5BDA773D987E1B64538EE70DE01433</stationID>
+ <name>AC @ WHOM-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373C43428031551CAF2420F6B66284AE1EF41DD51085FFCAEF5F83FCA252794D8AD</stationID>
+ <name>Christian @ WWWA-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853731D905EC8154A7D5233016FDF06499A1C1337914015602EEF41BEDFB21F00A9CD</stationID>
+ <name>Rhythmic CHR @ WRED-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373BA23B009ADE217655645E77DCA86D5AD70AC7ADEF918429A897402DE42A74B6B</stationID>
+ <name>Country @ WBPW-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853731522D5921D143717A075C1F60B042A0ABC16844CE5D3D253741347E666318304</stationID>
+ <name>CHR @ WWBX-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373A0752F23A0337E02CC1578FA45EBA67C31AE411A9825B3AC04268020E93FAC42</stationID>
+ <name>CHR @ WJBQ-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853731EACCF16AEC31E5052E7D856FA1125C7E6C1B1FB23C42E2518B1D1A5DF922649</stationID>
+ <name>Sports @ WJJB-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853736F25F089014271B57D75C79135C9FED7D2CF985CFD635EF68A2196471D3D0CCE</stationID>
+ <name>AC @ WKTJ-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373A4EC606347F092A36A195E3E6EBE682960C765CB1C56274F0902832988F5CAD3</stationID>
+ <name>Hot AC @ WMEK-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373C356AFF342D2E728285F3EB954979AD3C4EB2359911345EF22A69E3613625E7C</stationID>
+ <name>AC @ WHOU-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853734B442C62C1121459DDF5000634B71B73593DADDC30C086A9606408A44D76200C</stationID>
+ <name>Rock @ WKIT-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853736D2F2DCA29027C379D3B8E032361A8ED63E63DCA935C68996AD3B38A3F61BF70</stationID>
+ <name>Classic Rock @ WFZX-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853734E94E87DD9B29F935EBD5BDCB127156985226EA959A1F3301A9DB676E6EE39E7</stationID>
+ <name>Country @ WPOR-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373073675B1E563AD11EC5FC0EFFAFDA6A8C4E52A09393667002CF06A1160F1F1A0</stationID>
+ <name>Classic Rock @ WBLM-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373EBB39BB82FA7C5D4C60EE18DEF010CA093326AF6E651CA53614BE3D830412CFD</stationID>
+ <name>News/Talk @ WVOM-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373749A7278026F2329CE0C0CF7076E5F6BC8B1C98FA99B04AA2AE1E573B9E62A57</stationID>
+ <name>News/Talk @ WBCI-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373E03502615B55EB3BD8206003040157930E5CDADE75BEC1E369FF6ABC338E67E6</stationID>
+ <name>Country @ WQCB-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373E4CCE4ABCD9563AB565B5920EC11B2A3FF7593322FA153515822CB7A20B14D0E</stationID>
+ <name>CHR @ WBZN-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373DBE83F5F78914529E19D6BF9AD6BDC47F973E4C599D9F04ABC9D9C9F4B50C571</stationID>
+ <name>News/Sports @ WZON-AM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>0.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853739007EDA77CFAFD46B0D8CF4A5FB051338E6B081DA4AAF51F3654E2483C1576FA</stationID>
+ <name>Sports/Talk @ WJJB-AM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>0.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373B79185DE005CE893A0D78D06FE59E74D468D3939F5E66E864DC9EA8FEF3ACB4D</stationID>
+ <name>Nostalgia @ WABI-AM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373CF956901C6DBC134D2E4474ADB241C0D5E100322FB75BC9741A22B521A14C199</stationID>
+ <name>Oldies @ WIDE-AM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373A9DC69B7D627866AC8DB20069D8CCCB916357BB4D627EC385F8680387313A13A</stationID>
+ <name>Sports/Talk @ WJAE-AM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Maine_am.krp b/kradio3/presets/usa/Maine_am.krp
new file mode 100644
index 0000000..01093af
--- /dev/null
+++ b/kradio3/presets/usa/Maine_am.krp
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Maine</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853733F045D635A009968FA11C9BD5A00488E257A03769D142E536B8ED503DD8F48F8</stationID>
+ <name>News/Sports @ WZON-AM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>0.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373E545CD14E606B940A3C2031C44E6952FFE3966D451AB75AC4C5E129F443331D6</stationID>
+ <name>Sports/Talk @ WJJB-AM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>0.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853733CB6CD24224B3277CD3C468F8324912660E0082FE879558C5A556D6B474F07B3</stationID>
+ <name>Nostalgia @ WABI-AM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853735D4CB7500BE5CCF8CAE4A7AC44E454EEB039E2454082B169E6E8A1B6D8469740</stationID>
+ <name>Oldies @ WIDE-AM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537304B7697B6D67102684DEBC98BCA9FCCDA2D04FA1DFCCC82B91868DA11D3D9DE0</stationID>
+ <name>Sports/Talk @ WJAE-AM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Maine_fm.krp b/kradio3/presets/usa/Maine_fm.krp
new file mode 100644
index 0000000..376f89d
--- /dev/null
+++ b/kradio3/presets/usa/Maine_fm.krp
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Maine</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385379844CB03173711DAE696A70950631EC7186FE4986986AF5FE31E50E927D290A16</stationID>
+ <name>Christian @ WMSJ-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>89.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379DA7B4A65BB680AC97F9F495E90A52CDD15E721FCFE83B99D35B756F39E09F69C</stationID>
+ <name>Alternative @ WRBC-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537934B8C9F06241701C2D3FAF231906C81304284A44AE35E7CE960FD6C238B9BA55</stationID>
+ <name>Rock @ WCDQ-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379B9AB3601C1B2CF985B443C67ECE863246E4F5FE7A3325C557953D8EDA7907EAA</stationID>
+ <name>Classic Hits @ WQDY-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379827B3B1174AC65A70609EC7AE004C2EE397B768F9210F3D08CEC3B67D4083C4F</stationID>
+ <name>AC @ WEZQ-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379F881B7FF54DDEB8EF4208132F8CBDD953956110722CD2AA8D4C52B9436724533</stationID>
+ <name>AC @ WMGX-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853790605F4AD5B27EBD43459560F51C564D94AFF65E90816E4EB82603A1A6D7BB152</stationID>
+ <name>Alternative @ WCYY-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537944FEBC1375D7ECCE999ECB10C354F2CA2C805323D5A1224739C780BDF8930859</stationID>
+ <name>AC @ WHOM-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379C5CFE6AEA952377F45303009E505C4BD8B09F82A4E5A4DE404A8020DCEC5A318</stationID>
+ <name>Christian @ WWWA-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379C23D10BC270A7ABFD62B302F5346D1BA0551C3B289236CEC8C4AD5DA828562DE</stationID>
+ <name>Rhythmic CHR @ WRED-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853793925F8786ABA891CDB7AD3BB16F2F4DD04ACC9D05EC87F0CCA6FBE830B7FA72C</stationID>
+ <name>Country @ WBPW-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379EFE212985D2B939A9EDCB1C103BFB9144203DED2EA242DA96D9CC738BD8159C0</stationID>
+ <name>CHR @ WWBX-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853795DEDC1576514F10EBD4BAD90B3996B22859C97AFC3112CAEAF036DFA9B132574</stationID>
+ <name>CHR @ WJBQ-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379F610E7D8D25E884069C54CE2DD0556EACBA95C1797B293F5503F19FFB53FD0B8</stationID>
+ <name>Sports @ WJJB-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853796F648B43D2295D22AE4FE4BE6BA1E367238B68EA40B7DE62D649EEFA5211FF82</stationID>
+ <name>AC @ WKTJ-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537923AB544F3ABE44DA0644498069F3E37049567E2575F08860C81B177A93A932E2</stationID>
+ <name>Hot AC @ WMEK-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379970A9F92A370BDED3DAAEF2393EF5E02FF14AC14827F7E13994A7C1A386BEE45</stationID>
+ <name>AC @ WHOU-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379AA8D20822797D6A2D3FA564765B2EAC64BD9CD4E3F315A90254C726BF0E7E432</stationID>
+ <name>Rock @ WKIT-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853791235E4473D0A237E107B004A97D9C5EB2425DD8B99FD1C46D412EE38D857A2AE</stationID>
+ <name>Classic Rock @ WFZX-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379411BAF392A389FF9AB720EB50FC97751A6CD4C2F2AEF50C0C856A545CE909D6C</stationID>
+ <name>Country @ WPOR-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853797A49D42299715D6C921FB44E2ACDFB058A225A2AF0FA838FD9AA1F8A0FBCB1BB</stationID>
+ <name>Classic Rock @ WBLM-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379DEEC7C9C05A88EC608E922AD0B52051C2F5BEBECA5A455CB48AC95E69EF92A9B</stationID>
+ <name>News/Talk @ WVOM-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537971195C48BC2A95BC021248C868B85C01B80EA261F5B89F77B8BD9C1DC45374DA</stationID>
+ <name>News/Talk @ WBCI-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853790536577293A0C9973CC23B47A69EF63521B7F51C09DEB4E331F2579F0571B1A1</stationID>
+ <name>Country @ WQCB-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537975AF542394FDAB608B4E2FA294B4144E1F30072A58ED39B4AACF4B59FB3C5C0C</stationID>
+ <name>CHR @ WBZN-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Makefile.am b/kradio3/presets/usa/Makefile.am
new file mode 100644
index 0000000..4f079cc
--- /dev/null
+++ b/kradio3/presets/usa/Makefile.am
@@ -0,0 +1,390 @@
+SUBDIRS =
+EXTRA_DIST = "Alabama_am.krp" "Alabama_fm.krp" "Alabama.krp" "Alaska_am.krp" "Alaska_fm.krp" "Alaska.krp" "Alberta_am.krp" "Alberta_fm.krp" "Alberta.krp" "Ann Arbor (Michigan).krp" "Arizona_am.krp" "Arizona_fm.krp" "Arizona.krp" "Arkansas_am.krp" "Arkansas_fm.krp" "Arkansas.krp" "Austin.krp" "British Columbia_am.krp" "British Columbia_fm.krp" "British Columbia.krp" "California_am.krp" "California_fm.krp" "California.krp" "Chicago-antenna.krp" "college-park,GA.krp" "Colorado_am.krp" "Colorado_fm.krp" "Colorado.krp" "Connecticut_am.krp" "Connecticut_fm.krp" "Connecticut.krp" "Dallas.krp" "Delaware_am.krp" "Delaware_fm.krp" "Delaware.krp" "District of Columbia_am.krp" "District of Columbia_fm.krp" "District of Columbia.krp" "Florida_am.krp" "Florida_fm.krp" "Florida.krp" "Guam_am.krp" "Guam_fm.krp" "Guam.krp" "Hawaii_am.krp" "Hawaii_fm.krp" "Hawaii.krp" "houston.krp" "Idaho_am.krp" "Idaho_fm.krp" "Idaho.krp" "Illinois_am.krp" "Illinois_fm.krp" "Illinois.krp" "Indiana_am.krp" "Indiana_fm.krp" "Indiana.krp" "Iowa_am.krp" "Iowa_fm.krp" "Iowa.krp" "Kansas_am.krp" "Kansas_fm.krp" "Kansas.krp" "Kentucky_am.krp" "Kentucky_fm.krp" "Kentucky.krp" "los-angeles-antenna.krp" "Louisiana_am.krp" "Louisiana_fm.krp" "Louisiana.krp" "Maine_am.krp" "Maine_fm.krp" "Maine.krp" "Manitoba_am.krp" "Manitoba_fm.krp" "Manitoba.krp" "Maryland_am.krp" "Maryland_fm.krp" "Maryland.krp" "Massachusetts_am.krp" "Massachusetts_fm.krp" "Massachusetts.krp" "Michigan_am.krp" "Michigan_fm.krp" "Michigan.krp" "Minnesota_am.krp" "Minnesota_fm.krp" "Minnesota.krp" "Mississippi_am.krp" "Mississippi_fm.krp" "Mississippi.krp" "Missouri_am.krp" "Missouri_fm.krp" "Missouri.krp" "Montana_am.krp" "Montana_fm.krp" "Montana.krp" "Nebraska_am.krp" "Nebraska_fm.krp" "Nebraska.krp" "Nevada_am.krp" "Nevada_fm.krp" "Nevada.krp" "New Brunswick_am.krp" "New Brunswick_fm.krp" "New Brunswick.krp" "Newfoundland_am.krp" "Newfoundland_fm.krp" "Newfoundland.krp" "New Hampshire_am.krp" "New Hampshire_fm.krp" "New Hampshire.krp" "New Jersey_am.krp" "New Jersey_fm.krp" "New Jersey.krp" "New Mexico_am.krp" "New Mexico_fm.krp" "New Mexico.krp" "New York_am.krp" "New York_fm.krp" "New York.krp" "North Carolina_am.krp" "North Carolina_fm.krp" "North Carolina.krp" "North Dakota_am.krp" "North Dakota_fm.krp" "North Dakota.krp" "Nova Scotia_am.krp" "Nova Scotia_fm.krp" "Nova Scotia.krp" "Ohio_am.krp" "Ohio_fm.krp" "Ohio.krp" "Oklahoma_am.krp" "Oklahoma_fm.krp" "Oklahoma.krp" "Ontario_am.krp" "Ontario_fm.krp" "Ontario.krp" "Oregon_am.krp" "Oregon_fm.krp" "Oregon.krp" "oregon-portland-antenna.2.krp" "oregon-portland-antenna.krp" "Pennsylvania_am.krp" "Pennsylvania_fm.krp" "Pennsylvania.krp" "Quebec_am.krp" "Quebec_fm.krp" "Quebec.krp" "Rhode Island_am.krp" "Rhode Island_fm.krp" "Rhode Island.krp" "Saint Paul (Minneapolis).krp" "Salina (Kansas)_fm.krp" "Saskatchewan_am.krp" "Saskatchewan_fm.krp" "Saskatchewan.krp" "South Carolina_am.krp" "South Carolina_fm.krp" "South Carolina.krp" "South Dakota_am.krp" "South Dakota_fm.krp" "South Dakota.krp" "Tennessee_am.krp" "Tennessee_fm.krp" "Tennessee.krp" "Texas_am.krp" "Texas_fm.krp" "Texas.krp" "Utah_am.krp" "Utah_fm.krp" "Utah.krp" "Vermont_am.krp" "Vermont_fm.krp" "Vermont.krp" "Virginia_am.krp" "Virginia_fm.krp" "Virginia.krp" "Washington_am.krp" "Washington_fm.krp" "Washington.krp" "West Virginia_am.krp" "West Virginia_fm.krp" "West Virginia.krp" "Wisconsin_am.krp" "Wisconsin_fm.krp" "Wisconsin.krp" "Wyoming_am.krp" "Wyoming_fm.krp" "Wyoming.krp"
+
+install-data-local:
+ $(mkinstalldirs) "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/"
+ $(INSTALL_DATA) "$(srcdir)/New York_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/New York_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Illinois_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Illinois_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Tennessee.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Tennessee.krp"
+ $(INSTALL_DATA) "$(srcdir)/District of Columbia.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/District of Columbia.krp"
+ $(INSTALL_DATA) "$(srcdir)/Utah_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Utah_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Rhode Island.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Rhode Island.krp"
+ $(INSTALL_DATA) "$(srcdir)/Nevada_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Nevada_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Louisiana_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Louisiana_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Vermont.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Vermont.krp"
+ $(INSTALL_DATA) "$(srcdir)/Alberta_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Alberta_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Pennsylvania_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Pennsylvania_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Ohio.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Ohio.krp"
+ $(INSTALL_DATA) "$(srcdir)/Washington_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Washington_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/New York_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/New York_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Idaho_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Idaho_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Nevada_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Nevada_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Nebraska_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Nebraska_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Missouri_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Missouri_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Manitoba_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Manitoba_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Wisconsin.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Wisconsin.krp"
+ $(INSTALL_DATA) "$(srcdir)/Newfoundland.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Newfoundland.krp"
+ $(INSTALL_DATA) "$(srcdir)/Hawaii_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Hawaii_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/North Carolina_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/North Carolina_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Kentucky_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Kentucky_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Quebec.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Quebec.krp"
+ $(INSTALL_DATA) "$(srcdir)/Montana_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Montana_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Alaska.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Alaska.krp"
+ $(INSTALL_DATA) "$(srcdir)/Washington.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Washington.krp"
+ $(INSTALL_DATA) "$(srcdir)/Missouri_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Missouri_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/New Mexico_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/New Mexico_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Indiana_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Indiana_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/South Dakota.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/South Dakota.krp"
+ $(INSTALL_DATA) "$(srcdir)/Mississippi_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Mississippi_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Kentucky.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Kentucky.krp"
+ $(INSTALL_DATA) "$(srcdir)/South Dakota_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/South Dakota_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Salina (Kansas)_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Salina (Kansas)_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Ontario_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Ontario_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Washington_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Washington_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Minnesota_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Minnesota_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Saskatchewan_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Saskatchewan_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/oregon-portland-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/oregon-portland-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/Oklahoma_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Oklahoma_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/New Hampshire.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/New Hampshire.krp"
+ $(INSTALL_DATA) "$(srcdir)/Colorado_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Colorado_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Mississippi_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Mississippi_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Delaware_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Delaware_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Florida.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Florida.krp"
+ $(INSTALL_DATA) "$(srcdir)/Dallas.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Dallas.krp"
+ $(INSTALL_DATA) "$(srcdir)/Alaska_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Alaska_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Ontario.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Ontario.krp"
+ $(INSTALL_DATA) "$(srcdir)/South Carolina_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/South Carolina_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Saint Paul (Minneapolis).krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Saint Paul (Minneapolis).krp"
+ $(INSTALL_DATA) "$(srcdir)/West Virginia_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/West Virginia_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/California_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/California_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Kansas_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Kansas_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Nova Scotia_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Nova Scotia_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Quebec_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Quebec_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/New Brunswick_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/New Brunswick_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Michigan_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Michigan_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Massachusetts.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Massachusetts.krp"
+ $(INSTALL_DATA) "$(srcdir)/Maine_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Maine_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/college-park,GA.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/college-park,GA.krp"
+ $(INSTALL_DATA) "$(srcdir)/Alaska_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Alaska_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Texas.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Texas.krp"
+ $(INSTALL_DATA) "$(srcdir)/Wyoming_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Wyoming_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Missouri.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Missouri.krp"
+ $(INSTALL_DATA) "$(srcdir)/Idaho.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Idaho.krp"
+ $(INSTALL_DATA) "$(srcdir)/Maryland.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Maryland.krp"
+ $(INSTALL_DATA) "$(srcdir)/Iowa.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Iowa.krp"
+ $(INSTALL_DATA) "$(srcdir)/houston.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/houston.krp"
+ $(INSTALL_DATA) "$(srcdir)/Louisiana_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Louisiana_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/New Brunswick_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/New Brunswick_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Virginia.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Virginia.krp"
+ $(INSTALL_DATA) "$(srcdir)/Colorado.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Colorado.krp"
+ $(INSTALL_DATA) "$(srcdir)/Kansas_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Kansas_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Oregon_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Oregon_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Minnesota.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Minnesota.krp"
+ $(INSTALL_DATA) "$(srcdir)/Utah.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Utah.krp"
+ $(INSTALL_DATA) "$(srcdir)/Ohio_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Ohio_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/oregon-portland-antenna.2.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/oregon-portland-antenna.2.krp"
+ $(INSTALL_DATA) "$(srcdir)/Guam_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Guam_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Wyoming.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Wyoming.krp"
+ $(INSTALL_DATA) "$(srcdir)/North Dakota_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/North Dakota_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Idaho_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Idaho_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Arizona_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Arizona_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Delaware.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Delaware.krp"
+ $(INSTALL_DATA) "$(srcdir)/New Mexico_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/New Mexico_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/New Brunswick.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/New Brunswick.krp"
+ $(INSTALL_DATA) "$(srcdir)/Delaware_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Delaware_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Arkansas.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Arkansas.krp"
+ $(INSTALL_DATA) "$(srcdir)/Alberta_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Alberta_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Oregon.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Oregon.krp"
+ $(INSTALL_DATA) "$(srcdir)/Massachusetts_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Massachusetts_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Oklahoma.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Oklahoma.krp"
+ $(INSTALL_DATA) "$(srcdir)/District of Columbia_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/District of Columbia_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Illinois_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Illinois_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/West Virginia_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/West Virginia_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/North Dakota.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/North Dakota.krp"
+ $(INSTALL_DATA) "$(srcdir)/Nebraska.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Nebraska.krp"
+ $(INSTALL_DATA) "$(srcdir)/Quebec_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Quebec_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/North Dakota_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/North Dakota_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Austin.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Austin.krp"
+ $(INSTALL_DATA) "$(srcdir)/New Jersey.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/New Jersey.krp"
+ $(INSTALL_DATA) "$(srcdir)/Florida_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Florida_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Texas_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Texas_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Maryland_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Maryland_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Arizona_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Arizona_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Illinois.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Illinois.krp"
+ $(INSTALL_DATA) "$(srcdir)/Oklahoma_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Oklahoma_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Rhode Island_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Rhode Island_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/los-angeles-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/los-angeles-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/Saskatchewan_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Saskatchewan_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Guam.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Guam.krp"
+ $(INSTALL_DATA) "$(srcdir)/Kentucky_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Kentucky_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Arizona.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Arizona.krp"
+ $(INSTALL_DATA) "$(srcdir)/North Carolina.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/North Carolina.krp"
+ $(INSTALL_DATA) "$(srcdir)/Rhode Island_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Rhode Island_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Maine_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Maine_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Oregon_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Oregon_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Kansas.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Kansas.krp"
+ $(INSTALL_DATA) "$(srcdir)/New Mexico.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/New Mexico.krp"
+ $(INSTALL_DATA) "$(srcdir)/Connecticut_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Connecticut_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Manitoba_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Manitoba_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/New Hampshire_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/New Hampshire_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Guam_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Guam_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Iowa_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Iowa_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Saskatchewan.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Saskatchewan.krp"
+ $(INSTALL_DATA) "$(srcdir)/Colorado_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Colorado_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Pennsylvania.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Pennsylvania.krp"
+ $(INSTALL_DATA) "$(srcdir)/Newfoundland_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Newfoundland_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/South Carolina.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/South Carolina.krp"
+ $(INSTALL_DATA) "$(srcdir)/New Jersey_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/New Jersey_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Arkansas_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Arkansas_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Ann Arbor (Michigan).krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Ann Arbor (Michigan).krp"
+ $(INSTALL_DATA) "$(srcdir)/Ohio_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Ohio_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Virginia_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Virginia_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Minnesota_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Minnesota_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Hawaii_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Hawaii_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/New York.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/New York.krp"
+ $(INSTALL_DATA) "$(srcdir)/Pennsylvania_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Pennsylvania_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Iowa_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Iowa_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Louisiana.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Louisiana.krp"
+ $(INSTALL_DATA) "$(srcdir)/Wisconsin_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Wisconsin_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Montana.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Montana.krp"
+ $(INSTALL_DATA) "$(srcdir)/Alabama.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Alabama.krp"
+ $(INSTALL_DATA) "$(srcdir)/Maryland_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Maryland_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Utah_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Utah_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Alberta.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Alberta.krp"
+ $(INSTALL_DATA) "$(srcdir)/Tennessee_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Tennessee_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Vermont_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Vermont_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/North Carolina_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/North Carolina_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Massachusetts_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Massachusetts_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/California_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/California_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Vermont_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Vermont_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Alabama_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Alabama_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Michigan_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Michigan_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/West Virginia.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/West Virginia.krp"
+ $(INSTALL_DATA) "$(srcdir)/Manitoba.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Manitoba.krp"
+ $(INSTALL_DATA) "$(srcdir)/Texas_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Texas_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Tennessee_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Tennessee_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Nevada.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Nevada.krp"
+ $(INSTALL_DATA) "$(srcdir)/Connecticut_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Connecticut_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/New Hampshire_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/New Hampshire_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Connecticut.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Connecticut.krp"
+ $(INSTALL_DATA) "$(srcdir)/Michigan.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Michigan.krp"
+ $(INSTALL_DATA) "$(srcdir)/Wisconsin_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Wisconsin_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Montana_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Montana_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Arkansas_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Arkansas_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/British Columbia.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/British Columbia.krp"
+ $(INSTALL_DATA) "$(srcdir)/Mississippi.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Mississippi.krp"
+ $(INSTALL_DATA) "$(srcdir)/Indiana.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Indiana.krp"
+ $(INSTALL_DATA) "$(srcdir)/Nova Scotia.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Nova Scotia.krp"
+ $(INSTALL_DATA) "$(srcdir)/South Carolina_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/South Carolina_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Wyoming_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Wyoming_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Alabama_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Alabama_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/British Columbia_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/British Columbia_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Indiana_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Indiana_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Florida_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Florida_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Nebraska_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Nebraska_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Virginia_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Virginia_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Hawaii.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Hawaii.krp"
+ $(INSTALL_DATA) "$(srcdir)/Ontario_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Ontario_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Chicago-antenna.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Chicago-antenna.krp"
+ $(INSTALL_DATA) "$(srcdir)/District of Columbia_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/District of Columbia_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/South Dakota_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/South Dakota_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/British Columbia_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/British Columbia_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/New Jersey_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/New Jersey_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/Nova Scotia_fm.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Nova Scotia_fm.krp"
+ $(INSTALL_DATA) "$(srcdir)/Newfoundland_am.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Newfoundland_am.krp"
+ $(INSTALL_DATA) "$(srcdir)/California.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/California.krp"
+ $(INSTALL_DATA) "$(srcdir)/Maine.krp" "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Maine.krp"
+
+
+uninstall-local:
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/New York_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Illinois_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Tennessee.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/District of Columbia.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Utah_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Rhode Island.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Nevada_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Louisiana_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Vermont.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Alberta_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Pennsylvania_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Ohio.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Washington_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/New York_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Idaho_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Nevada_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Nebraska_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Missouri_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Manitoba_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Wisconsin.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Newfoundland.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Hawaii_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/North Carolina_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Kentucky_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Quebec.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Montana_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Alaska.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Washington.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Missouri_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/New Mexico_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Indiana_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/South Dakota.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Mississippi_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Kentucky.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/South Dakota_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Salina (Kansas)_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Ontario_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Washington_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Minnesota_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Saskatchewan_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/oregon-portland-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Oklahoma_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/New Hampshire.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Colorado_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Mississippi_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Delaware_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Florida.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Dallas.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Alaska_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Ontario.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/South Carolina_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Saint Paul (Minneapolis).krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/West Virginia_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/California_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Kansas_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Nova Scotia_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Quebec_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/New Brunswick_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Michigan_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Massachusetts.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Maine_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/college-park,GA.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Alaska_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Texas.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Wyoming_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Missouri.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Idaho.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Maryland.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Iowa.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/houston.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Louisiana_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/New Brunswick_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Virginia.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Colorado.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Kansas_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Oregon_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Minnesota.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Utah.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Ohio_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/oregon-portland-antenna.2.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Guam_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Wyoming.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/North Dakota_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Idaho_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Arizona_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Delaware.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/New Mexico_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/New Brunswick.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Delaware_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Arkansas.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Alberta_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Oregon.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Massachusetts_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Oklahoma.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/District of Columbia_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Illinois_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/West Virginia_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/North Dakota.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Nebraska.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Quebec_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/North Dakota_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Austin.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/New Jersey.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Florida_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Texas_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Maryland_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Arizona_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Illinois.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Oklahoma_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Rhode Island_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/los-angeles-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Saskatchewan_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Guam.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Kentucky_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Arizona.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/North Carolina.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Rhode Island_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Maine_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Oregon_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Kansas.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/New Mexico.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Connecticut_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Manitoba_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/New Hampshire_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Guam_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Iowa_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Saskatchewan.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Colorado_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Pennsylvania.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Newfoundland_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/South Carolina.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/New Jersey_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Arkansas_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Ann Arbor (Michigan).krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Ohio_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Virginia_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Minnesota_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Hawaii_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/New York.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Pennsylvania_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Iowa_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Louisiana.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Wisconsin_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Montana.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Alabama.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Maryland_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Utah_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Alberta.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Tennessee_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Vermont_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/North Carolina_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Massachusetts_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/California_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Vermont_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Alabama_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Michigan_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/West Virginia.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Manitoba.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Texas_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Tennessee_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Nevada.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Connecticut_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/New Hampshire_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Connecticut.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Michigan.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Wisconsin_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Montana_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Arkansas_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/British Columbia.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Mississippi.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Indiana.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Nova Scotia.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/South Carolina_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Wyoming_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Alabama_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/British Columbia_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Indiana_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Florida_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Nebraska_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Virginia_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Hawaii.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Ontario_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Chicago-antenna.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/District of Columbia_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/South Dakota_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/British Columbia_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/New Jersey_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Nova Scotia_fm.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Newfoundland_am.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/California.krp"
+ -rm -f "$(DESTDIR)$(kde_datadir)/kradio/presets/usa/Maine.krp"
diff --git a/kradio3/presets/usa/Manitoba.krp b/kradio3/presets/usa/Manitoba.krp
new file mode 100644
index 0000000..de9060e
--- /dev/null
+++ b/kradio3/presets/usa/Manitoba.krp
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Manitoba</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338537235DE40FE931DDE7AB4ACE93C959304E7BFA062E7E5B078E9E2A01CF696F2C8A7</stationID>
+ <name>Rock @ CITI-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>92.0</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372BE099D03BC51FBEBDE20CBC70FC10423AD5E613054C0DDF72E787FF8CF0E4F0B</stationID>
+ <name>Hot AC @ CHIQ-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537209A1EFF7611EAFD085F8936930DA9BBA09B829C7A6E6FD9BBE8C74694407A208</stationID>
+ <name>Modern AC @ CKLF-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853728D66D9EE218394C91355E5D110E08F362D8B68BBD1F281EAD0F96C16A0BDED62</stationID>
+ <name>Rock @ CJKR-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372C40013266B5DD98E82519FBE4A396847FA9B64C7A303AE48FCA527F959CD69FD</stationID>
+ <name>Classic Hits @ CFWM-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372D6F63A9BFC233D2F9662065C4724A4C512492F510295A78A5629A0292F4B4C02</stationID>
+ <name>CHR @ CKXA-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537265D6BD981E58BCA3B70DD320903417E3E9FF7641AC4171E60AD659F904793636</stationID>
+ <name>CHR @ CKMM-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537215E89F1BD490A98711E71261CFB0CF5DE9A9FF96DD0C3449E30AEC487EA1C7C0</stationID>
+ <name>Country @ CFQX-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853723C92632B65EAA085F8ADA5C1A7E22F1B6B92B68D36C334D43C2356640AC20A59</stationID>
+ <name>Rock @ CFAR-AM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372D6D1E62FC77378744328333B87F77C3F55ED107D2104BFE45F4E2413407747A4</stationID>
+ <name>News/Talk @ CJOB-AM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>0.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853729BE68A608EB4852F2FB94CFE385841CC1A8CCF6C0A2FD4821CFBABB967998978</stationID>
+ <name>Country @ CKDM-AM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>0.73</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372B082179F3FC50164F20D1A2EFB2BB65907F17A40B9D05FEE0D6EAACFBFC11252</stationID>
+ <name>Ethnic @ CKJS-AM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>0.81</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372ADE418EAF6819DDE4859A0610BCC0D3EE140129A23EBA859986E76B7EBF718AA</stationID>
+ <name>News/Talk @ CIFX-AM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Manitoba_am.krp b/kradio3/presets/usa/Manitoba_am.krp
new file mode 100644
index 0000000..537f27f
--- /dev/null
+++ b/kradio3/presets/usa/Manitoba_am.krp
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Manitoba</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385372567FAEECC546FCB8B698C0DED0B9B7FC373F54964E7269E6F2097D2F6321EC32</stationID>
+ <name>Rock @ CFAR-AM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372679E852386AF719E9EC2C0601E13253D76516464D916D13E2E2218A53E35BA4D</stationID>
+ <name>News/Talk @ CJOB-AM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>0.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372202F08C60092B519D009A5E700CAF1C11B3C09E77CE91F77E76455ADDB9DADBF</stationID>
+ <name>Country @ CKDM-AM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>0.73</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372B5DA577EE59D667B19180D54335E981108E68BC90E0919C8CBA341B41CBC7893</stationID>
+ <name>Ethnic @ CKJS-AM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>0.81</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372AD587F819284AD479EEB5F9DC22F6E9943725A1B1D4947CC648E60D33D351EC9</stationID>
+ <name>News/Talk @ CIFX-AM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Manitoba_fm.krp b/kradio3/presets/usa/Manitoba_fm.krp
new file mode 100644
index 0000000..90c521c
--- /dev/null
+++ b/kradio3/presets/usa/Manitoba_fm.krp
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Manitoba</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338537233399A62D25D77EA4D8FCC8451783B38A249F29DAF3B7B03FAD172B65B4414FC</stationID>
+ <name>Rock @ CITI-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>92.0</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372DFE8BDBA148E3963997DEF32EB5D5E93B957D65BB9ECFAF940EA366559D2CCE1</stationID>
+ <name>Hot AC @ CHIQ-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372D0B0F1A1389C0B2AB983EBD8A2C2CCAC76562832487F17212C24E460130E789F</stationID>
+ <name>Modern AC @ CKLF-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372F0903CAA44A0BE6DEC41C707F448B54EC32CC456A7EF3BD8181D9F99FEFA2C46</stationID>
+ <name>Rock @ CJKR-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853725B4397003ED0D58C0716AA707AFC1514FBD02743786B8046E096CE1EAB1F79AE</stationID>
+ <name>Classic Hits @ CFWM-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372DA36B4034B53FC9324D0610397E9822DE88345715E3F76F05540630E30D84965</stationID>
+ <name>CHR @ CKXA-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372396A871B304FBF1790A2A9C8BDE4E0115996BB60EFB0A30F342E1AF1092E8F27</stationID>
+ <name>CHR @ CKMM-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853725038DB07B1019C3E2BC42E00FD6F0B6ACCE0E4B964D44D13B9167B31185B0DDF</stationID>
+ <name>Country @ CFQX-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Maryland.krp b/kradio3/presets/usa/Maryland.krp
new file mode 100644
index 0000000..5a9dcd1
--- /dev/null
+++ b/kradio3/presets/usa/Maryland.krp
@@ -0,0 +1,454 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Maryland</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385373940EDD0900030A5825C104B95F99E3D76CD2A6B37D709F45FEA8E04066A070B9</stationID>
+ <name>NPR @ WJHU-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537392D55B492AADDF6F16F848AFE9334D716A5F4AF0AEF9B5C60300F2DF2B6A3B9C</stationID>
+ <name>AC @ WTMD-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373133EC75B965A1BBA2CF8B73A7A44FE56FE659409A4E43F56E39F05EF73C0D4A7</stationID>
+ <name>CHR @ WERQ-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373C85B3394670C2DBEFEF400ABAEAEC8F18F4B6D28D41E537AF0A8B7183D90BD2F</stationID>
+ <name>News/Talk @ WGMD-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853736E8114FCEBABB93D081C8FDECDCC0C5502EAC8CE8B05876CDE8AA20C0C762834</stationID>
+ <name>Country @ WPOC-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373EFE41C0E25004AD291A1B297C19C7F45DFE7B135537B03AD3478529BE3C47E17</stationID>
+ <name>Active Rock @ WZBH-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373B12C48882EB7590B5E7A5A0E9C56EAFD645DB9E030839C2C184E716088C69D6C</stationID>
+ <name>Religious @ WRBS-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853735CC96B3240C8E8776A4D526E16DEFD83244DC5C9236EBB187932D383A0654A5F</stationID>
+ <name>Rock @ WOSC-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373476F39C7E7CD38C349397D5CF4ACFA54F30516477D541F13A25E2987DBA5B3EC</stationID>
+ <name>AC @ WCEI-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373DB251E2D91C068ABF7EE46E9162FFD9A43C7365B5C924F3A492B45B2F6D87594</stationID>
+ <name>Jazz @ WQJZ-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537318C4FE36B331AB79D342CD68357382D0704E432978BEFBF57F0151710A631454</stationID>
+ <name>AC @ WLTF-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537374476B0D55D9BBE323F57204C924F44D58FF98BC85F70157F99D2EBCD199C652</stationID>
+ <name>Oldies @ WMDM-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373450E9207091A906DD4E8867C212CBCEB2FB9FB6AB4C65430E69980F1D051CE43</stationID>
+ <name>Rock @ WIYY-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373FBE90E21623760ED0E9EAC80DCB5A004FF39743CD8F3205CF6B6773782C936C4</stationID>
+ <name>Classic Rock @ WGBG-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537376FE1DFD51308E9C6205B0F30AE1317D84EEEC0EE73CB0F3F479B23308152829</stationID>
+ <name>Urban AC @ WSBY-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373D88CD1269B08AAD8B95B8A8187701C96D8EF99F85F4D90DD1F8983E2D351903C</stationID>
+ <name>Country @ WWFG-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373386406E00B290E1D2DB35CA9CA0E782F766CD1A8926451224FD346B439BC723D</stationID>
+ <name>Childrens @ WDZN-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537302EE67C8E26E8BB480344CF6F420932CD596410E7098DE74EF0F6547978E92CC</stationID>
+ <name>Rock AC @ WZBA-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373A1F34E3E1237C048C437E53F0124043574F8884DE422B49A23FEF7092D15C086</stationID>
+ <name>Country @ WAAI-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853733AE96DE491622B1EE582DD4C25BF70B3D9B17E2E5B005380F2EA02CB22E0713F</stationID>
+ <name>Christian @ WXPZ-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373630A50967614EEC8B824F310FC71229E2CAA47675F36D08913874D06A6D18E26</stationID>
+ <name>Classic Rock @ WZEB-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373235A8FBFCE77ED958EF9D0EB2FFC0862FF184BCD6D9C46472779E1405D19B4BC</stationID>
+ <name>AC @ WLIF-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537362C4370BC32964E13C26E332FFE77C7CE04BB1DE0B8BEE5F74AE9DE41210E507</stationID>
+ <name>Oldies @ WQSR-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853734B9BD7EE1E6DB61C4105D32002C311B148D0698AA171FA5ABCA00A8B745DCD7E</stationID>
+ <name>Country @ WROG-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373B93C603038C8AB1B2F72774B3D1B2901DFAB4A8A1F39B92253ACE5F99D742954</stationID>
+ <name>AC @ WAFY-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537302580078F30A0C2CE381B9E0B14AD9E9B886E7BDC9B8F420829DB3F031C016C8</stationID>
+ <name>AC @ WJNE-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853735E8929ABB5358612C379638A89E04A66078D74FC4B6789C7BC41EB3AB118FF09</stationID>
+ <name>Rhythmic CHR @ WOCQ-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853738081A8F934C02225CA7F637CD2BD6980602052467265ABE23CF4F32F14D0127C</stationID>
+ <name>Classic Rock @ WXFB-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373F409A02525E5089F6084DA16A32E4E31033EBA517838C1B8403737F25659EABB</stationID>
+ <name>AC @ WKHJ-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373255F117F03D1DE3FCEE504E5E48F504DC1455BEE29CAA28A539F9CEFA03F1468</stationID>
+ <name>AC @ WQHQ-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373405440E1177FAC8A9F47FADCD59A3ECEA79E41909A368F979EDC67744516875D</stationID>
+ <name>Country @ WFRB-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853732C65736DE93ACC61E8B45714B62501BB9DAC62105FAD032B50A98D0916072481</stationID>
+ <name>Urban @ WXYV-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537322C7C5A6B1DDB72980BA3DBD30D9288A127F36A09EE06BA7462D040609701A59</stationID>
+ <name>CHR @ WKGO-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537323D1A96EF37442FD40698B96FFE322A3D08DEA395ED58CAE0B4E8F11E3820060</stationID>
+ <name>AC @ WCEM-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373BCFCDFA25EA03FB5FDB6943D28C92C2755BAFBA7EA4AB18F37DF2A4DC58C6B8A</stationID>
+ <name>AC @ WWMX-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373F7C631ABE62CFDBBF4A65B88C387020B5F1FC6AEB02A866342AB4E36982F94F8</stationID>
+ <name>CHR @ WRXS-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853734DE32A4A612A119E2840454A6BB5D2C731D36E2862138CA376249B6A31FA9C6B</stationID>
+ <name>Oldies @ WTDK-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537362252F42BD8EF9038091DB8DC681EC34F631684FD6A085FCB7F37D405A410D42</stationID>
+ <name>Gospel @ WCAO-AM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537399E2A10D72BBE69CD830846E3D451216D5D3D88BEC7F55EAEE87AFDD3D9AA4C8</stationID>
+ <name>News/Talk @ WCBM-AM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>0.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853738A4250C046BAF9FEEB73A87CE04E589AFC9F276AD3A19D12193A41D74CF91DD0</stationID>
+ <name>News/Talk @ WCHA-AM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373FD4FE902A347AD16830F391EDFCEFEA44589721E90E666A0893D0A9E38D47897</stationID>
+ <name>Country @ WYRE-AM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>0.81</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537356E0849F609E1B51ED2C3577AD52820EF65B5FE0239ADF2DA7D230A7BB838C86</stationID>
+ <name>News/Talk @ WYUS-AM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537364BA5F79951D484DCF15031BECE205556344CD590C998558FA656BA72978FBC1</stationID>
+ <name>Sports @ WTGM-AM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>0.96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373911A7ACBFB739F4F7FFCFC4C532419CC13A8F65F24CFF8D1B145777CA9B290BF</stationID>
+ <name>News/Talk @ WBAL-AM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>1.09</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373576E7A2AA699774FF02AB00F92EB311358DF981054E6FE1B8954E2B2608F5A43</stationID>
+ <name>Sports/News @ WNTR-AM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373475AA18057B26443B8D4E34E794D4D45F678603E0A5CE3A81FA507D2316C2DD9</stationID>
+ <name>News/Talk @ WCEM-AM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853730B05AF4886F8EAAF0FEAB4DFD5BDA2945011BD566FAFC5BAAFAEF1008DB70351</stationID>
+ <name>News/Talk @ WICO-AM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373C1DF6CA3C59C656697E91BA771F9B133DA8BD97CFAA9516A141A6E89CF762411</stationID>
+ <name>Sports/News @ WEPM-AM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373D67FDFBF5AD1AAE00C2795EBFB2E4BC23096B5DB25AA265496CAE0A28C416439</stationID>
+ <name>AC @ WNAV-AM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373A7E5FA73B41B0458E6D38B062B7AD37FC596E49BE8FA608D0A8949F813F8A068</stationID>
+ <name>Nostalgia @ WTBO-AM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373BD3C2266A3E23EC2F87A7E5216ABDA72C86CE1EF9E56FA26CF9DFDAF78D6B727</stationID>
+ <name>Childrens @ WJDY-AM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373A8AC2306715CDB6861094E32670A899D395A24FA35C0B0D5CCB3DE8752723EC8</stationID>
+ <name>Oldies @ WARK-AM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373C9A13B7D2D40246175F0FC1C8290E1BE37EBCD8D45A1CCB9802E3382F5253C99</stationID>
+ <name>Ethnic @ WTRI-AM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>1.52</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373452F7E1E1162C619D54E7EC7BD6922D5E6F9D3510E9089CAACD0A5BAA7C04F46</stationID>
+ <name>CHR @ WKHZ-AM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373BBDCFC4105000CC1A1CCE8DFB97B413643BA64B09A07A62FF52451D6D3BB0A73</stationID>
+ <name>News/Talk @ WPTX-AM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>1.69</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Maryland_am.krp b/kradio3/presets/usa/Maryland_am.krp
new file mode 100644
index 0000000..596b91f
--- /dev/null
+++ b/kradio3/presets/usa/Maryland_am.krp
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Maryland</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385373E45B61FC6E098E494CD78DD92A2C3BED3A8938A379EA4FB8BE3FE768003CCB2C</stationID>
+ <name>Gospel @ WCAO-AM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373AD47AEA42F4CDBD8CEA29740C03E2197A0E5A4703F527D46252B443C4E23D797</stationID>
+ <name>News/Talk @ WCBM-AM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>0.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373639D813923A0558B2B7C542BDE2DD2F486601D67BF5C019864DBD008DF34A4A0</stationID>
+ <name>News/Talk @ WCHA-AM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537329936A1353CB86DC7452FB09035D51874D68383AA089E1000797EA7B0823FCF6</stationID>
+ <name>Country @ WYRE-AM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>0.81</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853733CFF55E14C2B5173E9CAAFEB81B8FE4E82AB0E37BEE4FC745B19899D4434FB86</stationID>
+ <name>News/Talk @ WYUS-AM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537319DD37E5DC3E83332CDA28FC266B2E375D9C613CE98500D292B13C5886C0DD49</stationID>
+ <name>Sports @ WTGM-AM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>0.96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853735C1E1ADCA34FF985B4D99B0CBCEC0A6449E6423D4844E0B4A4E7DC5E95A85130</stationID>
+ <name>News/Talk @ WBAL-AM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>1.09</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373AB64E6073EB609B4D407CA8520C32B50C79571665F0B7E882033CE7814BFF681</stationID>
+ <name>Sports/News @ WNTR-AM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853732D754177251C0108F8B9E947FCDE020EADC9766E178CFA4F29FB9D2748B29826</stationID>
+ <name>News/Talk @ WCEM-AM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853737F9E6D0700E520A95D33A5C3C0DC4851A8EA3EA06746A3413B09D23B7690489B</stationID>
+ <name>News/Talk @ WICO-AM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373ACE5DCDE5197BBAC1B131E40A6638EE13CAC03E904A087A979B7398C4813DCF5</stationID>
+ <name>Sports/News @ WEPM-AM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373D107AF3A4BA52BEACBF151FB7CD34ADECA0269F27FFC532DE2733255553BD316</stationID>
+ <name>AC @ WNAV-AM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853735EDD236391AA84A8E91D5313744335E3DB7104EB1005E1FEF6EC2EAE2D9387F4</stationID>
+ <name>Nostalgia @ WTBO-AM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373303081BFD060255F91F65D8B6D0C282F33B60CD6BE733E7D1134F05FD5F43D4D</stationID>
+ <name>Childrens @ WJDY-AM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373DF6370592918CC4757C311DDC9EB072C19BB154E8A2142E64F98BED1AC441250</stationID>
+ <name>Oldies @ WARK-AM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537348C567AA60CAC6CCA51F339382217D5FADF878D61A27F8D6849F8AD6C30F6F83</stationID>
+ <name>Ethnic @ WTRI-AM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>1.52</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373DABD633357A2B022481E028B93A5A84B63B3D41862A2BD365CDFC6B3F909E969</stationID>
+ <name>CHR @ WKHZ-AM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537303B014C43EF43F1D2C1FEE097B0F3E3ED00C8A4226EF656D9A165DC78445A3D7</stationID>
+ <name>News/Talk @ WPTX-AM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>1.69</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Maryland_fm.krp b/kradio3/presets/usa/Maryland_fm.krp
new file mode 100644
index 0000000..93d92a5
--- /dev/null
+++ b/kradio3/presets/usa/Maryland_fm.krp
@@ -0,0 +1,310 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Maryland</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338537224586DC705676CFE1D50043508A79716F141AA0A2D2E0CB4FE96BD6E03406A28</stationID>
+ <name>NPR @ WJHU-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372F6D1E5630CB36F6E39DB62CEDED9E4457A6E27008679EBFE253B17EDF46B2436</stationID>
+ <name>AC @ WTMD-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853726E99236BD780B8AFA797E5B17C0DFABEB81D2E4C2A7667DEBD75FD9169DC2EBB</stationID>
+ <name>CHR @ WERQ-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372A8690EFCE4F5B4B4F56B0D707A070A0D799CF08D360EEC172AC59574A73D71D4</stationID>
+ <name>News/Talk @ WGMD-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372FCDAE886EEB409BD5208DD4C12CBCEEEAD535CD7C60690DD0ECBF976CB5C5201</stationID>
+ <name>Country @ WPOC-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853728F5F0B83FB60E7085F7ED206BB428F14A8CAF185F25C76EEDCF0DBC4B058CA2D</stationID>
+ <name>Active Rock @ WZBH-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853726E9D61EC7FDF8C4AF47AD38D9D67FFD962BA5A9C174487B8F5434C42B41B0F1C</stationID>
+ <name>Religious @ WRBS-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853723947742CAB3919AE922595ED3ED8D7C748261E0AC8D975AAF7213C6D0279A460</stationID>
+ <name>Rock @ WOSC-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372D85D427411CB24DCE6E2CEADFAA3E22806598D6050EC832C15502302752EE88A</stationID>
+ <name>AC @ WCEI-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853723E6EB5A4C406A943BDB4B7F4CBB6AD4F55A883AD81A6718B20A6357E1A3CD9C6</stationID>
+ <name>Jazz @ WQJZ-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372E82C3494BB958556344622ACA81C6D3FAAC0254A180D60390B0FCE4D5883260D</stationID>
+ <name>AC @ WLTF-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372BA9FBD26F9C3B16E96F1A0C0A868215C492FDEF38EC7F87E407CB3D8811129FA</stationID>
+ <name>Oldies @ WMDM-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372D8E9A30EB3E8B63AF93E87D58CE8FB8A8B78A2011E82347FD2A084E2C548C642</stationID>
+ <name>Rock @ WIYY-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537290FE09D131FB456D84484A835F647958B7C378EFA3334611756658C41C60AAAF</stationID>
+ <name>Classic Rock @ WGBG-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853720C399BD0F9615039DBE6BB0F4E776379069AAF030184E99D5A5C64E422E7009D</stationID>
+ <name>Urban AC @ WSBY-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537237D3DF01DB38CFD3FC9224290E5D754A46DA26A5A7B9FFA361CE236DB3BDD769</stationID>
+ <name>Country @ WWFG-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372072493D2322A4D93BD8FA10A252D3AD2247C6742B974E80B068E3BF308051C9C</stationID>
+ <name>Childrens @ WDZN-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372404783A1782B8E2B032DC14CDD83EF38A7CAE737E4374498F1C4529B5E4EFC6A</stationID>
+ <name>Rock AC @ WZBA-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372D41BA4AF3360FF83315C3A0F09F216D1384E461AD1198DC70B97C880C22F37E2</stationID>
+ <name>Country @ WAAI-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372621C617E16F1D2E81ED3A80FAC6DB1179E27055D871C64525921CA8943DE7314</stationID>
+ <name>Christian @ WXPZ-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853724038F3A293206817599C16245AAD99E4DC77D343CCD53F62B2911798FEBB6DCB</stationID>
+ <name>Classic Rock @ WZEB-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853725E39A8E950C29502DEB7D38E3B500D923B1B295F40F1BF3281D50386E2482D75</stationID>
+ <name>AC @ WLIF-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372E0F8B4D3480B66604BE5EDA7C638AC127E351DE34287DA9AA024EF8E5CC08F7E</stationID>
+ <name>Oldies @ WQSR-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372FD0D91C1E17329292B8AB1893106B8383D5176C82C411BDBBFB08A1E5A12398C</stationID>
+ <name>Country @ WROG-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372CAB3505742A91B101B7A60C8A6AA4819A684CDC94D46B8ED40B7FB2D5FC26047</stationID>
+ <name>AC @ WAFY-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853724D0956C0238716AC97D22195EE1EB81B1A2A98CD6C35C0E21FE35399CD3492B5</stationID>
+ <name>AC @ WJNE-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372ACE177EA8BF870F219C9D927C50894483D478DEB470D3F56F7D95F44029C15F1</stationID>
+ <name>Rhythmic CHR @ WOCQ-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372BEE15E80908966702114691DAD8C00656A378809023DD434C6FBF66106930B22</stationID>
+ <name>Classic Rock @ WXFB-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537261DCE8D2CEEC8B2B5560B161C26B2FB1E91E9F4D28950B57FA789BFFF1702510</stationID>
+ <name>AC @ WKHJ-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372C9E457823290027361E2DE8587C0472FC53A7EABEB4D9BF2209EAA538E20D731</stationID>
+ <name>AC @ WQHQ-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853721FBCD84B5538DCDB2EF69EAC8051A43C6C823CC6D641A323A0B7136A2CCF433A</stationID>
+ <name>Country @ WFRB-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853729E758734D58604D6A1C6D7061047FA005BD0C655446929E400F066938F32380D</stationID>
+ <name>Urban @ WXYV-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372DEE3CB8D0AB8700B4AB1D2C2AA1F4F6095F0ADCE1B24BEE5FBDEF6FC33A4FC41</stationID>
+ <name>CHR @ WKGO-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853727697218EA5A857F85B6B682C517D91C06DCCEB190E216E95AD9CF3BD7CDF43F9</stationID>
+ <name>AC @ WCEM-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537243A68A6EF27E1372426F0F20F047C3EF530FA16A620DE6168D3F3BB7A72CBF11</stationID>
+ <name>AC @ WWMX-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372B0CEFE29DACCB947B42E3DB0D6A5C25333ACF92360F60E19FC7DDEEF37154B28</stationID>
+ <name>CHR @ WRXS-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385372C6488BA9B2CAC516044BDE19F4C869CB1C14853C8E5F4F83FB3DBF45595183EC</stationID>
+ <name>Oldies @ WTDK-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Massachusetts.krp b/kradio3/presets/usa/Massachusetts.krp
new file mode 100644
index 0000000..decb8da
--- /dev/null
+++ b/kradio3/presets/usa/Massachusetts.krp
@@ -0,0 +1,718 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Massachusetts</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385371C544BBC10F9DEBD7A2FB432143F6C1ED4CD206CE6258541752DF9AAE67F4F9CD</stationID>
+ <name>Alternative @ WCHC-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537109E552D425E7D0ED35B96275031C897428CE82AE530705FE0FC084568B25F4C4</stationID>
+ <name>Nostalgia @ WERS-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853714EAFAE749BD98A9D59AB9D5CDCD512C866E5960F0B83E70DA34E9E7D1CEFE377</stationID>
+ <name>Alternative @ WTBU-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>89.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371FF75FA09DA1DF9BAFD4048E2CC5B2F9C5D1E0C2608137241B8A010AFCDA6E0F2</stationID>
+ <name>NPR-Classical @ WGBH-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371CE6FCECA1DB3CE39F0EC51204DD3118A3646A7D1F4080B8E734AF10CCBEAF631</stationID>
+ <name>Smooth Jazz @ WICN-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>90.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537195FAAC80FAFE73C2A5969901F63CB36518786D3A8379714FA0F5403EF98A839D</stationID>
+ <name>NPR-News @ WBUR-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>90.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371DDFB243B1D46E2A88AB16270235AB5E2B8F3ECA9C96D3293AE4B4CD75D24DC1C</stationID>
+ <name>Rock @ WMFO-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371413C3F9C7AF9234E9EA82035D4E1C121AD646B0C4C6D64E57F58AEFFDE385AC0</stationID>
+ <name>Rhythmic CHR @ WMWM-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>91.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853714F60464EF912CE14742B8A76B381189DDBF03385912469C6C0BFAD2984975E67</stationID>
+ <name>Alternative @ WUMB-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853710A4BD8877CDFE0A979723E495CBB668A40527C66C57B757CDA876C2BBF6B509C</stationID>
+ <name>AAA @ WXRV-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853714941FE8AE26EF2B7050BB326A6B1F38434CBEFCCD8D884CF3E8ED1351B9D0E1E</stationID>
+ <name>AAA @ WMVY-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371EE83A8BAE65B502696FB1946C1DB30206835C3ABB8C61AD6C564E970525D8450</stationID>
+ <name>Classic Hits @ WBOS-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853710124A88ACE56004020208455DF1DE90313DE886245B0B1DD5AD24DB9C3404A38</stationID>
+ <name>Hot AC @ WHYN-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371417171DC6ECFD8080A33C08EC2A88F3EAE25A69B27628D305C7490945DC34279</stationID>
+ <name>Alternative @ WDVT-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371243E04D3120F4C9F1DFB850BA16A47D115B52E498B70B6B631F1A234B9E7740E</stationID>
+ <name>Hot AC @ WQSX-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371BF084AF459F1D3E0A33837FA7A303303CE2DD3476394316B25DC86D58204CDA7</stationID>
+ <name>Rhythmic CHR @ WJMN-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853713058EBC67F7E39053F0242A924D11E4B765C2341307A3771FD0D79A8641F4F8E</stationID>
+ <name>AC @ WMAS-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371E61B28CBAE09B85C6E25A1AC1B915C1453D9FD29FC75CBA935C0D559AFFCEABE</stationID>
+ <name>News/Talk @ WXTK-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371B9FD30218CB137B29D40DA252B90B58BBDE376B90F7A57BB93E2C26C49B7E5B3</stationID>
+ <name>AAA @ WHRB-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537155FEA9200EA7ECA3B0EF510A11555325076363435F987B0D4ED7CD978D3FD65A</stationID>
+ <name>AC @ WUPE-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371EEA964E8859FBFD6A46DE6DBA8C60F858E2DEF5B9DF6F43BCFEF773B392C296D</stationID>
+ <name>AC @ WSRS-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371E0D5EC3B5CF952BAE9C05E9177C46D6509A4BC2E248E72BFBA78F125C74C658E</stationID>
+ <name>CHR @ WRZE-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853714E8A137FF1EFC2AA0E459F6FBA4F7145E39685441BE4D301B3950521F21A6D62</stationID>
+ <name>Talk @ WTKK-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853715F875F8C710B286A3F15B27B6CBBBFA67F6C60F29CCD4E16B6A1EE6A3142EF8E</stationID>
+ <name>AC @ WJDF-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853719639C2D5CF99225F7954B7E40FF78F917FC8654965298448AA4DC4BEA55D952B</stationID>
+ <name>Urban @ WBOT-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371F84635CBB4AB3687CA2ED699A90121505D257EE22EF84AD03791FEAECEBF06C5</stationID>
+ <name>Country @ WPKX-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371F489BB8B42E28CE6B5EA306C9D1ED2E9E4F58A20443F4F91132A6F2D5A43A152</stationID>
+ <name>Hot AC @ WBMX-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537194062AB2524C2C32B9CDE5F64F0AB4F3B9B25386E18EA66B7F970B2E16B61489</stationID>
+ <name>Oldies @ WORC-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537118D3A9F14843B911ABB24564588D993B0E13493141613ACE314605A996DF5011</stationID>
+ <name>Soft AC @ WPLM-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853716B372C82F679A28BC319E66C355A1F081DB4CC6F8190866BF6CCE5DE81976F69</stationID>
+ <name>Active Rock @ WLZX-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537154921970862F704EEC3168DC0B56E5BF5C10A15717E057F09BAC7F7F2B510FFE</stationID>
+ <name>Country @ WKLB-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537113B9A2B0B1991B0F6A30E38DFEEB6649F1284E9812ECD6EC5A61C0EFE6DC0195</stationID>
+ <name>Oldies @ WAHL-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853715FB17DB4760987CA33D436852EA64DA3B6753197875B2EC693B97D0E86C23C64</stationID>
+ <name>Classic Rock @ WWFX-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371A54765BD69B35EA456AEA209CCD38D876E37E8E9E43DA44B71D635144BEE49FE</stationID>
+ <name>Classic Rock @ WZLX-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537181DE35EBA01726675FA1633A6F4EFAC2DA8177CE5C9FBF595B0AC650ACDCABA4</stationID>
+ <name>AAA @ WRNX-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371CC852392A434744465D44E256235ED74678F87FFB1FBD5C07F80648D67A8171E</stationID>
+ <name>Hot AC @ WTWV-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537143B9DAEFDCD92AA67CC2C89DD19C725850BB15E619821E7A5B764D767A0E37D9</stationID>
+ <name>Alternative @ WFNX-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371F56B976473127C8B9E3E88458F4C878622A55BE5524A258B62583EFDB75EF3B3</stationID>
+ <name>Classic Rock @ WCIB-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371FA44E6122E3F1D425A9B92C566C1AE0B7D404DBB7ADA06F6F8F9257A11A3B2F8</stationID>
+ <name>Classic Rock @ WAQY-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371ABBFD01966B0432EC74EEEC175A30E25D916A049F5FCC325220CEB19C6AAD5A5</stationID>
+ <name>Classical @ WCRB-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853719BA7A69BAA1AEF7FDD282B80510878274712A4BD6E7CE884E0CA1D21DFF6BA1A</stationID>
+ <name>Active Rock @ WPXC-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371D23878F1CF354FCDC99678FF935169D2E1DC747D117FB868939153899ADB9829</stationID>
+ <name>Oldies @ WODS-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853716F5642359BA3F76854234E5D4C8285A0E804CE962A3503929076C4637230A4E8</stationID>
+ <name>Nostalgia @ WOCN-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853712EF0695F6DE9F873F637BE71C902D510C6E513E736AB2916B419DB30DEAC5DC3</stationID>
+ <name>Alternative @ WBCN-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371B3BA69768B5D12DC03013676EC051AE74954B6B924B66D6577CF731C20054998</stationID>
+ <name>Hot AC @ WXLO-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537111B03B19A291BAB1C203A5F847E66CDC963A964BFACC86FCAAE7BFCCB5FBEBE7</stationID>
+ <name>Classic Rock @ WKPE-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371D168DFC462C22FEDEEE6ABDD01545218D120088A2DC8C9BCD7BA343F133BCFDF</stationID>
+ <name>NAC/Jazz @ WBOQ-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371ED7C576DEC92225338A0B683A24908EB1ACC6B0D0C640FD414344CF3A4BDB39A</stationID>
+ <name>CHR @ WBEC-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537152FDD203465C82AA307BEC80C671CD0B843B5118CC5B3FF532643A2E1FC12358</stationID>
+ <name>Classic Hits @ WROR-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853716C73891F273A249DEFEE3D83478CDD05A21F941B91BD8FAA8215663B33B844E6</stationID>
+ <name>Hot AC @ WCOD-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371A9597036D7AFD135F08B596D5BE1F36B6A3C8D960081144AE396FB5FEA2E477F</stationID>
+ <name>AC @ WMJX-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853717477EBC122D1D8DB6D9547DA953B9A1438B3F3BDA2A93D508788B163DB436983</stationID>
+ <name>Rhythmic CHR @ WFHN-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853712EDDFAE71BE97920EEA732BEEE45E61D0F87460B10ECB0E9C415594CFA1ACEBB</stationID>
+ <name>Rock @ WAAF-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371A8AF47CAACA336CA01E226469A9E4EA45004296F9B081A672859793AC7FF8B0F</stationID>
+ <name>CHR @ WXKS-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371541E220D1E2BEC0676FF3BB5A18A5A55BA385C677B523E20524E50E33AC84EA3</stationID>
+ <name>News/Talk @ WHYN-AM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371CCF3F463A589BB9D9974CB363C80BFB06F3D6B79EC620AF54E6EE5FE210D6BCE</stationID>
+ <name>News/Talk @ WTAG-AM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>0.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853718C76526AFAF0BE27A040048A8DFA94960489A1C14A6B3FD9883C04883B86E74E</stationID>
+ <name>Religious @ WEZE-AM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853713D422F6E148AB0B91326A38AB7486D81190FBBCA5E09814ED773F722174DF4F7</stationID>
+ <name>Sports @ WNNZ-AM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>0.64</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371FAD4D33067E52C39B6784D235E4695F214268B44C89C99D970BFE2C85D122760</stationID>
+ <name>News/Talk @ WRKO-AM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>0.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371C88EF00AE9DC7F10778A25F90BFB2D9C04629AA7C4A279805A8252C6A5A9FD7C</stationID>
+ <name>News/Talk @ WCAT-AM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>0.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537195103C588866AE87EF8656595835E3439C1A647376AFB0E0D01463CF69C21C45</stationID>
+ <name>Religious @ WVNE-AM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>0.76</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371BE378D17F2728B2EECE4A70FE0AC4C9699A557A3111BB40CBEAB2DA693169237</stationID>
+ <name>Nostalgia @ WCCM-AM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853719D51DBC9A0750E16F5024D2126EBA514E512DB76A3C5E343FC7F8DE5B31F37E2</stationID>
+ <name>Sports/Talk @ WEEI-AM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>0.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371EAC49B7247D4D482C391C244B3B067C1261BB9E93FA811B8249C84481FA9CAB4</stationID>
+ <name>Christian @ WFGL-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>0.96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371B65589F29E1F9600A5E1C5424ED01D3AC3B61393B8870A2F75405FDD91C5EF57</stationID>
+ <name>Country @ WESO-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371599E6CD441EEFD4528F308F34F6C21622F4470417C2B2049FA3DFF1BB7165B70</stationID>
+ <name>Talk @ WCAP-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853716308B30A253C0A29DF5941C48570CB548FC365A076395BCD31CA7D46083429B6</stationID>
+ <name>News/Talk @ WBZ-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>1.03</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537161E58CF52F53FA33F5DF605C8206F0D6EB14BFBADF21C0B3005B253001E1E94B</stationID>
+ <name>Urban @ WILD-AM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>1.09</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371DBBB4FCF1DB81D6C7956ADD38553432A5ED3814BFAA764B2DC9D94D2B8ED1747</stationID>
+ <name>Country @ WUHN-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>1.11</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853719893D2F9765908DE2043120ADAD82542B1CECCCF9D52D5D20B93C5388B192471</stationID>
+ <name>News/Talk @ WBNW-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>1.12</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371B48F5501547FD87102F8A87A014E10B635C0801217423BC43215D26AB3110388</stationID>
+ <name>Spanish @ WAMG-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853718746B83ED26AF05864A177379D8048102AEAABD5B4BF9FEAE145690ECB8E4BCB</stationID>
+ <name>Christian @ WNEB-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371C16EA9DA32D209C26CB482DA82855F5A7AA14CFC0E70BD9C2617B5C7BF07F2F1</stationID>
+ <name>News/Talk @ WSPR-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537124740976FD8FBC8E9665FAD97BFA40FF363C3FB995DC209AE1CCD831312FEEE7</stationID>
+ <name>AC @ WEIM-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371E92ACD80F521B71A38FB50E7192DBEA02C6A4C4F4B5EC7B5DCBF80F3486E0F3C</stationID>
+ <name>Oldies @ WNBH-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537154841F019B9E50F0B94012A776A59D77A8E49EAC4A9D4525100DD86DAA0E761A</stationID>
+ <name>Spanish @ WLYN-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537135B08C51453D3781EAD9A546BF8901868D75C2BC8E6E0F70E49A4D5E04BBF79F</stationID>
+ <name>Country @ WPLM-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371305D7C4B9395EB032EE61B65F6672AECD9E20D09BB58DFAA60649DEA9594D3C2</stationID>
+ <name>Spanish @ WLLH-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371B449B2BAB6C0B2657129EC8860D32DC0322FC4A474605F7ABEB79FE1DA1D74A8</stationID>
+ <name>News/Talk @ WMSX-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371949A5B71B49271C1056934E7C7CC47BBF55D60392A33D199B656680AC8A7F745</stationID>
+ <name>News/Talk @ WBEC-AM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371EAC02F797FD4449FB2F03FC2F6751419874627F471AE80C35753D8F19DF18228</stationID>
+ <name>Nostalgia @ WXKS-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537107FAAFA3F0905F35CD894ED90E676458E03AAE1721811D96125B40A3348A0CA8</stationID>
+ <name>Nostalgia @ WMAS-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371EB48E8B521FD79C8F77CE7964EDFB0E8FF597D5DAFAB2E40E2D6C86C520A8D7A</stationID>
+ <name>News/Talk @ WBET-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371B7A7C98EEC12B69FFC276E9405E807728FE36B5A10849928F85865F6BCF47F2F</stationID>
+ <name>Sports/News @ WSRO-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371A880AEA63C2E645740EEACF09B286C4AD0B73A63E8AEBA3EBCB3782B904CF34C</stationID>
+ <name>Talk @ WSAR-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>1.48</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853717AA897971B7A88A8D7FB5491F29487E4A95C811B677E8B9F176220A0A344C540</stationID>
+ <name>Spanish @ WACM-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853715D66E4E8FC3F2EB7CE9BAA7BA0831AE57B5D4DD0AD3D89772454980959F9B323</stationID>
+ <name>News/Talk @ WWZN-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>1.51</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853716FD3926F57BE3F2891BFF120D49C72B151C53FB2B750271B07889B1FDE409654</stationID>
+ <name>News/Talk @ WPEP-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>1.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Massachusetts_am.krp b/kradio3/presets/usa/Massachusetts_am.krp
new file mode 100644
index 0000000..728b1b8
--- /dev/null
+++ b/kradio3/presets/usa/Massachusetts_am.krp
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Massachusetts</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853715500E1CC1992EC4ABF87463A1039BAAC1316F6D4C1CACCBFFBEFEEFC4670DD3C</stationID>
+ <name>News/Talk @ WHYN-AM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853711B0014906C490BF3096ECBFAA976ADF61D1F3B30886C79DFDA05EA79DAB1F585</stationID>
+ <name>News/Talk @ WTAG-AM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>0.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537191047AF653A58F33CB32E89C26A3CFB2673A51065DA815ED51B2E82F6446E558</stationID>
+ <name>Religious @ WEZE-AM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371C35733DBC870E6BE795154C9EF7ED46A090DAAD40307F53B84FF4794FEE13934</stationID>
+ <name>Sports @ WNNZ-AM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>0.64</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537196ED350A5E44CFEFBAE1DE9D9F4C4CE4A297B78FD3A6D086772C6784A7EB1C13</stationID>
+ <name>News/Talk @ WRKO-AM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>0.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853714A78D6958DC8778BBAF01F752E4F41021AB71D83E1FCF2893AFEE9BBCD8050F0</stationID>
+ <name>News/Talk @ WCAT-AM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>0.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371DA9757B13D87058201AA83B86B8ED4A43072B94C776139935A42D823F2F06367</stationID>
+ <name>Religious @ WVNE-AM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>0.76</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853711C106D021FCF0158A6605C7EF833995D742B8A4D8C4C8B840B76E9B716E35FCC</stationID>
+ <name>Nostalgia @ WCCM-AM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537167FEEDCB50DC53299493B944689EF3E889A4AB122283E92E1DE0296769180C03</stationID>
+ <name>Sports/Talk @ WEEI-AM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>0.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371E909454A4A7B3D53002952411B4206C85859D699FB5B966990532BAC1421B542</stationID>
+ <name>Christian @ WFGL-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>0.96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853711F8B3B90C003E6CFDB4DBC754E81F61019B1D724E03BE1C4283A3C4962ABA439</stationID>
+ <name>Country @ WESO-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537121D898B0F3B0907FB17496F9A4E6A5AB2C7E3B752B905BCD4F9F27C57075FA55</stationID>
+ <name>Talk @ WCAP-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371CD3BDC5DAC0F726DC18C494BD17C944955B8121B38BBE2904806CD01C9A67562</stationID>
+ <name>News/Talk @ WBZ-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>1.03</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371351D377DE0816ADB6BAD415E21EE16FE6378FEAFB82847CDE8C8CE57A814532C</stationID>
+ <name>Urban @ WILD-AM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>1.09</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371C0BA62A173CD6A34E645A075750E694A9A10667B8AA2FC7F48575C6D00852D71</stationID>
+ <name>Country @ WUHN-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>1.11</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371F6778CB243CF5974DAD73C7C716502797623F8C06495BDA4E8CDB309EE25C206</stationID>
+ <name>News/Talk @ WBNW-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>1.12</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371BAD79FBCC99A099BFDB0B407A0BE917330E166C6A526998A671CA5EEAEF8142B</stationID>
+ <name>Spanish @ WAMG-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537133D8D9B765FC179275C7B21B7A46DD3B45384D7A270B583CC0A5F79747F1E0B1</stationID>
+ <name>Christian @ WNEB-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371C231FBA669F9BA147E1D082A74BAB8BCA5B385FA414B9E7CC25B3B6FE75D6EEB</stationID>
+ <name>News/Talk @ WSPR-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371E76BA410B100E8FD86F75A6E6F8DF873B2FC358D1C96D411194614555DC07E15</stationID>
+ <name>AC @ WEIM-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371DBBC5E08CE15770DBFC56BB23995121170D3E88EA0ABDAFF377F2798F1712D49</stationID>
+ <name>Oldies @ WNBH-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537161B39F206F06AAE1992EA786696CEFC58A7D86D78404323B88F1944A222C9D08</stationID>
+ <name>Spanish @ WLYN-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537186ECE9584646141474820822BE62C9EC566060A546CEAC32E781157FF3458B4F</stationID>
+ <name>Country @ WPLM-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371CD4D23C31B2C2B498D05B73346A9140385804AA10DF3799F8D72778C350CAE65</stationID>
+ <name>Spanish @ WLLH-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853714989CA321798CD52C52833DBE964BD6C2703C0982FBB112C0522CF6207F4BD37</stationID>
+ <name>News/Talk @ WMSX-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371B214E1B1CE62B72EF34C5C70EB4666F2806A5535F9120DE2B32C59456D985C13</stationID>
+ <name>News/Talk @ WBEC-AM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371FDE8D43D7FCE8FB37D0DC8FEBBB4164941560A903094FF1260D5E9D66ED61BE3</stationID>
+ <name>Nostalgia @ WXKS-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371F8D010AE6F03F5D0FA3332A10847638CDFA9048AA18141F65B98549E13A9ACAC</stationID>
+ <name>Nostalgia @ WMAS-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537171EE2D22841C3CED6A7AC707DC540B603B346CA522CADA74C86B7600C9D98743</stationID>
+ <name>News/Talk @ WBET-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371287D27E14CD6D211C21C913B786861AA8C99723654F99F232270599B51E774BA</stationID>
+ <name>Sports/News @ WSRO-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371731D733DDD803381BEE76682F433292FF893143CE704C46D0D22E5C74A6B06DE</stationID>
+ <name>Talk @ WSAR-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>1.48</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371254A29344D569D67BE2AD1BB7C885F40D6A0BBD760698EED708A296DC8865C43</stationID>
+ <name>Spanish @ WACM-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853711FB3F3BA5EEB0B4383F1B505C389307275B0F12900E60F9C404131E664B25B96</stationID>
+ <name>News/Talk @ WWZN-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>1.51</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537112C5F4442AB0B3F6A36ADAAEADF344E8BCCFA38FC9FECC156835180A9658D3FE</stationID>
+ <name>News/Talk @ WPEP-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>1.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Massachusetts_fm.krp b/kradio3/presets/usa/Massachusetts_fm.krp
new file mode 100644
index 0000000..6fb1cc6
--- /dev/null
+++ b/kradio3/presets/usa/Massachusetts_fm.krp
@@ -0,0 +1,446 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Massachusetts</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338537101FBFBB1F082C3F4349826618B91FA354DD74F1DC1213BE6CF5D18FA2D862C24</stationID>
+ <name>Alternative @ WCHC-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371EBC2D79CE06162D8B0A91FDA6B88F26602FF5F80122B5C2EC17F857713B487C7</stationID>
+ <name>Nostalgia @ WERS-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371FA22CA79B2A333C9B72035B68CD8240B00411ACDD80DCF57500FDE70B56F9414</stationID>
+ <name>Alternative @ WTBU-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>89.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853718898835295B2EAE0456E0086E1DC6B2537FDA8247F37D02E0AEDB17366487C24</stationID>
+ <name>NPR-Classical @ WGBH-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371F3297D8CB1DB543CD0368CBE997BB47FAED1E4D18B4336258A9C6FE819597F4E</stationID>
+ <name>Smooth Jazz @ WICN-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>90.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371EB981325D98A0EF8FC248A19FAD799FB338C90EC6DA29A279DCA5B349A470A5B</stationID>
+ <name>NPR-News @ WBUR-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>90.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537171267C0ED2765B5559D58DE1090A642D7CF994899C7D418A8648BBAD1CCB913D</stationID>
+ <name>Rock @ WMFO-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537178C29C9F0422C9F3586A5BAF4D0E2F9DAA3C3E90526E9932FF12A78497B8078F</stationID>
+ <name>Rhythmic CHR @ WMWM-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>91.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537151D05467A10978D752146632B2494772584DA395670BBF3DA5DC6F7D688033BD</stationID>
+ <name>Alternative @ WUMB-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371AF41BFF362EEC5EAA4F00AC979513DBCAA199DB08E6E55BFF21E4A08C0972894</stationID>
+ <name>AAA @ WXRV-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371B4D6396CF041D67F61E6C950F02F4D1A08F3AA9A7248CBD86DA6DCA6DDB2D276</stationID>
+ <name>AAA @ WMVY-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537160EB11AFC0D61B9FFD385C75FCBF3BCD94BC79A0A3FEC9DC4860DFF12C6A89BD</stationID>
+ <name>Classic Hits @ WBOS-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853714EF0C8E00C09A97F49398A71D5D021E7C9486BE781C0B2A9D8B26A7D945C298E</stationID>
+ <name>Hot AC @ WHYN-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371432C473530EE73454B734F2A9463FA92DF40FB28355A464A703A5A949B355587</stationID>
+ <name>Alternative @ WDVT-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853718FFDD264153B9EFBD1843E1DB795E20767A81B1F8854BA5419231964F48EB832</stationID>
+ <name>Hot AC @ WQSX-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537159C9C443D1FEBA8153A8541028B7141BEC443FF09CEE6D7F507CCB3434D8234F</stationID>
+ <name>Rhythmic CHR @ WJMN-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537110F3256CC24031F7E4BCEFD6E1D6810DFE6938C41AD0A4AA1A22DBAA4BAFD0E9</stationID>
+ <name>AC @ WMAS-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853711748D8C933B4EA58A8403BE780C3785F0D39B073668EF7E24B2356C498C3B32E</stationID>
+ <name>News/Talk @ WXTK-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371AB42D55A7C6389C7B959BBAF65906106208C5FCD6E8ACE1EA3A8CA1E2B08A64E</stationID>
+ <name>AAA @ WHRB-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537185C8C75F3DA623C6FDF04431D688B1CA72C02A45CC558055333C41F37A45DE6F</stationID>
+ <name>AC @ WUPE-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371AFC2CDC1940A315E9386D1FB1C7C30825EBEC7969091D404E752DAE3CAE84F4C</stationID>
+ <name>AC @ WSRS-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853719CAA17849B3358860B7A7E06851A4B7E328F7D82260A830E98CD45348133F3CD</stationID>
+ <name>CHR @ WRZE-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371CE5EEFF63F30CC4A0C3DFB82E522CA8B7143004081A745F9D2259FF6397ABE5B</stationID>
+ <name>Talk @ WTKK-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371CDEF1D76E5293A221EF46513B2514BC15A1BE83A8F0DB4B098F43160A58F21E8</stationID>
+ <name>AC @ WJDF-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853717CE9D8821904A54EEC0A7F2814396FEBF3206FAC0568724D34FDB21FA2CBD62E</stationID>
+ <name>Urban @ WBOT-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853710C7E602A8CC6C5C8DDC71C282E8BB226DA165D45B8CD7EAAA822149D62DED43D</stationID>
+ <name>Country @ WPKX-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371B1F5B6891180C216A2ACED2DECA30389D0AF6CC25D70E0250FC3EA3F0CCBA845</stationID>
+ <name>Hot AC @ WBMX-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371D8C8D4FAA00FA9C89804A83FA9410BE5141ABC25C885870B74E66D6A6432E1E3</stationID>
+ <name>Oldies @ WORC-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371644213275C1D4B1550E0C8D4B4B9630202F7C40B79BDF97E6EC4EF6DE9046EF6</stationID>
+ <name>Soft AC @ WPLM-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853717CB85B950C483A42E00005ECDCA84D8B4FEF9471984F0AEA99A7696AB8369EE3</stationID>
+ <name>Active Rock @ WLZX-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371D18AF2670BC5578CA63477FFA4A55F5F8381775419187B3B9D357719398BC2F4</stationID>
+ <name>Country @ WKLB-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853710CBB890F2CA3508D7F915F5A16D372514248D3DCD1C1CDF9A4AFA37CC6E2214C</stationID>
+ <name>Oldies @ WAHL-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371ACFF41A14E9A0E4554F74FC358DF5201FA83B7DA6631C6ED882F0D343454BD41</stationID>
+ <name>Classic Rock @ WWFX-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853710DEC5026C0BE01D1AFC8C46EE27A21A4BA9D4E68883D4AAC2C92E5871352C6B0</stationID>
+ <name>Classic Rock @ WZLX-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371757DA4DA2AA331726257CACECECE4BC406C67C5514BF606A82C73C39B3F6E2A8</stationID>
+ <name>AAA @ WRNX-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371EEEE0C8AB911F7D1F4C5E9517C05EE87B7CD9AE55CE550E697DE5C59A968C703</stationID>
+ <name>Hot AC @ WTWV-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853714A8B1C54920EDB29A87D4C6099640848D962D9FD1459D83A9A65177A5C6F07DB</stationID>
+ <name>Alternative @ WFNX-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371418CDF6AC97ADD895856879FB042D271CAB877F5D115371633D0047FEC9B59D4</stationID>
+ <name>Classic Rock @ WCIB-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537153CB137426381777BAEBE5177B677724D90F7B25E30E8F3AA6D743B6E345831B</stationID>
+ <name>Classic Rock @ WAQY-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537109E8B0280FDB0F655474DA6280D656BD96F3EF1AC88FB68F58ACAFF43F8938A5</stationID>
+ <name>Classical @ WCRB-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853711CAD82C8891ED1D4719E643E7FC2EABD3F143EA23899B8B5674427B9F470F954</stationID>
+ <name>Active Rock @ WPXC-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371FF2A84B13EDE45771863F0BA96B98A04435116E03D5F64ADA89BE20ACFD9D86D</stationID>
+ <name>Oldies @ WODS-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371E2CD0E862670F4756E9071BA40D5CBBDA811564CC201A6F8C7F0910EC88C2216</stationID>
+ <name>Nostalgia @ WOCN-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537148A2B8400901ACA8A2E9359CBB285D755C23322490496A0FCD68D74463E33D2C</stationID>
+ <name>Alternative @ WBCN-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371B0E29FCEC00A9D4A93AF9F970E35A5B339E13B1BAD633DE87E5A98A3556A8715</stationID>
+ <name>Hot AC @ WXLO-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371662B0D7F0AB98E9DE582D7B1D97648D56DA8EB26C6C33BFCCCD5F1470B802694</stationID>
+ <name>Classic Rock @ WKPE-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371EF678F94627C39BD5C8614CE1ADA54C69FFFFE5507438C6210A65489C313D0E8</stationID>
+ <name>NAC/Jazz @ WBOQ-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853715B40D34BB44BBD6D25C1DDA5675EB417266976416AF070ABAB5F6EE86625B46E</stationID>
+ <name>CHR @ WBEC-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853717EBA5AF959A3507AF8E432BA5EED879DDBA50CEB90FC3A72E7E6C538909EEF5C</stationID>
+ <name>Classic Hits @ WROR-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537172D575B28051295033BF79AF71AB4294FC67E73C0D9950AC8934B5AD4649494B</stationID>
+ <name>Hot AC @ WCOD-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385371F57C9FF481AE320C66F333A0DA3603EE5A6AFEE72E9D4BCFA3C8C9C755132B85</stationID>
+ <name>AC @ WMJX-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853712E48DBE90D5D3C36EC4B89C16301AFF3421C0289287AA0A340F43C731E9D6F7F</stationID>
+ <name>Rhythmic CHR @ WFHN-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853718829333C5EB5A6477AE837BDB80CE2A457FF4D5FEA39EDA3EB12A267AD5C73E2</stationID>
+ <name>Rock @ WAAF-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853716D97477E582FFB5E85EE5D0947C1F9C544D6F104C038A93FA5CBB09D5B48E5BC</stationID>
+ <name>CHR @ WXKS-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Michigan.krp b/kradio3/presets/usa/Michigan.krp
new file mode 100644
index 0000000..f80a675
--- /dev/null
+++ b/kradio3/presets/usa/Michigan.krp
@@ -0,0 +1,1014 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Michigan</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338537420C6BBEACCC443A5A9D7714B89DE13824FB1C1590BEFA8FDD0E69B565C6D5457</stationID>
+ <name>Christian @ WLGH-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374D12255D53D7A8793674351405C92C1663C60A6077EF393C97C20B5FDE3BB71F6</stationID>
+ <name>Christian @ WAYK-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853741401FD3A90641CEEC193A4DD16094DEE84D8592D450C0365CDB4F2A74BAA0E02</stationID>
+ <name>Alternative @ CIMX-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>88.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374567E2D822400701F17F062DDD807D7CC890E7BB80F0D94E1F05B08E102D09450</stationID>
+ <name>Christian @ WAYG-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374588342CAE1203F99333ED6336C2716334495CF9C8D8649F7595F87BA43900126</stationID>
+ <name>Rock @ WCHW-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374B802515FBAEE11AF65ECADD7866726D2D923901530541C698545BA88AB022A96</stationID>
+ <name>Alternative @ WMHW-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374894F6915E67959E2B778C06451AAAFB5638B1A1A6BAAE2AB0709F6763B32BAD5</stationID>
+ <name>Alternative @ WWDX-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853746A66ECF39E9EA2FE3C346EB9069505076C4E32890B768401A92C4C22E94EECC4</stationID>
+ <name>Active Rock @ WZUU-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374F8DB08470EBBEAFAE7A8AC163BF4080494A349F444E6E4A648AA05A73B5853F1</stationID>
+ <name>Oldies @ WBYC-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537448B970F335B94CC34B8CF1F68FFA434C582A3049464BAEEB592F7E2C4A3145C0</stationID>
+ <name>Urban AC @ WDZZ-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374EED38D514452EA354B60C660E04845D3EBC070C3CA12D2908971E80698C11D33</stationID>
+ <name>CHR @ WDRQ-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853748AED3066C7AFB3ACEAEB31F35653B2AB49096EB2A1E68F3A734B7954133055E8</stationID>
+ <name>Active Rock @ WKQZ-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853741EC0BB15FF60AD6BD90EB2E2E481520EAA3C8A9A01EED75E99D78D37B712FE9A</stationID>
+ <name>AC @ WKMJ-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853749C9096E515E8658EFBF72D5529D101ABD4A577D9BDE82AC0BB83E7CC2138E927</stationID>
+ <name>Country @ WBCT-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374C37CCF53BBABBC527C3E9218540957867EAB44A207AE6D1A2B6DB064061E70AF</stationID>
+ <name>AC @ CIDR-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374CC2C1A12E23D10EC54E7EC2A60646206A0EA6AC0C66EDE1BF2563688D18BD2C4</stationID>
+ <name>Classic Hits @ WVIC-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853740182190F6D754A85E269E3FE56BD9763E114E05362B023D4F66B091703479712</stationID>
+ <name>Rock @ WKLQ-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853745DF50EF063559CDFBDFA8878D0057D0FE166AE7989C3C8FF957A81A7061DA110</stationID>
+ <name>Classic Rock @ WCSX-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537487810A6756E5AA9E270C5E7F32D18481DC9BF0AE63AAC887E282EDE692421532</stationID>
+ <name>AC @ WCNF-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374B5BADC7875ED135659D8BE4ED4F5E29FE26A19E98B3C31D855CB83AC10F3595A</stationID>
+ <name>Country @ WFBE-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853747E11A56F76A2E554DFAC08963C682FC9088829FF06232E8F4CC2E869EBF7A740</stationID>
+ <name>CHR @ WCFX-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537483ECDEC5876C9AFFF2B5B845AF5D1CFD106FFC15B9D26516BFB5D8EF891AC453</stationID>
+ <name>CHR @ WKQI-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537488363B0098B3C8D80D50567CD9452B7C5240B7A98EDB38ADBA8E67EAE4FF8CDE</stationID>
+ <name>AC @ WLHT-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374DC574748CEC8B93B356088A9C4F6D1B27322353DB2CC7C258235C65436E3DE03</stationID>
+ <name>Oldies @ WHNN-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853747D4CED7A85F59D9057DE9D9497F22DF53B55531CC1B3556E69291EF231A75193</stationID>
+ <name>AC @ WLXT-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374EFCE241794147BE61CC04DF51C5E2429E03A95100A98C8831E940633E958AD47</stationID>
+ <name>Classic Hits @ WFAT-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374DE216525B8E2D48AC1DFA370D3247ADA25613D3AFB1DB46307A339AFAFBCB4AA</stationID>
+ <name>Christian @ WUFN-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853743562429B3F343C7703C9ED07F07ACD306FB67B0C500DECD4AC9BAE94861312EC</stationID>
+ <name>Classic Rock @ WLAV-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374B8A426B47B8F9AFA50A08F0CE0D5D7140AC073876006665ACCB63E7F8DEA3339</stationID>
+ <name>CHR @ WGLQ-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374B8BA9A0B99E4EDD9E3C277E3728D8FE5485B935B699C6BE6477BBF637B24A1F5</stationID>
+ <name>Classic Rock @ WEEG-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853746ACDA33F4E20DC6D5AE515106EB3FC9FC431BA814E9B3D674169934F606282D8</stationID>
+ <name>Rock @ WKLT-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537401955955990C9BBC137AB4B769FF8286C774BD00648E394067DF3822A2187966</stationID>
+ <name>Nostalgia @ WMRX-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537412D46D9FC9C5A0C2A25DFFC6622F19DE643E5DDF5A83068639118207C374BB69</stationID>
+ <name>Classic Rock @ WIHC-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537448659C73F7E87BDD68CC3C0C9B64963FDC12989C75945F3638506C4182857892</stationID>
+ <name>Country @ WKCQ-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374AFB6F66D41EC26A74FE504E7CA17CE2BCABCA5A45F7F45E865B3C3C6536FC0F3</stationID>
+ <name>AC @ WCSY-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537467CBA8201E167911943AB2F6A85CBE1EA588D26803AC5B717A0F3754BB779A7F</stationID>
+ <name>Country @ WNWN-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853745FE97B4F07B389123C48D00DE9AD5362041ECD0E25B77CC1CC4EC9A05665DAE6</stationID>
+ <name>Classical @ WFGR-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374C91CB30F38403883E7D872057423EDB524B3A093B39208D0F0AB8C33F2F40525</stationID>
+ <name>Rock @ WKLZ-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537441EB4E705EAFE7083DD3EEFBE132C9FE7E53ACDD14FBBC095F7125CFB5BC1556</stationID>
+ <name>AC @ WFMK-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853749ACEFE92CD52343CBD71D91FEE1699812DBB41DE9112B58F9036B48D9A029A6A</stationID>
+ <name>Christian @ WJQK-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374907A6E99A0A36BFC42EB468EA18773BD572C1B50AF4639C4152D2140B1FBAD88</stationID>
+ <name>CHR @ WYSS-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374C61AE2E0F647A3C2FC8A8225F4CEA30AE4F3A0CA48F370A5B3B60854D85419BE</stationID>
+ <name>Oldies @ WHAK-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853743B769B5C5E79EBE5DBF156E37ECF9C3F0C1631C64C9D7FBEE18C8586A745FF29</stationID>
+ <name>Country @ WSHN-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374ACAA0B57D63103022DFB500EA0FC8C10DE70032BD23A6F1616A0B99326593926</stationID>
+ <name>AC @ WNIC-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374CA06507BC45D2C46F25897E0BF49465282F9D58230FBE08E8BCE69562C6F112E</stationID>
+ <name>AC @ WTCF-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374C6F015E6F5CBD65AA1EAB5BCAB45B860063D58B506315E048AEB242D790CF012</stationID>
+ <name>Country @ WITL-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853747CD48DE9D1A65209274E761EE1EC9DED9012E821BE9AAD471D7D8D9AA600F9F6</stationID>
+ <name>Oldies @ WQXC-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374A72DC1F85B50A7BD4CAB509027E703E2FD388812C1E020DE93D98A04F7668E6B</stationID>
+ <name>CHR @ WQON-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853746F44425B12191A4BC8673AA5228B0C029E15ED3F25A2EF6E84CBFE9252A5A27D</stationID>
+ <name>Classic Rock @ WSUE-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374CB1309067708E8F90E6419C7F5A099937923D09CAB25661E908D1E64D03BB96C</stationID>
+ <name>Country @ WJNR-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374E59FCD4762B079CAEDD8E81EAD1D22C1BE22DD37EF4790233A0685400BBC3904</stationID>
+ <name>CHR @ WHZZ-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853749093A59C88F626884E337411CBF8F6823666842AD7F3050E074B936F4599A525</stationID>
+ <name>NPR @ WDET-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374FB14E78866DFD53F9DF45221AD53F7CDCE01ABE88DF04C5868830AEA928A09FA</stationID>
+ <name>Country @ WHKB-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853747CBBAD025A7A4429458913FACE8401A92357D6648D0306A11A90919B6C9D13D3</stationID>
+ <name>CHR @ WIOG-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537411D0D64133F1BC9DD0D20228165E0B38EFF5068E1E1BC77776FE4ABC517E14FF</stationID>
+ <name>CHR @ WMOM-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374DA9F000955B99ABB673C2778967EC3000926C6FF9D45ED75DC764BA3D93C5CF8</stationID>
+ <name>Religious @ WFUR-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853743FD061976FC288FCB7F619C80D8D238E33E07A3E501358C14557066D32793FB6</stationID>
+ <name>Country @ WGDN-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853748CCC3CF8C1A623275DFD7CE50B8B51DEABDD2C0A51A946FD29EDCF295D350DC4</stationID>
+ <name>Country @ WFXD-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374D952C8B27A015D941E84AE1B8D9559809E7BE2E618CF251951B872D79AFA6218</stationID>
+ <name>Country @ WTCM-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853740F048018874CF1912958DED30269B3C2571DCDA8CD6482F7FB12E987A7892BA1</stationID>
+ <name>Urban AC @ WUVS-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374FF281F91AC8F686BE7779705F64D3C9D236AAE4BE235FA27E7457A43AAC04981</stationID>
+ <name>Classic Rock @ WRSR-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374169067B958E76804A07BF4F12ED4B99EA04A9DBB99604D61F516316880D69F43</stationID>
+ <name>Oldies @ WOMC-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853740E20A780F0DA9D181C72637FB3E15CDCF659E3D1FDB7B45C1FB1C7CAEFF98897</stationID>
+ <name>CHR @ WSNX-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374D5DAD0EDCC0234E363087EA96D4366204F0C1FE11F7925EDBF485F9206BC57BD</stationID>
+ <name>Country @ WKJC-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374807569BC1799FE389F2533902433F893930F679783995068D075DDC618F6058C</stationID>
+ <name>Oldies @ WWKN-FM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537435CA57BAD6EDF6BAAD42D4B12D0A27D8B43F82922A0EA87D9C34257AC4CA26AC</stationID>
+ <name>AC @ WMGC-FM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537470AEFE7B63BD3BAC73001F14FB6FEA8C7AE7516740F4A83CECF47D643AA6CD96</stationID>
+ <name>AC @ WKHM-FM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374C71D4034DAB62CF754198A598C600EA3181D32E3BA704A3112A06357B21C2DFA</stationID>
+ <name>CHR @ WWCK-FM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853748D354590A2B595A6B3C31C0F61BCF0D90B84B23256166AB3AAF818CF77AD89D5</stationID>
+ <name>AC @ WOOD-FM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374EC6D1F7F324921D392A7F046D89565E2B3494B75A321BD61CC5F1071ECA0874E</stationID>
+ <name>CHR @ WKHQ-FM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537447EF37CB3A471BB4614EAA3E8ABFB77C19FAE87E57DD8708D23450C7C4B8A45E</stationID>
+ <name>Rock @ WJXQ-FM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853744355DFBF096E3F51CB361FB355C9D99F35B6421080BBC62915FFCF0C70C2AA7A</stationID>
+ <name>AC @ WGER-FM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853742784012F623BC8F906FB481955D755650E6E5227902A29F61BC02C783D3DC5BD</stationID>
+ <name>AC @ WQLR-FM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853743F48C26A08F4349E9DEABAC4A6A3C6C3FF9BCD6B86BDD80BAAE371DCF22ACC9A</stationID>
+ <name>CHR @ WKPK-FM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374B5FA6EC1A1B02ACBE793CD6FE1264C54A8909910EFCC7EBC2CB3AEE22055BE85</stationID>
+ <name>AC @ WUPM-FM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374CDC14EB77E50BE871D9637EB12B175F328A7F14D2199E395543D8D8BD7DE573F</stationID>
+ <name>AAA @ WIRX-FM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374657B3DCCF79748606C8F80FDB328CA35C21D269EC17479017B2BF8E44C4D04C9</stationID>
+ <name>Oldies @ WODJ-FM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537437BB5F5CD32C23C8B629BEEE6378EC230A3305F913EF7E284EE03A1ABBD3CE53</stationID>
+ <name>Urban AC @ WGPR-FM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374FCF184D543F06C62DBB02C7C12886C605A8EBCFB0C97CF79B6079D20DA794AF9</stationID>
+ <name>Classic Rock @ WRKR-FM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374CD7EDA51D0C6D9D41815A1724B25F9E96B603F030755B9D5BCC10CEB8AADDF16</stationID>
+ <name>AC @ WCRZ-FM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374E46AFCFFED2AFF69A4294C92E2FC5AE4AF27297FC807C1EBA62C33B059B69C9E</stationID>
+ <name>News/Talk @ WTCM-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>0.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853747FC1B2C0066DAE0B02C687AF0192BBA713A34D12E8F9715767F37033536C7C69</stationID>
+ <name>News/Talk @ WKZO-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374538DE458EFA5F8CFCACA2BE1251A65700CAEDA5B842C6169A22806F47E57571D</stationID>
+ <name>News/Talk @ WCHT-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537419CAAD67776322AB7810110C32A3CAD985EEB0FEDE48D6BF5552D45E5DB94DB9</stationID>
+ <name>Ethnic @ WNZK-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>0.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374F93147222C8754D5CF5DA086BB2D53013FBA35E298F519DC3AD3ECCD906A1F3F</stationID>
+ <name>News/Talk @ WVFN-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>0.73</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374A71B5BF43DB2D03655548020FCEB0A7141004C0B8D61F290D68FC5D52AD71D6A</stationID>
+ <name>Oldies @ WWKK-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>0.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374D25001E4C4B91FB69DE2E9D87BD1781E3353E68F62487EC2CF5FBFB037A6CF92</stationID>
+ <name>News/Talk @ WJR-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>0.76</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853740944AD6B10D023896CEC94783FE428C5D6155C7BC368E7861E5663C27A094415</stationID>
+ <name>News/Talk @ WSGW-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374AF3D58BF5C06A6B07EAEDD28EBBA354EF8A1362AF6050FD3246D05456A6103F5</stationID>
+ <name>News/Talk @ CKLW-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374FD7121D0F6E7D1B9BAD6AA2C2BDE9D3CE24800B19A3560D300D8D150C30B8D67</stationID>
+ <name>Childrens @ WFDF-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853749D4E6CE01011DCCA4A9795F0A5DA1C080025244C4F952BD08F18CCDE141A405D</stationID>
+ <name>Oldies @ WWON-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374C4D90B45958B7B3E28BD58358A603B7858DB1DDE76B634CD46CC39B2D20F52F2</stationID>
+ <name>News/Talk @ WWJ-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374D4EDC009D385F471119B82C5EE9D490D7274125E1D269BC3CEDA7A242F279110</stationID>
+ <name>News/Talk @ WKHM-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853748F9AAE91D9EB8D931AAB70F47134051175EE67C6CA3507DBF55DEA396F645F3A</stationID>
+ <name>Nostalgia @ WQXC-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537453A74CD93CA60FE2DC21A9F44778D83C2F8BC35F538B43122B52E9D32BEFF6F2</stationID>
+ <name>Religious @ WDEO-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374D2DD3D6F4E3A828063B90605ECDAA298513E987EDC2EF477F97054D019F9F59F</stationID>
+ <name>News/Talk @ WTKA-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>1.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537431D74CDD48A8AF3CB65B0E4C7EEA4BE231F4227C4A461597330D214FF6DF41EC</stationID>
+ <name>News/Talk @ WJML-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>1.11</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374E0DCC0546E3A4E8F35E39008F97D83B04BB3FC0D822ACB229A212044AFD5B3AB</stationID>
+ <name>Sports @ WDFN-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>1.13</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537486A108F5CE50B4632424C1DDCAAF21946E15CFBB66405B1AB9695D7E5278072F</stationID>
+ <name>Urban AC @ WXBV-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>1.14</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537498B45F69894C8F018FC9994C7B0F6DAD5D3BFC29BF107A61F5653A8F7D828E0C</stationID>
+ <name>Country @ WCXI-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>1.16</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853740D1E96F355D093530B24BABF4C1CC4F3500C8F3E3195EB75D07DB911650A707C</stationID>
+ <name>AC @ WSOO-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853746789EE8A98C5B95518B37B8E5CC41FB0B77EF033F4AE6EB97E29065614478F94</stationID>
+ <name>News/Talk @ WJIM-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374E308FAF260F2C5B8B04001A84A5B73EE483C48EB4DE4F4A78AC0CA947755ABD1</stationID>
+ <name>Oldies @ WKNX-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>1.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537463F457F225DF73B9F9A8D78C833FE9CECA02B2CC108D445958570D977315C48C</stationID>
+ <name>News/Talk @ WWJQ-AM</name>
+ <shortname>104</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853742EFA3486BB83F51691D0B1122C0644E4E1185CC22F78C301D0E3EC7BE18D52A1</stationID>
+ <name>Sports @ WXYT-AM</name>
+ <shortname>105</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537454B404A1E726E01FBC2BFF73F91573FC7162BC66C8D88EF9ECCCEE3B3C2F43E8</stationID>
+ <name>News/Talk @ WOOD-AM</name>
+ <shortname>106</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853745288286C36475BBCFBD8C01E9FCA86EF2D5687EC9F054651AAAFFE12F057C2D4</stationID>
+ <name>News/Talk @ WBBL-AM</name>
+ <shortname>107</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374D16827FF258069AF42489E4B436D12AA48505BFF9D032FF0D078111EE739320C</stationID>
+ <name>Religious @ WGDN-AM</name>
+ <shortname>108</shortname>
+ <icon></icon>
+ <frequency>1.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537425F1F108D41CCC3E8A2EB1AF364E8C7A41C593E5A3E15CE818C5CF4608EEDF67</stationID>
+ <name>News/Talk @ WKMI-AM</name>
+ <shortname>109</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374495A4552BB250390D3F3F5B6CC52A570D7E57137765D9967924A5F60E6084277</stationID>
+ <name>AC @ WGHN-AM</name>
+ <shortname>110</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853745506E1CC14A594F2F724D54DEF5F3F35709793E8987EBB5A287D4B7A582EBD90</stationID>
+ <name>Nostalgia @ WSCG-AM</name>
+ <shortname>111</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853747267F60D6DF74F00C7D160ACFE8C894BACB9052CAFD2F22915E2B354D7087F3B</stationID>
+ <name>News/Talk @ WSJM-AM</name>
+ <shortname>112</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374925505C6DACEC7FF37082AE7E569AB432618685BAAA69D9D1BDF59CD3D8C857D</stationID>
+ <name>News/Talk @ WNWZ-AM</name>
+ <shortname>113</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374D8371253A97DDF8E6F8006EDAFAB1D2B3BFDEF50D709D3A7593EEEF60362B1FB</stationID>
+ <name>Nostalgia @ WKLA-AM</name>
+ <shortname>114</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374A481D8C4919BDBA6EF22868D5022B3349CFB88DEA4D64E8D6443B82233C8804D</stationID>
+ <name>Oldies @ WPON-AM</name>
+ <shortname>115</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853747ABC75FFE131BDF3E3A4F1E29C8168D7457EAA8AC33F7E4271DCD2025CCD4D86</stationID>
+ <name>News/Talk @ WKLZ-AM</name>
+ <shortname>116</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853740A4BA5AF475EB9E7E9029901F2AB334B391942216AAFD6D257A24C8E009723C3</stationID>
+ <name>Country @ WSDS-AM</name>
+ <shortname>117</shortname>
+ <icon></icon>
+ <frequency>1.48</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537488A9BE291AB55B89E24C309816EB7B1D59BA5677B6B8E4DBAB27C0CFB72596C3</stationID>
+ <name>Nostalgia @ WMPX-AM</name>
+ <shortname>118</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374101D26EA9B1230380125FFA067C7FA38395E1866181CB05257274A281256CF2B</stationID>
+ <name>Christian @ WLQV-AM</name>
+ <shortname>119</shortname>
+ <icon></icon>
+ <frequency>1.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374ADEC90F6FB0739A07F1E741AA67E1863276EF139F8B2A5E1C04DE8B744776AB2</stationID>
+ <name>Country @ WMLM-AM</name>
+ <shortname>120</shortname>
+ <icon></icon>
+ <frequency>1.52</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374354610F08F5805007C9E3AFF8444F9100E04E375C9942E887F17BFF37170E01A</stationID>
+ <name>Spanish @ WYGR-AM</name>
+ <shortname>121</shortname>
+ <icon></icon>
+ <frequency>1.53</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374DDC5DED343D76B409C90948785FFC4D9E000BD5D9752139F13D99111ADFEFF4F</stationID>
+ <name>Urban AC @ WNWN-AM</name>
+ <shortname>122</shortname>
+ <icon></icon>
+ <frequency>1.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374A31CA46D9E6C6878D46CD55FAD975096E4CBBE556AE4C59F3F63821A386DB7C2</stationID>
+ <name>Religious @ WWCK-AM</name>
+ <shortname>123</shortname>
+ <icon></icon>
+ <frequency>1.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853744B0C377751177BF94DD3F4CA9AE860699F7584919F74E2EE894F547C2FF9B0A9</stationID>
+ <name>News/Talk @ WQSN-AM</name>
+ <shortname>124</shortname>
+ <icon></icon>
+ <frequency>1.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374913E56AF31CABED2B5355AF5623317A5A17239F4789CB64AAA949FCF59B49423</stationID>
+ <name>Urban @ WJNZ-AM</name>
+ <shortname>125</shortname>
+ <icon></icon>
+ <frequency>1.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Michigan_am.krp b/kradio3/presets/usa/Michigan_am.krp
new file mode 100644
index 0000000..49dfd60
--- /dev/null
+++ b/kradio3/presets/usa/Michigan_am.krp
@@ -0,0 +1,374 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Michigan</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853733B38EEC70DD09047C0B4541841AE7457CAB0BBB5E68241E9CFAB1DD55FC66010</stationID>
+ <name>News/Talk @ WTCM-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>0.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853731FB2663699ECE27E6DB03059E473C3B3E9104CA10ACCC21031E01CF0EA41C42A</stationID>
+ <name>News/Talk @ WKZO-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373236CE19AE15B3989B85BF7B5FB331D585617551CAFF0ECDE214F9D1FCE692F56</stationID>
+ <name>News/Talk @ WCHT-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373FF453DFF290EF22849172CD1734051C7975C89379C51E61360AD59945469EE68</stationID>
+ <name>Ethnic @ WNZK-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>0.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373214028A67148E10E6A81C490C24C53ECAFDFF8F21ADADFD19B31692DDD875B5A</stationID>
+ <name>News/Talk @ WVFN-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>0.73</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537301EA02532FEC810D79162267605FAEEF8C564771A42DDA536140B35AD38277CD</stationID>
+ <name>Oldies @ WWKK-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>0.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853739B731E4EAEC1B9CB49E9C35FFE0AC60D14B2AEAB428C3E7556D2051C81C499F4</stationID>
+ <name>News/Talk @ WJR-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>0.76</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853738B785E319D8383A08FA22F86217D2BCDC2559A5328BF8A1E48C5E495CEAD5352</stationID>
+ <name>News/Talk @ WSGW-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373C829E06840C27883623B82586483F01AE6B156E82BB53ECE4BFABB2232D627B1</stationID>
+ <name>News/Talk @ CKLW-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373D8EBE2BC3E779245DEE2633EC58B7E592ECD9C26A5E9ADB336B960108ECE1596</stationID>
+ <name>Childrens @ WFDF-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373BCE3FA2211DB7E12484F1FE56A762B2A9387DB771A02D26DD979FA540489021F</stationID>
+ <name>Oldies @ WWON-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373993BB3F7CDB1E58805D49438FE5A0D41A116FEEA7BD7726766AF8F4A75B68BBD</stationID>
+ <name>News/Talk @ WWJ-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853732B3BAB9004FB8D6B93680DAD49544D2B8703867CA2A92599E05FFF6F092B1854</stationID>
+ <name>News/Talk @ WKHM-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373051F9FA51AAD428A084F33CBDAAD2894B67307B55C1428FFF0DDEBB7745DEFBE</stationID>
+ <name>Nostalgia @ WQXC-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537363D18B5513D54ED9ADCC982BD1738966E01D62290898BBD752401597AAB10283</stationID>
+ <name>Religious @ WDEO-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853736050DECBAA91523DC7BC8F8F04F92D996F4C227B47C0FB89B9C067AC741E1C9F</stationID>
+ <name>News/Talk @ WTKA-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>1.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373B3B8A3100CFBD3D93B13A2AE85AC823B6D5DEF099B4D5C8A738AB8AF66930C2C</stationID>
+ <name>News/Talk @ WJML-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>1.11</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373FE548D6BBA1297F4D6C6E72D9988C09442C5791228593143EB35AFC611A84996</stationID>
+ <name>Sports @ WDFN-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>1.13</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373DF71B5A0FC1570EEC197D41D32B014AC6E3BE3DA1E51E6A61741BB4E49697B3A</stationID>
+ <name>Urban AC @ WXBV-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>1.14</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537349FCA527BC9F15060439E5884AB6309837D4F31066A50AAA42AA30A7D72E4D1A</stationID>
+ <name>Country @ WCXI-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>1.16</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373A3A058B1B43787F40A54F15F2659BDAB5F4F976C41851EEB594054E7E1AD645F</stationID>
+ <name>AC @ WSOO-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373B1E9F6502BAD8AB6808F56B906671598ACB75ED20CB8B4684776921587770EF9</stationID>
+ <name>News/Talk @ WJIM-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853737635078ABEF2E7118FC38843C91F770ECB78CA12B81843619A7C7FD726DA6CAA</stationID>
+ <name>Oldies @ WKNX-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>1.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853737BCD5E9797A0174269F1ED6CAC7C6D3A85148FDE803F45EB36DB2656A4A427CA</stationID>
+ <name>News/Talk @ WWJQ-AM</name>
+ <shortname>104</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373A84C73F6EB5C180A48D1DF02C979B53671D8F3603FA267DB0022E36F38207B8A</stationID>
+ <name>Sports @ WXYT-AM</name>
+ <shortname>105</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853739420F5ADE626F18A9A18CF7FCFF5DC9CACC698D33FAA35EED03EA1FCA435B237</stationID>
+ <name>News/Talk @ WOOD-AM</name>
+ <shortname>106</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853733DA4267CA8D1E74781BB38F13FB40C5D480061DA88138C811C9EE93098C8A017</stationID>
+ <name>News/Talk @ WBBL-AM</name>
+ <shortname>107</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373E47D2E2751E08B1453B0D1DF31E8C06A7F92105F41F57EF8E978093D64953B48</stationID>
+ <name>Religious @ WGDN-AM</name>
+ <shortname>108</shortname>
+ <icon></icon>
+ <frequency>1.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853732A4B9A8222E09B666B2D8A94F8E3B73CF4FD76112F254AA2315857E4B250C2AF</stationID>
+ <name>News/Talk @ WKMI-AM</name>
+ <shortname>109</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853731DBA7C6A34A0615BCD3C66EC829AA1231C6F7F3557678C1D5EC24CAF13BF87FE</stationID>
+ <name>AC @ WGHN-AM</name>
+ <shortname>110</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537330F6E8AADF22F659F774395880F863C36D17851C8636A541991F287BC0EFE0EC</stationID>
+ <name>Nostalgia @ WSCG-AM</name>
+ <shortname>111</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853738D7D4842589C407D7DEF37F27CCD290361ACA2EB83E4916C3A102AB09D305CFA</stationID>
+ <name>News/Talk @ WSJM-AM</name>
+ <shortname>112</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373D0EF28F60D5AD00167278F2D05A2B13BBEB42ED89576E49754D278899E819FFB</stationID>
+ <name>News/Talk @ WNWZ-AM</name>
+ <shortname>113</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853738EBFF4F3A56D2B85A10AEAB32CEB26E4F845FADD931826B9D86E466FD45AB125</stationID>
+ <name>Nostalgia @ WKLA-AM</name>
+ <shortname>114</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373E820FB859FC431A815521680E0BE41DBA04ACF87A6DD39F4598A410B00B4F4A3</stationID>
+ <name>Oldies @ WPON-AM</name>
+ <shortname>115</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853737CAB935836C442BD4C9CBD5404F8D22B9022AF31679C0CCA197E7F2176198240</stationID>
+ <name>News/Talk @ WKLZ-AM</name>
+ <shortname>116</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373DFC5F57E76E5AECF059BE925D1CB4F4BF8136E855499C569EC535A83B8D6CC24</stationID>
+ <name>Country @ WSDS-AM</name>
+ <shortname>117</shortname>
+ <icon></icon>
+ <frequency>1.48</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853738AA5F89D50F1B2B0806F11AFE9FDAA25ABC0B8438445F7A99D5EFBDE740685A0</stationID>
+ <name>Nostalgia @ WMPX-AM</name>
+ <shortname>118</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373C1C1E73BB18A5D8F0AB8E76FE7362206BCCD76B30EC5787B0B73486B08D5801C</stationID>
+ <name>Christian @ WLQV-AM</name>
+ <shortname>119</shortname>
+ <icon></icon>
+ <frequency>1.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373CC27DCA4B6B1EF2AC0AE2281ADB37239553DF4BCAE24706A68E3A57D9461CE04</stationID>
+ <name>Country @ WMLM-AM</name>
+ <shortname>120</shortname>
+ <icon></icon>
+ <frequency>1.52</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537372944E3EA80FEAE1A5EC8BCCED38F06B7BD50356C7FC0D5E4B38AEC2A503A680</stationID>
+ <name>Spanish @ WYGR-AM</name>
+ <shortname>121</shortname>
+ <icon></icon>
+ <frequency>1.53</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373ED448857BC8E9EF772D2EC6780EB4E5389A2599645A2C906C3AC374BDF5F8FA7</stationID>
+ <name>Urban AC @ WNWN-AM</name>
+ <shortname>122</shortname>
+ <icon></icon>
+ <frequency>1.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853739656F8F27668C21DE5DFFE36BB5167A035C88A21E89146191B98E968419861E0</stationID>
+ <name>Religious @ WWCK-AM</name>
+ <shortname>123</shortname>
+ <icon></icon>
+ <frequency>1.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385373D241979D552731EBFE046AFC8879A697424CE8AECEE85D114E49D618A7B1DF7D</stationID>
+ <name>News/Talk @ WQSN-AM</name>
+ <shortname>124</shortname>
+ <icon></icon>
+ <frequency>1.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853735917173358797B2B5AC0C373E24A630716E19E202C9C695DB1A7F738FA2E4A1E</stationID>
+ <name>Urban @ WJNZ-AM</name>
+ <shortname>125</shortname>
+ <icon></icon>
+ <frequency>1.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Michigan_fm.krp b/kradio3/presets/usa/Michigan_fm.krp
new file mode 100644
index 0000000..486dc3a
--- /dev/null
+++ b/kradio3/presets/usa/Michigan_fm.krp
@@ -0,0 +1,654 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Michigan</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385379073DFE93623FC7F910BF2797DC7E77407EF4657EDE831F55529D88A828C7834A</stationID>
+ <name>Christian @ WLGH-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853798B11F45C786BECC7E5CAAF93EA5F7127E6FF55B7FA72F527EC22E3FF98585341</stationID>
+ <name>Christian @ WAYK-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379CF36C0A09A6A348A351302EB62CD0D46C6844C7839116EA061DE9B394FD6A8DE</stationID>
+ <name>Alternative @ CIMX-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>88.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537926FC9328BDE5DFB35D38DE28389B02B2FE666564F38A61C926825AC92739B6CA</stationID>
+ <name>Christian @ WAYG-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379FF67AAC3D966E359CC719AF95F93BA0EC93F648464A0F33B45E630045B957373</stationID>
+ <name>Rock @ WCHW-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379C6A82D4A6E27FC59A6A561246814AC50AA86687B184FC9FE10BC5C2DD310DA41</stationID>
+ <name>Alternative @ WMHW-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379BC3F539F52FFACA2A1CADBC2EA4CEE05D4BBCBB67AAC5562DA8CA4BDD3121292</stationID>
+ <name>Alternative @ WWDX-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379A4EBF2CB9D2B4C921CB660C291ED6C0BE102B8407775AD326B5AE8E0BE871296</stationID>
+ <name>Active Rock @ WZUU-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853791CD108E2E47FA7A7119812C96B3E8DE19987D8D7CC2A40D7E962096A714F5E80</stationID>
+ <name>Oldies @ WBYC-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537935035B349228BA7B236ED0A368DEB2CD0657D31F104BCB5C3D46C6B9B816AA40</stationID>
+ <name>Urban AC @ WDZZ-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853795A6CA8E0BAF56E8C07866AC48E393ADC1A629C34920788CD6239D9953145C88C</stationID>
+ <name>CHR @ WDRQ-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379D87E70C894C8DCBC1FAD257CB0DCE36FD0C232961D41CAEA7BECA0BB699AAD4C</stationID>
+ <name>Active Rock @ WKQZ-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379B616665BA6DDC4C011A6AA1B85713F507CEF9BFED91716FE7D4BCB17F6CEBBC3</stationID>
+ <name>AC @ WKMJ-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379D2D16A9DEB5CE2A133BA9CB78095100D4FB2FE9654CC2F0150983355BC17283C</stationID>
+ <name>Country @ WBCT-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853790F855DE0A976A12D127214D4725DF81ABC02753D11B7A086FD825E7F62B0FF8D</stationID>
+ <name>AC @ CIDR-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379943AAAEB9055F3A107AC7B3AE4DDAA6428715D237FF7A8382A48ABCF6DDCC573</stationID>
+ <name>Classic Hits @ WVIC-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379E481ED8520E62231431F7F4188BC959A219519388BBF538641F7E9459B4F4019</stationID>
+ <name>Rock @ WKLQ-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379C643445B9D4663A556C05595C753835D44F1F156CA31AFDF0A6BB21D145ADE19</stationID>
+ <name>Classic Rock @ WCSX-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853791722CC7E17F21E3F74162F3A4DA3A27848AAE984D2F77D96B2DC0832E1231A13</stationID>
+ <name>AC @ WCNF-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537950E31B0FE242E102CC2227E785B22C9D1A1B0102FA49D5FD27A3507B8CD0B9D3</stationID>
+ <name>Country @ WFBE-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379DF041D3FA8434A157EEC3704CFD8A8DF40DA65ACED0AB21046FED08DDE934B44</stationID>
+ <name>CHR @ WCFX-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379CC45B726E14FB63AA69F7FF1ABF94FF33CCFA647B2D6ABE65427AAB13B1B84E2</stationID>
+ <name>CHR @ WKQI-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853796E0B2BC168E7DABA80512D7C6F59B066CD3C1E88B85C0716147AFBB6CCB01BF0</stationID>
+ <name>AC @ WLHT-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379F6081CE2960BF01090304822B04704822C31C7A1E69C8927F73D4DA5B3802FAE</stationID>
+ <name>Oldies @ WHNN-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379B678CABF3B242C6792B11BE2F4173C2908ECFF3898B3783569972CCF5C73EBF8</stationID>
+ <name>AC @ WLXT-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537972BE2738DB0CD83639CBC2CE47DFBE92A84E5357172E94865CAB2EB2E7156E7C</stationID>
+ <name>Classic Hits @ WFAT-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853790CF0F582CBF2FEF957269C88730FA68BDB8048199112F5F7028C0438ED1FAF9B</stationID>
+ <name>Christian @ WUFN-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853795738ECF1B3F2C1C54AC92ABEBD010DD580AC8E379E0DD5005BA072C9FA766CAC</stationID>
+ <name>Classic Rock @ WLAV-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537957BFEF16300BC1A8EE5DFBD6FAD5542724D8DB49341269207CBC00FABE3F1257</stationID>
+ <name>CHR @ WGLQ-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853790E6DE0A8BA3FAC9448846D77A117AE6C5590A58FA821C7B478A014A5A868187F</stationID>
+ <name>Classic Rock @ WEEG-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537992399E1977EF51E3D16979F58E579AA5E91C5E2B0057864E5A3CF1FD5EDF4C59</stationID>
+ <name>Rock @ WKLT-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379C72764462E944CDD19BA05384F5E9FC4FFC6FC95F26C3C9F6D0B40D722FF8F7E</stationID>
+ <name>Nostalgia @ WMRX-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379686AB7DE2A7F51C482FDAF851B6DA3ADB5182CEF7764366D9E24B20890DAB2A4</stationID>
+ <name>Classic Rock @ WIHC-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853796A43A3F8984F5358CE806D36721223B314F8C8CC823F32397232B5FBF11DBA61</stationID>
+ <name>Country @ WKCQ-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853793A9FB5EC1B830B13CE0F2E004E9E80733D7FEC84647792BB73DC683B7688A500</stationID>
+ <name>AC @ WCSY-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537923C45C1C5F921BB5EBF7EB366225F796C7502617F2F00F0F1FB10B15CF8C89B8</stationID>
+ <name>Country @ WNWN-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853794E9E514D9C46BA70167EDF702992534384026D23F1A435B5A464E5633A394564</stationID>
+ <name>Classical @ WFGR-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379279E43EA32D2DB1366572C68D2EAA955D5A012EB875F4E8C447296EE2E190DBA</stationID>
+ <name>Rock @ WKLZ-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853793A86D89BE121EB95E38940EFCAB3D079DDFCF41CB66D70B839F6686005C88BD0</stationID>
+ <name>AC @ WFMK-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379DA6F067ADF56A705A4AEDE5CFDF90E139845A721BB148AF22704179B5F305EB7</stationID>
+ <name>Christian @ WJQK-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379DBF33D591F7D148E5929D5100A05F50C0E0F924B4F8B2935493A937AC2BCE7D2</stationID>
+ <name>CHR @ WYSS-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379E2668C2C62490BD9E52E26E58F6316053B834E92195BBCF8297FBE5DE056ECBB</stationID>
+ <name>Oldies @ WHAK-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853792991B2C99EC904010B9FAA9C0EEB0AB43C026977043894F8D5CE6D5AD79D5D91</stationID>
+ <name>Country @ WSHN-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379EE47AA08EDAE6AC2EED9DC3E1663995715EFD6B451E8867947635503690D565A</stationID>
+ <name>AC @ WNIC-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379E8A27DDA980DAD7B394ABC73F4766D892F4DCF39E6932178146B1FD002BACFF2</stationID>
+ <name>AC @ WTCF-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853794360BBF62C009FA268C10108BBFA880CF3C5F70F05F2AD2927EF58857E30A08C</stationID>
+ <name>Country @ WITL-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537921843DDAE0B28DB0281EC9952D688502D6FE58EB4CFF18DA25DF0C5E21CC838E</stationID>
+ <name>Oldies @ WQXC-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379388B874ABC9075C88894BDCF23D5A064CDAEE17C5415361588B1825299F6EB43</stationID>
+ <name>CHR @ WQON-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379B0813270B9893425AB9A49CB923A6510559D8E0CE25964333F84B0105D97BB53</stationID>
+ <name>Classic Rock @ WSUE-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379930684CE99D8ECFC76A65F4DBF0FFAFAECAB26C2EE19A4AB4A8052594645C7FF</stationID>
+ <name>Country @ WJNR-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379A9F75C8583AC4567888E0CC9EF892B73B372FF62A5DDB35313D3EE2D7557E421</stationID>
+ <name>CHR @ WHZZ-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379A35C87CA1DAE0CF6D45B05D751501E0BD71E00FA254B09894577721656C539AF</stationID>
+ <name>NPR @ WDET-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853798A172CA9305F6768D26618F76E32491B8A68C10741C214DDF71B8731D177BC30</stationID>
+ <name>Country @ WHKB-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853799EA9DF146ED8C79942BB30249D4B5BDC60120F1D423302DA29C3997A3C8450BB</stationID>
+ <name>CHR @ WIOG-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379ED8F4ED9E47CC28BC5DF7EB379FA742E89AC63DE5B1A83C1CC49D7842D484D5A</stationID>
+ <name>CHR @ WMOM-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537953DE3A32E5A1FF420495D5F48D228C108625CAFEEE1FFD81547DFEFC057F2797</stationID>
+ <name>Religious @ WFUR-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853798E4356EBD4A958D275A573AB13F48C0EB9C741844133128E58CD7E37A4622089</stationID>
+ <name>Country @ WGDN-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853799632477518C954EF99B58665E118590091C8C35EC891F3FA010E2F692AADDDEA</stationID>
+ <name>Country @ WFXD-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379EDB7834DEB358195B9CB60448DEBF925C9FFDAC01E8ACB9FF87043886D45E5CD</stationID>
+ <name>Country @ WTCM-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537935C5173FA96CD3B60C8A522ABACDA5FC5FCFC28B6D23A5E8076D22336726E73A</stationID>
+ <name>Urban AC @ WUVS-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379B13B934101FF9391B2E2F72A17CE0199DC4566D71F78B9D60B36B0436B030FC7</stationID>
+ <name>Classic Rock @ WRSR-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853793254D7E126CC3ABB59B4D1CBC03E01C617DCB8AAB5319DB39A79EBEBFE3872BA</stationID>
+ <name>Oldies @ WOMC-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379EA8E60995D114D181D95F122AE0ED9EA0A2602F5B5637EC591715C898046AF63</stationID>
+ <name>CHR @ WSNX-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853790796189AA3249DFA5595346C1557F0EE7E0A09D436D67F8E2F478812AE65FC8B</stationID>
+ <name>Country @ WKJC-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853791B7FC153A657C62F2380508789EB63FCFC5AA30661AB71B4CB65C50075E7320F</stationID>
+ <name>Oldies @ WWKN-FM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379F49FAC73A8F7C85678FC231EC404974FEEC19FA8EBF4B510DD7C9F02ED8E68EC</stationID>
+ <name>AC @ WMGC-FM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853799FE1F047F2BFA0929AC2CEA303232060CD7B9D20DB2B01737601AD52813D775B</stationID>
+ <name>AC @ WKHM-FM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379E37CE22A2CCFC90AAD66E5992A8D386B5A5CDC8FF8457023D8ABE2D6EBB3ACAF</stationID>
+ <name>CHR @ WWCK-FM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379D853A43EE95E08CCE34C9A050F14ABC6ECD4A27FA2B26BEFDDEA42908D02047F</stationID>
+ <name>AC @ WOOD-FM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379D9B69517468E8DD505E2993E76A2B5E28C5F13390356B1B3C8790EA194CE6740</stationID>
+ <name>CHR @ WKHQ-FM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379FC06840C78130C5A42E9B6C1126A7BA45E960BED7CC0C76DAA54BA5F5DB2F044</stationID>
+ <name>Rock @ WJXQ-FM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537913F10814F684C018094F7A62FEAFA72B22E0BE8A2694E180A599778CEA5527BE</stationID>
+ <name>AC @ WGER-FM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853794910D3920D46B179FAF956B34BD4F5C81CF172EC2C931FE7F192A3F04CAE9657</stationID>
+ <name>AC @ WQLR-FM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537961BC7AB5FC6E8684D277A5BA96CD4DAEFC3CB4BBD04045922460B0479C75693D</stationID>
+ <name>CHR @ WKPK-FM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379D8BE66A4F5ADF4A44FC0A420CAD04C292F8F70F7A42BAC205CE6A52AE5AE2A3C</stationID>
+ <name>AC @ WUPM-FM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853791C23274855FAF67A84E3BE8AD6659150973706C73A92B9555AC2488A965657B7</stationID>
+ <name>AAA @ WIRX-FM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853797D20CEFAE3F738C46F6015D388A0EC2BEFB021166DB1D4621A2D8DF8A9EBFB27</stationID>
+ <name>Oldies @ WODJ-FM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379A9043C2AB91868D5A9B1FE880B68508FF1C1E5BD4D1F13FBC24C3329BE091267</stationID>
+ <name>Urban AC @ WGPR-FM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853793C0ADD54A867777EDC551E57D3832879E445BEC8BD57AE22C43D27B4A4164954</stationID>
+ <name>Classic Rock @ WRKR-FM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853793185BD5911A0361C40C1A05802BB7240892C3199802F6519915AE4A8CBF0B053</stationID>
+ <name>AC @ WCRZ-FM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Minnesota.krp b/kradio3/presets/usa/Minnesota.krp
new file mode 100644
index 0000000..79b113e
--- /dev/null
+++ b/kradio3/presets/usa/Minnesota.krp
@@ -0,0 +1,782 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Minnesota</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338537425FF1CCF2E7CC928A79C51FE2F3C9CC3A2FA8A2B15EE1C76EE06994EF7E15B9F</stationID>
+ <name>Alternative @ KVSC-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537499A51F60B9EB70DD375CDFABCCCB9374B34A0C6448F5F1C681E1FAF018DCD5D8</stationID>
+ <name>Christian @ WNCB-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>89.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537426626A3917A58AF9D27C9C603A66A35D3ECF51C78B8897177944B18A0BEA4F9D</stationID>
+ <name>Alternative @ KQAL-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>89.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374DD391ABE36F95F5E5CD7B26AD1A90E6556E139C839FE89EB085634B5F38F076A</stationID>
+ <name>Alternative @ KUMM-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374472159EE8395C2E65E9445AF0F2A0D73039A9CD0898D4695385E77686EE514B5</stationID>
+ <name>Christian @ KADU-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>90.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537454AD444715535A01D68069C87D4C657F75CF58FA8B01A2223A34A3AF123CC547</stationID>
+ <name>AAA @ KFAI-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>90.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537492F3E8945317A35302BB6C8B1F101A12AA721A09A39CFAF0AE294010342FF2CC</stationID>
+ <name>News/Talk @ KNOW-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374BCD3E9B5E88B0AC6BAFD9A23897575C1520ED0B841E13557C6740A14A2F75D39</stationID>
+ <name>AC @ KRUE-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374870AC1F4EECE8649495BA5EF087EDC31CA369281F51A5AEC6B8473233EFF9EBB</stationID>
+ <name>Classic Rock @ KXRA-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537473F3507F87F153D6232DA5E52ABB3CC40A24F72BFC51B4D8F7413A88DFCC1C80</stationID>
+ <name>Country @ KKWQ-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853748927796309021D5D989F61CFD8930BB5821E0B25340D331B6F1A6343C9521217</stationID>
+ <name>Christian @ KKJM-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537403D893040AF81A51A43C40B18B4F60EF2A530669AC5D902671246F08137E7013</stationID>
+ <name>Classic Rock @ KXLP-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374971365638E82CDA899D47E5A5E4AB0FA3C27CA28D2F20C736F961A784884012D</stationID>
+ <name>Classic Hits @ KITN-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853745E4BDC0D322F83AED00BF84EA054E041E7BBE14B9654B0C619E656E2869A902B</stationID>
+ <name>Classic Rock @ KKLN-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374B3F0215DA3869A2560CF1C964B802E2B9CC41E4DC2676E82B48392BB8C0EB88F</stationID>
+ <name>Country @ KKIN-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374DF3A4108FF130CF39DD40EC2428B4F6EAFF4C1CF32F59226904628147D711F67</stationID>
+ <name>AC @ KSTP-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374375A52D766A79CD302366E2C0EB8582462AF7120E0C977C2C6DA177F2ADAFA55</stationID>
+ <name>AC @ KSKK-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853744299395B1055FEB9BE563FF8C6BA02EF73A9838C1D36A9F8553736B9BB13F8C8</stationID>
+ <name>AC @ KMXK-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374B41BB8D4184D55BE77568E2EEF44929E729F49B61FB16F098D7EFAFB3B0CA8D0</stationID>
+ <name>AC @ KWOA-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374A164E80A3664E0501E1CD42569CD63EC8A3C3CB3603380E3B3D6BB59A0EF481C</stationID>
+ <name>AC @ KDAL-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374BB2D2603FBDF8DAA3A986DDC12ECAE1E3B0C5D5FB027480441D8214789EEC646</stationID>
+ <name>Christian @ WLKX-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853748B82084B3F2010668CD2A5816598602D60967E2066AC7AD2CFE0106A36D92513</stationID>
+ <name>Country @ KGPZ-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853749CF3916EF0B7B4FBE7F9E226B0BD59EE41344227FC4167721703C40B30561CAB</stationID>
+ <name>CHR @ KTTB-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853742F71DD13C22D7CA4001416409E3CE5D83CF38C954D2764CE8A9EF2063EC7844D</stationID>
+ <name>Country @ KWWK-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853741CBDBF2D9B219B6BBC48D4968D2BA3DAC72811528CB18B75B0FC33173845AD1D</stationID>
+ <name>Rhythmic CHR @ KKSR-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374817938C54AC6AF1A3CCDCE636D5054106B658AA69B9A23211A73D7C3770EE8C4</stationID>
+ <name>AAA @ KTCZ-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374228532CEF9951038AE85D91568256B06B1059FD3836C8392218D24BC364D7346</stationID>
+ <name>Country @ WWJO-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853744F0018E79BFAF545AF52C736A0020B00D457A5BE84BBC67C5A96A344150D5779</stationID>
+ <name>Country @ WBJI-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374375004FE8E485E19DAB98E5D94D500F9D7E0464A4971A38DB9A2FADAF2237993</stationID>
+ <name>Religious @ KTIS-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374A0A49EC39D893EA35959A7D76D85C0C5F16968BF83FCFFF916D5B0E5DE8AC9F0</stationID>
+ <name>Country @ KZPK-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853742670FAFA486B4D9EB4FD673E0346C942EDB6C3CA4E193077A1879175D365F582</stationID>
+ <name>Rock @ KEEZ-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374B20DF981C73364D8BF150F292C1C409832D408415C68BC6B130FD8DAE849A175</stationID>
+ <name>Urban @ KPRW-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374AF182F97DFA6B44A2E7B1FA4F2EC4687FD81C25709F32F85D10814E955F4C32C</stationID>
+ <name>CHR @ KKCK-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374F372218FBAC6FC34E9FF7B27EB9682208B8B3670D4AA6993221961FF5D8796E7</stationID>
+ <name>Soft AC @ KCML-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537464BED3E7DDFBB22469C3D469BC1E0A50892AC6547FE5E659484759825DD22F98</stationID>
+ <name>Country @ KOLV-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853747AE2C9B755E8FE28776B5169CDCDD70A3AF7A80C2A78768910A9ADA231678F9D</stationID>
+ <name>Classic Hits @ WLOL-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537478FC927A5BEEB87DAD819A90050DB2FC8262F462276322CDB5C86F0E01690F27</stationID>
+ <name>AC @ KHME-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374E6D5DC2831F21BA65AB92D8E906310A42202E782EED9D12BD1CD846B6E7C7EBC</stationID>
+ <name>CHR @ KDWB-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374019C2D3B828B09BE15947456E6E081E6DC2A2F9C99856C6C918450AA864CE5A6</stationID>
+ <name>Rock @ WHMH-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853746771787BE2B4FA371BA138C37518DDB4CADBFDC7C4BC0F25F85B61DAD981F360</stationID>
+ <name>Country @ KEEY-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853749C702551C2A1480F9C79D4AB47E3A9230FD076FA8E53B65F6B937A2CF11430FD</stationID>
+ <name>AC @ KQIC-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374C18EC0736B4A4CE9D585E66CBD0F1272BA3A26A4F88AB0868A71FC64391A9119</stationID>
+ <name>Christian @ KTIG-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374B6B3668649952DA07D4132EE40429932462C8C74D8C28592927B25C9868E2EFB</stationID>
+ <name>AC @ WLTE-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374392BE52A2FACB0E43EF4A06A99C9BDB393F605B6D7A834F07D946682E1548AC1</stationID>
+ <name>Alternative @ KUMD-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374459E99AA6EAF17C7E14E7775D06A2157A3A8CAE85C3AFBAADF3806B63DC30D4F</stationID>
+ <name>Country @ KYSM-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537413ABFC014E3214529F736F06D8970E6D2FF65DAD01AC474450646143BC84F254</stationID>
+ <name>Classic Rock @ KLZZ-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853744E284D4E952E535451A87EA0E3B0F81D7525ABB6BEF162E65BC0C1508623EC9C</stationID>
+ <name>Eighties @ WXPT-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853747CA2306647D4A52D7BC2E676A9B2F8589E8EACB4C509D76825106F85CD01D038</stationID>
+ <name>Religious @ KJLY-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374FFBEEE438AE8DBA8E4D86B7E24B225401C23E72330B800044B66685ACAC285F6</stationID>
+ <name>CHR @ KCLD-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853740F813F2FF84B5D07FB51B869ED6A05FD073215791AD01DCBD595951B4A4B3E14</stationID>
+ <name>AAA @ WGVX-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853744AFB1AA2AAD1F5E66D9BBEBAA6FF33CCF4C45254D0B9EBB14E041D2719D9EBC2</stationID>
+ <name>AC @ KYBA-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374C22E64039366334DB062952003079F90AC7D9720BBB6864EEABD77876C313AB8</stationID>
+ <name>CHR @ KRBI-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537410325E1BC51595BE8CCA7FFE2BF36B413F538F82C2F0A743ABF993A2AC97828E</stationID>
+ <name>AAA @ WGVZ-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853748A39F992AB9EA9DD4611F9BEB3CC37DA100CAA685DA253547BAAB73AF10BB97B</stationID>
+ <name>Rock @ KXXR-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537411026ED246F45086FE6A06E154C8908A15819CB2033CAE9C8609D497D02FD21F</stationID>
+ <name>Hot AC @ KFMC-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853746F5720D778582EA9D534F6F76D55D24631E77FB76F1BB25D36ACA3162FA20F0E</stationID>
+ <name>CHR @ KROC-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374113E45D5135EE65BA3121B06B95EAD27A1815E57F53878D2C053B934FBB2BA83</stationID>
+ <name>Talk @ WFMP-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374781705492816FFE46ACBC16070BC4D51A7A104984E1B73511787544CF2E4ED79</stationID>
+ <name>AC @ KNUJ-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374D5EE2D4F76264458FF8E51CC582EADFE95A6E0C0EF4EA821E5A7512B6026D065</stationID>
+ <name>Christian @ KBGY-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853748CE2EEE90932B0A4B6600C45A24E811D073EBFBAAC30BB4CB17B029B44694724</stationID>
+ <name>Oldies @ KLCX-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853744C17ADA0769CE1DC452379B72E2D2A4AA9956DC3B3C7B9BA149908C1C98544E8</stationID>
+ <name>Oldies @ KQQL-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853743DEFDABF08FEEA8419F97E2FFB559D8CEE8518A51E8825C91589E738A289FFD9</stationID>
+ <name>News/Talk @ WEBC-AM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374B5EBFA28C5974EDD423D1980394E1548BD08EF94CAD1A147D5C689A010523073</stationID>
+ <name>Childrens @ WBHR-AM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>0.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374485A1398E37782AC0CCDB99B85A2E4A4B261C10C366441D09680DFB54086CAE9</stationID>
+ <name>Sports @ KFXN-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>0.69</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537497586B63EDE9BB68535EAF5BBB5BA25DA40580202AFD1651A061F8BA17FA632F</stationID>
+ <name>News/Talk @ KWOA-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>0.73</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853744F296ADBE75C209E22FEAB9B3E55B7AD865E4B5F6B37618DDC8509BDD51AD4B1</stationID>
+ <name>Alternative @ KUOM-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>0.77</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374F78A4F2AD19DDF81AC04E70027DC0C7D99FDF38324964BE52867DF823DF0E05E</stationID>
+ <name>Country @ WVAL-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853740EE83C8F1A4AC302E1ED4E5728892F782A75758B217519A68A88BCA5A15D9963</stationID>
+ <name>News/Talk @ WCCO-AM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>0.83</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853749EB721EF354AFB2065604D9EC37A0FB0AC8D561ADA7059A7529054765BFE5012</stationID>
+ <name>News/Talk @ KDHL-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374BF089CA75A7E3D37C142584001D226FC87C185B2B8163BAC1CE9A2B517D98EAF</stationID>
+ <name>Sports/News @ KLTF-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>0.96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853746B78122B93F4B86C34C6D5AE4B778D8FC4776A7FC973CB93B71631542EB592A5</stationID>
+ <name>News/Talk @ KNFX-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374A08E7F2C18F2E6DF1C37016103947BD400DD1C9F746A03B63670F7278B646D79</stationID>
+ <name>Christian @ KKMS-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374D2FB969E1359BFD61273BD4CC6A8E5E24ABD85BE40839E2840F23A7D7DBF28B3</stationID>
+ <name>AC @ KYMN-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>1.08</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374AC422FEB888AEBF606F3EEA530BFF3A72BB0F1A99855C6EFFCAB302A166A9B88</stationID>
+ <name>Sports @ KFAN-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>1.13</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374797CA71E57ECFBF26FD07A65F00FB72EFCE7E45A9307F0972B84C8CE9DA4EBA4</stationID>
+ <name>Country @ KKOJ-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>1.19</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853749CDDF9F732AAD87E1A78835501197AFA7FAAC77E41C025447A3EF98559961459</stationID>
+ <name>Nostalgia @ WEZU-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>1.22</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853748AF413E6C78D46A9C426B414BDA8702285D2DCBF0790070715EABCCB62B21EFA</stationID>
+ <name>Oldies @ KWNO-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853749332A409DE9FE5279F9B87D1B679E6B6621FABAB3772F05E417A7EAA713F550F</stationID>
+ <name>Sports/News @ WJON-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374032A857C06C80D0AAB268BD328181381B8BA8A5664FF8FCB7E5DD6B8081EE688</stationID>
+ <name>Sports/News @ KWEB-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374D79B8B60AB83FB57CE48CCA40D5AABFEF11DBED102AFF52F69673ABCC5E18265</stationID>
+ <name>Talk @ WWTC-AM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374A2151ADC255EEBE31A8555D321460ADB60F6955B87075B923121304F1D6A7DC9</stationID>
+ <name>AC @ KRBI-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537415BE780D28FC152E816A232CE1F8D84913C36C1D122812C359F46B7A61C7712F</stationID>
+ <name>AC @ KWLM-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374D225806ABBBC819A9B2CA6FDD2827FFAB32AC887552615919498053381F87CE3</stationID>
+ <name>News/Talk @ KKBJ-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537434F20334011F8D51E463596936845934CBA8E0AB0AA55A12DF32AFB14FD9EEE9</stationID>
+ <name>Country @ KAGE-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853742F10585FD1654595E3D1D7EC543B61A7B73E011D5EC8105D855A53AEFA7F56F9</stationID>
+ <name>Nostalgia @ KLBB-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374D5EA4B53A9EE19940E8D2657C32D61CC56F58C13F58E50DFD4B26B5AC5F14E3D</stationID>
+ <name>News/Talk @ KTOE-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537423454EF8AC1EA886B85A6EF832FA319EBC48BBEEAAC8AF72E4F93F48EEE46D72</stationID>
+ <name>Children's @ KDIZ-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374975EA9D092ADFB0E5C6655327BF094190F8F9E02D4A99AB607E4A2384E187581</stationID>
+ <name>News/Talk @ KNSI-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374E47ACDF734B2604FACA8EF8DFFCD26B003F80BF0910D7BFDF0F3C8DE641BCAE3</stationID>
+ <name>Nostalgia @ KLBP-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374D816103638D0AF18C17F9082DB30085ECCEF9BF1504222E6A6896B328558D537</stationID>
+ <name>News/Talk @ KAUS-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>1.48</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537491CFE70B90181723C1CBD9629C57209397FDA577BE15629DEB5C8839F1775358</stationID>
+ <name>News/Talk @ KXRA-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853749ABBAED38E49521EFBF4D2D17CCCFDFF8BC70A5766E86AF62B02C98085AC4475</stationID>
+ <name>Talk @ KSTP-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>1.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374B3992FE38D25174773973BD0F5FFE6ACB9EB5BB6535EAE03DE2953888B87CAA6</stationID>
+ <name>Nostalgia @ KOLM-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>1.52</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853742A28B0DF2985E828F2AFFCA3D2EA51FD9664504C0704E3B0E19567EECB9978A1</stationID>
+ <name>Christian @ KYCR-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>1.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537445947864F8B4FB05794B269FBBED0B4BC6C2596FCE9581F458F4C01A0D40A4B6</stationID>
+ <name>Sports/News @ KCNN-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853747273D1E088AE1EB42EA58CB78EAAA1E1F001F3BF8CB43E345933A88D66A5A061</stationID>
+ <name>Nostalgia @ KWOM-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Minnesota_am.krp b/kradio3/presets/usa/Minnesota_am.krp
new file mode 100644
index 0000000..6a23f92
--- /dev/null
+++ b/kradio3/presets/usa/Minnesota_am.krp
@@ -0,0 +1,294 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Minnesota</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853743D0EB814E32B4BCB041F7F50795E2C9A9939D81F5BAD396DB2F44BE4B2B84EB7</stationID>
+ <name>News/Talk @ WEBC-AM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537494134561A7081990824367D8ECCF8CAC73F47285A4CB43611EC5BC8973E867BD</stationID>
+ <name>Childrens @ WBHR-AM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>0.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374E3659CC826A7975188F6341DC4A1F7CB2CA09FA99169F4C374746D0050936495</stationID>
+ <name>Sports @ KFXN-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>0.69</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374012DF9185CF683DCC72041EF75E583464BD1BB2190B23AF6903F4A39D8EE4DA3</stationID>
+ <name>News/Talk @ KWOA-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>0.73</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374B9B9ED5A8EFA09FE6D78D5A7EDDB0357296E93CF2D711A774A5234357104C5AE</stationID>
+ <name>Alternative @ KUOM-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>0.77</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853740E79F10D147C239E5803EC2E98664D6968641DD5D1A7C8FA8AAF4E0E98147108</stationID>
+ <name>Country @ WVAL-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374FC32B47A895CC9FC184FE054FAA01E0CA18F5C21A0A90027750EBD44A9988D6E</stationID>
+ <name>News/Talk @ WCCO-AM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>0.83</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374A611674B52597ECA6CF7B942B0B2620AC1908CC891564A4F9A6B001CBD8669AD</stationID>
+ <name>News/Talk @ KDHL-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537453782BC4832C5A7BF5CA5B91365E6BBB8CA3C24D645BBE8028C9E874E1CA94C0</stationID>
+ <name>Sports/News @ KLTF-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>0.96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853745641A87935D91A9F2E29BA788A8984480AE273333BCD4027635B7EAEC8CF81CF</stationID>
+ <name>News/Talk @ KNFX-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374EC8CA4687CC5FC0D902B9370928E726AFB82916B556247ACFB8D524F675C93D1</stationID>
+ <name>Christian @ KKMS-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374DDB7CFF0C670DE64480C396ED2ED1A6214460630BB46643AD52BFC7D966908F0</stationID>
+ <name>AC @ KYMN-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>1.08</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374AD3859DC30670EB9E0AB709CDC693A20ABF99AA30AA881D1F0F948CDB4C09A0F</stationID>
+ <name>Sports @ KFAN-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>1.13</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374DC116A1CB6E0030E1F733709DCB6BD827F69DB800C2A3189B04EA9C139DF95BA</stationID>
+ <name>Country @ KKOJ-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>1.19</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374D39896AC3AD335AECB09FE688C09EB6C5828F16B3A2245B708A56F0CAA601173</stationID>
+ <name>Nostalgia @ WEZU-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>1.22</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374198DB464D9A64A7F1001E1AAB064267A9606C3B8A6C6E2AA8D8A942F191DBFA6</stationID>
+ <name>Oldies @ KWNO-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374A826728DF05E25A928D6C237BCFF632604619F82F544E8F16C8D49A43BAC40BE</stationID>
+ <name>Sports/News @ WJON-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374FD3AD6BEE42F90626994E2B40832ABCE7B107A6D4963BB0DE871D2467ADB009B</stationID>
+ <name>Sports/News @ KWEB-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374DD09980C0499B99CE622CAB80CC5ED83E8921300D760FC9B3EDE751A88C28BDF</stationID>
+ <name>Talk @ WWTC-AM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853746147643553989F19711CD36F0213D96F04306E35295AC27477399B4398AC6649</stationID>
+ <name>AC @ KRBI-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853741C1D7782802ACF80B7C5A1EF556B2404F4EB74BE874CE12B2B24AB19F28104CA</stationID>
+ <name>AC @ KWLM-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537474D33CD3AC52C80AEEED9E401F3EFF4D0DC2928CD67712D80B04C555636981CA</stationID>
+ <name>News/Talk @ KKBJ-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374BC1C330D7A7DB1772C3691B287320C3ED2C74820C530E28904366811CE6DD124</stationID>
+ <name>Country @ KAGE-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853744A4DE324D11A042AF63423AB8F945C71CE29B8380DA93064BBBA3817FF5918A2</stationID>
+ <name>Nostalgia @ KLBB-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537410AEA6F2B38EEA52AD0726C917516F180DA7689362FB6EDA859854A7A7F9A0CB</stationID>
+ <name>News/Talk @ KTOE-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374D0E0642DF7D8B08509D1CE5E5261348F49574A40D787EFF3E4FC76B9C9DA5840</stationID>
+ <name>Children's @ KDIZ-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374E53E906342A3B3B65C407FF18AD19EDBD672BEA96676C56437E05451E6140F9F</stationID>
+ <name>News/Talk @ KNSI-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853741ADC74E85EF90C0B148D08216733FD308DFFB62F5E8ABDCF71927988050C209D</stationID>
+ <name>Nostalgia @ KLBP-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853747443C2517163618175897D626B592C4F4F3FEA4254BE9B9FD4DADBC77AC7454C</stationID>
+ <name>News/Talk @ KAUS-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>1.48</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853746F187666F0BF7752BDC2B23CD3A0E070775D9137F7A64D29A787319B43CB315B</stationID>
+ <name>News/Talk @ KXRA-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374C12BEA826863CA2D1FF7F707922DE7B2F156113447D27975708D096A7E80B7CE</stationID>
+ <name>Talk @ KSTP-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>1.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385374FA2F0559ECCCA06F5F52810E9A15754B34DF28EA20B26652EC771DC2C229104E</stationID>
+ <name>Nostalgia @ KOLM-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>1.52</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537473E36724DFF8A1820AEDFE0C4BA01BBD2B2491286916E0C340699456E0AAEF6C</stationID>
+ <name>Christian @ KYCR-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>1.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853741B444B6B7EA74C271EC20E6CF9DE9AF41FA037CF861A5981126B7B5AC515FD64</stationID>
+ <name>Sports/News @ KCNN-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537416BDF87FDC5955408CEF5670D6AF1103E058DAF5143DBFD3BC0D3CEB5EBC78D2</stationID>
+ <name>Nostalgia @ KWOM-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Minnesota_fm.krp b/kradio3/presets/usa/Minnesota_fm.krp
new file mode 100644
index 0000000..9c68e1e
--- /dev/null
+++ b/kradio3/presets/usa/Minnesota_fm.krp
@@ -0,0 +1,502 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Minnesota</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338537904F2F6869E92E9F9F78D3CE496592086398E4B4D8592B5EFEF3AB569CACD54AD</stationID>
+ <name>Alternative @ KVSC-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379B7F2DAEA502378B30424E30546995A3238F436358C1B3A95828F450E2D0721FA</stationID>
+ <name>Christian @ WNCB-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>89.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537911C2730E9AE23431C08CE9192FF0D0C9797DD710A270A477E6FA84B8FF5636B4</stationID>
+ <name>Alternative @ KQAL-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>89.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379651A8128837D28A067599F9CC23C95AEE0CE58A6850F3462AD6855A56052FB47</stationID>
+ <name>Alternative @ KUMM-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853795B0C25D089B58333C78443611C3D9EF2F355C49EA35E123B0B2EBF48D63A52ED</stationID>
+ <name>Christian @ KADU-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>90.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379F833EBD26D9AC37CEBC720E3DA52DB5FA27DD540906B06201F9EC43176A49721</stationID>
+ <name>AAA @ KFAI-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>90.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853798AA39A4EB0D966E8D716253FF6E28875ABD004DB069A4EEE6EAF18455C592DAF</stationID>
+ <name>News/Talk @ KNOW-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379F965240128ECAB6A03E40C768BBA97FCA6F4C95CA8B8F8C559D87166D3A207A7</stationID>
+ <name>AC @ KRUE-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853798891817ADC4EF45B6BCEF15BE28F53B8629952E40DFB678919DB2AEB8FCD0E3E</stationID>
+ <name>Classic Rock @ KXRA-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853790222B703B2133656EB524B5738BAAC5B9BAF1140BD4958421CCF25F9F2C57860</stationID>
+ <name>Country @ KKWQ-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537988C7CFC8DB0C4D28B36AB9EF653B310D2B703227B4CF38FC6233C100F0915612</stationID>
+ <name>Christian @ KKJM-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379A7482EF08D6E496D03E219790FDB407FA4DDE3316467C4F16C9BC0ADA8FD640B</stationID>
+ <name>Classic Rock @ KXLP-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853795BEDEBA4047B42242029A91C5E44E87FC567F9F8F6FF3E07E63234997C9EE78E</stationID>
+ <name>Classic Hits @ KITN-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379852B390C33D6E70CF44D20CE32202D36A01EBDEAD123FDC442183A839C568906</stationID>
+ <name>Classic Rock @ KKLN-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379C701CD769F4CB9049F3BF6C10FF3A263F6BB599CE23EB627680C55321FA5573C</stationID>
+ <name>Country @ KKIN-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379427B257B3A96591951531C88E85C8FC70DE151D31DE9225A93846A6F142D43F5</stationID>
+ <name>AC @ KSTP-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379E00C2E2056AD8692E6CA0FC1620E0F960D795E96F742FF39B8FFCDD41A220390</stationID>
+ <name>AC @ KSKK-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853799F8ABB6DA941A85CC80FE7FA8653A38C6260D1FD7CA62DA51CC4C253AEA0FD6D</stationID>
+ <name>AC @ KMXK-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853795DDFA55D3B0A577F8A11181965322FACF801B79973BFFDA082B166F4ACC5EA8D</stationID>
+ <name>AC @ KWOA-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853796CAD6EB1FA12064BE07DAB5705DCB48A797EA6F0FB9D3128BC093C20E1E4176F</stationID>
+ <name>AC @ KDAL-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379F6106A933E2B82AFB0240B13425CB07D7733CE22E4DB02E9702B571FC62C304E</stationID>
+ <name>Christian @ WLKX-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379996B9CF53A19C9CCE713FC42F8F3CAA522521DE4D8203AE2DA02668AE1F6DB8D</stationID>
+ <name>Country @ KGPZ-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537988FC903DD1B9B1A8C36451958EBD64E1FB1E8A48A86ECC342FE6359AE49FCE39</stationID>
+ <name>CHR @ KTTB-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379DED4E119EFBACAB382807B2D504D259493ACEF1882B6EC8CF84B4DCE48EDA30D</stationID>
+ <name>Country @ KWWK-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379A54C390A6C2361AE1463A58747FDA37796A45170DE109FB6A8277752CBAF6E4A</stationID>
+ <name>Rhythmic CHR @ KKSR-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853797E51C7DE7D535BA54CE7928AE8EA9C7382369F35B8B9EC46BA4456C4B8B0E578</stationID>
+ <name>AAA @ KTCZ-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379E6846CF8F684A8BFE899E1797DF6F32395A83D38A16769F0D6F835991A1BED48</stationID>
+ <name>Country @ WWJO-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379078C88DCB5547A152810145733136AEEF0C8A760F5DB81CF2674B59F78E0A683</stationID>
+ <name>Country @ WBJI-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379276875A4FB79FA9E72D85F95864FBFB7A8FB85D04AAE0D842BF4A6339AC6EA12</stationID>
+ <name>Religious @ KTIS-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853790BD2344D0CC34536F310A3F8294229C2C943C30686B8FDE9AFA6F9D92D005EEB</stationID>
+ <name>Country @ KZPK-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379C247F81DBBE0203CBE430E01EAA687221FBA4CB67A132579308B982F3B92EAA8</stationID>
+ <name>Rock @ KEEZ-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853794C95931E84FB6DBF651BBE5A36A1707D79D0639E2122BF34159EE4026CE97383</stationID>
+ <name>Urban @ KPRW-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379048E944551C98FB1AFF4E7F6F61385745DADF2B6423CC75DFF83D1AA3EC626BA</stationID>
+ <name>CHR @ KKCK-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853798F736E57241CD89F9BF9A00C7F163BA2B7E9FD7BF5834A4946BD9183BBB6E675</stationID>
+ <name>Soft AC @ KCML-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379028E018EDD28424C733004153FDCD110B6A269FC7DEE98589BD2C18F96E54109</stationID>
+ <name>Country @ KOLV-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379BC151F50B2E11E70CC08A47B16B468D2C95D017F9B3662965A5A769C50362E48</stationID>
+ <name>Classic Hits @ WLOL-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379D5922F583160D4AC1992558615299CF29F6AAA12EE89137DA3B39995952D5FE2</stationID>
+ <name>AC @ KHME-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379E5FA1BCBFDCF2920B0E462DD3191291905F59FC8151D5F53665C20974B3DF2E9</stationID>
+ <name>CHR @ KDWB-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379623C593F7C20DD00487340976F646C84FDAD910E02EEFE7BDD184ED8C38651FC</stationID>
+ <name>Rock @ WHMH-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537988C2FE525851B8D910E51A226F7172466D030C76DEA62440292656EDDDD95D27</stationID>
+ <name>Country @ KEEY-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379961F90CEC50C183A671B92A3F8E9CD6EF2C63D2E7F3E99A3724B12F728A04C6B</stationID>
+ <name>AC @ KQIC-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379268946B83B84885A47895518EEEBC376527FA0278093DE277B4B7F0580AE8E6F</stationID>
+ <name>Christian @ KTIG-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379DE268D46309D886A09667EE9D2D3CBF0D88324E7E74C491EDF355C8BC596B4B9</stationID>
+ <name>AC @ WLTE-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379897FDF0C95FB004A1ECB5F061AD96CF4183F0FAE7EE8B4DC3A76A5908ABEB614</stationID>
+ <name>Alternative @ KUMD-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379E56A17174B666114C93E3CF85825EF65D3A87337E6AE21C209578DD0490808AF</stationID>
+ <name>Country @ KYSM-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537957A6AB60C40178A1125AF0D00A2AA42B621A579C2B94313626A38A66A61A95D4</stationID>
+ <name>Classic Rock @ KLZZ-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853793FE4C8329BDBB2F742F08287D4A02BF3186FEBD2697B3AF3EC48CE6D5A64FB2A</stationID>
+ <name>Eighties @ WXPT-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853799BAB811B88A822DEAFB56D498F1C7B90AB5B97C118447FECB95B24253845C7CC</stationID>
+ <name>Religious @ KJLY-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379D22A153C383C11F7089D7ADDCF8E7C66E2006570EC012384641C793D37FA97B8</stationID>
+ <name>CHR @ KCLD-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379BC8B047C46590B2E72162ED88E217A0990069DFAC90A7C58B7942569637F3DE0</stationID>
+ <name>AAA @ WGVX-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379ED1EB8D09111A36372382BD6359886D413F233EA1424CBEE0E1D4E11C9B1CB4D</stationID>
+ <name>AC @ KYBA-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379BF9A2354DC9DF80DE60FE860686B98107C2E5BB327A4701D856AB33716E7C0B7</stationID>
+ <name>CHR @ KRBI-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379F07C11AED1DE9278518EF2D09B3F34A89C432CF43873D1CACE6DD54EFA7CF5D3</stationID>
+ <name>AAA @ WGVZ-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379C5B6BE7804840FC0236E6D72615D8B49641CF96BBDCC84D70FEAA478F67F04DF</stationID>
+ <name>Rock @ KXXR-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379360DA93383EA3FB76391FD0DB678B1640322D2BD353F503F7DE6D6736069BE2E</stationID>
+ <name>Hot AC @ KFMC-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379BD144CFAC2B7497F8591D44DA173D42E939384B6FEE1CFB9F04C67D4FE244568</stationID>
+ <name>CHR @ KROC-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379045EF96E4A967FAD133CF0768F43BE69BA90DCB62ECD0BBCAE9124FE4478D5A2</stationID>
+ <name>Talk @ WFMP-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379C4BC5AC0DAB6A096F5B2A10F68A1FFBCA25BEC3F187B582612A2664F56BA6A4F</stationID>
+ <name>AC @ KNUJ-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379B2F785F5701E11688329230C64429BF1FB48DD45B28E32740C92E248CAAE6A56</stationID>
+ <name>Christian @ KBGY-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853795F769D10A1D64AEFEA2EA1F41E4F4121D965DB8BE58806A5C6C532CD56DAB703</stationID>
+ <name>Oldies @ KLCX-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853797FF6098471F62E8989420CE90345DEEF658A4B1C967E7BA886B8AC42C7B1B406</stationID>
+ <name>Oldies @ KQQL-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Mississippi.krp b/kradio3/presets/usa/Mississippi.krp
new file mode 100644
index 0000000..ba70d62
--- /dev/null
+++ b/kradio3/presets/usa/Mississippi.krp
@@ -0,0 +1,598 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Mississippi</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385354B903D8DE2C4D39FD60B9C104EC2ECDA5A7281A0FADBF76FDFC512C11059F73AE</stationID>
+ <name>NPR @ WUSM-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535451EB0F9B58CEAA6670370E2B94F31E90038514368CEFCC473662F429E9E103B0</stationID>
+ <name>Alternative @ WMSV-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853542C112151AFE1EBA34787A1DA1E41E96C4AD1E19BC9F166E85E4A4763E774B5F0</stationID>
+ <name>Christian @ WAOY-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>91.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853542E8A9176C8F0BBFEAC3867540DDE0A1B0F0050F2984D400C88A13282FF0C205B</stationID>
+ <name>Urban @ WMSU-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853540F8D25C26A924CAEB8A5C6F5F2E8C568DA35BE25CC8D7FFA8972C21F97960066</stationID>
+ <name>Classic Rock @ WQYZ-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354D739D5BAE7964D840AD91AF171C85C3FD9F62D815C4EE3B4BD35A52BB0A996AC</stationID>
+ <name>AC @ WDXO-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354B4D1B0A72950F915F772C0D069D9BE75DF7E0E0682A8B63D930A6B4E18CCAA04</stationID>
+ <name>AC @ WSYE-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853543BA17B095EBED05F332F09A8E01B2E85A426333D0BF51D0E51E24FCD56123EFC</stationID>
+ <name>Christian @ WHJT-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535490D90D6EC5A05E9840A2D758DB161080529815F13338E9F3EC6D69046E43DA71</stationID>
+ <name>CHR @ WQLJ-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354B8F5E165FAE9A47F21F4C7375E9C2177089C7067D41A0C2F099C71AE16B00686</stationID>
+ <name>Hot AC @ WKZW-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354FE5585C01A9E137E5B32BE184BCF5777DEEA627C73C23D62805D3B38CC7885BB</stationID>
+ <name>Urban @ WJZD-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354E5FC739AB0A9556A8600D575953BE1719EA2178598D52B87393C21675B72F831</stationID>
+ <name>Classic Hits @ WTYX-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535481791AECB72443F4412E9CC0CA0EE0E8B9105F24344545BA62D4C0D8363C2B71</stationID>
+ <name>Country @ WKOR-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853544A48BF956DEBF5AFB0E5ABFFDAFAA593FEEFAD14BF722CB2BC994D84D3D8AAF2</stationID>
+ <name>Urban @ WOHT-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354C3C07AA4A31EE5ED92682147521F0FEB3F365593973A3B0124751B724E8C6E2F</stationID>
+ <name>Rhythmic CHR @ WDBT-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354B9DCBC83ACCEB4A364473D417E8CE64B74BC2F841A89B58AB50083F0D49635A7</stationID>
+ <name>Country @ WBBN-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354672ADBACDEC8A63AB01C07AAB1DBD03E3CFD5C44D116724D0D44BD9FDDB2696B</stationID>
+ <name>AC @ WLZA-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535483BD9B2B37432B4FD6F2B52B2AC6E1978DE0A43C72769BAD8D877EED4723A2CA</stationID>
+ <name>Country @ WUSJ-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354E545F376B6DFB09A546CD884D712DC4FCF00D5C75FFB3FA7C823D00F5DB908CD</stationID>
+ <name>Country @ WKDJ-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853547F7C69FC39F2E07AF3BCC2D6992996A31DAA9D7C961102307914589DA0F65965</stationID>
+ <name>Oldies @ WUJM-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354E1C2AFBFAB1C55CCFC8A9E2CB9CC45F40EC1012ACE17A2BD0AA0374445ED9E82</stationID>
+ <name>Country @ WOKK-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354E1C4E8AC212DBEF26261B0D28D94EFB935EABCA32018136423AE068AAC2DBEC9</stationID>
+ <name>Country @ WWMS-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354FD0E3399DE1E6950647C6A4F630DEB1456D79F48ABBDC9EE45E524A453AEFB38</stationID>
+ <name>Urban @ WRJH-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853541F5370C5659F0CD0A3BAA6565426EED023A22B599661B74681A4BE69ECFAF7E4</stationID>
+ <name>Oldies @ WMSO-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853541DC04DAFDF3864D3E82B480559ED4954B0F580ADFE609AE9F4FE79E199799155</stationID>
+ <name>Country @ WYKK-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535482C6773EFD4F073C4EE202DD84D6A2BE99F02E4A69E8FE72116A65D01C156217</stationID>
+ <name>AC @ WYMX-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535412E8E2BE02FC4A07D0E8D75B0EAF500C2698144C062DC4D5059BD700F2BB974A</stationID>
+ <name>Urban @ WJMI-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853544EC6DEBD8DBFED6F0FCC63CD15955E669D400B0C1F6F9B7DC1A4799AA7CD2D23</stationID>
+ <name>Classic Rock @ WSMS-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853540699C78F157E077937F639E366E373E0D2262E3DE7F8309F8CF8AD5F7896CE10</stationID>
+ <name>CHR @ WNSL-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354745E8600D4D83F68B9A85FFD9D9EB048F2DFB5538306E2E1B0CC117D690A2048</stationID>
+ <name>Country @ WDMS-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535455037AF76D28B1CEF93E98CB3EECA934504D34D7C3EA038D621B46C3AB48492D</stationID>
+ <name>AC @ WLIN-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354C2B36C0980DC9742624ED8160866B53067B821BF8D41CEC9D4758A2D447CF427</stationID>
+ <name>Country @ WBBV-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535409B7AA0AA4C710C5AFDFDD09DD0FB768859CFDEFA49D4A5D9E8FFAD943A17713</stationID>
+ <name>CHR @ WYOY-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853540F4C05E98FE3CCD8B52D89036FE849104D5C32F864651D6423B728C338B44024</stationID>
+ <name>AC @ WZYQ-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354A0DACD69D0F16AFF78654E066E2370433AC10509B22563ED577877F55EC00D3A</stationID>
+ <name>Country @ WRQO-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354FD29F7D3C935E4F9690A011F88E91EA3FC2B49BD568D6F8D4D92A5C80C6B2DAB</stationID>
+ <name>Country @ WKZU-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853549F9086990487576DCD65FE6FBF4768E490D1F93CB61E1B98862B9CC45430E4FF</stationID>
+ <name>Country @ WMSI-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354EBFE6B1FBDE2A7266C49BD650CA58952BBCDB607A72E65481C7081FB984D1867</stationID>
+ <name>Classic Rock @ WQFX-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354A572945C9F2115696880C0DB14DF7783C86C567472E0A1FAA7AABBCB4C98D9FD</stationID>
+ <name>AC @ WZKR-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354DC389009467962A6F4046DD66CBD978B534F08DDDEDB2C22401EB08CC7F05A1C</stationID>
+ <name>AC @ KZYQ-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853541418D93EDD3BBE454F718F71258565C7AEB29457B37949715A70DE129C9C0AA8</stationID>
+ <name>Country @ WUSW-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853543415C21757E55D93E164273A9145868836AB630869E0F84C66377AA23DC3A7F6</stationID>
+ <name>Urban @ WCLD-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853547AB787FD040B11DBC25C0F8889060153CAA3FDE01110D2D29755FCC231A667F3</stationID>
+ <name>Classic Rock @ WXXR-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853544607EAA1DD7EC85E8832CB27E80EE3E0298E2625B3891A15EE190545AFBD1EB4</stationID>
+ <name>Urban @ WGNL-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853543212163EB781A81713666DBFFF5C46BD47148603DF3C785D39A57BBD4C5568F2</stationID>
+ <name>Classic Rock @ WXRR-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354BE277CC4ED9F354449CEAED1CB0CF4A5F511248BB11C6FEAD87A538993F27B22</stationID>
+ <name>Rhythmic Oldies @ WQJQ-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354B495D840745EF3033B3A32DADC24E072D5D2404A4AAD47801A69C63118697B14</stationID>
+ <name>CHR @ WWKZ-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354BEC68565D166E7332BD65CC1E2E252981DCD63EDC34BAE1CA4FCE0DC765881D8</stationID>
+ <name>Country @ WABO-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853548CADB295DB64DE3BAB371327C0FAA0E094C7C970E6DBD115D4FDC8DB40929DAF</stationID>
+ <name>Urban @ WJXM-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354ACFCF741715B6A87F8476CDEF89C9CA5BE6BCB5A51BDA10EBACFDDC52619818D</stationID>
+ <name>Blues @ WYJS-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354EE471E3CD0F34B7D915382D5A6100E85B81CAC901C85EC7ACFD396D63429D8B4</stationID>
+ <name>Urban @ WMXU-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853549087242CE697494DA825D2B23EBAFD1E909CE79E1B99199C33FD99F7B6693922</stationID>
+ <name>Urban AC @ WZLD-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535479BC9FD1B5A86DC91BF41178A403139AB22460FC53A3A41EBA2509D3CF097E0C</stationID>
+ <name>Urban @ WAID-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853540335975B5DD3B336C3E6A45C2FF8137481CBD0EF048F68F23D9F692A246AE1A5</stationID>
+ <name>Classic Rock @ WSTZ-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535417DAB70383BD5086CC1508CAB946A43634BB89AABF651E415FE5E06902ED6930</stationID>
+ <name>CHR @ WXYK-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354E34816EB8FED6F6EC8E672E389FACB73F38680F3BE2A4D0A1974DBD58499FC48</stationID>
+ <name>Urban AC @ WKXI-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354B0AF06CAA8CBD2E5B6BDAE798CE4B8AA0A75046294B25A84A6A25BF5ED870C51</stationID>
+ <name>Religious @ WFCA-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535454E738A5850DACB90F2E717E7B7BB8E45C3DF096440970F333AC6D70BA1B482A</stationID>
+ <name>News/Talk @ WVMI-AM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>0.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354D77F95DE7FAAC30AF949E6456B0D28C7A9A0E7EDE361A3AD2A81C94FE11658D3</stationID>
+ <name>Sports @ WJDX-AM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>0.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853544ADBF8E7F03BEC84C31313909D8F070A1163ED0077ABA1067F4043A9E45FF96F</stationID>
+ <name>Religious @ WALT-AM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853540B795255696B9D2D98BEF6934C2B5AD43A8734644AE8436293A6A4837805F198</stationID>
+ <name>Sports/Talk @ WSLI-AM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354BB684867B52AD6590997501D413C1FD85AF8C4B0FEC68CD1B06869DBDB58423A</stationID>
+ <name>Religious @ WRKN-AM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354909AC19D4B10B047395EFD68375A990E452728A500133F762AEB9FB97EC8084F</stationID>
+ <name>Sports/News @ WMOX-AM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>1.01</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354D269F2B2FFA850E59E248E45A979D3CEFDCAFD53033534D4A4998F7216D45690</stationID>
+ <name>News/Talk @ WJNT-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>1.18</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535416E925EF78D21F9685593D8FEDEC567C4CA65BF197E2AEA4E6E641F385DB2D01</stationID>
+ <name>Country @ WGVM-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853543091E0E67567ACF4A6841EE83CDDA67D10525AA07C3C1B4898DA7C0E754BCFFE</stationID>
+ <name>Blues @ WNBN-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535408AA0C9DD71BAA17FE399A9C76E214AE41A53311942098483DF5F10750BE9919</stationID>
+ <name>Country @ WPRN-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354965E14C30AE3A3EF1249D6BE4B22A30EF18D839B5B34F08194E95709B0DC1C7A</stationID>
+ <name>Religious @ WMER-AM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354778282B3B39CDB0CD9025DF4B6F7B0EDA9D7867C4CF65E94538C80ECE0439EC4</stationID>
+ <name>Sports/News @ WDSK-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354E60FFEF633EA6DF376E0655D61C0106625D22C6D843EEA42489528AF527C1825</stationID>
+ <name>News/Talk @ WQBC-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853544EA6BC4B9EE3DBF966822A91A7DCA8D508242FC3AB4A386169424DB8636C403A</stationID>
+ <name>Sports/News @ WROX-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354D27D0B16EB47E263605BCEEBEB6F932AE35355033038FA3C01984796DCCD6DEC</stationID>
+ <name>Religious @ WKXG-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>1.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354CC0296FAE6D4D9F153BD89E01C6871E0504B15FD564A4F4E067FDE11CDF46480</stationID>
+ <name>Sports/News @ WAMY-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Mississippi_am.krp b/kradio3/presets/usa/Mississippi_am.krp
new file mode 100644
index 0000000..a4145d3
--- /dev/null
+++ b/kradio3/presets/usa/Mississippi_am.krp
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Mississippi</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385375BB1BEDCDE79A2EFABFA63DBD9B1010A0721DCBB57A745C7620491247A4A33670</stationID>
+ <name>News/Talk @ WVMI-AM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>0.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375BE90E14372534EE8767A91586B00947C691915FBBA45414A3452F88909A5039B</stationID>
+ <name>Sports @ WJDX-AM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>0.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853755A74BC6A6593DF6979965F81B927B58C4D05CEDD5D7488E45B3588B21C9B0AE5</stationID>
+ <name>Religious @ WALT-AM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375DB29AE8B4624C104FE44BB2638E185DAB5575BB2A51DC01B349D1896635A57AE</stationID>
+ <name>Sports/Talk @ WSLI-AM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375978E5291A941E741D40EAA4D6E861784FABF09DB5E8394CD4A65B06DCE8BBE86</stationID>
+ <name>Religious @ WRKN-AM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853755B7E484F6FA7069CCA1B61CA3FB3C3DB280DDDE2034FFAC5113AA0C37F32B946</stationID>
+ <name>Sports/News @ WMOX-AM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>1.01</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375FC678D442804E393E607B4FCD623781A888A5C2A439448AA4351D1EC92DC4ECD</stationID>
+ <name>News/Talk @ WJNT-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>1.18</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375B8EF3F77F15B3D2CF4E2FE2FCAF3548D5897FD9CE980F514B10B282C8A68F0C5</stationID>
+ <name>Country @ WGVM-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375E4D473510105A9B3E0585B88391F8D79455FE345BFB10929F7F33EB9A117562C</stationID>
+ <name>Blues @ WNBN-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537596D2ACFF871784C608DA463D27B41329F58CDE56DE7382828F00A0D0BA86E1C4</stationID>
+ <name>Country @ WPRN-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375C49D2ED9AE62440DCC15917CC8F723B418D2147FE67712B7AE8D115C660A15CA</stationID>
+ <name>Religious @ WMER-AM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375F11382AABB81660B244A98330E910086BA9486D153F437D535F2A3591FC09A2C</stationID>
+ <name>Sports/News @ WDSK-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375B8400309B87185F344138A3D93D60A4303280B8F0073EEDBD9DF5BC9A7DD8DEA</stationID>
+ <name>News/Talk @ WQBC-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375D6F5879A341AC5F3677D6BB521E9D3CCF7F7B0C8E1AEE3B2E4D1D3A0AB038E79</stationID>
+ <name>Sports/News @ WROX-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375F8E259B84586E8A74BCBBCFA23E2BDDE8EDE6725D2E75E635AE3B7467B64AAFF</stationID>
+ <name>Religious @ WKXG-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>1.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375664EAEA59DBBBB7965AD1FEC9533343CCA91DD5710372D56B84AE13338F83074</stationID>
+ <name>Sports/News @ WAMY-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Mississippi_fm.krp b/kradio3/presets/usa/Mississippi_fm.krp
new file mode 100644
index 0000000..bc1110c
--- /dev/null
+++ b/kradio3/presets/usa/Mississippi_fm.krp
@@ -0,0 +1,470 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Mississippi</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385354C039212A5845A38A817AD33A1E9BD3863903EF342CE6FA4A0FA6390628586F22</stationID>
+ <name>NPR @ WUSM-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354B42C710EA11C6DB2054762D221C3C71BD9A0E5037ACCB07B076AB39ACA6BB8D4</stationID>
+ <name>Alternative @ WMSV-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354A9C52A370D8669B31CB0F99C13BD062745879A9FBA001BBF646BE63EAB7F7017</stationID>
+ <name>Christian @ WAOY-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>91.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853543A9D69CE0BF804AA7B33719C2506FA0CD4C90C8C5D76609C91451ECA0678E5F8</stationID>
+ <name>Urban @ WMSU-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354489025CBEC2BB5D173110DCA9BBCCAFB06338B8C22538D4524B5D1612C96C6B0</stationID>
+ <name>Classic Rock @ WQYZ-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354E9B4C8B5291DA13C1972C734CCE65E24BC3D59A921DF1DD4810B9A1FA84C2427</stationID>
+ <name>AC @ WDXO-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853542FAB902BE267F7DCA5BBED3D9EE81D7FB53BEAFBC89BA021B9CBD3883014A50E</stationID>
+ <name>AC @ WSYE-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535479B4B0FEA437AD26EE63B4A221C378E375A91C3A982A521914B1A05DE57731B3</stationID>
+ <name>Christian @ WHJT-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853541F7A237C695B96A4E29B596CC629E99CE4B5F047737ACC2AED9DBA255DCC5CDC</stationID>
+ <name>CHR @ WQLJ-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535412A92FE71EA9CF8E3DE163CE9E06AC65DCC271DC079A9AEB4C4023F980FE663A</stationID>
+ <name>Hot AC @ WKZW-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853541D6651030FA89AABACF55C1AA07012E372DD977CAAE57ED5AA99A1340542C05C</stationID>
+ <name>Urban @ WJZD-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535471FA6FBE3AD8477FCBD08E9800562B3714A8195EC3DAE635A957FAFCD3553D81</stationID>
+ <name>Classic Hits @ WTYX-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354CD2B0E0127F7DBE82E4984A3C6EC99F044F1ADC460C08532006213A0C630B886</stationID>
+ <name>Country @ WKOR-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354D02E13DA509C492EEB858BCC923F156952F87C083752FE5F1A8B4897FAAAF8BB</stationID>
+ <name>Urban @ WOHT-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354D421AB83CA658F515932A5C3876A0F7331F8D5A70273AA7DC56C6420BD5D7987</stationID>
+ <name>Rhythmic CHR @ WDBT-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354D090409E4E80AF0BF2ED99D766FFBA1B176549640982C721F35D1488C423E6F2</stationID>
+ <name>Country @ WBBN-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354D6E95C80B9F410CEE0BE815BF8A54B80A498A35B2C87DC525898C76A43D1388B</stationID>
+ <name>AC @ WLZA-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354EDEFA7DD0FF5F0526D4FBC7DDCCFA5E1466F964CD3A91DE11A26F30A3E336DE9</stationID>
+ <name>Country @ WUSJ-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354BFF14EA8D4D6E3113C516D84648B54DA7B3BAB0BE03E7DFA412B7585EBD762CA</stationID>
+ <name>Country @ WKDJ-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354FACEE3D443D658AEEDEACC67B0BD7A763FE0463BC9CB5EF5DC5FE84B1E233BF8</stationID>
+ <name>Oldies @ WUJM-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354DEB5061E1A3E521F28661159F46EECEAF0D86428231CB0020F3A7ADF1D384368</stationID>
+ <name>Country @ WOKK-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354CD4CA8C677259C155AA3DE6CEFD80C79117D7761F293DE81D030BEB6AAE7A6BB</stationID>
+ <name>Country @ WWMS-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354311C71F6117EBFD2DEE0B86E5CB9E0E30204D54E33C81811D0022FF11C5982A8</stationID>
+ <name>Urban @ WRJH-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354A14FCFE3F7A5BA2D81AA1712D6C9B95E2D9197C5D929FF7E13208081472B2602</stationID>
+ <name>Oldies @ WMSO-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354E42902AD1CC64F7244354636A369C6B3A5CDBFF114AF1A66F67228D962AD082E</stationID>
+ <name>Country @ WYKK-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535458FAF45AD2B4151DA6A0A7B685A632C8C423338912DE3EE1B46E1ECCB71E27BC</stationID>
+ <name>AC @ WYMX-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354918025A46DDC515022DD70FF01CDCE08D9B44A14F34C433C9FC0DF45CA2046C5</stationID>
+ <name>Urban @ WJMI-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354F6FCC4AB6F6ECF666728D580CD14990639F9726AD5E867108219224121A62C93</stationID>
+ <name>Classic Rock @ WSMS-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354464AE14FDA0A204BB57BA39EA50BD20F450E920D2C2E40CEB074F65F859F2C15</stationID>
+ <name>CHR @ WNSL-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853546C393B598B56571BCF4150F6525CAE0090DC8430AF5D2F38E6B989E5BF40D71D</stationID>
+ <name>Country @ WDMS-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853540A4A0AD9EE90629001957D288F1A1AA04ECEFB50978DEB3DBF953FD0D31D37AB</stationID>
+ <name>AC @ WLIN-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853547B81A2F8CF41446D2721C1357EA2CAE405F9B6DC3732977F0A566578A106E7C0</stationID>
+ <name>Country @ WBBV-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354833F12681EA072A739288F39265EDCBB99FE98DD3B675370DB5F1BB75A707290</stationID>
+ <name>CHR @ WYOY-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535448D37DA617686541A5CF6400D09F75683188A131C4B87EAB59C652A2E32BFD71</stationID>
+ <name>AC @ WZYQ-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354E1D07D00711B5DE8215575DC1FCCE11DD055F3AAE4F76D68535E6DF34B9886B4</stationID>
+ <name>Country @ WRQO-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354FFFF3E85C5BB90570799B18217155DEC39043E775C02F807655D893EB9F9575A</stationID>
+ <name>Country @ WKZU-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354646BF62E2951B0327A29CEFF044D8D19858EB4F87CB2A0D8547B67E118696933</stationID>
+ <name>Country @ WMSI-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853541DE4FBBDCDC7D5D0C85EA908AE4DEBBB9E35A9ABB14B3D83B08F80EAFDE0B44F</stationID>
+ <name>Classic Rock @ WQFX-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354DFE88A1DE04FE3BEB8336E23F8390A4D5CC9AC4EADCD0974AD216C14F5D1AA1C</stationID>
+ <name>AC @ WZKR-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535467751EF8721340DC561D51FC47DF067116FEB683E18FE9BD9897CB2DC0E6A2AE</stationID>
+ <name>AC @ KZYQ-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354D942DCD6527FD293DFC3960B6E9D9EEA8873F5C6C0B5ADD5D128757D7978B210</stationID>
+ <name>Country @ WUSW-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354C3F2B741544D1650EC915EC0F27AEC04B79954C39B16943E37815361F6A93A11</stationID>
+ <name>Urban @ WCLD-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853541247B840763BE6061353DBC0FBF9BF220B0AA630C65EC9F992E8E642E5338049</stationID>
+ <name>Classic Rock @ WXXR-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853541E6D8D8B20D88B0F3BE0BE8940C27686F11F217BF8EBA594E7D92C3003D19DE7</stationID>
+ <name>Urban @ WGNL-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354C93E9BC213D3E0E27FCA56904C28EC20AA01CC685EA32F3A4159B9398C1E4BFF</stationID>
+ <name>Classic Rock @ WXRR-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354F4A3325C48EE173FD815860EFC2A8C8E58E3BA1A16EB98817FD665E205DF4C0E</stationID>
+ <name>Rhythmic Oldies @ WQJQ-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354B8C3BD38CBC0AAC4CC172E5E3C2A6C385B2457D81287C6810074D01DD22AB4F6</stationID>
+ <name>CHR @ WWKZ-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354F13140EF226AEC979D569485BD8144B1A31199AD39EE687EBFB831505AE3E88F</stationID>
+ <name>Country @ WABO-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354C796D3FA3A5AB1A9DD458FE4DA26052938064A4C40956DC195D70FB6D1DEEE25</stationID>
+ <name>Urban @ WJXM-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535453E0C26C538ABC78E6ACD4B6876E7EE8BB693B7483D052306E938BE110F349C1</stationID>
+ <name>Blues @ WYJS-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535493221061160775F0C08B5A28713B2361B70183FC3D99B645C36059496384FB62</stationID>
+ <name>Urban @ WMXU-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354C83A36413BD3648A41187B768C9893B692F08C4F5968B02259CB5D13DC641A26</stationID>
+ <name>Urban AC @ WZLD-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853547D956DB2CB39051261DDCB3FE186BB79AEA9A73FB725D654F08195187D58C96F</stationID>
+ <name>Urban @ WAID-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354D25A3E8A1A2854F783BB792FA41A95B836714180F202464D8F8A9D7BFAD1D175</stationID>
+ <name>Classic Rock @ WSTZ-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354E295680F6440DF3190BDF9067FD108E775905F4C4971CAE759D851B971513B69</stationID>
+ <name>CHR @ WXYK-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354D9F0EC68B453CB2321A8BCD44754931FCA31B1726405B9185264C14BAD943056</stationID>
+ <name>Urban AC @ WKXI-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853540C358984E8F89381AAEC694E70B3E408713CD0E92304A6A86AD0E26BF0D1660A</stationID>
+ <name>Religious @ WFCA-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Missouri.krp b/kradio3/presets/usa/Missouri.krp
new file mode 100644
index 0000000..5e5d838
--- /dev/null
+++ b/kradio3/presets/usa/Missouri.krp
@@ -0,0 +1,1086 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Missouri</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338537949564F6857CA5A8C4C7440DAF88F84B5829B7A93431D7B46461B69CF1270B94D</stationID>
+ <name>Eclectic @ KDHX-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853792FB4D3CDB9FF57D5D7747B918C0859B8A33BA3C8DE940FE10A74679A36C3AF71</stationID>
+ <name>Christian @ KWND-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853794322997845034A644AB0DE50E45E71315EE056FF89743BF1E62E2DF3096B131D</stationID>
+ <name>Classical @ KUMR-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379894E81B7763D8096EE43454C9922A47FE7405D32994FA35DB71E4FF992EA43A1</stationID>
+ <name>Urban @ KJLU-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>88.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537940C03016969D07A3D4734E399958A1FC62DB20D96606C81491A2BCAFA41681F1</stationID>
+ <name>AAA @ KMNR-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379FEFF35CDAACE2C97489D0858024BB88F3F41BD99433F64ECF372994FD48590CC</stationID>
+ <name>Christian @ KMCV-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379012085FBE895DF6B434530298460D45AB8AC75418D663D6E28DA58DC48904F2F</stationID>
+ <name>Nostalgia @ KWAO-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>90.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853790856AA1D8C8706D9E2BFBBF2F428577D3A155AA96615E0532FBD8DC68121D025</stationID>
+ <name>Religious @ KCRL-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>90.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379D9F0AA69E05F5DE6DFCE9BABFA03DF713945716FDDCA8A3FAA984D8682142A02</stationID>
+ <name>NPR @ KXCV-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>90.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537979ADD7E0B4C9366BDEC944D5FEDAF4FE2B65A6A1CF453EA628FCC52C10AD5A46</stationID>
+ <name>Religious @ KSIV-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853799AA7EC7CBCDA13A87B26A3A30454C011FB7AE6F6AD43C2CCDD10F0ADF9C4C246</stationID>
+ <name>Christian @ KMFC-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853796108D1DB8E7318355DFB4EE5FF011B877B21E6A99A7EBCA42E3A59B00ACB018F</stationID>
+ <name>Country @ WIL-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853798AA59762223A8DA0BEDDF5AB086AC1F7974245C6F04A9283EDCFBEA764B450A6</stationID>
+ <name>Christian @ KAYX-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853799C6B5D5F32A8B1E1013C61B6E8C660F968B82CC9467AE8F5910265A1227A05DE</stationID>
+ <name>Hot AC @ KLOZ-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537915E03CDECA800A1A0973BFDEA63FE9139C32CDA6646BC123EB635CAD31E19235</stationID>
+ <name>AC @ KOMG-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853791A61AEAA94D824F04D478BF11E09C4D1FCB21D0785CAC1FE4B2CD381F25A97B8</stationID>
+ <name>Country @ KBDZ-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537906DCE7AD3ECDDB004CB0953E9CC07678C2034805CF510D3014589874BAA95E1D</stationID>
+ <name>Alternative @ KNSX-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853798B297AED8B8A81274785699E5E3FA20842BAC2841DEDA8DC1D13F2CF6E5AFDD4</stationID>
+ <name>Classic Rock @ KRMS-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853796463F82CC89F2CF44F7B078DF7AC141E82578C84F18D94404F0ABBD80F0E33F6</stationID>
+ <name>Country @ KSD-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853795A1636C550F82E38255DDE9FDA786918B8414C87BECB9F161E2186279F575337</stationID>
+ <name>CHR @ KSPQ-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379F6A43D5BC6579FBA8E97061F77A0F48CD28B944BF47D6F968576AFD3D8F160F1</stationID>
+ <name>Country @ KFKF-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853799637678ECC5A022CBB04EA631C5723BAB1895424DBC9BF9DD96D50C27CC29134</stationID>
+ <name>Country @ KATI-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379CEAC5C086496A3C48DFD8BD1CE103922EA1B93016252A8F273D95A77D65EDB66</stationID>
+ <name>Country @ KKLR-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537919773620044020F52124D34894132B92F0FA7F5E5B79137A803F6BA83E112AA2</stationID>
+ <name>Rock @ KSHE-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379663ADFE9FD32A38A9FCD25D97831890D50B82A9C084379E3EF1605F785BC2628</stationID>
+ <name>Oldies @ KCMO-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379646979CC807C8E984E101E596B38759FA5FDAEFDA9F6B9237AA3CD3EEA466B60</stationID>
+ <name>Country @ KAMS-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379E3143753D174E142D288DBF899F1107845EC78CF8E1E39FF18C5D5B808DBE972</stationID>
+ <name>Country @ KDKD-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853795ECEBC64D9E6F8EC4CF78D70B3A204F40AF3C2BD60CBB7B0264896FBE8E13F41</stationID>
+ <name>Urban @ WFUN-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379DD3B190598BE28A55776B3179F58FDB33520C124AEBC3B4C681BC5083143535C</stationID>
+ <name>CHR @ KCHZ-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379473383C7E49F3A835C95E00DF7C1C2B99C9523E8F2E4902B3E2C0F0C8FAC70B6</stationID>
+ <name>Country @ KYLS-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379D6CE17513863C82A5C07A9C1EAC8D1F6110FF7014BC50C3FAFC524CFFA4751E4</stationID>
+ <name>AAA @ KLRQ-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853799680291BF7175366F1A036BC4E828DB73405664451241E28D98105C6489880CD</stationID>
+ <name>Classic Hits @ KIHT-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853790185196A6B0E9E1C12E5B0E0C19D63F00E029FC1C4B4329407D16C38D675F1E1</stationID>
+ <name>Rhythmic CHR @ KSPW-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537933F9E3D6C95785AB414C9291F0ECB736CC2F67820DE507721D767882ABF5FDDE</stationID>
+ <name>AC @ KAHR-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379561C8798C61F02BB81FC9F95108C4AB6FCB7C7DE0EDFA47E71D9E3B37496FF53</stationID>
+ <name>Country @ KKOW-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379A9FF159384B66340C22079631A561BB72BD447A1918D7D0A4F617C7B74E8906B</stationID>
+ <name>News/Talk @ KFTK-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537915A242805F6CF29409EB6ABFC9C99F2B6AC95EB95E8FF77D183CC04F6250C36E</stationID>
+ <name>Classic Rock @ KXUS-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379F790153CC9483EC36161FF10226CA58FADCA75D59E8CCED743B868C8387C529D</stationID>
+ <name>AC @ KNMO-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537930B75EA34E5B960AD2F50AB1B667B8BC63D0B26DD8A51D72441449C2D88B5169</stationID>
+ <name>Country @ KBXB-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379C9560E94741DD59DE98EB603ECF569066470F9FB163B14C703CBAE0D1DF7C3C8</stationID>
+ <name>Hot AC @ KYKY-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853797E622CF9218A3F2007BDF76D3E688F7A9E1A83E90B29FB4DD06C73B1C66B1105</stationID>
+ <name>Alternative @ KFMZ-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379C52AEE61994CD2F991BB9CFA6B32E18374E51DBA62FB97BAC2368D1FA7B2F69A</stationID>
+ <name>AMERICANA @ KTJJ-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537916DD81881F665289FB3713A15CE413C96BBF1DC049FDB81DD38BDDB94881E9E0</stationID>
+ <name>Sports @ KWTO-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537978A1716BF64E4A0821CCCB7D6EF7591093FBC8F5D8019AC0983FE1E7F28FDC2A</stationID>
+ <name>Oldies @ KFLW-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853798FA4197D148D06195F53EBB4A995763C9478E934E75F34E7EF41192FF50FAAB0</stationID>
+ <name>Classical @ KFUO-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853794BB6A31687A83F962DADCF680A63626D48A91FC52F37E6485085FE209483A99C</stationID>
+ <name>Country @ KUNQ-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379EEB97985A94AC152C9C6D21F6EABF31325D60998E85C7B064CD4AA871AE29BE4</stationID>
+ <name>Christian @ KADI-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853795DC5A90DAF2D2544D38874F82C5679EC6F2172619C36734F0A683BCBA555998B</stationID>
+ <name>Classic Rock @ KYYS-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379F94B082C75D035767A4E6A8C2AECFE0835C6AFEE402F20300146E69B8762BFD3</stationID>
+ <name>Country @ KFAV-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853792A56D77C4BD555CA5E41CB80F8C2FF391AB955F16B7BED69232FC55C0D1455B4</stationID>
+ <name>Classic Hits @ KJMO-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853793D28316F4C651E07DE814DBD9928D04F12940B152C988C77E99E18402D254248</stationID>
+ <name>Urban @ KATZ-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853798FBD2EF2F9271634417E7904457E3CEFB474136C7902558CF91CE4271571813D</stationID>
+ <name>Country @ KGMY-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379F2B5A9075DA79590F539EEE38FA6F462782D7948905566D86C0416D9A7CAD38E</stationID>
+ <name>Country @ KMZU-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379ED2324E277052D4B9728AEFCB9AA6467D8B8D0A47DD40D8A0FE17D129E7F52E4</stationID>
+ <name>AC @ WVRV-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853798A1A85B605693B3C307522FAFB89F1AF234D7E8A37ADF4A0A31B2F3A83CF66DA</stationID>
+ <name>AC @ KTXR-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379B4D0360CBF5EB1A0678118ED35B183D973D9AEE7664BBBE55EF63D90D76B8965</stationID>
+ <name>AC @ KPLA-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537933803C1D94D4DD45F2F2BDFFA386CFB6143EE747E89CD8FE93D91E53164761FF</stationID>
+ <name>Country @ KLPW-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853798511BC19D43B37982E7902C9E01DBA7D36DAFE3212FD55F59F0816752E88139D</stationID>
+ <name>AC @ KSRC-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853798F51A7C855E934B522C58A3F4E9C5602F0293C6407A6B27AF26F90590CE2C149</stationID>
+ <name>AAA @ KBXR-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379A1D499904B773D8F2589F0510B923AD5D52BB1F9622D16DF8925C4778E29E929</stationID>
+ <name>Country @ KKDY-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379A7FC54D99F80A9311ED1922F65E0F8C3C3E20FCF756C9DF6C565EEC520D1C995</stationID>
+ <name>Country @ KHOZ-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853797D5D77CDD75395478C1701C8FAAFF3ED2A67D94366E193F0AB662CA95C9E2400</stationID>
+ <name>Oldies @ KLOU-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379B2E2429D7A824D829E5270A5C5C81AFE45CFD5AE7A4926157A3FD01D0105A7D9</stationID>
+ <name>Hot AC @ KMCR-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537976BC55A9BD794653DD5E7FCCD8B958CC6EF919FD517E7C17E0A1432F7332A8C9</stationID>
+ <name>Rock @ WMLL-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537981CE469AC82FBBBDC7B2C262B64A7AA738D8BC731DA891102306D531EB4E6EAB</stationID>
+ <name>AC @ KDBB-FM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537965A5ECEACC33253EF540C9D84C0FC7234D3528FA2837EE8D2FB73ABB3DE0E796</stationID>
+ <name>Hot AC @ KSLQ-FM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379634965C854FA17F2E4DA662F0F8C7BD7EA48CF0C317B33250740181C85BD182A</stationID>
+ <name>Classic Hits @ KKLH-FM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379287ECDF58F97430FE8E23099CB83FE1CDF9BC82E5F2FB37D6F289B88BF93C161</stationID>
+ <name>Urban @ KMJM-FM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379B30D118764EB35CB9D88BCE6322973796242DC31CD983B1158E805CD7340398D</stationID>
+ <name>Oldies @ KOSP-FM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379933B92F3FBA2BF224D19325196773A6C5EF7D3E07E3AFA1DE8785EBA66CE2205</stationID>
+ <name>AC @ KZNN-FM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379E4BA072FA1A2DF4AA58A507E1D5CE5B9C49DC1F9A6AD2A8DC5E01DB74BAA0A42</stationID>
+ <name>Hot AC @ KKJO-FM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853791FB2C3FA8DDA4A040F778D56E722AA48906E2AB9AF5EE2BDD25512367391C713</stationID>
+ <name>Country @ KXKX-FM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853799640B5FFBBCA2C6F1768B88DA4E7FC644708EC558B816BAC4C1C97CFEA1E53DA</stationID>
+ <name>AC @ KGBX-FM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853794731D6B730E52045DC1AEF3A99D8B3D78497FC4BD284C6C34BB83F639341E84D</stationID>
+ <name>CHR @ KOQL-FM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379B42BACBC7C0BFFCF7018E501A07040115E5FF2DF944CC0539F45E07AF0C0256A</stationID>
+ <name>Country @ KRZK-FM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379D22AAD8A035CE2072FA813CABBA6EA9CEA95375C80FFDC3EB9A9D6BA5C3A3136</stationID>
+ <name>Smooth Jazz @ WSSM-FM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379C2EF788580F8FA5F48856401B37A2E5F29893F2084F3C0730065B1DB0D544C19</stationID>
+ <name>CHR @ KHTO-FM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379621C0316B631ABA1F237B7EBC52EA78FA656E18FC5D900826EB97A695669BE4D</stationID>
+ <name>CHR @ KTXY-FM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379A29529D3B1082310971B0EDB3255DC23717D0D4D7CB96324E13CE10AC7AF19C0</stationID>
+ <name>CHR @ KMOQ-FM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379E1F817B2CADA1B3DD69A10907ACF75A1C2E91BDE6E539F3CF79EFC37F894C2DE</stationID>
+ <name>Country @ KRLK-FM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853791E085ADF0F67B776D557F813368AAF698FCDB6800A458BD62F505F2267D86507</stationID>
+ <name>Religious @ KLTE-FM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853798094EC2E8FEB48A2E868F80B161B3A4702DACBFB3434BA9EE31FC1FA3D549BD4</stationID>
+ <name>Talk @ KTRS-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>0.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853793B84278072CF1D105EFB208E9453AAF66CFC66FC4BD8E9E9025DF65050B81BE5</stationID>
+ <name>Sports/News @ KWTO-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537958284CE29FADAD28FA55A122B19D7B31D36C5467E0E4B892A2495028F21B13C1</stationID>
+ <name>Sports @ KFNS-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853791E0919F81B864332A20770BA342351822518312B49D0BAC30FACE3326D8CC547</stationID>
+ <name>Country @ WDAF-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853790E773B052E63FF19957FA52CDDCDFA1C1C6D93DFE10A0ABA27B0BC76D48CD95B</stationID>
+ <name>Country @ KFEQ-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>0.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853796EC5E4ED305A96AB4E027FB4AB919C731C855B6366D53596E226723E978615AC</stationID>
+ <name>News/Talk @ KCMO-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>0.71</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853792AF9490028430DE2B3C730BB1B25EE358BC6148F37CAEAA96490106C7067680B</stationID>
+ <name>Country @ KWRE-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>0.73</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537940761E7A2D39066DA0B10A88F63F5E7C39620693C41A57C1AD27164376DE3CCF</stationID>
+ <name>Religious @ KCCV-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>0.76</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537911B79C140ECCC839E7F07E6F65308FA3F14EDF0511003F3BEB7910A33F5F1633</stationID>
+ <name>Nostalgia @ WEW-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>0.77</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379B5BC263D1581B23EA7099F390D9EF3DB3F680CD699D8C061CAE403E03EAFE5B1</stationID>
+ <name>News/Talk @ KREI-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853798DF1FF87DBF5CCED74FB0816129820AE339C2311A3C478310FC966D248608DE2</stationID>
+ <name>Sports @ WHB-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>0.81</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853795C423FAC154BC45C5472C0DE45B76B5871430553309FD208E5F72821BDE944F1</stationID>
+ <name>Country @ KKOW-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>0.86</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379E29F21CA55822E0ED00707A891ACB42B12A434D6C7959AFA79C3079F961CB62B</stationID>
+ <name>Christian @ WCBW-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>0.88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379F3453409B8ACBA8573E2FCBE055416A3DCB690023D46AA297B765D88AD2D01A9</stationID>
+ <name>Religious @ KGGN-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>0.89</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379B665D135533C6869AA8672801E9E0905A9E6ECBAF002359AB46D770D5B9C915A</stationID>
+ <name>Country @ KFAL-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>0.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379CCFFE55D8ADB6D774BCF3CBB68FF7537ABCE70024BD992B9C1D84CBBF289AA0C</stationID>
+ <name>News/Talk @ WGNU-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537966E27773B659ACEC665210A6DBDDD449A045F9FF10522CAEC8A19111335570BE</stationID>
+ <name>News/Talk @ KWOC-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853795802282516041F45E3DDCFEDA2A0917674BBBE5ECA08FE7BE98C28FC9367C913</stationID>
+ <name>News/Talk @ KSWM-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>0.94</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537967890BB5D606D817902307317B6ECC2F2164FDECC46730BC0B52EA620AD35EB2</stationID>
+ <name>News/Talk @ KZIM-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>0.96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379E170256E5E15BD0255C43386EF24CC91E94F64FD5DA82FE46CB787A833198DFA</stationID>
+ <name>News/Talk @ KMBZ-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537964D9DA4CC652E5D1F0614E218BE6FCA7B2E36E029F5DC83172FA3C0545B57CF2</stationID>
+ <name>Country @ KRMO-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379113A44EE96464AAFB98DB9D5B46E3B1B3E5B59882D42E717561F25A7F8F6D032</stationID>
+ <name>Christian @ KCWJ-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>1.03</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537974FC3BA031C7E5A49DCF8D2875F9CA7E27609A2E42338C7DB88AF9C86F5E6890</stationID>
+ <name>Sports/News @ KSIS-AM</name>
+ <shortname>104</shortname>
+ <icon></icon>
+ <frequency>1.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379E203468859739162BD56290FF76593B02A0AD35A754AB203AE6172D217695B7F</stationID>
+ <name>Various @ KTOZ-AM</name>
+ <shortname>105</shortname>
+ <icon></icon>
+ <frequency>1.06</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853794F9D59375F8295F9D7709946B847A4AD4D39A94F83F8D3BC42D48B4252F520B9</stationID>
+ <name>Religious @ KEXS-AM</name>
+ <shortname>106</shortname>
+ <icon></icon>
+ <frequency>1.09</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379652EEE22F16224B165F6AEBB50315D72560626E540AB005ADF4FB3DD74FDA116</stationID>
+ <name>Religious @ KKLL-AM</name>
+ <shortname>107</shortname>
+ <icon></icon>
+ <frequency>1.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537992A12FACCAD0D20964C23B2F0A0737458E21F73FDCA710A745C9D3408FB6FBD0</stationID>
+ <name>News/Talk @ KMOX-AM</name>
+ <shortname>108</shortname>
+ <icon></icon>
+ <frequency>1.12</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853794CCF68D2BA10A4EEAF3103FC07449CA6C65FAE7BAF06CC3EFABC513A2D95F5CC</stationID>
+ <name>News/Talk @ KCXL-AM</name>
+ <shortname>109</shortname>
+ <icon></icon>
+ <frequency>1.14</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385379A0010A9B0F9CB0732E5AD7AB37EA0F23CECD703DE7969C45E3C8CF8BA9F48673</stationID>
+ <name>News/Talk @ KRMS-AM</name>
+ <shortname>110</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380F1A6FC716D97D9CB21A9197ADEE0501AB3F1DF6BE5A9F4F291BAE18CE02ED31C</stationID>
+ <name>News/Talk @ KPHN-AM</name>
+ <shortname>111</shortname>
+ <icon></icon>
+ <frequency>1.19</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380C5A5D5FE1687205F5A5714239ADA3EA198EC69FD0BD2FDD5B430D636B0003970</stationID>
+ <name>News/Talk @ KLPW-AM</name>
+ <shortname>112</shortname>
+ <icon></icon>
+ <frequency>1.22</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380A79506327E09213117DEE9D7577723A64CDCF310A0EC236BD0F86C61565DF5CE</stationID>
+ <name>Country @ KFMO-AM</name>
+ <shortname>113</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380F13459300D8CCC195C8655EC4D1C89A104C3AC068F267AC970E453C6B16545B2</stationID>
+ <name>Spanish @ KKHK-AM</name>
+ <shortname>114</shortname>
+ <icon></icon>
+ <frequency>1.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380825CBBFB9FF1AC277C0E82BCF9211CAB28030D48004E81A125BDD86CB78EF091</stationID>
+ <name>Childrens @ WSDZ-AM</name>
+ <shortname>115</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380AD93FEA7B071EAC0763B625323077F22E8E09C2BB64E01E6475B00C84F867BA2</stationID>
+ <name>Country @ KYRO-AM</name>
+ <shortname>116</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853806536FD8A7043A5D92CBAF1C5BA57FB54AB12C5987CC8D3C0F614557F19182A3D</stationID>
+ <name>News/Talk @ KALM-AM</name>
+ <shortname>117</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538076B86A791E5A11A27253001127AAEF5CBDB421A148C6E03719470000FD0D03D7</stationID>
+ <name>Religious @ KSIV-AM</name>
+ <shortname>118</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538002EEFDD04CC78A5F957D0F1EE1AD5C7ED65264713DA53B41799F9FB23F5E03D2</stationID>
+ <name>Country @ KSMO-AM</name>
+ <shortname>119</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853801C9AC82C45D1FAE7A5C5A83755852E3C9D56BC47B640C34E22751B17B44C0F89</stationID>
+ <name>Sports @ KSLG-AM</name>
+ <shortname>120</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853808121142C8CA45E8EFE3EE8C9EFC44346E4682FE7912E40B6B0365C2567290A1D</stationID>
+ <name>Sports @ KGMY-AM</name>
+ <shortname>121</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853809B8196BDEE07085248B0223B707763FF3B4CC5442964CAA8BB5856F8A88D50EE</stationID>
+ <name>Country @ KREL-AM</name>
+ <shortname>122</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538071CC16178084E150A90318CCD30627AE873CB17735FA98760EE53036DC0DAFCB</stationID>
+ <name>Nostalgia @ WRTH-AM</name>
+ <shortname>123</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380DBA74DA33498943163BEBD197033CE2236E5BF492B0B52506732916F0B6ECD0A</stationID>
+ <name>News/Talk @ KQYX-AM</name>
+ <shortname>124</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853803865DC30FB2A75442BEB5E6A556809A46B0221F0957DC14E0DBDCBFB21DFAFBF</stationID>
+ <name>Hot AC @ KZBK-AM</name>
+ <shortname>125</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380F9690F65725721B5F6DAD8BCD0F1014A190DC50C05116F67B9A362585DFFADD8</stationID>
+ <name>Country @ KDRO-AM</name>
+ <shortname>126</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538055D8DE56D4B2473A6D976B534C0AF71050D7DABE0FD3DC10CAF0EFA35AACC62B</stationID>
+ <name>Talk @ KCTE-AM</name>
+ <shortname>127</shortname>
+ <icon></icon>
+ <frequency>1.51</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380F56728BDFD17E719AF194223B17BFDDD90E5B0866DF894D32F39B6513BD1BEC7</stationID>
+ <name>Oldies @ KSFT-AM</name>
+ <shortname>128</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538062254E89AD8850D2EDC4ABC3C892E79E0CFB2C97A8A20AE0F542167E8D1FC8B8</stationID>
+ <name>News/Talk @ WMBH-AM</name>
+ <shortname>129</shortname>
+ <icon></icon>
+ <frequency>1.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380DB8D2062031628645844CA749E2A03B1293E214437383EF5B3441B6ED592F0D6</stationID>
+ <name>News/Talk @ WBGZ-AM</name>
+ <shortname>130</shortname>
+ <icon></icon>
+ <frequency>1.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853802A12601A0A3A7418957CFEA5573320D36DAF2FCB453A9478E2EA8B4A63DF59E3</stationID>
+ <name>Country @ KESM-AM</name>
+ <shortname>131</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380EDBDEFA58E0AA1C4D7E836AEBE78291A2B10FCAE7B12B3EC0C11E4F37CE32F3A</stationID>
+ <name>Religious @ KPRT-AM</name>
+ <shortname>132</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380BA849F65F97E07F1F0BE4A9C45AFD84D1F581F8F619A9D972222C8A06937863C</stationID>
+ <name>AC @ KTTN-AM</name>
+ <shortname>133</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853803DE56EC47FADF3289453513BA1E2D2C3A524A42CE9C2CF74446F0F41917641B2</stationID>
+ <name>Classical @ KXTR-AM</name>
+ <shortname>134</shortname>
+ <icon></icon>
+ <frequency>1.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Missouri_am.krp b/kradio3/presets/usa/Missouri_am.krp
new file mode 100644
index 0000000..3ad53f3
--- /dev/null
+++ b/kradio3/presets/usa/Missouri_am.krp
@@ -0,0 +1,438 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Missouri</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338537507F51A89912696FE0AD8DD1D3B63314A9EAD97FC2A8E6B0DE5B29E37186A6016</stationID>
+ <name>Talk @ KTRS-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>0.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853752EF9D91A3621EFA3CFD280AD6DE7AA1EC0A09840F1B1A998E6290E9D8A81997F</stationID>
+ <name>Sports/News @ KWTO-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853753DCAEDAC4DF14723B3373E86FDFB466810DBF6CC6BBA80078C9D3DA7FCE58668</stationID>
+ <name>Sports @ KFNS-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537535AA0E8A1B65AC9B1BBE2D75D31DD01CBC6192D45C29D657F65DC6591F1FDE86</stationID>
+ <name>Country @ WDAF-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375A5EF908FC6FF82D827E2EF18382287675FF70360B625EBEADDF82500500DFC5E</stationID>
+ <name>Country @ KFEQ-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>0.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375704FC3AE46033AB5516099DA8E9AE82E13571D8D7426640C10DE460767AE4043</stationID>
+ <name>News/Talk @ KCMO-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>0.71</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375BCED85EB0661CC47A061ACA4083483CE7570B909F662743D16C43695698C26FC</stationID>
+ <name>Country @ KWRE-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>0.73</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375BF0C8D180EB0E64F54E913C2B2A830A6C990E1EB1BD65CD6C0C0508937BF71EF</stationID>
+ <name>Religious @ KCCV-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>0.76</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375DE86605C881C3BF30FBC483A564BD06AB9CE1A72B163CCA6B5CF5C96B2373F0E</stationID>
+ <name>Nostalgia @ WEW-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>0.77</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853759A7992F80F1ACE1EA3AA51531F98FAC543ACD0CE3E64955A8FBC77D7A0F58567</stationID>
+ <name>News/Talk @ KREI-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375AA8734240025A267575896A249BB33A50EBA02CD310C3FD7B9258E58852EC755</stationID>
+ <name>Sports @ WHB-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>0.81</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375ED0F123E44F7116CA2FCDA1CC36FE050D5031C251F7121CBE45C5E9B5544CBA3</stationID>
+ <name>Country @ KKOW-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>0.86</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375CFF9926C0C6FCDF1C712C469F3556E299864F6B71D24A7FECF43564734F12983</stationID>
+ <name>Christian @ WCBW-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>0.88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375A31E2F01C251071CCB68407387970D8235BD45003E4740E0C388F75BD2050E3F</stationID>
+ <name>Religious @ KGGN-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>0.89</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853751367CA50B8F7D4909A29F04759123A5C3B9EEE240737F0C8DE41EF638CDEB354</stationID>
+ <name>Country @ KFAL-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>0.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375D393F2A0093D7DA3E5E1643D0F7F1A97379740C85EBC2DAB3245CA60ADB081A3</stationID>
+ <name>News/Talk @ WGNU-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537589657A06C1615A3A5F6B72CF1335A778AEF4338C7EA065F8E5D524C98B8536DF</stationID>
+ <name>News/Talk @ KWOC-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375C8F10D2C226FF6356A11206770E257597DFFF907E329C61B3070644E5094C968</stationID>
+ <name>News/Talk @ KSWM-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>0.94</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375085B14E88A8D3B28C3CEF7E59541FFA56B5646B251A0A213E7BC898F58C3239D</stationID>
+ <name>News/Talk @ KZIM-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>0.96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537522FE8E5B41BC337E41FDE94F5BCD3625C66C0A494506B88C7EE8A10DDD5564E7</stationID>
+ <name>News/Talk @ KMBZ-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375231F16B43292E674AB975E72DD40AA3CFFF785106FE91FC98056BBA93B4FF9B1</stationID>
+ <name>Country @ KRMO-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853754CC1EAA8446E017A37AEB99198BEC14801BD00163F4D51A2571F0B81EC193D92</stationID>
+ <name>Christian @ KCWJ-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>1.03</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537533294534CB9C6A0813E6CBC517A3F3C439B0CB98D5DD0BA786C8DCE388970947</stationID>
+ <name>Sports/News @ KSIS-AM</name>
+ <shortname>104</shortname>
+ <icon></icon>
+ <frequency>1.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537521046AA99B2AF4DFAB06D0D3EA750C19F4B01D90B04AFAD8084EDD648E0CD74D</stationID>
+ <name>Various @ KTOZ-AM</name>
+ <shortname>105</shortname>
+ <icon></icon>
+ <frequency>1.06</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375F23B0F3293C996F249311010FF3E536075731B09CAFF93E37F997B8F5AADC229</stationID>
+ <name>Religious @ KEXS-AM</name>
+ <shortname>106</shortname>
+ <icon></icon>
+ <frequency>1.09</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537579E907426A8F84D15934052EB4746D71D6B86F0D2EAFBBABC34528E935494D3D</stationID>
+ <name>Religious @ KKLL-AM</name>
+ <shortname>107</shortname>
+ <icon></icon>
+ <frequency>1.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537532B22CAA33CBFDE7D33E487BAB0DE9DB18026AD73A1FD6F24C56E1B1706D87F6</stationID>
+ <name>News/Talk @ KMOX-AM</name>
+ <shortname>108</shortname>
+ <icon></icon>
+ <frequency>1.12</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375AE3B7E218981BD53B900BD4231B7654646E31F6264140A1EC25E5D889DC2BD1B</stationID>
+ <name>News/Talk @ KCXL-AM</name>
+ <shortname>109</shortname>
+ <icon></icon>
+ <frequency>1.14</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375EE8F03DD7B591539EF8E96464730A4A63FD6DEF9492A0A64A3FF1038CAA690E1</stationID>
+ <name>News/Talk @ KRMS-AM</name>
+ <shortname>110</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375D72BA746BF2D62D61807CFA24D377C3A32CDAE03C02A10489F0F56CFB37EE031</stationID>
+ <name>News/Talk @ KPHN-AM</name>
+ <shortname>111</shortname>
+ <icon></icon>
+ <frequency>1.19</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375F32E734CFD1CCD787AB96C542053614EF32137D78E323DD9DCF715560ADF9A66</stationID>
+ <name>News/Talk @ KLPW-AM</name>
+ <shortname>112</shortname>
+ <icon></icon>
+ <frequency>1.22</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537523DE9221FE100DB6A19C50D5104F431117AC77660D99503CA6FC732457E6ABD9</stationID>
+ <name>Country @ KFMO-AM</name>
+ <shortname>113</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853751C1133DC9C5E3164AE77F7748780F055D675107F50108D6A30EC2A3A1F1C1568</stationID>
+ <name>Spanish @ KKHK-AM</name>
+ <shortname>114</shortname>
+ <icon></icon>
+ <frequency>1.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375E17D64CE837329DE1586A51857CA48325FB19DA9A4F9F5166E59816E10641F02</stationID>
+ <name>Childrens @ WSDZ-AM</name>
+ <shortname>115</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853756795CE11B27414061B69B41DF10004BA8C6B451A330A7BBB7C02F11961CFA5AE</stationID>
+ <name>Country @ KYRO-AM</name>
+ <shortname>116</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375421E2EB509064774EB71F29F743C81F81128AC8D267B7879FDE3162E89704AAC</stationID>
+ <name>News/Talk @ KALM-AM</name>
+ <shortname>117</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375A7DDD2D504A0FE9F6364DEF78F78D89913847EC3E505521CC5196987C0B5E54D</stationID>
+ <name>Religious @ KSIV-AM</name>
+ <shortname>118</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375BCA42FB3178D9C31F43160446079A782AFD76E60BA9B4C195FC84A8447753E86</stationID>
+ <name>Country @ KSMO-AM</name>
+ <shortname>119</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853755D2F54940D6CD71A812F53F438E37045E4F6756188BDAF838D80CF3DE44B5686</stationID>
+ <name>Sports @ KSLG-AM</name>
+ <shortname>120</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853757982DF0D14DF4307651BB014AB4CF8E298251F163B087A816956FD54368E40C6</stationID>
+ <name>Sports @ KGMY-AM</name>
+ <shortname>121</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375A58FC788CAED189444C872551ECC2A2F111F235ED499AEF54A7C22E00EF9D363</stationID>
+ <name>Country @ KREL-AM</name>
+ <shortname>122</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853757FB3EDE5E6D422767DE22194E24D4246391F14FA6F97CD87FA96C782E403E6EB</stationID>
+ <name>Nostalgia @ WRTH-AM</name>
+ <shortname>123</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537544FEA12D229EDFBAA26D4577B635416093D76F2075E6606D347A15A7A51E1C46</stationID>
+ <name>News/Talk @ KQYX-AM</name>
+ <shortname>124</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853754F0DFC17774D68BB5F11FA5AF86F7B6446CC693D19886FC7848361D70D1FEE33</stationID>
+ <name>Hot AC @ KZBK-AM</name>
+ <shortname>125</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375B3EBDDC1495D1B0636A88D8F70AF3E6DEE3886EF51972ACB7617DD86C60A0E07</stationID>
+ <name>Country @ KDRO-AM</name>
+ <shortname>126</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853754C7A4AAA210813EC8077C6F490EFFA93B7ADD60760AB9FC00F5C9A80D4DE644E</stationID>
+ <name>Talk @ KCTE-AM</name>
+ <shortname>127</shortname>
+ <icon></icon>
+ <frequency>1.51</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853755616289BCD438069BF66915DB197E11DB49B4F0E8E4EF1A14F8BF6802EA2EC79</stationID>
+ <name>Oldies @ KSFT-AM</name>
+ <shortname>128</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375232FC5149E7C4C1BD5218B890E2B799B89C5471302F92F65D66C2671FCD99777</stationID>
+ <name>News/Talk @ WMBH-AM</name>
+ <shortname>129</shortname>
+ <icon></icon>
+ <frequency>1.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853750ABB5864522399FC389D181B269EC8CD9F59AFF7AE6821F5A1397ABEC7DDFF07</stationID>
+ <name>News/Talk @ WBGZ-AM</name>
+ <shortname>130</shortname>
+ <icon></icon>
+ <frequency>1.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375AFBC88497955F3898C8BC60E3B8664537C9614E0A4E3A73D375142CF79511BB8</stationID>
+ <name>Country @ KESM-AM</name>
+ <shortname>131</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537591841652AF10E6EA49C429290E674F2808EBB6FCD63CF44425049433D65C72F4</stationID>
+ <name>Religious @ KPRT-AM</name>
+ <shortname>132</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375829774C7F84951199F94DCC3321514B5205EDC5A9417417FC804E14B885BC561</stationID>
+ <name>AC @ KTTN-AM</name>
+ <shortname>133</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537569AE93CF509A1B702A8D2D22763062A6E2B9D5EF8A6FC21A9135E9952A5133A7</stationID>
+ <name>Classical @ KXTR-AM</name>
+ <shortname>134</shortname>
+ <icon></icon>
+ <frequency>1.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Missouri_fm.krp b/kradio3/presets/usa/Missouri_fm.krp
new file mode 100644
index 0000000..7c491fc
--- /dev/null
+++ b/kradio3/presets/usa/Missouri_fm.krp
@@ -0,0 +1,662 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Missouri</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385354634A770D6615A0C41B545F6E77899AB5C74F794D00A4B5C1FFFF303BE044F44E</stationID>
+ <name>Eclectic @ KDHX-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354DD80B6B434B30E35962CBDC4AFB4CCB529FED87628FEA516F12A99286EC7630B</stationID>
+ <name>Christian @ KWND-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354829E1E1FF0AF6E259F48A2329A4A8EAF9B1F6D1EDF42E04AEB327E07F3985BB2</stationID>
+ <name>Classical @ KUMR-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853543F734204619A8A81FCC2C60AE908A3E116ED352961ED81D178CC64E77BBF9345</stationID>
+ <name>Urban @ KJLU-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>88.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853542BBF4B68ABE8E0B8F1678E905B824D7B700F165CA07BD89D9B0B58E29014146B</stationID>
+ <name>AAA @ KMNR-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853544945F0F9566C7A977EAD17C872C1002EB39994809E1B7C310DC4404DFD5F4069</stationID>
+ <name>Christian @ KMCV-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354E3E75CE0A6AB1FAD836B640AA0C4A935DEBC3347D539DF519EF639939C74E95E</stationID>
+ <name>Nostalgia @ KWAO-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>90.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354660345EBE4D198E5E1AEC75C4B82AD5B1031F7F9852FB4DB8148130EE21E6889</stationID>
+ <name>Religious @ KCRL-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>90.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354C2E233ADA00C5DCDCE1163E5E3804C603CF4F89F4A1AB12D6877ACE0FE1BF655</stationID>
+ <name>NPR @ KXCV-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>90.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354CDC22947EDC858D66A6506CB3C7D8142A61F29D60E4A190362A466045ABB0686</stationID>
+ <name>Religious @ KSIV-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354D8BB20199E51BA45328FB1C62657B2AE3A4121F9E300AEF1560E67255E2F181E</stationID>
+ <name>Christian @ KMFC-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853541251D611C4CF84F1DAA5E49189A775521DACD9D0F9A0AAE840903DE95991D6D3</stationID>
+ <name>Country @ WIL-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535461681A98ED2B2A6731F96C3558EEC69635F46FDA763E2CD63EBAE1967CB3B468</stationID>
+ <name>Christian @ KAYX-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354090612857C410AA478611F62DE175BB500AD9605057954BED6FD84DF80B51A63</stationID>
+ <name>Hot AC @ KLOZ-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354714BF5E03DEDB25B8D661D7567C757B54E883FBE982092C039D3D9CC64E523A4</stationID>
+ <name>AC @ KOMG-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354348309A0DF36257EAAE766C173CE6B40FD9FE25250A0A883AA1DE98AF309E54B</stationID>
+ <name>Country @ KBDZ-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535479AC971C5AEBDF6312748FB383EB68917DE5C9AC816DFDB11D250634B8947344</stationID>
+ <name>Alternative @ KNSX-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354E747F4C9C70D417FC1A20FE0C108AAF0BE08D987074D452AAE1CE82E0F1EA6FE</stationID>
+ <name>Classic Rock @ KRMS-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853542763D0F18361C73BF8F2EE271E03DB1D9F1CB86F577E62D7903F2AD2F596DDAC</stationID>
+ <name>Country @ KSD-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354CB4ED7D158F1D715EF1C7E44B240AA7525C8F6F1070794592E993EEFA8F9F343</stationID>
+ <name>CHR @ KSPQ-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853544BF7B07BA9EEDC9683CAF735910E70EE5897FCB7BE9B7933F87A14BC9C00D46E</stationID>
+ <name>Country @ KFKF-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354F1421E6BA4EA8B97A2255581C84C441AA5395BF15DDF938BC941A53C5D145E72</stationID>
+ <name>Country @ KATI-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354607C32A4439A15BFC69E064111FE00D94128B63663060DE14F56044AE247AB4C</stationID>
+ <name>Country @ KKLR-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354629E4EE58467B3211F2D18D6F2F2E1BB86883D5414432E35FAD3D6889C34E54B</stationID>
+ <name>Rock @ KSHE-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853541D4FF2B3BDA1429F7F95A98DED97FB47526D836F721F363AC6927FF3BD761A88</stationID>
+ <name>Oldies @ KCMO-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354728020B835AA8A9F3FD3253313787A05E9481260BB3F1842F6DB35E7EE6D4DE7</stationID>
+ <name>Country @ KAMS-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535410C3C5383E0A8FEA276C130E17222611349F0869D8BE50E2C9B44AD2AC004C40</stationID>
+ <name>Country @ KDKD-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853545C52A9CF75C72D238F05CE590ACDAEF9DE66134CE914EBE431B1B2ED4C6E1FD4</stationID>
+ <name>Urban @ WFUN-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354AC699DA506F7012B08E51C7294ECECAE198775B9F6FE5BE714E89E0D19F03CC6</stationID>
+ <name>CHR @ KCHZ-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535498BBA5E2CA9887CA8FA81EF32C821427866EE45897B454838E240A69EB1BCCA0</stationID>
+ <name>Country @ KYLS-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853540C17CA227F1AAD691172265DEC6239C5C7B20805A73085F26A601B2CB5F8C533</stationID>
+ <name>AAA @ KLRQ-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535488A5E229612A8D4927C5BB29FB086E8D980925026368A26CB735C8F6D21F5F57</stationID>
+ <name>Classic Hits @ KIHT-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354E301A85B5D2C1C2027586D16F778D647FE2644FF2CA21FBFAC5C52DB1C496170</stationID>
+ <name>Rhythmic CHR @ KSPW-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354E6AA06439C34D5EA3EF2EBFA5EF78A22A737DDE7315A9CDC86609CF33650F41C</stationID>
+ <name>AC @ KAHR-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535469522199239659D9DF99095880A3A1986AB1EB31FE19284CF00D96679C6B44F9</stationID>
+ <name>Country @ KKOW-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354F246DCABC911B4E1A5FE77E02FF537A543AD4FBF16B208666BAD654AD742ED19</stationID>
+ <name>News/Talk @ KFTK-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354AFBC3F60D01D20D35A3A8C0CF258CE16DB8D4533C0A1B5F82D68BF08CF5FAC65</stationID>
+ <name>Classic Rock @ KXUS-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354FACBD9479D47E4C7525CAD8461318EB38A8E7DF1316A0A161FAAF3284597775C</stationID>
+ <name>AC @ KNMO-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853546601F8A42ACD3826AC059959FF5992933DB15F62EF9AF08C90A2F7BDDF584E3B</stationID>
+ <name>Country @ KBXB-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354E58E438B6AEE00B6609912E39F09BB0A25815C7DD95DBDBCDB79CD4FC9829D40</stationID>
+ <name>Hot AC @ KYKY-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354238999A277BB340B84998D5B1CFEF1C396FAF8A3BA1EF0660F4A60709E8E0702</stationID>
+ <name>Alternative @ KFMZ-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535497CFFE38C9452431BDEDFE6DCBEA24AF8A87C7AC2550A7C4631F384E0E4533A3</stationID>
+ <name>AMERICANA @ KTJJ-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354446682464E668F5C48BACDCFE321AE20E7E6661C86E9E4257D7DD790D6730F73</stationID>
+ <name>Sports @ KWTO-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535496DA1B8264A7F93622CF1B7F3AE6360995C2DF1CCC466F70A10642F25C1BB87E</stationID>
+ <name>Oldies @ KFLW-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535454ADC9E5748CD0F4EF68537739E8BEEC31F8697942F12AF2C9CD2EA4935255FD</stationID>
+ <name>Classical @ KFUO-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535431BF027187FC198DA86A333CE00512808D54F5BB083495D25EDBFF4BB339C0DE</stationID>
+ <name>Country @ KUNQ-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535486E444319789C3634A06C8FB4D9EA7D563EEEB1799DC36A2DCC94D10AA7936B2</stationID>
+ <name>Christian @ KADI-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853544F909974A840C8908C24E1E06E76F3EF2DEF78708DCB22616C6870C381776CCC</stationID>
+ <name>Classic Rock @ KYYS-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354686D80357CC2E63DD590B3A30F2DEAE33157E8B93C3EFA7C90FF8EDED500C03A</stationID>
+ <name>Country @ KFAV-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354CF185D73E8A705439BBD47CD5EB8CB7F0EB701EF223E108CE7CA0B532A5E866C</stationID>
+ <name>Classic Hits @ KJMO-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354D822AC001CE2762CE6BBA49203C285CB63402FC4DE7369D7A2EBE919D1528CF1</stationID>
+ <name>Urban @ KATZ-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853545F7E335D190E7B4AB19FBA3121EAE2F803E123C79632B39C8F5B35B876F2A87C</stationID>
+ <name>Country @ KGMY-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853548797AB5A94B3A16DA99B25576DE54FAAD4DC07FED94641402936E23A1F11D0B3</stationID>
+ <name>Country @ KMZU-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853549B35A6A38F8787AA10BF2C0405BFCF23D6A3F58B5F7888ADCE0A1A5856821D22</stationID>
+ <name>AC @ WVRV-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354F4805438083BF382875491964E81EA6550FD877C2B073F7B35774FB1AC65194B</stationID>
+ <name>AC @ KTXR-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853545BB68B52F81D1525393B281529798991517AF0410F524AF9B012BE2EFDA82818</stationID>
+ <name>AC @ KPLA-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354DA8D12DB0AD489A937CDFAE4B2A6ADB3BEA92FE2302C8A5E622C023E01692E91</stationID>
+ <name>Country @ KLPW-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535433FB0A61413938555E385F8BB89E1214A6A7209FEA9BE63B7F0BE439578960E5</stationID>
+ <name>AC @ KSRC-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354904824C14339D78C5656AE4EBF8C4BE1B9540AFDD446844BAE54DB7B27DCBD17</stationID>
+ <name>AAA @ KBXR-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853549F939287EC856AFCB603A6DE23A834CA3127CAD4E436C491F45662E922707514</stationID>
+ <name>Country @ KKDY-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354C49B0C4BB9A00D70E6E28844C4387568902217B2EDF1B51F888B0FA28CBACA91</stationID>
+ <name>Country @ KHOZ-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354DB3D12120A333C29F492968F6E0561D2D472EAC3CF647B6C2F968D275CD67BA7</stationID>
+ <name>Oldies @ KLOU-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853540394BB46410B11C5F05620FE1E7A5B26174FC4B5FBB0D54A43442534ED8088EF</stationID>
+ <name>Hot AC @ KMCR-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535464C152537005116B49F56F4EAA1C7195DA7B34CA5A9EFE506F2F165033A3CB93</stationID>
+ <name>Rock @ WMLL-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354EA33EF9BF26CA3A51972CAE93D0C9188C5A72B507BB7FFF38EC57BBE016376C1</stationID>
+ <name>AC @ KDBB-FM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853548A368395EF5583BB57EFE8BC54E0A325585BD7E99C45BB9CFD67955EE115FF94</stationID>
+ <name>Hot AC @ KSLQ-FM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354D711D73C7AB254CFF42D4D341FBABF1454285A2F00FA2C6FF5F0F7D9C68A5050</stationID>
+ <name>Classic Hits @ KKLH-FM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535469922595CA3DE44D830FC9C2043EB66BED2FD12FD3358BDF5A4FAECFD24A0F74</stationID>
+ <name>Urban @ KMJM-FM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354612485D5C9C578885B4904F85F374E5E1FB807384D31BF2307F4AA5F717B2BA2</stationID>
+ <name>Oldies @ KOSP-FM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853540FA2E2C254517C6295C52E3E1B780F8B3A68611CB89F9DD8516EE003576BCF21</stationID>
+ <name>AC @ KZNN-FM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853544CDFA97A4D46BA0512A2CA7E9DA74C5781E323B3E832334FA07FFC84AEA8B9CE</stationID>
+ <name>Hot AC @ KKJO-FM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535461FA4DE57597D45C9FA3A4627EB83BFB78124AB6F296A4D708E2BEDFDB0D1136</stationID>
+ <name>Country @ KXKX-FM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354F4CCD1E4BF096C7AF04CAC33C00DE822E71C61A49D0B52A2479A89DD95C4A555</stationID>
+ <name>AC @ KGBX-FM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354F9CF4BA5D488EA1770993DA6ED0EE7220D5B4EEBFA72BDA75F23EC6BE1B4AF5A</stationID>
+ <name>CHR @ KOQL-FM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354DA58B0F24ADC8E0AD829800DAD8D5B6EFAE5F2DE9BAED4F525C3B4AD8A01B847</stationID>
+ <name>Country @ KRZK-FM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354C33BF7AB458378CE241597F65CFE51917BE6D68A91111D82E611A1FBB7EB5A05</stationID>
+ <name>Smooth Jazz @ WSSM-FM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354D76B6266DFB5D82891578CF46EEB5472CDD048A30E8A8DAE65D45288B08D3C08</stationID>
+ <name>CHR @ KHTO-FM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853542D938117BD629A699F67F20653B5710EF4AAA2584D296957C91AB8343E69EB64</stationID>
+ <name>CHR @ KTXY-FM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853542AD7DCD508488813CADC0E39907D8DBB669F587C654B6096D2087534C1AE9C89</stationID>
+ <name>CHR @ KMOQ-FM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354470F480CE5C50C4D9C72EF8F59202EC4622EF1107A653149BE846AE3C82CAFA3</stationID>
+ <name>Country @ KRLK-FM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354EBC8F919F67DF2765F2C9B6B894BDA84B6BF69D351DAB71BBF916E80DBE6F532</stationID>
+ <name>Religious @ KLTE-FM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Montana.krp b/kradio3/presets/usa/Montana.krp
new file mode 100644
index 0000000..10ac3aa
--- /dev/null
+++ b/kradio3/presets/usa/Montana.krp
@@ -0,0 +1,478 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Montana</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385354CA4E4682175A4B1510094589290BE171F8F99FD16D9E511EF795E537E04DC3AB</stationID>
+ <name>Alternative @ KBGA-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535406C6D416FE614143027ED0D33769CE10E1BB04AFD46C5929F1CEB6CB2FAB2309</stationID>
+ <name>News/Talk @ KBLG-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>91.0</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354DF680B9072FB43FC821C1C98E9ECCAFE25D93F32CFDE7C5923DB6F26FA3F1462</stationID>
+ <name>Alternative @ KGLT-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354BE3E3A1490544E21450169B482D9AD34960DD727FB9CD7DFAD1207659540971E</stationID>
+ <name>Hot AC @ KQRK-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535405E0068F750532EE557603412D8840134B8075254A95626F1AF6633D69F0AA74</stationID>
+ <name>Country @ KKRY-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354AA1DBCCD89C53B51ACF05283328BA736891A6D0883DE4F0F395906B0CF2AE2A9</stationID>
+ <name>Oldies @ KLFM-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354CC04C5437F7536BA501D581BF01F63F1C57D114E5F0CF3E9C88DB237164314B8</stationID>
+ <name>Country @ KGGL-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853545A2D9039B7B4BF32626C41A671581246440F1DCCEA708DD6177C6DCFF4A9E035</stationID>
+ <name>AC @ KLAN-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354E9AAACCF4BE0F76071B243A650D4054B19A7F9915E2B8D39247960DA4F780417</stationID>
+ <name>Classic Rock @ KRKX-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853547E13D4F25926B30F49EA9B20F80A2DA5E477F9B0A9E21ED40FC7A6F68E17861A</stationID>
+ <name>Country @ KMON-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354B5B2ECF57CC1A7CC6D9AFBCE4528AC036E46639D044B30F18D2DD74001C06EFE</stationID>
+ <name>Country @ KYSS-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535464E07948B6327914325FA439E2F9A16A4AD16DABB61D7890E2B23C89806656F0</stationID>
+ <name>Rock @ KMMS-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853544B37754BF3231568472643A6BE6C0266B46679BDF5027F15C06453C6CC8ED0BF</stationID>
+ <name>Classic Rock @ KMHK-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354EF53C9EB362F2A6C879C4EA7DC2B568E718E4A662F35452462DAED9C9B73FF19</stationID>
+ <name>Hot AC @ KKMT-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535431CF55DB7D1A9EF3A4B1B99B72F87F3513A57FB5CE073F1DE240D7A707680F65</stationID>
+ <name>Alternative @ KBAZ-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853548903FED8BF5CC04FB08BED0C4CD3CE946BA2E1CB939480A5A47C4F0815BA4B9C</stationID>
+ <name>Christian @ KALS-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354D6F07141B4ED5630F4A4281FDA8522904F2120DAEA9176D44AE4D95420120092</stationID>
+ <name>AC @ KVVR-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853542C73C87250F8447E6BEA05264A0678569C05CA3975C9BFA1B8FA1A3829970645</stationID>
+ <name>AC @ KBEV-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354D74260F6830FAB9C9AD3332AE2053CDD1210BFFF49D0B579FAEA4D780BCCCBB7</stationID>
+ <name>Rock @ KBBZ-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354BCC33A049A8993EFF657E864EA0E1FCB1F9D4798ABC934C631149446BA3954CD</stationID>
+ <name>Hot AC @ KXDR-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853546EA2208D9F6A3155AC9E54914E030EB504C7D0F210C93662A98DFD15F19EC41D</stationID>
+ <name>Hot AC @ KAAK-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853544B4314B7929AD3A770CA7819506A75D17F2D9368E946D78E9BD268F07BE4CA6C</stationID>
+ <name>Classic Rock @ KMXE-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535470CFB824A8D98A7C91920D4594DB68BA95551BF92CC5C110FC1FBEDD3061D0B0</stationID>
+ <name>Classic Rock @ KZOQ-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853549B46DF62A74D0887ECA44E63755A391BE4C2A2A6358881D7D4949BA23824587B</stationID>
+ <name>Classic Rock @ KZMT-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853546DE8E0F5F9E4CF2C7FB4F25FA81B0DCF76959F51C96A6BFB5A0BEF54F244757E</stationID>
+ <name>AC @ KRYK-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535452AC09F0B4855DB009DB409C27A64DBF3F9C47E1A34CE3F1E25416F0A69CA263</stationID>
+ <name>CHR @ KRSQ-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853541133257DEC568D43FC8C46A308ACF6CF494CFAEDC9E142A9E5FD4426534E72C0</stationID>
+ <name>AC @ KMSO-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535415A9560173AB1C1BA2E903B86AB18DEC59D317AD75423F290DBFDD70044D72A1</stationID>
+ <name>Country @ KCTR-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354BE2B31D08266960A55440391348730D8422091F26A8380CFE546C4D8435F6BE1</stationID>
+ <name>AC @ KBBB-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354DEF7F94EB67CC36009FBEA3D434E146B479D295DEA9EB6F92F55B2F9912B4C94</stationID>
+ <name>Country @ KOFI-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354228814CD59F3F25E670F504E304B97CD3CB3E31D112114080C4C8FBD94504A7E</stationID>
+ <name>Country @ KHKR-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354E943E4573C9F008F3D4B8AAB7E1AEE4E1906B0542EF126B72BDBA17155E3B3D7</stationID>
+ <name>Classic Hits @ KBEX-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354F586E773AE242CF59BB2667884F753CAA32254A6A1DDF41584F148E1A9917B4E</stationID>
+ <name>Classic Rock @ KQDI-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535417DE1A7FB8E786C9F00DDDE44DA4B9B0BC8ABF5EBA8B199B69F37344E2B75371</stationID>
+ <name>Country @ KDBR-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853548E626D2BFB36C1F2BFC2BC19AA44135F935967775A4D5D60457E9CD0D66C5748</stationID>
+ <name>Alternative @ KINX-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354C6EEB976B2869D4C2897911FDC10F3E5C3ECA7C96686724243DFC05AC28F0801</stationID>
+ <name>Eighties @ KZRV-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354C190A37B56B58AD2812207104AA93716EB5E6BF2BEEFA08492141605D749D868</stationID>
+ <name>Americana @ KMON-AM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853546BA3DD7D7F60073D04C9B8A5AC82B0767F6829CEECBD05E72FEFFD0695F1460B</stationID>
+ <name>Religious @ KGLE-AM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853540ED4CD145A3E8B5BAE48F74D8E4560062F8A70CA234EA7371B94DA45B7441A7B</stationID>
+ <name>Alternative @ KGEZ-AM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354A9CCAE346B138EE091A1CF4A01D0E7B1955859A89B240A5A93DF0DD29F397E81</stationID>
+ <name>AC @ KOJM-AM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354507C70745DDDA9A137E0A0ED200220CDCE75B3FF19FF82A66B85544683BFF48E</stationID>
+ <name>Religious @ KURL-AM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>0.73</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354229678B364874A4559B5DC6BF6BF5183E10ED91C92B3769A59558F3B8914B2B0</stationID>
+ <name>Country @ KERR-AM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>0.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354822FEFAEA100D87ACE03293E725F0CD3D5999F5D2C41572E6D21F8323DF939F7</stationID>
+ <name>AC @ KATL-AM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>0.77</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535419775BB624F88416A121DA191AB1985264DDE0C0F90182E7FB44927D1A2DEDFD</stationID>
+ <name>Country @ KGHL-AM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853546D8D6EA6C706A7569E94FE852F9E79CF57CAAAADB9D0063B76D770D35049AFBC</stationID>
+ <name>News/Talk @ KJJR-AM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>0.88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354E58C411AEFF00FA0EAED7C421941B7DC003955AB2BF7D2EF5F12E55EC70F3907</stationID>
+ <name>News/Talk @ KBLG-AM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354975C53DD0B0266C36A555157AE24BF2D1A0585A8CC016B2CF05A6236B7EE0934</stationID>
+ <name>Nostalgia @ KLCY-AM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535418ED7C15B2ED4888D8D281782765B934AB5DD875C99DA079C02E9D8C125BC982</stationID>
+ <name>Country @ KBUL-AM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853549F972950995755ED4F7D2F3931BF5E527E33B0E044E07D2B669F7E44F85881FF</stationID>
+ <name>AC @ KMTA-AM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>1.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354CBEAA9A8F214525CB0A7055DC86195EC9446ABB8E4F174B222DE0F72A1EC4CB9</stationID>
+ <name>Oldies @ KOFI-AM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>1.18</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853540CEDE28E23132494F720F0F4AAD7B7C1D76EAD59E13F728CEDBC6DD0F446B3F1</stationID>
+ <name>Country @ KXLO-AM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853541C7F6291DB5DC00E3D58E0EFB2D43A76DC989AD7D9F02246D8931E3A6914E0B8</stationID>
+ <name>Country @ KLYQ-AM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354B015B081F4CCF0CA88DDD4FF609F254B5A9FB17373D0016F3613B94320A0DF9D</stationID>
+ <name>News/Talk @ KGVO-AM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853542E4910155BDF3F3AF3054BA41941E7064BF8CCA213DD973180D5DF5A1B13E28A</stationID>
+ <name>Oldies @ KYLT-AM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354EAD635615C3367ACAC96B4F96CF3BA54F239DC8EE537B0BE857710ED37082F26</stationID>
+ <name>Oldies @ KXTL-AM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354DDA756083860B272224B02F75E27A50A557FCE11B3C2E978CBA91D31D9340120</stationID>
+ <name>Nostalgia @ KXGF-AM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385354B64638FEBB0152570F4240891590AD552539941F84A8507F65782EB4792249BB</stationID>
+ <name>News/Talk @ KGRZ-AM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535448853265DB853DAA49064AA01803C98F66A1BFAE719D101A9A917B034EEA3C8A</stationID>
+ <name>Country @ KDBM-AM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Montana_am.krp b/kradio3/presets/usa/Montana_am.krp
new file mode 100644
index 0000000..7e84bc5
--- /dev/null
+++ b/kradio3/presets/usa/Montana_am.krp
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Montana</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338538063DB5A6E625A7876187778E6AF407001B2116D6D512F4050149B0101A47C89B1</stationID>
+ <name>Americana @ KMON-AM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380296BF45635489D33A3B312D3D93B2C384F06B0DA7B2FF9D461A3AD02117E028B</stationID>
+ <name>Religious @ KGLE-AM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853809FD65054748F4070154B8F54CC74B141323B7847B9D92F56BABF29FADC0DC25B</stationID>
+ <name>Alternative @ KGEZ-AM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380FE6858144EB9AF878F043A3AA387B566ADBAF4BF95E470F6A0D844F88D392FA1</stationID>
+ <name>AC @ KOJM-AM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538046C52741D5809AFA66DCADAAC2D2DB8F02A013566C5C51B92733570433A70AE3</stationID>
+ <name>Religious @ KURL-AM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>0.73</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853807A3822511718F262D5D90E673E70A3187DA2730FBF9FA217215306EBD1839946</stationID>
+ <name>Country @ KERR-AM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>0.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853801F89A66098A4A8F2A4803D79A6F02FF468B496274B6F1FE534E34A106B170187</stationID>
+ <name>AC @ KATL-AM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>0.77</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380DFF1643EA8D8B59E53F9C1AF3E64B10D5FE74C6A797503861047356385413D77</stationID>
+ <name>Country @ KGHL-AM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538030E8B8705D7F6F2CB57124F860EFE43CDEE1E9C0C25E8EC32B857A657FC68193</stationID>
+ <name>News/Talk @ KJJR-AM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>0.88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538054EEA691EEED3ECBBE80CD6F5C28968FDF19451C9B9B0A8F0F4A15D701A2EBC3</stationID>
+ <name>News/Talk @ KBLG-AM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853801A67300E4B7C4F861C9A56CFD89C66350B056BBCCC62C8B3DAE07214AC0C96E1</stationID>
+ <name>Nostalgia @ KLCY-AM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538092A34EEF3F0D6D605D1EDF02A71F508997A93B748D4D2ECCE9EE41F60DDF59A1</stationID>
+ <name>Country @ KBUL-AM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853804D104F500BED003D42D8C7F68C3785185D898979AC11C14D26F9BD7742940CDE</stationID>
+ <name>AC @ KMTA-AM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>1.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853801C33854DFEB802751A2AFCA64204FE9693FABA159C0D377D28B1F9E16D00125E</stationID>
+ <name>Oldies @ KOFI-AM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>1.18</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853808EB8731DFC837DF80B754859C187B84FFB0E6B47927DDC7B4913D67B38C75331</stationID>
+ <name>Country @ KXLO-AM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380E585D82959401FA9361761E81EE01C6E5A46A9498A1D8DA9FC8F8FCB9D756796</stationID>
+ <name>Country @ KLYQ-AM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380DDFABB631D9B58EE1FDB5F46D7752C874ADF521E44DE6CCDF4C5A70878BF347F</stationID>
+ <name>News/Talk @ KGVO-AM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380036FB5882CDF5DA9C0EB2573185680D06466E751D302A1C7C0D1E0CEEB760D1B</stationID>
+ <name>Oldies @ KYLT-AM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538072E727C2426116A4FC66D20D171BA90B8ECA8CEF444F78168FA16A56FC24345B</stationID>
+ <name>Oldies @ KXTL-AM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853801002D487E928405FC28848B7B5A0C9389C67CBC62BE1F8D3060EC1978F4122EB</stationID>
+ <name>Nostalgia @ KXGF-AM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380B4821023A13528AC584E5C737501930EEBBFE68FD0FB983E2A0CD7B3BF3B31A5</stationID>
+ <name>News/Talk @ KGRZ-AM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380EB2A1691D47B657DAB59B9BF4C36A68062F9CEC8ADA9EF62161712D8EFF0EA02</stationID>
+ <name>Country @ KDBM-AM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Montana_fm.krp b/kradio3/presets/usa/Montana_fm.krp
new file mode 100644
index 0000000..fe496f7
--- /dev/null
+++ b/kradio3/presets/usa/Montana_fm.krp
@@ -0,0 +1,302 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Montana</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853758D7BCCB054CCFA7C0CFC85015AAA14CD26939E198F550DDC7CB3F6BA7F0006F8</stationID>
+ <name>Alternative @ KBGA-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375964C8E979EFF405BE4D7EF77CC669D5B053EB5F4906C080656303EB85E7740F4</stationID>
+ <name>News/Talk @ KBLG-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>91.0</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853755A1044757692AEEA0AF6C235B351E604143F868B28B778E4ECA98BB288FBC5C4</stationID>
+ <name>Alternative @ KGLT-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853759A2ED4867F6066755A4A063923D8D10552D1D57B01B33E52D6EC478717937D60</stationID>
+ <name>Hot AC @ KQRK-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853756324CFD965396E9F1652AEAA0B6783ACAAB0E5F97689F46242E08ED58CCDA19E</stationID>
+ <name>Country @ KKRY-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375E06E3896C452912E45DCD9A574B5040915ABD396C3625BFA1008E907509F4FB1</stationID>
+ <name>Oldies @ KLFM-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375E336760C1A9F17F4B80C5425D6D339E48E77F8F448DE443459E4FA65F92F633F</stationID>
+ <name>Country @ KGGL-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853757F98B0951641D62A7C126415BDB31F2ACF1D80545E7101ECEA2B1CC6B844C14A</stationID>
+ <name>AC @ KLAN-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537509919334145350B16BEA1FFFE43E177A0FB8555ADECC56FFA5253641170DD1F9</stationID>
+ <name>Classic Rock @ KRKX-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853755FCD2FF9AED7E2CADA4115F25169018BB2FF285AC4165807F9365FEBF3F28983</stationID>
+ <name>Country @ KMON-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853754D330FBDDEBF80D72954743E1FDB54A6323A68DADF8C900FDDBC257FC1931D5C</stationID>
+ <name>Country @ KYSS-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853751B3C17E59CD1E62A5F264B5BE1601A076C106376A7EA25CD092DC46AE10A33B5</stationID>
+ <name>Rock @ KMMS-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375F4FA806AE333E7F17B4A3DD1B7DFC3573FB2A26293D13AF80D1B8557CC174E6B</stationID>
+ <name>Classic Rock @ KMHK-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375268E0662A1BF3E0BBD4FC456797A1F3A35A8513757BF5F1A126A76432A8DAD77</stationID>
+ <name>Hot AC @ KKMT-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375A737DE1F3D18DD812EE5DA57A5FA15488A6236DA3F29FC081D29560303F7A1DE</stationID>
+ <name>Alternative @ KBAZ-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375523340D59C55C7295CBAEFCD36AEE7604D562F34C2A6BD6D1C2B3584951C3E00</stationID>
+ <name>Christian @ KALS-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853752A60F55DCB47106E5B13F5C5CCDDBE3B4EEB30355FB42F6AE47C506A18680368</stationID>
+ <name>AC @ KVVR-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853752A29A93FC64306D2E96F6C01F1DF82D6CD39D65C05F78D4512B5AF8D72AC47C4</stationID>
+ <name>AC @ KBEV-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853756FA74F7B25204863BA7624DD53FFD041F705117CF155CD1FF5E098D8ABEDC879</stationID>
+ <name>Rock @ KBBZ-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853751C9F881974342B5E297533A2D925D5F04490BFAAD0B19F546B5254D070758F56</stationID>
+ <name>Hot AC @ KXDR-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853753E166F3A8B61F07AB30F6B9C888CD073C6FB6BC75A4C7F5DAB28587DA5989452</stationID>
+ <name>Hot AC @ KAAK-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853755F3B633CF5B1AA71880AF4B84F3B8B56F48DA2222831CE5E66D9FF3A01D4393F</stationID>
+ <name>Classic Rock @ KMXE-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375FC62C436341FCA704D65329D328CBD061A380996C175CB313482B198F530DDC3</stationID>
+ <name>Classic Rock @ KZOQ-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853750EADB25B2CE95D28FEE4BD056A3A9C02C2677ABF3583C28B830C7E8BD58B55B6</stationID>
+ <name>Classic Rock @ KZMT-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375A7357627B3AFC5F3A36AEE5AA807DABB48B06A6FB8A89FF03D153D984E82E0C7</stationID>
+ <name>AC @ KRYK-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375E4810D66B9DF54D0B541139460682DEE03B1D07627DC6E1C9E697B805E55DC0E</stationID>
+ <name>CHR @ KRSQ-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375239F1770E87B64F846879C8D266440A15BCD1DE26F6F6382E1C65ACCA6B10D5C</stationID>
+ <name>AC @ KMSO-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375081B4691721366818E6455AE398FBEE602C2A7D1CB21C291E18CA0FB0059A44F</stationID>
+ <name>Country @ KCTR-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375BC3D24ADAC18A43DDCE4BFFB564E140260789A54D3F1D37776AFB8A62D77274F</stationID>
+ <name>AC @ KBBB-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375755EE6F6C8693429E7F5D5A049513A084F19A66C3CFCCE9DB0EDBD639E8C5CF1</stationID>
+ <name>Country @ KOFI-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853755615AD01B5C37EA699CEA9E447D2C6DCA9D663232AAA310425678841B4A486D3</stationID>
+ <name>Country @ KHKR-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375D1D0418DE4EDEB315DB795F5A12A10A89D183FECCDF457EBDE9B661402D65F5A</stationID>
+ <name>Classic Hits @ KBEX-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853752D65650AB96CF3B6D5ADF018A6E743EBDB47B6F565A806C57FA08F82967AAC72</stationID>
+ <name>Classic Rock @ KQDI-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375E3EFE551DE345810AF4827AE5DFC9B0890DDFBC82D90137D0EA13FBBE314303B</stationID>
+ <name>Country @ KDBR-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853757094F6D4B714025FB05FECDE81FD190F7FF142355005762B10F94F0BA93B05D8</stationID>
+ <name>Alternative @ KINX-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375FE8C6678E967A268D2A8DA25282CC711513881E44385B35EA6872FB506A35E0C</stationID>
+ <name>Eighties @ KZRV-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Nebraska.krp b/kradio3/presets/usa/Nebraska.krp
new file mode 100644
index 0000000..9814006
--- /dev/null
+++ b/kradio3/presets/usa/Nebraska.krp
@@ -0,0 +1,630 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Nebraska</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853569BB60A4C3CBC4C7FF918F1A7EFEB7D42E51387576503DD1417B6CA24DA9459F7</stationID>
+ <name>Religious @ KLCV-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356A4E13926FF705078D00A3E18FFAEF8FD8B0F5FE7017B2366D4EA45932B7B00EB</stationID>
+ <name>Religious @ KVSS-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853567D6D1BA795CDED7F0F643F67488757F2191BB0BF28DBFF87E3B46D57701DA3B3</stationID>
+ <name>Alternative @ KIWR-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853560C6E6A52514735E65EF2CB5E78B5671371DF8C03AB0862ACDD84CC5BFDA826DC</stationID>
+ <name>Classical @ KVNO-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>90.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356C19AEA0DD5DBD16932D4AF588CBEA3BD2C6722656625245E115D6C7FBF46ADB3</stationID>
+ <name>Classical @ KIOS-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356A7396CCE7528A196CFEF78E280481CEAA06420A38C780A1467D4C3FCC16BB62A</stationID>
+ <name>Alternative @ KWSC-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853568AEB046C0952102D67C7A7C865AF133975DF44512ED35C7F2FC78974865268D9</stationID>
+ <name>Rock @ KEZO-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356955BCC79FB226C96EF462267F696A3D8479CA60BDEFE7BBDF04A4F5402C5F09E</stationID>
+ <name>Country @ KUSO-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356DEE705B95863FD3FFC878A02907C485ABEF68EF54D3F7855E296D5ED0021A419</stationID>
+ <name>Rock @ KMOR-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356AB3EEEABA247EFD95B31326A9E688E12D104E8B039475A9571546914B14A8AD0</stationID>
+ <name>Country @ KRVN-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356B9597189E30DDD152822409AB0E60982AFA99668251A8D5E4821D58E336F8352</stationID>
+ <name>Active Rock @ KRQC-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356B7BB16501070F62412B1834E0203A7B79738C38CC969BDDC49B7F1746926CC88</stationID>
+ <name>Country @ KKOT-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356E143BD98D0F9BC442F2DFE472E39E7788AF736FC546932BAF3C5ABABF1419C84</stationID>
+ <name>Rhythmic CHR @ KMXM-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356A0FF951920F67814D4C94828473DE7230A1E57B722FCEA16FB994B76FC6B4CE4</stationID>
+ <name>AC @ KNEN-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356CE446222AFB06EC7998AC224487E05F1462B434E4E34D9F23E3D7EAC7B67899B</stationID>
+ <name>Classic Hits @ KRKR-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535662B8E6BF5EF3DC33779AEBF82BD0F371461EEC23C45940F686CBDC86886C8C93</stationID>
+ <name>Oldies @ KSDZ-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853567ADB3333EB7F4F7822BA479CE853466F364346DCBB19CE35EC9BF8F8AAE67724</stationID>
+ <name>Christian @ KROA-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356A90C5102ABECB90F40A74006DDEDD0EA10912D1FB7C9C82F48E5FD3D4411F4E2</stationID>
+ <name>AC @ KEFM-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356859CB60340BF159A4917C73C082E761D81579F8E5141D27C18103CEC37F0A506</stationID>
+ <name>Country @ KZKX-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356E469E7784ADED0573A71E9D79616CEA0BD0285B6262A9007FDAE1090F9EBA29A</stationID>
+ <name>AC @ KELN-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356897215C1D3EF8332F3D9960C89B6A05BB74DC0EE82B9A631E7E4EAF536A8978E</stationID>
+ <name>Urban @ KBLR-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356D7D5EB0E610D1A931B37EBA68617CBB8385D1F62D36EE5125010EC2F93F979F7</stationID>
+ <name>Spanish @ KHLP-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853569B3408E4E2437FCE382AA6470767CBD13A58F51CD8CE53313D230188AEB11BDF</stationID>
+ <name>Country @ KFGE-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853568E81C447011B1BD0FB0E0080010483992D2EE4990B0C4D4FF139BA71A6B387AA</stationID>
+ <name>CHR @ KQKQ-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853561433A0CD10C28445CFA31B5D2497599BA13C32F19906307557B4895A5433F955</stationID>
+ <name>Oldies @ KKPR-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853561717434522CD7637D131C6A1BCB6FE6E8112BCEE20185A5B49C21EA336934939</stationID>
+ <name>AC @ KOGA-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853565445AED3099AC6CF1C9382BAD7296C34793B000E48579D1761995D1568BBD69D</stationID>
+ <name>Oldies @ KGOR-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853561793A9DF45A12E31615B562A43364DDDADA7B60ABDED9F6FF4F9AF3846283A9F</stationID>
+ <name>Oldies @ KOAQ-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356DB17C523279744BA38483E6E88CA3AA64CBED3716011067C6A2E7D0774A4E39B</stationID>
+ <name>Country @ KZEN-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356E76A7A4DF24DC11220FFD022EC8A6F1E9BE02287403FB5E3FB30905A1258FC65</stationID>
+ <name>Religious @ KGBI-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356419D04BC770A1F832E48E6DE083FD908DBDA4EB55A61669FE5DA3CF5ED2D4362</stationID>
+ <name>AC @ KLIR-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356EA5E4EF8D006B58FE72731DA9A76D8C95239DCB8E34391A4CF143C3F6CCF2EBF</stationID>
+ <name>Country @ KOLT-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853563659A34B3333899D867CA6AB9E1BF79678C4F3D400A790D261A10FFC7F06CA8F</stationID>
+ <name>Classic Rock @ KROR-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356ED00C629D60B7C85AFE95F9C71025438CF8FE828E1C0BBC03EED3750B6291999</stationID>
+ <name>AC @ KLTQ-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853561C1D83042DC6A4569810F150ABF50EE6E540EA79ACDB8BD8BA809729E8CD2F92</stationID>
+ <name>CHR @ KPNY-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535630F848AFC02DDD161E2ED6AC8AF6B529A9ADA54E5499871A58FC47E6B47DD615</stationID>
+ <name>Country @ KRNY-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356588A1A04BD333D4C72D190BBB467A74C6CF99823666FC56BF8061582CDBF44D4</stationID>
+ <name>CHR @ KFRX-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853569879C377805A69ACE56CE6DF4F04AA9AF79D806388B6AD3EAF837503CBA3190B</stationID>
+ <name>Country @ KBRX-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356D42E69D4DDA9E069C291C101285A7E1B7BEB2E404F637B933645DFB48E67B2BE</stationID>
+ <name>Country @ KXNP-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535627DC35D701AFD0BAE809BE825E43C2203BCFCDA708FD7EC769B4D82988267470</stationID>
+ <name>Country @ KXKT-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535684144D9D0387689165F7150E42EC29A0745C56C44624E57C16EBA509470001D5</stationID>
+ <name>CHR @ KSLI-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356A541AA383679B850C290DA2EB270D4D4ABC4A11E4534521835771FCC25A0BFCB</stationID>
+ <name>Hot AC @ KSRZ-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853560CFDF003708243DDAC7AE67A29E85BA61F5B6B28F5645CDF27FC8FA054FC9E22</stationID>
+ <name>Oldies @ KKUL-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356BD2A03E81BDE78F06F040C3D27DEFEB6DA8E7F99D2AE162221C110BD516BB32A</stationID>
+ <name>CHR @ KFMT-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356A43BB5387C728F83A945BF4F9A4D1D5342D126C1FE131591A7C7FEAFCBB59EED</stationID>
+ <name>Classic Rock @ KKCD-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853563B25545CCD5EAE6B631FE8820ABB975CF116B292086E09385BF43D0C64D625DB</stationID>
+ <name>Active Rock @ KIBZ-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356D92DFACBE644894D15A6DAB26E0826A2987887BFF2B1D6940CBDD0F09D2E731D</stationID>
+ <name>Country @ KMCX-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853564ADAB5A94166DE84DC60D7537651D63D8901E71D4D1988BD860F92E25E375D49</stationID>
+ <name>AC @ KEXL-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356042D7986809021F38EEC324A0CCC14E1C05D37CCE6C158352AA145FC1E8787C8</stationID>
+ <name>Modern AC @ KCTY-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356A47BA6582A275C34D9A734DD1BE13F8C07A2180C735CC6B7AECFDDB1F1BB62EF</stationID>
+ <name>Hot AC @ KBBK-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853562F86381D2520C140A202909DB39F2E1350DBD5C2600EC121D435BDCCB76661A2</stationID>
+ <name>Hot AC @ KSYZ-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356B0AA705587949D400D4B4DD2A97B339F367908B50499EA9A2EE2B51E6E896814</stationID>
+ <name>AC @ KWPN-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356A2658EBAF6FAD13C0DA91696DD3806C0E91D87D22B42BC022B776CC48951BE16</stationID>
+ <name>Nostalgia @ KOMJ-AM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356733CF085D5DE5FCF40C161FBDD3BCC146D0A1FEF372123E90EC229056614E485</stationID>
+ <name>Country @ KCSR-AM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535658722683823E56A8B2C2AD51CFC4291C170796C421319B1430CBA665C37E971C</stationID>
+ <name>Christian @ KCRO-AM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>0.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853561A0DD80BE36C6918450F99CB778CD607774DB4F98F4E3D531BA0069515B0A16C</stationID>
+ <name>Spanish @ KMMJ-AM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>0.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356A5A9E76BC11450544D73E1F96E109198517C80A6EA7A660E82AB03E3B737E396</stationID>
+ <name>Country @ KTIC-AM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>0.84</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535660EB8FBE64C8221098949F2122CF1116EC129D4F8937E60ED3034889C00947A1</stationID>
+ <name>Country @ KRVN-AM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>0.88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853568952B511E15A59C3E3CD47CDD2EDF026EA0957D40FC091F26A52959CFE76D321</stationID>
+ <name>News/Talk @ KJSK-AM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>0.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853565E746F955EC0D057B0637F47166D360C7CBB99EDA13C9371B91A615165AF380B</stationID>
+ <name>Nostalgia @ KOGA-AM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356A22A11757C697C61429F6BF75917431524DEC6B28FC4514B4C7849E4A54DD941</stationID>
+ <name>AC @ KNEB-AM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>0.96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535678E07F35A27F5B2EC755D1E39B4D4D0B37DF2E3B8A790437A09E0A0196563041</stationID>
+ <name>News/Talk @ KFAB-AM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>1.11</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535632D9F3CA42F90252B1F4745A331DCAADC439E2D35274A702063563133A31997C</stationID>
+ <name>Childrens @ KOIL-AM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>1.18</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535625260EF2DA49300F8AFFC0E39D55C7684EF5ECDE99C970A4E1F12FE1C9B1C187</stationID>
+ <name>News/Talk @ KODY-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356EA093BA78DA5A771C1A3975F46F0B2C53847821A0BAE578726ACA6147E5A7B06</stationID>
+ <name>News/Talk @ KKAR-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356877F7BF6734E866EBBDEE70C7FC8DC66D5CAB59C55674AABD5397FD908E0470F</stationID>
+ <name>Sports/News @ KGFW-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356C6DC6EF5E170DA6DA88E62B71D8ADE8B3A381971FE123CB924B6DF224A249779</stationID>
+ <name>AC @ KCOW-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853564A8BFD4F26A58A85FBDDE28B4D1F1EFBBCC8205B788107F0CD93958FF0704C18</stationID>
+ <name>Oldies @ KOOQ-AM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853569A18946CBB4DDDF0F9FA5FEB2E02F3BBF62CA7B6E914A5AF4F3B0920D8BFF041</stationID>
+ <name>News/Talk @ KHLP-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535662C297C00C3C4B20D106A336DD74AC75EE1AF82BABD38D396F3504E868605E52</stationID>
+ <name>AC @ KRGI-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356853AEC6D8BC1C4860F5C629FF1BCC6EDBD478A662611D12DB0F382E1414ADAB3</stationID>
+ <name>News/Talk @ KLMS-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>1.48</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853565E37538C098168C86E050F3266DD8E3A9E05345B9C2C60328BF6AD29456EACF2</stationID>
+ <name>News/Talk @ KOSR-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356CDCBAF843C56A203D471892AADF48E0E7C234C011BE43AD5AFF347D9EFED4285</stationID>
+ <name>News/Talk @ KTTT-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>1.51</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356B4DAE65772792D8B1374ED11DC9B279EDE854597E788405102FDB9E2AAB5790F</stationID>
+ <name>Religious @ KLNG-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>1.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356D17B591C91226D31F9949A13BFB2C91D26EA04E933629D541547191469A48CD2</stationID>
+ <name>Sports/News @ KAMI-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853560B1A859248E9F9F1F7CBA3BECF38A8A825B8EAF7E79083F5994925B2EE5F7BEB</stationID>
+ <name>Country @ KTCH-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853560E3596C1C9895AE8A16E54F9603B9AC63187C7A7C42B1AD5692F697A93CDDCFD</stationID>
+ <name>Sports/Talk @ KOZN-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>1.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Nebraska_am.krp b/kradio3/presets/usa/Nebraska_am.krp
new file mode 100644
index 0000000..d8b4168
--- /dev/null
+++ b/kradio3/presets/usa/Nebraska_am.krp
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Nebraska</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385380933DBEC37BADA074C3925E87F43F588F6833009FFD1EAD5C02E828C65963A34A</stationID>
+ <name>Nostalgia @ KOMJ-AM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853808EE6BE7EE1D050805590737F2D0D6E6ED0A206DED2B228F87DB7FEDF29E12A8B</stationID>
+ <name>Country @ KCSR-AM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380B08C938BE3D8D377A84B333EB557B74EA5755CCC52971BC6B1E42091B8C27A93</stationID>
+ <name>Christian @ KCRO-AM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>0.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538055DCDBBC9992911D002CB698581CEB1FFFAAF027A1F28CC0BAC8D7A9E3C662E4</stationID>
+ <name>Spanish @ KMMJ-AM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>0.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380A24819DF707692FD39E9216DC7DA14D574D4E58BC89097C85DEAE51DA4F5D878</stationID>
+ <name>Country @ KTIC-AM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>0.84</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380D2043A6CF7922F9250E124D7B306C3429D331CFD635353EBE0C2AFD1B068B336</stationID>
+ <name>Country @ KRVN-AM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>0.88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853803635AB4CA07EA0CEA4AA580B3304A05DF57D0E4028523D9B34E4633AB94C005E</stationID>
+ <name>News/Talk @ KJSK-AM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>0.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380174D841D1C7B15540E97EEFD35732C936A21EBD01015EE1379B2F4AC24115356</stationID>
+ <name>Nostalgia @ KOGA-AM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380210116971A9588DC92BCE43190C9A65F596F3269E5BDBEEEA9D4C12DEA12A038</stationID>
+ <name>AC @ KNEB-AM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>0.96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380191D0CAAF89F49A5C0B7489B9F82D78A4E393013936C85D55B4BD0C63FEEA1FE</stationID>
+ <name>News/Talk @ KFAB-AM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>1.11</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853808673A38093BDE059063D6ED747973A52502343341C6C38E3ECEDBA576B0EDB69</stationID>
+ <name>Childrens @ KOIL-AM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>1.18</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853800E11536BF340627E90BDEC4A3202BA3E2ADB197A4849D95DE3E54A93AC5EA7B0</stationID>
+ <name>News/Talk @ KODY-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538094CB859013B6F67AD41D47AFA6A1ABD0F870DA0DE38D4BBB2160F9730AA75DA0</stationID>
+ <name>News/Talk @ KKAR-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380FC672B95FB7B59660B29206CA06F6C5D405D5B250CF684446E243118863DEFBD</stationID>
+ <name>Sports/News @ KGFW-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853809EA0A23CD4887FEADF4C109B35FF6D9BC16EB8F5CC34697ED054A654BC44BECD</stationID>
+ <name>AC @ KCOW-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380331C293F78613368B34C7E86E18D177C3CB0A177AE2CA5D28DCA7AF8322262D1</stationID>
+ <name>Oldies @ KOOQ-AM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380298B290EA67629ACB9FCEFC84B84DBD2AD26A33934A2C5997C8D2E24DE86E11E</stationID>
+ <name>News/Talk @ KHLP-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853805FC7A67A04AFB0C1F11714C858246AD2C8142D9E030A4B8721B87D00CEB28D5C</stationID>
+ <name>AC @ KRGI-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853804CB7F03395BF286496693A42C60F29FBB906B94D9B1E8A93FC30647C262F8391</stationID>
+ <name>News/Talk @ KLMS-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>1.48</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380CB5D3A825F722E5E2DBEC0815E299DAF07B8C468834BAABE389931A9BA537DD6</stationID>
+ <name>News/Talk @ KOSR-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853803A817B43EEC462BA5D6A7E135258B464371781CD388BC4FC8F201E48683373FA</stationID>
+ <name>News/Talk @ KTTT-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>1.51</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380BCF3409D4E773FA75FA2FAD9EE56DF454CC9E4AF6A7A0F06AC41295FB515E92E</stationID>
+ <name>Religious @ KLNG-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>1.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380E1B1146898B30CFD55B5F0C0CAFA31972CD69578849033A4644B82902A9681A4</stationID>
+ <name>Sports/News @ KAMI-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380A2D647DA5C961C1191F4B36F9ADFD020596FE39FFD1C8D307DBCFB6E78A1A521</stationID>
+ <name>Country @ KTCH-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853807CE4F57E7D8EBE4D16476480485038EA9B8EF9FEB1532B76D4FBA2F098BD26F3</stationID>
+ <name>Sports/Talk @ KOZN-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>1.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Nebraska_fm.krp b/kradio3/presets/usa/Nebraska_fm.krp
new file mode 100644
index 0000000..b7c9406
--- /dev/null
+++ b/kradio3/presets/usa/Nebraska_fm.krp
@@ -0,0 +1,430 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Nebraska</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385377A3483A1F9E9F4E5DCE3D89AB871CD530E32698CF4A94CC5DBBF84DFEB6A6861B</stationID>
+ <name>Religious @ KLCV-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537721A758AF2FE265C94BFD57D5660F1D4802AB3991C9AF6112580F5A1CD791092C</stationID>
+ <name>Religious @ KVSS-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853771FB1A4900569FE5CAE949699E7741004BDD56A1362BCFD87884F4D729F52CE33</stationID>
+ <name>Alternative @ KIWR-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377295C0D1188CB5DA5621206D9EAF6E16D1C3E9EBC3CE02B675B10815BA148E390</stationID>
+ <name>Classical @ KVNO-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>90.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537770090459FFB11D9EEF40AFDE92260E2B2C513ADBE30AB1863610A54695E7CB97</stationID>
+ <name>Classical @ KIOS-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377F3A71F07CC1C0F4A250D765C45BD47EF5A80FBB129EF964B1CD09A9054645FE3</stationID>
+ <name>Alternative @ KWSC-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377FFD3B3E9069FEB95ED65C8DF5937F100DD49EE04A0C96B4D8DC4D6E1EBF4E43E</stationID>
+ <name>Rock @ KEZO-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853774FE05F2EB703D877392AFDF42CDFCDE3C3AB91BD8E35760BF7644BFC23B6CBCC</stationID>
+ <name>Country @ KUSO-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853778B1CFB3688E6AF2F548861793BE641F63BBFDB459B0CD1D5C39551ACB9DC81FC</stationID>
+ <name>Rock @ KMOR-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377CB813EBD9B784DB04B299FDAFECCC78C1E11B8CFFA0F5E75FEF0D94CDACA476C</stationID>
+ <name>Country @ KRVN-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853772342D617719AEAA772BF78E552B9BB38BE1E8BB9923F3593917FBF5BB307B609</stationID>
+ <name>Active Rock @ KRQC-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377D19C71D990DEE706ABE98BD35E75980B477D4B388973D63B66DFE1B58A97EB6A</stationID>
+ <name>Country @ KKOT-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377B5606DDF687518F40E8D5F0D0874CC0471998A41724B22957CED3FC9D9427A7C</stationID>
+ <name>Rhythmic CHR @ KMXM-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377F4B597043567244EA50EBB16B3AED32E26B015EB50A5F7C8741341AEEA23B663</stationID>
+ <name>AC @ KNEN-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853773562C6331548EE26413917FC6C22AE114F707DA72C9F7AC89AA501F214ED4E38</stationID>
+ <name>Classic Hits @ KRKR-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377651C69751492DE5E4F1570530CE079CCC670F1B2F746BD0D758306307F926591</stationID>
+ <name>Oldies @ KSDZ-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853774F318658C494B1C18C33464C3058DC17F42F45ED0F330443751417FAB6227E5A</stationID>
+ <name>Christian @ KROA-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377499A9C0C3602D3302E2F3F740BE3CD44C55758601DE5202BD8894261A5D3440A</stationID>
+ <name>AC @ KEFM-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853778D6F30566A0C398C997B651B5D298AC9B01A240F82701717D3F1C0EC190857DE</stationID>
+ <name>Country @ KZKX-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537775ED8DD23CFD21B9EA22D6E3C36E065577EAAA1996EA8DF99D69426253A4CF0C</stationID>
+ <name>AC @ KELN-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377C5C3CB5C333BC7716826853B0E323985762D34448B6ED17C90CA0E116EFC204B</stationID>
+ <name>Urban @ KBLR-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377B6AB4C14AD2BA8701C10876BD1A3A7FC42BD80DBC683332FC4CB927F5EF5A49D</stationID>
+ <name>Spanish @ KHLP-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853773D5FF359623141889C8ED380F435942EAB704B3B704E306EC1DD326CC0BF3BF9</stationID>
+ <name>Country @ KFGE-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377651A512F723093E46C435257F09454342D1A1FB00D73DB76C1C0CBDB2B549474</stationID>
+ <name>CHR @ KQKQ-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853775607E808F630242B3AFB70D0D361C373C7897C1EA1B468D219165B15DB75C690</stationID>
+ <name>Oldies @ KKPR-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377760FE9D431D25C515236E81B559FE3640CCED8E5980EDD3AB808E5DF3EB8E160</stationID>
+ <name>AC @ KOGA-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853779F85E1D698721BBE0005DB1D492F8FEF84337E9AEF95CEB6E1A14B2D84F90D67</stationID>
+ <name>Oldies @ KGOR-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377AA773A4D2364DA2D4E67EF996BD73D4585DD9229832BAC1A6A52B68E0315E5A0</stationID>
+ <name>Oldies @ KOAQ-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537795C27FF67A2A32951F2E5AAE1557E3473FE25CA32F40AD1FBA553FB157A46315</stationID>
+ <name>Country @ KZEN-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377C32E64BC2D653C42A053719E11E369C19973472C8794EA8960E60D5402D5BF45</stationID>
+ <name>Religious @ KGBI-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377340E5F90FC615D761E3A78A42A3EA99EC8970D06B2C906DE063AC49F9D6D2C17</stationID>
+ <name>AC @ KLIR-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377593F92E6D7937BFA74E9D93E4E0F41F8556849961E7CBFEB5442EDC8922000FD</stationID>
+ <name>Country @ KOLT-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853771788D81F47E5F85C3D7C39FCAFD333E5B3AEE084C63401CF52D86E15FE2DBE00</stationID>
+ <name>Classic Rock @ KROR-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377F90810634975EE612A7AFB839EF35B9D1D45CE47CC1A4F60DD944B0009C431E3</stationID>
+ <name>AC @ KLTQ-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377DA0F59994C6F83C66E4FBD8DF479C588D68FFE9AB0C294058C334B4A2759F2A6</stationID>
+ <name>CHR @ KPNY-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377F160FE3332D0E567F93E6DF91CF65EF15A9F4E5CAE24CAC2FE6E11D1C350318B</stationID>
+ <name>Country @ KRNY-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377FBC2E99DCC18CA1AA372B06338F7D74684BEFA5C5A802403CF6F50227D022E55</stationID>
+ <name>CHR @ KFRX-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377DF17366F387EB664754647399AF7199E0B51F2BFD9A45F44C39BFC7984D85910</stationID>
+ <name>Country @ KBRX-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377957384DF35ABCE60CCD6482948804C1299524F3826A237B2626692E46C734819</stationID>
+ <name>Country @ KXNP-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377F8477ACC182A0C69C96E1775D5C5F9FC6BFE98A7CAC88EF3A455DCF71592191C</stationID>
+ <name>Country @ KXKT-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537728F9C85294AA93138EEF622F53CDC6920D4BDA47EA267861AFDB68D13467C128</stationID>
+ <name>CHR @ KSLI-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377FCDF1FC5F843DCE6151098BB3AB3E09B9E93D06C32BE8B2CCBA3C6693C1EE022</stationID>
+ <name>Hot AC @ KSRZ-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377961A095E07FCF9A1AFA572968CC451CB4D4E95E1BD99E7877F9BCB32924DD208</stationID>
+ <name>Oldies @ KKUL-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377916C28120C2B99A421D5B32BF5B330903A577FA6665C7DA1764EC93A369D3E8D</stationID>
+ <name>CHR @ KFMT-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377ECCC2AC19A09EAA1AA82C46E20B263B0F01C66DBC1A15EB913937BF94C68AF77</stationID>
+ <name>Classic Rock @ KKCD-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853774B4A9F09602BB1BD7AE5AA2330B57E4F4BEB6891F9B9C0F12B73912870E3CD9B</stationID>
+ <name>Active Rock @ KIBZ-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377FCA10991ABC61ACF2A153B41C2BCBD6A1B41AF01F8F2D2357EEBC90FA408BDA5</stationID>
+ <name>Country @ KMCX-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853778EB06BC3F8590D655E4DFF150E80B93A747E435772BCC64881E646BFC0126E40</stationID>
+ <name>AC @ KEXL-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377D7B021FFBC70F984FF9F63C4735B5AB58B0BC93D1F244413A276D9EB9A4F902B</stationID>
+ <name>Modern AC @ KCTY-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853773CE93F4FC1B924A2D2689F7E7C97BF705B5190A73203D882CC98E4E345BB9825</stationID>
+ <name>Hot AC @ KBBK-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385377CA6782D50CD3CB208DF1B629C693FD94CA902A64C40A2A85223BEEABAD7ECE89</stationID>
+ <name>Hot AC @ KSYZ-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853771FAF83BDE9DD95B04A9D6681E7D5EFE377C1898CFB76D2A1F2BDB57C09171760</stationID>
+ <name>AC @ KWPN-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Nevada.krp b/kradio3/presets/usa/Nevada.krp
new file mode 100644
index 0000000..e52a2ce
--- /dev/null
+++ b/kradio3/presets/usa/Nevada.krp
@@ -0,0 +1,406 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Nevada</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385384B466A24285C28F652303BD2435943A17B841F027BA45159DEDC9C1093C9444D2</stationID>
+ <name>Rhythmic CHR @ KCEP-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538420A0A9D95888503DDDA34896BAC92F18BDDBCFA1C66272D65F81B7C89B9F207F</stationID>
+ <name>NPR @ KUNR-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853846545E74FB5BBBB2990E508BD66C1BE0E5B8107A245B4DBD678AD4805644454CD</stationID>
+ <name>Alternative @ KUNV-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853845BE23AB090E5B230FA5D52F47CBE49D102144D3EFE18D0EF988A4F2A3B704060</stationID>
+ <name>Jazz @ KJZS-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384C2AC5BEC8191328D10BFD9A5CC46A8C90EB2919B886EE3BDDA035759417BC167</stationID>
+ <name>Rock @ KOMP-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384998651E9FBAC0D8CB733194E401CD12B47DDC6DBA18C4F9B6C952116521741DF</stationID>
+ <name>Spanish AC @ KRRN-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384F6297B842C2F67BE3DA03766FD207F154DAC416C99DEE9736EC040BE308B5BF6</stationID>
+ <name>Classic Rock @ KNHK-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384F4C1C8208FAFA0F42AAC46E9E76A1228B5FB822EA5E49D6D9B6CD0019E594051</stationID>
+ <name>Oldies @ KQOL-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538473C40826F7EE8EAFAC3BD434C8F484243CA97E7FF9E877C932A28CDBCC63BA61</stationID>
+ <name>Rock @ KLKO-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384C3764AA58FC083628E4A737E57694B27F5FC1DB0AA4A7199D1A379767D51C186</stationID>
+ <name>Hot AC @ KMXB-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384BBA2F73E7EB1A0FEDA1C6C7BCA1B8E13B9C850BB961989615B1DEA3FF79C42DE</stationID>
+ <name>Country @ KHXR-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538484D6293B04EC5D21D188E5990B1033BAC95720F877F2747F5C201C6CF5604896</stationID>
+ <name>Country @ KRJC-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853844070513AD4911264093A1740DDCD53341147D8A0F4AF56483542325057A77554</stationID>
+ <name>Hot AC @ KNEV-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384C1955870E7385B0BE6BB9C14AC4FE0B4C27FBA33BD06B8A626334A33DA3D95DA</stationID>
+ <name>Classic Rock @ KKLZ-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538495900867A94C1B797BBB03B1D4F4485F8116A4E1DC3DB213F624D4F84634F8F3</stationID>
+ <name>Modern AC @ KLCA-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384675867A7E52171E540C3816D3EBDC84542C28DA107CE32BFC00F35693CB9ACB6</stationID>
+ <name>Classic Hits @ KXPT-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384B9C08AC3BB812D87FA53EB5F4706599D30AF314A1157B539CD37AEDB4E5875FB</stationID>
+ <name>Rhythmic CHR @ KWNZ-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538457238AE042028A73C4379041D9B50D459A1B4D115917D2D2059D6D1965AB618E</stationID>
+ <name>Urban AC @ KVEG-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384A0761A7796AD1F2F642DD9158701AC7A79639CBD9A0D5D32EB08B739DD8D8831</stationID>
+ <name>Country @ KBUL-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538454743F8713A0F99B98671BEF9CCF7F3A38FCFB2079C6987583D0AC28BB65E752</stationID>
+ <name>CHR @ KLUC-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384A183627AFFBC95E552266D5A488EC6BE6F77A6CCD2B3FE019FE64771201E92AE</stationID>
+ <name>Spanish AC @ KQMR-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538418C4A315CCBBBB66D5286A8E8B487D47A0B6B6EE2B23EFF20CEAC65BB7E130C9</stationID>
+ <name>AAA @ KTHX-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853845313DE41F5118092CC79E87D05FE4FB30106293A556EDA3C17E9E1C8982284A0</stationID>
+ <name>AC @ KMZQ-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853840DD99B25C8AA43E173A721C1A8C80548E064EE4D258D23E170EB7A504E0F074A</stationID>
+ <name>Alternative @ KRZQ-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538433BCE04C24615723930DCE199FBD397FE439736A774E8BA433BAB9FB82282648</stationID>
+ <name>CHR @ KRNG-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853844C53EE3824BD12B775E3C15123FF52949A44BD00E9D1DED6658D84D2A0311B5D</stationID>
+ <name>Spanish @ KRNV-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384954C73A8ADFF395AEE5BACE58BE93FC547A889E4044C073349D321A4E30D758E</stationID>
+ <name>Urban @ KWID-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384909CF1273EE253E0F9BFD8972BCBD1B1F8485AFCF3C2F7F0CC40AEFDFB7F226A</stationID>
+ <name>Eighties @ KSTJ-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853849957A9A4B4A04C0397EBBE0A6DA6358C0C46C2BDC441AE07999C52E75FFB3038</stationID>
+ <name>Spanish @ KISF-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538439C8B0D9D56400E9DA189CB21ACD1D851FAC004BA761924C3483AC61E342623F</stationID>
+ <name>Nostalgia @ KJUL-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853845E5638E1B23945A8530921D7AD8E2F1143D4B19791F42951203A10A7287881CC</stationID>
+ <name>Rock @ KDOT-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538426A32506F2B0E0B0D61FFCFC39E50DD1660695A422C637C5E5E3B0351F5FFAFF</stationID>
+ <name>Classic Rock @ KOZZ-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384416D09818C6CA01657665D802A59FBCCCD1E66A258B895D6134461BBADBC99BD</stationID>
+ <name>AC @ KSNE-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384B497B130BA88E52C3F16E8D0631FDF5D4D88EDA8321CA5D4331E7AD599429D49</stationID>
+ <name>Alternative @ KXTE-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384AB0523DECD9FCD134CD494CF293CA984AF4F5557D0FCCA3870929531A1D10131</stationID>
+ <name>Sports @ KPTT-AM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>0.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384205D88BC65EE65467BBA1F271163D882D0F14B760BB1120A74D5F02DF95C9859</stationID>
+ <name>Sports/News @ KDWN-AM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>0.72</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853848F2BB792D4617B38BBA9B6DDC2C4773CF96E5453F7B60E2D58E1D0819A1AC774</stationID>
+ <name>News/Talk @ KKOH-AM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>0.78</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384A2503EACE633073D2A53EA7B75CAB717E2D3A26E7F487E4F27F614A5844819EB</stationID>
+ <name>Talk @ KXNT-AM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>0.84</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538409BD11ECE1B6CFFFCE93A3DFBBB2C22307812D6BBD5386D8F91944C460466D34</stationID>
+ <name>Nostalgia @ KLSQ-AM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>0.87</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853845AA2C8CBFAEC28103CE790D1F05910F7DED8EA7A78D8C8436946FA6F089595C4</stationID>
+ <name>Christian @ KIHM-AM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853841F741410FE996B7153D7582E61AB90CDEBA699D0ED4004BCE1C135C76D745122</stationID>
+ <name>News/Talk @ KNUU-AM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538445D25BF624F9E80A0CC0220EF571E3D9EC4B85982AA86EF96485B684EC893D31</stationID>
+ <name>Religious @ KKVV-AM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>1.06</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538455EF66A8C37D50DD1CF4592B2FA59098CEAC007E72929C0B4F26DF5BE5766FA2</stationID>
+ <name>News/Talk @ KLAV-AM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384E495EC603F0F7628E6F1AE88B54DED15C048198B0CC243B5BE21D72E7AFFEF34</stationID>
+ <name>Oldies @ KELK-AM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384AD7DDE8C968E18ACA3CC51A1ADA1D9D92E603B0C224CCA8A69BBF7FEA09CFA8C</stationID>
+ <name>Spanish @ KDOX-AM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853840DAC2116F0BC547FE76049F0852C76EF0B4AEC4C75897CEE23703524C53D8750</stationID>
+ <name>News/Talk @ KTOX-AM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384BE74B49751AA0DCE3F3004D99FA738B8283D42146356D6C91298DCA4712B8728</stationID>
+ <name>News/Talk @ KSHP-AM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384A26B97E530DB02CAC7CFDC285FA80B1ECA747599CE61C7D407742E88D1B4084B</stationID>
+ <name>Sports @ KENO-AM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538443C7D51E02686203C261F2737BB9581CDCCE075085922B2C935C611E12DA0467</stationID>
+ <name>CHR @ KQLO-AM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Nevada_am.krp b/kradio3/presets/usa/Nevada_am.krp
new file mode 100644
index 0000000..bd6913b
--- /dev/null
+++ b/kradio3/presets/usa/Nevada_am.krp
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Nevada</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853830AD90A6839BB31A6F21A95F528D53A18492D39C68A08F39DAC5C720CD1A9FCF3</stationID>
+ <name>Sports @ KPTT-AM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>0.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383D0BA21993141D4AF2EDB7B2EC36AB6DA05A31766B654298E7EFFBF17CDC34368</stationID>
+ <name>Sports/News @ KDWN-AM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>0.72</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383235ED11B21F93499CC6E9C51E2B1028D3100A367E40C19D50D770CC99D10B468</stationID>
+ <name>News/Talk @ KKOH-AM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>0.78</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853831340005911AF774B331806DEBB7062DCA79CE103663A4AE2C03A8BA785F488B1</stationID>
+ <name>Talk @ KXNT-AM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>0.84</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383C6A463A53A6E053F769487A9C43A8424D98EE2987D9266A40AFD97B864A12E79</stationID>
+ <name>Nostalgia @ KLSQ-AM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>0.87</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383E1001E0686FCC03FC67E9686ADBCDBEE2CF6E1BB35F412ECBBA9BAD5C8F0B2F4</stationID>
+ <name>Christian @ KIHM-AM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383E3E47CAC01F1D261624A970B2D246944F6E0DB20134DE9D74215DC110BB6DEE3</stationID>
+ <name>News/Talk @ KNUU-AM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383AA204D689D0FB032647F2734A1EA8B023CD89C2BC08A8423FC0DF7E497BB399C</stationID>
+ <name>Religious @ KKVV-AM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>1.06</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853839B8576DD8A56929FDE27749FB96342A29F969F34EF2A0F06BECB79918AB419D6</stationID>
+ <name>News/Talk @ KLAV-AM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383ACE71C86BF12A55AF01D20CE2277C3F1686098A3C91142B445974DA0168DD33F</stationID>
+ <name>Oldies @ KELK-AM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853833EDE2B6ACEB350D1057390459E0ADF324589C9FE44F0F41EEDEF669197D7214F</stationID>
+ <name>Spanish @ KDOX-AM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383AF3B4D459E2D72DB9B4E406C2D864ADBCBB9A2272FCEC1A203851BC45665AAEF</stationID>
+ <name>News/Talk @ KTOX-AM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383ECFA714E8CEBB9000A6B3C25E727C088312A6420A138E068A20B6CCD2F158518</stationID>
+ <name>News/Talk @ KSHP-AM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383A1E1965247C2EF2333BF4B2CC34C77DAEE66731F06ABC51FB25E8A06858E40E5</stationID>
+ <name>Sports @ KENO-AM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853831E5B43BD7C32F36A90699BFD62D24E1D5D0559723F4430E5CB4FCFE6E8E164F1</stationID>
+ <name>CHR @ KQLO-AM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Nevada_fm.krp b/kradio3/presets/usa/Nevada_fm.krp
new file mode 100644
index 0000000..7c10a66
--- /dev/null
+++ b/kradio3/presets/usa/Nevada_fm.krp
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Nevada</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385383C3F5345F9A3D5F798C1EB9A892BBCF3039416DBA42F970016A382A833463EF3C</stationID>
+ <name>Rhythmic CHR @ KCEP-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853835F2B9F0DEDB808A0AAEF85DF03FC1132F45CF412CE0872D81748AE92EF3EF8E3</stationID>
+ <name>NPR @ KUNR-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383A9C84359B734E8B7CDB662E1E39283836BB524776B3A5762D8D2CEC76A35F031</stationID>
+ <name>Alternative @ KUNV-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853834DD62A32C92C83FB83ED3DF4665B498E94E560312B05A7146953B90DD21D4A65</stationID>
+ <name>Jazz @ KJZS-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853833DFD87EFF5E43DC37363B11BD7DE30DE0A5C0A57D41967DEA8744434AB99F025</stationID>
+ <name>Rock @ KOMP-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383CA179B27F4EC5CCB62E47A0C1B57E19BF877292434430D63D76B609C18BADF66</stationID>
+ <name>Spanish AC @ KRRN-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853832C4A8EAFFFD50FC00F6096675D33EB30A3500E7727D654307C8A13908FA88D13</stationID>
+ <name>Classic Rock @ KNHK-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383E2715C993DBBF58FA34606CF9D38B951BD9FB4700C89CBC9C3D8CB539426446B</stationID>
+ <name>Oldies @ KQOL-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538337CC76B913E3A8670E0054AE18E599DF4D1DE620168A97D8C6AE70E07D1AAF34</stationID>
+ <name>Rock @ KLKO-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383488D115DB4F020DB8D7C687B91BBF707C9410DFE43C616E49AE804B76FEFAD42</stationID>
+ <name>Hot AC @ KMXB-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383EB152AFB7572A8DC09E3FA331DF94F8223068344989BB9976D63C4B532526E19</stationID>
+ <name>Country @ KHXR-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853833733D5F16711F1839B66693C7BA3AC64208E00ECDB27B8614ADCF4BBB306F50D</stationID>
+ <name>Country @ KRJC-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383F3985FDD881C9222604ECD5D074840BCED725A1D45D3B9CABE2A7DC7FA0CB161</stationID>
+ <name>Hot AC @ KNEV-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383CDC462567C5844E9F456B92F379A7DEEEA9EE21A1D358DBB1E0CE1D23BADE14D</stationID>
+ <name>Classic Rock @ KKLZ-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383F4700DEAA626391D01D13D77E498A741A6CDCB208511B13AC4999DC9C875501A</stationID>
+ <name>Modern AC @ KLCA-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383C25C4EE5CD9E74D2D94809BD2A6A8C38A46D73066EAF5A7E25307F40D463D57B</stationID>
+ <name>Classic Hits @ KXPT-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383A0EDE30492E9F3FC0F985EE07FD81174B736D3A431C5D35F95A3DAA65E3F7E96</stationID>
+ <name>Rhythmic CHR @ KWNZ-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383897929161B06DDFD783FA52F26E99593B09972DB1052B365BC20A10DC8525B0C</stationID>
+ <name>Urban AC @ KVEG-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383CF9BD4198D1247CC484F354AE8A4B95EED6522A8F17C5243C25CDAC97C4302EF</stationID>
+ <name>Country @ KBUL-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383965F181D5BB9DEF93D8637305F64A9720D196700DF443F65B100F310B053A06F</stationID>
+ <name>CHR @ KLUC-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853833517B6E290F78F55C6123531B6DB5C2350DC4E838BBD2B5C382D42CA6377E171</stationID>
+ <name>Spanish AC @ KQMR-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383124BE23D02CF059E34460B7EB5F58C15958A5FA8AD9A560259E8C66F2B99FE21</stationID>
+ <name>AAA @ KTHX-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538373D123E6D8804C570E952007FD10952076EE4FCCD7C09021608E492335650444</stationID>
+ <name>AC @ KMZQ-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383004BCD1632C17480302E91B040F81CAA004603C98B3DE77EC02CE39696381AC7</stationID>
+ <name>Alternative @ KRZQ-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383D4304394860BB18E447203F704F459A714C2DF4CF36C8DA5DF1BC1163E9C61C2</stationID>
+ <name>CHR @ KRNG-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383DD9631F759ED317D79C7B753C5A1F33D71C0FC06B835B64AD64F4461A3750427</stationID>
+ <name>Spanish @ KRNV-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383B0AA64A912223BE9CCDEAC3A5E048FC3443000BA409B84CA978A65EC54A3A008</stationID>
+ <name>Urban @ KWID-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383B880790118CB9EEB36D61B6C6426FCA20FB17CC830053AEE752FDA97F4BDF74F</stationID>
+ <name>Eighties @ KSTJ-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538353933C2513F5D31458FAEAA46C8A6E855A176814CA4584A900448F008B32AD5D</stationID>
+ <name>Spanish @ KISF-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383BF963F593DF24CEB19FB651B10B6857AB7AC59429F72578D0B00708D9989D73B</stationID>
+ <name>Nostalgia @ KJUL-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853832A33045160B5E1AE5A6CD19A5B99FD90033E744A8D60BA91E3AB088C3A832AB5</stationID>
+ <name>Rock @ KDOT-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383C7C42AFB9D9FCE7B1D46C574EEDF649F4076D901A553DA8E425902B73F113C70</stationID>
+ <name>Classic Rock @ KOZZ-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385383728C8F3F6A0F0BB3CEA71536ED55108A35E90A3E8710996371B6A6CA8615E35B</stationID>
+ <name>AC @ KSNE-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853837BF5ECD85585A52F099759CFD52E9EF2AE460AE8A2761A0EC132BF2DCAF7D578</stationID>
+ <name>Alternative @ KXTE-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/New Brunswick.krp b/kradio3/presets/usa/New Brunswick.krp
new file mode 100644
index 0000000..435ac6f
--- /dev/null
+++ b/kradio3/presets/usa/New Brunswick.krp
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>New Brunswick</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385376727BBC1B83D1C2F21F016FA3C6FE07FF94C5943890D6204C290509F65F6F0106</stationID>
+ <name>Pop/Alt @ CKUM-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376925157412BAB49F3429F192B5B21AB1143E5E47CEF2AB3AD13FA2060D36B0816</stationID>
+ <name>CHR @ CHSR-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537685E1131CEC97874856FC0B0C909388AD46A2E1BCB6A030DAB5B599F000DA370A</stationID>
+ <name>Rock @ CJMO-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376F66B38C11B08AD05960B95CA93F34DBF9F296F090FB64E493B961D9F7870E86D</stationID>
+ <name>Country @ CFQM-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376BD5CE49E5E3B5B55B5BACD887351669D2E469BC93AA63A6C900638D0E40D69A8</stationID>
+ <name>Alternative @ CHMA-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537661A9F1D1C79A49DA630E16FBB7B98E764266736BEE7B3E8EA404537E60E6C747</stationID>
+ <name>Country @ CKCW-AM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>1.22</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/New Brunswick_am.krp b/kradio3/presets/usa/New Brunswick_am.krp
new file mode 100644
index 0000000..ceb2a86
--- /dev/null
+++ b/kradio3/presets/usa/New Brunswick_am.krp
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>New Brunswick</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385355CF17CC34E34861B4F07366466A551EFDCD3C87604508C1C731313F6A1D69874C</stationID>
+ <name>Country @ CKCW-AM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>1.22</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/New Brunswick_fm.krp b/kradio3/presets/usa/New Brunswick_fm.krp
new file mode 100644
index 0000000..0c2df19
--- /dev/null
+++ b/kradio3/presets/usa/New Brunswick_fm.krp
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>New Brunswick</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338537563FF343F7028276A4D0BFF553004AAF1257E6C11F66596198596FDFE45456169</stationID>
+ <name>Pop/Alt @ CKUM-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375B1927CA7E6D2FD84C8C6FDD9B726EF1EF99751E38B86269C516642CE4B375A34</stationID>
+ <name>CHR @ CHSR-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853752D3E8314F46B5E97EA4E77C8FF16C17EDDDBF8D32F0D52DBE7B354746497682D</stationID>
+ <name>Rock @ CJMO-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385375B19B7BE82B799670C8A81C520BBFA43073BE523360FEDCD3C77EFB1A3E5DEAA3</stationID>
+ <name>Country @ CFQM-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853757DD605858EE796661C1F97538865E8065BF849CA2F8440D084118B0B434F3A1E</stationID>
+ <name>Alternative @ CHMA-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/New Hampshire.krp b/kradio3/presets/usa/New Hampshire.krp
new file mode 100644
index 0000000..c6fa64a
--- /dev/null
+++ b/kradio3/presets/usa/New Hampshire.krp
@@ -0,0 +1,302 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>New Hampshire</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853818FEFB92B2074F63D5E33F651E73054F917A0ADD405CB9CD1F797A148EFECD740</stationID>
+ <name>News/Talk @ WEVO-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>89.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853812965616C36D7F24F4822B677EA85253447D5C2788733D896611F91C4AC9C16DB</stationID>
+ <name>Alternative @ WUNH-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853817F22E76F04513B4F5F1A44FB904E53960940861671A58179A349052A0FD83C8B</stationID>
+ <name>AC @ WGXL-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853818D5A74D93243C6EC32BC0BAABD9E305091C29E0D8A52798F9FB6C911BCEAAB19</stationID>
+ <name>Classic Rock @ WNHI-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853814A7604900B2748725099375A96EED20E5E5F3F06D375094BCE812B553A175237</stationID>
+ <name>Country @ WCFR-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853816468CA7069DBE6A7C156B2B847C3F3C20F367423F8A90DA74F96B3239AB563D2</stationID>
+ <name>AC @ WZID-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381C64A5D1C30C90E29F29AECBF4DD439039125DB1C70F42FE5210DF55C791DA149</stationID>
+ <name>Country @ WOKQ-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381268D55987F01E9B8D6A40BA33434DDCD6DB3F2E9C71B80243D28B98516DFEE38</stationID>
+ <name>AC @ WLNH-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853814C82ED3A8FBD6A7C6EF390CCAF1BE093512141751BFDF2164C7DFE28A3241BB7</stationID>
+ <name>AC @ WBYY-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381DEEB7FDA569CB651D29E77931A53A62EBBBB31CCF68C91A158BBEA435D52ED5C</stationID>
+ <name>Oldies @ WNNH-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381E2C0A87C3AC980CA4CB4B0737D0D8BFE723198B323F9A068A86567E15E9AC44F</stationID>
+ <name>Classic Rock @ WFRD-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381532F7F29D8B995DDF705362DF0E8FDC4DB92FEA15E26CCFCBC79DCB6AAF7A911</stationID>
+ <name>News/Talk @ WNTK-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853816C7BD5E365DAE4B23835757271A610A0290BCE8EA81091D793995F29A6D086A2</stationID>
+ <name>Rock @ WHEB-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381F5ABA9DB80099CF845654EAFB9B1C42B59F45230D737A80F1EBA6E35DC7498A3</stationID>
+ <name>Country @ WXXK-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381670BE61ED390C9E4C449E3EFE06696D8055F7185EC0E9F8C6D8C8DA2EB9C4BE7</stationID>
+ <name>Rock @ WGIR-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853815299AD29A4A4391CA8133524928876AA21D32E8F264F7DD9BD0E2E8B7F487DAD</stationID>
+ <name>Classic Rock @ WBHG-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381ED547FCC24B2E143DC0D48304D754F69FE547885693A257A5E6A330F4C3F9E6F</stationID>
+ <name>Classic Rock @ WVRR-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538166877C9578CC74D348CE044EBEF64A5BDCD891A5915A405393EC3425744146AB</stationID>
+ <name>Classic Rock @ WSAK-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381B0B36EC95A1666870A4180B6C1A80B3A22701AE6007D83332CAA4FE2755E4F68</stationID>
+ <name>CHR @ WKNE-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853818FEE6801785DAFFE5764D98B62EA3A450CF74B4DA29AD1FED76FDA34B2D0BB4A</stationID>
+ <name>Country @ WYRY-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853819D35974E9ABF231BA366B9262221E7B9EFC9B8CBC1EFDD0C2953425265401E1C</stationID>
+ <name>Classic Rock @ WSHK-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853816C83CBE5B72C8A85A7A8C605AC0428F815DAF340231A9BAF5BE2155A9563DB22</stationID>
+ <name>CHR @ WJYY-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853817DC600A08BBE63083411794B1939823AA4655DE355AC1B35482B8A2FFA9C0EF4</stationID>
+ <name>Classic Rock @ WHDQ-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381D3E82BF6757855AC1D288FB115560B68B9D3337F676D86AB2E08B0A9A8E00CD1</stationID>
+ <name>Hot AC @ WHOB-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381264741E698F1B8F7C953239F75F68A51CE0FB8FCF7C7A53B8671B6F014332F09</stationID>
+ <name>CHR @ WERZ-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853812524761CAFD40FB3C1B958DE78F7EC65EBBBC2F5AA9DA46AF89152AD4964D24B</stationID>
+ <name>Sports/News @ WGIR-AM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853813406F0825DB06E88655375282EA982EE90D4EF770F9AF9F509888220E3A4F5C7</stationID>
+ <name>News/Talk @ WOTW-AM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>0.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381F248E441A995165F83BF90C5C3FB320148392534AD76E39F82F34776DFA70F65</stationID>
+ <name>Americana @ WNTK-AM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>1.02</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381D9DDDCD22151EEF67643EBA4C7D13185E2ECD1AFE70447FD3790EE9B29D1F35B</stationID>
+ <name>Oldies @ WKBK-AM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>1.22</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381AF824B829E012BBC4551C02875F6D6907CCDCDA32304DF639368C409F03C5C70</stationID>
+ <name>News/Talk @ WTSN-AM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853811E5C4ED795B1F1794C9878F2EF5F89539C896E5B66DCF36BFDFA4BF35270A861</stationID>
+ <name>News/Talk @ WKNE-AM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381FD51814EB162387281C49284B5024FD4561A1B58218F83C081DDABC351FA1105</stationID>
+ <name>Christian @ WDER-AM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538145EF81D1A6C922D8706E1DC7891E4918B7BCE5D14D36B5DB69E81AFE59644CC4</stationID>
+ <name>Religious @ WWNH-AM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853812277BEB8A36985E90F257B0FF0971ECA8EEAAAB7AAD928F277B5592318CB0C31</stationID>
+ <name>Sports/News @ WTSL-AM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381457EF5DB17A82A0868F186734A3828F28F109F6A631C7FC33FD6A340E76F0ABF</stationID>
+ <name>Sports/News @ WKXL-AM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381E2BC9AFD0D3E44F3637757B9C87CCD59295371B8BCB8DB09F355C96D31DD54DE</stationID>
+ <name>News/Talk @ WSMN-AM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/New Hampshire_am.krp b/kradio3/presets/usa/New Hampshire_am.krp
new file mode 100644
index 0000000..e15b04c
--- /dev/null
+++ b/kradio3/presets/usa/New Hampshire_am.krp
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>New Hampshire</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853814E0C443EA89230747B2FBE60080A54F42D1294164E20D84BDF0F1187F3510AAC</stationID>
+ <name>Sports/News @ WGIR-AM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381F81244A604FCB1209ED17F4B0EB90488A7782F103C6636952DAE03F1CD56E7B8</stationID>
+ <name>News/Talk @ WOTW-AM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>0.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538167A28B92A2C6978D527AE03F2291D2AE5D8BD33396037F037CAFA557DD8612A0</stationID>
+ <name>Americana @ WNTK-AM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>1.02</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381944F6449FA0CFE74391F77E57A8BF2574A33F4114154F6C4A0EB5667AA9B5A93</stationID>
+ <name>Oldies @ WKBK-AM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>1.22</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853813BA36A7201663DEA582873AB10CDEA656DF3F99D05C0BE08472C1E93FC2922CE</stationID>
+ <name>News/Talk @ WTSN-AM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853819BB43F1BCB672CFDD56B3695DDCEAA5472B1E9B12FC426C485CDB8EBE0765056</stationID>
+ <name>News/Talk @ WKNE-AM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853810B045E150A093FDB5588CF412B2496C1E1439EA8C50740E78C9BC27FA0771D20</stationID>
+ <name>Christian @ WDER-AM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381FE105999868549E1B108D4A4CCCC05C0042B9C5EE84301867736AAC944237D30</stationID>
+ <name>Religious @ WWNH-AM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538127B7B60A907BF1E91A11D06DDD397B4A9BE3BF31829B161F2CE3947F70B1DE37</stationID>
+ <name>Sports/News @ WTSL-AM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381E74BF1D18ADB76FC83F1DBD52039EF1D97D8B8DF73EAB4AE46E4FC46A755D350</stationID>
+ <name>Sports/News @ WKXL-AM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853812A7043E8070E02EB83069943B27E8E14B46AA32F2E9F8CA519781A163547B7E7</stationID>
+ <name>News/Talk @ WSMN-AM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/New Hampshire_fm.krp b/kradio3/presets/usa/New Hampshire_fm.krp
new file mode 100644
index 0000000..2d0f566
--- /dev/null
+++ b/kradio3/presets/usa/New Hampshire_fm.krp
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>New Hampshire</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385380E1040A870FC4E777C40BE1E9F8D6F2ED0AE7252EE524E9CE988EDDDFF82E1C40</stationID>
+ <name>News/Talk @ WEVO-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>89.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538018D9615D100298AE22E228195ECA302E41AA4CBF2B9F2F3A66C5BD3CAB9C3742</stationID>
+ <name>Alternative @ WUNH-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380C3EFD97EB6B53E63DB22B65BDA4DDA46DB54A9C9B1AEDC3B0AC52976089B9620</stationID>
+ <name>AC @ WGXL-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380F20A86EC9FBCE4547C09DF6E0163CEABF23DE83F32B823510329B700CDC94B10</stationID>
+ <name>Classic Rock @ WNHI-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538066D3EDD8F8BB0946FBC66735FCF272867766E423D42D371BBDA8ACDE4AD20C4E</stationID>
+ <name>Country @ WCFR-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380918DEF795BA8F9A35BE657E3D7A0AF295E2021DD6C1081514875F28A86C44BC8</stationID>
+ <name>AC @ WZID-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853804BD45D7A81E3C5435491BD0A165990A389A9E548593781C1B534A8EF98DD78C9</stationID>
+ <name>Country @ WOKQ-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853800D5D657DCC8EB7427577CDFC04299772B1517D5C26FD70C25E9E0E13F3178E29</stationID>
+ <name>AC @ WLNH-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853807478627EE5E61AC1B3B8AF83FFAB8F1E768DF506BE6F6697C2EEAC94658AFF77</stationID>
+ <name>AC @ WBYY-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853802299A4935EB739E3C7B234C1BC9F49EEEDC0A2BEFD65D4CBF562727309652C84</stationID>
+ <name>Oldies @ WNNH-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853800CC72780B637B0D604CC5D1E26A7B8F61B1117462F80CEC571CA4566C847CB02</stationID>
+ <name>Classic Rock @ WFRD-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380D6CC8973E8D471850D4831955F847505368A0FC9D0396EED4FDB0034BDBB1499</stationID>
+ <name>News/Talk @ WNTK-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538069909FA03E6CB6DED404F845E1EBA3B9B43DDD442EAD63CD1A9178C2457FB8F1</stationID>
+ <name>Rock @ WHEB-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380E1A00CC9E14BF9862158DACA6ADD4D7756F0522A307F5B9EC4604EB1F0D9E2DA</stationID>
+ <name>Country @ WXXK-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538022599DBA11DE4DA041F243B36FBD825C63201E5718CC9BBD51C1A575ABAC30F0</stationID>
+ <name>Rock @ WGIR-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380FB8BAA72155E50E12C74F752CE03C73950C0048297C121B78073F35D1D7F26F2</stationID>
+ <name>Classic Rock @ WBHG-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853800AFF5B51073661D7E11B0D0724CF86439E9C897F6FA1C53C3C854B367ECAC1E2</stationID>
+ <name>Classic Rock @ WVRR-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853803FF171B077FD297B0F30246C61FE73313B7B7C4600CD7571187A64A8FC700EBD</stationID>
+ <name>Classic Rock @ WSAK-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538041BD6002EDF87B935C44F6A98E5A9F972FC92C9906BB3E2C2AB60B2449A28BC0</stationID>
+ <name>CHR @ WKNE-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380BE81C3AD6DF40FF6D76FD70F31BD7CE3769D24F7007E2C756EBAF0EC7317DDC0</stationID>
+ <name>Country @ WYRY-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380977AB5B22EAA6FD9D43C87022B555BC51C5883B5D9C97E16DE1D95DF050CE8B9</stationID>
+ <name>Classic Rock @ WSHK-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853806891B37EACFD0F7E3C0C079869EBB7360DDC6CF84A766ABA5F8C04F457E1E133</stationID>
+ <name>CHR @ WJYY-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853808B525D3C4575BA8647FC82540A514AF636C89117F0AAC0C563ACA0F4CA9FD18C</stationID>
+ <name>Classic Rock @ WHDQ-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380C00B25E9F9268E48B332890FCE945EAF78B166FC52ADC702092C5B397DB00EBB</stationID>
+ <name>Hot AC @ WHOB-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380B66B9189AF8A76637BC15E52FC4762886EBC9135F7C18293FF3551A4C74E30F4</stationID>
+ <name>CHR @ WERZ-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/New Jersey.krp b/kradio3/presets/usa/New Jersey.krp
new file mode 100644
index 0000000..a10f5cb
--- /dev/null
+++ b/kradio3/presets/usa/New Jersey.krp
@@ -0,0 +1,334 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>New Jersey</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853824000F1D354728D95F1583B5D3CA320EB2153E70D887E418199746B510F5B6726</stationID>
+ <name>Rock @ WSOU-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>89.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538252C0D93ABFE8720F8B22EC547580EB196F615C229509FADDF96DCF1F008E45FD</stationID>
+ <name>Rock @ WKNJ-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>90.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382563F9A1D631132115992538CFBFDF24CFE63BAEC119137658E8F61A0AB2BEF42</stationID>
+ <name>Alternative @ WFMU-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853829CF381718FBDDB42169159CF9E4B0D0868A54C4E20655E2A4FB3500A488BBF15</stationID>
+ <name>Alternative @ WTSR-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538235EEAD75EBE34CB9AE4A5D12F446743935345AF9E7BBB965B2A2E917DA5B5524</stationID>
+ <name>Oldies @ WVLT-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382693131A8100E6C8A1A4E02389C17BF9E3588727E46E0D8C46F088D0F9E89CAB1</stationID>
+ <name>AC @ WOBM-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382A613F26DC8785B1828D3599F19CEDDB27A2709CC887D7DC42B04A74E29001C6B</stationID>
+ <name>Spanish AC @ WPAT-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382F0B25B95CB09585C01074B2652D1DE17E5CC84793ECF2DEA9A92532D6C15610A</stationID>
+ <name>Hot AC @ WJLK-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382DE027A71CC4A6B58A825819D65596D8F22AB5FA4E4F5EB550151655E02F1F6AF</stationID>
+ <name>Classic Hits @ WTHK-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382EF3FDB8C27C6F0C850E3E73B36D6D2AF3206D16329C3EFE1386DFD4DF3824F99</stationID>
+ <name>CHR @ WAYV-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853825C71442D8B1AC9C1EA033D456744F3ECD3F65EFB51293A063D349D5F7AB89610</stationID>
+ <name>Rock @ WRAT-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382E3ED7AA391B123C798A579381D78D3EEE1E7130A39F831D3C54BE2666D991698</stationID>
+ <name>Soft AC @ WFPG-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382D7D6D02E83655A768181F8A79D215C69F117F576C048804231619E6B8371037E</stationID>
+ <name>Hot AC @ WIXM-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382EBF6EE7863529F2D88DCC5A39E29AF1D42CD003C8439F2E5D4A3ABCDB8D00451</stationID>
+ <name>CHR @ WPST-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538257D3E055F5F5BA3636FD507B5590B324C2D0DEA02A9B7BB727B2FC8A34EF6E2D</stationID>
+ <name>CHR @ WBBO-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382D7D6D616E11A76FD2484C0E6F47B76D3D2D7E60FBBB62F89098E0146BCA1DA8A</stationID>
+ <name>AC @ WCZT-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382C55E9E868BF562D2DA776E6B1B3330921C250A3D9370CCAFBAEC73D09977EB2D</stationID>
+ <name>AC @ WBHX-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853820A28DF65A74BA817AF13BC2ECA7478101815FECD6D50B796511CD311A862DB96</stationID>
+ <name>Oldies @ WJRZ-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853823E4286AA2351303337D8500CE36B241D3A21638B3E7A3348327C99646F34354C</stationID>
+ <name>Rock @ WZXL-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538296177EFE63F97DFACF2E834881D49C7610EA866F1ACEE372E44BA152C36B81AA</stationID>
+ <name>Talk @ WKXW-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853828E4A6E703DE9ABB57905A229826D61BEF222634FD3D177B5366F5B2E16DD5C62</stationID>
+ <name>AC @ WSUS-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538268AD4CF1FA9306BE33D57A521C41AD950B2170AE8058584331DA8BAE95265D02</stationID>
+ <name>Alternative @ WJSE-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853829E056270789FB1F043422AD21594EF4AC809F4F4835A5634BFE668953850C7A0</stationID>
+ <name>Misc @ WPRB-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382BC1F28BB1928B50F37244C6E0B69FB5EF57C3E3588D0B0E06904341EF6C479BF</stationID>
+ <name>Classic Hits @ WNNJ-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382517E696372A61C1C3097F9B38DAB18CD627B26D752F026EA508BEDA16D6401F4</stationID>
+ <name>Rock @ WDHA-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382B0D835E0659BF7FD94FB9E613F560B87607EE92EBAEED35038B31A7E4EB3DE8A</stationID>
+ <name>Classic Rock @ WCHR-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382EC5D3CFFC5E37B7FC57BF4DC94074D84CD008C3CD00A0692C237574B1DBD1CF0</stationID>
+ <name>CHR @ WHCY-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853827E066D09BC5C528B285A2AAC1649A6BCD408A3C6B2F95C5FB40300677A95520E</stationID>
+ <name>Alternative @ WDOX-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382289EFA1278F66CA7AE4767B91DF8E5D005FC473C3A033B450D6C184B9699FEA3</stationID>
+ <name>Country @ WPUR-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382D72F52BC2593BAFBBA9E749D5DE8CD355E8F33F28F771A777896135910C56EDC</stationID>
+ <name>Sports @ WPHY-AM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538217D4116ECB507506900144E789CE50FF5373AB26FABF5C3F74B2B5822DE9DB60</stationID>
+ <name>Urban @ WIMG-AM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538245FEACBA9893F06DD5244565211901489859FA365901D92A23B9B76CC9A4E563</stationID>
+ <name>Country @ WADB-AM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853827B6FC3CBC9B0D1CEEFE90ADA429347A407512BC0C253229F55340680A87CB02D</stationID>
+ <name>Religious @ WNJC-AM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382E4D74A1F4CA62A40BD4C778D347D6ED2AF9FCF6822B53173B8897C9AFB3A8F45</stationID>
+ <name>News/Talk @ WOND-AM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538245DCE06AAA57AEAE042943CC38C728C2386C8C3E79EFF06123CA67829EFA2DA8</stationID>
+ <name>Oldies @ WHTG-AM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853823D68150BE90C66E0EA870532BA084540447D36E24E050F3A8EC83D3B76D90EB4</stationID>
+ <name>AC @ WMVB-AM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382AB3DF2257B97D660F86F6C4B46ACC656491BB26F1681A88BD2AD1B4322242DD5</stationID>
+ <name>News/Talk @ WKXW-AM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382B660B6704428B4FC1ED6280AD34B6FDE2A32E181B72DF2F8C286D4E3301CB2BD</stationID>
+ <name>Oldies @ WGHT-AM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>1.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382E69F31C1F0E1F84EBA651BCD803410F3AC012E9AFECFF27BDF758ECCA6029409</stationID>
+ <name>Spanish @ WWRU-AM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>1.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382D7A57EFFAA974DB62CF3AF3B746AE79BFC9248F3FE9D92B59FA1A2D880AA388F</stationID>
+ <name>News/Talk @ WTTM-AM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>1.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/New Jersey_am.krp b/kradio3/presets/usa/New Jersey_am.krp
new file mode 100644
index 0000000..fefebf4
--- /dev/null
+++ b/kradio3/presets/usa/New Jersey_am.krp
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>New Jersey</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385381FE90D676DFE56E57BB00E32FD6586831BED8EB2ED43A985362081201A65EC983</stationID>
+ <name>Sports @ WPHY-AM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381C54750C83340909E04D3A6F5A599483DAA0BD1B1CF548C713A1F8301B386EB5D</stationID>
+ <name>Urban @ WIMG-AM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381AA7C917ECE49C9DEB397BE8B353EF9A2B7FEB627538031375556C57F412A502A</stationID>
+ <name>Country @ WADB-AM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381CD109A7C5B588D6BA52ABCF3FF087EC1624979F0481F292CBFEC5D6EF5CF61A3</stationID>
+ <name>Religious @ WNJC-AM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381B6198A27DAB3D2496942DF72C4BF47A8C8E60E58D2F2E6FD0DC2574708F30E1A</stationID>
+ <name>News/Talk @ WOND-AM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538161FF923DFED6143A4BDF3130B0C0BC70B6ACDFCA2187F49501CBBC99B98729A0</stationID>
+ <name>Oldies @ WHTG-AM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538124DBA094C3A6DBD88FA62C69EAE80E374A2873B322C24D69D768563934E49D67</stationID>
+ <name>AC @ WMVB-AM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538185B08878A12580A1FCBE39BC970E0015A3E3ED075BD1D650082E8B2042855510</stationID>
+ <name>News/Talk @ WKXW-AM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853815625452EC8C2A385B269FE078B8B8D8E6205C6FB923EBC56D7C7986B48383D42</stationID>
+ <name>Oldies @ WGHT-AM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>1.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538177366CE597827B2A53241155B5C49042601424DEF856BC5C9418A9A9F84AE651</stationID>
+ <name>Spanish @ WWRU-AM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>1.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381305A464900533732DB676AEC5F11069A2C3C246C1E2564A9412A02E4E09FF9D6</stationID>
+ <name>News/Talk @ WTTM-AM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>1.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/New Jersey_fm.krp b/kradio3/presets/usa/New Jersey_fm.krp
new file mode 100644
index 0000000..a59f6a1
--- /dev/null
+++ b/kradio3/presets/usa/New Jersey_fm.krp
@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>New Jersey</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338538194128A651E98C8060C9FD9A6116806C8B04E39E108DF3568EB3D053301B8B1FD</stationID>
+ <name>Rock @ WSOU-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>89.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853815DCD4617A464CDEE3ED6703ECD17F00CBCB514D2AD3E2C2226E8D745BA999BB9</stationID>
+ <name>Rock @ WKNJ-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>90.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381B6B091461EC9106BDA59BD775C2ADD6AC1DD5140BE607A546913536ED307A4AA</stationID>
+ <name>Alternative @ WFMU-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381A21009AD4CAFAC419CAE17EADC59AE2F36024D24E4F575DC938A62B7A186AA96</stationID>
+ <name>Alternative @ WTSR-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381D6C1C1947B331D3AEACEE42742689BAF60FAA78F6990A68614696D4F52C72854</stationID>
+ <name>Oldies @ WVLT-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853810DCA817A14B0703B34DA1DA62C32855650EAFB3C1AE4788E7075827410D46873</stationID>
+ <name>AC @ WOBM-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853817601964D22EB2E968C157302B14676094D16B7248852561E672195DDB7CDBFF4</stationID>
+ <name>Spanish AC @ WPAT-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381659BC98A7EB34DDCF8D1A2F737F3F248E0768BB6A9DAC78244D260C439861FDE</stationID>
+ <name>Hot AC @ WJLK-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853818E743733F4E5A0D917AA7E4D538A807CD345F41A13DD07A89C4ED88FB9C182C2</stationID>
+ <name>Classic Hits @ WTHK-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853814636719558DE00F804DCF840AA6FB4221E4DF515168FBCB4E9D6EC49F5CC7D33</stationID>
+ <name>CHR @ WAYV-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381DD8E91621D1FF55A5BB2ADFD3B58E9452C85B13F1C60E0159558897D1DED2603</stationID>
+ <name>Rock @ WRAT-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853814A2F5E3DCDDEA8904C8B2163CF4B51E7536C118239F4C4502E20502C382BB260</stationID>
+ <name>Soft AC @ WFPG-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853813142B6BE4D01602227400DFCF2A21C4D466FB3D60BFC79C304DF83426F365938</stationID>
+ <name>Hot AC @ WIXM-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381A733CFE1BD35A3934B726CF3490D5EE476348DE1957B115707F7B8A5BCFF3207</stationID>
+ <name>CHR @ WPST-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538148FE5BEEEA94BFF9DF1EADE69DD2E0A91CA820FB5678AAE050584B35595B5F11</stationID>
+ <name>CHR @ WBBO-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538193812AD063C8E3BFF4D395D49F1F7A118B268CEB3BD9903EF3C3E1AC7ADBAB4A</stationID>
+ <name>AC @ WCZT-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538178EF87786C4498595306876EFE25D127121D4D6E5F560CF2ABB294EABFE8B88C</stationID>
+ <name>AC @ WBHX-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381D0914C24D844325754B2935A4B39EA379DB8F0D266FEBB9A99DD5AA73AF84A75</stationID>
+ <name>Oldies @ WJRZ-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538184F6E336F068657EAD7535C076EF49FBDC13B4EF72DDA9185CD998CEAC1FD790</stationID>
+ <name>Rock @ WZXL-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381214FC29E90FD82877BAE78D9F274B0F9E655C785C1B935AABEF7DCDC7B1FADD8</stationID>
+ <name>Talk @ WKXW-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853811ED12B5E7B9035DEA807BC3F3CF32413D8FC143749B4370DCD0EC04AF948A1E5</stationID>
+ <name>AC @ WSUS-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381759C089DD72FA7E170066F781EE78C5B9BAA54382504E1AD3EB1AD2BE7FED8CE</stationID>
+ <name>Alternative @ WJSE-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381FB653B73C3DC6C8032D40CC8A375BA32ABDFC23BA8CCCA59CA3D073FF9778B91</stationID>
+ <name>Misc @ WPRB-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381EF6B298ED4E80CFD209079C9904D08225C3C1ECCB420B680282033D86BA47E93</stationID>
+ <name>Classic Hits @ WNNJ-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853810852FB2F3D1C6B5BA07577FF06B2C83ECEE08644BC696716B9E71DF373A9A6F2</stationID>
+ <name>Rock @ WDHA-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385381D393CBB0FBF025D7B6311BECB209F8E6E17A4CA14E6803119D49B2A392F6A340</stationID>
+ <name>Classic Rock @ WCHR-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538189F00A6F4CD83E580ABE8846A2499CB994BCD04EC8D214EE96AF31FF04C6D7EB</stationID>
+ <name>CHR @ WHCY-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853810A9A8DC0D81A8F5783B9BF94052FC6C9051B6E50C57C86E52140B9D1142D7F66</stationID>
+ <name>Alternative @ WDOX-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538187DB103CC4D88DF97D31EE3A969951DEA2372BCC701D1B6763B3B7FE79349C18</stationID>
+ <name>Country @ WPUR-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/New Mexico.krp b/kradio3/presets/usa/New Mexico.krp
new file mode 100644
index 0000000..a4f2eb0
--- /dev/null
+++ b/kradio3/presets/usa/New Mexico.krp
@@ -0,0 +1,478 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>New Mexico</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385382AA4155A91FD7ECE1DF602AAC8D1FC929974B1FD1B4E26408394492D9D6447A73</stationID>
+ <name>Christian @ KLYT-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382AE100FF23612E46507FEF959C2826E51172B4F03E34046FFB4FF5618D288720B</stationID>
+ <name>Country @ KRST-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538267B65F5DFECF19E1715A681FCC8914355A2829FE6600A006927F238462FC9B94</stationID>
+ <name>Country @ KMXQ-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382E5524970B1E064D99C217A1DC11733CB4422B1A4E7A0EC409508B14D0BBC394A</stationID>
+ <name>Hot AC @ KKOB-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538217BA12093895D49322338D3D80203EB7E4C0F61096A54AFFF1BBBFA658C9618B</stationID>
+ <name>Classic Rock @ KXXI-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382C87E1DEF9EE44185B45C0D326EBD52B24D907ED123A1F27685714EC67D330700</stationID>
+ <name>Rock @ KZRR-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382B7ED5F3A40DF3DC743E3A73935A21CF8D3CC120F399134668B24DAEAB7D74469</stationID>
+ <name>CHR @ KKOR-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382842653E3191DC1F99C1EC9AB5FA8CB8703272AFDFAC29FDAB7CF475932C2B174</stationID>
+ <name>AC @ KBIM-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382A2AA8E242E550A6F30FD143F1C2E3493E3D0274D734BCE2F159AA3B1520B1067</stationID>
+ <name>Classical @ KHFM-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538223DE8C669827BEFC7D4E06AB95D751905A32483F6D39FD19B3DE2123573EDBE0</stationID>
+ <name>Religious @ KPCL-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853821A8F7651697D43FC48B2AABCE57D80E225F7F1B34E9E325F8AC4EC7145725511</stationID>
+ <name>Classic Rock @ KBZU-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382A11B7547003B20CAA5E34A7535125B1FF61F52438D764D6B8708153F4B3BB365</stationID>
+ <name>Classic Rock @ KDAG-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382F34C99693441C0BE8389322EC146252946085C1470B4CD64CCA98BAB6E55C002</stationID>
+ <name>CHR @ KBCQ-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382FCC402476A30008094609109D09AA88D642D1CBEB44150B37EEC118D91D49546</stationID>
+ <name>Rhythmic CHR @ KKSS-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382D378DDE688F247E42847C613C2A283F8B07FAFAE3320503ED660C3B3C971D6E2</stationID>
+ <name>Mexican @ KLVO-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853821E04902AABA0298A4D5D530C16DCD581B217E0A315EEBD85A3017C1CA5D24CF0</stationID>
+ <name>AAA @ KBAC-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382770161BFA4E8FBCFD35C0DAE43087AD189A8A34CDB71FBBEA50E4AD26FDC1C7D</stationID>
+ <name>Oldies @ KABG-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853824E05B636A8841D96EF832451971B210960DDF1D370DDC2870D2B51E5207724D5</stationID>
+ <name>Country @ KKIT-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382E8B6112E11A88896BC95A46C666F60C37309B94C0A83B247E90EDD2D42DD23A8</stationID>
+ <name>AC @ KMGA-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853820D57BA69DB85E72357B84EDC8A2B915826F33ACFF5E00C90576B753605668583</stationID>
+ <name>AC @ KPEK-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382C8D2E21EB3411576C3E818DFFABE6DF0138F4D32B6D46CA4160BBDFA91A4000F</stationID>
+ <name>Classic Rock @ KSFX-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382BBFCC58ADBB4890D02426AC575FCACCC887F53A8D93669022242AA7D335B70FF</stationID>
+ <name>Oldies @ KVLC-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853820732D4B258E3EC7EC5173A0D13B7BBCF4C017B7B025D33DF499FA2A7B8F4092E</stationID>
+ <name>Mexican @ KKRG-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382D5B299E8537AC5850FA5D54FCFCA0EE077151C3E53716E22EB88405F43A443A2</stationID>
+ <name>Oldies @ KQEO-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382D47AEBE9A432DE30EE2CB627FE86536A99AC8CFF2FDFE1D9BD3145F1D7776B99</stationID>
+ <name>AAA @ KTAO-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382B61A75DFBB0902709BB07EAEB93D03A10CD95BED1D18506C37F7FB95DD106515</stationID>
+ <name>Country @ KTRA-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853821DCF7A4715DC497A5EB37DF874E4D22D63BCC86EA6FD125FC1D54C85CC295516</stationID>
+ <name>Classic Hits @ KIOT-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382C8E5E1BFC13BB31B862C6313A10803FAAD49BD4983F13B0FA73A83246033B0E0</stationID>
+ <name>CHR @ KAZX-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382D6A994768F8408A9DFF1CCDB15C088E9E5E72E08206DACF66368A149308315C1</stationID>
+ <name>Alternative @ KTZO-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538280AB0075AE6F6F34E61FC02C2D55885D9D474C02526736F49FA0155C6BB9E4A4</stationID>
+ <name>Country @ KGRT-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853820E3B4862A7203C8569736D62E5E85CAFEE545F95A0113741177152E9ED71AD33</stationID>
+ <name>CHR @ KCDY-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853827D904648A59DF57D7A0A78B90D6D912FE24C6A12A2A552B6083E11A12424D25C</stationID>
+ <name>Oldies @ KKFG-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853827D329AAE0E19D36EAF3CBC13F2EF996135C300E93A8D6E07E9C57F69A3D7466D</stationID>
+ <name>Country @ KMOU-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853825499053D7F17178C00AB817771CE69EE5146E5D725A99E4572443BA2003D0A65</stationID>
+ <name>AC @ KMVR-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853825CCAEEB49659B058D657F41C1979B17C0380433527724BFCD2C0C69D731ED965</stationID>
+ <name>Country @ KWMW-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538248B191EFC318C6E45B9291B50D38DBADE4B6814F47C993ADF12F9AC7A3B8D4F7</stationID>
+ <name>Country @ KZZX-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382EDEB9CF1521A30B58CD7DEDEBB7FC49237416DDFA2D0A3D0584BD6730446156E</stationID>
+ <name>Rhythmic CHR @ KYLZ-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538240E23F1C09036A5D03FB28D9A1C5EF43CE1FE7B938F35EDB96B211538B503778</stationID>
+ <name>Mexican @ KZNM-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853827A2F238277F239AB44787C7123D479C757CBAF8C1C0EDF1A99C0A0E45BAAA4BA</stationID>
+ <name>Christian @ KNKT-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853826B4C5EECCB3C3EDF1574FFF9E6C79990CE0739018895DAE9A0894D0FCDF53345</stationID>
+ <name>Country @ KBQI-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853824E73FABE9D628BC5E7A6D0458CC4955F151E94D4D61BACADADBA104A92C95FE5</stationID>
+ <name>Oldies @ KSNM-AM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>0.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853826858352D95F32B552EA750759B12029B5666CB19119FD5B9D7FDCF13CFE9E055</stationID>
+ <name>Sports @ KNML-AM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853823B2707B3E62B935E0DF1D1D7638AF945B7E42BDEA1309937E2C02CCB758B428B</stationID>
+ <name>AC @ KLEA-AM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>0.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853825BE94EF161A4D9DCDDF098DAB50B8E1B7218220BB828D24F43073D73077739E0</stationID>
+ <name>Christian @ KDAZ-AM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>0.73</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382AD8116B3BEA09D512C15DD2A0E912DFC408BB2A3B2E0508BF3E374FDBD4CC236</stationID>
+ <name>Nostalgia @ KATK-AM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>0.74</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382F6D395FFF3AA87B677B6FAE9D8F78E6467599BFBC07D60EE17CB0DE2DD66482D</stationID>
+ <name>News/Talk @ KKOB-AM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>0.77</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538224FCF189C02232539E64753790834139519507CE0175C15F3C0ABD1DDE9EA3FA</stationID>
+ <name>Country @ KNUJ-AM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>0.86</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382E8E34DB906AEDFAD3F5C8AA94A53FE1ED31CDA88B69AC618B535F3E2A137B5CF</stationID>
+ <name>News/Talk @ KBIM-AM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538281E9B272F68BB325E1C9B0BDAF9F46E018C226F4002027BB183606614C3B68E3</stationID>
+ <name>Oldies @ KMIN-AM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382785CC93CD3BFC6359FBF8585AC4004571AD592B69D60F68E8BB186635B387E23</stationID>
+ <name>News/Talk @ KSVP-AM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382C3AFB81E56BD6DFBF78AE30F6C3DFADDD241211F78A230C208159DCDFADF25E6</stationID>
+ <name>Christian @ KKIM-AM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538240ACF34C4B45D02A9614639F0EDC7C0093C062414BFEBD4F71CD0D71D4B117CF</stationID>
+ <name>Country @ KTBL-AM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>1.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382EF2D8E1D09EC040C7C0853669DA3DBC2BC7182B5367593D33EAC258932C2FD21</stationID>
+ <name>Oldies @ KYVA-AM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853829783FDA176A25C15AE13CDC16D4946D5F5BC53312A49C69CE979CCC9B1CDAEA8</stationID>
+ <name>News/Talk @ KINN-AM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382BADF10DBB1AA8348074D2C5A80637DCFB3AA6F8417980E67C681947E73DAFDAC</stationID>
+ <name>Talk @ KBTK-AM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382BB1725AF827931E82D5FC6AAAAC24B520AC4B67E9BA45D22DF7E3D39724EF130</stationID>
+ <name>News/Talk @ KCQL-AM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382FB30458344C892588E42C5A759A5F9C8769B463ABA50F1E017EC7D98428E165B</stationID>
+ <name>Sports/News @ KOBE-AM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538293AA68F9F3DBBDD3EA94B23FE3A278FDC8CA6E2DE51822215BC572958C9A49E5</stationID>
+ <name>Nostalgia @ KRSN-AM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/New Mexico_am.krp b/kradio3/presets/usa/New Mexico_am.krp
new file mode 100644
index 0000000..92894a2
--- /dev/null
+++ b/kradio3/presets/usa/New Mexico_am.krp
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>New Mexico</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338538252088ABD6EE27AD09E641F6C4974B26BC8092FE878AEFF4F4A38E485DB2A5892</stationID>
+ <name>Oldies @ KSNM-AM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>0.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538216E1A404EC931132EF20B401A0F3F287D1DD1DDFEE067F8732DDFDB4BFC2AC39</stationID>
+ <name>Sports @ KNML-AM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853827C1A02B49A2D2C0F5FB64F9AD9C5B79B91AF57F08352B1042DC674FD59E60DD5</stationID>
+ <name>AC @ KLEA-AM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>0.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853821820C27836B66E5EDA815883932783C157D9C040679E4809BA559CB747F735C4</stationID>
+ <name>Christian @ KDAZ-AM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>0.73</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853829B4B96D9CCCC84BD37DCB1DA7B2B861A7E8F308A3E24CD3BCA9415F662236FF5</stationID>
+ <name>Nostalgia @ KATK-AM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>0.74</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382CAAC3BC07BF835DF86AD4A07C120C18C2CA2FA391D778903C173ED1E2F34A8D0</stationID>
+ <name>News/Talk @ KKOB-AM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>0.77</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853821804416A71BF0158DD6B4F338394207A52866AC792F7A26EAC116D614C958857</stationID>
+ <name>Country @ KNUJ-AM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>0.86</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853826290F56FDBDB0D72733A6D9C7B11D80B3FC8DD1749EF9B687E59915BCFEB7E7A</stationID>
+ <name>News/Talk @ KBIM-AM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382DB0176AD2FAB2070390EC23439A4B9A5A9D0E6DD1856BEB80D91B29508F22483</stationID>
+ <name>Oldies @ KMIN-AM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538229A287CE2A03F34D4E37E15D2E315892BEDC98AA41F3D4C9E006703874E981C3</stationID>
+ <name>News/Talk @ KSVP-AM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382F5EB58238C77FBCC128BB3FE3658752F499948EF8E30D320F69EFC6D4A0A5649</stationID>
+ <name>Christian @ KKIM-AM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382BDAD2104F1FE01CF6006775CD923CCA081D4466D12E835149A97E48E9D7B3E98</stationID>
+ <name>Country @ KTBL-AM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>1.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382D98FF3E4629517A6481E71BB693E8223E97D815E1BC51A025AFA53BB5A6CE6DB</stationID>
+ <name>Oldies @ KYVA-AM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853824CFEDB2348145DA00349CCDB74E1D22F13EB428F34A80E42254E8B6BC47B0C80</stationID>
+ <name>News/Talk @ KINN-AM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382CBC187BC0C78D8B6462A26B9500956C36EF2580903E6121281D409D113898206</stationID>
+ <name>Talk @ KBTK-AM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382F3C6072AE778D5A78C4FF3C7EE74912BDF525CCC46BA63924DDA3A23A3863442</stationID>
+ <name>News/Talk @ KCQL-AM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853820735D1DED6920C984FA10FA95B2A84341950FF114286174187B8C2EE5E746084</stationID>
+ <name>Sports/News @ KOBE-AM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538221F8D43FAACC3EDF630DC26CE6E338ADCF4D3EADF3C27819408EFCB288FC8544</stationID>
+ <name>Nostalgia @ KRSN-AM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/New Mexico_fm.krp b/kradio3/presets/usa/New Mexico_fm.krp
new file mode 100644
index 0000000..da0802a
--- /dev/null
+++ b/kradio3/presets/usa/New Mexico_fm.krp
@@ -0,0 +1,334 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>New Mexico</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853823090185EBA5C63932789DCC7688BF293DE6FD7BBFE9DB6C6206814ACE495EE0D</stationID>
+ <name>Christian @ KLYT-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538218A6A555DF06DFB1389F6018894826C03CE4400BCD90A022E7E6FEC5F67C7096</stationID>
+ <name>Country @ KRST-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382BCAFB11B1E385E60A307EFE55E9C95B9A86565CED31F121C00FF6CB3196A36B7</stationID>
+ <name>Country @ KMXQ-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538281581E5CDEE1601F40F61B2A4DDF1AEE6A4612F52827DD52BBFEB78340462EC0</stationID>
+ <name>Hot AC @ KKOB-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853821827043ED2782B9921A8877FDBE4B1DB33E2E47789160C9DE18F6B42FB511658</stationID>
+ <name>Classic Rock @ KXXI-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382EE91810D20C39A62BC0D3A637C38F33AA7F12BA3448531A679B742F9C9DB4797</stationID>
+ <name>Rock @ KZRR-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382BBC4F0F8B9DF52907698170C2B40FE1C5E28A471C2E053A4F0C3D2CD207ECF9F</stationID>
+ <name>CHR @ KKOR-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853827AC68BFF1138923193B64C79BFA13D55730AEA997934D22EF467C5E5D3415C6D</stationID>
+ <name>AC @ KBIM-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382333667D8749EC4B1932A49091890B472A64813F7FEE74059A6021EAD3FB8721A</stationID>
+ <name>Classical @ KHFM-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382D5745A3F0B3F92E821196115F5AE0F0FEBCB15A562D075E93BA9BCF5EC61DB22</stationID>
+ <name>Religious @ KPCL-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853821A967C9D5C24F58A4C4E193BAD423AD2D6A30411A988C879A133255DF8A31E3C</stationID>
+ <name>Classic Rock @ KBZU-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382E7B18917FC326E1A94D86F5BF97139388736138A5A2BCF19EDFC67302640FC03</stationID>
+ <name>Classic Rock @ KDAG-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382F82E0981121B8DAC8871B5B2F4CCEAB1B15CBDECCC6329DDAB11331C340BCDE0</stationID>
+ <name>CHR @ KBCQ-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853827A0B0117E253918B91A9C944E38A25F584B2A2EFE521D03A386F68DA2CE634A0</stationID>
+ <name>Rhythmic CHR @ KKSS-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853824A94E690B768EF2A97DA725F3221EA46F3A34BA5F2CF953212676828EF2C7B3B</stationID>
+ <name>Mexican @ KLVO-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382552F105B16CA98AE3EE30BEEE59AF4FF56712D165C3737AFCFB99A72BFBC33B4</stationID>
+ <name>AAA @ KBAC-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382888A228DC9417B06DE33FC2D2A08A8D33F3344473BB4392966F08062637FF930</stationID>
+ <name>Oldies @ KABG-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382C70EF2E6EA4851648CD18CE0E3283D5BACD2E6C0D0EA111A3674DD634A4408DE</stationID>
+ <name>Country @ KKIT-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382B909143C1B4908C93E0D435892315805C5E6555F059490B424B73A46AC7D3891</stationID>
+ <name>AC @ KMGA-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853825B129B1AE603BE80F450FB1E67D289136A38EBDBC8380BBBF3CD7C00247F3A1F</stationID>
+ <name>AC @ KPEK-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538254B6228ABD2BC8327D84CC91F1CF6B01468DAF4FD0A5CEE764C5B61F0B450290</stationID>
+ <name>Classic Rock @ KSFX-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853821E44C64554701014F007C2C0A52165DE30AFDADDAD42C8155E3DA07A315E87B5</stationID>
+ <name>Oldies @ KVLC-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853828C2897BE45550B01D88324982A6296ADA62C87A3711ADE95126667C61458A7A1</stationID>
+ <name>Mexican @ KKRG-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538214AEC4A40BA3DAF8A0EBDB8E8B0A45F4A9E3E95FC93B261DC0C222EE09587C90</stationID>
+ <name>Oldies @ KQEO-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538210F826B91D4C0ABA84BCF992BAB53AA2CC529D6671DE4AB70DC5857F15E5B9B3</stationID>
+ <name>AAA @ KTAO-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382582C8E6DF9F1DB0DAD4352150DBC818E41EAFA6A5C0A8471A54B5C8E81500D97</stationID>
+ <name>Country @ KTRA-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853824376B6B04105FA6E50BBD356E264F33E678103FBF0D074D9C25F2782C7E0B546</stationID>
+ <name>Classic Hits @ KIOT-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382113DB9164882708AD7BA14BD777548ABE9FF4C274EC84073B8BC903C89ABA034</stationID>
+ <name>CHR @ KAZX-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853820B3E8444132DB7166D6718C40EB617FF468022654EB56DDF6A17A56E111EFBF8</stationID>
+ <name>Alternative @ KTZO-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538210C6AF08C3C7B7D3D7A93A258D6B69126600F0BB9B48AF1AE3DA478D76F4187A</stationID>
+ <name>Country @ KGRT-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853820929B77F49001824DBB2BF73E419CD24ABDEC744B9886AE8A90FF37C19262F9E</stationID>
+ <name>CHR @ KCDY-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382F31E42D8558FAA8D955BE84EF4A2826F0FA27752354E8B16083B62EE04F2B891</stationID>
+ <name>Oldies @ KKFG-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538211A3993942E37FBF66082943C96043E341AB033C62D807E34FA87920FCA80A7B</stationID>
+ <name>Country @ KMOU-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538267FFF666788E7F212888105FA1858044505AC15350DB257CE47BFA44D41152F8</stationID>
+ <name>AC @ KMVR-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853823F86B630ACA9E925BB220F789A0966562F67C22181F2CAF5D38E1E1B49DB8F71</stationID>
+ <name>Country @ KWMW-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382311E005AA40A2AC853DA51E1E742D8057C906A587D3711D4E3EF1DCFAEA42977</stationID>
+ <name>Country @ KZZX-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853829EB3547D6B31D2BFAC23C3E6D50F95110A0940B42948F90438804A35EAEAA938</stationID>
+ <name>Rhythmic CHR @ KYLZ-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382A785E99C584D83771E675E85C1D8C0230043582D7E3B7E77E0235B5C9A9E941E</stationID>
+ <name>Mexican @ KZNM-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382C5261E761EFDE65D3772AFEDB48C11E63BE7BB48C8F9552B397B75FD3C687C72</stationID>
+ <name>Christian @ KNKT-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385382B52FB911D3513BCBA4B53DF4D15B60918141D4D6DB56018DE9ED03CAF97F3202</stationID>
+ <name>Country @ KBQI-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/New York.krp b/kradio3/presets/usa/New York.krp
new file mode 100644
index 0000000..ca2d52c
--- /dev/null
+++ b/kradio3/presets/usa/New York.krp
@@ -0,0 +1,1214 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>New York</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385384EB43C106D5E066D519A6C1A3BF1D919A38F64F8B6B25F510024793F2A691417D</stationID>
+ <name>CHR @ WGWR-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384B8F1CA4D32643913181763F5A80A153A63D72806E41C7A9C4E0B32004D723C76</stationID>
+ <name>Rock @ WSBU-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853842B0A64A74705DC2CA5E0D6FA7277DF4F135045BDEDA7848BFAA53A5E61F83B03</stationID>
+ <name>Various @ WRHU-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>88.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384B2D1D126BCA8A023ED8E028EE142376F43E7550C2CD0CEC724AAB47441EB6755</stationID>
+ <name>CHR @ WRPJ-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>88.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384106381817C89E3C0BE4ABAD7EFDA4D100DDEADD19E023CF4E82CAE5DB9329713</stationID>
+ <name>CHR @ WJPZ-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>89.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853841F0D713A3B939DF6E30494F8740AD0DCF1081CD9B13748FC6361EED0A5925D66</stationID>
+ <name>CHR @ WLJP-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>89.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538455C91AE11C3F9DE07FF471F039D9B2EA5FA58541F24ADC3F4209FB4C30588AE9</stationID>
+ <name>CHR @ WSSK-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384B3C8BD7FEAA204993ECD54125DDA6FEF67C064D9FAB2C4B5E1D22B33895294B6</stationID>
+ <name>Misc @ WKCR-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384F0F48AF8F0BE385D138176FC76D1BA4B846CC8D98C3959450374B96677F5902A</stationID>
+ <name>Smooth Jazz @ WGMC-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>90.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384DE87AAA9753429A0B0EB1955F9D74A2C22212FE72EBFFA128B5F0078B31EDB06</stationID>
+ <name>NPR @ WAMC-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>90.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853846C6E38DF5C6F91BD05A89A285A7A203E09FEFD120BD4E31B96F5B00F05196915</stationID>
+ <name>Alternative @ WBER-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>90.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384C714C922468CA4959F6327D2288B57D4C18BD41264C0EC40D82EA3BFAD0ED919</stationID>
+ <name>Rhythmic CHR @ WPNR-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>90.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538477710D3989204C02288075907A4B1BD28484ADA66FEAD246F5D131C688CD9F17</stationID>
+ <name>CHR @ WLJH-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>90.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853848D41B426930D1851F44E71E2C59B81E0B312CE037E6C452EEFD687FA61C50674</stationID>
+ <name>CHR @ WHVP-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853844BA291DC7F25CE145CB5F83F278727BAF4F6A982EEB8395A7EE7B0FAE1B67644</stationID>
+ <name>NPR @ WOLN-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538409C34FB255FFD94746C2BD82EAF4306895033498DA170733C17A77B77C3CF8FB</stationID>
+ <name>NPR @ WSQX-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853843105A1E7CBE16B1DACC3EB456B29D647408FA83B6CC4B4D914F8981A4BF838B7</stationID>
+ <name>Nostalgia @ WSHR-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384A9D884781B5BF45A3B4C82EEF3EA6638F473C14FB6C9896E6E7812B22D38664A</stationID>
+ <name>Oldies @ WSEN-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384FF7F6D963AEBAC1DA160E3D02E1CDDA7734C695F079820F41E2DDA2958115651</stationID>
+ <name>Alternative @ WXRK-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853847D0E1FD04EF6F1DF38894BA5F755BFCD9C618E729FD80B97FE6829293B06F559</stationID>
+ <name>Country @ WBEE-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538445E3E936FA724D38DC7E1017711D50697CC29F6E8CBF3417842774C51D50B5AA</stationID>
+ <name>AAA @ WPAC-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538461CE539821F5EAB153C2B39E20320DBE721E38DD5AB456C78E608AB46E42263F</stationID>
+ <name>Rock @ WBUF-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384CA3A83F87CD70ED5A2BDD1EB7DD46F0EEEC35700E5F0185D90E55185B2533E8E</stationID>
+ <name>CHR @ WNTQ-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384C238D7E96F750056C3AD74F8BBC010C428E3454F48126957A54E5428A123321B</stationID>
+ <name>Classic Rock @ WCIZ-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384B119CBBFA46C46FF9539BC2958944C733AE657266189BA680E5F4A2ED97EB108</stationID>
+ <name>AC @ WRFM-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853844ED76CBAC326F39B257D6F77290C039187E05A9B399545FE6863232F6164CFDC</stationID>
+ <name>Urban @ WBLK-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853849D0359069A7FF5FF88AA9D5D7C10D169117CECEF60A67E5A137E87E926A12394</stationID>
+ <name>NPR @ WNYC-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853844BB2D3354466CFEF9B26D442C6C84188698710EC01CD72B57233E269C508D20D</stationID>
+ <name>Alternative @ WZNE-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384960E149FAEC43407559313B9160AF1DCCF6905D962B71E9804B9BEA348B5C465</stationID>
+ <name>Eighties @ WMJC-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538468232B1B51C4E7A4E8D760440738E2DA5A204486FA54FB90DB3433FF716589DB</stationID>
+ <name>AC @ WYYY-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853843789504110A5BC62B59FBCB7B5F0603A82046322754638D47751A47AEF3B841A</stationID>
+ <name>Classic Rock @ WPHD-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384210AA967D6F1400A467FF25EE1A1601B33CBBBAD1491F83FD7DC8FEA4BEA064A</stationID>
+ <name>Alternative @ WKLL-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853846298DF912F91BA78453C0CD939B1096E96C4A4A22F8C07DDFEE912D866B74914</stationID>
+ <name>Classic Hits @ WGIX-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384FD288069AA7917565D0B9DE3C2899A39EFEA1337BB3628314D20F49DF8E065D8</stationID>
+ <name>Hot AC @ WPLJ-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538489BB3EBC07863731FACC4E82FCC4D4646913F364DB66CCAC05C186E0DBBF3027</stationID>
+ <name>Rock @ WAQX-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384B1BA9D78210BD139EA6EB7794307DD3BC8E5E832708C01A21526DA71518477EA</stationID>
+ <name>Oldies @ WSPO-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384BE347947126DACB828C45498E78E877EAAE339ABC5E6E4BF34152FBA870C5156</stationID>
+ <name>Classical @ WQXR-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853847F2B67B21B5F2B1E37020BA7C7858920552A70BB3373ABF5105C3671BC587ADB</stationID>
+ <name>Rock @ WCMF-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384ED5B517E720D0E79BA636ABEF13D6DE825B078831DAA6358E5CDAD04F745B312</stationID>
+ <name>AAA @ WEHM-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853849A4C6D3A14E4C30AE99EF0C6F91930B480FB8CAC59D69A32ED7612E853E2F6A5</stationID>
+ <name>Rock @ WOUR-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384FB7904F2C579FE7481D286742130673823BDE6CC17DCE5B789F7558CAF3BCBFE</stationID>
+ <name>Rhythmic CHR @ WQHT-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384F60196545DEA9D9E8302891FBEFBAE56ED268FFF7BB99E77098F277EB4498C1F</stationID>
+ <name>Oldies @ WZAD-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384BAF59BC7E2E9B12744ED78309B5BD0F0296905BE352412581454181AB560E002</stationID>
+ <name>Country @ WFRY-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538457C65F42053767945877CC844AE9BF734DD72B8679A030E91EA58D51F826B8F5</stationID>
+ <name>Oldies @ WCZX-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538438DC90A8287DA1A329EAAA0E71BAA8A3FFC7EC4250FCB41BFC123EF4A18E7C90</stationID>
+ <name>AC @ WRIP-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538479E7617BD6ECBE573E9942CB529E0A3679A7A32C91EB29FD670B39B396E0DD83</stationID>
+ <name>Country @ WHWK-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853849E8D37D83C2EA820B4E8304F37D31A623856BC6FD4B02F19A08D9A2EEC236F92</stationID>
+ <name>AC @ WMGQ-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853843E212FCA3E07EEC90B340960290D5BCAF452F2FB68D1588B8F5AE01349BB06B2</stationID>
+ <name>AC @ WNYR-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538440425BAC5143320176FC817FFB95E595F28A629DE303F8BDEF749B325E35957C</stationID>
+ <name>AC @ WLZW-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853843AE2F78D35F4618086275C3D190F7B73ED26F636BE91745F34BB1EEE2B48659A</stationID>
+ <name>Eighties @ WBZA-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538410755864D6AD6320187EAA9ED48DB4B2B16C7C477F2B789B72C8B0838991DFD4</stationID>
+ <name>Religious @ WAWZ-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384124060B1090F81118F944C0EE2F68A5CF47ABBB185237BCE18FC8C75BF10B1B0</stationID>
+ <name>Classic Rock @ WLLW-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538430592A5EBED0A99A16DE98BEE5F7377F86FEEB6A9440F6D1F4EC22CFB761D39C</stationID>
+ <name>Classic Rock @ WTKW-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384C1CBD378DE37FB9CA04C089BEC492A2933A7E3327AEC1B8DD00C9C5D9745A7D4</stationID>
+ <name>Classic Rock @ WIII-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384EE27BE2EC24F1B469DC29E7C1D3A418C175BBAF81D2704906A7EE7D629EBE946</stationID>
+ <name>Alternative @ WDST-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384AD457640F2EAD9BB105F8293BFBA793BF46EAFC9F9C451796EAED8EE88C4F69C</stationID>
+ <name>CHR @ WHTZ-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384B2A2D22E2278462A148E52DAFF20CEEB9C65504BF0D44E8E45169D7144E3527C</stationID>
+ <name>Oldies @ WCDW-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853843C558556CB9C99CEBEEC179F744A3B0A11895DFBFA287565F243C1C3CFA79A49</stationID>
+ <name>Rock @ WOTT-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853845A3E80AAFDE31E7E248FCEE70FD4F58EAE0A75344A58BE83F31C736D92FF75C8</stationID>
+ <name>Alternative @ WKRL-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384EBE6973B04A64D4C5682A5767D130BDEDDA24FB4D92BAFEB7088BC444514E803</stationID>
+ <name>Oldies @ WCBS-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384904843773442AA1D8F44C4F5D19FA82AC2C6EADAA46BEF8C86E33A61889BEC63</stationID>
+ <name>AC @ WRMM-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538498A2EBFC493557978AAC58B76EE48A04A37281064BB893B9C52F937D18BEFBF0</stationID>
+ <name>CHR @ WXHC-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538474CDB1C87BD88B33D66D18A0B2598F265EDB71A03D5B22416F2064BF2C5375D8</stationID>
+ <name>Country @ WFLK-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384F23F5EA9934CE058F31EBB844EBD530FEE1979E1F271434A0E624C5DA6C13A66</stationID>
+ <name>Smooth Jazz @ WQCD-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538457360F54C8D76CA1ADBAAE28E7BD2709E7F3B91ABC88CBEA0A02940BAC86C5F3</stationID>
+ <name>Rock @ WBAB-FM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384FA78F3DF93D7DEC4EE3747BE05B9A2FF984111AF37CAA566EE54C11FAF7D4A48</stationID>
+ <name>Country @ WRBY-FM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853843FD8317324B0FD5116D047D9FFBF3B19B217C87AE4893465963BA4FEF723770C</stationID>
+ <name>Talk @ WNEW-FM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384840600547A13B75B06EAD28AF6115429A0BDB5CD76FA76F71861409F225126A4</stationID>
+ <name>AC @ WTOJ-FM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384BE336965A73BCEB18D3302A97703154F29818D00376A42C456BA27C8F4DB1EBF</stationID>
+ <name>Alternative @ WEDG-FM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538418C8E0EF0179F8B5BB5532602156BF9439620DCAF46980E197E13055662D1D04</stationID>
+ <name>Country @ WNNR-FM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853848BD29F6684A5C7B43B56C0559ED1ACEB1F8D9CBF8BE240EA55C1AA5DCD7C2C0A</stationID>
+ <name>Country @ WQNY-FM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384109606C337DADF0A6DA01DBCE1D62CD59BA495D5ADBB6BB3214E606786ED22B7</stationID>
+ <name>AC @ WFAS-FM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384F52CD93563D085450CA8F5187A6B2DA3E3888A899C044D0740CC1804EE3545FE</stationID>
+ <name>Oldies @ WHTT-FM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384A3A2F5A434D5201D4774235DA2E8343327A8F272A76C4D7447D87E67EE263DF9</stationID>
+ <name>Country @ WFRG-FM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853841C6B86273C90E4221640AA482CE281C9981BD449E1BCBD0B10A1C1F120368970</stationID>
+ <name>Eighties @ WABT-FM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538474F190CBEE9B5F037AE2D5F9A29CEC60463E2683F9E6981E36F6C9E39D39328C</stationID>
+ <name>Country @ WBBS-FM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538498B83B14BE72E7E66B70B42196438D4C13DE003893E5A12C7C8FBB4A22DB6236</stationID>
+ <name>Smooth Jazz @ WZMR-FM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853841B990E3C60A9480BD9A47ACCE820818BB054FE402D3161EEEFA5A2EA4B49EB73</stationID>
+ <name>Alternative @ WWDG-FM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853840862AA1154E8411F0EA919C9002AAFE0B1C43EDFB2EC6AB5FE42A0483EFB47C3</stationID>
+ <name>Rhythmic CHR @ WXXP-FM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853840230D2AC36B891078C5FCA9665CCE60115DD5F26423744352E4AD512081D3CAB</stationID>
+ <name>AC @ WNYQ-FM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538477614AE3F4A25332D36FB8A72FE65D7C29AD5E1AD25885BA4BE830A00BB66F36</stationID>
+ <name>AC @ WLTI-FM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384B5E58DCAF5731274C3E9A47EF6AFDCEAB74DB4CD346AF91A8F9B136BF1ABEDC8</stationID>
+ <name>CHR @ WBLI-FM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853840563D416972B8229F4AE4C06DF5084ED2B8FE8824DABEFBD48AD45D17AADAFE9</stationID>
+ <name>Alternative @ WKRH-FM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853842767205315D7E16F9A6878BFD8B943C8740A21CECECFA4A792035991BC16CB18</stationID>
+ <name>AC @ WLTW-FM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853840149A81B334A84364BAEC226C898DCF4B4C5266EF6D26F3267DDCC14BCB9DD55</stationID>
+ <name>Spanish CHR @ WWZY-FM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384F2E82FCF523DA679D715743A433021A1FBDAFF89C15E1FA55118A879C70A9D12</stationID>
+ <name>Classic Rock @ WRCK-FM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538412730AFD1AAB3CA8DD05E6F7AF5EA81DB2D6DDCE21CF599E2CF8ED92168DA655</stationID>
+ <name>Urban @ WBLS-FM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853842186C8045A5BA00E959E602B863B93A4EC4DFE30C65B7F69FEAB8FEC2874C763</stationID>
+ <name>Sports @ WNSA-FM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538407E647066EEE1FBEBC5B2A204755150C17419912A66B358C319DE1A9B700E1FD</stationID>
+ <name>CHR @ WWHT-FM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384B3259CC815FE1762CBF423F65D34CF1D8513E8E5134F6C3039831F2BB2DE5B1F</stationID>
+ <name>News/Talk @ WLIE-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>0.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384CACD09043347582E50FF7C5EB5F21E967EA5C20A38D82D435DC72880F6E453E3</stationID>
+ <name>Sports/Talk @ WGR-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>0.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538484B5BCAEE9118A9C35D41FD9D08DA689612638AEB3D7AA4163EB7BFD450BE3C7</stationID>
+ <name>Sports/News @ WSYR-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>0.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538448C3B56F6F994BE81D8777080C8FB24E1960E3F06A4FE7E06F104CD4CF7FA9C3</stationID>
+ <name>Sports/News @ WROW-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384E964337011EB9921F65BE55CEE086C4B69A82208D03EB927DA03E667A2297921</stationID>
+ <name>News/Talk @ WHEN-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>0.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384B1E67BC26B9AE2BFE7E9D0C30A70BBC6E5FC641B66675A67E4B2F4933EC1F3D3</stationID>
+ <name>News/Talk @ WFAN-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>0.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538407CE1A48B5352DC59724D190944D97B3933F78E1F922D6CDD85FF3F6A58A5FC9</stationID>
+ <name>Country @ WINR-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>0.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538458363F92882130E7AF33A0EC0EFE6E9E5C5BDDF5FED969D342F06BD9B3110B7A</stationID>
+ <name>News/Talk @ WOR-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>0.71</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853848E7B668D51D91B44FEEC418BDDD4311B7B3184102711F46439567B21FBD68798</stationID>
+ <name>News/Talk @ WABC-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>0.77</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853842B3EF5772EB03E091D7C352B92C34D5C9B4121E053CCDF2CCB504C099927BF44</stationID>
+ <name>Talk @ WTNY-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384F107A228E170CAC5E1C7BF5A1C534F5260564AA8E4D1FEF8F4EEE7D694718670</stationID>
+ <name>News/Talk @ WGY-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>0.81</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853849763E9A56AA69705578A8919B4E00C2B7F30C88EE0FBCB3341784E6B074BFBB5</stationID>
+ <name>Talk @ WNYC-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>0.82</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853845BAF4F604C72B28D7846D394B184EBE85DBF9AAACDC76158A95AD83D669E8B21</stationID>
+ <name>Nostalgia @ WYLF-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>0.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384104B3A21385B75B690CE049DC8745B85E841B651CADF1CD569EED1B8BEB1D07F</stationID>
+ <name>News/Talk @ WHCU-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>0.87</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538472FD4BEEFEA6FFCDE98C16C39656DC4FA4E692DB0303CBEA236D1ED1F6327F4E</stationID>
+ <name>News @ WCBS-AM</name>
+ <shortname>104</shortname>
+ <icon></icon>
+ <frequency>0.88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384317ECC1CB74BCEBA86033A244C0C2257E21AAE65540FAA55DC14F973988B9ED7</stationID>
+ <name>Sports @ WIRD-AM</name>
+ <shortname>105</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384433A78BA81356448AF648D5728671376811781D674DDB488CA0E4C6BFF006795</stationID>
+ <name>News/Talk @ WBEN-AM</name>
+ <shortname>106</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853847522CD70CE87A4FD71CDF487E343EB1073D221D1797C003F9FF863D2DAE35D18</stationID>
+ <name>Religious @ WWDJ-AM</name>
+ <shortname>107</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853848DDEF8B697E02FD6F24992DA258DE68DFD0FF32EAED21B222BD84BE4DAD70589</stationID>
+ <name>News/Talk @ WLNL-AM</name>
+ <shortname>108</shortname>
+ <icon></icon>
+ <frequency>1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538454E6282E1ADB14B4D76E12BCEC1B35D7750B3FA58E4613CF10993D4FF28E4C41</stationID>
+ <name>News @ WINS-AM</name>
+ <shortname>109</shortname>
+ <icon></icon>
+ <frequency>1.01</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384AFEC31B1DE446559FE93C3AD394A342C490AD846C3477ED3D965AF544A1A7295</stationID>
+ <name>News/Talk @ WYSL-AM</name>
+ <shortname>110</shortname>
+ <icon></icon>
+ <frequency>1.04</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853845C1B3423AA693E411D09E379CFCACA6D952905B8404C208B3C6F5622E39DD6AA</stationID>
+ <name>News/Talk @ WFBL-AM</name>
+ <shortname>111</shortname>
+ <icon></icon>
+ <frequency>1.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853847EAF8DF31696255B994D037F7BBD5858FC104B9E8EE3414C0A661EFF6F8F5168</stationID>
+ <name>Gospel @ WUFO-AM</name>
+ <shortname>112</shortname>
+ <icon></icon>
+ <frequency>1.08</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538497CBF1CBE2A5B516374C328B00E96FA77FECAFDFCE4B3896FE88A53B301CA50A</stationID>
+ <name>Nostalgia @ WHLI-AM</name>
+ <shortname>113</shortname>
+ <icon></icon>
+ <frequency>1.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538451E711C28AD2FBF3652762A2F48E708B8D682F69713BF4B475339CE7B770A0AF</stationID>
+ <name>Oldies @ WTBQ-AM</name>
+ <shortname>114</shortname>
+ <icon></icon>
+ <frequency>1.11</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384C658B11A21BF122D7A1F9775C517FD8D12E52CEDE6498B1173B1621340C94710</stationID>
+ <name>Religious @ WMNY-AM</name>
+ <shortname>115</shortname>
+ <icon></icon>
+ <frequency>1.12</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538429305C67076352FE1591DEB01CF8F37DCAB795FE61D791B34A0CBF5F1EEEAE48</stationID>
+ <name>News/Talk @ WBBR-AM</name>
+ <shortname>116</shortname>
+ <icon></icon>
+ <frequency>1.13</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853842359B21395C36D77AB15CD201C2E3539AE88EFAF1B44CEDA38115EE9CE037E56</stationID>
+ <name>Country @ WCJW-AM</name>
+ <shortname>117</shortname>
+ <icon></icon>
+ <frequency>1.14</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384F9847830674B4D5C483F8CDA66FC91FFC254C18819FFF07C044ED880C2E41799</stationID>
+ <name>Nostalgia @ WVNJ-AM</name>
+ <shortname>118</shortname>
+ <icon></icon>
+ <frequency>1.16</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384139FE3662448FAE0FA777EF9B640793D4E2959BFF7CF32DABF0FF1CF1AF84D7B</stationID>
+ <name>News/Talk @ WHAM-AM</name>
+ <shortname>119</shortname>
+ <icon></icon>
+ <frequency>1.18</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384C5AF7E1D3DF9A533EF197911D8621276FDC878FFF8FDC822326DBC5AC79528B1</stationID>
+ <name>Sports/News @ WLIB-AM</name>
+ <shortname>120</shortname>
+ <icon></icon>
+ <frequency>1.19</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853845B98FC2DFA3C0D4AD61AA851B4B9D3F5358BD5101B8BE201C124EAA4BA0AD803</stationID>
+ <name>News/Talk @ WGNY-AM</name>
+ <shortname>121</shortname>
+ <icon></icon>
+ <frequency>1.22</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538580129C3E2801A35448FE933ECA8EC507016C485D34443479BF9E59013A74231B</stationID>
+ <name>Nostalgia @ WFAS-AM</name>
+ <shortname>122</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385F3AB6DCD010D48136697B05FB38433488C08C3828A185C860D2AB08AE44669EA</stationID>
+ <name>Sports/News @ WATN-AM</name>
+ <shortname>123</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853858EB55D01CE8287BC1773CBA720148CA7E09D893A2ACFFE564784D9BA5DE6AB16</stationID>
+ <name>AAA @ WIPS-AM</name>
+ <shortname>124</shortname>
+ <icon></icon>
+ <frequency>1.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853858E1C67646A74EB1557C200873BD69CC68946130FF98F8424C06D44A2F4874156</stationID>
+ <name>Nostalgia @ WHLD-AM</name>
+ <shortname>125</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853859A0AF19D173CB814A20E62C4C75C0CBA2B0ADF8CE2DA684A22DCFFABDD425F7C</stationID>
+ <name>Spanish/Talk @ WADO-AM</name>
+ <shortname>126</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538519A549E3CE0331C89E1C240CB239F5B79B7472DA426D592B32F25C542CE4AD5B</stationID>
+ <name>News/Talk @ WNBF-AM</name>
+ <shortname>127</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538534C0DA38821873FE6AE2C820EEBA00703CF8675B46FCFCAB678165E995C0EA44</stationID>
+ <name>Nostalgia @ WZZZ-AM</name>
+ <shortname>128</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385A88F66B8C2B640E36FEDD7927A74EA1A2DF7DFAA928C4D2605052DEE519B1559</stationID>
+ <name>Nostalgia @ WVIP-AM</name>
+ <shortname>129</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853854D02D109BF1AA9BEBE5771C010A3C08AAB2F24533AC3EDB79746F038C2623E0A</stationID>
+ <name>Sports/News @ WHHO-AM</name>
+ <shortname>130</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385769137EB8F8DF53796C9435C988D294C488E45706B2F7B164C62DEE2CA2B9DA0</stationID>
+ <name>Christian @ WHAZ-AM</name>
+ <shortname>131</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538592E68CD0681568C1E0B4A118AA20618F6F94FD8A9B73A3756F0A56BE7152A6D5</stationID>
+ <name>Nostalgia @ WMSA-AM</name>
+ <shortname>132</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385C99DFA4C97FABC271925730D03A811FF9EF1536205597986B1EDA09F85F4366D</stationID>
+ <name>Nostalgia @ WCBA-AM</name>
+ <shortname>133</shortname>
+ <icon></icon>
+ <frequency>1.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538586F418D1C50D1AA9A30F87456FA58FBCA9DBB5D7A62F9FF1E80214CC56351300</stationID>
+ <name>Nostalgia @ WALK-AM</name>
+ <shortname>134</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853851F3B1E433F35F5322E130467451AD6161977846B799823EFBD3E4806DBEC4AD6</stationID>
+ <name>Oldies @ WABH-AM</name>
+ <shortname>135</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853859A8CF5D027253354DD5DB7ED5A65DC13A14A209B8251C6CD44B85458EC58556B</stationID>
+ <name>News/Talk @ WSLB-AM</name>
+ <shortname>136</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853850AA41E6DDC57335D03B870CCAF63E93C6535BFEFDECB3C79FDADFDF3AE9ADCB1</stationID>
+ <name>News/Talk @ WNER-AM</name>
+ <shortname>137</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538552ED67D81433A7453B284CA66A1A0F071A96CBA18708CE0C778547C57330C0D4</stationID>
+ <name>Sports/News @ WACK-AM</name>
+ <shortname>138</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385365BFC14961567C494DA26C059B64D8CFC278285C5E991A0AF63D6C2450A67D0</stationID>
+ <name>Ethnic @ WNSW-AM</name>
+ <shortname>139</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385167BAA6D2E53A24904EAE378850B232432511034BC90CEB082BB68E20C022DAC</stationID>
+ <name>Ethnic @ WNYG-AM</name>
+ <shortname>140</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853855D063C9D218BA9EE512C6DEEE9E47ABC92CDF64C107471CD26CE1B36187EC6E4</stationID>
+ <name>News/Talk @ WCTC-AM</name>
+ <shortname>141</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385C528D5EB939A59FDE5AB6AFACA311C920214083DD786F116DE7F4A3B4C45F54D</stationID>
+ <name>Ethnic @ WWWG-AM</name>
+ <shortname>142</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538553BBBDF2AD7B2250D40B1998E21A27051D8917B1B3445D6FB98A6EE63C79EE11</stationID>
+ <name>Oldies @ WTKO-AM</name>
+ <shortname>143</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385C0CA33086C277C3A65F8E6356F21C3174FDB5B626657F94EECF285D0E6BAE38A</stationID>
+ <name>AC @ WLEA-AM</name>
+ <shortname>144</shortname>
+ <icon></icon>
+ <frequency>1.48</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853853FF9F8239581358AAF8156A0B9FDB9861325D737BCBA99EAC4B260C7E6676D59</stationID>
+ <name>Childrens @ WOLF-AM</name>
+ <shortname>145</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385034BD0902DC59F660EB644842CF4924109DD5EC614C4C0172FE96E34F8EE9F2E</stationID>
+ <name>AC @ WCGR-AM</name>
+ <shortname>146</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538513C89B950B3413E5D19537B58937538DC35F1BF20199C1D36A590D86361DFA57</stationID>
+ <name>Childrens @ WQEW-AM</name>
+ <shortname>147</shortname>
+ <icon></icon>
+ <frequency>1.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853850263E6D3B9B22BEB70001CA142A96AB0B767C171ADEF6D077BF0F963B8207042</stationID>
+ <name>Country @ WFLR-AM</name>
+ <shortname>148</shortname>
+ <icon></icon>
+ <frequency>1.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385F601DA64F9070274DA85C406507A6F39164A34BBE3970D0C4A4573A9EFCDEA47</stationID>
+ <name>Nostalgia @ WLIM-AM</name>
+ <shortname>149</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385BCAEC150E1A7EF4106C2BDB5058A0204AACC82241F8A78F6D59392C0171658D0</stationID>
+ <name>Talk @ WWRL-AM</name>
+ <shortname>150</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/New York_am.krp b/kradio3/presets/usa/New York_am.krp
new file mode 100644
index 0000000..f7bacce
--- /dev/null
+++ b/kradio3/presets/usa/New York_am.krp
@@ -0,0 +1,502 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>New York</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853843639B87399551DA1AAACFC9C01263D6BAD63FE0339F03751A10C8E5233225137</stationID>
+ <name>News/Talk @ WLIE-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>0.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384D60118934EDA4BBE7358AD4BB48C8BD3209F6675F07DA82EBA9648FB102F9D19</stationID>
+ <name>Sports/Talk @ WGR-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>0.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853845B6CF8EB7BBBA770FF670C97DB855E1E5C6AFA97EF77D9DB3D8B94B7EBFC65C3</stationID>
+ <name>Sports/News @ WSYR-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>0.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384C462EF23091D9E5031A0A8D8D5378EA0C08A5F864E288ECACFA12238BEBEB2DC</stationID>
+ <name>Sports/News @ WROW-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384A538B78630DD0A7E036F3584F11AB5F59109E7C5E5AE38001AF651855A931786</stationID>
+ <name>News/Talk @ WHEN-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>0.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538422DECDFEA9CD8EDDFCF9A3311D02BCE00A037E012B7DA9932AE7A5FB1FD20338</stationID>
+ <name>News/Talk @ WFAN-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>0.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384C0845A4A2FD867B97E5B9505576C74E07C0FD8A02F2E0324D28464559AAEAB16</stationID>
+ <name>Country @ WINR-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>0.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384DFEDA8AD496684BA47283A3A07C5AA6AF665A148E0ED670DD81C448890C81916</stationID>
+ <name>News/Talk @ WOR-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>0.71</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853849481B82122F67E41099A10FD38D4C089C6DE51C5BE196DAF195227885D2846DD</stationID>
+ <name>News/Talk @ WABC-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>0.77</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853843BC36C60020DF9DE9E84B630AA8CC5073633401BDF47EAD13C24CBDD67A6BC5D</stationID>
+ <name>Talk @ WTNY-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384E8E617205CD5CB6A142D99D94474CC9FFAFF236053F88FE00E1E66D82A9AD4D1</stationID>
+ <name>News/Talk @ WGY-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>0.81</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853843F0C392656E52943F7CD1FCC946B31502C18A87AE30542F821CD4542DAB7F0CB</stationID>
+ <name>Talk @ WNYC-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>0.82</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384DC1DBBCFB7FF95E65E5579499399B2F7F58A9F09AACE05A06D13F779E3F047DA</stationID>
+ <name>Nostalgia @ WYLF-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>0.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384447D428B757B418A3E6C838235F88FF98D6366AE069EDD6CB02DC8DAD2FF2D20</stationID>
+ <name>News/Talk @ WHCU-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>0.87</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384BA4FC84A97428FCF5DDC6A5C3119F316BE5C99B34D839E0479C140C211A534AE</stationID>
+ <name>News @ WCBS-AM</name>
+ <shortname>104</shortname>
+ <icon></icon>
+ <frequency>0.88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538407C97D3FDCFC667592BB15B0B210BE51E31609A33352CA69EB1BC3B6DFCB9EC8</stationID>
+ <name>Sports @ WIRD-AM</name>
+ <shortname>105</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538478447C5A13FCCE2A25346DD0740940AD4A7AFE4D508D3BAEB716BFEBB53319AB</stationID>
+ <name>News/Talk @ WBEN-AM</name>
+ <shortname>106</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853842F85981F5AB2F811D655CD80F1482B4C89C9CAE34F328125DEE51EB276B4E8B6</stationID>
+ <name>Religious @ WWDJ-AM</name>
+ <shortname>107</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384B9CB2292CE84D99355283E336EDA4745818623B2F21D09677565AFA7C573C56F</stationID>
+ <name>News/Talk @ WLNL-AM</name>
+ <shortname>108</shortname>
+ <icon></icon>
+ <frequency>1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853845C43F8A5CF535A089A837A64A1014C8E6AFA7F6EDD6333A240F6CB5A2E5AFD23</stationID>
+ <name>News @ WINS-AM</name>
+ <shortname>109</shortname>
+ <icon></icon>
+ <frequency>1.01</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384E5D8AD573FE285DB6679ADE496F1CD7A6758CB4128E6962E612C192B7DCEB0E6</stationID>
+ <name>News/Talk @ WYSL-AM</name>
+ <shortname>110</shortname>
+ <icon></icon>
+ <frequency>1.04</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384E8B7688D45D61D7241ED694CF74891AF29DD7E13DE0E9CAA45B22827377A310A</stationID>
+ <name>News/Talk @ WFBL-AM</name>
+ <shortname>111</shortname>
+ <icon></icon>
+ <frequency>1.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384BF57E2F572699FEC86ED691CE8F0F4DFA369877E9DD61D3E69143A1A45E3DD7D</stationID>
+ <name>Gospel @ WUFO-AM</name>
+ <shortname>112</shortname>
+ <icon></icon>
+ <frequency>1.08</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384910CCB1D4E2F2403D4FE8B2C788837849E1C7FBD8DD9E9BE618A3A3238F14E2A</stationID>
+ <name>Nostalgia @ WHLI-AM</name>
+ <shortname>113</shortname>
+ <icon></icon>
+ <frequency>1.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384D9E3CAA940AB5616DB8B453072DD55606F79A6564FC2CFA711F13E0E05C613E7</stationID>
+ <name>Oldies @ WTBQ-AM</name>
+ <shortname>114</shortname>
+ <icon></icon>
+ <frequency>1.11</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853848546E8EDCC232C4589CDB960B7DA1A0219201C9FC0A5A10B1574893928ED96FE</stationID>
+ <name>Religious @ WMNY-AM</name>
+ <shortname>115</shortname>
+ <icon></icon>
+ <frequency>1.12</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384C3BE8EF353F6AB52449CCA0F556CEF0F4AF2D12F731FB3A3FC26ABE712BD7EEA</stationID>
+ <name>News/Talk @ WBBR-AM</name>
+ <shortname>116</shortname>
+ <icon></icon>
+ <frequency>1.13</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853843FD5431B585B46EDD3CCD47C655C287D3BDCB2F692BDEA9B459CA638455E5F50</stationID>
+ <name>Country @ WCJW-AM</name>
+ <shortname>117</shortname>
+ <icon></icon>
+ <frequency>1.14</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384BD79F835B64CAD061DF1ADBEEDCBD98C8D3BC65A197782804C0EC870351B3670</stationID>
+ <name>Nostalgia @ WVNJ-AM</name>
+ <shortname>118</shortname>
+ <icon></icon>
+ <frequency>1.16</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853841DF5A4F63D3596446A8F39513281A97355AFF9F7897F60FF89147CCDB05AFF2E</stationID>
+ <name>News/Talk @ WHAM-AM</name>
+ <shortname>119</shortname>
+ <icon></icon>
+ <frequency>1.18</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538410A63BF43FC1E3AEEDD1C0B39C8EF1A156337F7278AD26D849EC1108D9CC0440</stationID>
+ <name>Sports/News @ WLIB-AM</name>
+ <shortname>120</shortname>
+ <icon></icon>
+ <frequency>1.19</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384F06478CB40C9452A0B082FA5AEF8FA94033BBA41F61B8FE15FFB5C5B990F5256</stationID>
+ <name>News/Talk @ WGNY-AM</name>
+ <shortname>121</shortname>
+ <icon></icon>
+ <frequency>1.22</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538461E58EC70ECFD879D4DBF33A9F30FD22C1D500D856B69B92437560A7145B7A9A</stationID>
+ <name>Nostalgia @ WFAS-AM</name>
+ <shortname>122</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384942A9EFD0982BD235777BFF7B41F0014B646721B4D99F6A7B33D90F2290142E2</stationID>
+ <name>Sports/News @ WATN-AM</name>
+ <shortname>123</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853842C00605140140A80BD815B5F02B7995DD09971896272C55981CC06DBFBF0DD1E</stationID>
+ <name>AAA @ WIPS-AM</name>
+ <shortname>124</shortname>
+ <icon></icon>
+ <frequency>1.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384AAE89060E625EF066C4E355FE14F5FDEEA0C52FEF83DB398F382CC41B63B10D9</stationID>
+ <name>Nostalgia @ WHLD-AM</name>
+ <shortname>125</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538447DC4BD1DA6656F67CFF91CD3712408E828452D9F96B5C5587E62A3D73D3F815</stationID>
+ <name>Spanish/Talk @ WADO-AM</name>
+ <shortname>126</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538448FBE4E1EE84BB9BB43FE411B4E488F8AE34AAA28A1D21A2477676C277B92848</stationID>
+ <name>News/Talk @ WNBF-AM</name>
+ <shortname>127</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853842AE2EFFC99F6784D7BE6A3496D2745E27CCFD533981D975D614E30771DE936CC</stationID>
+ <name>Nostalgia @ WZZZ-AM</name>
+ <shortname>128</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384C381758F19B688C29E3EB4445650A0057D8986494328F7700F3244D026FCE032</stationID>
+ <name>Nostalgia @ WVIP-AM</name>
+ <shortname>129</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384A9ACFBF80ED274B34D94FFCEF095085CE1EC4D50ECD1A345F5489C6CEE76B6BE</stationID>
+ <name>Sports/News @ WHHO-AM</name>
+ <shortname>130</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384FC6404A4D3B0FC9636BA98C764324BC363ACABAF85654247E673CE660490B42C</stationID>
+ <name>Christian @ WHAZ-AM</name>
+ <shortname>131</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384B4541D3BADEC51701ED431890DAD6BAB03713231F86B459E638909AFAEE2928B</stationID>
+ <name>Nostalgia @ WMSA-AM</name>
+ <shortname>132</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384F4219E0438DEA4672346C1B4D002B3F531DB17E425CE6868B1495E7C48F87522</stationID>
+ <name>Nostalgia @ WCBA-AM</name>
+ <shortname>133</shortname>
+ <icon></icon>
+ <frequency>1.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384423F140BB098D285FAF19D66031B3860BE1A9627A31A1451F4BCAC1DBBACA8E0</stationID>
+ <name>Nostalgia @ WALK-AM</name>
+ <shortname>134</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853846869F20C32F9132A03E376327AA918087824D2F3F454BA648EF971642A6DE261</stationID>
+ <name>Oldies @ WABH-AM</name>
+ <shortname>135</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853843BBC76A8D0E5A5BC2D5BBD888484C9647E229881ABF6FFEB29051A90B1BA7947</stationID>
+ <name>News/Talk @ WSLB-AM</name>
+ <shortname>136</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853845FBBFD185550F2AC5501C4CBD02555BA2A9D8847E0AE5FB76BA93BAC0969DD25</stationID>
+ <name>News/Talk @ WNER-AM</name>
+ <shortname>137</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384EFD41229D36DF60328F7B00DF7932209AD1A83D37743AE34E84B6509DC6665DD</stationID>
+ <name>Sports/News @ WACK-AM</name>
+ <shortname>138</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384E7ABDB635B2A26931140AFEC499FC800367911FA689D59F75B9DEA56F0EB6E51</stationID>
+ <name>Ethnic @ WNSW-AM</name>
+ <shortname>139</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384FBEDDCE906AC114F40FC44BA7EA027655C01C456957860A7ACBBCAEA1B9E1684</stationID>
+ <name>Ethnic @ WNYG-AM</name>
+ <shortname>140</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384BDDBFC01E41E369F77ED11B6A3ED40B1F26C3F32067C3BBEBFA8D6B2B23D8F81</stationID>
+ <name>News/Talk @ WCTC-AM</name>
+ <shortname>141</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853849E43AB50BB1A0EC2EE51C8CE677CFAB2CCB595EF7BBE8DF1D53ABB72F5D0B7C2</stationID>
+ <name>Ethnic @ WWWG-AM</name>
+ <shortname>142</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853840A429F8725EEC606C47AF0683D37C9E129CB5561C7B9172E66A96EF9DD1392B4</stationID>
+ <name>Oldies @ WTKO-AM</name>
+ <shortname>143</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384D297B503DE02C9AB1D37EDC7FC93D29406CFD45844D962A2F9C93438F874BE97</stationID>
+ <name>AC @ WLEA-AM</name>
+ <shortname>144</shortname>
+ <icon></icon>
+ <frequency>1.48</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538493046A2BECF72DF0F75F2BDFCA259D2F4AD0B569FE6C38A68A5C04B8952FF0A7</stationID>
+ <name>Childrens @ WOLF-AM</name>
+ <shortname>145</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853842AF960C90C92E70E05E439329D7C31BF377ECCA519A19ED31668DD4B406CD93F</stationID>
+ <name>AC @ WCGR-AM</name>
+ <shortname>146</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853845EF7CB981BA49E3864144AB90F3B508A53CD37492083076006DD6303DB68EBE9</stationID>
+ <name>Childrens @ WQEW-AM</name>
+ <shortname>147</shortname>
+ <icon></icon>
+ <frequency>1.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384770B8D013550134526D266C9400E395D15D51120B38D3D7DFC9C0476B9E74FE2</stationID>
+ <name>Country @ WFLR-AM</name>
+ <shortname>148</shortname>
+ <icon></icon>
+ <frequency>1.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853847C47702A3067041A5DE4B442A14BD86CF50912F0AEB47B8E51EBF926158D5E74</stationID>
+ <name>Nostalgia @ WLIM-AM</name>
+ <shortname>149</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538443D6793C10A33706F49983DA80FC374A3EC07C51E70F38E65C74E29AABCAD9E2</stationID>
+ <name>Talk @ WWRL-AM</name>
+ <shortname>150</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/New York_fm.krp b/kradio3/presets/usa/New York_fm.krp
new file mode 100644
index 0000000..1c6f1a6
--- /dev/null
+++ b/kradio3/presets/usa/New York_fm.krp
@@ -0,0 +1,726 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>New York</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385384123761DD5D180D8919390BD12C6A65C6DCD7648ED600D54DEEFAB0E96FD774A9</stationID>
+ <name>CHR @ WGWR-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384EF2D8BBD0541C27E86FA4DAE6104567CC0843E98C9AC55D99935CC34CC14A874</stationID>
+ <name>Rock @ WSBU-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538436832657EF421B6515FC3D942C8FBDC1657364EA5A43BC26EF2ECDC29C9DF56A</stationID>
+ <name>Various @ WRHU-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>88.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538465EA84F0AB845571F70AFDF03124F96D0711BF72D19DC0D5104A01851FCEEA73</stationID>
+ <name>CHR @ WRPJ-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>88.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538455A44AE75731D54FB9D42401AC11D18279A7278BB0D343BABDE000D83B01E585</stationID>
+ <name>CHR @ WJPZ-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>89.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538463EE6208A3D2076AAC153667769F9F05CA7F6E5CBEA89A0308AA66081177B8EC</stationID>
+ <name>CHR @ WLJP-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>89.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384E774FD616202C080CED0F58DE700506771EC44CBB4E7E16BDEA0E0B363B02D55</stationID>
+ <name>CHR @ WSSK-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384BAC700420D002A624119729DEA95E812ADC7C3F2123F176E49EC67F02BFD3200</stationID>
+ <name>Misc @ WKCR-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384E410564B84F2052E893800646F686E69433F9CA380B6919A11BD7431DCB12097</stationID>
+ <name>Smooth Jazz @ WGMC-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>90.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384B1BDA89A76B8402C9A2C6DE08C7CC4C82705DD45414F43E081DF57A62A256CCE</stationID>
+ <name>NPR @ WAMC-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>90.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853840481D5F631D46DC08DCB12EF14E9DF41DE9694B07F6552F5F39FCAAA29A7FDAF</stationID>
+ <name>Alternative @ WBER-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>90.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384158095318B26709BFF02DBA64E91F90D919881DA51F0C54507D0C8E094FB787B</stationID>
+ <name>Rhythmic CHR @ WPNR-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>90.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384DCAC52F89427F62D6AA33DA088816DADBA8C40EAEDD4B3859405B4E692D497F5</stationID>
+ <name>CHR @ WLJH-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>90.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853840945FE41C204F8DD889F1383F9F42D644D7C37E0BDE2CEF01B27554EDFFC0C5C</stationID>
+ <name>CHR @ WHVP-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853846761A899E288283AA270DC0AD56CA2CD1A53141101968A675F8DF6EA9AF907FC</stationID>
+ <name>NPR @ WOLN-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384FAEF61352D9F96797A9A77B64875CC6FCD3B779CE6BB6BD8D7625DC9EE025380</stationID>
+ <name>NPR @ WSQX-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538474BECBE7201DEE37DBD6762CE0B1B5A795F2DE7EF87FBC846C00FA2C4AB4A8B8</stationID>
+ <name>Nostalgia @ WSHR-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384C89AB5B2BCFDF29241106CF173690E2585C614492987419BB3445822C780E1E2</stationID>
+ <name>Oldies @ WSEN-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538491A5B0C61E851CFE98AC67FB0D0B7833F02BF156937B8321282D28D956B25149</stationID>
+ <name>Alternative @ WXRK-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538493DEAC7E94580EC86455547D35E50192675A4BD20C667C1D726AD1423503DF5C</stationID>
+ <name>Country @ WBEE-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853846323BB2CF4BB6703A482337A1C605A931E8E556FE92155D03CAD05F214F2E1A5</stationID>
+ <name>AAA @ WPAC-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384419B090D913F7D62B213B1FF6B8EEE7F1660710EF06504A25B46815D3C908722</stationID>
+ <name>Rock @ WBUF-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384C4255DF7EE5792DBACA8CEBE532231C30659915EF4FABD5676DFF9866D0016BD</stationID>
+ <name>CHR @ WNTQ-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853845A717BB4C214ED6F86EBF6B1EE22E43CB628F1A6F907649533533595A2564E65</stationID>
+ <name>Classic Rock @ WCIZ-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384AEF8FA43FDFEE112E4B80597D4F5F7AC34451355254578F724933483E3B6D359</stationID>
+ <name>AC @ WRFM-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384461D1B6297699892823BDEBA0D5CDE33EA4E3540C8B85FCD765D8DE16AF8C862</stationID>
+ <name>Urban @ WBLK-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853847617654A1C2146382DC323D6B87A485C354CADFC1B2F08A18E2F6880B9F501F9</stationID>
+ <name>NPR @ WNYC-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538496064496415C1EDE0889A1F5433942B55EDE9E32D7C1D8E1EDE277463FA968DD</stationID>
+ <name>Alternative @ WZNE-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538400663D55615942F41677D267CA6FA43123BC84FFC5AAD8DFBD353A4FA1D3309E</stationID>
+ <name>Eighties @ WMJC-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538404A875457A61AA9AF11296BE4CFB7EB51A44EE43C9F65E6F0006FEF403812059</stationID>
+ <name>AC @ WYYY-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853846CF016539357CADCE9B79AE67F46C759CA9C08BD2D03AF94A531AF80EA147089</stationID>
+ <name>Classic Rock @ WPHD-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853843D31BFEF14082669B224DF2D73CE54D68041127D815CD0A3CBCD824540E59196</stationID>
+ <name>Alternative @ WKLL-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853848786EEBA67C9C41A12E989891EAF00157636B149398C0C7B87D897BEC25968C1</stationID>
+ <name>Classic Hits @ WGIX-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384B14E54C86377E57F548BB9B04754D12A5E15642D751EC7C3FA1C27B3F2C07C1F</stationID>
+ <name>Hot AC @ WPLJ-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538492249485C67EBFF1534153D24B3CD072040A6E9BF104D89205091CF45BDD1928</stationID>
+ <name>Rock @ WAQX-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853845DBB7ED3D23015A5E1F618585AAB194163B991E6BFAD288ADF8DD2EC3C2D6E0B</stationID>
+ <name>Oldies @ WSPO-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384BD1026AF7DFE44F7ECF80700184781761C78C962F24BCF1F4E82BA0C637E1D01</stationID>
+ <name>Classical @ WQXR-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538438012106E11D71F5C56426F9DC4384C691640CF4F67716F6D00E5211C9D7E099</stationID>
+ <name>Rock @ WCMF-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853847741B707CE23A78D6A19479BB92810A7BA62C2E336A9C86AF6A1AD0AC08F4D26</stationID>
+ <name>AAA @ WEHM-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384D6E238125B4D0D8A65F500BAC2A68FB8170FEA53DA6A479F803D0726922472C1</stationID>
+ <name>Rock @ WOUR-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853847AE5B0170034B45B3C9FA88B9873156568C505C7335D4AD62E5F58AD21CD071A</stationID>
+ <name>Rhythmic CHR @ WQHT-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384D970477572BCF2999B3CE2D446EC949BCEF8704CFF9E66D8DE32ECEF4055E544</stationID>
+ <name>Oldies @ WZAD-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853845DE9C273D6FB121FC9BCAC142FCD38299985FFC570FFBD4699DB387D32E1FA43</stationID>
+ <name>Country @ WFRY-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384136686F3B6FB38EFEE8F74170A4F370A4F0A6FC763B5CF0B145EC98BEC16A5EE</stationID>
+ <name>Oldies @ WCZX-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538426B504AD70815779FA99DA67C5F06FF7570B495B4C9F666920645CEC37F2A264</stationID>
+ <name>AC @ WRIP-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384C156279B505BDF0C0BB8EC7F99A2FCC159D4C55946E3984288E83C8CE52F88F0</stationID>
+ <name>Country @ WHWK-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853843945B05BE8EC6BD2350E7214B9FDEA0B46DBA9D010D76BBF87FAA6A58B38AA21</stationID>
+ <name>AC @ WMGQ-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384663C1F8FBBCE18829DAFD739030505967816E0A158D5A07779868A20E35B944F</stationID>
+ <name>AC @ WNYR-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384C84ECB01E1E38CEF3DFF9EDAF5984EF589A7CA1E52B719ECE67BEE8534A32206</stationID>
+ <name>AC @ WLZW-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384DE8A51BE8EB1C0A57F9B3F56D959F6A1056D0E27731DA064A575A36CE254D5BC</stationID>
+ <name>Eighties @ WBZA-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384D55376569CB1FA77251E75C4683E1436B797D0D2A773ECD3714F36310F58A022</stationID>
+ <name>Religious @ WAWZ-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853847E51D0521B04A3B0B2FE620318CE821441D1BCC905C93C20DB9B239D9F8D3C5B</stationID>
+ <name>Classic Rock @ WLLW-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853840FA9BAE1992F45145F1A7FE4CB2C189C4A10E8242FF15237668DB9971DE477D5</stationID>
+ <name>Classic Rock @ WTKW-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853840B0022A4E5C86C3D4827AAF673E98C28D64CE795E6ACA3550398745C2B7734D5</stationID>
+ <name>Classic Rock @ WIII-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384C13693B3C5A116067B0310D508E3F295A685D8663D779E93F811484BCC0BB0DF</stationID>
+ <name>Alternative @ WDST-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538451C02007F3CE4F42598053F16E56D184F13047A58984721D5F64D61962C55DB2</stationID>
+ <name>CHR @ WHTZ-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384307DC82646703C0A1B198CE549A2048A2061EBD083AC605763F4A281950F455B</stationID>
+ <name>Oldies @ WCDW-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853844825B79F052AB0D1C07CACA2DA33494D62CF8DC6829CDDCEE4EC524BB8658EBA</stationID>
+ <name>Rock @ WOTT-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384BB258F65B60D65B51F4A4EED7DB012809E487D9249E55B8CCEB436423597C093</stationID>
+ <name>Alternative @ WKRL-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538457E606A34E96B58A85BACEF76B8449006E1E7019B03C4BDC5A1A8D6587258103</stationID>
+ <name>Oldies @ WCBS-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853841E3BCBCBE79C09F3A1872735F91D9A322CB64E62EAED5A78898EB0EEB8B5799A</stationID>
+ <name>AC @ WRMM-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538470052E6A5E0F0E13FAB8F09E4650C801E715F84F60A1237A2EFA016C1506BBBF</stationID>
+ <name>CHR @ WXHC-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384B71121BFE9BE5B142652063EDA9F4E6D970EFAE18C4325B1AC7089A46BBE3CA8</stationID>
+ <name>Country @ WFLK-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384F77ABDEE43907ACA51FC1FE11B1F2635C28365DD0BDB1FB28B1194BB0048E119</stationID>
+ <name>Smooth Jazz @ WQCD-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538478B753A151E74F97D176A01A19D5D07BCB4A0B7CBFE9BB0433C9BC370F816AC0</stationID>
+ <name>Rock @ WBAB-FM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853848587DD14DBC109404A8B44D75F8FB872207E653D685F3C02F6FD58AEC30B9494</stationID>
+ <name>Country @ WRBY-FM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384CC1713BF695E172A6E1C24389D9D6BF47180AD91AB7C11DB35A9B6ED010E77D4</stationID>
+ <name>Talk @ WNEW-FM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384A860B662F743BD7E843F53C98070C892015F78F92EB7DF7D8B887E70A0C9ECCB</stationID>
+ <name>AC @ WTOJ-FM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853841846D40504453C9AE7856808F2091EF7046D4E2C99CD24E409F884F13AD5F8AF</stationID>
+ <name>Alternative @ WEDG-FM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853844FE77D734C2398A3F78C53644ABDE909F5B5EDE7674BFF071E8DEAB29D642C41</stationID>
+ <name>Country @ WNNR-FM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538458BBBDB7F82E0A13AC50EB7A8F3FC0A156F9BCD9595A28A599E2CC9905CD1642</stationID>
+ <name>Country @ WQNY-FM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853844FF2CA2DE381D486C6CA6F3E7C54B9E0B50360B3DD058534A65AAF716089D73C</stationID>
+ <name>AC @ WFAS-FM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384D39616C40F753EB6315746AEA7A09E1D2B9AF8963CB6DC954F93F4C1294CD719</stationID>
+ <name>Oldies @ WHTT-FM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853845693A7292DDF6767C2B5A77D44567C6B1F74635FA392D98CC96FDFF45EA5E233</stationID>
+ <name>Country @ WFRG-FM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384C94F54CAEAF3706D256619A7868D69197A50298D0227B8A3B8F43D1C1127D3F5</stationID>
+ <name>Eighties @ WABT-FM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384A3EDC60ECFA7656B2023D22DC7301364880355066349CFC15F1C1CF92264C2CD</stationID>
+ <name>Country @ WBBS-FM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384BE604A1ECABD57D9711C32550820D87054D4E0C5E254F3C5ED5804C7F3C294A7</stationID>
+ <name>Smooth Jazz @ WZMR-FM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384AAE7FF1F1C4690FE8235399394977BCE01F59C418C894DB9719C07327E9E5FDC</stationID>
+ <name>Alternative @ WWDG-FM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853841E796CEF5B5D80435CBBF7043D7ACA5EEFD52BF944E550411399D13544E55878</stationID>
+ <name>Rhythmic CHR @ WXXP-FM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853840299B8A12BA05420660847F5C451854890EE52AA5177D60C2B97D8AF3D72C9A0</stationID>
+ <name>AC @ WNYQ-FM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384A65AEC7CAA86F0780D0CE6CCB5CF022D1C5588FCE0D35F25005DBA1B1547EAF9</stationID>
+ <name>AC @ WLTI-FM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538444793AB2EBF4BF0BC244B844F6129E691D8F2A2A860A5A2209B1335626B2FF33</stationID>
+ <name>CHR @ WBLI-FM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384084E4F8D30ABCF8DADFE538AD82D62390193219C0AF0AB480C0533EE868DCA33</stationID>
+ <name>Alternative @ WKRH-FM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384C5185C6C4CB6D9DB30B03C9B5ED6B04CA409ADF994218FFCD876021F2AF8F764</stationID>
+ <name>AC @ WLTW-FM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384F7B428C2741E289F562A968F4077832F240CD12F1F43D05A9D4170A47B933979</stationID>
+ <name>Spanish CHR @ WWZY-FM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384EF8F1FDDFCBB1417FFFE28472A742C68674AF484DA7FB6FC0B3046E70AED9559</stationID>
+ <name>Classic Rock @ WRCK-FM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853847318449464BE01036BB8790295F35EFE61814973A960FBEE258F7C2660E9C763</stationID>
+ <name>Urban @ WBLS-FM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385384F95A88887957ED1FE0B6A9ECAA460FEFBDE1631A8AE12BEB496516F7D5ED0AD7</stationID>
+ <name>Sports @ WNSA-FM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538429551DCEFCF92C5F1D5F10519C2435FD7F22EBBB7257436142A9146A5A1E675B</stationID>
+ <name>CHR @ WWHT-FM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Newfoundland.krp b/kradio3/presets/usa/Newfoundland.krp
new file mode 100644
index 0000000..0d45635
--- /dev/null
+++ b/kradio3/presets/usa/Newfoundland.krp
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Newfoundland</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385377D11D9B16595E641E697405179F8C6D5B562D2D0A7D84F70287AD185594E0FA2B</stationID>
+ <name>Rock @ CHOZ-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Newfoundland_am.krp b/kradio3/presets/usa/Newfoundland_am.krp
new file mode 100644
index 0000000..10bf462
--- /dev/null
+++ b/kradio3/presets/usa/Newfoundland_am.krp
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Newfoundland</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Newfoundland_fm.krp b/kradio3/presets/usa/Newfoundland_fm.krp
new file mode 100644
index 0000000..2d928c3
--- /dev/null
+++ b/kradio3/presets/usa/Newfoundland_fm.krp
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>Newfoundland</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338537789B29E90B35F99179A0AA91933650FC46E824CA5B6BF68F576B3182B55DD9056</stationID>
+ <name>Rock @ CHOZ-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/North Carolina.krp b/kradio3/presets/usa/North Carolina.krp
new file mode 100644
index 0000000..5256c49
--- /dev/null
+++ b/kradio3/presets/usa/North Carolina.krp
@@ -0,0 +1,862 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>North Carolina</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385380B43CA5C9D73D23C4BE00FB1A5E6D0F92ED17974BC6636B4B2A9FE5A574EB8454</stationID>
+ <name>Rock @ WKNC-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380A48C44735EB1C53CCCF9470440C14862F5D40AD387E9B3F39D82B118B74F54E1</stationID>
+ <name>Alternative @ WXYC-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>89.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380986F6F292BEA7989664165F0499C8DE3F795F04C37A17977986FC5882F1F22E3</stationID>
+ <name>Classical @ WCPE-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380B33C907A650B750D57E53DCD9F7BCE3223F28C27740AD2025A2CFDEA1B0CDE76</stationID>
+ <name>Urban @ WNAA-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>90.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380CABDEA896D0025BD02FFABA6487938D4AC0F5561E89852A9B5944416E7375DC0</stationID>
+ <name>Smooth Jazz @ WNCU-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>90.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538072E14B54D3567466D3FDE34F38D6236D1ADB66D24814E3D2C99D6358515FF72D</stationID>
+ <name>Alternative @ WZMB-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380060F232488D868A40910BFDBB030524595449B138B72A4A775EAA528739BE672</stationID>
+ <name>NPR @ WUNC-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380037A6B2E30E5199850BCFF75BD5108042CBAB72FAB13EC19F8FEAE6C56EE1DD2</stationID>
+ <name>Christian @ WRCM-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538069772E915DF3D43132B39C4F4952077C4CCA935664148BD10E883D5C5739B9C1</stationID>
+ <name>Urban @ WRSV-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380046EE618560F681A6912041B45ECF6568291AA9AB4C6AE475DD318C51522D7A8</stationID>
+ <name>Classic Rock @ WKRR-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853805D4C8303BF6629F08EAE93135925E9F750F5A26F2E31959179BFF23A6D1BB159</stationID>
+ <name>Urban @ WCHH-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853807318EF4C5CB74321D2F37B03F19FFF0C0483AEA4A378FE28043F1409D3B98116</stationID>
+ <name>CHR @ WERO-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853802105A1582D67B8D3AB816FF682B58A062A66FFDFB60A0280130A1BDA48785103</stationID>
+ <name>Classic Rock @ WFXZ-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380E657771690CC94513CAFCC3872286B3EAFE21AC38B94815ABBF8657B48A57815</stationID>
+ <name>AC @ WRSN-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380AE0FAADD7B9EFBF42949996D7AD1E5FAA1B6D5BF03D0706603B2FC7198BBA071</stationID>
+ <name>Urban @ WKXS-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380BCE4AB3EC599116B9ACB595083C3E0A77ACAE801FBFD6C98676FB6E5EECDAB32</stationID>
+ <name>Country @ WWCC-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380A011C9D88DD14F29E60811F73CBEC78F451C69C85D5DB77D634CA65878D7719B</stationID>
+ <name>Country @ WQDR-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853806CB0E0E8A13801715D828AA9F6FCBA6685057BEAE634C2227057548B93ED3224</stationID>
+ <name>CHR @ WNKS-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380F16A3C5E6CF015B11219FE17B2C165305B44383038F6C3A4A38CBB30ADD47A77</stationID>
+ <name>Rock @ WOBR-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853802948F7397114CD974D04BAE94AD2A835C5BDD11FEFAC723EEA112BD203BF63A0</stationID>
+ <name>Country @ WKTC-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853801A69A25D226F19ACAF069BAD8052B49D79C33790986D94DB215DC11F6414E846</stationID>
+ <name>Country @ WKML-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853806ABA88DB2860900A1726877F86BE3196E72E1C3DC71765F3E0CCB3EAA85E7B07</stationID>
+ <name>Rock @ WBBB-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380DBA4EF4938E511CFA2A1A116A928C48DD15D17078DAD7A760D93C08449B2C665</stationID>
+ <name>CHR @ WRHT-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380305656E2759BC11F3F28D27EB95C721D75B57751F1A7D5E62DE8795C88E4D99D</stationID>
+ <name>Oldies @ WFLB-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380D5CF4B6E16E2AC74BECD33B394E8A4A4DB9DA25394A2D6298FE724C8A1B74A98</stationID>
+ <name>Eighties @ WYMY-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380E72F2DF8D6896204DD5720EDDA8536F44264229AFB40E660C34193CECE87A223</stationID>
+ <name>Urban @ WMNX-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853803F0980F1BD7743DE01928B178BBE92A232F47FA2D0846E971D3595BE9632A2B0</stationID>
+ <name>Urban @ WQOK-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853806A9831CB41293F3338A6248F5796E07F6E03D67EDF022B3B0A3AA3242287DAE2</stationID>
+ <name>AC @ WLGQ-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380B83A44F51C051A60118F87028EB9820BA80ABB9DB50FE5285FC8C204241D7535</stationID>
+ <name>Hot AC @ WQSM-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538083A93925CC7AD8F4E3FBBF930A439020FB55E5A801BFBA9638EC4B3AD5979623</stationID>
+ <name>CHR @ WAZO-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853800A939F9C3F27C8BA945FAAD468D3A6C69E8B014BC1F238FACA7ACDBB66F6202B</stationID>
+ <name>Oldies @ WKOO-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853806C7C335D07607C9FF5B638F85C979510FD0BEED8C17A7AADDB4D772C28EB008E</stationID>
+ <name>Urban AC @ WZFX-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853805AF60D3D2A0E90329A2A52C79A97DB74F0BDB812A3A8115963E597C7FFEC4625</stationID>
+ <name>Talk @ WBT-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380D4692FF11E57FB6778B7661C4825DC28D0AD1DE2D97D44D61B9B889E1DDBE330</stationID>
+ <name>Alternative @ WXNR-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853806B35B6DA85F5C35E4B15C7548E91F847A1C96E4A131A96B055B0408FD8679B45</stationID>
+ <name>Hot AC @ WZAX-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538094659CA3B68EFA78533983BE0828957BAE09952B28D0BDD3EA4C2752CC220FA0</stationID>
+ <name>Oldies @ WKXB-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538058269F4CFCFBBE11B7251B6880FD75B3242AD7955D334ACE2222DB2B53226ABA</stationID>
+ <name>Rock @ WVBZ-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853804521F81D27349D96D60DDA6C1E02613057C3FCE1953E4064AEE1F0C44A2EA39A</stationID>
+ <name>Country @ WKXU-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853804A50EDD52BE0345CCB043901DFEAE0871AC48599A3C6F217AC1021E4E82DF083</stationID>
+ <name>Country @ WWQQ-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853808621A1E0DEC04B42BE1C2DD141A630E7603DE3A909CD8C5E004C6EF407AF3A2C</stationID>
+ <name>Hot AC @ WRAL-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853805A8F09F5D6B47157C462871DABE4DE80A70D3CEADB1B20DA6AE9EF0D1973EBC5</stationID>
+ <name>Urban AC @ WIKS-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380D046D492CBEB1B1815C84F606B039643139E2E5DE3923CAA67BC4533277678F3</stationID>
+ <name>Rhythmic CHR @ WJMH-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853809D028583FD75BA076B4B4A3FD9B441934A20C66202E3341967D00FD4B032C9E1</stationID>
+ <name>Country @ WPTM-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380E3F0A12AF0833545F9AD50B51AB4149B7931EBA63C3E5A483F6699DDAB59BFC3</stationID>
+ <name>Oldies @ WERX-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538050E3C4DE6982ADDF561C215754798677EAFEAF173085C5A8770B055BFC36260B</stationID>
+ <name>AC @ WGNI-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380BD7784187EB48D6D45B5462CD55F645DDC6CCD1F47C20B0900A49EED2446C0E5</stationID>
+ <name>Eighties @ WWMY-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538030D41CB5512EE8676F3503C1045C953B5113592EEB9B37F83D8B5D825A4B062C</stationID>
+ <name>CHR @ WCBZ-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380DCD723568574235DA05B17DBCD114DE5CBBB6C8E7844F55F9480308B21E2AFFB</stationID>
+ <name>Gospel @ WNNL-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380CFB2096013D46BBA70320933EB6DF56E0E488E4508440741362A67225560D2FB</stationID>
+ <name>AC @ WCXL-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538094909C816D8AC10C90B953157800F2A4EADB0D8DA4B7EE87A72F2B510757A6FA</stationID>
+ <name>Christian CHR @ WJSG-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853804751365AE6D9F063AE6B106A4B61F9F0427C094BB0A74C48E4993AA8C84A48E7</stationID>
+ <name>Rock @ WRQR-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380DE722283E6188189ECF091329E95EABD285AF83E63E691FD8CDBBBE5C32D3DB1</stationID>
+ <name>Country @ WBSY-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853800C7E1B3C9DD51A236E738FAF5047FA6B5733C5264C4D6B8A355444777462F268</stationID>
+ <name>Christian @ WFMZ-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538079E7FFE2501AD2DAB21056E782EC8C68191CEE71D761993FEAFBACD8373E6CF5</stationID>
+ <name>CHR @ WDCG-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538093EF31B62D6065A8A602FEBE8F8577EDE2DE9C10AF667827F9D9219845163BB7</stationID>
+ <name>Active Rock @ WXQR-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853803836EA2A51CD7F13C1C5224CE1EB7F12F474F28812804B3A3137B6BF5FCE4462</stationID>
+ <name>Country @ WRSF-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853806A6AD947115968FA9B269507F8E178F1B8C653AFD8EAC1089A3F539EE2C2C1D4</stationID>
+ <name>Rock @ WRDU-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380FABD966B614EA872F705CE2A37F3A300C13DC8ECC0EB9498D2FE9BFB5335CA2F</stationID>
+ <name>Rock @ WSFL-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380AA9FA086DC67DCA4A42DD59538A880388334B95C13F509D05A6054F74766361A</stationID>
+ <name>Classic Rock @ WKQB-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380EE765214079BE2ABDCC8B07DB04F3939BC9BA7F5B782B0D8F90C3DBBB83E618A</stationID>
+ <name>Urban AC @ WFXC-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380F3B59E535F7E0DED8888BF14C5CF13B13B39001415B1EB03A7BFBBF4120BBD15</stationID>
+ <name>Talk @ WTKF-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380CFD5EC025FC16EACEF1C0F9D106223F118DC5B2B73A7591A597BF6D9298DD887</stationID>
+ <name>Alternative @ WSFM-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380D3839D4F4C8F7B81C907295FFAD8550B909D5C540D96EEAFBCDBC5EEE08CDE34</stationID>
+ <name>Urban @ WUKS-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853804E00D4CFE2869814AC9B96FC12A7D0B43002E89ED9A9C745EDA6EC3FFAB6C58A</stationID>
+ <name>Oldies @ WNCT-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538033D9FF1908BC612E5C3595EDFCE2CC8273C689386F2461B7574F04EFAFD035D8</stationID>
+ <name>Nostalgia @ WIOZ-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>0.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380CAFBBA75BB52F233D498CD78711E84BCF94CBD387F2539794C94873106CC58E7</stationID>
+ <name>News/Talk @ WGAI-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380DFB40BF3C3485EE369E4DD2619B68384FDA9D1FD13E9DC7808064B5B09249D39</stationID>
+ <name>Country @ WKSK-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>0.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853805F772EA5872D78B368B2498D024AD4A3D05347594075FBC0AE96D41A2C52201C</stationID>
+ <name>News/Talk @ WSJS-AM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853807978B60135DC26A5E867CF8885D8C10C92C90D8E614BD30F6ADD9E0C4B58BA0E</stationID>
+ <name>Sports @ WFNZ-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380A3066C0BAB3B7A5AEB5B76C57CFB9CEF914C08F724191B9A448E1F4EA385582B</stationID>
+ <name>Country @ WRGC-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>0.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380C3DACD145ABE3B3753B08B6E9093AE1E8E53489AD12670B2B3F06FF64A4BA222</stationID>
+ <name>Gospel @ WAUG-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>0.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380109C358B1E06A95DEC2A4AA94DC6BB4591996E8978490D5A6657E464C05C6918</stationID>
+ <name>Religious @ WTNC-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853802E060816463F605683CEC56EB0699CA82A11E6A744A1DA7ADF5053F1CF04CB7E</stationID>
+ <name>Religious @ WTRU-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>0.83</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380578DA53DA7499917F5733EDE83027679C48DCD119957642FA96ED4EE0C9CE779</stationID>
+ <name>News/Talk @ WRBZ-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>0.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380854EA03C7F02B11F8F29BED3705955D91BAA52A150AA3958584744F3EB20DF36</stationID>
+ <name>Oldies @ WPCM-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853808762C503AC3F4E4E7392EED2F81EFD921136BAD818873103EFEB6033482D9692</stationID>
+ <name>Religious @ WPET-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380FB83A44642F0D45441EEF87BCA8A3F123AF4447A0E6BC3DCC437AD2E3FA3CDE9</stationID>
+ <name>Country @ WRNS-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>0.96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380AA1731CFCC9667AC3E5000C4D07B71CC7278EE091D15379B3433CF061E60322F</stationID>
+ <name>News/Talk @ WAAV-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380B479F3DC3CAD55A998EAFB8F627133EDFFA95FEDFB173924EA93C65531467B9A</stationID>
+ <name>News/Talk @ WEEB-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853803D2433CB17B99C76777953FDC6A94A430369BF6259EF9722DE19B6B690DDA40C</stationID>
+ <name>Religious @ WFGW-AM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>1.01</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538084D5816FCC703BEED73F0FE508EA97E68C4B3E29BE0BB55DFCD4AF3ED90AD45C</stationID>
+ <name>Spanish @ WNOW-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>1.03</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380B5CC75536374C5D25D97C633D9B580C90B6441BCD93B4F44E8496160621B8E75</stationID>
+ <name>News/Talk @ WBT-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>1.11</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538049FC5B6DE87EA7F81C6DE45207AB1CE80F3C90EB349D333D689DEA2671B700B7</stationID>
+ <name>News/Talk @ WCXN-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>1.17</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380FEFED531066E5AD060D1F2AABE1D989604A7D8C864373DD31E5D328665E83B5E</stationID>
+ <name>Country @ WIXE-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>1.19</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538004BC75E1541F442FD988D0260FCE77DBBCF791FBD6EA0DE6C5DE109FB29FD3BA</stationID>
+ <name>News/Talk @ WSML-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>1.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853806A1F162F0C22E5730826B382C5B77972041CB6785DFDA5006A9B3AA02D909A39</stationID>
+ <name>News/Talk @ WLNR-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380DD106D605074FE4DD86FFBF61B8A4D2FBD6A5E28BF0DC5E62BD1D5E6175485E8</stationID>
+ <name>Sports @ WGHB-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>1.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380AE71DFD5483B84E8B7279B657609B47F23EE0DC2F8738D9985E22693E3EFF259</stationID>
+ <name>Country @ WKXR-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380BF605A7CF1442ECE5724105FF7815F1E1436269DC81947885A7B85B5B70E3300</stationID>
+ <name>Religious @ WJCV-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380CEFEF0931749E577D9D597BD67B3C78244448B4276213626C9AF79D6828B2465</stationID>
+ <name>Country @ WKRK-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380F7F2DD8AF12BC46ADACD0559D9935B9C5EF3CA7FD1208A428C953E35DB27859F</stationID>
+ <name>Nostalgia @ WANG-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380F8C0D23C90EABFF86A0E47678A732BC4DDDC5D528A22C9DD151AAA9269216488</stationID>
+ <name>MOR @ WRHI-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380DE6D267092197AB44EA8CED28DBE2006A0178B82648AB02185C9844916F65977</stationID>
+ <name>Country @ WTZK-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>1.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538001AE198C8AA06445C2E2BC96D21B7D64BB73D5D911D9449FDBBBC7AE4DB9465D</stationID>
+ <name>Mexican @ WTOB-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853804830975AC32F598591BFC93CD01E6C31DEEAF6A1EB08DC9DD4FF76ADF656B952</stationID>
+ <name>AC @ WADA-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380891BBDD259FC3C60D03E116EF428219D3F801CEE96C2921E75D19F4C9B56D84C</stationID>
+ <name>Sports/News @ WSIC-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853808DBCDDA45DEB432E38490EE4537D493CE00ACBA2596560B83BDD48D7E4F0A79E</stationID>
+ <name>Religious @ WDEX-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380349FD620BDAEDBDCEC2463CBEE30CA21B0079E86DC0CFFBC8221E4C90FE2DE57</stationID>
+ <name>News/Talk @ WLXN-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853805E90B549ADCF476DD464A7FC3C1C66BBCCB4CA6C872640DCF8C2763D6FF25DC8</stationID>
+ <name>Nostalgia @ WHKP-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853808788B934EC308D19656386E7CA36AD88153D822910D7B17F4B6F29E6EDCEDBE6</stationID>
+ <name>Spanish @ WWBG-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380F1B96ECEAE7488C3EB982286025DAC73A9556B152FCB5FC4E0C57D59B51E8D00</stationID>
+ <name>Christian @ WPFJ-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>1.48</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380759E7D7F5B987F9EFB478DDCEF48F0F0A3229B6858DDF1E64E9286CD087E490A</stationID>
+ <name>Religious @ WWIL-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538028012C8E2EDC52B2B5C43068BD1FEA4E50E20F1D282FF96F9AD04281003205FF</stationID>
+ <name>News/Talk @ WFAI-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>1.51</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380128E09500B2D6D54FE0DD3603690C16436AA0FA5729F175B04E114872A8F1162</stationID>
+ <name>Christian @ WRTP-AM</name>
+ <shortname>104</shortname>
+ <icon></icon>
+ <frequency>1.53</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853800D298C2496950F65275841B1534A21C66B45A024389FA4568B8AF6639F0F6842</stationID>
+ <name>Religious @ WYNC-AM</name>
+ <shortname>105</shortname>
+ <icon></icon>
+ <frequency>1.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385380925DB51742D38A67EC41E8CF91589569B45889EC44C44F926709FA0D55858569</stationID>
+ <name>Religious @ WBFJ-AM</name>
+ <shortname>106</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/North Carolina_am.krp b/kradio3/presets/usa/North Carolina_am.krp
new file mode 100644
index 0000000..fab72ee
--- /dev/null
+++ b/kradio3/presets/usa/North Carolina_am.krp
@@ -0,0 +1,350 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>North Carolina</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385376D1AA552498D08B9B1731283254BA2E16C2F8826DE56D0E3211976B84F6607C28</stationID>
+ <name>Nostalgia @ WIOZ-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>0.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376017C12573B61E771F36AD37CFCCE1C95651CF31B8ACED81E3155062A61BD8305</stationID>
+ <name>News/Talk @ WGAI-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853769C5AA26B0584C2AA61AE3188048FD13B7240431635FE7CFB8476943A76E82A0F</stationID>
+ <name>Country @ WKSK-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>0.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537671741FE2E1C551B66C0F2FEF4111133334EE244CC0E9E6A64F3B8EC671CEBE6B</stationID>
+ <name>News/Talk @ WSJS-AM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537631B85ECA62A81153E1E17739ED8C813DC522ACA2DF299E1A2F8738AE692979FA</stationID>
+ <name>Sports @ WFNZ-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376020CCFF411D35897C2201711DD2D52BC28C6F42A69CBF3F4AA1EFD85A94650E2</stationID>
+ <name>Country @ WRGC-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>0.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376A04F76F13C6CB7AC64126188E2087F2F60128879F27584E4B4D8FA4E99FD92BA</stationID>
+ <name>Gospel @ WAUG-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>0.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376189FEE49ECB6D27CDFFB6E03733B2CCFBB3A056816DB0D234876307FEE9D9290</stationID>
+ <name>Religious @ WTNC-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376B67A537DB9CCFC2CF35E946290734A2DE99E6AC41BF567D2043AA597A2D93ED0</stationID>
+ <name>Religious @ WTRU-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>0.83</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537603CA0DC0C35CCC6EC08AFCC35F901A7EE8CC9806FD43BA4AD1D2A016E573D1D4</stationID>
+ <name>News/Talk @ WRBZ-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>0.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853767BD5195B58AD27C6863ACB20ED591F3A8777730F67F1F426537C0CCE6CFE9057</stationID>
+ <name>Oldies @ WPCM-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376AF059DAD9E913F685ED02FEE5CEAF7770793E06A1819CAA454AF2044FD241327</stationID>
+ <name>Religious @ WPET-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853762E26A6CC61319A2909D1D7B759952956EC131909505CCB778276294016EEA7D9</stationID>
+ <name>Country @ WRNS-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>0.96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376E81ED304421DE3A91DF7C08CB4332805F7D07B6ABEF317C9B7467DD43E269380</stationID>
+ <name>News/Talk @ WAAV-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537648238D41E11A87D36C06F46ED4D6251B745433B250AFABE27039EC288BB1DBF3</stationID>
+ <name>News/Talk @ WEEB-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376AD2241DB316B7E1BFB6BACE5A23DF7BA0560638097F2AABC807C03A8D9E7DA62</stationID>
+ <name>Religious @ WFGW-AM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>1.01</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376363942BC4CCB6DF37B11A03D0EB7BBF73FD4A8ABD60E1FC1C419EC54AE4D0E7F</stationID>
+ <name>Spanish @ WNOW-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>1.03</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376748EAE283E3331D9D99F930D13183C71AF7ED6FCEF43C4B0BAF2F4E74A538A1A</stationID>
+ <name>News/Talk @ WBT-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>1.11</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376FB9E6C0A7AEA5B2F1EF824FF68EEA5A65FB28B20B40BAE755B947332AE483E23</stationID>
+ <name>News/Talk @ WCXN-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>1.17</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376C86B464DD33D79C4FB667585AF5F36E4426F8AB66B5E7773A780248AFC3683D3</stationID>
+ <name>Country @ WIXE-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>1.19</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853766D8BCE6BE50D6B2B63D84A4D01E575FF6AD106BB251BE932440C6FC9F6B65A3A</stationID>
+ <name>News/Talk @ WSML-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>1.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376806637F8C282DFA1718AE5F65809D1ACD2BD339C2D8E87254C83749685976997</stationID>
+ <name>News/Talk @ WLNR-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376A09842AABD026446971BDFBA1B71EE1E684A2E06C93E461587D3DCBBA85816D0</stationID>
+ <name>Sports @ WGHB-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>1.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853765DEDD29F6236426E6E9B88A3C59A225F9BB8B6EA8ED5619AD3C8140604B565AD</stationID>
+ <name>Country @ WKXR-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376679FD186CB3C5671093D184B5188F2A518D0FD4164B32BD4D14B426DEE381E00</stationID>
+ <name>Religious @ WJCV-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376D7A3DB389C562CC352E7C8AFC7AAA4AFAF4DEEBFC9DA168BF8439A4FC23CFD40</stationID>
+ <name>Country @ WKRK-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376D3476C2B7198608DD980957B47E5D3539FDEA9B6CB284FD5C7C4248AF3BB84F5</stationID>
+ <name>Nostalgia @ WANG-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853769494025DEBFE2F34DE1A96A50D405B1673C70E097F92C1FB3114EFE9B85BE009</stationID>
+ <name>MOR @ WRHI-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853764AEF3778AD4E1416278077C58D8BC4BC7E1637D89A10319BC09CEAB5F055C702</stationID>
+ <name>Country @ WTZK-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>1.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376B7D65A8E74DFA25BB210BDD3F38F41552661AAA774A81BE2D121060CC644F803</stationID>
+ <name>Mexican @ WTOB-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376E25777AAC93D001A009E842F7F830E625759ABAF188B94F06213751A701906A6</stationID>
+ <name>AC @ WADA-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853767B245F60096487B394DF42F56876496B2D6B42FAE62E45FABB1151FE9EC700D0</stationID>
+ <name>Sports/News @ WSIC-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853760317682C5F178EB686908978FBD49F0819DA5502FC6BDB1DD246FB6C0EE85D1B</stationID>
+ <name>Religious @ WDEX-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376EE17D5F8338381EB2FE2EB7A9DA135CED3C5B5E4BF63084A859E30B099225C69</stationID>
+ <name>News/Talk @ WLXN-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376D9A1F6EEB750E4222A2AC0FD30D5EB2D95DC82B843E1CB8BBAEA97D837C6CB3C</stationID>
+ <name>Nostalgia @ WHKP-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537608268BD713FD2A1D0DB8C4803EF78B4251B76CE8DB6C5D09DF44C24D44F3EB3C</stationID>
+ <name>Spanish @ WWBG-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537657778B6E1F7B3FD655F51C04E91CB1765EB0B9376E6467B4407C7A204510E5E8</stationID>
+ <name>Christian @ WPFJ-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>1.48</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376D6AAE6CEE531A97EE1E3816E0D439F4A131D05857A6A21330BD31EFDDC1EB85A</stationID>
+ <name>Religious @ WWIL-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853768DA7EE687F0D6757DCBF92DBBDD5441A450EF7BD89F58C6B3CC796455E38FA3A</stationID>
+ <name>News/Talk @ WFAI-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>1.51</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853763BC9460C5C3C15B043AE405D3A9789178181A02CF84EE0B8B7E63B2D1FFC3690</stationID>
+ <name>Christian @ WRTP-AM</name>
+ <shortname>104</shortname>
+ <icon></icon>
+ <frequency>1.53</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376B4E50BE465DE1E53B4FF0629A32C37FA19364B9A031E88E7C110D0F547754675</stationID>
+ <name>Religious @ WYNC-AM</name>
+ <shortname>105</shortname>
+ <icon></icon>
+ <frequency>1.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376D787B1310F8EBEA35C839245542DC787A9447E352440EF07A5954FB27D392F1D</stationID>
+ <name>Religious @ WBFJ-AM</name>
+ <shortname>106</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/North Carolina_fm.krp b/kradio3/presets/usa/North Carolina_fm.krp
new file mode 100644
index 0000000..17a8df0
--- /dev/null
+++ b/kradio3/presets/usa/North Carolina_fm.krp
@@ -0,0 +1,526 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>North Carolina</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385355160E3A0A50BD8E73BE2BAE186D5B961AE704EB77A448445BBB4663CB3A38B74E</stationID>
+ <name>Rock @ WKNC-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355A3FB32447F4B384427530434FD0B468ABFBA270B5DBA9E70CBE06577843E561E</stationID>
+ <name>Alternative @ WXYC-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>89.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355FF070CD43B5ABDB205E46F0D0BBA3826297780F38B1B1BB9D0700F0A967B4942</stationID>
+ <name>Classical @ WCPE-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853559A7B2B9A5CB452761017E3A8693F4A101F5EBAEB016062440FACE3B63FE8E3F8</stationID>
+ <name>Urban @ WNAA-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>90.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535545B130AC3B00AD46A88E2DAE113EB0EFE617B01A2E697DD2A3CF8E8173E39632</stationID>
+ <name>Smooth Jazz @ WNCU-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>90.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535515C5CE3835A5BB3E2A58742E1DE7A751DDC9A2C0D4FD05713D2492CCF798F07B</stationID>
+ <name>Alternative @ WZMB-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355C1CC92D3C53C6617FA103A23486BA01D29C13F5BFB97CA484F492066C81AF1B7</stationID>
+ <name>NPR @ WUNC-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853557E5267A7D65C3947FAB101A4A368DE96CE727B3CCB6FDAEAB4701F217127FAFC</stationID>
+ <name>Christian @ WRCM-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853559A07B51986B51B646F67BDD17FC2C389A0BAA1EFCF94762F2E130FBC7830F0DF</stationID>
+ <name>Urban @ WRSV-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355D8220117974B928D3B471122136BE07BD7A653C5D6C360A8FC2B311429F4258C</stationID>
+ <name>Classic Rock @ WKRR-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355D8EA1D11467BCBC1BB161F7E9080559068A21104AD2444DF2550526E47B76A81</stationID>
+ <name>Urban @ WCHH-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355383F13C537863C3246647DF4B306C4F5F6C391D0D0C7CA1DE2B682DF3337258D</stationID>
+ <name>CHR @ WERO-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355A87BAF5832EFD0CF16FF234B3300F4267724AD8502EE6C28DC048012A3E986AE</stationID>
+ <name>Classic Rock @ WFXZ-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853551F78A0B84CF5D9FB564BC28CBA461FBD7FBC5E996BA61250C351CB237A83F348</stationID>
+ <name>AC @ WRSN-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535552EE3B3336F948509429C8ABAD614FA58B85BE9E1FCE812379263A8D95A07BFD</stationID>
+ <name>Urban @ WKXS-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535542504922FBBCBF215263FECE16D09A4D58D597130A0F724A3AC1104173CC1C61</stationID>
+ <name>Country @ WWCC-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355F2F8DAA038CE26045E3CBEF317485A29D756490245681D142789CA43DBC37D1F</stationID>
+ <name>Country @ WQDR-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355D6510671400B12B19C94C1CC9C3CCAD925DB777F154CC6FFEE2DDDE842D6FFF8</stationID>
+ <name>CHR @ WNKS-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535540D9BEBBCDED7F59D08F391BD751BC40C1D19FFACEDDB4914707227A65C03C68</stationID>
+ <name>Rock @ WOBR-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535582F42ACF8F8053E9653D10740F0CF5F213E3BD4956170AE80B73995E808E3BCA</stationID>
+ <name>Country @ WKTC-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355735266E03C310FB960D471EF301DFF550527B0E3AE0AB8344EDAE3758980232B</stationID>
+ <name>Country @ WKML-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355F6B35DD7D3050B642F6376B6EECC367FD85E0ABDE56AC554C80D2D573BA97658</stationID>
+ <name>Rock @ WBBB-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355AFB2C601DA281B15F9CC6D4E29881A709ED576BEF4C20DE1A5B4E780DD0A3C39</stationID>
+ <name>CHR @ WRHT-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355D25178C05FBE788AAE19CE351F91263F8C86FF914C99EAED5E11C43D062DE834</stationID>
+ <name>Oldies @ WFLB-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355058D93C7C32891DA22F7B0695F647E0BA0A394873900DB75C20CBD8C9E7A7A96</stationID>
+ <name>Eighties @ WYMY-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853552325A972B551E4E988D0D5628F04F9032266E50FCDF07A81122D35B54A513D91</stationID>
+ <name>Urban @ WMNX-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853557205C17DBD8D9A7D3202CA78CF086D09E11D93FC1DB94426AA3C1B7C5A401F65</stationID>
+ <name>Urban @ WQOK-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355E9DC57C90A96CF7C306EE5591EF026FE65F8CD39B0E865E672189FED1465E005</stationID>
+ <name>AC @ WLGQ-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853557D59611EF14A1CA19A0E98C1610827623045EB3644F4B46D7C8B717FD91995B9</stationID>
+ <name>Hot AC @ WQSM-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853557D1BC5E70FF02D07F2E4DE6CB95E83482F71B24E2907B97103B0F50DFF71C40E</stationID>
+ <name>CHR @ WAZO-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853556A43B0FD6EFB00F253F0FF3155220406BAACADD6AEAFADD5286A2DA2DAC7C574</stationID>
+ <name>Oldies @ WKOO-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535548D641B9C1D77D0CBB3397B2B39E8661B25DE841B2AECF2207F726BA53618D56</stationID>
+ <name>Urban AC @ WZFX-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355FF4CA8748CCA49ED4A9CAEA2AB730FDB49D61E49CE5727B3930B7921C9621B87</stationID>
+ <name>Talk @ WBT-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355A4DD0147CD6D66F207453AE051B6FF9CD7A5A97D9C734BE1313A0314C3409289</stationID>
+ <name>Alternative @ WXNR-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535513C1DA2B93E3C0CAB5576D926AA9D40D80EA155A12BD8BACE9B79F4DB7133964</stationID>
+ <name>Hot AC @ WZAX-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355C309EE45EA454688EBAB42C58065413D3EB08F306004B26A36CAFB69893841E7</stationID>
+ <name>Oldies @ WKXB-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355836B77E74AEF936101FC02FEC28019024290A55CD69D49D5AB893D28866299D0</stationID>
+ <name>Rock @ WVBZ-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355B3A5C3E5F84474D5E89C5A23D2107A2114ABA3F0073FA73868B4D51784D6BB23</stationID>
+ <name>Country @ WKXU-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355A4A512EEFCC808852FC5F6F04D3B1DB84D8BD6F2197AA050A7C8882EC97E8586</stationID>
+ <name>Country @ WWQQ-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355AF0AD867B959765309B098F6BCFB4963F532377C05913779DCE7177078BB189C</stationID>
+ <name>Hot AC @ WRAL-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355B928EE43C334FB15F57864D75A0DB64EC518CB81CF3A5845EE01257D3B82684F</stationID>
+ <name>Urban AC @ WIKS-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853559146CE4B68DA13A2D905D896F6E22A335D169FC90E74ADE09B67D1D472CD6FB8</stationID>
+ <name>Rhythmic CHR @ WJMH-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355FEBF387D09D354752C8D6288FBE4B2DD0EC3D15511317827AA61C85627A86E05</stationID>
+ <name>Country @ WPTM-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535516C433A2FCDA37EAAFFB2847DD7255CCA19785C657B8AC17A7AFAB72CAA4559E</stationID>
+ <name>Oldies @ WERX-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853550DED9A047FDC412464A1480863EB02534AC12DF6C4D88BD109DF33606032040E</stationID>
+ <name>AC @ WGNI-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853558F58FBC4BD8DC757FB88ACA26CDE6D9EDDB3CBADE534CFB217D5C17059970D89</stationID>
+ <name>Eighties @ WWMY-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535572B992BAB4B63CB80F506C849B08FEE8D51C47828E759FE39966F0FEF656C33B</stationID>
+ <name>CHR @ WCBZ-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535544320CC40EB50515AB2D88551B6482ED9F195A1F92205B9A755DD0D7BFE45580</stationID>
+ <name>Gospel @ WNNL-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853553B15D18F3D198C5BF65CEF9E9BEFA86FA990576E7FDF321800326B6B850475FA</stationID>
+ <name>AC @ WCXL-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355EED7AE67C6DD93E15779E4FB8295EABB6C5614231720B70F94D5A8C9D4F7A895</stationID>
+ <name>Christian CHR @ WJSG-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535579969EC6C8963B8112047D70F81670F27036BC10B2389BB477475AA11607F9FA</stationID>
+ <name>Rock @ WRQR-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355D84E08B421734F440827D3F3215BA4D76BF96EE48BC434BC81CFA27B6CE49F66</stationID>
+ <name>Country @ WBSY-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355C002289E3CFE776BACD1E3799225729005BA3D70054492DB1F1487B237C5011E</stationID>
+ <name>Christian @ WFMZ-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355AF54DBEA9CCF0142337AD17B2E0AFD9FB372AB45901DBFAD5D3F492AE1C68713</stationID>
+ <name>CHR @ WDCG-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355C5E7C1375250A090A7FBB1EC85701ED4A24DA27903323789D85C2D8BF97D9EED</stationID>
+ <name>Active Rock @ WXQR-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853552D3DC1EC7ED28B22654E6599B94A2AF33291AF15A06280E7F63D6EA019D180D0</stationID>
+ <name>Country @ WRSF-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853552C65B256ED6A8798EF948257BB21786EF22C8C138B9848A67229A7924293757D</stationID>
+ <name>Rock @ WRDU-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355A7FA9947DDB73E9EBD330A452CBE9950F8570D06D880D1BA55E39F5E12F40007</stationID>
+ <name>Rock @ WSFL-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355C133894424FB00441D19D03D749855A16284067E471E3D05518DCB63556A3A38</stationID>
+ <name>Classic Rock @ WKQB-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355428854236D11270CDF71C8B01E3B79D6A7B0B642CAF949733883340AA31CF80B</stationID>
+ <name>Urban AC @ WFXC-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853558472ECDEC460D33A22E4E41313E6D0D27327BBC501E449C39D465E548D5D04E1</stationID>
+ <name>Talk @ WTKF-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853552D38E6F84A9C7CD7D7D1FD85322DAFAD5AE8DBD1F827369C62766F9365A91757</stationID>
+ <name>Alternative @ WSFM-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853557B28F30653DBFB81153877F004A9FB3C05F38B030113F872D7F9CAFFEB49AF0B</stationID>
+ <name>Urban @ WUKS-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355DF62B5891B719DC37B08AE2892FA4A8A6B36FC2D271D3BCCBF0636964BF20DA6</stationID>
+ <name>Oldies @ WNCT-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/North Dakota.krp b/kradio3/presets/usa/North Dakota.krp
new file mode 100644
index 0000000..7fe2efe
--- /dev/null
+++ b/kradio3/presets/usa/North Dakota.krp
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>North Dakota</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338535588C897CB90BE187C59D1A007E2E84DEE6462DA30E6C8A6AF1B779FD360F328D6</stationID>
+ <name>Classic Rock @ KCCM-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853555FC16D42AC21D49768E0743FC843CC81213A4F789E37DE1C058DDD7821FDDD15</stationID>
+ <name>Smooth Jazz @ KDSU-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853556D93B47685D55FCB9584BFF15065283A641C3B318E8BB583DAC4B104672A23DD</stationID>
+ <name>Country @ KFAB-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355080A6076CFDB8703024ADEFC59742F338BEBB6B3F1899C1D94B935A86FD01DCB</stationID>
+ <name>CHR @ KKXL-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355CE42E89F990BE93C52E60F98711DFAE087FA7616F26D5A60ACD4B09B0E7C5E09</stationID>
+ <name>Classic Rock @ KSJZ-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535571909B77BB6E60D350BCBD6F959BF2697467AC55A6D47CD62AB69164C6A75FE2</stationID>
+ <name>CHR @ WDAY-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535564BF08D1259ADD2028134E5B5AF7FE1AD06120BA21F608A092064BEE7C39BC79</stationID>
+ <name>Country @ KNOX-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355B4846A523A46BECF24D931F4A9478B5F888FB3DFB35DD14166E83FB667E5AA29</stationID>
+ <name>AC @ KTHC-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853555CAED6F1F51237058370099369435B6A607EA6105E0920237D583871DF764E80</stationID>
+ <name>Country @ KYYZ-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535515A25C831286D36DF5A72B452DF686A7A85F7F838812EFE06AB02CB5602BC9F1</stationID>
+ <name>News/Talk @ KVMI-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355AEEF2D1B102DF5A4BDFC512C3C2595E4538883C20E64F03981DC7F01DE1F3890</stationID>
+ <name>Country @ KYCK-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355B392503DBEF551B5ADFD3F5A151ADE57F473915F4CECF955648A0BC8E230986C</stationID>
+ <name>Religious @ KFNW-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853552AB369358CDB8A4423BAEAF1F4B3AD46A1D544A3EF915634C59FDA5F5D1ADF08</stationID>
+ <name>Active Rock @ KQWB-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853559FD79944D93D6089ED9C8FE6229AB736A2A3D5C93EFBD4603DB1BAA561E45136</stationID>
+ <name>Country @ KVOX-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853555B5D76646A9B68B171F68C486BECA0A8559C15F448A63A6F4632DD4FB5CDAB3B</stationID>
+ <name>Classic Hits @ KSSS-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355DB645E260AC1E4D2DC033ADD0BD0E4561FB3576B242745B5E3ED020C28373F4C</stationID>
+ <name>Classic Rock @ KKBX-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853553A44FD3EB37577928E764E01B4E5993F4DABE16CC9D3B52ADDB8959B9A1AB958</stationID>
+ <name>Hot AC @ KZLT-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355A8FC7D38FAFC7DC1A51B7B942AF79CF10412A53B472AB343ABD898F9774BB9C6</stationID>
+ <name>Religious @ KNDR-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355C385FD59D9B1EF1972160E21FB281072602BF25F4B5860290B579B60F2224475</stationID>
+ <name>AC @ KLTA-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853557EEC153ABCC154EB21AD0B0D890998B9AD4D498DE77951946782BE98B899399A</stationID>
+ <name>Country @ KMAV-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535593BBA8083ED7C3E9C3E62210CF244EFCD7F5CBF3032C091624E55F26FF3C87F2</stationID>
+ <name>Country @ KQLX-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853551CDC235F5D8F8A7A2B17BA6B2A8558B41DA8B71C788D4DA187022666A74C468E</stationID>
+ <name>Oldies @ KGWB-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355079D8C6659E5785853A8D3B4CF2D9758EEDD362EC595374AE8CC26D2C28CF144</stationID>
+ <name>Classic Rock @ KPFX-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853551EF27663AB7C25E4973CF77E2FB764AFC7E7D3993B36E1ADE394F48CD8860604</stationID>
+ <name>Oldies @ KMAV-AM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>0.1055</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853555CDE1D6EC83823C0CFBDDCE43C17FF780877BD14822DE74EC81681748EF8347A</stationID>
+ <name>Full Service @ KFYR-AM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>0.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355DA4FE83B783E82E0C0CCF14D17E33388E9E5161AB14138DD36B8063A51D5DFFE</stationID>
+ <name>Country @ KSJB-AM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853551FB600F2A60022543F7234052464FC304A7692E228403377FA3859B39BDF7CB4</stationID>
+ <name>Country @ KEYZ-AM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>0.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355060A5E5F6709DBDBBFEB061B01E5C7959C37ADD007A051E619EF022475A884BE</stationID>
+ <name>News/Talk @ KFGO-AM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853552D9129E4691708F5E7204E2F77F6838F9037227E232850A6C7BAE1A30590C0CB</stationID>
+ <name>News/Talk @ WDAY-AM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853556FA0543DC2F6E68DAB757CB74B54962EF390259C33D7A81093617926E75637C6</stationID>
+ <name>Country @ KBMR-AM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>1.13</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355BFA3768E2BD17A770AD1F6C565E8EC56472C7C36545A5D8D5C0D2FDD1E3D2F1E</stationID>
+ <name>AC @ KROX-AM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355B8A63D6732BB806F965B237F10DC013D9FDC1DA09CAD64AC75E4153A420E6846</stationID>
+ <name>News/Talk @ KVOX-AM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355D129530422EDF13F1E37C1F4F0DEB7EC293AD58DEED60A3DF27EBE2E4CF5F357</stationID>
+ <name>Sports/News @ KNOX-AM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853559C207EE01CFA4B20A7EB5AF29E65053050EE4EFD8824082597AAC7C446CA6E7E</stationID>
+ <name>Country @ KBMW-AM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/North Dakota_am.krp b/kradio3/presets/usa/North Dakota_am.krp
new file mode 100644
index 0000000..db17b88
--- /dev/null
+++ b/kradio3/presets/usa/North Dakota_am.krp
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>North Dakota</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385376870FDA1A52C34C8E036CDC0B25FD9DA76C518C4176558C38C5125DCAF0813DD7</stationID>
+ <name>Oldies @ KMAV-AM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>0.1055</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376745016600AAE1EE8A75D6CD46B326B868E9648F660FC4B38D3D00A5CE0CC4238</stationID>
+ <name>Full Service @ KFYR-AM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>0.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537664DF4FE6FE731E68863F5A99E6661AF1106E522F2AE75C5F2CEC7CFDDE175A18</stationID>
+ <name>Country @ KSJB-AM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376C7C12D859F7363ABE4C66249EC5A6D25036F83EC90F36F178880613A25CBEBD8</stationID>
+ <name>Country @ KEYZ-AM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>0.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376711B2AC0D22119BF576A3F6F22553298300BB9F2D532D01F7C4462B2482E00B6</stationID>
+ <name>News/Talk @ KFGO-AM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853767A984FF5C70E8B6C7BD6266336D0D59A302178F03BADB3EAFD4488A465F47F65</stationID>
+ <name>News/Talk @ WDAY-AM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376349F45B3D66E10B0ABD8943897AA4396E2CC4EA268BA5967EDD0C3E28AB3C804</stationID>
+ <name>Country @ KBMR-AM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>1.13</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376E840673B2915300D34151F5E1B39656972E6CB38F5EB5E6496DA4FCCF38108E4</stationID>
+ <name>AC @ KROX-AM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853763DC83865001488E04C73AB5B1B82038ABA30091A664751CB18D58CF948D33A8C</stationID>
+ <name>News/Talk @ KVOX-AM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338537656ECDAB311EBBB7507B300956F93F0B85AC0837258BC7DB86E09224C6C9DE044</stationID>
+ <name>Sports/News @ KNOX-AM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385376349B54A0EF4CCE90D01E9261794F9A08C88FFD220E6A99CD2FDD64AA240FA24C</stationID>
+ <name>Country @ KBMW-AM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/North Dakota_fm.krp b/kradio3/presets/usa/North Dakota_fm.krp
new file mode 100644
index 0000000..fc3eac8
--- /dev/null
+++ b/kradio3/presets/usa/North Dakota_fm.krp
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:53 2003</changed>
+ <country>USA</country>
+ <city>North Dakota</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853554499450752916F37B6C403BBE48C3A0013143D4960F73E9DDFF2C1E4B935FF5F</stationID>
+ <name>Classic Rock @ KCCM-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355A6608661ECF4AC52C858A793806DE56B9175834D44AD3A3EEC5B5EF19FFBCA38</stationID>
+ <name>Smooth Jazz @ KDSU-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355640E57CD152BB299147ED2273C1EDB5C378A453F42FC029C32E1ECB7970926E0</stationID>
+ <name>Country @ KFAB-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355E7CEBF323A0430C611E93ABE92BDDFFFCD8CF356DBC2ECC2218FD8488627EC16</stationID>
+ <name>CHR @ KKXL-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355D96E6F50B774CED088E424E5AEECA850921B8DDD3CD8E649289198A167571F24</stationID>
+ <name>Classic Rock @ KSJZ-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355BF1BA3381D16C0830BD43F2A18467A31E5089642A9A4C3908776026EA2260A3B</stationID>
+ <name>CHR @ WDAY-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853559FBD8BFA67DD2BF9D20C73EC0F02D8FC4F06695E2D52638E76DDB3F8D6E70D26</stationID>
+ <name>Country @ KNOX-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355C86EED75594CE2727202CBB144F602DA33D952A7FD9EFD28C0918AF34B2F65ED</stationID>
+ <name>AC @ KTHC-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853550019828D0489B6ABB6D1BDD3F59A7F442B503DCE2BC4CDDB985B6EED3F4873AF</stationID>
+ <name>Country @ KYYZ-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355E97E73680D4814053A47F716F8DB523989D93DEC15506636E8C2DFE29F3A3E5C</stationID>
+ <name>News/Talk @ KVMI-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355FEC1D4EEFB8D72BE5857674A9B5447D4E1F8D2328106F0AFF927061911E4CEE4</stationID>
+ <name>Country @ KYCK-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355787CBE1214680FD49D2D2C8E1A4ED8AE213228038F97A1F81FA75F8D5B5D7E6A</stationID>
+ <name>Religious @ KFNW-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535512B9B4C9FB2B2544702C3D8B1CE085B0F8EEC697DC3F39508F81E2BFC647A292</stationID>
+ <name>Active Rock @ KQWB-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853556494A483BF88741465A3FE5DB0048D6E11A572548B8CDF2B7C292D64B89C378E</stationID>
+ <name>Country @ KVOX-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853559E1E8120D41C85217C1CF6B773AAF16D0111ABD3587B97C331ACFEE5DCD41DAA</stationID>
+ <name>Classic Hits @ KSSS-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355ABCEA73293039BE3FFF237198548B5A2D003970E2E0AE1DD444ED7E2A2ECD29B</stationID>
+ <name>Classic Rock @ KKBX-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853554E3C847472FFF16CC88632E7E07F27668D26C13C6FA5D74186162BF33908AC1B</stationID>
+ <name>Hot AC @ KZLT-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535529B02D3A88D22C7F1D845DEB2A70C47FBD70968A43BC4E48E69D1C869E908298</stationID>
+ <name>Religious @ KNDR-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853551E4D2A81882F2023B60BC452951C869E84F1AA737D3A33FB09A82BDEEB9B88E8</stationID>
+ <name>AC @ KLTA-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853557863F36D13E6C288B9BF64B2FBEE5A1D1A8ECE2C02E878A1407BFFE31DB1934A</stationID>
+ <name>Country @ KMAV-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355B3DAD3ACA608A60DE301C5A1A8FB2C51B361F3041CAE866F94639231D6E75547</stationID>
+ <name>Country @ KQLX-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385355E659D044CE215AD82EFC4F6AB01E0B2BC6341680602F906D84B7DC71D8835771</stationID>
+ <name>Oldies @ KGWB-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853550EA30EA4425A77A15020134AA6B990F8F9C0D707DF03F2BAAE6DF3B1CFA038FE</stationID>
+ <name>Classic Rock @ KPFX-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Nova Scotia.krp b/kradio3/presets/usa/Nova Scotia.krp
new file mode 100644
index 0000000..5e260e3
--- /dev/null
+++ b/kradio3/presets/usa/Nova Scotia.krp
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Nova Scotia</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385383878D2D92A7691A444275FCF3189047A309CB29737D425D132E3C8976E9C05A4B</stationID>
+ <name>Various @ CJLS-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853839ECF21389639F415BDA39F7E8FBEFD0C6F5579F10594475BA801BD9CB1EED5C5</stationID>
+ <name>CHR @ CFRQ-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538376D203B4C09F3B3B261D56F2F0617A7D339FD7432DD788E6D85A850461D0E6F0</stationID>
+ <name>News/Talk @ CJCH-AM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Nova Scotia_am.krp b/kradio3/presets/usa/Nova Scotia_am.krp
new file mode 100644
index 0000000..382afb7
--- /dev/null
+++ b/kradio3/presets/usa/Nova Scotia_am.krp
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Nova Scotia</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853835DC9A764A70C2E9080B031E63EAFD6F705632BEC8F8F43860CFB55EA53C20AE5</stationID>
+ <name>News/Talk @ CJCH-AM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Nova Scotia_fm.krp b/kradio3/presets/usa/Nova Scotia_fm.krp
new file mode 100644
index 0000000..23f82fe
--- /dev/null
+++ b/kradio3/presets/usa/Nova Scotia_fm.krp
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Nova Scotia</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853833F7B08CF4B773E874FD58D80B7FA0043373DB324A256C12C866E5244AD386EB0</stationID>
+ <name>Various @ CJLS-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853833C8F899020527563BD1F5DA705ED43D2A3FA9B43391135053FBBB273A7C0B3D0</stationID>
+ <name>CHR @ CFRQ-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Ohio.krp b/kradio3/presets/usa/Ohio.krp
new file mode 100644
index 0000000..5c858f1
--- /dev/null
+++ b/kradio3/presets/usa/Ohio.krp
@@ -0,0 +1,1118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Ohio</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385385515EF90E0A38175CE7D4A85266DAD99DE23E49C298D98D837CCE209C6B5525FB</stationID>
+ <name>Urban @ WZIP-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385F2F7027C6CC724E2FCF0D6D4B28A98229B3C79BE5CD1C7601BF5C048F02DF1DE</stationID>
+ <name>Various @ WAIF-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385E5DCF6ADC353FF4A655F9A42494A81843EB6BFA14001A448274771EF6AD84D7A</stationID>
+ <name>Classical @ WYSU-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853859C24C493E2554B1B27ED07BB8703732DDF8D140B0D67D955A710DA5E41646CC0</stationID>
+ <name>Christian @ WUFM-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>88.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385130C52B0197160DE71C4A5BDB46178E64016B3CDD19487092747C4434FC0B37B</stationID>
+ <name>Alternative @ WSTB-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>88.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385FE50E734DA95E2550A14744FF5D82BAECFD96F3DA03D120EC3E22D5FBDCD12CB</stationID>
+ <name>AAA @ WCSB-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>89.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385BB80B27A8E0C75BE77D649E97A86556F629D2D001C48F96107E0ED54B0605B7E</stationID>
+ <name>Alternative @ WHSS-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>89.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385B5A0F6827E1544B52E9F214B9DF56097BE01EADBC81F5EFAA90B89AAC6A54C93</stationID>
+ <name>NPR @ WKSU-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538551B012BBE66D8C5308FB7E88E3E5B9ECDBC8904E1A7AB6CBBC3FCE9D1DB31BAB</stationID>
+ <name>NPR @ WGUC-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>90.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385DEE22DBEDD2660BAA767D46D5F9AB8E07AE69769339BDFF45AF6F0AC9F7007C4</stationID>
+ <name>Smooth Jazz @ WRMU-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538557E1E5DDAC09EF170120495A30E684C53C17994F9CC4D53A8097C06EC812AA04</stationID>
+ <name>NPR @ WAPS-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853858658FC9670F9E396D2E585F91C44D230C5BC0875EF7CA7AA80BB2E1777D732A2</stationID>
+ <name>AC @ WNRR-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538501F69771C084E29C3B4B0399AF1A1FAD07FC002EB741C972BF9E9155B5F9C377</stationID>
+ <name>Country @ WCOL-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538581ECB573C9C43020844BFE35BB2256917EA8F130691D737D6EBB89DFC57B09E7</stationID>
+ <name>CHR @ WVKS-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385CAD51242B810A779016A8EDB6D83F2517FF124AB13371731742152FA0C167519</stationID>
+ <name>Christian AC @ WCVZ-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853856C07B30C2647C6FC35C97B55D9F95694C79E27A0E83BE8A71561CF16D6E31005</stationID>
+ <name>CHR @ WGTZ-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853858B02B515756C561E23A2F2CF56A2762D36D9119303F1C828DD119774FFF86485</stationID>
+ <name>Urban @ WJBL-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385CDE3D2D58C268F8E69C8BA0075D0C4C88B02B353A2DCF026924CD0F67CE19CE0</stationID>
+ <name>Rock @ WNCD-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853857EE91A355CEBF10F751B3A718C11E78C57725CFAD9B952B1BA7270ABD7821349</stationID>
+ <name>Oldies @ WRQN-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385B0CC33DE71F83DE5269D0B7DEEBE874DBB74FA708D76E5225FA3DD5CA7D39076</stationID>
+ <name>Religious @ WFCJ-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538597597133BECDA3573B44B5932FBC7579EB962CE4F893D51C0C8F3FC666FCF6E6</stationID>
+ <name>Hot AC @ WVMX-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385971676F4435787366B5C90CED63F5DE7BE93FB00AF853ABC8345874BF15549C5</stationID>
+ <name>Oldies @ WDIF-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385F15587F2C7EF90793C027372913586C272CECC441E669819E0F415CC36810770</stationID>
+ <name>Classic Rock @ WXKR-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853854CECBFB9248D3CA98F18EFAFB4D2B71CEB27D2A60566554D4D9993192180241B</stationID>
+ <name>AC @ WSNY-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538557D55659D50B855E89C19D706E93C91D6C67D02318CEBDC880C455F49E96B985</stationID>
+ <name>Oldies @ WZIO-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385B7D34262AB9EF3965564017BEF7994B014FE91A7A1180F2F38EBCC1053F0CF23</stationID>
+ <name>Country @ WICT-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538500B59AD697FD51ED9CA79055A0D38ACD522ACB507CE157693C5DC9D503C5B15A</stationID>
+ <name>Country @ WQTE-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385ED83FD10AB9D618A229333BAD954D2C5AB801CCE2638BE93FB90603AE3D490BE</stationID>
+ <name>Country @ WHOK-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853850390D170E2E5AD129CFE74A93AC487955F8135D1E33431C5748E2D0BAAB2716B</stationID>
+ <name>Urban @ WIMX-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385DBBB9FC3A8B4F6E840D57EFA5B997AD0C73ED0F59361DD537976E7016E07E79E</stationID>
+ <name>CHR @ WAKZ-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853850374F04B4E376B3AE7DE46AAA760770207A8D18F7BEE3ABF44152456827A8DE0</stationID>
+ <name>Rock @ WLVQ-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385A9705AC5AA0D7CE80F094713CE189060A003DCED8ABCF138E3D0D9D5E3014ECF</stationID>
+ <name>CHR @ WAKS-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853851370FF163BF499804FD14EECBB80D0194D311E99EC04B39B044F203A601CE79A</stationID>
+ <name>AC @ WCSM-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385974CF157AD041D49AADB11904D87B58F2CAFDE17B7A12F085D9ED80A0FF629F9</stationID>
+ <name>Hot AC @ WBNS-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853855570958FEEF202FB074A80041B60C4B3EDE35D41AC3B6F44AC5214F806F68CAC</stationID>
+ <name>Classic Hits @ WJZE-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385DEBE5766AAE4D028D2D9AC3AEAFB574BBA1DBE7E5D13C42931EDBCCAA218C282</stationID>
+ <name>Rock @ WTGR-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538555FB634FB4D6251D5F368D6D6C550BF5B8AAD2F4F251A0B544F19B35ABFA7CD9</stationID>
+ <name>Country @ WAXZ-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538588E5E46E7FFF3DA5E3B08B769814409CEC03657ADC7C92B6F7F4A33AADC0F6D1</stationID>
+ <name>CHR @ WNCI-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853857B3A3E1148740E3B48900DA05E0C600432C4860BC0531A1AB780B852BB6FBBA7</stationID>
+ <name>AC @ WDFM-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538511FFF7DECC55C2A7F6492C6087EAD3120B3EFBD34C1B1201EA284EC2EC1D556E</stationID>
+ <name>CHR @ WTWR-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853854D3AE17274492B840938627EBBBC0F2F958FB90E6D0144D232189647DCD75491</stationID>
+ <name>Classic Rock @ WNCX-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853851A01EEC9F7BA533A9F14E269DDABEC2A8492C9C2AE9471716A1ED3A0B1F0E692</stationID>
+ <name>AAA @ WYXZ-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385830BB88394E4334FB549D03C7D251CF96A3043ECD9B376DC9F3BD6659F7B0174</stationID>
+ <name>AC @ WMXY-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538578A050C582EAE2E87FFE00D2F91C2F8B670D49C1FB6855DB79E4F42134521CE6</stationID>
+ <name>Country @ WHKO-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538510207AA499888000C8E7DAB2198748D2D190A710B68B92728A68755493D6275D</stationID>
+ <name>AC @ WNXT-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385EFF2AE974444959411D9C2D04C29A3401F11B0FB7027623027F8F29CFD9A96C6</stationID>
+ <name>Country @ WAOL-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538542C8DCCFEF70484FC608F94CDA82E4D11C1765465B5FADE0C6554F1375475013</stationID>
+ <name>AC @ WKSD-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385F1B78A8E5670CBAF3966148785BAAD2597B90CCBEDA87877BA6FBD65C52CA0DE</stationID>
+ <name>Country @ WTUZ-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853852CB54FA8B16FD9B5424311490DF01C1B36E03392882B6330B1594CFD54CCED62</stationID>
+ <name>Oldies @ WSWR-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385FFD5BCFAD5DB6A27FFB278F925E31AED42FFE9A9921F1A8F0DAC9DEB7E682756</stationID>
+ <name>Country @ WCLT-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385E315487987DF58A01585D5DF52895CC9DBCD600069343A847F3385F049322518</stationID>
+ <name>Rock @ WKXA-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385C0A284563FEA0866E12CFBF9B4A962FBE68E8DBE161E6726D965A27ED3DC9914</stationID>
+ <name>Rock @ WMMS-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385A6BD17DD6628D4DA86E09216125121C705B7623D09FBC16CC533FB09D5D447A7</stationID>
+ <name>Country @ WXIZ-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853850D8581EDA66B5E738A7F4D6C1919BB1544F3ACF1915571AC6527CE97BEE5D240</stationID>
+ <name>CHR @ WHOT-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853857107276FEE6C4F2086B5EB70839CC0B9822825ACFF90946090A8CE8F73976206</stationID>
+ <name>AC @ WJER-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385250D5C6E6072B0EF7D600D2B292B0EC70A72E55A9E3D320822FCB26C164A529C</stationID>
+ <name>CHR @ WKRQ-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853853DBC6BBAEBDF4CC4F123636DB244B60E463ACEE69218199F3BCCD5994A4BB7E9</stationID>
+ <name>Country @ WIMT-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538523ABCE908CF12CBA7373CADB3E25FDAAF17C9BFCAFF8655B470A43A595387E49</stationID>
+ <name>Country @ WSWO-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385F5A6F0A193CDE1F181EC83E74AB379C11BABEC960C7AD54963C8DFB98EF079D8</stationID>
+ <name>AC @ WZOO-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385A842CC643F7031E562761FE52E423790AF6EFC2A089CE635699F5EA8082FA828</stationID>
+ <name>Oldies @ WCPZ-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853851CB2FC10ACF4244CD0D61A44CC3A953F576883C31CE37D1EBE158F77BF3BE1A4</stationID>
+ <name>Classic Rock @ WYFM-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385A8F212164249A12883F33F6BF69D58BFF2B0054042BD0A745991D07EC2C483F9</stationID>
+ <name>AC @ WNDH-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385F499C7EDB76871D4BF9E54E68B43315E15A05560743FCD5FB52EFF958B5A3167</stationID>
+ <name>Hot AC @ WMLX-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538584532F3BD5D717E7BDA8AE538D6CE532AD74838A5AB5375F589ACC58106ACA3C</stationID>
+ <name>Country @ WOGH-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385BBD93B3DE4A3EBE20CC90A09932D73D6A9E504540B8A2F9F6BD25F4DF425C4B1</stationID>
+ <name>Country @ WCKY-FM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853854A8C203EB0DA7DD01FADCCCFD1047F36CB158BB814F77845A07F65D918351D47</stationID>
+ <name>Alternative @ WXEG-FM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853854867BB3D00D0C17E1D87FA42D9F9DBA9F80A230F03F96DAEFFA9C24DBC3527A9</stationID>
+ <name>AC @ WQAL-FM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385F07EEC6DB968AE4426CD0F86DCBA6F9930386307F4747B1D6657C01E4961A071</stationID>
+ <name>Christian @ WNLT-FM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853856DCD9D69A5A806B7F813675187F3E8026B27AAAC6D72965987B142F3E9D92D86</stationID>
+ <name>Rock @ WIOT-FM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538575796A3B2A47912B1E733FBA256560C31AD16A27A78D5CFC47995B3B8A288050</stationID>
+ <name>Classic Hits @ WUZZ-FM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853853EC36F350CFA4325CDB0B2834F67DC81730BF569CFD0535E3AA51E432444C2B9</stationID>
+ <name>Country @ WQXK-FM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385194C30E9D32803D700DA813055DF8496FCBD1F1FCE6FECC2CC61EE07D6B45476</stationID>
+ <name>Hot AC @ WYHT-FM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853854ED719A7461385789DE2D6A7F93C2FBB42C0FC9FCF4484FC675927137221F66C</stationID>
+ <name>Hot AC @ WWWM-FM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385917938F35995D9C44DABCF1036D5FB6B73F0BE51613A309DE8C38DEEF938F1AC</stationID>
+ <name>Oldies @ WZOM-FM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385684101CFB2C5863EE765C664212ECA722999FE239F3FB15E1F975B2002DB5C24</stationID>
+ <name>Rock @ WWJM-FM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385E523402A312791E823E3B8C30A892FB48039162D5956BA2D0C9F3F13861EDB2A</stationID>
+ <name>Oldies @ WBBG-FM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385A8FE957D9CC68348B0D5767BAF0B8405EEEC05557A5E2E54616E9957E9F867C6</stationID>
+ <name>Classic Rock @ WQTL-FM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385D0E6133C8665FB5C4D7BF1AA34B9604A8F0A3F070E31978D741185AA0EC063C1</stationID>
+ <name>Alternative @ WRWK-FM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853856D6C696AB8FE3F1803FB45FFB986CF2656DA59D3E7F706450331D995CF144FEB</stationID>
+ <name>Country @ WMRN-FM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853854C01428FC52F390F8D54C36B3B13BFA7430CADEF4649F0E035E1C99B89D5FFE4</stationID>
+ <name>Country @ WNUS-FM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385126E27D697CD2411E7011FFEBAD674BC01365586467B6E7A6C302D02B2542852</stationID>
+ <name>Oldies @ WYBZ-FM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853857C3715C759F614F0DD3F92D75ED065FBBEE5BD1BBDB2D0F6AEA72A5D6019EF95</stationID>
+ <name>Classic Rock @ WBUK-FM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853853CF56ACEF3196EE5A5E5E1C6BAEED7950C3101A8BDFD5057F4EF0DC2BC6AF671</stationID>
+ <name>Oldies @ WIMJ-FM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538508529E02D3670C59285A8C23D6EAC76D01D9FDB5F92922796593BBE18671A2BF</stationID>
+ <name>Oldies @ WODB-FM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853855D553A8C4AA1A7EFB8FC4EE6C2A1130AA7FB40BB2DA92B8F966BCA702B2282AB</stationID>
+ <name>Full Service @ WKRC-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>0.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538598817EF145E1AFA0A9D87AD25EC6658F3BC6974E6048CB2C893653A03E42ECC2</stationID>
+ <name>Talk @ WKBN-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>0.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853854E722A21234002F12B47BD0BA40BF8C4A8597F3068E23715853A62822E051E16</stationID>
+ <name>Nostalgia @ WSOM-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853858E4E0FAB9493F3D6D2BD8291D88F2B5C42297D7A9F54C4314EF4558C7F8B52E8</stationID>
+ <name>News/Talk @ WTVN-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538523EA7408281CC285E61C5AF307775E47973DC3C8D1A746868FC2B337201B4DDE</stationID>
+ <name>News/Talk @ WHLO-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>0.64</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385DEE0EF73B3316FB1D098703F2A6101E9F64832FFD576105FF47B52766924F474</stationID>
+ <name>Religious @ WXIC-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>0.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853854B9164DF4A1E5D35BEBD41BCE0CC2C908260E35A97B1F550B460CAD4A01ACB5C</stationID>
+ <name>Full Service @ WLW-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>0.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385F73ACEA51C3254832B3C66B0F7C19AD097F7F4F9C24370BAFE441BBFB2A06B17</stationID>
+ <name>Religious @ WNOP-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>0.74</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538508A4B05753688C13B9D0ED276AD957D28486E77B26EEFCD01313334B6D522455</stationID>
+ <name>Nostalgia @ WPIC-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853852EFC32B9FAE9FA9799EDF81B2A376B45561493AB98254B5B1B8B7824ADD9EE42</stationID>
+ <name>Oldies @ WKTX-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>0.83</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385D6DAAE382E4CB6D21738263F7CAA9BF730823DF858B75F326A5AE57104553908</stationID>
+ <name>Sports @ WKNR-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>0.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385338A3B067C7A71507F75F742D9F8CDD85F3DE41E04D93CEE4A5A274D1152A481</stationID>
+ <name>Religious @ WRFD-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>0.88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853854F4458C0CD614304A0F55EE37DC9BFD69448145B0DFB5D619764902590AF1BB0</stationID>
+ <name>Sports/News @ WCER-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>0.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385442B529038C8F248C68234130CD3EE9D5F48EE9D194E741077569C617542B1D2</stationID>
+ <name>Nostalgia @ WMNI-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385AAEB406810EC5828A5F28A7768D3BE9B60BD04693B7736940E332092DB32926C</stationID>
+ <name>Urban @ WLJM-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>0.94</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385C41C353D3D73E29FB1F36EBD85B91A31CF97C91FE5C1E1D0F7A39FD6C12B58A5</stationID>
+ <name>Oldies @ WFUN-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385C67725602FAF8FC7DDD2DDC48B795C67BDC1B236A3E8442D3A7BDAF5BE4467FA</stationID>
+ <name>Nostalgia @ WONE-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853853154978DBE1A027A79D1DBCD7708D8134669A1B9FC42EAB4AA457E1F99410112</stationID>
+ <name>News/Talk @ WTIG-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538566614AA878FF1A22F3DDBDD15B01E8971664AB3DCD195B8838D3CF71EAF89DA0</stationID>
+ <name>Christian @ WCCD-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385154D5080A0CB4BAED03C8977B85B4F0A34DAD35F629B3DB3FD427AD20E3D66E8</stationID>
+ <name>Oldies @ WIOI-AM</name>
+ <shortname>104</shortname>
+ <icon></icon>
+ <frequency>1.01</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538541CDCFE022342DF87B6D5892678CB3258FA8BF44F93A80D8EECB588403C7A2B4</stationID>
+ <name>Religious @ WTSJ-AM</name>
+ <shortname>105</shortname>
+ <icon></icon>
+ <frequency>1.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853855A6059D22127BB0176F3FD41504830E8BC9B2CF2DCC6CD49954A102E31FCCB3A</stationID>
+ <name>News/Talk @ WTAM-AM</name>
+ <shortname>106</shortname>
+ <icon></icon>
+ <frequency>1.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538590C2B55F59956572B137CB863C4ACF2EA45974E53A8BD6207D8249156ABA039C</stationID>
+ <name>Religious @ WGNZ-AM</name>
+ <shortname>107</shortname>
+ <icon></icon>
+ <frequency>1.11</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385E3C421A4A220DB644BEBB85186E79DA4885C5CF3FD6D21F647B965E876A44AFE</stationID>
+ <name>News/Talk @ WIMA-AM</name>
+ <shortname>108</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385464E82621CFF015F605AE0A89A3DF6231D6C0B629AA557989480D0788D0AC216</stationID>
+ <name>Sports @ WBOB-AM</name>
+ <shortname>109</shortname>
+ <icon></icon>
+ <frequency>1.16</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538596D34FF855528C10B8B4C49531BF3DA9382371658D04435C25C8CF63E1CDA83F</stationID>
+ <name>Sports/Talk @ WZNW-AM</name>
+ <shortname>110</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385383DCB4037A448224A69B1BF671D535F5308DB64C0D7F17DAE8CF1F1474CCD2D</stationID>
+ <name>AC @ WHIZ-AM</name>
+ <shortname>111</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853858BF227948B12C0FD5DB373DCF11E80C60ED285571DA183BBE71C3EDA90CD4AFA</stationID>
+ <name>Country @ WNXT-AM</name>
+ <shortname>112</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853850832709A9ED0F9C892D4874CA357831A85D3FB53DB60E9E37A49C8292589205F</stationID>
+ <name>News/Talk @ WHIO-AM</name>
+ <shortname>113</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385671C548B9558D9F5BA72F60CD6B7270BA101E62AEF3FEFDAC6E44FDB6B3F7C9C</stationID>
+ <name>AC @ WDPN-AM</name>
+ <shortname>114</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853850FB34638F43A3422B8142ACF86D902F7C3AAA5B0505CEF39381DE33E08D41EF1</stationID>
+ <name>Religious @ WCVG-AM</name>
+ <shortname>115</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853850A7F38CB30C674FE6D377F378A9A9BA5C5B6C23EF919022968377AF0C56F8996</stationID>
+ <name>Talk @ WASN-AM</name>
+ <shortname>116</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538520871F643853DF2E3B47F9EAF1A6BB2716719FA7CF3F74911350A051D19454D7</stationID>
+ <name>News/Talk @ WSTV-AM</name>
+ <shortname>117</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385FED7CA2320B079CC5801B4A6ECCF3E3D2C1C9BEB6F6F87FBB0C85AC2C34434FD</stationID>
+ <name>Country @ WCSM-AM</name>
+ <shortname>118</shortname>
+ <icon></icon>
+ <frequency>1.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538526608F3140DB2929280A15B5751B67580BDB4791E9765C0C8E7F0B8716438CCE</stationID>
+ <name>News/Talk @ WCKY-AM</name>
+ <shortname>119</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853850F0C29497F6C455BCF84C8286BFFE6B404D2F0AA748EED17CCA6E32F546624A9</stationID>
+ <name>Oldies @ WDLW-AM</name>
+ <shortname>120</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853850377A62A2560400BBCA19E3170A227E8EA3207952C0055368397591C7779F7E2</stationID>
+ <name>Nostalgia @ WNIO-AM</name>
+ <shortname>121</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385C7985FEA5736C2956DD371EF8A0D090B0531C460F239788CF08C1FF472A69098</stationID>
+ <name>News/Talk @ WPAY-AM</name>
+ <shortname>122</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385D62F2B2CD6E52339A9891CE065A73669B46441D45906C5B7A7A0255AD5FC6816</stationID>
+ <name>Sports/News @ WING-AM</name>
+ <shortname>123</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385FC507926C275D78A8EFA328B1E32FBA88FBDD6757339EC1727C481C54DF2F0E0</stationID>
+ <name>Nostalgia @ WRMR-AM</name>
+ <shortname>124</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538539BDD2606FAA35E86C7F0334F703661DF3BC5700D9E6735CC52EA191744BB632</stationID>
+ <name>Full Service @ WFOB-AM</name>
+ <shortname>125</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853857BA257273E10F11BD0D4825BBAFC9F18A696F5A2E54975AC74DE9E331CB1F1BD</stationID>
+ <name>Sports/News @ WMOH-AM</name>
+ <shortname>126</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853857348C8E5CA5BEDE390C43CE62EAAE004E6B4638D3F21A3EEADE525C22A1ED036</stationID>
+ <name>Sports/Talk @ WBNS-AM</name>
+ <shortname>127</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385CE0641F7D50DB3AB5AB7D86CE9B6EF7767C6FBACB699DE562860358A9746DAA9</stationID>
+ <name>Sports/Talk @ WLQR-AM</name>
+ <shortname>128</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385F43B5096864BA10328BBB97CA46AD7F3DBBC94B2EE2246D57BF930FF4F44355E</stationID>
+ <name>Oldies @ WCIN-AM</name>
+ <shortname>129</shortname>
+ <icon></icon>
+ <frequency>1.48</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853850E36DEF27B5FD702B136C3F1BD8CAC543E5CA10239E7E86DA63B8B894C1B1337</stationID>
+ <name>AC @ WBEX-AM</name>
+ <shortname>130</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538566E9BA4D5B2EA5BC16AB182064108E8DA855D1E48A2230EC087FEBBB3CACE464</stationID>
+ <name>Country @ WBZI-AM</name>
+ <shortname>131</shortname>
+ <icon></icon>
+ <frequency>1.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853850047E581F03906224F4AD119011161A585493F82DE7C34039F617400382AF4F4</stationID>
+ <name>Nostalgia @ WVAC-AM</name>
+ <shortname>132</shortname>
+ <icon></icon>
+ <frequency>1.51</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538516E44D049E3FB6C14B54968D03CD7FEC57FBDCA36049DF22B12272432ABD770A</stationID>
+ <name>Oldies @ WSAI-AM</name>
+ <shortname>133</shortname>
+ <icon></icon>
+ <frequency>1.53</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853859252093AB00E16C086088DC865FF034A5E4692EECA64740FAB762BCC081F8774</stationID>
+ <name>News/Talk @ WBCO-AM</name>
+ <shortname>134</shortname>
+ <icon></icon>
+ <frequency>1.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385864DE613D77F21732DF4C63F58038B37858B8C99A07CD212D7BCCBB83A836061</stationID>
+ <name>Sports @ WATJ-AM</name>
+ <shortname>135</shortname>
+ <icon></icon>
+ <frequency>1.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853855D89B76D06D12F7C63025119EEB02DBD4EC0EFC052A5446C52469DFCCF8765ED</stationID>
+ <name>Sports/News @ WANR-AM</name>
+ <shortname>136</shortname>
+ <icon></icon>
+ <frequency>1.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538560368A363C97897EB19B3D96DC762EE4B858FE510D657BCAF51D86953EE9A4D7</stationID>
+ <name>Nostalgia @ WAKR-AM</name>
+ <shortname>137</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385FC72DDD4E1B4BB238FD4650C776F63A6F65920DBB8284F56568F81B58D452E06</stationID>
+ <name>News/Talk @ WBLY-AM</name>
+ <shortname>138</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Ohio_am.krp b/kradio3/presets/usa/Ohio_am.krp
new file mode 100644
index 0000000..3e6a28f
--- /dev/null
+++ b/kradio3/presets/usa/Ohio_am.krp
@@ -0,0 +1,446 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Ohio</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385385153FE441D5CC927979139A8C73D1DDB0D99EF82B565E302291FA92959E9707A4</stationID>
+ <name>Full Service @ WKRC-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>0.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385B898E7D725ABBF15F1F64DC7328A1E76C2F9DA533E966F42F81611D1191C7BD6</stationID>
+ <name>Talk @ WKBN-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>0.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385018F085546A64F73AB950B8C6DDA2CB731BCB15B2A726009A3B63EE1E35B7319</stationID>
+ <name>Nostalgia @ WSOM-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385E1AE047F46F6D2C6E67086C78D4A6B3D1E982CC97F21F39399FDDE0088D3351B</stationID>
+ <name>News/Talk @ WTVN-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385E51CF767E500B0A7E294EB8E340ECE8E4AB0E0010B420A0F593C412B1DF94FD0</stationID>
+ <name>News/Talk @ WHLO-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>0.64</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385E9820959D91FA5B31CEF3461EF68CDC17449F895C87CCC6603ADDDA6124BA8C5</stationID>
+ <name>Religious @ WXIC-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>0.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385AC04BFC765B24BFB749DABBBF632F18FAA4D3C35463C384BBD0EB10A398CB0B2</stationID>
+ <name>Full Service @ WLW-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>0.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385127F525E0DD12373CF990577B65AADCD0A021BC6B39C6B7416F4F3591D3AAEE7</stationID>
+ <name>Religious @ WNOP-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>0.74</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853859B8F9C4BEEF4CCAECB40151ED65224F4D482B48BEAAA0322C929B4ACD1CDF0C6</stationID>
+ <name>Nostalgia @ WPIC-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385BDDB5D7440364BF95A083C74D9F66BA1587FAAFB419B9D549D0624BE8B27ECC0</stationID>
+ <name>Oldies @ WKTX-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>0.83</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385FDA0B66FCDB45AC1D76A8A54CF0900D42F2115DD7D3C07E5DCB68A6B31344564</stationID>
+ <name>Sports @ WKNR-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>0.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385E4D203924DEAED367D7E48EE3060ECFC0A805347000653CFED58B84B76101E4E</stationID>
+ <name>Religious @ WRFD-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>0.88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385E45E243B8D7C61251DB7867A0AF45E53CB91E7B8C89E4DC63760775E9006792F</stationID>
+ <name>Sports/News @ WCER-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>0.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385818FBB9A8DB3047305419D271EFAD419DEE060AD91B0E2EBB0EB5F468CA4EF95</stationID>
+ <name>Nostalgia @ WMNI-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385D5098E812F0C889BB04F5815019D988FB45EAC8F8E2A02EED495F037D9F5CCB8</stationID>
+ <name>Urban @ WLJM-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>0.94</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385E73DF0B7671217BBF418C65D80E2C285FF9307BD82AE799207B21B4B6502A1A2</stationID>
+ <name>Oldies @ WFUN-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385C4CD81DB24D99491A6BFA97B6D6F9BD618E22C1DF283CB2EF12208400E862C0D</stationID>
+ <name>Nostalgia @ WONE-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385CCA2D333E533C4FF3CD79E8ACA62CE6851E584A412144A9A5D9389AFD32F8D63</stationID>
+ <name>News/Talk @ WTIG-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538534D467941B314FF7A91D538C4D3A8E485F64A3CA5BA0B3645FEBDA47A80036AE</stationID>
+ <name>Christian @ WCCD-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538571C0CCBB9F08B7831FB4F9E1483BFE1336CDF01B626905615B1CC928AECF0B4C</stationID>
+ <name>Oldies @ WIOI-AM</name>
+ <shortname>104</shortname>
+ <icon></icon>
+ <frequency>1.01</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385C298D2B02EBEAD078B1FD904AED547A6C8B50AC36C2270AB25F60644A9778081</stationID>
+ <name>Religious @ WTSJ-AM</name>
+ <shortname>105</shortname>
+ <icon></icon>
+ <frequency>1.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385D1C6D52D36247F91784A5A67FF7822B2F11C3332A78A569D600164CB32A15ED2</stationID>
+ <name>News/Talk @ WTAM-AM</name>
+ <shortname>106</shortname>
+ <icon></icon>
+ <frequency>1.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853857B8DC422F486E2EEB3D1C032FECE5E3BB76C67FE236EACB164AC93E734BAF798</stationID>
+ <name>Religious @ WGNZ-AM</name>
+ <shortname>107</shortname>
+ <icon></icon>
+ <frequency>1.11</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853857DE0829F36E4B4F81ADDAE36705F4587EE22F71749B0963801A4730035F32E6F</stationID>
+ <name>News/Talk @ WIMA-AM</name>
+ <shortname>108</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385F335D4C1A1F317573AF26D8177B1426FF6E4C2C607825C6BA566AFE4B5CE4377</stationID>
+ <name>Sports @ WBOB-AM</name>
+ <shortname>109</shortname>
+ <icon></icon>
+ <frequency>1.16</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385AE2E0BAFD32A46B1EDA8BCF8FD9501FA411055F12F161DAA36FF53B647005E88</stationID>
+ <name>Sports/Talk @ WZNW-AM</name>
+ <shortname>110</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853851C6FAE6DCA9A057D7886669737F4B682D1334E84B77654BCEDF053C3CEAC9AFA</stationID>
+ <name>AC @ WHIZ-AM</name>
+ <shortname>111</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385F21C3FFDD645FCBAE5EB8F170921687CDA6A4C5567ED97967FD6F81D77907781</stationID>
+ <name>Country @ WNXT-AM</name>
+ <shortname>112</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538569F6CEDA6872CA908F5F276C6A149F5A1BFC8724FBD9141ECA2C4A69E1ECE72E</stationID>
+ <name>News/Talk @ WHIO-AM</name>
+ <shortname>113</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385E076D41F44330F35C9F1F234681C4811C83D424A555E379CDEE4597BCF95DFCF</stationID>
+ <name>AC @ WDPN-AM</name>
+ <shortname>114</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385DD7BA97B014F32EC29CF5A1D775B8B1458E5CA29135D5CFA574337056C4C80BB</stationID>
+ <name>Religious @ WCVG-AM</name>
+ <shortname>115</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385C93D34EF0E3430966BCEC3AFD88191816EA8BCD59FD484CDA58BCF208621276D</stationID>
+ <name>Talk @ WASN-AM</name>
+ <shortname>116</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538572FF55A5FE24B2AC16DBB7B160ADC5E2B2A1C9D11240E29884BCDF2BF732FEB6</stationID>
+ <name>News/Talk @ WSTV-AM</name>
+ <shortname>117</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385A8A694E88540AC6539A63BBD68986E733BC7E6D56552B3518E489B2B7A340727</stationID>
+ <name>Country @ WCSM-AM</name>
+ <shortname>118</shortname>
+ <icon></icon>
+ <frequency>1.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385F50253C59B53DDB38E1FC71E8040F1EB59336B70704F1A0D3B6760AA6DEC92B7</stationID>
+ <name>News/Talk @ WCKY-AM</name>
+ <shortname>119</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385EBD9407726656D1786F1A124BD8CEFE24F7C9DC65C449C65A42C7D82B41C5369</stationID>
+ <name>Oldies @ WDLW-AM</name>
+ <shortname>120</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385AEC1AC876BFC17608D8215EE451742DA6D4E70367E9A709E552333D3CBF8E65E</stationID>
+ <name>Nostalgia @ WNIO-AM</name>
+ <shortname>121</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385034D0F053F4F0F8612ED505294FBA8FA37C00A4A51423FCB7243A69BFFE2D7D8</stationID>
+ <name>News/Talk @ WPAY-AM</name>
+ <shortname>122</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853856285EED225CB4F80E9A24A97F83E0BBA4D0EFB4DAB70BCC22431C1CC0173F2E6</stationID>
+ <name>Sports/News @ WING-AM</name>
+ <shortname>123</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385317C1FBC9565B6B85871C3816AA4444396AADEDA85B89AC8A3D4B37B3C3F6DF7</stationID>
+ <name>Nostalgia @ WRMR-AM</name>
+ <shortname>124</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538591948ED1F5FF763DA5B90CB3F3DE66D0554513DCFFE8B8E3CB43F887C9D98472</stationID>
+ <name>Full Service @ WFOB-AM</name>
+ <shortname>125</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538562369D4315D8C5A1A8F06B49C24ED157C46631F62EBA8FD3E73B40A1BA18E076</stationID>
+ <name>Sports/News @ WMOH-AM</name>
+ <shortname>126</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853857DCF2E55485BFF05AB3710F25776650ED6EF4B27631872D09E5563C4C9DD2C2D</stationID>
+ <name>Sports/Talk @ WBNS-AM</name>
+ <shortname>127</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385A11B36B1DAA9E7668AEB7BA6E2FF5DD1D097374428BFA58597E98747FB77883F</stationID>
+ <name>Sports/Talk @ WLQR-AM</name>
+ <shortname>128</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853858429899EEED102450A482AED507D1760111FA0225FD2CB11065BDEF8A531422E</stationID>
+ <name>Oldies @ WCIN-AM</name>
+ <shortname>129</shortname>
+ <icon></icon>
+ <frequency>1.48</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385045E2E996A8B48100F4BC1F6896F5FBE47878755CC9485E86C58055FFCFAC878</stationID>
+ <name>AC @ WBEX-AM</name>
+ <shortname>130</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538542B5B044AEBD51451E78B71D703048CAA8D0A4EC32EF81EB4052F5DFB72672E7</stationID>
+ <name>Country @ WBZI-AM</name>
+ <shortname>131</shortname>
+ <icon></icon>
+ <frequency>1.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385075DF9BABE4FDD759939CC8BC7280DBC009231B24DA6D57E903E2CDD87EB2AAD</stationID>
+ <name>Nostalgia @ WVAC-AM</name>
+ <shortname>132</shortname>
+ <icon></icon>
+ <frequency>1.51</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538519AF1AACA3125358F04DF6D876A5EE54214BF33BB507961888A5E1E1BE8E63B2</stationID>
+ <name>Oldies @ WSAI-AM</name>
+ <shortname>133</shortname>
+ <icon></icon>
+ <frequency>1.53</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538509F71DCC67562A118AA9E985D8151EC1346703BFA6A9AE80B520BA1F4DFEDBFC</stationID>
+ <name>News/Talk @ WBCO-AM</name>
+ <shortname>134</shortname>
+ <icon></icon>
+ <frequency>1.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853851BD86175144C132D5BCB168F56566140714464150369C65F937D78F661238542</stationID>
+ <name>Sports @ WATJ-AM</name>
+ <shortname>135</shortname>
+ <icon></icon>
+ <frequency>1.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385B894B66EB4668096DCD007CA0E00B5595622C31BE1C68CA6371635CD521CC7D8</stationID>
+ <name>Sports/News @ WANR-AM</name>
+ <shortname>136</shortname>
+ <icon></icon>
+ <frequency>1.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538529B007F3C4813AE9BBD450AB6DE4658C2EC50FEB41B116A455BDD395C7BC689C</stationID>
+ <name>Nostalgia @ WAKR-AM</name>
+ <shortname>137</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538573CFB33F1E3537AEE45B404829748FF35056B6E5106B7C16C38E0D9E4CB1016D</stationID>
+ <name>News/Talk @ WBLY-AM</name>
+ <shortname>138</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Ohio_fm.krp b/kradio3/presets/usa/Ohio_fm.krp
new file mode 100644
index 0000000..fd68c4c
--- /dev/null
+++ b/kradio3/presets/usa/Ohio_fm.krp
@@ -0,0 +1,686 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Ohio</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385385E867291737226C0368715CC32658AE9F92BD7B63BBCE42B434AC32B804BD37B6</stationID>
+ <name>Urban @ WZIP-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385893987A6868342BB2C3491DC4AE6D9E872B11736981181735C527319E992C8F8</stationID>
+ <name>Various @ WAIF-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853852FE190D00AA7E460B0135A03AF230ED023A8FC2C9D39FAAD7D86E8D6A09EB046</stationID>
+ <name>Classical @ WYSU-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385282C7DAC5F35D6540245594DB86DD1EFFACD92D51C5337D148D39A903BE2F4BD</stationID>
+ <name>Christian @ WUFM-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>88.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385D9C681C8D0785211FE6F2582F23F2A639C20099810D810F9098AA2FBAAC81ADA</stationID>
+ <name>Alternative @ WSTB-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>88.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385741972E0C1267E5C83C4E8972527E6E5C95C0588D7C87FDDD2DA867EA5DE1402</stationID>
+ <name>AAA @ WCSB-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>89.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385FD2D1AB74724D07AAD09FF367CB127A3180A810B2774AAC88688D9FFE0174DF6</stationID>
+ <name>Alternative @ WHSS-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>89.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385E124FD3C36A9705BD223F9954E535AE48CB1702A7758FF5EA79CDACD5FB0BBA7</stationID>
+ <name>NPR @ WKSU-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853850F53017F88102395FB6F8296E90CCD194ADEA31A7507AE3197B392724883C84F</stationID>
+ <name>NPR @ WGUC-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>90.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385B5D684206D6D13BCEAAFC291A1823C2B1AFA48663F8C0320CAC15A8B653F89C7</stationID>
+ <name>Smooth Jazz @ WRMU-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385BCA9230EBD2D60ABA1D63E75E0B743BF753B3066FAB6EC173948B5B8D1B0DE94</stationID>
+ <name>NPR @ WAPS-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538508FE9192A35C6E13B9EE079A11196AA68DEAFC0AE039648DAF8FE2596E76B61E</stationID>
+ <name>AC @ WNRR-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385DA572FF3B346CD214945B3B9AB99EF82B87FBBA11A24415A57DE1AEC27703EA4</stationID>
+ <name>Country @ WCOL-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385D934F7FA15E80666F990A30684EE66DA0CFF38906236FBEEC5B76F68B5521F9D</stationID>
+ <name>CHR @ WVKS-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853852246651B8B6E5F76251D902A9F2AE9FEDA464A410142AD8CD0B5156D7B90C050</stationID>
+ <name>Christian AC @ WCVZ-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853853D181ECE0E950DB21173B39A8F7BEFD62E8DEAF8AEF9CE45109D20B321E81CE7</stationID>
+ <name>CHR @ WGTZ-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853857EC1DE0534A2011A4C4BA7A06DD32772EA71491685B6FEF6500F08F3090A26C3</stationID>
+ <name>Urban @ WJBL-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853857B894B14219C0C153C79B89BC2B5309B512732D981E157E24BF3DCB0A7FE596B</stationID>
+ <name>Rock @ WNCD-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385B90943FB2506DF3E6718F98440A4F0A1029AFB98258D0DC3FB0A319D55A1D6E6</stationID>
+ <name>Oldies @ WRQN-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853857DE7B9E44116BBBE81C1C7D4A82F0D14E655F73ED7AFE1529FE1D13702F4F49E</stationID>
+ <name>Religious @ WFCJ-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385843F79CD3531B92F4542B5FFA9E33B896C778E9B6BC8291566A227E7A57AC9B9</stationID>
+ <name>Hot AC @ WVMX-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385B8DB625421699109134CC36D951707F8163FEFB740CEA1DD9C82DF8E14E2724A</stationID>
+ <name>Oldies @ WDIF-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853852956257CEECC87A4AA2B2BB025C6F56098EAD0AAC0EB3C42447256671046D91A</stationID>
+ <name>Classic Rock @ WXKR-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385444B2E8F5A1829E931475CBDEFEB3C70F6B5616034CBFF1497D27891EEF211A5</stationID>
+ <name>AC @ WSNY-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853859B432AB8DD1A8A6F0812A2815ED1EE64D3AF9AF2321AFD32B49BBBBD590CD888</stationID>
+ <name>Oldies @ WZIO-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385895B00FDBE82F0CE61EDCBBA9199FC47F39C26C6A87740D42D12A118CE411844</stationID>
+ <name>Country @ WICT-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385B1274A1964DF0B2D27235FEA6C930E1EC4DFE708F30B85B1FBEB1BA9B7F9D75F</stationID>
+ <name>Country @ WQTE-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853859147EA13B62A1AD32D270329696A46C5C67E3FB8266A513012B2AF28A07023FC</stationID>
+ <name>Country @ WHOK-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385460289C82CD32EF3FC85CE7EA52FFBEFADACAE7196B711FEC893DFD31C0956DB</stationID>
+ <name>Urban @ WIMX-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385AE31E58CED4E7C0A8AE6FF8A65C0FD34E54426A3F46687993A29A0AE4B854626</stationID>
+ <name>CHR @ WAKZ-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853855136BA072675BFC9F52ADE8BCB420FE80ACD11D3E027B63D86F2231850FEF3AF</stationID>
+ <name>Rock @ WLVQ-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385DFD47A9C0E588AF6519505C4C78D988EA3FFFA955305C8F215B067A4D8D43C42</stationID>
+ <name>CHR @ WAKS-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853855A9C3234BDF939956335E8A92A99011CE17AC81F0A7E551A0819EFB9C41A50FB</stationID>
+ <name>AC @ WCSM-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853854E472BD362579D62500B0635C4BCDD3B8BAD998646DB2EEEB3EAA59B205A029E</stationID>
+ <name>Hot AC @ WBNS-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853857E3545612D02D24AF4144FF82522DAC3EAE4116ACA3334A3837DE3A6E0B20CBB</stationID>
+ <name>Classic Hits @ WJZE-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385BAFF656A29AEE70901F82301225A4FD144020565B4F4E8D72D8124A479BD1C30</stationID>
+ <name>Rock @ WTGR-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853859AB551CC59316826485958550FE32F8A21B815257785ADD6800EA739EB563BBE</stationID>
+ <name>Country @ WAXZ-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385F834DB244D340942EB12C3B811D50459632724B01007862A5D9AF94B877002F9</stationID>
+ <name>CHR @ WNCI-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853855C957381706F5ADECAFDB5B1AA816E27E0F5C8DE75EE83B131C14F9AF1ED6480</stationID>
+ <name>AC @ WDFM-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853851706E36B974BB04FEB53600FC25C80797673A1A6991DB5C925F5A0951220B673</stationID>
+ <name>CHR @ WTWR-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385F79CCC5341D503A47DDA46AAEBD80EAD9C5DAD126A107A6BE41F0B446E937C61</stationID>
+ <name>Classic Rock @ WNCX-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853858980596CCB874365236871C9C9C13E26E40846C48580809246735C121D092C50</stationID>
+ <name>AAA @ WYXZ-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853854B70AB5C73BC91992A59F8994DB5E2300EEDED268458E68FDA987C7FCE21AE24</stationID>
+ <name>AC @ WMXY-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385068416E0226CE66713FDD84323B79CE72B5AFDAABA2074D48DAF3F2F23D635A6</stationID>
+ <name>Country @ WHKO-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385F1779E0E2C6EAAAF3C83A5C033425BDDBADCF5C20CE6E90A24096391F70162FF</stationID>
+ <name>AC @ WNXT-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853852B0137FA934E72D9D0E9948B74DB3019EB055F6E108FBFBD565CD466644D24C4</stationID>
+ <name>Country @ WAOL-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853855B6E3311F661FDBE0291D528F1714E1730B29B6311B7E02601DDE747270CF095</stationID>
+ <name>AC @ WKSD-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385B81B40B96C69F2A251B7699D94CF2DBDBD54CB9AA35C92F668B735E8D14F03CD</stationID>
+ <name>Country @ WTUZ-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385F9AA3D3621768127D677F3FFC3D2B240F0E3E8924E34335FA5A5DD1E3C12AB87</stationID>
+ <name>Oldies @ WSWR-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538560D3BDE629C030EF12830EB63A446E8B688E2F43A41D29A36B5B9A5BB0702B44</stationID>
+ <name>Country @ WCLT-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853854575A9C83367D006D636387FDA0A7B15A94F2547B5AA8E242FE087160D4C690F</stationID>
+ <name>Rock @ WKXA-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385B6CA2A3EEDF4516818DB3604C438CE2D7825C5B0795B8C399AF685E506B67AF5</stationID>
+ <name>Rock @ WMMS-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385B431E89DE4241026AAC65E34BBE364F2F7B7FCAC62EA7E174659DC612956E9D6</stationID>
+ <name>Country @ WXIZ-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385E9E56FC4818AD47372A936CECD2BB15333463CC5F1C0247291AAA66E1A9DCDE1</stationID>
+ <name>CHR @ WHOT-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538564FD352F426AF61532603B18FA9E513943E48CCEE5910F0236D816C9885E1654</stationID>
+ <name>AC @ WJER-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853855724C4E81ACEBD0DD580D63BD790E0E0A9112D3AE6EDD4F43D8602054A95608A</stationID>
+ <name>CHR @ WKRQ-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385CAD9AEA7AF658509C00775E02949E989333E042D6A7EF698B000552878C568FD</stationID>
+ <name>Country @ WIMT-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385D95D0B95A38C0945B8590501091DA1973FE4B3020F7FF221CB88AB36D1CCA1BF</stationID>
+ <name>Country @ WSWO-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853856947A5414AE89A62F5A82933FF5031359E134262F1A5CB874F6F6C70D7389A65</stationID>
+ <name>AC @ WZOO-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853850434FAA63232A451585AA9033F92520FA60EE81734CA1F3AFD7BD68CAE42AF21</stationID>
+ <name>Oldies @ WCPZ-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385020109C756DCE97FB77F1FF9B6C625938118E1C082AD7D562C364EE7DC9E7127</stationID>
+ <name>Classic Rock @ WYFM-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538502396E76BB350DE5556D1A82CB1AAE0AF062C19C76F70F4DD80850D4B2B47FDD</stationID>
+ <name>AC @ WNDH-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385AC250F30C8B6E1167DC4D5A1B890E87C2769F8D6432E1581B9EB1C8089CF616A</stationID>
+ <name>Hot AC @ WMLX-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385C2A1F9092A686967FBA094332FAF9E2D3E482B6CFE82176B61060E9ABD7DAAFC</stationID>
+ <name>Country @ WOGH-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385A80766FBB033E8157570E9487B749F15CB15779AF019332410C5356092CE5ED4</stationID>
+ <name>Country @ WCKY-FM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853855B35128983D6F4AA01A381E7A37B40527236A677977856B5C93C3D9F0F7DABC9</stationID>
+ <name>Alternative @ WXEG-FM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385EA4E7E0036F124AAF1AD554D239B829821CA8D36E90A1BFE1A5D0EE4B6929927</stationID>
+ <name>AC @ WQAL-FM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853859E86349644D8C640983D7B86CFF920A22EF1B5E693E0629C7BB7A7E5DA9D78FE</stationID>
+ <name>Christian @ WNLT-FM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385B9E6D54F82F23147CBD2C7300BCEAD2F3B64A30DE74CCD243989DB221D2D0472</stationID>
+ <name>Rock @ WIOT-FM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538545E959EE4D1E4D0B55640B63D83906A3B851AFA30CDDFE4CAD74370E2BA01001</stationID>
+ <name>Classic Hits @ WUZZ-FM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385C78B407521A5CF86C4022071BB83031150CB2BF002C63F7DAC06FD5BFC1E4763</stationID>
+ <name>Country @ WQXK-FM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385E73883EA0F1200BD333457225B44E721272794C061859D2940E4B7217B685B29</stationID>
+ <name>Hot AC @ WYHT-FM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385232C3EBD37BADB241D0911074AB65D9E8AEB28DD56EB5EDD4059E18DF278EFF0</stationID>
+ <name>Hot AC @ WWWM-FM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385090C89882EEA83AE9063F4079BC264B02353CB1C0125C4AC0B95B3D400931880</stationID>
+ <name>Oldies @ WZOM-FM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385B5631838CFEAE1065BB9DFE140BEE29F5409783E857DB3098BC2AB8FAFA3B651</stationID>
+ <name>Rock @ WWJM-FM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385A99E479118BE567FF6CEE360D0BAB8784322113561B250A10DD1A578D3B4C43A</stationID>
+ <name>Oldies @ WBBG-FM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385F2FB0227884E47A41E2B1B0221514DB83BA0B71180E152FF613743A1AB8BD950</stationID>
+ <name>Classic Rock @ WQTL-FM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853857F99EEDB46CABBCA1F690550B88297237705044DC3A8F846978F4548BF93D140</stationID>
+ <name>Alternative @ WRWK-FM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538578E81C3A2C7A1BF6088D828AF07C6809F25E4AD1245E6121FDFFDCA736048442</stationID>
+ <name>Country @ WMRN-FM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385E2B37D603546A40990BB9FD5174539116FDDB7CD301B3F66AFBC54CCBB47176E</stationID>
+ <name>Country @ WNUS-FM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538577D2E51ADD1B603D04D4F4CE7C715E8760B8923E9B37525F8B05A33D93BB6502</stationID>
+ <name>Oldies @ WYBZ-FM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853855ACBB5DFD3C24FDEF4A776C4B5CD7B6C6FC1EAA10A6CD2D4DA50E744B5C12CB8</stationID>
+ <name>Classic Rock @ WBUK-FM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538538F8CE1AC08359FA799BCF80786042846EC2A1EAC37563AB66B82C33B56AD254</stationID>
+ <name>Oldies @ WIMJ-FM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385385778C43CC9355B2050ABA8A119663D3F2CF5E74C7F5907BB02DC82EF757311978</stationID>
+ <name>Oldies @ WODB-FM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Oklahoma.krp b/kradio3/presets/usa/Oklahoma.krp
new file mode 100644
index 0000000..d23dd81
--- /dev/null
+++ b/kradio3/presets/usa/Oklahoma.krp
@@ -0,0 +1,646 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Oklahoma</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853867829D026A0BB83F0B136FEC96BF2DE559A52CE907335597772D28A497994E1FD</stationID>
+ <name>Christian @ KYLV-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853860254B4ACD1F1DCE31F7C79D41E9CADA9E5D645162E1EE980E5357CC055CE43E6</stationID>
+ <name>Classical @ KCSC-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>90.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853861C3BDD13652D138010EE3C135D41F983BAF9512DC03FD4B87032FC224A455B4E</stationID>
+ <name>Christian @ KOKF-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>90.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853869C653D4B6A5F2FE86460643CADAF1617994E4F4020C1BD1E51A09C03A010FABF</stationID>
+ <name>Classic Rock @ KRSC-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386B181F2F3DD314D54730BEB590FA08BC35EDB21D5BBF957FA3C2CD2FB658CA205</stationID>
+ <name>CHR @ KIZS-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538632E096DCD40FA5607C007D1593A961B379A91CD3C2F82B3DA5D3C7496B04B571</stationID>
+ <name>Oldies @ KOMA-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538606C2C0B0915B9F3F6FD5132A562B4711900DDF1CC45704C683F5A1614B60407E</stationID>
+ <name>Classic Rock @ KKBS-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538628ED74F3DEEEE0995622762C812813D644CA9CD9AEC06830222A6ECD14D5B9D0</stationID>
+ <name>AC @ KBEZ-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386F7CF7360229E45A7799C74F15E65B27E5E64A4F1C492F01AA67DF436B4FB5786</stationID>
+ <name>Country @ KKNG-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386431602BE897141FFF62155950846C888A00F96B138D3B17A8B5F8F213E3DF7B2</stationID>
+ <name>Classic Rock @ KRKZ-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386EDE28F5A3A466BA01C7B51D8C4697D8184CD8696426D9D54FF188A3B478DF76C</stationID>
+ <name>Hot AC @ KSPI-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853861FAEE838EBEFBE27F08059DD44FD04CE60D1B01200E784DD3F7DA3E90AF831F2</stationID>
+ <name>Country @ KIMY-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386058D91681008D692B61417C6533668942C51DD6BB0407C301B290FBF06735CDF</stationID>
+ <name>AC @ KTSO-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538634D892F3307C905A205ED8D17911EBB5BBDD81184C91F0C1EAC743DCE65BB2CF</stationID>
+ <name>Alternative @ KHBZ-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853868C9AD13F7D3F8CF6627F4A0F58D2CD1C20C8F9F18416C88D1BB9256B3A806347</stationID>
+ <name>Religious @ KQCV-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386297DF4874DB1F2D37153246CF007EB1106C7AEB5ACD8F4FD1B5D1922EE17E9EF</stationID>
+ <name>CHR @ KMGZ-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853868AA0401322D88979556598130695A4EFF888A92CBE4BF1430E0FF2F6B68D587F</stationID>
+ <name>Country @ KWEN-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386848FBDDDD4EEFDADFF1EE36B012D1DC30C6454091913C0D5A04CC23000683408</stationID>
+ <name>AC @ KXLS-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538667B65731BBF6EB8ABBCC4E5ACBC1A4DB27E9455AE82246EB8235213DCDE75B73</stationID>
+ <name>Country @ KXXY-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538697E7FA30320C7646F46A6071F829BC3F6D235FBAE6EE0697EE526E208D0907C1</stationID>
+ <name>Hot AC @ KRAV-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386330C182821FA29071C033A213826C233C41B4C66D2E9241B17F531BF9B68917E</stationID>
+ <name>Country @ KBEL-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386E72994AB74D2416ED10EBCD403E5083A0BB22E5BF491A25902A4A0C3EC45A695</stationID>
+ <name>AC @ KMMZ-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853860DD9014779EEC9DD102347535EDA0D6D399D60CB03740C9093BE09AC6818D006</stationID>
+ <name>Rock @ KMOD-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386A04B2AF73B30E639679043CF9B15C932D124DBF54B4D4DACB9DAD8F0E3B9BE24</stationID>
+ <name>Rhythmic CHR @ KKWD-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853868CA4E310C01FBE2CB9C511AE6EF476E934873CFE3106B03F28B9A288DD2F0ED8</stationID>
+ <name>Urban @ KJMZ-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853862BAC67AD15B599C282A4C7D6EEB48F4EE14E7689ED65839A230AF9572FD29785</stationID>
+ <name>Country @ KVOO-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386FDDF6A1DB6E53BB74CAF86528DBA24C831070CAE151FD0930FC311C314A0F01C</stationID>
+ <name>Modern AC @ KYIS-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386922258A63DB5B3F6A09C9E453C8F3AE9BB8E7799D97FCCB081714407526FCD20</stationID>
+ <name>Oldies @ KLOR-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853867F8C5D2D5145B495EA71084A373EF2803A7AA9B3AA97846582227AF756BA6431</stationID>
+ <name>Country @ KXBL-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538676E0FC597ABF4ADD54E4C60AB35C18DB943FD330C721250159BE3818377A1031</stationID>
+ <name>Country @ KNID-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386E4EFCF8B9C2DBC250AC0DDCA071EB7DEA8987B2DC04C45E14C8F19210B8EACEE</stationID>
+ <name>AC @ KIXR-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538614B0A2F71AB18D6A3DF539B23ABD4357FBC692E107A7117FEFCC2E0E6AD30785</stationID>
+ <name>Religious @ KHJM-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386A3D2AC34CFDE5D2CBD5AC611684CC533700CAABEAE21552B5E437D38D242C6B7</stationID>
+ <name>Rock @ KATT-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853862FEA1817EC41AB63F5C229FB4AA138A7B34423E181A1414614C78C1EBE4EE7E0</stationID>
+ <name>Christian @ KXOJ-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853865FECB841C4A65A9FC69EA9F9433E2AD68A1BFC2BC8C470563B37EC6548163049</stationID>
+ <name>Country @ KLAW-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386F617A612FE30A204AA43A3A443CC262319F0ADEA4A6677A0BD208761115D9B98</stationID>
+ <name>Rhythmic CHR @ KTBT-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386682623308AAAD99FC1F3FF0A229A7C5B7F76FA2608F90B18C2BC976047EFCA5F</stationID>
+ <name>AC @ KEOK-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386B5253F5317AA1AEAA0E49A1E7BA14A69C32D131A83033D85991FCC868B97D805</stationID>
+ <name>Country @ KTST-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386BF305733EA96C77AED3DB52C29321B35EDBF156589B2138CA230E63540C211E1</stationID>
+ <name>Rock @ KRTQ-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386B8FFE17AC93E8FFE318061A71F250BFC66FBD622972431E011DE6F6E2A578E1D</stationID>
+ <name>Country @ KMAD-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386596BBF621977ABCD67735D8728DC3AA072898C310F8FF792E5004F1FDC48A7E9</stationID>
+ <name>CHR @ KJYO-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386A0756A8906007DE042835E30D671B407979E10D0C1A4E5F980BABD16B7758154</stationID>
+ <name>Country @ KOFM-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386D38DD10BC64F060F45E635356B228E0B709C297BB13A25B8A8E2DA08129B8CD5</stationID>
+ <name>Classic Rock @ KJSR-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853866F92483E715E8B38FE0A0779BF95C1DFC00ED80F879379EC808C1C3EC503B1FD</stationID>
+ <name>AC @ KMGL-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386C8F45D0F20F90080BA9C88F742D71A52A1D637E738CB68271ADFDACC8F4CD71D</stationID>
+ <name>Alternative @ KMUR-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386BDE7B0C3A9BD9FA2A76F054A39EBE4CE245DAAA60333EF33A056B2788CEB7778</stationID>
+ <name>Country @ KQBL-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386A718DD624C742CDEE13051ACCF36978D9DCDB5E43E852C58CBDF55EF3D8AF36D</stationID>
+ <name>Classic Hits @ KOSB-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386397FD2DDB0BB6A75D7797070E644C587DCA5AA43A3FF333FB61C51232BD97A89</stationID>
+ <name>Country @ KGFY-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386772B53E7752C8B054C691A1B206AE2B0B65A27B3B377C3808BB4F5DE79817E7F</stationID>
+ <name>AC @ KQTZ-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386DA4764A6280B4125AB4BFD3C90CDBB5DB7B78064F7D18B3387B54B04F24D3B26</stationID>
+ <name>Oldies @ KQLL-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853865D3579FAD2595362A26573B060BF0FE82112772180D5E6362C581868EF2E4804</stationID>
+ <name>Oldies @ KTLS-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853867A8E0770B6482C8369637BFBBC3C000CC14829F1AB8ACDB124E8FDEB0FCA8F30</stationID>
+ <name>Spanish @ KTUZ-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538681B1E29C0E23CB17B01930E9520916E4D36EA97288CA140E1D573DAF0823022A</stationID>
+ <name>CHR @ KHTT-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853865A6FFE5DADC7744C32B8AAA49481A8B51DC169E8297270E900215AE4F89DB08C</stationID>
+ <name>Classic Rock @ KRXO-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853867F8A358F7AB65E547A4FBE9BF90DAF038DF3FD42E806E4E770E8CBDD53AEA7B2</stationID>
+ <name>Country @ KEYB-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386A4A6EFD7FD5CAAB55ADD628C86DE58C6B8A385DD415DDB8418EDD81361A189E9</stationID>
+ <name>Sports @ WWLS-AM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>0.64</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853865C00B009F94A2078966F7CF94C934AB5041ACF82897C1E58DF067BA34F752E92</stationID>
+ <name>News/Talk @ KRMG-AM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>0.74</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853866CEF00D942135C3823A908C9E0B56742E9D2794F5E7428DA806DB15171360F05</stationID>
+ <name>Religious @ KQCV-AM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386A9293C174301F580351FE6D368A81ABA87B634F7860FCB9CE9C6582044EEE2CF</stationID>
+ <name>Religious @ KTLR-AM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>0.89</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538641C7B00A1FE6CD9D9D2BDAEE8C0FB61418E59B08F7764629AE957F42DD6638CB</stationID>
+ <name>News/Talk @ KGWA-AM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>0.96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386282BA4EE99D6E5B2B3E041563CB13CDE8259DEA4E786E7E843B4AACBFD2CC0CF</stationID>
+ <name>Religious @ KCFO-AM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386DB416CF229E576CCFEFD13F9328637FE5A5F74E33B17486BFDE05E94C6C961CC</stationID>
+ <name>News/Talk @ KTOK-AM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853862B5E40DC446EDFCDE71524B34C7572F0B08CD7029176AEC6A7CA05221670BB41</stationID>
+ <name>Sports/News @ KOKP-AM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>1.02</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538607EA1D3B3BCFDCAC77DFFBD0E35BD23767DA15B22AD813E91FEE4F9C3EB6B3FE</stationID>
+ <name>Religious @ KKRX-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>1.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386D9A305DBF22A18D5E8FC975C2C7903BD9AA6AA5F6763C9C35229C471F84CE520</stationID>
+ <name>Urban @ KVSP-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>1.14</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538699338A3903ED98AC940269D1635B8EEC2679C792D6EC742887A2801BC7ECF604</stationID>
+ <name>News/Talk @ KFAQ-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>1.17</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853861F2C899DC6B4AC62FB0FAABF238CB9A6F4A570E82DDFC1E8C166F385920927F3</stationID>
+ <name>Country @ KGYN-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>1.21</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853861B19D05D85D84509F77D254C6E579A1A7E271649F7F1A8E21A9F2A0C9A4090C5</stationID>
+ <name>Religious @ KTLV-AM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>1.22</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538640826C3C912670FF8D624AF1B7C147B87C436C83573834FE7E5141804F8FBCB9</stationID>
+ <name>Religious @ KRVT-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386B55B8AC433156F8BD046F462924183D7A6B394937CA3409A2D0BC901B1BD4F39</stationID>
+ <name>Gospel @ KTFX-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853861F3A37E2A4D5BC999732E197D4BF5363D3D71ECC186CCA099B78CEDCB9E81B88</stationID>
+ <name>News/Talk @ KCRC-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853866B77BB327A7BA4A44C6DE0177804472E40B91ABBA8611FCB9E12939151FC19C7</stationID>
+ <name>Sports Talk @ KREF-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853866DA24434F06942EF58D11BD331477C90DF7324575D762FD7162006ADE36AB6E3</stationID>
+ <name>Country @ KWHW-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538605F24E0021F6EF929AC54BA6ADDDD908B4CFFD6E03B38CAD7A01921E3EF33479</stationID>
+ <name>Oldies @ KBIX-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853866B4D19CD3C722943FF38AB0E69D8154A854FF456689BC2A1175CEA3E1BB0CF8F</stationID>
+ <name>Oldies @ KOMA-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>1.52</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538676BE445BCA50B52DD5105CF7DBA2F46D7ADCBB3428CDB9B38EE71D89A3923C69</stationID>
+ <name>Spanish @ KXTD-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>1.53</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386366F5C8192D9FF0438FF7A614AD4BA1498DB03FB7A54AAF4720149404858F33A</stationID>
+ <name>Sports @ KYAL-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386080F8F222E29D5DD4EB335FCB684DBD01D9CBC7218F8B17D1D9ED6F8EBF1332E</stationID>
+ <name>Sports/News @ KOKB-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386F22A9D110ED366125054C7CE52E548553CC7FD4667822512397FA238AAED14AC</stationID>
+ <name>Americana @ KUSH-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Oklahoma_am.krp b/kradio3/presets/usa/Oklahoma_am.krp
new file mode 100644
index 0000000..cd02193
--- /dev/null
+++ b/kradio3/presets/usa/Oklahoma_am.krp
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Oklahoma</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385386C1F3C3E55CCD6604EBB34E5B44B994F616D3BD60D6FCBDCC1FB04F04C4CC04B7</stationID>
+ <name>Sports @ WWLS-AM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>0.64</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853866FB8F8D10446BA8678ED8E2BC939DC2F2F568985FF51402BFCED2DDD43C4E681</stationID>
+ <name>News/Talk @ KRMG-AM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>0.74</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853862D2D354115894C98017107FA0FF27D564E553A388F682494D3BA53C3E9A701A9</stationID>
+ <name>Religious @ KQCV-AM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538659A757A044568F1D300FCEC3C0AD5B35B1206EB6DA229D3B754871B7EB9FE9DF</stationID>
+ <name>Religious @ KTLR-AM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>0.89</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853865FF18DAC03FFA47A35A3E4F6C34A75E2ADE8FBFB7FA6D0963B6B6E8A15198D61</stationID>
+ <name>News/Talk @ KGWA-AM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>0.96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538664B13FFE3A5955074DC13F0AA5DAF2B6A73FDDE85842AF2478F68426C1A1B0B9</stationID>
+ <name>Religious @ KCFO-AM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538628F107AA1BBAFED09F14EE5E17C859A113D9744669AC52900353CBAC697450A8</stationID>
+ <name>News/Talk @ KTOK-AM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853866A231EFD4A124129898EDB04B54532EE28BA715C20FFDEA63A5723D661DE3E28</stationID>
+ <name>Sports/News @ KOKP-AM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>1.02</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386D046ABA2957DBA92771A9E0A2C1D453149F9D9D85A172C5EE72AB1A5E0476EBF</stationID>
+ <name>Religious @ KKRX-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>1.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538613C8A4B16F5316534F531A9698E4B2AE17194A4A57E98C28A6A96856FE5B0A0A</stationID>
+ <name>Urban @ KVSP-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>1.14</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386BA0F4646CA88BFBF811383E134426F22CD5D9E176CB5C6AF2DAAB913714268DE</stationID>
+ <name>News/Talk @ KFAQ-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>1.17</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853864E431EFEAA9BF69DD3F410F4A08F83FFF2E6FD3802A30F5D0C3FF4AC146F64B9</stationID>
+ <name>Country @ KGYN-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>1.21</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853863F18CFE3D18B1AE6C43E7042F974D98ACA0D9F19348D3221B313DD63F8364D01</stationID>
+ <name>Religious @ KTLV-AM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>1.22</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386BB85CF2C14E641C3432C0D19A46B6F9D701E70179E2FECA5C5BB3890C26D6628</stationID>
+ <name>Religious @ KRVT-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853865297C55FFC608F1B5E894ACBF3875F73BD24873C15CA13B1E897EA63F5326F36</stationID>
+ <name>Gospel @ KTFX-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853868D0AB4A770EF7505A3507CC75063E0AD1BFF94E2A304D305E8D2DEE75F06D9D7</stationID>
+ <name>News/Talk @ KCRC-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386048A41BEB0BBC94AE4917E6712E3F7BA5FD92CF7E4DBAE3015B97DA411FFC378</stationID>
+ <name>Sports Talk @ KREF-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853861D82511C89B58877535E6FBF5FE17EE47FC3647C97767254EA714171079EC16B</stationID>
+ <name>Country @ KWHW-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386BE6742EE24938146DF8EE52B36F346775D2B716D7FA0AD8073AAF22710C533FC</stationID>
+ <name>Oldies @ KBIX-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538687D2D0586433B0CC01A3936D0DC8ECE0409E686E524F9A91A3AFCA6F3867F5EB</stationID>
+ <name>Oldies @ KOMA-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>1.52</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386C1C52355643C8547B69FA0F6C329D22B578C38CE74B26EA8A1FC30AA678888AC</stationID>
+ <name>Spanish @ KXTD-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>1.53</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853861AF63F2A5FF7E5AD2DCF3C3BF6F133117A9F31BD94F55BEA27BDDE3E8319D6EC</stationID>
+ <name>Sports @ KYAL-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386067DB3876575594CD177B1C9BB9832944B73A940F01F0AD986BA6579044E8D6E</stationID>
+ <name>Sports/News @ KOKB-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853866A757670491319D95B8043ECD4E6D25486006075EEBA71A925256D06BF9D6712</stationID>
+ <name>Americana @ KUSH-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Oklahoma_fm.krp b/kradio3/presets/usa/Oklahoma_fm.krp
new file mode 100644
index 0000000..921a0a9
--- /dev/null
+++ b/kradio3/presets/usa/Oklahoma_fm.krp
@@ -0,0 +1,454 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Oklahoma</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338538661096183848E47813EAD162241E6E8CEC8934EBF9B184B552919275AF507A75A</stationID>
+ <name>Christian @ KYLV-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386EFC610F06A2FC680E31E78DF966FA12F6016AD41CB32BEE4E7947FEAFFB0231F</stationID>
+ <name>Classical @ KCSC-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>90.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386CEDAE5EFF1C71082A7F794348FE8895B9498B3834142665827EA895FFDE9A851</stationID>
+ <name>Christian @ KOKF-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>90.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853867B3D4811257BE4164CEFEA0245C3BC9A197E152374415495500F81766FFEAECB</stationID>
+ <name>Classic Rock @ KRSC-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538661770EC28C11225EE7DC170ECD46D73601ECE9272DB63EC94FC70EA4DCF3A64E</stationID>
+ <name>CHR @ KIZS-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538649751C5C7E15545CE93B8A4399E74B100577B9224BE54FD2EEB9662A21BFDFE4</stationID>
+ <name>Oldies @ KOMA-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386FD59795E88ECFB55B68C687581E559604B2C262701443F40D5F85DE2A7B2E356</stationID>
+ <name>Classic Rock @ KKBS-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853868A52156C9FCA6DF8AEF83283303803C7EA083F3F21C8B6DB0BA88F5C1A01DBC9</stationID>
+ <name>AC @ KBEZ-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853867F44475AE061301CF35CE07C68BAC5F2DB1EC70C3AC70992EE116F3BCFD22C4D</stationID>
+ <name>Country @ KKNG-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853860B90D271DC0E0769BCD196560FD361C8A06CEA5E21D3AF2C5E53D4D314631D8F</stationID>
+ <name>Classic Rock @ KRKZ-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386FE6E49DA6FF1A1D2D6ED8B351E9BFA23A65F81796161D0A49BBFCC1D2FBD8AE6</stationID>
+ <name>Hot AC @ KSPI-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386FC72B19029E77E5E8F0ECD318CC9F59657ADFA93F30A4F7F5C286E97DCCC9F6C</stationID>
+ <name>Country @ KIMY-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853863BE97871F8F7526E13AB0FA6EFD9B035C2EEC704BF269A99DD8D14578B00305F</stationID>
+ <name>AC @ KTSO-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386A3BED9977812105E8970A53FA59A1BEDAC7061684C5F5F8C781E11CE18311897</stationID>
+ <name>Alternative @ KHBZ-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386EF6E32ACD2DE4407A4E4F17D2BFAE462AB6CC75C60711506BFB8D6AA3EB252FC</stationID>
+ <name>Religious @ KQCV-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386EDDB6E9096C4ADBD17C02D1A5717FB09B76C86B3B4739B85B2731835E81629B5</stationID>
+ <name>CHR @ KMGZ-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386A6B05AADF5F0FC85C2132F42A135B1C4BF1F362EC2283B1DD0D699D133E0420C</stationID>
+ <name>Country @ KWEN-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386884A43AA3E5B9B9C8BAFF3DEF36205855AECB8EC08D50FA24A2807759967B50E</stationID>
+ <name>AC @ KXLS-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853868C38F22A7E74D914844C33DA91C16E5C1C2C80C88ED5AC4E49C3CF97372BF5FB</stationID>
+ <name>Country @ KXXY-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538683AB8C6BB2B691B79B1798CD18AE42408221A00066DA4F5BB511B3B7172AA083</stationID>
+ <name>Hot AC @ KRAV-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386A82307DA3D9B622B7446940FAA3E8FBF537A4439D97A789B1275079E933FA936</stationID>
+ <name>Country @ KBEL-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386596B7210039579789AB1015BA579CF66CF698829B925D120B8E47451F8A90B8F</stationID>
+ <name>AC @ KMMZ-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853867A601E3764F01F5AD532C28C4F59578992E921C70A73B5F88B67492F294A1F34</stationID>
+ <name>Rock @ KMOD-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386799CDC7DA774C56BDBD08CFE88A206395814596416EA276543A7DDE0D6B9688A</stationID>
+ <name>Rhythmic CHR @ KKWD-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853867B74EAFB1ADB70BFB1B24BF605FB109A1E9A4602C71C8A15F8E652319D0907C2</stationID>
+ <name>Urban @ KJMZ-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853868B13CADF710170C80D082C0B809E2ED9DA784A7BAC925FBE5BA27C251A5DFED4</stationID>
+ <name>Country @ KVOO-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853861FB3A440BCFE6C4FDD53C8958719342128BEE55E1D9B035CAD6F2C81C0E4AFF0</stationID>
+ <name>Modern AC @ KYIS-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853860456405CE378C41659859C9D6A50358309AF5A8203BDC14B7BA8E6381108C081</stationID>
+ <name>Oldies @ KLOR-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538640E44D5E9AF3D9E9E18ADE8CBB210A041A01863A900E87EF031E3FC45B97FF2A</stationID>
+ <name>Country @ KXBL-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538608E966FFBEB24BE51D40247D709576CE6E9122A038C3C7E8BECA0E3F03032250</stationID>
+ <name>Country @ KNID-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853865E4033E041604BCD82A35498A05A4A1C49C60A1F32791F396318A596CD8E0D4F</stationID>
+ <name>AC @ KIXR-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538654B62BFFD54F74D4FDCB5F6C3F7631B990F80883C40475EBFD162D9E2CA684C4</stationID>
+ <name>Religious @ KHJM-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853866F9CBF535E0F4C48F3716D4D761ABDC4580C4348CFF42438C508A09773503A3D</stationID>
+ <name>Rock @ KATT-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386751D6E7DD6CFA904133ABC11101F5645E48995602130EFEAB94D51261213CCC3</stationID>
+ <name>Christian @ KXOJ-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538638493303F2C4ED54FA3BB0E72B77885946C627E4CFC6FD3663BDD74A5ECE7DE9</stationID>
+ <name>Country @ KLAW-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853867F998BF9298A1FD9CEB61D668810351BE9A71AC7F2831C9C4F10D5E91561EDDF</stationID>
+ <name>Rhythmic CHR @ KTBT-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538628B059AF6A8505850D25579773BF6948DDC770DF3AB83205867B9D107BE22E13</stationID>
+ <name>AC @ KEOK-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386304393B718DE974233404C4C8233A6163C08E59B93998FAF16E658EF27E502D1</stationID>
+ <name>Country @ KTST-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386D1843F2F9D16FE210EC2808809E3E5E9C647C335CE678AFD829D97425D1A33AC</stationID>
+ <name>Rock @ KRTQ-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386B1BFB2D0D85E79F5936875ABB623C5265AFA4EB5E41DE18539DCAF4BBBA018DE</stationID>
+ <name>Country @ KMAD-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386B50B1DF3D0E9C0822B007C449FABE30B4457DE2E205B8CCD2087E0D5D78D8173</stationID>
+ <name>CHR @ KJYO-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386A5D3853058583AD77C6A5000969B1E5CAFB381939FA31A75C33D0590BCF7953D</stationID>
+ <name>Country @ KOFM-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538677D3A806CB92CC1873D6960CC3DDDA2AC45CEDD4606BE97658EB9299B81CBCAD</stationID>
+ <name>Classic Rock @ KJSR-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386AE9088CDC11245A649B978D3575D414F1FA0FA74D9612AEA34C7FC561452B32A</stationID>
+ <name>AC @ KMGL-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538674B3AF74F2C9778064B2BD44675D7E6762963435076F24E5D03632EC1CC471AE</stationID>
+ <name>Alternative @ KMUR-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538637BBE8FED8FE352F8EEF3E720FFD63892A8C400D2A8382BFB0C42D2D4312F6AF</stationID>
+ <name>Country @ KQBL-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386C42BCECA5AB2B1A429EC5B974D3BAA8B2022B80CE55C78B5F23E8ED4A16EF17A</stationID>
+ <name>Classic Hits @ KOSB-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386D1CE7239B67E3414E28E1EDA794AC8D986DA7D356CD69E532B58B73AFC5346C1</stationID>
+ <name>Country @ KGFY-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386E08FEDC1AFDA472F06FB5CF69F714E1D6E213F36EC865D0AFDF92C8251129540</stationID>
+ <name>AC @ KQTZ-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386526CC509381D6D2CE3C20C237CC366B5BB10D7AC94A9FBD68EE4EEAD7E21495A</stationID>
+ <name>Oldies @ KQLL-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386D157EC88FF0D5849665CA425DC543FD8F82FE75F6DE36A5B06F7B055F77C22D7</stationID>
+ <name>Oldies @ KTLS-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853865C5717FA8E78214009106528155B93D4EAA1798F6FDCF4C0B68984578DAD6B15</stationID>
+ <name>Spanish @ KTUZ-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853866D44C0FDE996F471EC4EA661AE9898ED008DAF0DC4748E76B356BFB3B6176C03</stationID>
+ <name>CHR @ KHTT-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386B85D9B74D34855BB8D1EE5BACA35CE941E5F0252022867490D632A1A539547F6</stationID>
+ <name>Classic Rock @ KRXO-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538600D059AFAD5CB2156548DD8FA84B5D2721812BF965D0CA66D1039FE20AC320AE</stationID>
+ <name>Country @ KEYB-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Ontario.krp b/kradio3/presets/usa/Ontario.krp
new file mode 100644
index 0000000..0f1000e
--- /dev/null
+++ b/kradio3/presets/usa/Ontario.krp
@@ -0,0 +1,622 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Ontario</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853876E98DEFC969A09D6C13E4CD7C19F81DF1E95174BB71FA595BFA91E7BE4AFEF30</stationID>
+ <name>Urban AC @ CKLN-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853878C9BF92E01972A10CE22FB12F7BAC5F40CBDE7A7F6855ADBC109FF4E662EE8A7</stationID>
+ <name>Alternative @ CKDX-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387612ACBF8CCC9F553967792F51C7544AB3DB850030A05917786D7A4A07A42AF97</stationID>
+ <name>CHR @ CIUT-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>89.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853875CABE542CBF6AA88AEF61FCA1863EE48E8FCB8B2B0993E9277BC8FF154F51E4A</stationID>
+ <name>Classical @ CJRT-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387E8B15BCDD0565BC5F357AD4FC826051D3DC2CD93853F25A9CAE1A95C329C46AF</stationID>
+ <name>CHR @ CKPC-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853874CB71B000668424DB4C117AD087DBD06DCCA25DD31AE334B14F9098269CFE919</stationID>
+ <name>CHR @ CISS-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853873A28020387BE95260D4016A3858A071421107AE6F60AF9BCE6EEED8E9DD3166A</stationID>
+ <name>Rock @ CJRQ-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387B6A7C22A5CC4619A2BCF91F1D813F4F60AFCB9D4BDDEED5A500103BF8D5E9815</stationID>
+ <name>Community @ CKCU-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387E79B7801EF38DD6A0FE7758A9DCFE13F96E5A1573CC12699F6DD63A0C57E7167</stationID>
+ <name>AC @ CFRU-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853875189655E80CC025AB1797DF35A9969AC6BF51D1B656AE48319719662E0655A14</stationID>
+ <name>Urban @ CFXL-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387DB5EAEE982BDB34BBBDA7D40DC39B1DE7E927B7ED50AC8F08AC15B44D5C7B366</stationID>
+ <name>CHR @ CKKL-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387B7D3B73330648DDC480DD5D4BB40045EBE59EF06C36D95E926059096DEE7130A</stationID>
+ <name>Rock @ CJSD-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853878E460B2401661EA007EC2CCA2BAD6EAFED60BEB86503C6FAAF0CDA52D09D0FCC</stationID>
+ <name>Nostalgia @ CHRW-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387763E811BE7BF239EB35E6580D3D9936E7CDEEA4B28B13B8B6F59BDAED1CC0D1E</stationID>
+ <name>Hot AC @ CKGE-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387A486E26543E4F633D83587B4162E2347FF26FE1AFB99C26DF5FAACC62C14A096</stationID>
+ <name>AC @ CKSY-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387F7F7BC8A4760F68353D6B1B6039F80C7AF4FBA3B68565C9FB4C825B03374167C</stationID>
+ <name>Classic Rock @ CJXY-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387B6E1CDC4D0369144EFD50DD7ECCB059291B9C5A5349973E76EAFB8660D28054F</stationID>
+ <name>Rock @ CFJB-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853877F705CD0E90EB7C924C230EA29DA271ECF194E6E8AF366AE10A6B8DC2F913BF5</stationID>
+ <name>Rock @ CFPL-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538723656F97FF16DE7B18CD714B91CD7EB15A511821CF22B155893157BFAFEDF679</stationID>
+ <name>Country @ CHVR-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387AF261A8D40335B9B4BFAA43FDA39D7A7F5A53E976E6AA80CE1E85C5A4C04EC8F</stationID>
+ <name>AC @ CJEZ-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853876D561577E3DC788C19571674B29C5AD5AF5D520ECFF670E7C75BE09250012207</stationID>
+ <name>AC @ CIQM-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538774FFC8229642E61F322532AF4FC6DC63ECBB4AD33DDD4D658C22E4F9CC0F0A8D</stationID>
+ <name>CHR @ CHFI-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853872A10FB5967CD90064B72DE60A7A25A13FE2F8ABC3466C4E40784578BF82F4E49</stationID>
+ <name>AC @ CFLY-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853879EE628DA1882AC0D30A792250251A7A742AE1DDBBA5811A59B0246388426B65B</stationID>
+ <name>Country @ CYSS-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387BE5A36CABF9B65A0B70E478CA2CF20F8F546636BD882184D0FDF54B74B7094C4</stationID>
+ <name>AC @ CKMX-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387F32B6EF72C8B152DAF03FED92D12EB2FFC3D12CDE01AA4FB7CF118C736D6700A</stationID>
+ <name>Ethnic @ CHIN-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387C4397050BB9E7BBAA1E26DCEB254B67F43984158D5F2575C1441005633392C6A</stationID>
+ <name>Alternative @ CFMO-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538706412BAD92E6149D2AA9DD54571AFD4E1B42384A2BAED7979FFF6C45E0BB752D</stationID>
+ <name>Rock @ CKWF-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387DD4F3EBC5658F6F0A62CDD8F3C26F303F4E14AB1A19328DC4FB0D90682D998C1</stationID>
+ <name>AC @ CFRC-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853873BDA2F6A481DDDC9D578BE1587FEFF50428EBC9F88C650404F2B89ACEA75AE8B</stationID>
+ <name>Alternative @ CFNY-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538716473ED7B07ED3D3427F033B89DA601941B27D9750CF6AB19DAE2877839827EB</stationID>
+ <name>Hot AC @ CHST-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387EDCCD75C62578153A960662DC007092A1AEFC29D9263CB1A0802B257D1F4DCE0</stationID>
+ <name>CHR @ CFHK-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387FCC1575AC7B63E73F65A4FF62360D7EF02D4E7A9108CCEEF414501862763ACA0</stationID>
+ <name>AC @ CKLP-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387D9A3E774AF8667AA1BFC1BA5907836D84DE0C4C002604B8E9E5F8C3766526AF4</stationID>
+ <name>CHR @ CIDC-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387256BC2D33EE81620BB8BE2BC2D01FCE6DED69B151C37604A399C817D01D97C57</stationID>
+ <name>Rock @ CHXL-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853877BA40CEA39347B184BFD4CCC74D19EA2E61950BBED79671F3ED4970E7290FB50</stationID>
+ <name>Nostalgia @ CKDK-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853877817B483F401A31D7828E8206898387283FCA1540CC07958302B35D487BFDAE6</stationID>
+ <name>Country @ CICZ-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853870538B7B1497ED02C3E1919285BCFC3E00AE8219008687ABA87CF50519DD9EC99</stationID>
+ <name>Country @ CJQM-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387B642EE3194250F31ECDDC410157AF67B1CEE6692429B92F4C8C5FD87EFAF34F6</stationID>
+ <name>AC @ CHUM-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853878F35BF4F80A7C66A66CB3E5D240042CF41DFD7F476614CDC8058D585A091559A</stationID>
+ <name>Country @ CKQM-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387A7CDF81610B0B74DFA711AD53B1401F5BCBF2808E4EC1F541290037D908E03C7</stationID>
+ <name>Classic Rock @ CFCA-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538735B590EA8B14262A3D7E5C26F381BD2B3F672388C6A3CB8189E27540CC3197C9</stationID>
+ <name>NPR @ CHRY-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853876A79F38B234FEA9275F17E25A009CCCC3799FC24DA620AB235D9402C68241EA9</stationID>
+ <name>AC @ CHRE-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387225BDA02BA932246643D745C36BC2939BEA4210C339B412E994B663E6235A7AB</stationID>
+ <name>Nostalgia @ CIMJ-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387F38D87244563679468C2B4BEBE2A54E7E4FB21AC53179493CD6CBBEA483D165F</stationID>
+ <name>Rock @ CHKS-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853876B6A06BA95EF9D75A3471C9D7B5CD6F3F7A9DC29F948B3109B928E7A763508B6</stationID>
+ <name>AC @ CIXK-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853875D7E4E4EB1D04567335789330CDCBBDCB57C9450282F5F7D9AE8DBB02EB2AD15</stationID>
+ <name>AC @ CHCD-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387F8B40F9449181478EB112D7094B5084E3F568BDCBE08A688413E354F96766BCD</stationID>
+ <name>Rock @ CKQB-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387C094B26D0BDE6C803C37923CC5FB32CD1EDF8DF52A3D6CB2122284A2A6C3016B</stationID>
+ <name>Classic Rock @ CILQ-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538755F98172903403007BAC06168BDCD9F06B491E6C6BA44988736EC1A94A7575A4</stationID>
+ <name>CHR @ CING-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538726EEE0485C0FBBD70981AE736AE24CC1474499C447208C5082513B20660644B8</stationID>
+ <name>Oldies @ CFOS-AM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387C07E21EECF0A25E16F6A656EE640F2FAC4E53BA47D8AE32EC9E57F78D30E12F8</stationID>
+ <name>CHR @ CKGL-AM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>0.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853878E6A34F02069592943599C06BAEFC372F3FB968695248C35544F8F65EECA9771</stationID>
+ <name>News/Talk @ CKPR-AM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>0.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387D0E33C0BCF07B05815CB61EB9FC244BB4C73BCBF2B736C92284EE8D2F4D19B55</stationID>
+ <name>Sports @ CJCL-AM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387EE790E6B43D12C980ECF8C55D5E947CBE9CD297B731275B2230DB86F56043C28</stationID>
+ <name>Oldies @ CFCO-AM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>0.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853877E9CA0E6E7161E815266E8E12837CD9D97AD81ED5EBB768D0EF51FCF5F394DCD</stationID>
+ <name>News/Talk @ CHOG-AM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>0.64</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853879538D6491E52FAA18DB3BC50F9241867A79B00DA53907C76D9BFCF19D50145E5</stationID>
+ <name>News @ CFTR-AM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>0.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387E8D4CB03138624F10498976E0EEFE9B6E8A1414BC9CF9334848C3BEB7D7CEBB4</stationID>
+ <name>Country @ CJBQ-AM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853873B47018A34F2913969C1379711467738CC1447C6D8A96A10BC816E3D08D2DF36</stationID>
+ <name>Country @ CHAM-AM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>0.82</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387A17C05D5E7313B59164DB319C9CB5CBBE6D3648A73118ED9F1EC9B3EEFDC03E1</stationID>
+ <name>Oldies @ CHML-AM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>0.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538764CE1690FF419201C02E1732BA9391BF94CFFBD00B8C9C1FBEA494D3171FA0F0</stationID>
+ <name>AC @ CFPL-AM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387FAA32280A36E1881D28192C0585393D38DB29182FBFF509BE97BC71318317802</stationID>
+ <name>News/Talk @ CFRB-AM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>1.01</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853876E80525B1EE7E7496987C5644DF0920681FA7843AD4EDA1D8397D8337DFCD145</stationID>
+ <name>Oldies @ CHUM-AM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>1.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387E28F26BA719DEC29D74AD9414D1227E22215DB299264C5424D3DBE465BD5C3A1</stationID>
+ <name>News/Talk @ CHOK-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>1.07</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853872D7635F61027AEB8847B27D16C08909EFEC3ABA42FF0F3F54C3FDE4F71B0F0D5</stationID>
+ <name>Oldies @ CKKW-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>1.09</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853876C9E8B06257C7A1924CFDC270AB4C4D2C10372854AA18B8DAC4A51BD5141D0BF</stationID>
+ <name>Oldies @ CKOC-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387E05F4659A976BDD0877DBE5DF0B38C58FAE13E0BF65A5506A0F63E4586FB0923</stationID>
+ <name>CHR @ CJTT-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853877217F9D5FF93CE68A7A42842A02D56A35ABD3745D9379126BBA635F8CA6AEA11</stationID>
+ <name>Oldies @ CJCS-AM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853876111C32C65B2382E4D8D19B92D3D315BC2F78BCF3E02A1D2811153DCA52AB765</stationID>
+ <name>AC @ CJTN-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387F790B9D10F6151C81BB1E55667CFB7375A8065F19F3A0B7585763823F73BE172</stationID>
+ <name>News/Talk @ CJBK-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387067AB80B3AAF92C801A95FF4F71399F279E8B452D4AA089F8D75C2D061A0B09D</stationID>
+ <name>Classic Hits @ CKPC-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387193CFE62DC76D42AD202E169C6834AC313DDE061924E1411330D09CBDDB7270D</stationID>
+ <name>Oldies @ CKSL-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387E63DEDF4DD5851C889E843FDDFB37136B4F9650F2F4DB3F54B18B8C827FCE779</stationID>
+ <name>AC @ CKPT-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538776DA0BA89CCAAC57A9D6082AA848EA0CE7A2D20CEC2AE4DC02880F2ADD40671B</stationID>
+ <name>Oldies @ CJOY-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853870C27702D5C4578D660CC1600408AFE1127C1DE8958808BD7B55B66BD0D8C7F4B</stationID>
+ <name>Oldies @ CFPS-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387DFD4D0AA3FED72182CA5555E2FC4A576570722C696FFABFD40BED9B946F28915</stationID>
+ <name>Ethnic @ CHIN-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>1.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Ontario_am.krp b/kradio3/presets/usa/Ontario_am.krp
new file mode 100644
index 0000000..fc56529
--- /dev/null
+++ b/kradio3/presets/usa/Ontario_am.krp
@@ -0,0 +1,222 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Ontario</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385387734E601B33CF7FEF66FC8FCC05F0446D3C26E705D641C4085E63983229A98AB7</stationID>
+ <name>Oldies @ CFOS-AM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538710E0424C6B045B2192E52A41633294FBC4D6D0DCE9718E7767AD3CBBB64FF418</stationID>
+ <name>CHR @ CKGL-AM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>0.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387CA3C1F727A8B13541CEAB051C5D5336D7F23E176EA7D27B3836170FC8C5B9BE0</stationID>
+ <name>News/Talk @ CKPR-AM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>0.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387020E218DD974FB8F1AB6C6CB4D8B197FF37F614974BAFF0FF04D1DF9C9FAFBDA</stationID>
+ <name>Sports @ CJCL-AM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538700312BA43D080B58538D302DB860E404750984DD0074A916B39EC545CF1379CD</stationID>
+ <name>Oldies @ CFCO-AM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>0.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387F68BD20A5BE999DE81DDEDDAA11FFC6752A43D51514986B902D70B410ACB4955</stationID>
+ <name>News/Talk @ CHOG-AM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>0.64</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387E1DE75E2BE0F5CE4D3D2ACB40AABFDFAE5C25084D6BF6FFB203FB792C27F3F14</stationID>
+ <name>News @ CFTR-AM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>0.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853879B10E0A091EF756AFFECD007746EE2EEB4C3D64E3375308E0FCC45453FB047F9</stationID>
+ <name>Country @ CJBQ-AM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853874C8509AF11B4F856F570DA531316397FBE7B222BE943BCDD051780EEC0124963</stationID>
+ <name>Country @ CHAM-AM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>0.82</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387E71997B442DCB3952D89AB290835AD5670783C9DA03A6AFCB50B2EACA5A981BB</stationID>
+ <name>Oldies @ CHML-AM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>0.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853873FD423C2E1562B89C4E345BD4A1B1B73C677BE771291E8DB38A9F17173B4846E</stationID>
+ <name>AC @ CFPL-AM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387D001E4C61E6DE920B1575B190BD9B5B37B020977E04F38576F64BA3004AD06CC</stationID>
+ <name>News/Talk @ CFRB-AM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>1.01</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387424294ACA2638A9FA5C88E253B77DD51925A1E90878FF04CC63E7C07F8487A69</stationID>
+ <name>Oldies @ CHUM-AM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>1.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853875A66270416082CB4C06DCA096DB2B946C67D50326720D285714C28771A8CF959</stationID>
+ <name>News/Talk @ CHOK-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>1.07</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853877193518E7AC5D4F38FF398E79985586E2C3760CCAFC0890073424B1D3D33CC9E</stationID>
+ <name>Oldies @ CKKW-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>1.09</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853872A8B3612D1E39C534F5656C13D01AAF4CDCBEA0F2D4CAAB2A4F411A8B9296CEB</stationID>
+ <name>Oldies @ CKOC-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387876C5EB7785C42C34B17B6D5CDCD10459D37CEF452A533816684EA26C0AC8F07</stationID>
+ <name>CHR @ CJTT-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853872BA99262573FDC126085ABAC358017391E5D5BF908BC54367785928491852922</stationID>
+ <name>Oldies @ CJCS-AM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538751515E14FC1C0CAD503EA9C3A53AEE3A11A50A1D0D603C1B326586F08BD3526F</stationID>
+ <name>AC @ CJTN-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538758A816DDFEA98055904B262B12A86C5EDD86C30B93890A4AD0CF90B69C56549B</stationID>
+ <name>News/Talk @ CJBK-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538721ACEEACE356B2E0820D2EC3DF821EB31EBAB6CFFEFDEF2572DA4945DC923155</stationID>
+ <name>Classic Hits @ CKPC-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853875B79C7F4383E6C762706370AEACF739D47C5712E7B832D36B04B47FC073F0186</stationID>
+ <name>Oldies @ CKSL-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538752429D53A9F687C70E8E352F36219AD716D879F1AD41DC8FF5EE9C82EEE7734D</stationID>
+ <name>AC @ CKPT-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538724737608C2A2A616DE49B424135B50A4F242108E8F619DD35474EAA9AF6D517B</stationID>
+ <name>Oldies @ CJOY-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853875C1CE8727F5626C388394BF70085CE39E7B36CF507C902058A6CAD31C0FC32D5</stationID>
+ <name>Oldies @ CFPS-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387A9A9AEDC27F800BD96818465CFBB3423E08FD4C3C27B99B27644D01A0B56DC85</stationID>
+ <name>Ethnic @ CHIN-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>1.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Ontario_fm.krp b/kradio3/presets/usa/Ontario_fm.krp
new file mode 100644
index 0000000..72df096
--- /dev/null
+++ b/kradio3/presets/usa/Ontario_fm.krp
@@ -0,0 +1,414 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Ontario</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385386BBD3399B483508CE617495612BC49B9EB8EEDDEC91D03918C1A7D9B78D05879F</stationID>
+ <name>Urban AC @ CKLN-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386402F58A2FC9ACB1732F00E4AD6953A0ACAD6002D06D280C1448BBF25C2C7CBED</stationID>
+ <name>Alternative @ CKDX-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386A6B5C6A56C654D1EF53FED84ECF71E7495689028C4209B738B97EDB64E6809C5</stationID>
+ <name>CHR @ CIUT-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>89.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853862AC1C308E19A22CE8EDCFEA3A4694B6E75D0061BE24E5184D717EE80F1F5D648</stationID>
+ <name>Classical @ CJRT-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853869940994CE36F56CC91E3755811501083CF75F3FA147B35C59EF501C6A9232BA5</stationID>
+ <name>CHR @ CKPC-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386C0B06FEBDC29742E738362C21488B6DC53E9C5467BEFF1FA1918066F33397CFF</stationID>
+ <name>CHR @ CISS-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386767DEDBC4C618CE65EB00E1860D9CD677EB6D635AA871AAC88C2E2C15C69F453</stationID>
+ <name>Rock @ CJRQ-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386DB863E27395DD2F381433DE2A61E5D129CECCE4E0054420979979EA1839E2ABE</stationID>
+ <name>Community @ CKCU-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386FAADF7AD44886F1E35744A0E93A4E52D8D4D8A28A788AC5BAE47478660A3F456</stationID>
+ <name>AC @ CFRU-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538636200C8C40FE3BD9B35EDDD7376635BDB460DC2E212299F8F2F1382765D7F890</stationID>
+ <name>Urban @ CFXL-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386D7CE8D51E849BDB4DE57B733127F04B060F9C4B673440FFA7C6BDBD913028F56</stationID>
+ <name>CHR @ CKKL-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853864100CBE1F6361692B6F3281A8439F7DE20DCE4DA62A2BCD12A08CCEEA8C5121C</stationID>
+ <name>Rock @ CJSD-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853866C8E41CC7F246EEFE0FC7B12D48CB32DED00F264AC4C5B0E5A41CE94A022E503</stationID>
+ <name>Nostalgia @ CHRW-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386168B69AB7EE5A725F393872C2E8D9D4A4CA1DA4B5AC15A9A0EE48A1425242D82</stationID>
+ <name>Hot AC @ CKGE-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386982D84F66D2D1D415FE025064382691931D36666BAD901546E8DD9C3AA5E1266</stationID>
+ <name>AC @ CKSY-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853864E34CBBC7BB3CBFBEF03686C4DD8BFEB0F1BD15F978DBF3E604AC42458E23AF5</stationID>
+ <name>Classic Rock @ CJXY-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538619435BCB06CD70B3E72F9FC66A82CF7174E4715995B1119B18A415B4CA86E010</stationID>
+ <name>Rock @ CFJB-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386F02EE0FE6FC1F7CC06BD0C51E16448BF0589256C1599B36B0AB1E6D559ABD829</stationID>
+ <name>Rock @ CFPL-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386D8F3258DB9CAD4B877B6436F47C1A8CDFE0A1D98357CFDB87B12ACE9569390B0</stationID>
+ <name>Country @ CHVR-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386FDA3B5B00A3CC38D48CBD83E67390B5739A60D9D4BF59648F5F1F39E7B629783</stationID>
+ <name>AC @ CJEZ-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386DCE128C871AE0B3E88AD8914186744CEC297E7FA2695A2576E624132CFEA57F8</stationID>
+ <name>AC @ CIQM-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386C478FABC579AC6F910B9F2145AFA3BE45A40C7780894B9A7D4C90B8C4C26BE35</stationID>
+ <name>CHR @ CHFI-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538624D94F399AE7ACBF41F43E81FDA05AB1882D1059DA7BCFAEA87482B5DA5D376B</stationID>
+ <name>AC @ CFLY-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386B4E7858A1C16F77774B6D60317734B9435A111C79867EAF33F5EEA019B2ED14A</stationID>
+ <name>Country @ CYSS-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538654DEA9EA7D68F0D485BB980FF9E387487FE9278A486C32D34FD052CF4732A621</stationID>
+ <name>AC @ CKMX-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386447C292FF745659014EF1F8DBF6B58414ACA6047FF9678E6DA5E5F2C7DA5A9FF</stationID>
+ <name>Ethnic @ CHIN-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538625ACB8C48033773DC6DAD8B8DB3A65944A10B7624E11D6C25D091B078217ACC8</stationID>
+ <name>Alternative @ CFMO-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386A164237B20FB1A881985DA52D64EFCC9D2057843BB88E3BA50B4E307BA4A86B1</stationID>
+ <name>Rock @ CKWF-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538614A744DB3C84630BD3EA779761735CA6DF75FFB6E9FC2DCACCA1C25B531EA392</stationID>
+ <name>AC @ CFRC-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853868D109D1121D6084BA5617FAFBF61511320C88427C243BCC345849F3E392133F1</stationID>
+ <name>Alternative @ CFNY-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538690FB3CF0893E18C64F51903A11D73A99F4793CDBD16628E3CB2E39345FAA9B2D</stationID>
+ <name>Hot AC @ CHST-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853863DD41F785B586BD29B07CC961DBE78A8F850040EFA43E443195FEBFC9FA3F151</stationID>
+ <name>CHR @ CFHK-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386047F08B748ABA7CD3880814BF9F66C32342F7C80BFDC82DB99170F1B246BDC66</stationID>
+ <name>AC @ CKLP-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386637F85CB8ACF831AA1DF14A40AA9131182F2D8C4FFB4F3B15D88E9CD3B8F6614</stationID>
+ <name>CHR @ CIDC-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386907E950B4E21779DE4B34E4DEF7304C4519D2BB982DC9D366E14E741132BD337</stationID>
+ <name>Rock @ CHXL-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386787853E1D7749B900FC8BC37FBABF2E367DEF584D4CB213DF45252F9E3D8E16E</stationID>
+ <name>Nostalgia @ CKDK-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386F831810F48B27ED2DC2C77C3416D074C11EA8BFBC21B2433C8B03A916AA544ED</stationID>
+ <name>Country @ CICZ-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853861CB5A9AEF68F8CAB403B2EB4ED350D89C35A007EF3C5046B1B334B55C430BB7D</stationID>
+ <name>Country @ CJQM-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386CAA5542509AEBBCE1AB227BA3C8ED4AE99D4DEB801FF6A015F37190B0431E607</stationID>
+ <name>AC @ CHUM-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386965E058688936CD2A8F1AF38046DE6DA764D5B7F21F64BB0E2F0E80CFAF6A946</stationID>
+ <name>Country @ CKQM-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386A7CD1C9CF70CC34FF19A8EE55023FDE89ED1B6F4B2111C66D34EC3495BDABEFA</stationID>
+ <name>Classic Rock @ CFCA-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538693A78B680171A292CA2F2BAE4415910E9495EF3A4F345AAADA1C0AA914000FCC</stationID>
+ <name>NPR @ CHRY-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386F04D219347EF9006074AB70D3A4405A0F119E046A838F334B5FC99D3C5F9C376</stationID>
+ <name>AC @ CHRE-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386EE619BE656B906FA217A860731E54AECC2F3058CF53FCF6F7C447C7618F1E553</stationID>
+ <name>Nostalgia @ CIMJ-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386BE62C1CE01ED24B2F557DF4EE9EC54C4DC91909802DBAA0671CFFF6AB02CE793</stationID>
+ <name>Rock @ CHKS-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538608B1EE52D64B3DF96C6B8FA637F4990A904E03ADC15038EB887EB7A2E32C1FF8</stationID>
+ <name>AC @ CIXK-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853862F38341D678AFB178E35BC9E2EC81177E6ECF02F346AC8BE73F202C17B5506A8</stationID>
+ <name>AC @ CHCD-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853863B768122EE5ABF32DF9AA18A8D489F5F232AC368ACB3FC301098A40DCACDB7F1</stationID>
+ <name>Rock @ CKQB-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386ACDF712DD3826C57ECA305F40BCBFAAF5D8F34ADE81651E53F140E4A995E4D90</stationID>
+ <name>Classic Rock @ CILQ-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385386F20F122F17C34424B4B3101B3FDEC0388E96395E48711F1ED50F3141B6ECFCC4</stationID>
+ <name>CHR @ CING-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Oregon.krp b/kradio3/presets/usa/Oregon.krp
new file mode 100644
index 0000000..5166b68
--- /dev/null
+++ b/kradio3/presets/usa/Oregon.krp
@@ -0,0 +1,894 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Oregon</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853883863FB5160341F86372D0DF271FC47CB8F0678C255D10895AB092A08BFA4B711</stationID>
+ <name>Religious @ KBVM-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388CC6DC0BACE7935329D492FEF7D2A04FA8E8210A61F2DFC3556DDE30F9045F2B8</stationID>
+ <name>Christian AC @ KLVP-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388A46B06D5C2A1C49D6A4B0A81381BE29567365B8DFA4E1D3E21F153164411704A</stationID>
+ <name>Classical @ KBPS-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538877C3039E0E81AB3F402CA0EA4B1AB7796A393CE6AD98C6F609C2CEC537224A29</stationID>
+ <name>Classical @ KWAX-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388FF07FC2A6E3827449C03B0670D1EF9F0B2D3183DE0B5295C4532FDF09DE6BA3C</stationID>
+ <name>College @ KRVM-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538832F1E269FFED39DA058572E4B19193152768616158DFAAD9894EF6D76CB0D7FA</stationID>
+ <name>Classic Rock @ KGON-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538848B2148C32FCEAB5FDA0EFF5B3BF3ACA5D31DC96BCE43D22E7978D5F6BC8405A</stationID>
+ <name>AC @ KGBR-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538858FECE10F613355F0A09D6B77250BBFC1D05D3F85DCD87961E4C21E2C7E886A2</stationID>
+ <name>AC @ KAST-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538840D0C8577523199DD7AEC4C0D0C49DCC68494CB2E51DF9621552953DAA63B300</stationID>
+ <name>Country @ KKNU-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388C7419CA7BB935CA100890292A12670590F7C9A2141073E345DDAA33E823C667A</stationID>
+ <name>Oldies @ KDCQ-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853880F23F6FA64CEE5AAFDE5BEE663C626C0A3D11833F5B1E54DD9CAF02C13F8B3CF</stationID>
+ <name>Religious @ KPDQ-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538857FAED878EAE53AE56E0A0317AC54BFF931726BF740680F41EAB1C88A666A431</stationID>
+ <name>Nostalgia @ KTIL-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388ED2245039333A26A1926052045A735FBE582C4AA4D9F716DE8CE4823FE1BBD8E</stationID>
+ <name>CHR @ KAQX-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388FFBE92B2036A49EF0257B05E00560215220B7C1025F28D4B58D20CBD914D08F7</stationID>
+ <name>Country @ KJDY-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388F3D3857A8BB226026FFC6482FBE64E4BE6DF55380E4C6F3DA29B4C7DF58CD4F5</stationID>
+ <name>Alternative @ KNRK-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853882B509D0D57E0C2C2618A662C1CE7ED94C3453EC7420439585219475D5D1969B4</stationID>
+ <name>Country @ KOOS-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538885BBA9AADB2AE0C389CE8719E24BA0D9F58AA77B36BD955AE1173F654A4B824F</stationID>
+ <name>Classic Hits @ KSND-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388CE2160216AA51B7A9967CC05EE2F6710E64EDECD26AD6AEAA3B9A1FC549AA2EE</stationID>
+ <name>Smooth Jazz @ KUJZ-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853884903368623FA5F6D6BD139BEF48B9AAF0F9F9A66E9F4A356DF55ED771C0F57D8</stationID>
+ <name>Urban @ KXJM-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388E0057ED1EC0583F06BE4264DD52EB25CD98B375FC051B8DD6FECFD9050D4E803</stationID>
+ <name>Classic Rock @ KBOY-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538849B45F0ACC8E6AEAC95D44C1781325A91242108236A5EDE8F866C5052A6C7EA7</stationID>
+ <name>Country @ KSRV-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853883A44C559AFE03AC732EC6AF94BDDE5ED9D9AE2F67EE22600194FABF1234D5BFC</stationID>
+ <name>Country @ KFLS-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538888FF89FD148351E2D7CDCEA1384C65068CF77765542712DBA59BBB8C8919791A</stationID>
+ <name>Hot AC @ KROG-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538825804EEC1317E8BA6C0CE489156B02ED906533BDC833719375A9336AF6EB52F5</stationID>
+ <name>Oldies @ KKSN-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853888A2F7AAC7A9D94179B7E217215D80599C7F42A7B010F9163E08DC02B9B7F3942</stationID>
+ <name>Country @ KSHR-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388F38D0128C8AB69115DF3E3828B6384EE649A1127AB3DDF1F0FF0891D2E4239D1</stationID>
+ <name>Country @ KSHL-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538883A4624394E0E92D49C714251C6D2D010AC7D86E131DC891517FC7185DF4A889</stationID>
+ <name>Oldies @ KACI-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853886DDCBED41656B894D6E50918B803E37C284C4AD147D4CA3E00C2560545359D7A</stationID>
+ <name>Alternative @ KNRQ-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538808410D86E94AF844751A2184D3A6CC2631623F5FFCDDBBD9974F3DC249DBDBCE</stationID>
+ <name>CHR @ KLDR-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853885B99D5B32D53BD7ED0709051FB63E65B3EFB18683B18B47DC91DAD4D304D3DE7</stationID>
+ <name>Country @ KUPL-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388837CD566C2A785F4567922569E82B194F0E1C4D359333DD1494BF705A58CC38B</stationID>
+ <name>Oldies @ KODZ-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388868D826F2728C598A14139D757F4754F9CDD688A327669A7D2AC4DC5E8B4D43B</stationID>
+ <name>Country @ KWJJ-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388D333EE05EF1C556C32955388BADC9228BC62FA523D73746D966284086DA5F1FF</stationID>
+ <name>Country @ KRKT-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853889672A661BFA80D62976756250E76C2712FFD7C9B8F19248E269DEFD26D293B74</stationID>
+ <name>CHR @ KKRZ-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388A84F47C232931CFC0D15D9D86039039EAB2687203274537240B1724A08DD500F</stationID>
+ <name>Oldies @ KPPT-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538806C3231D378522823FB68E040D973DA389E1E8B0445342E71F9308D8EFE17388</stationID>
+ <name>Oldies @ KAVJ-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853881D5AE90805C0A1F19CBC0ABD71521383AD97CF88C8BF03DA2084CBAAC6BAD201</stationID>
+ <name>Rock @ KFLY-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853883327B55BF06C387113C0C7E72D4A8CEC35134A40895BBF222EC6876A964C95D5</stationID>
+ <name>AAA @ KLRR-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388424BFC3C565B5698F64196979ACEC34179B311565A4BDC42CA02EC5F694BF461</stationID>
+ <name>AAA @ KINK-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538823985E79CA561C8747508EF7071787D7132D498FF09CEC101115BC0CF39AF459</stationID>
+ <name>Classic Hits @ KEHK-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853881045E26469D68669D64369BE7ADE282B96680ED255125890EA38BB2DA29CFDB5</stationID>
+ <name>Hot AC @ KYTE-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388CCBE905BA5248088536BEA8C2BE3992B24F32FC6E88D23C04DCFC764767D5212</stationID>
+ <name>CHR @ KYSF-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388C6D73C623FB60908DA9596DBF26F24EBDA8761751B38F82A38A622F305C5CD16</stationID>
+ <name>Country @ KRSB-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388BB7DFD90777C1A191F3432782FBA38B3BA40006121639DB3AD2723C132E3EC3F</stationID>
+ <name>AC @ KKCW-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388A6982C8DBAC6603EB4C479A69A0B5D3B4424F371185CF703E5E7738FEED2A223</stationID>
+ <name>Oldies @ KLDZ-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853885625ACE49F5655467636F8AF4C45F585B28CC310279C60DEEC2D946F92CD6C2D</stationID>
+ <name>Country @ KXPC-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388AC35F23E110228171CE0DC314533CFA6419DE22A32BCBE048579B72FB8788C2A</stationID>
+ <name>Country @ KVAS-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388BB09730BC89419AA8DED077C267530FCF1DCB844F31BE1302E52A0113DDAF486</stationID>
+ <name>AC @ KKMX-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388D8C9C4F41EC6945EE7F103260DEE192AE1C55312BDDDC059816E88277723915A</stationID>
+ <name>AC @ KMCQ-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388E6826AB2AA41EFC0ED28CEA6159C25DD3FE9E12259A383860CC8E7F12B8F42E7</stationID>
+ <name>CHR @ KDUK-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388C10A75A59F32544F81AE1AA930223A5B8B421BADE7AFD97F6500EF9419DFEB80</stationID>
+ <name>Hot AC @ KRSK-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388692674CCCEB8C0398A7F770FE952F39A4714DE95EC796B0E872672DA8B0C885A</stationID>
+ <name>CHR @ KCGB-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853880E156E8508635C64FBA5D761E09DB13DFB7DF5CFE2CE834869A263ADAE8A4AF6</stationID>
+ <name>Oldies @ KQAK-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853885159F1C843AD43357B3562603149B9F3CECBA4A3757B284EAF6C560AC7A921E5</stationID>
+ <name>Classic Hits @ KRVO-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853885143A54E76D617428F3309C0B5891D8A5D93E40CBA961C688601DEA85888C2B8</stationID>
+ <name>Rock @ KZZE-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388661A85CC257AA2733CEBB53D801C951D073C0444F52CA215C76444CE349BB501</stationID>
+ <name>AC @ KLTH-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538803247D14F0138A5129CC917C98F9393E63553AD0F92519558CD42D7B195388F1</stationID>
+ <name>AC @ KKRB-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538846B276C35E58546DF955D9092037CD776CE8E7A47801CBE36F03763A8745EDCB</stationID>
+ <name>Christian AC @ KLVU-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388C3ACA7890A848AC0DC4A4C6800D3137815375B7A06222872C4C976AE543773A1</stationID>
+ <name>Hot AC @ KACW-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388F1F9EFFCA3FC5B1572F137BE01E92BE4056B61BC21A151D98908FF11140660CB</stationID>
+ <name>Eighties @ KVMX-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388F2CD7B07AF7484D22170ABAC621B39C66E8D9F133B0CAE52BF9794A7C95FE08B</stationID>
+ <name>Christian @ KHPE-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853881A135600B32F7D775AB99E315628A993918A94FF874F23FCA1AEF0E3043B8C62</stationID>
+ <name>Sports @ KTMT-AM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>0.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388518362290DD7092576A82DA931E021084A16C31BAFDC0FAF728B9FA4575E1A33</stationID>
+ <name>News/Talk @ KUGN-AM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853883532F5C569EF058C5D4A914A5F15A2E4E3805DC210D46816F82B0630BCAA78AD</stationID>
+ <name>Spanish @ KRTA-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388DDA4D529402C53D02591394E5D3F3622BCA1F9E5A6FC4A0464E016C8C35E006B</stationID>
+ <name>News/Talk @ KTLK-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>0.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388B30E6F2185E89BC0E47CDAEFC86697F4C95FFFFE6D34966EDC6963D65A58DCAF</stationID>
+ <name>News/Talk @ KWRO-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>0.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853881D391486FEA2285866DF394470C985339F48DB8DDB05377432D6F6D17BE0AFE5</stationID>
+ <name>News/Talk @ KZTU-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>0.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388C12F21F05BEC81E5D005A3EE8493724E13E5D05AFFD467960144FA931DEA86F1</stationID>
+ <name>Christian @ KGRV-AM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>0.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388BE6A3B004A1DF60302209FF7A5CF550B074EC1D5765B3F637D4E54AC450528AC</stationID>
+ <name>Christian AC @ KLVB-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>0.73</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388D74932BDBA2B74D5B847E8B16BE817559CEA0A93355E2D985EC07BD8ECE59E6C</stationID>
+ <name>News/Talk @ KXL-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>0.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388A6FA395D2D9D34D644266C237AD22436FB1C430625E82AEAB0261B8FFE7AB1E0</stationID>
+ <name>Religious @ KWIL-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853889749662632BEF9FDBB74EBC39BFAA424956F1DD7421E491EC0A3EB369757D929</stationID>
+ <name>Religious @ KPDQ-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388F3C97E42F5361AF92F42D7A48EA34B31612E4724583A24BDFACE1EB0EC18CE77</stationID>
+ <name>Oldies @ KKNX-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>0.84</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538844A32FD93C348839410DF686FA60B776B6CB2B1EAAF038329A7B171961DA09FF</stationID>
+ <name>News/Talk @ KPAM-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>0.86</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388D69A4A25B44160117845282214D5569DB44B7FFF50803B999B9132D42E7DD4D8</stationID>
+ <name>Spanish @ KWIP-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>0.88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388DE9140A8D7BFBF9CCEA50859329165CA5A1241EB9A2B2CBB15DBABA377F8A7FB</stationID>
+ <name>Sports @ KFXX-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388E739F5CCF60638252E4482F6FD4941B6D8A5282C30064270D6C0622870DEDFE7</stationID>
+ <name>Nostalgia @ KSHO-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388BFA56E88176B624EF9C9BAB485FB85FE7647929BB42CA29396944394B4FC01AD</stationID>
+ <name>Spanish @ KWBY-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>0.94</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388EA48D6EEE35D2F6A80949728FCACCFAFA03C17ADD2283C9102DBCDD05216879C</stationID>
+ <name>NPR @ KTBR-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853888D148256CA14C1878FA87318AF185C8EDE168AEC19114C780780D62A1F04ACEE</stationID>
+ <name>Country @ KUPL-AM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388C17E0D83C811BC98466239612DC213C478B94363CBED6CCF4152D8903CAB5849</stationID>
+ <name>Country @ KRKT-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853882FF9818FC1209D36C747A4301F33F1679EE28388A36BC85F96D93BAFA5B5B2D3</stationID>
+ <name>Country @ KGUY-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>1.01</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853886FC02E68B7A2B56220322545BAC38F538AFA398F199AAF6547F744D908B8C433</stationID>
+ <name>Christian AC @ KLVP-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>1.04</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538872BC614DDFF1FE7EDA860C383D9F524EAA7CF0CAA4B03B71BE73D19786C11E69</stationID>
+ <name>Talk @ KOTK-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>1.08</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388BC91B07F6D261B968ABB177E0C86E30EB812F20575430E462C3905287E62124B</stationID>
+ <name>News/Talk @ KBND-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>1.11</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853885A3A16CDB2D9DDF6B48D50F471CB56ECB0EE0057B81D8595B445B3398261241A</stationID>
+ <name>News/Talk @ KPNW-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>1.12</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538865BB7A8E6A2F665F14F5967CB4BCC13F03EABEC98C81579BDA599C15DEACDD87</stationID>
+ <name>Talk @ KKGT-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388986864C557CF9AF23F762A24BBFFD0ABEC91834B4E13C2B6B51FA7B856B5DFD4</stationID>
+ <name>News/Talk @ KEX-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>1.19</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388C3F5F636D74CC67363EF45B30EFBE69920F4EAD7CE2870C9EF9122D8EAD6E3F4</stationID>
+ <name>Mexican @ KMUZ-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388F3039815076666631E673A9EDD7A55C49C766E9A28A40A9E8D960CD2348B04D9</stationID>
+ <name>B/EZ @ KQEN-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538891EF6E7716F1AE6C5C5673E6072CDA2B65FA568760A21496C9D592EFF1E51D6E</stationID>
+ <name>Nostalgia @ KCST-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>1.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388F17600B1B770463E29ABAE73BF4D20BB7C67C8327A63D76CC3A819F16772E5DB</stationID>
+ <name>MOR @ KAJO-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853880C9CE74C7B530D7DE16A936485D1474D0A012BD6CA92D44DCB68D72A9D35A653</stationID>
+ <name>News/Talk @ KACI-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388447407C66DAEDDB3C1EC3066DED9DF6A15CC458A7B6DC0C9F5E875F7A86A2FF0</stationID>
+ <name>News/Talk @ KNPT-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853886D14491268947A5E71D57B486B75C7EB80E83A8BB1FBCDF87C902D3ECCE85F84</stationID>
+ <name>Sports @ KSCR-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853883479E196E261C188BB14A7C3430013AA034CF8F2503B2D43D519372DE9E145E9</stationID>
+ <name>Country @ KIHR-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853881B36211C0638609C43F8C814D3B89ECCB54FA129625E45ADBE5128E6ECDB6C7F</stationID>
+ <name>Talk @ KUIK-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538879EBF83061DE979B76F41715BEA7A4AED1535B633B0B39DB681B96A1B3291D26</stationID>
+ <name>News/Talk @ KAST-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388A9C99E47E7C952D66CE85682AC58A63526E7824E1B49D8CFF4FEF789E5E7D327</stationID>
+ <name>News/Talk @ KSRV-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538857C910ADF3CC623A06708B6266DB52E47839D88D54AF784B827846DFA9704AB3</stationID>
+ <name>Sports @ KSLM-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388F9A971FAC03E7CD3A05E2156D5B932F340B14E4F2A16DC494FF3CA0D02EBC908</stationID>
+ <name>Business @ KBNP-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538816680A56C5A24A3482CD983E2F23CC98642E33BCB1128D1DD26394307260B799</stationID>
+ <name>News/Talk @ KYKN-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853884FCB1E34627EC263838E5226015A4C7C6CDBED9BAE3545F542565CD280C788A2</stationID>
+ <name>Nostalgia @ KODL-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853881E21E7B3F4ED636F913A51E40C3FE5BB5A25C6C60DE4B9C6E611756B2C22DE24</stationID>
+ <name>Alternative @ KPSU-AM</name>
+ <shortname>104</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853883275C8802B2EA22BAACC839A962B0EF4E986899D5659ED0D5A39D29102FF31BC</stationID>
+ <name>AC @ KBZY-AM</name>
+ <shortname>105</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388A8B2C86D8F4E4FA760C6756507689B0DFF92F25D2E03A37DD677511E0870BC67</stationID>
+ <name>Nostalgia @ KKSN-AM</name>
+ <shortname>106</shortname>
+ <icon></icon>
+ <frequency>1.52</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538887A1423B3D526B0129D150A026E2AA86C7EDD502308A82087EB9ADB0BB7D4C03</stationID>
+ <name>News/Talk @ KVAN-AM</name>
+ <shortname>107</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538872647A85AC2FDCCE997B8556DBA326BF0FB967CF2499F6C5CE6474BC2E5B8C4E</stationID>
+ <name>News/Talk @ KGAL-AM</name>
+ <shortname>108</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538818A1CB116A472BFEEA2FBD03A512567C8687DDEEFE1DE2E6472BA6F8EE3C8C08</stationID>
+ <name>News/Talk @ KMBD-AM</name>
+ <shortname>109</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853886CC4E84641DE3E7ACCF45F7FFC6AC7265713063C68FD9D2DDCFD490C1E35D14B</stationID>
+ <name>Country @ KOHI-AM</name>
+ <shortname>110</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Oregon_am.krp b/kradio3/presets/usa/Oregon_am.krp
new file mode 100644
index 0000000..252ab8b
--- /dev/null
+++ b/kradio3/presets/usa/Oregon_am.krp
@@ -0,0 +1,406 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Oregon</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385387B314EF88FB53D90EEAF9F612BF55E3D853711D04288173277375A1A9A6A95AA6</stationID>
+ <name>Sports @ KTMT-AM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>0.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387717D601517EA2124AEA79BC7A1418653B6A34BF0EBABD04A78FC40EE8B1308AA</stationID>
+ <name>News/Talk @ KUGN-AM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538751A3C7335030D7C7C29CA2B34643BB4284847F8F843B8CEE76DFCF872C774972</stationID>
+ <name>Spanish @ KRTA-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853879664B5C34DF503854B73AD5F51889F1DDAE7FD7F80FA150F1AEA58F7E0ABB286</stationID>
+ <name>News/Talk @ KTLK-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>0.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387E70EB98B7B7E145F92F132434E9B92A304C628403CDD46B77AF5F00D5DF96095</stationID>
+ <name>News/Talk @ KWRO-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>0.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853872A8C368576762D586F6FEA2C5E113077C8AEC54CCC79E692C166933662C407B8</stationID>
+ <name>News/Talk @ KZTU-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>0.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387AB0255842D68C03F05E19E1860B826DFFA43493F632F123ADF471CB782107C90</stationID>
+ <name>Christian @ KGRV-AM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>0.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538769873D072F1CABC0D0A89D1C453CCF523164A764E49488D233E8177E1E3348F6</stationID>
+ <name>Christian AC @ KLVB-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>0.73</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538707AE11169492DB35C97D67E36B9B0954BAAC783A07DE1E8F674B7EE4093083DB</stationID>
+ <name>News/Talk @ KXL-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>0.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387AF37003A5E8FD4F29DFBE9F57071D32D1BBAF5AF4ED118C981C66E85BB1A3BB9</stationID>
+ <name>Religious @ KWIL-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538788008DCAE5AB2520760BC81D719A6D09CB637ABBC9037F66687D5C35A8A0B8AC</stationID>
+ <name>Religious @ KPDQ-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387FAEE84423DE691CD0E05E5E8F604C69B3190F895A61B513330D99DD40A010F7A</stationID>
+ <name>Oldies @ KKNX-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>0.84</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387E7758C66DAA9F01C3465B76162446C1931CAA5B04B1ECD6E12E5B71E613D9CF9</stationID>
+ <name>News/Talk @ KPAM-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>0.86</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853873F1AFF36474D0795621935AAD496E864849415D4632AF8085986CF37B0B93D8C</stationID>
+ <name>Spanish @ KWIP-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>0.88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853874EFD72B24A05B18315F602BBB5C8420C9C953F07FB2964A5699A011640B44644</stationID>
+ <name>Sports @ KFXX-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853870BDE528FE4D8BE21906C308814B69A681DB12ADBB3D1D88B765A1296A899FE9C</stationID>
+ <name>Nostalgia @ KSHO-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853877B0B8519B11319D9C1758770FC9CC551019AB9193638F098317FF824C92005B9</stationID>
+ <name>Spanish @ KWBY-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>0.94</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387AD9D9101EC5A1A85D0D6EB99CF79CF000E5587C89812D641B2AADD6CDF4A7DE8</stationID>
+ <name>NPR @ KTBR-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387465E442FD9C9F6F2DAD69F2E861D52623EA8D27DF1E7888312B6D2D2EE832141</stationID>
+ <name>Country @ KUPL-AM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853872464FA90B4F1203B5513EAB4FC29D83118406671AFA25456B6B81E0A393181A0</stationID>
+ <name>Country @ KRKT-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387B63039E010DA1D271133335449E24A823D70C6D1749D6FBAFF9595F525680932</stationID>
+ <name>Country @ KGUY-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>1.01</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387331D4E1D09193005B40877186AEA5225BB901663F18A2C690516F2BFAFA1F082</stationID>
+ <name>Christian AC @ KLVP-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>1.04</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538787F8FEE3D9635A9CF337928EBC3CB6FD1979826C86F722645F9BCD7859D16A5A</stationID>
+ <name>Talk @ KOTK-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>1.08</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538780CDA0B8974BF9920172FDB1BC6539D377094FE3695E3B366CE64136AFD1063B</stationID>
+ <name>News/Talk @ KBND-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>1.11</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853879CA2E9FCF21C8BC26933BDB7B521B2E88E39AEB34554F01E96ED22272C125584</stationID>
+ <name>News/Talk @ KPNW-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>1.12</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387FC5F06B24D169F042CB296AEA81FD38832C76086BFFA0CAD60722D179724DFBC</stationID>
+ <name>Talk @ KKGT-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853870E530FE43A60088CE54D004EAEED77714550490E3D15349EC80900A428CC3EBF</stationID>
+ <name>News/Talk @ KEX-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>1.19</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387D07588A841CE1502EA1524EAFA30D0B71B9CD63CF780152E59615CAF311984B3</stationID>
+ <name>Mexican @ KMUZ-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387CA4F07E9FFF57B7B7FC6F3E94208605F80DC70CB621825DAA7E6F5F3B0FD4D02</stationID>
+ <name>B/EZ @ KQEN-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387131C0CFAE366B70B5E1E21B1ED24EA3E0130F3233E035493A37611EA7E2318A9</stationID>
+ <name>Nostalgia @ KCST-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>1.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387F2326E1D801DEBEA2E40E658F4C1083E6CFE01276723AB15139A98D7732E1A26</stationID>
+ <name>MOR @ KAJO-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387B898BDCACF32286CF82B43A2393C526C0727210F180E85A6E1E0F3EEFD6D2D28</stationID>
+ <name>News/Talk @ KACI-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853870BF52B21BA324D5D4394EC27AD9BED452952AD78D5039A41A9C86CA6D67DB241</stationID>
+ <name>News/Talk @ KNPT-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387F016EA806147872D4EA2C5C6D67837BCC3D5B4CF3A0294460D337FE2497194A6</stationID>
+ <name>Sports @ KSCR-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853875BFFDAE221DB327796D403BA7CC282BC8AADA35E90B1AB2D864B823AD371DF3A</stationID>
+ <name>Country @ KIHR-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538721C1AE5E5D6D525E380886D22DF27AC1B06DE56706B1FAE47F4075BB724A1E3D</stationID>
+ <name>Talk @ KUIK-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387A2341C118C8F17BB435B2392F4EEAC82850DBFD80B98B3AD0466D2845B25F716</stationID>
+ <name>News/Talk @ KAST-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853878ACBF56C422B4D19F4F00D7D64815865A7AEA8A3F1BB408D149ABDFA0C84A4C3</stationID>
+ <name>News/Talk @ KSRV-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853877D20269C26C67068377C96F5E1EC63F5AA0441871EDB87E59C39F83F360ED435</stationID>
+ <name>Sports @ KSLM-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387FC2B703F29B8B98D2806BC5E48B03F1D6652D837EA1B76049E9C0DBDC7BCCFD1</stationID>
+ <name>Business @ KBNP-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853870AEB6CA320104E3623357F80846EADA83FBCCE59127C1435AC8706F0A2525BB8</stationID>
+ <name>News/Talk @ KYKN-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387818A2B7EEF28E39A7C5D131D9B94FE7CEB4D1B56CAB97E3A8BC87059986F85FC</stationID>
+ <name>Nostalgia @ KODL-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387487E341B8B09C5DF89B328EAE27B97288F98265320B0EC7340E451F92C5BD6D6</stationID>
+ <name>Alternative @ KPSU-AM</name>
+ <shortname>104</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853877D901C91C9FA538382AAB51E3DA4B86B40F3A98DA445D13EFC3A5124714AE4BB</stationID>
+ <name>AC @ KBZY-AM</name>
+ <shortname>105</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853873BCBD75AB649729CCE6D54EF8F29A5E149DA945511B7FB9F4AF6F82D973C7AF2</stationID>
+ <name>Nostalgia @ KKSN-AM</name>
+ <shortname>106</shortname>
+ <icon></icon>
+ <frequency>1.52</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853874EF72DBFBB38D1C27CF0113C8BCBC159800BA1E965665636ACF9684D9FE9364B</stationID>
+ <name>News/Talk @ KVAN-AM</name>
+ <shortname>107</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387F3B02BC1194DFD965E72B77FB31E1D56F9E9D81A5CFEF6D9F1EA6F61B1A50829</stationID>
+ <name>News/Talk @ KGAL-AM</name>
+ <shortname>108</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387321676CE36A129F3DC0D41720A02AA15B08AF20922F54235675B6C80CEDFF9FB</stationID>
+ <name>News/Talk @ KMBD-AM</name>
+ <shortname>109</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853878A445E6646677CD21E5382BEEB0BDAE801DA841A8139C0252A8674029CDCF6F6</stationID>
+ <name>Country @ KOHI-AM</name>
+ <shortname>110</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Oregon_fm.krp b/kradio3/presets/usa/Oregon_fm.krp
new file mode 100644
index 0000000..ba21959
--- /dev/null
+++ b/kradio3/presets/usa/Oregon_fm.krp
@@ -0,0 +1,502 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Oregon</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385387CCCAFD22DB9BBB201AB4C7D8920C959A4875C0B97B764527720BF5555E3D3356</stationID>
+ <name>Religious @ KBVM-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538701966B39E29C637D430864CD48696802DCBFB1FE116C0507D25F19710BBAE417</stationID>
+ <name>Christian AC @ KLVP-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387766B25CDF6533C05E9CE97B83674F7B6E00496939796468580B39ADB50510B6C</stationID>
+ <name>Classical @ KBPS-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387B44CC2E311972136B917C37F7C775952ABE92B7127173BE0DAA81D031FAC6799</stationID>
+ <name>Classical @ KWAX-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387194CF41EDA678BAD381568D99A3BB5D740D5B74265DD36CD78E3AD39AB18E5A4</stationID>
+ <name>College @ KRVM-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387CFB34AE51492D676283DD8E67D7B1B9E02F6BA901D084A67E95B5C3B6A9F69EE</stationID>
+ <name>Classic Rock @ KGON-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853875D9A35486005EC8D2507CE347D1BB304FFBBDC70F42BF363512677FF2A97D1DC</stationID>
+ <name>AC @ KGBR-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387F1EEC9D77D9D21DD93D87CF4C36E886C6177E93AF176794EA95275E3EA297C99</stationID>
+ <name>AC @ KAST-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387885214CA65F1EC67895B850A7B63C666E9EF5B18F522F4AFC3C9BC669AA30001</stationID>
+ <name>Country @ KKNU-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853873E6F1AE21668D620986FA09C5B0D148548ADE66A04C64DB24DA9963C05589DDC</stationID>
+ <name>Oldies @ KDCQ-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853879A572CB2A620D2BC8181B68AF93B71FBAF7689A216FD209F05BF6EF3A62743CE</stationID>
+ <name>Religious @ KPDQ-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387AC05336540874F7800960028C75B299E721DD171BFB074F511E03EAB88532036</stationID>
+ <name>Nostalgia @ KTIL-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387890ECCFB9A62BD5C89AE4C118637073DF5092A34B22004EE705D2DA7BF1C2270</stationID>
+ <name>CHR @ KAQX-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387BE95507ADCD4C9769EB6F31D0632802B41DFAB6C0E8F6903D9FE2DFBDEC6B996</stationID>
+ <name>Country @ KJDY-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387E8BEC0A41F729DD0464A95F7A0C70FAFED74585700C78E7ECD2C7DA1385EBCE5</stationID>
+ <name>Alternative @ KNRK-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853870FD5C861BF04D54BB961F6050801BAB9430D359D4F9E1820999C9AA18F23AF56</stationID>
+ <name>Country @ KOOS-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387B396CA79DEB8217260CF3826312676F97855F9C50E825CE4A009233285AC745B</stationID>
+ <name>Classic Hits @ KSND-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538709FE36192246F5FD5F4B02AEBC281D084D38388EBDC3CAC3772FAA52B6CCCC0F</stationID>
+ <name>Smooth Jazz @ KUJZ-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387BBFBEE7B6330563F36C45555BC6D5A3E5E3A6D70783030B101DDA16DDD27691E</stationID>
+ <name>Urban @ KXJM-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853878EF43C7140F6B01178C76FC03D3B0CB5234F6FB091CF3FE61E304841E130D131</stationID>
+ <name>Classic Rock @ KBOY-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538753C5A6250E9495AD16FF308B0C03E1AA2670DF64549DDE4BDAF1438E1C5FBE15</stationID>
+ <name>Country @ KSRV-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853878AF0A7BFD55E834BAB83CB9AB1305829CEFF2FB5357F2E2BF442070DF8F2E099</stationID>
+ <name>Country @ KFLS-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538771A890FA6A886B987311844C61DACF131846167754E64B3E021A86F7BBDBD820</stationID>
+ <name>Hot AC @ KROG-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387E0F47DD32C166625F9CC5449119F425A12C141B3F19A28D24BE4209B715FD18B</stationID>
+ <name>Oldies @ KKSN-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853875979A451DFE3F990BB7FF331A6A9B6C063A9A59440DD821A1D92AE02121C419A</stationID>
+ <name>Country @ KSHR-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387A6F95B0447FF65B16173DAC06FA7083492B0622CB804C6B4C441B51DA52BFFCF</stationID>
+ <name>Country @ KSHL-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538770F38FDDA38D35BA50545EEF16A60DC6EF8E89913DC4795F8204285E563A5AD8</stationID>
+ <name>Oldies @ KACI-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853879A20CBA989B8C778258E7068C9794FEE418AFE073C7BE7790CF8775F7A41D2F3</stationID>
+ <name>Alternative @ KNRQ-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538745167E506F07A365CF941CBDB56C455C6006656BCE0EC3E86EB0284E3E822B58</stationID>
+ <name>CHR @ KLDR-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387315A13792A7686458CA8347AB979614330BC0811EC72193036EBEC955AE3D857</stationID>
+ <name>Country @ KUPL-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538738DEED5FD1BC5BC7D4AA90E3793D617D4F8EB3AEF264CA7BAFE946389BE0DA52</stationID>
+ <name>Oldies @ KODZ-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538763E75B8DFEE76445C6CF113FD160E2FFA49CC2C13032762095BF82300257F6CC</stationID>
+ <name>Country @ KWJJ-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387107802BCA40379AF28A915F0D4CC1C87648E5646D2CECDDDE372D2F3E9381FDE</stationID>
+ <name>Country @ KRKT-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853871EDCD808E826FD2ACA1961B267F973674F38D9E8D1033505F430C1652C0063E5</stationID>
+ <name>CHR @ KKRZ-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538731C3238D5D44509B4E45AECE4897621803DDE56C98E3AF6F6B8CC3BA8986F14E</stationID>
+ <name>Oldies @ KPPT-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387FAF863645895FB8D6DD4D1B8BF3A9ACC6D3C045982863EA6ED02AB3DC40FD660</stationID>
+ <name>Oldies @ KAVJ-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387A7C3495910037DDC4210E8594263FD75AA1719688E09726A3980E17454BB5D52</stationID>
+ <name>Rock @ KFLY-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387B0DB7102326913FE15D6FCE050BE8A8466010C3730091DF5B6F07AECBAAC3CEC</stationID>
+ <name>AAA @ KLRR-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387605E468E6FC626161D6E663D7012E4E77BA7C4715E9895716C1B8972906416D0</stationID>
+ <name>AAA @ KINK-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387CDB282593A4D54DD18EF5EDBD088220D249B16D076657ABDED67D72942ADBEBF</stationID>
+ <name>Classic Hits @ KEHK-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538730E3A0F8495FF136716DC4F199564ACA37B18C4AC36B8DADB3A77D46721BC2E1</stationID>
+ <name>Hot AC @ KYTE-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538768D5D1B7F444DD18E1E2B4F2BF3924078F9F8960F166329199086FC17C28E9E0</stationID>
+ <name>CHR @ KYSF-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853871BC95A8A0BE425998C6F64861375FFD762D31F35EA2998CE52310C586FA18158</stationID>
+ <name>Country @ KRSB-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387CA7391D66EB8C52C5CACCD04094795B13C8FC89BC8C3581CEF48C0CAD8DD9D6F</stationID>
+ <name>AC @ KKCW-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387C18A112BACA5397159AFEDF17173D1C93A5FE13E0171188AC507876D8204C0CF</stationID>
+ <name>Oldies @ KLDZ-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387CC341BBB2859092A810A9D8DB5F1030D17A24BFFD7B57DA2CFF9522D122C9140</stationID>
+ <name>Country @ KXPC-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387EA3217BED2866CCD50B6C948BF065B51DEB0724CAF21352215B772A890DEE1F6</stationID>
+ <name>Country @ KVAS-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853879908AAECFC2FEF304AB8111F3ACEBAFCBA12392D98779CF6422218C848737037</stationID>
+ <name>AC @ KKMX-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853875CC97925F2ABE48388785EA2F545CEA82F289D43088325ED2C132BD68F7706AE</stationID>
+ <name>AC @ KMCQ-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853871AB33BD10C2B15CF92009FE9BD942A917EB3E5BAEC5AED36C215E5F4ACF59E1D</stationID>
+ <name>CHR @ KDUK-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853870EBE02FB82B9A52B815AD2324F99BA7265DB438A056FCBFA045D6692B269F5C3</stationID>
+ <name>Hot AC @ KRSK-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387CB2383345A3BEC79ED4A6A44E91AA4945EF83A9A06A4B65FA3D3C8E5599945E1</stationID>
+ <name>CHR @ KCGB-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853876A7B836C3FC3BFF323E29FA7AF9CE3FDE4DB2D015B753A010D2BFB2D69CC6F75</stationID>
+ <name>Oldies @ KQAK-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853879B11E50D8AA7ABB873ED74DE49A8C0D73EE1534A7C8195D95787E71FF04CB778</stationID>
+ <name>Classic Hits @ KRVO-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387D2C6BF6394A574E6A8043137852FD7570607970D8E4B53DC0BDD0D203C1C0FF5</stationID>
+ <name>Rock @ KZZE-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853872156C9E6157E7963C8D9E7F06868D98F257B12620F073606B60ADB71F2401E5E</stationID>
+ <name>AC @ KLTH-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853875D9A31E606E1F3B89C58CF976FA75A3D39DDC2E6D78D119530C75D1677C81E67</stationID>
+ <name>AC @ KKRB-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853878DECDE85E972276CB951D72B164A1D045626D6E651DC4FBF1512D32745C4ED74</stationID>
+ <name>Christian AC @ KLVU-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387529AEEC4F75947B7A8C8C57A519CA57BE7C4CF46B6F2FD9FAF000D527F20F8A3</stationID>
+ <name>Hot AC @ KACW-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387E9423C29C6F28A561C3B77C8375E5E2FD5BB87C82F7B2D003140E9128C09CE37</stationID>
+ <name>Eighties @ KVMX-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385387654BD188F9AC42F5AEBFD394727AFA704F49CCEBF8D41BD4B10A01EE81D326DE</stationID>
+ <name>Christian @ KHPE-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Pennsylvania.krp b/kradio3/presets/usa/Pennsylvania.krp
new file mode 100644
index 0000000..b50d953
--- /dev/null
+++ b/kradio3/presets/usa/Pennsylvania.krp
@@ -0,0 +1,1102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Pennsylvania</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385388ED1345AF64697082E3FB28257322DB51177CF9C47A44A6AE4384274B57778E71</stationID>
+ <name>CHR @ WWAS-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388B6DF06119A437D6FE1708C3F32B410629F9E382DC61A73C0A5B88AA7F6C95423</stationID>
+ <name>NPR @ WXPN-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538896D73649857188E3589062FC2FC692FF2B72D140C8FD42BFE0C4F0D3D46A8D8D</stationID>
+ <name>Christian @ WBYO-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>88.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538839A63CFD740998A2C40F262EB4B2CE49166BFB505682B3C03BEE6F0809BE9297</stationID>
+ <name>Alternative @ WERG-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853887376FF3BCC2D1A2D271E440E7733A707F13B672AD2AF9280213A498D68203138</stationID>
+ <name>Classical @ WRTI-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>90.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853882A88A61A98A01E781623A1C663613921D2466357F453404F7E55E06CC5208924</stationID>
+ <name>Alternative @ WESS-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>90.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388F10091BDA9A30E11AB4F157C17B623A53D6F3E58A7742613BD4E74230CEC55EF</stationID>
+ <name>NPR/Jazz @ WDUQ-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>90.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388FF071489F57A837944470054AC4DC337C3A795A5CD131EA3B146E54221C87FF3</stationID>
+ <name>NPR @ WHYY-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>90.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388DD86E8B4B5B3B7955AA7F534D26E0EA99EE9A174496AF888A2D36F2A28F5BDED</stationID>
+ <name>Spanish @ WLCH-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853884AE63315E381D5C2F57082CD103D2D32E2118AA3EF8139B7C4E6E69E20C7DF4B</stationID>
+ <name>CHR @ WIXQ-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>91.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538883D1FF79338848737D420EEC0B5B5DB402182BA7B6E99A2911D7CA267FD8FF60</stationID>
+ <name>Alternative @ WXJX-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388EB5202D4213F96BD7A2347CBCCAB01E548D7FD4CAC4091A194FE41D6FC5A9BAB</stationID>
+ <name>AC @ WRRN-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853889AFDFE323B7A12ECC64B1D954A33CC3E1E29683C6A07352FC4E8F418DCC2DEF2</stationID>
+ <name>Country @ WXTU-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853880C7C1DB41B1FFA671DF737A399215633904E96E53E77D10971D3633FEDA75112</stationID>
+ <name>Oldies @ WHBO-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388A9E9F9A458C2014D7446FB1AB4DCBDBF9EE3499A7ED1924221244EBF95B82472</stationID>
+ <name>AC @ WLTJ-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388D850F263D7A0C80C7C62B724546189CFE7DECAFCF9CA3EAC9A36087DA73E1892</stationID>
+ <name>Oldies @ WBZD-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388CFECE24028DA69A2BA058DF2928BE709137456D921BD482D6811F38F5AF54CBE</stationID>
+ <name>Eighties @ WSBG-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388F6FF3980998F7DDD70090E8705538173020363BB6B5979CB3DFFDBAC702E5777</stationID>
+ <name>CHR @ WBUS-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538822525E237FC09218FEF71D42F1DCC3D056B26D987A75C7EBE32B2A6CBCC16D08</stationID>
+ <name>CHR @ WQKX-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853885D36CBB067D0408515F98225D024D891848F00D014A4C4C50AD8D267D44CE05C</stationID>
+ <name>Country @ WCWI-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853882D6267E9C63A11DCBA2BD497A800A24808BA3F802F6ED43705893558D42ABEC7</stationID>
+ <name>Oldies @ WWSW-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853881F4727BFB0C67C6B4DCC5F88ECAD2351C1A25F9A47AC429087968C5E8E6F617E</stationID>
+ <name>Oldies @ WFGO-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853883E798C956673125362AD6CB5521E079194E6C50A7B39C3EC1DF5675333239590</stationID>
+ <name>Country @ WOGG-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853880FF26A6E2FDF02A9AB5AA54B087C122E3489F1223F62C75B6193CA908198056E</stationID>
+ <name>AC @ WIKZ-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853885A76B9E14FEAF4BBFD5C71E39F2F78326E44DD0868E35AEE0F49BCCCA88DA8F8</stationID>
+ <name>AC @ WZWW-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853883C8CDF7E6195C232AE7A892A47B265B296F40C2A9792EA8EE66EDA7483F3BB35</stationID>
+ <name>Country @ WBYL-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853889A05B2D72D3AAA7D03D4A8D89F9F871AA0C3DB6F39AF99065CA690AE3AFB859C</stationID>
+ <name>Hot AC @ WMWX-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388FAAFF51613EB1425848CCB076AEF3B502E891E1353B949818202EF8CED579A23</stationID>
+ <name>AC @ WMRF-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388E5981AE35F3EA890558CD44860AD4D8591E0C39DC60BE7B7EFBFD6700CE7E347</stationID>
+ <name>Oldies @ WSOX-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388581E50D5B2C378F33BE2E7CA4531DE992DB7E889604415868100ECEF035BDC24</stationID>
+ <name>Oldies @ WKQW-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388343B6F021604064ADA3A05B421B5146174DDD0393BDBAE55FAB58C165EE0E43B</stationID>
+ <name>Eighties @ WPTP-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388CE0A7F02C7348D479725C822A198DCFC01DCC80E2C6B9729D4C38057E57AA3B5</stationID>
+ <name>Classic Rock @ WRRK-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388429FB8B7FE2FE227E42B1377B967043860227AB4BCA2EB7BA28C7AE24F73596B</stationID>
+ <name>CHR @ WBHT-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538855324399262210706ED6373CE34D70AE0C2008047F950B38DEBFEC22329BB524</stationID>
+ <name>Classic Rock @ WRVV-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388C6F4D90172E42171E7C8998451928486D075B22B48DD063B95C6CBCA1345703F</stationID>
+ <name>CHR @ WVRT-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853888DAF8748E9FF94DE04D98DB5321E0E11F2A28D77B15C129175651CA1A357A246</stationID>
+ <name>Country @ WXTA-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388C284FD1E39FBB56286CF6A539A356B3F539F150AADFA94A2AF1A5C86912A7B8F</stationID>
+ <name>Oldies @ WOGL-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388FF4A554C4576A85DC5BA4324D214E7CE2A96526D0C1B83BC54970C7A35EE1115</stationID>
+ <name>Country @ WOGI-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538884E8A2A34BE17B216F210BD33EDE9C4533A625FA9C0BDCAEB296C50CD09FB723</stationID>
+ <name>CHR @ WYCR-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853880851F5AD484BBF6C96CE5E5CCE435411AE420E4FEF27CDE6B9704BE20DEA13D6</stationID>
+ <name>Urban @ WUSL-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853883739EA91D7D5FBFDA409000AFD698745D14CC71939305923BAB8A458E2F2B884</stationID>
+ <name>CHR @ WGLU-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388FC348EDD291EDB025FDC50092047200239BC8FB795299409C45E7ECCE7910D1A</stationID>
+ <name>Rock @ WZXR-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853887370E8C1DE859349C70906A2DC6D3815DFA5518EEABE45846F196CE84C1A23B9</stationID>
+ <name>Rock @ WXMJ-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538886BB5DBC3B68E5785E17D8834E94B1586AA00414541BC0B0D2FC05D1870CD2F4</stationID>
+ <name>AC @ WSHH-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388092A1CC6B801977DEA0C87FA4B9A4CB98332AF804A082ED69E5EF48D7D59CDE5</stationID>
+ <name>Country @ WQBR-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538898BD12271035D37106D369C6D384BEC787E8ADAFA65678A32D7B708C35F76964</stationID>
+ <name>Oldies @ WBRR-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853886F2055E9869CA4360A8F34903B94F60B467091E9C48C32F22D22ACBBA341C73E</stationID>
+ <name>Country @ WHGL-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538802EAC3897902DEFFE17697026298E40AF270E4C0596F83ADEE6F879F2DF84D4B</stationID>
+ <name>AC @ WZPT-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853888963ABA458EA197C22BE80A38DD7E35BD6F3FD921EFA7CEC30E97ACBEB198424</stationID>
+ <name>AC @ WVLY-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853880775A83902FE873DDCC1185DDFB2BDDBDBE43A19E16FA1F9322955A0EFBF3035</stationID>
+ <name>Alternative @ WGMR-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388D7CBE15E63CF6E0EAC594FFD9C185EC408321BC5A87B41987ABEB61931AE71C5</stationID>
+ <name>Country @ WGGY-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538837AF04D4C269E98E3DFE0179B0964F50BDD4AD974BA6DC5163F6B8BCCBDF3D35</stationID>
+ <name>Religious @ WORD-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538828852AAA1300ADAB66BE498B1538165EF9049CDB62669B643FFAF0392EBA422D</stationID>
+ <name>Oldies @ WCCL-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388879CC082C1392C13109B3EF12A4039027C159B6758B6E184025F01D28A7EAF14</stationID>
+ <name>AC @ WKQS-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388A6B04DC5A0AFACCC12646FFA1A5B8F860B4DE7C22EAD549960C586A268594000</stationID>
+ <name>CHR @ WIOQ-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388F3873576906F41208218E7EACDBAEBE0B2E1D2D034EB0ADE70BD0671656B026E</stationID>
+ <name>Classic Rock @ WDMT-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853886116B4C47F298ACCDA8896A893C85DF799669352DC2118F92279899008707221</stationID>
+ <name>CHR @ WRFY-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388A59D19C9FBC43A181C1DA9AF11DF94E177D87B44A9F367E921949C5F5249547F</stationID>
+ <name>AC @ WKSB-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388A7BD1BCFC5510E9F1A401451EDC390A0442E91F7E495BE8C4ECDFAC2BCD6D5AF</stationID>
+ <name>Classic Hits @ WMGK-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853885142C024E28A6DB40B1366D2748127CA483D9587FE2F0916520170DBAAEECF7D</stationID>
+ <name>Classic Rock @ WAMT-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388466231020C1B527A5CA2A8CA977A1D49F1DC284170ED26449DC96AF43D489C64</stationID>
+ <name>AC @ WARM-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853884DAA54CDE31FE0DC46EDA560BA7D356875B55E68336939118E8075B2B43B2E86</stationID>
+ <name>Classic Hits @ WKAB-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388B28F7D40DA886EFB4F43320F1D7F9E83F1BA3FDD05BAED51CFE66E3C62C23ED2</stationID>
+ <name>Rock @ WCXR-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388CDB01B9B98C624081E426776014C3314F05E6EF6DA2137CB5512182247427168</stationID>
+ <name>Country @ WLMI-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538834812051A5E510C95B352953D2BC293847ED39D97A28A8C3D5298B3E0D9BADDC</stationID>
+ <name>Hot AC @ WNNK-FM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388AF56CE9BA7E443008B88D5763BBD9191EB156B1C5F833E0947933697F29B108E</stationID>
+ <name>Country @ WOGF-FM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388C0275A42477FA2140730072CF7EF49307AB3332BFC756D781BFF5171360620FB</stationID>
+ <name>AC @ WSNI-FM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388FFE4D722DC6B83342F7027CE7E664F6565D4B3B1BA528FD92596EE6FFD011DCA</stationID>
+ <name>Rhythmic Oldies @ WJJJ-FM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538862679B8A37EA4C976E480BC85784999B237A080A610A3DDD81B71FBF5F159378</stationID>
+ <name>AC @ WWDL-FM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388F9F7C483DEEBC728ACE99D233EBAC537E2E46EFACFE9D428B9763228FC32FF22</stationID>
+ <name>Country @ WILQ-FM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853884596894648D57F79DEE63565CDB497B6EC2C2F1A4EC770B8654F42037DE5389B</stationID>
+ <name>Urban AC @ WDAS-FM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853886B378D2FDDC64F83D7DBF26222379E34A0A49E5A4C94370ADD360A2DFBA73406</stationID>
+ <name>AC @ WMGH-FM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853888B5255B96B27C3B538D00AE6CF8CAF58AF36244095F1B4D3315633968E63EBE7</stationID>
+ <name>Active Rock @ WQXA-FM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538895A6F39B2C3307F8B73AE27886E950F8F1AD368060B7429AC50A2744000B5585</stationID>
+ <name>Alternative @ WXDX-FM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538831576CC5AEBE1F0AB8201A068FAE65EB5405179E06D8E3E2EE0942B633B45361</stationID>
+ <name>Smooth Jazz @ WJJZ-FM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853883E5923F370E4ADA0D5509F22EB12C76A47AC2C948934B021DAC01001EA692074</stationID>
+ <name>AC @ WLCY-FM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388FEFA9BD51A8658505305101B4A215603F1B4D82BA7B465F54D0B3002BA5FBF41</stationID>
+ <name>Hot AC @ WFYY-FM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388DB476FBDC6C8EC7997F2031E9A83F20E9E2BC1C3053D75F98B22BAEBC4A064E1</stationID>
+ <name>Urban @ WAMO-FM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853888A81CF69001063A943C966E3922109B0CE780A18EA6629138041691BDDD3FDD7</stationID>
+ <name>Classic Rock @ WEZX-FM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388D96D01A6E66BDAF28E433F0FEAE2132E0EFE2BE37F52F0BD58803705DB7B619E</stationID>
+ <name>Urban @ WSSZ-FM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853886DF6D556DED5206A4B4A0F596C61F9CAAF8F46EFE60B67F750EEDF7448D35295</stationID>
+ <name>CHR @ WEGH-FM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388C4050A7327918FA7E889A7E8F284825F2F575227B1EE72E0677CFF35AD001292</stationID>
+ <name>Religious @ WBYN-FM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388FFD256BD5D6CAED9D0D9B1F96034AD1F6BFC27D736ACC985D775EEB6139B8851</stationID>
+ <name>Country @ WGTY-FM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853880C0F22D19A6E7071C5D994F3A62141EB276851E677BFBF998F436D2AF973BD20</stationID>
+ <name>Rhythmic CHR @ WJHT-FM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538889A165693AE59536B57C9E9B571268AB4C407952343E96139D4BA8762B5CF02A</stationID>
+ <name>Religious @ WFIL-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538866F0A3787B2F36AA0C122C981D95FA5210EC7CCC43C3B35EA699825F89726A48</stationID>
+ <name>News/Talk @ WHP-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>0.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388297CFE4143C86F39FB47D45B3135C3DF1C85B832B4B85C5F416AF41AA74137B3</stationID>
+ <name>News/Talk @ WARM-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853887E853FCF1525E56289B8A55C70B5E1C2931F196103A322AFB9E4F0B0B0749527</stationID>
+ <name>Childrens @ WWJZ-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>0.64</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853886A432A75B5F211D5E985ED6E81898B1F07E4E94FB14AE3891357A9685F28BE8C</stationID>
+ <name>News/Talk @ WIEZ-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>0.67</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538806272783901A7A4219042A942A28E52C5FB853850D3DB3FB948B1F4CF9EFFBEF</stationID>
+ <name>Other @ WQHS-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>0.72</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538826539F3AAFB28B3041EC19D0C64A8E016C920DE84226295092E868E8419A8738</stationID>
+ <name>Religious @ WPIT-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>0.73</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853884BE7AE07982E2B47D312D33CABC1708C8ED65DD2C5531DCD2BC5B6FEA3A84D1F</stationID>
+ <name>Religious @ WVCH-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>0.74</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388C131148AE1975FC9439A925E3B7B617684ACAD739F3B2546209B4464E7454BC0</stationID>
+ <name>Sports/News @ WAEB-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388DF55CA1D5F1FA3B5070B7A706FE604C6D2F7D507ADA3385C2D2C5F43F2B7BBCB</stationID>
+ <name>Misc @ WEDO-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>0.81</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538870DF8A3095BBC32B316572DC651ED367D8F04A3969543BE32C011075053D4BD6</stationID>
+ <name>Urban @ WAMO-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>0.86</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853884D757B316B4880DA0E22B89DA915D9839C9AAF4F76D08039DB6C837C0A2509E8</stationID>
+ <name>Sports/News @ WSBA-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853889972A8C17DCCE31AD4B57347954394EA845898B6BC71E2DE7A688A92FF46234B</stationID>
+ <name>Nostalgia @ WPEN-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388EB255D4354F05BD6C6B340E76E361DFC43B6B13223DCEBF869800DD9C348A299</stationID>
+ <name>Sports @ WBGG-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538806B3611B3E3976B0951F939429FBEDA63778344516339E496FA7539F810C19A8</stationID>
+ <name>Religious @ WZZD-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853884525BF9C20BCB07ABE882A52212C356514EF43FFD8E3539C7F462C025A23F162</stationID>
+ <name>News/Talk @ KDKA-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>1.02</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538810AE16677B7F0343C788F2A81D2A5E08CE4DDCDD35AE2E8505F08AF740AD0F30</stationID>
+ <name>AC @ WLYC-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>1.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853884490C13FCECCBD6CABAAAAE2ED79AE5064697E3282596E7600E561E703F00FF9</stationID>
+ <name>News/Talk @ KYW-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>1.06</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538807487CFA71DC67810523219B464468BBA3A37016F1A0D852A5980B2342BF54A3</stationID>
+ <name>News/Talk @ WKOK-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>1.07</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853884CCE2DA0E0112F4267FDF774E2BDD8B42BA4360CA818A6DFC4E0B7707E31E244</stationID>
+ <name>Religious @ WWNL-AM</name>
+ <shortname>104</shortname>
+ <icon></icon>
+ <frequency>1.08</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853886BEEB1B16F5850F47854E3E09DCC450F4C9A4BCC76518E7A9CF7B002F454B79F</stationID>
+ <name>Religious @ WNAP-AM</name>
+ <shortname>105</shortname>
+ <icon></icon>
+ <frequency>1.11</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388E924A425946C3F27E331C35FAD8A4C8206F933E184AE4CB6792D52B3F3C6F6F3</stationID>
+ <name>Country @ WHUN-AM</name>
+ <shortname>106</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388C8CFBF80B41F6B1AC6562E165B6B5910DF73B0862277BA880D46A65B961C9A1E</stationID>
+ <name>Sports/News @ WKST-AM</name>
+ <shortname>107</shortname>
+ <icon></icon>
+ <frequency>1.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388306609186786AB57C87103742F341498AE375D89E656C247E7C7F6735168C3C1</stationID>
+ <name>Nostalgia @ WBVP-AM</name>
+ <shortname>108</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388880451599D4661C9DF0169F0A1DAAFCF5BDC0B82CEED1BB622FF7D4A65CBC5CA</stationID>
+ <name>News/Talk @ WIOV-AM</name>
+ <shortname>109</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388D86E0F5431AD36FDCE64F6C14B36680F8603A698FFDC014889B728DE7FC5DBF2</stationID>
+ <name>Sports @ WEAE-AM</name>
+ <shortname>110</shortname>
+ <icon></icon>
+ <frequency>1.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388BF60A09F59704E12B0B5DE4E8DA62C34A9E1615D51696775F253A98843BEB926</stationID>
+ <name>Country @ WPHB-AM</name>
+ <shortname>111</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538894F229B56592D0C1244AC9AC5D40361328432830828F26AD4E273A1D04F3C8C2</stationID>
+ <name>Oldies @ WFBS-AM</name>
+ <shortname>112</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853888604250849E1F79F793E4CD3DC2605BC6B5E4F2CBE6CA85BFF7F72BFE5E4FF9C</stationID>
+ <name>Nostalgia @ WFBG-AM</name>
+ <shortname>113</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853888E49944FF1F4E0F95FDF1EBF6F1AC9959D0D3179DFDABA0DDF048A696FD7100E</stationID>
+ <name>News/Talk @ WTZN-AM</name>
+ <shortname>114</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538804E92A47178E15F105E5C7C2D33CE6C4044B1765B8F5E5D4A6DD9D51BBB89515</stationID>
+ <name>Oldies @ WGET-AM</name>
+ <shortname>115</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853889CE756E2F777D5AEC8B667C090D29F6C1AC81E156BD33B0247C9720F09A00BA5</stationID>
+ <name>Nostalgia @ WYSN-AM</name>
+ <shortname>116</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385389C63ED6095118925E9DCA1320C5812B703C37DE34328ABE211790FB72D7196723</stationID>
+ <name>News/Talk @ WHAT-AM</name>
+ <shortname>117</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385389A4786B4C952CBF3BEAD570E57E24AF5732C1693E69E77F3086A9B5475C0C4699</stationID>
+ <name>News/Talk @ WPTT-AM</name>
+ <shortname>118</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385389F6F6E807755683990312242E51B03AD492C5296AF6A9589964610852CA5582CF</stationID>
+ <name>AC @ WWCB-AM</name>
+ <shortname>119</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853896C0D2112B7050D963DD3F80730AD2BB220C9DED9B5F58B0E12839F2EBBF8C233</stationID>
+ <name>News/Talk @ WMLP-AM</name>
+ <shortname>120</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385389F502C85D90718B5A3956935B71375E4CDB6B78CB4D5B7E45B1DB294C25FE0E2C</stationID>
+ <name>Sports/News @ WRSC-AM</name>
+ <shortname>121</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853898E8B420CFD2C707480693460F59D74A2D7374C8AC103BF9091F9C219AD5D8361</stationID>
+ <name>News/Talk @ WRAK-AM</name>
+ <shortname>122</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385389F43411368A6E58F5FCC3C5336B243273D486280C4C2708DA1D827DBDDE3137C0</stationID>
+ <name>News/Talk @ KQV-AM</name>
+ <shortname>123</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538926FB17EFC7823FE853E326CDCB036A40BB1BD1C337375695227F63A8D0F595A7</stationID>
+ <name>Oldies @ WCOJ-AM</name>
+ <shortname>124</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853899484BED855FC49909508F804D04DAEEBD20579BAF1883CD6BA194761AC4AC065</stationID>
+ <name>News/Talk @ WVAM-AM</name>
+ <shortname>125</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853892EF8D9A8843C0C88120CDABB203E1BB00F81E9FA167F3A3BE0DDDBE8A6E14AD6</stationID>
+ <name>Sports/News @ WMAJ-AM</name>
+ <shortname>126</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385389CB755108D52DEC151074AC3C8444E188CD81DA3CDDE99BFD6AE06135445B3679</stationID>
+ <name>Sports/News @ WMBA-AM</name>
+ <shortname>127</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385389276A35CC3564BBA06DC1810D25F6FC10E12B69DB48A5C5BB51D30219C9B156E7</stationID>
+ <name>CHR @ WFJY-AM</name>
+ <shortname>128</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385389B9977FFD868CD3D8FAB9DBED3A04F1CDE725DA28D9DEE121BDC7CD03EED21EFF</stationID>
+ <name>Oldies @ WISL-AM</name>
+ <shortname>129</shortname>
+ <icon></icon>
+ <frequency>1.48</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385389C1375851F0DB637BE05274B8A6292E075620A89D37D4E6FB10BA64C00FA67673</stationID>
+ <name>Misc @ WBCB-AM</name>
+ <shortname>130</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538948F7DE9715CA70364577C3278588E909250D64E2ACE612B7AFE21D4D6E55D09C</stationID>
+ <name>Gospel @ WPGR-AM</name>
+ <shortname>131</shortname>
+ <icon></icon>
+ <frequency>1.51</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853890A3D6365826E19CA08994472D622965B6BF9727790EF661E6458330269DC72C4</stationID>
+ <name>Country @ WEYZ-AM</name>
+ <shortname>132</shortname>
+ <icon></icon>
+ <frequency>1.53</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853891DDFD748B1DE8C8FEDB4EF35E9E5E554A3630F48E32D7D227B70CA9B23AC6769</stationID>
+ <name>Ethnic @ WNWR-AM</name>
+ <shortname>133</shortname>
+ <icon></icon>
+ <frequency>1.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385389225C613F2430A4D8A9355A6B35ECEAB47F4B701E544D5FF7C95C5D4EB4F314E2</stationID>
+ <name>Nostalgia @ WKQV-AM</name>
+ <shortname>134</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385389A9CCE8B35FE1CA7A59CD0A02FDC9EABF0181F7CF458F39CFFBB03C5477BA553B</stationID>
+ <name>Sports @ WPSN-AM</name>
+ <shortname>135</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385389CCEB88EB389CD037C5CF9750F6D67038ACE70511D3D84AACFDBEFA353721EA16</stationID>
+ <name>Religious @ WJSA-AM</name>
+ <shortname>136</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Pennsylvania_am.krp b/kradio3/presets/usa/Pennsylvania_am.krp
new file mode 100644
index 0000000..25e44e8
--- /dev/null
+++ b/kradio3/presets/usa/Pennsylvania_am.krp
@@ -0,0 +1,430 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Pennsylvania</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385388A3334A24B1C91669412627A3608FA98EAB06E145F1C934732D483ECF2B6110A2</stationID>
+ <name>Religious @ WFIL-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853880932C157130651907253AD8634BB10D2B2FE7D9A5FAB358AF8ECC9B20325A05C</stationID>
+ <name>News/Talk @ WHP-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>0.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388CFA3E7B47BED163C5450B735D2F0D0BE8395D940B3DE5B44EA053F9E973D619A</stationID>
+ <name>News/Talk @ WARM-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853883D0EAA21D9AAC702CEC3E4CB0127EA8ED35818FB65307821C1B615D36C1171BD</stationID>
+ <name>Childrens @ WWJZ-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>0.64</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853880174299E83D0EA8421191749F2EF337EEF4D7338D66B9965FEC9CAE9CE31795F</stationID>
+ <name>News/Talk @ WIEZ-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>0.67</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853886043B534897AA07D40AF346BF053F447D11353741421B78AFCFC85D058BCDC4A</stationID>
+ <name>Other @ WQHS-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>0.72</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388DB3E386104FA2F042605AE435144A3D03305D7856A370395890CB18B8A3B565B</stationID>
+ <name>Religious @ WPIT-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>0.73</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538880C953F720DA5E747D8F03741B27EA273A2C76B1DC5F1C3D8B23AC74F6A79D4A</stationID>
+ <name>Religious @ WVCH-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>0.74</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388F15DE1F89F5AC019B3A882D9738CFF20663206AE64FE03497DFBBDB128BC92F6</stationID>
+ <name>Sports/News @ WAEB-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853888BD8882F31197DBBC4D0374BEDAD79FDE558638B8DAD9D6F9BE00419E00C2C6C</stationID>
+ <name>Misc @ WEDO-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>0.81</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388689EEFDA263C281735B3466B567222C2BD5EE7BB0A98F8609735192933488A4F</stationID>
+ <name>Urban @ WAMO-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>0.86</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853880E7438C740C621660CE1A7C0F4CDD33CFAA22D51FA2FEB5D329D402EC9D30629</stationID>
+ <name>Sports/News @ WSBA-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388076B7828030514874BBD0987AD46036BDB37CE8E330E0E63D4C4277DA8D31C93</stationID>
+ <name>Nostalgia @ WPEN-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853884250E66F4F6382FCC5F04FC73FDC8E8CF01A076E30D4EA5AEB6508EC7139203E</stationID>
+ <name>Sports @ WBGG-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388409222BCF81C2E79D42152961555A6F3D64C206461B8E252686961A340893356</stationID>
+ <name>Religious @ WZZD-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388A7691B20FBA5E9A321538BB4000F517C70D8283E889D703097897A2502908A07</stationID>
+ <name>News/Talk @ KDKA-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>1.02</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538812E2484F78E7F668A67C7F12515312A82BD53D672B0EA77B5261A864275CECCB</stationID>
+ <name>AC @ WLYC-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>1.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388D55066C82B01E4002352DB18740CE50C80AC916F18F8A0FB30F7951B66E15669</stationID>
+ <name>News/Talk @ KYW-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>1.06</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388F6CA52062C3887F7D6C6A9F2CF476AC6090B60A86B04CE4DEA3BC100C7017BD4</stationID>
+ <name>News/Talk @ WKOK-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>1.07</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388A8527E2DD0E5878B00F98C0F237A6E58D419126AB55E836890400DFCAE44E271</stationID>
+ <name>Religious @ WWNL-AM</name>
+ <shortname>104</shortname>
+ <icon></icon>
+ <frequency>1.08</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388F4EB37B002EBC4A6467C6E03B72079B1BDCB8C2F59C57563F9C766E8690D368A</stationID>
+ <name>Religious @ WNAP-AM</name>
+ <shortname>105</shortname>
+ <icon></icon>
+ <frequency>1.11</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853886923B1A56C8CB557DC74A4BB49E74D19D6E7C407F12384020B412B675A93BE88</stationID>
+ <name>Country @ WHUN-AM</name>
+ <shortname>106</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388C116B7855110834C845F5562788BEF1468A84B1843C850B08AAA8DB6B4C9F25E</stationID>
+ <name>Sports/News @ WKST-AM</name>
+ <shortname>107</shortname>
+ <icon></icon>
+ <frequency>1.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853889DBBA92C17D5067018886AFA701C07F8517EC31BA155A445D78E59643C59D50D</stationID>
+ <name>Nostalgia @ WBVP-AM</name>
+ <shortname>108</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388F2ED19351A3605A6C2B8DCCAA0A93CC6FCB1CD05332178B904C79A685D1A0DCD</stationID>
+ <name>News/Talk @ WIOV-AM</name>
+ <shortname>109</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538818A88F19ED735DA0DEA113DBD193D154A49FCCF7BF7FE6DC05185522270AD423</stationID>
+ <name>Sports @ WEAE-AM</name>
+ <shortname>110</shortname>
+ <icon></icon>
+ <frequency>1.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388FA3D52495C02342627B83439EA44F6D1DAE03E2675BF030DDF22E91B132005CF</stationID>
+ <name>Country @ WPHB-AM</name>
+ <shortname>111</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853885E9FEB1E3D16A3022649DEAB1E0287073AAF967C682161CDCE6254122D70AD81</stationID>
+ <name>Oldies @ WFBS-AM</name>
+ <shortname>112</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388F18E89C893646F70D4BC53DC99988B0F1BD378E0A3D9777AA9E14E4B257669B1</stationID>
+ <name>Nostalgia @ WFBG-AM</name>
+ <shortname>113</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853884F5A7436B0CB00F890F292CC17C9BA0D0D609AE3F5DD60420F1098F3B6A52674</stationID>
+ <name>News/Talk @ WTZN-AM</name>
+ <shortname>114</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388D5D9755A313E05088F5B6DCF63E838DC26F65911BE648731BA5B304CDF92DC63</stationID>
+ <name>Oldies @ WGET-AM</name>
+ <shortname>115</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388A31AD92707D662199E29E8EBC53EFEE4BFEFBD086BDEDBB7C430FFA54B2627EE</stationID>
+ <name>Nostalgia @ WYSN-AM</name>
+ <shortname>116</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388D375D267BB962B3B50D3B70BA2F5967756F82AF9A0739AF20479F1819EB042CB</stationID>
+ <name>News/Talk @ WHAT-AM</name>
+ <shortname>117</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388843D207CFD30FE55538A8C41492DCB777723F7A6C8328086381CC9E0E750E264</stationID>
+ <name>News/Talk @ WPTT-AM</name>
+ <shortname>118</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538848F32ADF4FCF3D0A6E0B52336D64A7F857A0FB938E4145BF980F690A9D51793E</stationID>
+ <name>AC @ WWCB-AM</name>
+ <shortname>119</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388DE7A5343FEB19946946848758587C6857B8F4273083AE200EF106C792F089FC2</stationID>
+ <name>News/Talk @ WMLP-AM</name>
+ <shortname>120</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388826C756AA7E06F23E3C68CFEA18810AB4546A59ADA94E152D579BD20ABFD2895</stationID>
+ <name>Sports/News @ WRSC-AM</name>
+ <shortname>121</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853881A801E6E279FB23F2AC1E2534934B1B304711B8B4029DB4EEC6E0680EAE71257</stationID>
+ <name>News/Talk @ WRAK-AM</name>
+ <shortname>122</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853887307043F77EE0D4FFDE9156A64E121128096E254FAF8A104963859E52BA0D850</stationID>
+ <name>News/Talk @ KQV-AM</name>
+ <shortname>123</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853881B4D1D7929C5172105BC3B68B3BBE63CCBF712E3626DBC1D789CFCF3DC40371A</stationID>
+ <name>Oldies @ WCOJ-AM</name>
+ <shortname>124</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388B32C3743659D63C0E5E2D840DBC463FBFFC4CD8B479B9DC6F905293CD2129525</stationID>
+ <name>News/Talk @ WVAM-AM</name>
+ <shortname>125</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388DEB7CAB35B93DE3B5D4D4BE34319F0CDD03228C936E775557A25A65CDABA0F6C</stationID>
+ <name>Sports/News @ WMAJ-AM</name>
+ <shortname>126</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853882A1298178382DA93C2DE0E857EA3AA902BDDCFE2BDE3500D9E984316A962E322</stationID>
+ <name>Sports/News @ WMBA-AM</name>
+ <shortname>127</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388AFD44FFAECB8177E7371FC76FCE27EC0D76F95FD9B1C62812D1CFCCE57383CD8</stationID>
+ <name>CHR @ WFJY-AM</name>
+ <shortname>128</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538836AE4253F473056FF8EB26E7E1AFD428C026068B67CDE45469231A793A521789</stationID>
+ <name>Oldies @ WISL-AM</name>
+ <shortname>129</shortname>
+ <icon></icon>
+ <frequency>1.48</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388827B3BE0FE158A2B9FE71E821528C555FE7B5BEA59A3E1F69CA06045F43650C2</stationID>
+ <name>Misc @ WBCB-AM</name>
+ <shortname>130</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388AF7E2B6C51B8D8D43228C7A3A4E9E499C7FFB45E66CC39217AE42AF71E0D6811</stationID>
+ <name>Gospel @ WPGR-AM</name>
+ <shortname>131</shortname>
+ <icon></icon>
+ <frequency>1.51</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853881B910C30393BBCFB24CA82E73D043BD784FE056403B460D8C8C8EFEC02F4B9DD</stationID>
+ <name>Country @ WEYZ-AM</name>
+ <shortname>132</shortname>
+ <icon></icon>
+ <frequency>1.53</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388393F21BC3885CA5876B2F41B363C6D06BDAE173421089176850234DD4B7D90D7</stationID>
+ <name>Ethnic @ WNWR-AM</name>
+ <shortname>133</shortname>
+ <icon></icon>
+ <frequency>1.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853888B825976EB1AC9BD0891BD488D6D5299A770A24DFD2C6492CAF946DCED361FFF</stationID>
+ <name>Nostalgia @ WKQV-AM</name>
+ <shortname>134</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538879BBA9E8FDCDBA13C4CBFD5CF8BF796B606169CDC808CF98C9AF6C721745664F</stationID>
+ <name>Sports @ WPSN-AM</name>
+ <shortname>135</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388AC8A7D0B876979D6B9CFB01C649E0FF6E5F7A3F9BEAADE3C47A3AD69D87234CA</stationID>
+ <name>Religious @ WJSA-AM</name>
+ <shortname>136</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Pennsylvania_fm.krp b/kradio3/presets/usa/Pennsylvania_fm.krp
new file mode 100644
index 0000000..f65c902
--- /dev/null
+++ b/kradio3/presets/usa/Pennsylvania_fm.krp
@@ -0,0 +1,686 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Pennsylvania</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385388320F95A3532D1C28352C554361E2E8344ACEED1ED54219DE5610F6E89927DCF0</stationID>
+ <name>CHR @ WWAS-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853884FB5B3B4EC7F54D24753D44028CE7BDCED2909FDC2C182F092A1B2A607E1761F</stationID>
+ <name>NPR @ WXPN-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388377516C3F0DB9119C53D9A492312F47C1395A6DCA685ABB5294193600B8EDE0F</stationID>
+ <name>Christian @ WBYO-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>88.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853882E3079241DA1DD74C25154C5DF1F8FCC55184F13FBB742E45B962F7848049383</stationID>
+ <name>Alternative @ WERG-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853888F7746F5B4A99F1F1EF56E843F2AA90419D68C7D2CF21ABD5D4A7F7C24E1127E</stationID>
+ <name>Classical @ WRTI-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>90.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388C518B6ABB03BF91AFB12474C0755AFA35395F46FB17FB07678E2CBE4072B8AFC</stationID>
+ <name>Alternative @ WESS-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>90.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388F3252ECAC72967AF4ECE8EE29EB157C93D90E640F13720E32DFD6F33997F6901</stationID>
+ <name>NPR/Jazz @ WDUQ-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>90.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853883D0933CA518D81FFB53BE2493D8499B22E397E00CF6685FAF26606F69C097BC8</stationID>
+ <name>NPR @ WHYY-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>90.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538879B3FC9DC230C54C3A82B34CB0D6C1836ED63DAFC72AD2CE7C2177C243F0FED0</stationID>
+ <name>Spanish @ WLCH-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388F2F803B9D6F3247E1C08000D4133E2967664A46333D37FFFE29BC250F4A9B278</stationID>
+ <name>CHR @ WIXQ-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>91.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853888286A472C0F5D0CB55CB9DB2155B89769E3E6ACB79C079EFFD9A00AF8D4EF31E</stationID>
+ <name>Alternative @ WXJX-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388C75F4C59190CCB84F77BC3EB58596522CE4E0503BD38E05901CD6327ED443560</stationID>
+ <name>AC @ WRRN-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538866482F5553E170986409A615F1768161284954A7EECF25F30F28F2B2AD021611</stationID>
+ <name>Country @ WXTU-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538895374E39A709781ABEF1BC9BE199BCD284BE4C8CD0533792F43DFA0D4E193C50</stationID>
+ <name>Oldies @ WHBO-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388C8D80EE3D30D0EF29BE18933B1EAC8972DBEE10099FC820B5D55A69D04E80AFE</stationID>
+ <name>AC @ WLTJ-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388551512D0852A0EF6E2FEE4F1EE585C732E665AC7399849F331B953C9D58C8E4B</stationID>
+ <name>Oldies @ WBZD-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538815385B4C942046B16F0A79305544FA1C1FF36D611BD36757EED2555CCCB072E8</stationID>
+ <name>Eighties @ WSBG-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388CA0145DC468EA2B296949230A1E7F07AAA4C03A49B56A599E2572F683F1310CB</stationID>
+ <name>CHR @ WBUS-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388D1536BF1126DB679BD2510E93DD84695238892F787F9F808A4F26E3E8169162E</stationID>
+ <name>CHR @ WQKX-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388537E4D6105235CDAC717265FB9A763380AF9A148D836072CDC2EE07E6676BF2E</stationID>
+ <name>Country @ WCWI-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853889E53D7D28563095772A84E02CB43FBEE8FD55EF58C8A8AE00CC1B47DC697551E</stationID>
+ <name>Oldies @ WWSW-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853884B39A0B9712F26D064177A026A97431E264D444B96C134A51B61451970FCC226</stationID>
+ <name>Oldies @ WFGO-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538800BE98B5A5EDB076FE297F86262FB8013203A02051A4816984F1F003232DA010</stationID>
+ <name>Country @ WOGG-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388C2D881F8CE595E93CE0F873AF5E3BECD5E1C3B4CA3071C5A6F7A11506DD4A462</stationID>
+ <name>AC @ WIKZ-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388A866F9B27AA986346773C942FA7F8039828AA86932581E212D4C05247F2F3F8E</stationID>
+ <name>AC @ WZWW-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388E905F87840C79122A04F77D3C0F3CA0D5B2EA745E9D0DD809BB95BA7E5394548</stationID>
+ <name>Country @ WBYL-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388F8B202949B58E84A330CEE80F0E457F3FB3F4317F0C5F7E93ABA29923977AEA6</stationID>
+ <name>Hot AC @ WMWX-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388D7B191ED737D38AA6882F4707BE940E8BAE506CF133D9936726AD0E5B9522635</stationID>
+ <name>AC @ WMRF-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388C178B6A5C37DC0E28AB823D0062B37C7D103259D1236EA13B78D57DF0C9D702A</stationID>
+ <name>Oldies @ WSOX-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853881F3A075F6B819C2FE701419EB551CEF3475D04BF4FC18A3594467938540D532D</stationID>
+ <name>Oldies @ WKQW-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853884D6496D773BF5DF8D2DD41310D0C6E4F38B38387D757CF99EDD9CC4B4C997215</stationID>
+ <name>Eighties @ WPTP-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538898F7B4FEF68A79C67D035785F25271ACD10067C5AF629B625289878F6B2D5025</stationID>
+ <name>Classic Rock @ WRRK-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853885CB74727FF3A60375D2297CB8E2F0DF8757063BB660EBC861C38989B028187B5</stationID>
+ <name>CHR @ WBHT-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853887F08372F9078A0A904769665EAFC9CC41EC1D22C44AD3524E87196EA0A6A64AA</stationID>
+ <name>Classic Rock @ WRVV-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388B38723DB80153A337712A2D115C1F8BBBBCEDC90AA507180EE3CE01ECE8E3150</stationID>
+ <name>CHR @ WVRT-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388F4B5D6C0FE8E4A5020EABDAF0066C413BC6A2745A172D6465145A7713C3442D5</stationID>
+ <name>Country @ WXTA-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853882890CEDBEDCF03704CD59626822A3C2A6291C61894FBC7934FD80AD86C8F03CA</stationID>
+ <name>Oldies @ WOGL-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853882141DA9BAE412981AF8ED810211E1400F017FA5628369DDA8FF7F78DE518CE03</stationID>
+ <name>Country @ WOGI-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853888A15ACEAFDD48328DC04D8DD4F5AA1BF6C0AB7A3F1A81DCE37D75D75B4AA8CAA</stationID>
+ <name>CHR @ WYCR-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388C01C0578820D351481EB531FC989A968D346EC5EE4E595E27FA66858FC19EB21</stationID>
+ <name>Urban @ WUSL-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538883EC01AE1CBBD918137B4FB6DA26A13D835EACCFE79FA0FCACACE239C89F1553</stationID>
+ <name>CHR @ WGLU-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388DE1479A9D2843E9B4D60D4C7E6CA13C21E35B075D68542FC08821BD0A478F9AF</stationID>
+ <name>Rock @ WZXR-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853886F06C27C6B9418E7DE17EC36F690FA2EC1F5D2C57D836D63C0CCA83DD225E3C5</stationID>
+ <name>Rock @ WXMJ-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853880D4DA6F74ACE128B45750C5305ABBDE575B164DB1BC3774ADAA67CA483E0F572</stationID>
+ <name>AC @ WSHH-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388FA0204D83E277C3EA4A6AA71C2E88AFD64E2C914776F3311DE0F4A87179A0662</stationID>
+ <name>Country @ WQBR-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388E390DF35C88E9A6F3731B7F4FA1583D2524C11A80A4585F7C969E6FF9792C9E6</stationID>
+ <name>Oldies @ WBRR-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853883740EF937FEEB8234245F8939CF1AFAB4C26412CDBA803D3B4AE58397CD34B94</stationID>
+ <name>Country @ WHGL-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388B28BC5E12AB85949857E95BD4629326F05ABE047193C2C1635C5A037B25DD291</stationID>
+ <name>AC @ WZPT-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388A903B4AE91CFDAF4EC3836BBD802D814C4EC4FDC6E823537D28D66B53F0A9775</stationID>
+ <name>AC @ WVLY-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853882D8EE02C29FACDF59779CD5380C2CA78C60FB17BC1C16B8BE999C0147029CBEB</stationID>
+ <name>Alternative @ WGMR-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853881F0DD60DD92253D66B46DA780A878FBF1A8ABE9286BAF846DD66B057F653E9DC</stationID>
+ <name>Country @ WGGY-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388C5D9392E847160D1AB14EFAE275C4BF06C7DF9BFC310E50BF4AA623E26411E30</stationID>
+ <name>Religious @ WORD-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388F992317AA97E779807B2837C81B009BB45E33E10A2157ECB241D88294CF3A2BC</stationID>
+ <name>Oldies @ WCCL-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388CAD3B190C70EEB039A2A4235C4D0FA71F26FF62CFFEDB7EC9F32929008A638C3</stationID>
+ <name>AC @ WKQS-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388894FC94621061D3333CF820B8671E1D012DEFB4D6035D2481E531CB8C4B50F96</stationID>
+ <name>CHR @ WIOQ-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388547C9DBFA6DD830309B442B213A14CC46077D91D5A6519CDE9A2D47ED89D170A</stationID>
+ <name>Classic Rock @ WDMT-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853885F0B5E60789C7CB9F211D8C05DC09C059B8CC2AC7C8325AC84FB360969144220</stationID>
+ <name>CHR @ WRFY-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388A3AD411523BB181886A67A2A7209A4F14268A169B0D194C0F3E8ACD891FCA324</stationID>
+ <name>AC @ WKSB-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853886747A84AD2BCC2A8310DFB61A1613EB8D3B5C125FE1BA94AC6F29A32517BA6A3</stationID>
+ <name>Classic Hits @ WMGK-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388DDD4A1CE6E7536E9C113AB61E0E6A91A902F1596328F5B6D8E92C5821171BB23</stationID>
+ <name>Classic Rock @ WAMT-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853884BF5BEAB9DB3831D4B7C30510A15E96DC71E08E774D4ED5340F2007C26ED2A78</stationID>
+ <name>AC @ WARM-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388590EF61D466EB870930416213606999B2E0E878E552FE070B43C3083CE26987D</stationID>
+ <name>Classic Hits @ WKAB-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538813C0A1743C0022DD3B2583058F9D0B29FE8253C7CC3D8F40695B94877285B5B7</stationID>
+ <name>Rock @ WCXR-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538827F4B88E8864393C902F36A5305B243A08B5E45A858683194195CDDED5E7F0DA</stationID>
+ <name>Country @ WLMI-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853883C3F2A1F49DFF3DA41622696FBB41B5A05378A6B98C489FA202B156CCFA3E0DB</stationID>
+ <name>Hot AC @ WNNK-FM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538849E8233C57DDA416D078CB208E8655D5FE172D34FD2A1D5BEDA0CCB15789427A</stationID>
+ <name>Country @ WOGF-FM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853886C79A5EACE3FA09CC47C78CA53D4D01EF205AD06A3567A56EB799FC8719D7F53</stationID>
+ <name>AC @ WSNI-FM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388701B4A4A81FCC0B0A5B91D813372311C48C77ED1636CD2EC51021182BA92AF0B</stationID>
+ <name>Rhythmic Oldies @ WJJJ-FM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853887A0417C0AE2E96240266605479ED236D9E0B888333368A75FC8D8E3A34E949FE</stationID>
+ <name>AC @ WWDL-FM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388D8550004C8958D095DBBFCC08FF20DF1AA66785CB94B41995142EED5AABB530B</stationID>
+ <name>Country @ WILQ-FM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388CC3DED8C10468FBC5214E191C4B611BDD86E165BC84A1D90DEF98222D7E70067</stationID>
+ <name>Urban AC @ WDAS-FM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388CC6C12CA6E06F341613F35C555E6EC854915D4A086C939D7964788FFF34D82D4</stationID>
+ <name>AC @ WMGH-FM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853884DDBB694853EC384C63B4466D61D1772A1193FBB01EB7E7460DD557F830E35CB</stationID>
+ <name>Active Rock @ WQXA-FM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388D30D38C8EAEDF6DF7F218C512CD87059E3284E3C49BC69AD4F2A8E81BCCE2605</stationID>
+ <name>Alternative @ WXDX-FM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388957D3E41B61F82558CC688A143293DB0891BE946645CFE9E6F3F9B90BE9AD014</stationID>
+ <name>Smooth Jazz @ WJJZ-FM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388167614CD6AFAA44DECF5062B5B01C4801627542983F1D6CAA850A34EFCB3D729</stationID>
+ <name>AC @ WLCY-FM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853884BA6BCDE3F82F7E6C6E81C97E79B5E4474B462FFEB6524C2F404D017CCB3A27E</stationID>
+ <name>Hot AC @ WFYY-FM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388BED7CBA2A492F65BE0367106F4F91022B9087D72F4B2DD7D3FB6E354B6AEBD02</stationID>
+ <name>Urban @ WAMO-FM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388FA6A2243E2C44C2FBC7B140CE55FEF0A1D14222337957CA5165151DF2F965F55</stationID>
+ <name>Classic Rock @ WEZX-FM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388BB9B267FFF01E48B5B4A763857EA75B4719DE4FFEC267542CAD131FA5C36C66A</stationID>
+ <name>Urban @ WSSZ-FM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388A84297403C43D4A7D339AD4C027E3FE0D441793D51CF7929929E6FDB60262664</stationID>
+ <name>CHR @ WEGH-FM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388A54C101B60CFA6670BF61B6B3AAB9BEB84C7C62AA9C12DC5D0ED25D07BD9E617</stationID>
+ <name>Religious @ WBYN-FM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388200215A23A701C8F7C09153FACAE9279A655459D2A4615D6C448F889F5EAE69D</stationID>
+ <name>Country @ WGTY-FM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385388A1C88A9CF02EEBEAAB85BF05C36E5F6F79FEB27F1F4B93B4228126A9882EA8E8</stationID>
+ <name>Rhythmic CHR @ WJHT-FM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Quebec.krp b/kradio3/presets/usa/Quebec.krp
new file mode 100644
index 0000000..9693cf1
--- /dev/null
+++ b/kradio3/presets/usa/Quebec.krp
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Quebec</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338538917B618E7F0EEC470EB266AF65B527C0FC38A8E8BBBAC09E65D149B9ACC737FD4</stationID>
+ <name>Alternative @ CFAK-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385389DFF8E8EFF4060F58A180BC540D88960C7D3BAF568F774DA3DBB94AC70C1AFE1F</stationID>
+ <name>Ethnic @ CHCR-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538963B8F0086E9B6B22C97B41C51136DC2D2DB620421A9368BF07C32F1FBED1F98F</stationID>
+ <name>AC @ CFQR-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853895625E419BD1CDDBAE521E96DC15523CA7EA87DE945BC22354195F46E4E7FAB5C</stationID>
+ <name>Alternative @ CFLX-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385389D50371EF969ECC882716053C947FE4AA98147B1C354409E4FDCAA99C7765B9D0</stationID>
+ <name>Hot AC @ CJFM-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385389ABF38CC786A66D9E071AC6D4BA04CC8EE646205D74BC4CE9784A39BD07382AF3</stationID>
+ <name>CHR @ CHOM-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853893C7A2C1B5B37A7D3DFF22237A0876D496FBFD44757541ABBD3FDBF572AF1630C</stationID>
+ <name>Alternative @ CHOI-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385389468260BA2B79BAAA971EFECA5B2C8AAC389782E3B85C726356AF8AB4A431B8FC</stationID>
+ <name>Oldies @ CFOM-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538903A7AB9379C1918F3F321B18682958D071C70B0BE42F443DAD8E2B79550E32DE</stationID>
+ <name>CHR @ CFJO-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385389D76EFB944D1D56D794BAFC219FA7911878F0EDCAC12BDD561549C32F1F334EB8</stationID>
+ <name>Urban AC @ CITF-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538925183644B8075C87D6A37CC43D6B9136D5FC77CE7F72D51CEDA492CDE6D56582</stationID>
+ <name>Talk @ CIQC-AM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385389174B649D33F7845E1E4B9435DAEFFCF97ECABAABE3E4D191B018DEFA410D187E</stationID>
+ <name>Talk @ CHRC-AM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Quebec_am.krp b/kradio3/presets/usa/Quebec_am.krp
new file mode 100644
index 0000000..0720b0f
--- /dev/null
+++ b/kradio3/presets/usa/Quebec_am.krp
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Quebec</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385389651181978E67E42215B4D30FD0060862B14D472B7E30917A978E36DC88F0313B</stationID>
+ <name>Talk @ CIQC-AM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385389E338FDF6FABED3D9A576513AECF04FD40E5001DC5B003893B4671B73BDDA9150</stationID>
+ <name>Talk @ CHRC-AM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Quebec_fm.krp b/kradio3/presets/usa/Quebec_fm.krp
new file mode 100644
index 0000000..63c5595
--- /dev/null
+++ b/kradio3/presets/usa/Quebec_fm.krp
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Quebec</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385356CD9DD1A93794AB3675AB047B8E4E884FAA312F187A73AA6CB6919076C39CEB7B</stationID>
+ <name>Alternative @ CFAK-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853563B41E95179A54ECB4A00D6E0A80861B7BD22AA334A618FB85F0555F265EE2EE1</stationID>
+ <name>Ethnic @ CHCR-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853568287524B70496005D97E3E9487853AB5A9DAF272E9A5F099D853C2D940097BD8</stationID>
+ <name>AC @ CFQR-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853569402DBD98AB56C5A1D2A3705D4D023215C970130602DCCF105A42753CFDAFFE8</stationID>
+ <name>Alternative @ CFLX-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853566FDEC9652755850D746766CFF88B7B4420EA0D990C5CD2A17A7C52E2E572C1DC</stationID>
+ <name>Hot AC @ CJFM-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338535667B9AB049DC36A573F0B8AC3C73B78082A6CE5B36B640F94B9785CA51D5E536C</stationID>
+ <name>CHR @ CHOM-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356A8AF6535A854DF52826B4E93CC763A9FC1610BC78163BFB0C30969DCDA6A02EA</stationID>
+ <name>Alternative @ CHOI-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853561CA6E44132CAFF8CDD7F6911708046B4EB1540F7156FE27DC8EE2F833EFAAECD</stationID>
+ <name>Oldies @ CFOM-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356C718716056A273CAC1E4EABF02B9692085AA575B90A02139B050E05B4AAB0535</stationID>
+ <name>CHR @ CFJO-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385356B14958EA8D57D93486064ADB374F0E1E3E6F15DE22BFA26C3D01B26708F902C9</stationID>
+ <name>Urban AC @ CITF-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Rhode Island.krp b/kradio3/presets/usa/Rhode Island.krp
new file mode 100644
index 0000000..cb6d95a
--- /dev/null
+++ b/kradio3/presets/usa/Rhode Island.krp
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Rhode Island</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385390D4E50B3F0670B619736383B117450A1D552EFADA1937D3F1360628295009083C</stationID>
+ <name>CHR @ WXIN-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>90.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390BAB3AEAE913BD45160B912F2E8802A5F210DD8C76472F2F546C42268A7E75758</stationID>
+ <name>CHR @ WPRO-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390CB1BF6BA23E92C636C97C25C75C662877DDF66545083B35FD588A8EFD1E9C381</stationID>
+ <name>Hot AC @ WSNE-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390BADC2F953A73E0C7439E67C498D9385D4CBA1BD2A94C7D16B62F073E02E4FD80</stationID>
+ <name>Rock @ WHJY-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390D294556371E605A8B16BD4A67307EA35D840146D4DE69BC4BDD3604EAAAC1D7F</stationID>
+ <name>Alternative @ WBRU-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390E1527E53B027F91E1CD34ED0F0630E085540EE6EB0988090B6CAB2832D53358E</stationID>
+ <name>Country @ WCTK-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390AFC009C63C428CEE85A3D5C72C9C5E4D383A72F132E049DA956AAEA117A32C5A</stationID>
+ <name>Jazz @ WADK-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539055028EEE48FDD7EEE69BA8D6EA1DEEC74C3ABE8945ED009575583CFCF10EF443</stationID>
+ <name>Sports/Talk @ WSKO-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390FE4A4E64D6519005BB214423B1D42DFF6A175E7760B32181B94885AD6AEA7148</stationID>
+ <name>Rock @ WKKB-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853901AEE87603746F43BE1C061BFC4B98DD1A9573A075CC7D3F3B7E83EC455F47CE2</stationID>
+ <name>Oldies @ WWBB-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390DEAFAF434AEF46D344CFEEE50EDE9FE9560C1AD0B45FE88E993426A4ED68B4F3</stationID>
+ <name>Rhythmic CHR @ WAKX-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539066F5E6AF32F5B29E5A1DFFCD83EFF4276DA214715A2351F3DB773D27DDFF1016</stationID>
+ <name>Alternative @ WWRX-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853903066DAE40AF9167A2B41CDA551BF5FEB96EE724498018CBDD236D1D7F6A71CEC</stationID>
+ <name>AC @ WWLI-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390A7DB56208A7CEE78D89E6A9FA8BBE29CD97A65E77E981C2056E69D985CD4340E</stationID>
+ <name>Rhythmic CHR @ WWKX-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390D10944277A242A2D6A31EB3B17F0B7AE563B44A4F9A3EE2F6D5B9647B33F551A</stationID>
+ <name>News/Talk @ WPRO-AM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>0.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390BF43486C1F2C2396FCA07C7135DFEEF51B354D2117B19768A02CE72A9185F2E8</stationID>
+ <name>Sports @ WSKO-AM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539066EA6D7063B1BF9739F89272DAD2AFBA2EC4695D98D154F972F82A4180A04931</stationID>
+ <name>News/Talk @ WHJJ-AM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390CA25A2622E6413346C25892B5038E42B2DE04939500D897C4B0CC397927AE286</stationID>
+ <name>News/Talk @ WALE-AM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539047084D5F3E875E621974D0DEE15D049A63273FE579FEC1EA14F41DA9D68E60D5</stationID>
+ <name>Community @ WOON-AM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539073569F1E55DCED15479CED5A20178D562D9C0998307FEA487B679456DC0F314F</stationID>
+ <name>Nostalgia @ WARL-AM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390661FD65E615029E72F75746BD2AD272D735603E2EFB299D0FAC8B5E16171B0C3</stationID>
+ <name>Nostalgia @ WNRI-AM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853905A97E59D0C1BFD3B7FF8B1007DB5C684CB910501218DA4578F23F677F3E75006</stationID>
+ <name>Jazz @ WADK-AM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>1.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853908E47E1FEA0371B42DFF8B8CE5D183DD7BD052AA183B099CCFA444A6AC089B5DB</stationID>
+ <name>Religious @ WARV-AM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Rhode Island_am.krp b/kradio3/presets/usa/Rhode Island_am.krp
new file mode 100644
index 0000000..4142aa9
--- /dev/null
+++ b/kradio3/presets/usa/Rhode Island_am.krp
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Rhode Island</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385389980718DAB54B03178EB65376A7A30FC2B85381CA2C5691E7DC4A3A730AB1ED4E</stationID>
+ <name>News/Talk @ WPRO-AM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>0.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385389DA724BBF456713A63D77B3C3D9901787D4019FA9880E238AA3994F11F8E1C262</stationID>
+ <name>Sports @ WSKO-AM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853893228BE8EACDBF57C23971206567C0D0880126B4F2781C6E7021593F2FF12AFFE</stationID>
+ <name>News/Talk @ WHJJ-AM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538938A71AD79C3F0EF1F1F8EB5A14D6F28175EE878A793BE8FEF78C65F2C32F1829</stationID>
+ <name>News/Talk @ WALE-AM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385389F06DA7C06488D2368DE06DE8F3715007F0EC31B800B71E6B16379BAF471D25AA</stationID>
+ <name>Community @ WOON-AM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385389A12548EF7C0A4127EFD3DEC22C2FD8744BE46ABA31A6B83BE1E546B399C551DB</stationID>
+ <name>Nostalgia @ WARL-AM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385389BDBCFD3B07A991E841858DDB3326378001E0A31CD006F2A8307752037089262B</stationID>
+ <name>Nostalgia @ WNRI-AM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385389A3ED7318BB6913C3195148C93612536C91576E1A67351267DE9DF2B531D28119</stationID>
+ <name>Jazz @ WADK-AM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>1.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385389FEA7FCDB8B2D315FC2DA448DE6B332F2E5E91DE6B5F1B67DB18E4B5F21E4D181</stationID>
+ <name>Religious @ WARV-AM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Rhode Island_fm.krp b/kradio3/presets/usa/Rhode Island_fm.krp
new file mode 100644
index 0000000..ec93c67
--- /dev/null
+++ b/kradio3/presets/usa/Rhode Island_fm.krp
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Rhode Island</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853894669B686AE4C678D93F229B4165A809733AB1748A9C80AAB90CDE784A850F69D</stationID>
+ <name>CHR @ WXIN-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>90.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385389E84C399ECB01EFC361C62B7ED613B30EC3A7CF29632E21FCFF6735809FB969E5</stationID>
+ <name>CHR @ WPRO-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538968268FA98541773CACD037D15FDDE70C85353BC3A19440632AE62B1A20F8451E</stationID>
+ <name>Hot AC @ WSNE-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538942BD630E696FD0A3219F99A84D017A2D704179545B6F3A8C3241115FDC39438A</stationID>
+ <name>Rock @ WHJY-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538912B4BF1727F9A6060DA241D55C2E6E33AD176E3E77641A61541D7B6D2AC1B18D</stationID>
+ <name>Alternative @ WBRU-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385389318FF66DCABC8912B43BD5E381A33304B1A80E756F9597577686ED6170200A1A</stationID>
+ <name>Country @ WCTK-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853894BBB242B481085C5BC683BAE0E231044D74AB8514942CD1BEEBFBC18AF990042</stationID>
+ <name>Jazz @ WADK-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853890FEACFB81A5C4C790B312C70662A27CBF1D93E95F05CE4ED2114B840D7F2A972</stationID>
+ <name>Sports/Talk @ WSKO-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385389C6518635CFC8593C4F9A8F548B8EB3B4DB976675A2DF27465EDD6FC9F64A43DF</stationID>
+ <name>Rock @ WKKB-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385389D5DFC8320B49A00CB9B68A3390D25ED03882C507448415EE9E79A79306380792</stationID>
+ <name>Oldies @ WWBB-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385389592F6BA40A88DA262AFACFC9186858B5FD0573966FC99C75CF7197EDC7EB9ED3</stationID>
+ <name>Rhythmic CHR @ WAKX-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538951C9B627D6262D8CF154E968F92C776AD4F86244036A4575996A74AA093EA376</stationID>
+ <name>Alternative @ WWRX-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338538969E935DE890D35CDC15219C9BA0E585578FF8E5432B14D2D5F499E925EF14C96</stationID>
+ <name>AC @ WWLI-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385389EEEC6DE0CBE81CA4FC38B7E68264258163C3CBF9E9629447932CF486953C22F6</stationID>
+ <name>Rhythmic CHR @ WWKX-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Saint Paul (Minneapolis).krp b/kradio3/presets/usa/Saint Paul (Minneapolis).krp
new file mode 100644
index 0000000..32e8d9c
--- /dev/null
+++ b/kradio3/presets/usa/Saint Paul (Minneapolis).krp
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Nick Betcher &lt;nbetcher@kde.org&gt;</maintainer>
+ <changed>2003-07-24T13:13:18</changed>
+ <country>USA</country>
+ <city>Minneapolis/Saint Paul</city>
+ <media>Unknown</media>
+ <comments>Plays only pop music from the 80&apos;s</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633854006DCDAE891B680D592E5CE0754CD7D2EA19BA34084B5BF464B86224C573387E80</stationID>
+ <name>Mix 104.1 80&apos;s Station</name>
+ <shortname>Mix1041</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Salina (Kansas)_fm.krp b/kradio3/presets/usa/Salina (Kansas)_fm.krp
new file mode 100644
index 0000000..c924825
--- /dev/null
+++ b/kradio3/presets/usa/Salina (Kansas)_fm.krp
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Paul Benjamin, &lt;pben_suse@cox.net&gt;</maintainer>
+ <changed>2003-04-22T16:59:46</changed>
+ <country>USA</country>
+ <city>Salina, Kansas</city>
+ <media>FM Radio</media>
+ <comments>FM radio stations available in the middle of Kansas</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338539942EEFFFECAB6C527FD71444AC213DD553660929E5B0EB7EB1CE8550845731879</stationID>
+ <name>American Family Radio (AFR)</name>
+ <shortname>KAKA</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539909C4A589DF0C0CDD9AE01F59625C3B942BA86ADDD76490626943EE206F55A7F5</stationID>
+ <name>Radio Kansas - NPR</name>
+ <shortname>KHCD</shortname>
+ <icon></icon>
+ <frequency>89.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853992B938DE77A949341A2923282A832D186939D6E0DB8129B5D439C397CFC5FC8C0</stationID>
+ <name>Religious</name>
+ <shortname>KCVS</shortname>
+ <icon></icon>
+ <frequency>91.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399953CF27DDB315205E25AB9C7DE11A8EE6A3EDED95EA322C02018AE02DCCF0708</stationID>
+ <name>92 7 The Zoo</name>
+ <shortname>KILS</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539970BDA38B53532B688E8F024EC612C619A19B5A405BA88D2944894DC984D7CB4D</stationID>
+ <name>KY Country 94</name>
+ <shortname>KYEz</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853991E36AF115511B13B50A241DE28BA405BF7A9BE26AF486CDBE2C08E0D9132AECB</stationID>
+ <name>Light Rock 95.5</name>
+ <shortname>KQNS</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539993A25CD94DF9915B5DDB0F5F8A13E0820AAAE70560CA174A2DBAC1F5502E94C8</stationID>
+ <name>Oldies 98.5</name>
+ <shortname>KSAJ</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399391CF50AC8287B18978EFA256C77C9F0C4F28876107C7B0EDE8E0AE24141ED52</stationID>
+ <name>Eagle Country 99 9</name>
+ <shortname>KSKG</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399485BAEFC1A345985986AB914C5A8DD40E1D6B73E349DC4E04F2752CB1B47A565</stationID>
+ <name>Sunny 102.5</name>
+ <shortname>KBLS</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853998DEDAFF610B67641CAF448CB6C0FB1FED893638FA75179CF9EE5037FAB5D6410</stationID>
+ <name>The Buzz 104.9</name>
+ <shortname>KZBZ</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399DB97D7B7A6562A17FC4CE1BBC1C90EB2531D7BB6353BC797D7F0D903AF0928C4</stationID>
+ <name>Country</name>
+ <shortname>KZLS</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Saskatchewan.krp b/kradio3/presets/usa/Saskatchewan.krp
new file mode 100644
index 0000000..164ccb5
--- /dev/null
+++ b/kradio3/presets/usa/Saskatchewan.krp
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Saskatchewan</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385392F117413BFADF22E4E72F4745D7323B099F1F28A2CAD22EFC5D33B66661E24D2D</stationID>
+ <name>CHR @ CHMX-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539234488E7C829A5C45B21E9214262665CEEED21A70823942A69FD442B2B97368D3</stationID>
+ <name>Country @ CFQC-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392F46C1FA4EBE0AB793FE0C6672232B68810CD9149C8C68F32E553421A62FF6098</stationID>
+ <name>CHR @ CFMC-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853926160480419127C9EAA00305CF902A6E1781A04134A1D2A264E8E727AD473448A</stationID>
+ <name>CHR @ CFMM-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853922E23923749C3468C56ACA0DE9C402916DDBEBE083BAC6E34763BC5F2A1CB6725</stationID>
+ <name>Rock @ CFWF-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392ACA62862EA04E38850B9CCCF44BAD3AC95E05FD6938B4D23E561108F68EEB6AF</stationID>
+ <name>Country @ CJWW-AM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853921246AA0CC5D6569CAAD7B9122EBC9BA3BF74F4A56486DEF9E37B77AB4C7A900C</stationID>
+ <name>Oldies @ CKCK-AM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>0.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392BAA64D7CDCCD7C1CF46A513FFE2815B12F602FE0BA67F5C1A699B302A66E26C9</stationID>
+ <name>Country @ CJVR-AM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>0.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392454E721BD87FB3F8D707CB0E681E8D981EDF4092A809A109AB55708657D82DF0</stationID>
+ <name>New Country @ CKBI-AM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>0.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539242BD87899BB87FF733DB4E48EEB3CA70C5F65526232C1CC039A3395C4EDC90DA</stationID>
+ <name>Country @ CKRM-AM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539225BCE8632827B870192D3E43907F7CE2A240C38B527EA85F0D9EEF6B32C9D4B9</stationID>
+ <name>Hot AC @ CFYM-AM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>1.21</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392A4B7EBA582A1129D21179B617FFF95C3CDA93BC906C357943486E5516E0EB716</stationID>
+ <name>Hot AC @ CJYM-AM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Saskatchewan_am.krp b/kradio3/presets/usa/Saskatchewan_am.krp
new file mode 100644
index 0000000..ee74466
--- /dev/null
+++ b/kradio3/presets/usa/Saskatchewan_am.krp
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Saskatchewan</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853922CBE03E5BF8155703EC10D3E0C3FAE6A256CB4FD8AB3CE2D3832C8F3E1951C2A</stationID>
+ <name>Country @ CJWW-AM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392C81C9FB8F948767E9597ED261EA84C3C81BB082E9D5132C5CF46707342AD1930</stationID>
+ <name>Oldies @ CKCK-AM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>0.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853928B14DAA96CD8E42A0B7BA74D75F99D64FFD6DF1E7B04DBA5D1C39C723B01164E</stationID>
+ <name>Country @ CJVR-AM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>0.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853923BCD4914F1F6A90B213F161DC962B060AE5C9819AE5586728D7A879F69A5A8CB</stationID>
+ <name>New Country @ CKBI-AM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>0.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539297B6A4F7667AE83208F641C1019592CCC7D78CEFB54B6B192061CD27F954DCFD</stationID>
+ <name>Country @ CKRM-AM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539203382F7D0844AAC2ED0844A0D0A75B2783B6FA435382D0E81B1B41E06D605034</stationID>
+ <name>Hot AC @ CFYM-AM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>1.21</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539243EDB5DB93FBF91FE7E44DF60204953F4C2C29742D7541272FA4919CC9DBBEE3</stationID>
+ <name>Hot AC @ CJYM-AM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Saskatchewan_fm.krp b/kradio3/presets/usa/Saskatchewan_fm.krp
new file mode 100644
index 0000000..0cc6887
--- /dev/null
+++ b/kradio3/presets/usa/Saskatchewan_fm.krp
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Saskatchewan</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338539149CCF4BDBBBE1DD4D4D882464CECF011290172C50BB99EA9E69086A9B6EA4764</stationID>
+ <name>CHR @ CHMX-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385391CEEAF5E63A4936D1346D7EB79F9E7A6D4729E3E96C3B91153E69312BFB219596</stationID>
+ <name>Country @ CFQC-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853912B0A5E29B34ECDF206DADE105BF251C8F1941E50C2206F9987AE54446F9503CB</stationID>
+ <name>CHR @ CFMC-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853918828B2B765310949888688E194181918A9F8AF854094462A385790FA81FA6E73</stationID>
+ <name>CHR @ CFMM-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539163B0B17992A2632030645ED944EFD4395A96939F2340A9E77F5937735BFAD899</stationID>
+ <name>Rock @ CFWF-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/South Carolina.krp b/kradio3/presets/usa/South Carolina.krp
new file mode 100644
index 0000000..3743a0f
--- /dev/null
+++ b/kradio3/presets/usa/South Carolina.krp
@@ -0,0 +1,534 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>South Carolina</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853907D53029672176B9AF49D2A077025C13B324BBF1AD1FD9B197A7A2A0F49210095</stationID>
+ <name>Christian @ WLFJ-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>89.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853907C4A64342AF1F1273B8E4CE6F3071EB3DF5847BA52E090F5B7C4542DA808AF57</stationID>
+ <name>AC @ WMYB-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539092D1D6A91473D5788D8CD1E2ECA25DEB2FA8852B752088EFD72ACD56B3CEC9B7</stationID>
+ <name>Country @ WESC-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390A8435B84D28D5B29D1757E4857BAB2FDCD7DA3FD95846BB70A248414C416695F</stationID>
+ <name>Alternative @ WTPT-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539004954259BB5AE00383552CDCE9B0C606A1955264792F2B4F5B8DDFEAD8FBC7B2</stationID>
+ <name>Alternative @ WARQ-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390AD185C04D4C0237B148907D068A0E6F7E9D551ED2323713ABA1EFA4FA5D956FF</stationID>
+ <name>CHR @ WFBC-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390B2BEF2A61268485651590CC54EDA39F8BCDE26E41F59E30F36F56FD25E2388E6</stationID>
+ <name>Urban @ WSSP-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390633946D8EA91766E846D60F5B1102989E8C4732FB6FE108C44380D6DA8E0EB77</stationID>
+ <name>B/EZ @ WMUU-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539087A37E043BBABDD741FFA80E1F2E80013AD18F324F7BF2AB2E1BE7018231465C</stationID>
+ <name>Urban @ WICI-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539069B6BCCA8754A8328A54E85B271C2ADB509EA03417211E7DAC76899A9C458972</stationID>
+ <name>CHR @ WSSX-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390527A4C33B93CBFC5810E74122771D88845803623155BCB0CC0AC6C5560871951</stationID>
+ <name>Oldies @ WIBZ-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853907CB856890B90696191D96DB1E7499710A96F576F624E1C8396CD2F56F3BAED58</stationID>
+ <name>Oldies @ WWBD-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390EF071AA8FFA2BA803DCBB8C1E76164FA12AACBE2857C7E6DD1EF7903C04D69F1</stationID>
+ <name>Alternative @ WAVF-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853902E87B719D376F1DC518CBBED4D0D752715AD74946E999E3D350C63B37D8A6CB0</stationID>
+ <name>Oldies @ WGOG-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853909584D0A09C7B1D2BAC62D889B5B868A0F619DF73A7570CEF43248307ED44745B</stationID>
+ <name>Rock @ WBZT-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539017186BCF75C7DF2E32B8771B96229BA662829DA7EFB2421FBF22E6A37E664AF8</stationID>
+ <name>AC @ WSUY-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853901982D402859DB151F13A23AD209728D5BF0BA7F0BC8218697AE3D2279831289A</stationID>
+ <name>Classic Rock @ WYBB-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539076C619DAC090609317049EA24C4E29ED0C3943D31106CA109D5AADCFA54565CA</stationID>
+ <name>Country @ WCOS-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539014027A039187726A313D1DE71C5562C090E7FAD65925C0765B7A5FCF7C9CADBB</stationID>
+ <name>CHR @ WHZT-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390A893041BC6D0F8FA80FE393E721C0C8909FC595BA2B2E407CE67F4ABBF72C02C</stationID>
+ <name>AC @ WSPA-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853902C6FC520418FB36C2C9A8EFED681DC9F9702DD57F5B21841A1674557E80754CA</stationID>
+ <name>Urban @ WWKT-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390A6E25F24A888B97883280D64F058D491EC6913223F9BC04E1B6F12FB36966215</stationID>
+ <name>News/Talk @ WRNN-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853907C3FB6DE94AE55513044FCA13835B3F84215073C7366640D7884E09E99848C66</stationID>
+ <name>Smooth Jazz @ WJZX-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853901E5FF8330312E69DAD0AE9912D29EAC787C0A6D84E31D6F3BE31B7F53DB39A77</stationID>
+ <name>Oldies @ WWFN-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390912C409CE4A66C8D4B193A20DEBC68054DA7ABDB8E2A9559DCAB833A5F6019AA</stationID>
+ <name>AC @ WORG-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539003BF61F4B793A62A80162A5B460EEF96FF66FE9CEE0D3209589B0DC2766B8D20</stationID>
+ <name>Country @ WSSL-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853909FC4158C98E58E9312610F20A04DFD6B3EE90E85B52353A773602118C0C3A5F0</stationID>
+ <name>Classic Rock @ WROQ-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853905322D53FA0A8F0841E48084B3F1BF9CA4E6211BE088415CEF17B168B8A22E9F5</stationID>
+ <name>Urban @ WWDM-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853900FA93874B8BCDDD9803D65310CCC80AC2D8F49B198752F5E20970A9A4C97DFA1</stationID>
+ <name>Rock @ WKZQ-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853903B01BB90E5A2681A1721E274C12E17EA90BF48245935F375FABA2B4D1CB5185F</stationID>
+ <name>Classic Rock @ WMXT-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539047C7F7771758956EE99D1CDB3569F201764490FBE4E52B93A2A2758F8D32C9A2</stationID>
+ <name>Classic Rock @ WMFX-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853905E0BA35CC467F51EF06152DB82104481540AB0047DBD876E13CF88213352FFCF</stationID>
+ <name>AC @ WMYI-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390B30D5BFEE1D4CB554EF6A28092E9E06B687165A17A7A92DFEED73425EF46B7EE</stationID>
+ <name>Country @ WYAK-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390E1076E3F78F06B33D639887C382D49ABB54C1C59C041B10F8BD50BA4537A62BF</stationID>
+ <name>CHR @ WJMX-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539094CF5C2841A24440CD839A96C24A60552BC0567ADF39321579FBD56E4878EAB9</stationID>
+ <name>AC @ WZSN-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539020B1A03B4B8ABE4B515C5DB628B1BBE10678986DAC21C379C8F23214D1D7B85D</stationID>
+ <name>Classic Rock @ WYAV-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539029186320367A76D8E401058E38ECA3F5765C02E58502CE01C0F790ABA7351ABC</stationID>
+ <name>Classic Rock @ WRFQ-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539067335A1976FA9869B0770B82512F9EE53557B045732459A3CCAA7396BDE8D8A7</stationID>
+ <name>CHR @ WNOK-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853904F36671AA1FA0B70F6A7CB522931CB721D0F8472720AC759ADE97BBBDB98AF29</stationID>
+ <name>Sports/Talk @ WCCP-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853906018F94C192869890E3E8ACA12DB5506779A0EC329CD5E26DF8485689F71F269</stationID>
+ <name>Oldies @ WGFG-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539046B59FED0D187935D5801EC3788F69D63736E8A776307743B9700E0060BEDF36</stationID>
+ <name>Country @ WAGI-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853905A2B87A7C8B68976E21DBCE6B641AE69581641620CBFA8C6548493386E933F2A</stationID>
+ <name>Oldies @ WCOO-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390E6D136C68C1F00A4D8866115127F48475F4BACE286F4603C9E746FF3CC0455FA</stationID>
+ <name>B/EZ @ WEZV-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390E8CE39B764157CD8CEBC1B31CC71D29032BBBD24A33A3A761F6D7472A41401A5</stationID>
+ <name>Religious @ WJNI-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390BDBA91C2850461A00954513F94D9600E529DAD0DA9921C7FDD90D758253243F6</stationID>
+ <name>AC @ WTCB-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390387E04336B792005E24C7AF65B4D47005392630C8B93293DA6D7638E21634624</stationID>
+ <name>Country @ WRHM-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390C883CE0F9F6BD29B49F45437B9B03DBFEE5D1FAEC8B3084BF5F6CA6DC349A4D0</stationID>
+ <name>Urban @ WJMZ-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390E874888DC516B5283FB78221D7DA5E0D8121173B98964C250BF8464E585CE7A5</stationID>
+ <name>Country @ WNKT-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853904DB452B34C93A3903E79EAAEAC95580FF8BF6921289765C8B7A2DB6E5330BBCA</stationID>
+ <name>News/Talk @ WVOC-AM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390995249B65BD1102EF6D6028863858D7DB826666E434F1BAE064463F145CA6A88</stationID>
+ <name>Christian @ WLFJ-AM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>0.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853907ECC7D685441759089DDBDC9369C84AC874825399D538C0AD73E763FF458D7A3</stationID>
+ <name>News/Talk @ WSCC-AM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>0.73</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539017151B8945F5406D6AC248CDAD9F5BB35CA022EABEF290FDBE5ABF59BA775F6A</stationID>
+ <name>Sports/News @ WSPA-AM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853900A06C774B6711C20F8A187FE32757A4F7DE01B611754DCCF913C76BDA3D92098</stationID>
+ <name>News/Talk @ WJMX-AM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539088346424B11B580298686D9A3D6DA797C82DEC18ED9EC0408B3CAB7259C2907B</stationID>
+ <name>Religious @ WAZS-AM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853907BA021738F6BEC678B84EC13BC74136C48CC36CCCE9A56EE396B58A6DDD03A6A</stationID>
+ <name>Sports @ WCSZ-AM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>1.07</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539001788DBBA1AA1B7B1098AC5FF3E95A944E90E29C789492B129747B6390694DA9</stationID>
+ <name>Religious @ WMIR-AM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>1.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390321D56B1A21E07D8DDAA239A28EDF4D9B29CB2BE642E16654F8E7FEE3D65EA8B</stationID>
+ <name>News/Talk @ WTMA-AM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>1.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390BAB05F35F59C763F0AD33AB4E07941DD82B69DD68637860D9FA4AF1372881F57</stationID>
+ <name>B/EZ @ WMUU-AM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390F90BDB901E6359F0D7B3DADD5176230E6819B42AE3BF56C069122356838B4E93</stationID>
+ <name>Religious @ WXTC-AM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539080C2031F1699108360BA51EB328C734531644A270D9BE8B0070460C134AC9331</stationID>
+ <name>News/Talk @ WGTN-AM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390AA4F6640FDCBFC6D0775C9B380F1455B4BFFB57CE82BA4A9BB708BF22F795108</stationID>
+ <name>News/Talk @ WEAC-AM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>1.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390B7E64F38768EEBCC14B43DA78D528B102CDD844D147A76A7C914355E9B300ECB</stationID>
+ <name>Religious @ WDRF-AM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>1.51</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390BE2C9E8E1DA19B171664F592D3D7FFF8101D6132F7EE1398A5A1022A79A1DCB0</stationID>
+ <name>Oldies @ WBSC-AM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390DA03869733BF6866717160BC631091B0F666DD6C4C862DA541AD6E2751C08B25</stationID>
+ <name>Country @ WAGL-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>1.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390BF3FF45DAF980AEED6F86485BCFFC232C174714E72295E9D75F548B417F343CA</stationID>
+ <name>AC @ WDAB-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/South Carolina_am.krp b/kradio3/presets/usa/South Carolina_am.krp
new file mode 100644
index 0000000..1ad3f65
--- /dev/null
+++ b/kradio3/presets/usa/South Carolina_am.krp
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>South Carolina</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853909404B180300A10A34A304B3237F831EA69E4D1C11585AA7762F6DEBD7FA118AE</stationID>
+ <name>News/Talk @ WVOC-AM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390C6BE47D75CAFB11B0D86A4AA8B23D0F9521E59F431FEF84169AD05E8E751BB32</stationID>
+ <name>Christian @ WLFJ-AM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>0.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390327571161ACCE6266334D94E7D75D82011D21A4A3DDFA5C8A55F1D0C1964E1C9</stationID>
+ <name>News/Talk @ WSCC-AM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>0.73</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853905E4C0B7C3ABBD2AB082BA1FC04B6DA8EE39D1207260733C03B6B1C640F36A847</stationID>
+ <name>Sports/News @ WSPA-AM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853900979552061945933287F2B065549D2AAA4B865BA14A70257F481F7EFB512B05B</stationID>
+ <name>News/Talk @ WJMX-AM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390235EA73537538E2E997A985F601233A0B888680A4C8A9824E7B9737DD1D06CA2</stationID>
+ <name>Religious @ WAZS-AM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853905766CBAE3557C5D91DC8934C888EDD761406989F2F739E458E6FA989C27C1E51</stationID>
+ <name>Sports @ WCSZ-AM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>1.07</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390A32924F85C505DDBDFCB5A3FC1E9344B09EE91B37715031021C1F5D744931F06</stationID>
+ <name>Religious @ WMIR-AM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>1.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390D8A152F3C5F0B4B395FA2BA8E56FDD0B7457A2F41C92B094102340C346FB3F87</stationID>
+ <name>News/Talk @ WTMA-AM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>1.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390009ECD83CA311760ACAD0747E6B7854A08B7D54EEF91157462E3BC8E69D62B1C</stationID>
+ <name>B/EZ @ WMUU-AM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390906BC70341637DFC8FA4273E09C524B2EA71D00822AC1B28B82104BFC793A70B</stationID>
+ <name>Religious @ WXTC-AM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539094A16C25AE31F17345AB6D324C229FDE1419B64B54D4664DC513509BA4CB2EBE</stationID>
+ <name>News/Talk @ WGTN-AM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390D0E5879C4944DD5067E0E7BA6C0EC42A3BCE084182158CDE60AA5E4C05D42E7C</stationID>
+ <name>News/Talk @ WEAC-AM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>1.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853907C2850060F8DB1DA67F28ECF0F38B35A403D5DAC2065A15183403111BEE25E1C</stationID>
+ <name>Religious @ WDRF-AM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>1.51</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390EAE3E6EF638CE76ADA33658AE788EF88072B613A0650F4E956985811F81E5230</stationID>
+ <name>Oldies @ WBSC-AM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539009EA5D8FBE5E8B4BA5B0226003071787B8E477F59551BC2AF6310D97B9FA959B</stationID>
+ <name>Country @ WAGL-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>1.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853909296CB41F95FE4E9751E8D34C838F6FF0D32411F517D14C62C3868363C289E7B</stationID>
+ <name>AC @ WDAB-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/South Carolina_fm.krp b/kradio3/presets/usa/South Carolina_fm.krp
new file mode 100644
index 0000000..9369c30
--- /dev/null
+++ b/kradio3/presets/usa/South Carolina_fm.krp
@@ -0,0 +1,398 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>South Carolina</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385390D278893ECA7D25BF4178361EDA8530A8E7533D33E0B2A31119AE5C3159A7D2C7</stationID>
+ <name>Christian @ WLFJ-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>89.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853903B8D80E7347441D0F68F48B767272D7D639795F2E73FD53F7F677B012AC3B853</stationID>
+ <name>AC @ WMYB-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390FBAE77E1D3B39EA748DD15CBC1E8C24EEA80FADD24AC9A747648866A14714F1F</stationID>
+ <name>Country @ WESC-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853906C313A121615D9DE87963C1E11D049F4D9212FE1DB06F76F04106C97712818DF</stationID>
+ <name>Alternative @ WTPT-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853906E8419C7B012FA85FDE375717F3FCA18B4436C98B57180A43A4E3C0832397C91</stationID>
+ <name>Alternative @ WARQ-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539077490892F1C2432F9F5E172F3B921C1F38CF94D549B1ED170EA843D7F576A74C</stationID>
+ <name>CHR @ WFBC-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853908C3616661B2E5D4F2C79CE7F189BAF7E6FE6D68E9576F566D90321E8E69DB6AA</stationID>
+ <name>Urban @ WSSP-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390A3ECD368A26DAF4429EB28861E49B0418512E783CD5C11000FF6573B4326D858</stationID>
+ <name>B/EZ @ WMUU-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539016B9EF02CF18DB67D8A889CF7233C13DF83FA5BD248068A896FDE987737A75EA</stationID>
+ <name>Urban @ WICI-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390058B1158D8763597DAB621904E50FC2AE4E5437132ABFE6DD4631B39979B6709</stationID>
+ <name>CHR @ WSSX-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390ABCFD0B1ACF88E31AE387AEA92975CB7AA9CFF4FFAE80337233D608FDD440326</stationID>
+ <name>Oldies @ WIBZ-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390546D800D1AA263B52B6BFA8E1C54775F48D7282288177F5C31C0FB6816500FF9</stationID>
+ <name>Oldies @ WWBD-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853905CD346102B54CEBD7862E458E5C01C6761E18DC5A46E8F91C50685687ED8C394</stationID>
+ <name>Alternative @ WAVF-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853902D80FD4850AFCE209273EC16431B500A92C486D8D729C46F2F598A0B9C10F4A8</stationID>
+ <name>Oldies @ WGOG-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390676861436686B5E069F03BC3FDEABE0851294EDB76E23E0DA567FD8D4DE5AC48</stationID>
+ <name>Rock @ WBZT-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853901E6483AC904EDDB06964E89DF9B9376D618979BD904F3140E1814F5714C36B83</stationID>
+ <name>AC @ WSUY-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390385699A45F57933B6036A18E8B4DBE982718C8D4218BA294581D76AF2C7F2D4F</stationID>
+ <name>Classic Rock @ WYBB-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390AFFFFA43EC9A4545062D2E4D0915A413744D340774DF51D879D0C03B8CE73EDF</stationID>
+ <name>Country @ WCOS-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390863E0B442BEB434C7C7B60BAF8AB6122BB2EE4060EE3008D84962710200881C4</stationID>
+ <name>CHR @ WHZT-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539096698BFC4AA05AE5212D1D5D4EC0F2A19F2CDEEFC4EE33708A0A7B8DCB2BED5D</stationID>
+ <name>AC @ WSPA-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853907F8F5659F71373BEF3611693649692AC2CDA1AA3271A12BD9C974BC5282B6580</stationID>
+ <name>Urban @ WWKT-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390EE3CA47A142DF6D1AF1EE9250A74A13F8428250EB4A8820CABFC530EEFA6617E</stationID>
+ <name>News/Talk @ WRNN-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390733A15B6293CA1BFBB9F05843B7FD61F62E6383A79EBAE5BF73EA608FB377F6C</stationID>
+ <name>Smooth Jazz @ WJZX-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390A3D762617A8D4ABC54CB26D1764C4AC1F0D1E2B43F8C29D7F01A69964A0C76D2</stationID>
+ <name>Oldies @ WWFN-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390E88D760C1DA16E63509500004ED2C652C39D3530D0B92253F55CD52F0EE264BF</stationID>
+ <name>AC @ WORG-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853905E361EE491796ED998716FA7A5E4EFE4318876D30D9419CF9899E0240C9C0FCD</stationID>
+ <name>Country @ WSSL-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853900EF71652949E2683643605050FBEAFEEB05A478A75DC0E3741C679DCF953DA60</stationID>
+ <name>Classic Rock @ WROQ-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853907920B71E13C3F9B0014E609BFF066C901573B44226F8F321AE35A142D40DBD28</stationID>
+ <name>Urban @ WWDM-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539024407C93AFB9920890532E6E338159B77D1798E37521734E550A7A522D026C1D</stationID>
+ <name>Rock @ WKZQ-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539004163DBE9F4E62866E6192F7CE008392AFBD886280BF164F9D3D98798DDB1958</stationID>
+ <name>Classic Rock @ WMXT-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390077B8B727AE459AD55483A4E492360CFE0F1E21E229EF916F47275A356D06A02</stationID>
+ <name>Classic Rock @ WMFX-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390D26DE1F9441D4347D48E80D6072B89CB711FAB42DBD2ED11DF13E0037943A25F</stationID>
+ <name>AC @ WMYI-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853904BA8188CFCD01DCB27C31C95FC504F32C4E983AC210B01744D69990C7DE8E226</stationID>
+ <name>Country @ WYAK-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853907DAB33CD655B32575D2F3984E28873A00ED4D91BDF949B6D4261790E0ECDE14D</stationID>
+ <name>CHR @ WJMX-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390BF807B6F42C3F2FE95B4C4B390335D04A2A55A458F7235228686F49E3CB68877</stationID>
+ <name>AC @ WZSN-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390597EA662154EE7A24A111999830C8E52ED9B86074D32A16681507D03A05B012D</stationID>
+ <name>Classic Rock @ WYAV-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390637B3DF97E18E0D2556B96E756B594771C103FF36DBF2EEC71C73B9C28E2F141</stationID>
+ <name>Classic Rock @ WRFQ-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853902B8D587614898679CB9D09389F7FA05CCD1A100DE797DF5F70F7BD95A4E8F8F8</stationID>
+ <name>CHR @ WNOK-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390EC12AAEBBFCE18C46CBE096E48E02E7811FB9E5D9AE38C3306F1C483D1563D4F</stationID>
+ <name>Sports/Talk @ WCCP-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390C8D322E4DFE5B5B128BE6A2C5389AC8EC734518EF34A9F0C8008485CDD0A62C6</stationID>
+ <name>Oldies @ WGFG-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539065825D7FADD1A7D743F5AC4D08A0EB3BABCEDACEF2F8BE0EF5993DB076DD0EFC</stationID>
+ <name>Country @ WAGI-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390E94DC50C6397BE7FB545AB7BA6D06BC8570BD75802F4D131D22690606B925F18</stationID>
+ <name>Oldies @ WCOO-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390CB86AB1088D6922B7DBD03C85C55A2DB23C6A3AEAA6292CB09C1199D1EAE8E16</stationID>
+ <name>B/EZ @ WEZV-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539027141B88ECF4999F67402CC83F61A354B6DA3AE6622F99BDEEB5F170F890EE2D</stationID>
+ <name>Religious @ WJNI-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853907EFEB71DFEB35B335D355B9D2EB9577824D4E2869457E9DD515F0A5CDF5A183C</stationID>
+ <name>AC @ WTCB-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853907BF9D5941710C46509060603A15BF2C6C25ABC3E47FDF667E881BCB1E32C5364</stationID>
+ <name>Country @ WRHM-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385390416CC419DE5267C07AFD28016D975D73739F9312C8026574E9BD886CD3578C6E</stationID>
+ <name>Urban @ WJMZ-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853906D5E562FFD7E637E853B4C6B4DA493BA072DA364DCD44698E4A2B6234AEBC4DB</stationID>
+ <name>Country @ WNKT-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/South Dakota.krp b/kradio3/presets/usa/South Dakota.krp
new file mode 100644
index 0000000..2e35346
--- /dev/null
+++ b/kradio3/presets/usa/South Dakota.krp
@@ -0,0 +1,342 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>South Dakota</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385391B5C58FB81F19B1BE77CFF5B228BB17E92949FCB6DAFF4FB2A59D1BE286550E79</stationID>
+ <name>CHR @ KJBB-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>89.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539172057A047B163CA3DFCE6ADCBE58850D5A5F93C44ABA2416CD4FFDDAA4703837</stationID>
+ <name>AC @ KELO-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539164001C03A3F826A35791123A602BB8EE6C42B93171C0D32990EFD4D3F90FCCE7</stationID>
+ <name>Country @ KSDR-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853910F8ECD52EC30E0DCCCF43E4298D8D5580AB697B8D219203A39B5DF320F46C42D</stationID>
+ <name>AC @ KBRK-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539104EEDB96BAE4B876E48C30FA67B3961A44BA02B69628C5A898CDBBDA3F551962</stationID>
+ <name>AC @ KKMK-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853915735F2F130A5946F48E538B96EFF2EF07F1CF02050CBBA6B8156948C88A6B408</stationID>
+ <name>Classic Rock @ KSDN-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385391BCDEAD9A9BE77FAED075E9037D9CD7FB8411BAA8EA773F1DF44D80A546452AE3</stationID>
+ <name>Oldies @ KQAA-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385391046230AA192A59AAF294845CFF0C62A2044DA6EAD4EFE39F4506CB071321E704</stationID>
+ <name>Ethnic @ KINI-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853915A577DFF8631ECF8E91F10C375B1C960FF2AE379A5AAE2BDDE7EA9B16823EEE4</stationID>
+ <name>Hot AC @ KMXC-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853914E78615A0ACA060AD92429D44BAFE324A158D7D64B6E695BAE60B48DB691E5AF</stationID>
+ <name>Christian @ KLMP-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539186FB5016D882A24C8D01DBF32603BEE18B9CE7626DBDAA832B1A96C5A42854F6</stationID>
+ <name>Oldies @ KUQL-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853912C40907F372A21045ABE0EC6473158384C8039050C78261A3F248F2DE7CA60D8</stationID>
+ <name>Country @ KOUT-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853910E12A67C50D71FF93429F7B8540DB16B5FAF6CB7B03A8903DD2344230E82EC11</stationID>
+ <name>Classic Rock @ KFXS-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539182EF9864CAC66B8ADE5BB5067DE19809E4054CBAF597EFC1D4923C81C93EF42E</stationID>
+ <name>Country @ KIKN-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853916959726C50ECAA9FBDD4F8D68AA88DDF3B0141F72056C80106DE56F8385D3987</stationID>
+ <name>Rock @ KDDX-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853911CBB24022A60B50C5C8693F953C90F30CF1D5970D035CB80E4C41F5F9C26FDB0</stationID>
+ <name>Country @ KTWB-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853914DA2DFA78EEF51057E2B2BD6F8E981D86E13324283E98AE080F8DF5642FCEE77</stationID>
+ <name>Country @ KKQQ-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853914B80E2E92AEFA4318755260DE37E95EC5D48F18C450B1BCBB26EDABD39F0317B</stationID>
+ <name>Classic Hits @ KYBB-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853919B8C22DAC7363D69ACE91560A3E81922789A83627ECE0734189087FB42FEA0C9</stationID>
+ <name>Country @ KBWS-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853913ED99A1913909DD69816F12B31C3D593BD324F52968124BC11AC3C1FA23DCDAC</stationID>
+ <name>Country @ KJAM-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385391663A3F71225E1F1827887A66982AA79558AC9CAA192B506DE579EC314D319DDB</stationID>
+ <name>Rock @ KRRO-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853914E70785BC52EAC7F1AE0B83600F2D3544E3528ACA67CF4A2324CFBB825813A82</stationID>
+ <name>CHR @ KKLS-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385391E686B840111812E78B360F4FFC18F7C2CEB11452B4630986794E80313FABDA6C</stationID>
+ <name>AC @ KZKK-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385391188F99EC2126861AD79A9AA1BA1A6E727EDFCC62392C77CDFFDCFD6976080A31</stationID>
+ <name>Country @ KMIT-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539107B6AF5F199615F28EDBAA95BF64A83AC68B6EFDE3033017419CBC86F4CA807B</stationID>
+ <name>AAA @ KDBX-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539112D162FFC09A1F7DD73772862BFD7E6D989406A02FCD6E4677A54AA2F5EF085F</stationID>
+ <name>Christian @ KSLT-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385391222F606B0B5095A9B4D73F49BFAD28270798A673E24F46784D2C25BFCF52BDD0</stationID>
+ <name>Rock @ KSOB-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853910B3EE0C1435D4A06F7C34394A372699D31AA3F08258766526D7C959A31EB2677</stationID>
+ <name>Country @ WNAX-AM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>0.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539138FEE65476E52D700A8CF4620FEA2C199A81B8A5E05AA2DC027F88ADA108A82C</stationID>
+ <name>AC @ KQAD-AM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853913BF953FD4D2D1DA30BD1A9B113EA3360D1DD7E4FECF9BC8A59A9B3746511D408</stationID>
+ <name>Oldies @ KJJQ-AM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385391E02DFB742F77D59595DF10420FD1A8456C4C4529208C84C069DBB6E247AE8E79</stationID>
+ <name>AC @ KSDN-AM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539175A56E32203CE3F8CBD30ACFFBA40FF8CCA00417607B3346F0C3C4C47ACC3E0E</stationID>
+ <name>Country @ KXRB-AM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853912084023E72C3B07B07AC6723352E96CA59B4A15618553BA586889A2E466F34FB</stationID>
+ <name>News/Talk @ KSOO-AM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>1.14</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385391056FF64D2FEC4B36C73C78639159F072E540E300151596A998E695B703330618</stationID>
+ <name>Country @ KOKK-AM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>1.21</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385391072E85A350AF229251A6227BE7C31F9D16D1CBFB01F04DE7C1CECE646B8133A5</stationID>
+ <name>Sports/Talk @ KWSN-AM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385391B8E34E519E2FCCE4F178468D0414A44795D072108246D405BF5EEEBEA70B80A0</stationID>
+ <name>News/Talk @ KELO-AM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385391D21C506EED1229324C6B1CB5ADC7000CC13B12609C7FF642DDC9B77BE5FA36E2</stationID>
+ <name>Sports/News @ KOTA-AM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853918A40A585D10CC6844004B99CCB9225AA1C89B9D635253293BC51EEEFE600D32B</stationID>
+ <name>Country @ KJAM-AM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539146B796231AB996C1D94EE2BFDC059FAFC71F466364DCE307769DF2FFA9C5CCF6</stationID>
+ <name>Nostalgia @ KBRK-AM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385391429495811849912E8EA5F687C8897BB93728C6A19261D61FD3267A4E109F4FBE</stationID>
+ <name>Sports/News @ KSDR-AM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>1.48</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539121BEECB98C0EA8FF4889AB2ACE013A1F03FC9962A8C568C61DDE1B5AB8AE4B82</stationID>
+ <name>Country @ KKAA-AM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>1.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/South Dakota_am.krp b/kradio3/presets/usa/South Dakota_am.krp
new file mode 100644
index 0000000..0740adf
--- /dev/null
+++ b/kradio3/presets/usa/South Dakota_am.krp
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>South Dakota</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385391D752D5D96B06856A8F4DBA8A6907CC062F941298A5A7DF0218DE6E03C1EE923C</stationID>
+ <name>Country @ WNAX-AM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>0.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853911C9EBF113000D1158E7176037FD0F1F428F2403F3EC1BD8A5191F3A98CD26E6C</stationID>
+ <name>AC @ KQAD-AM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539186BCD036BBA673BEB399C1F9C1395D3C4435406D2747DC107280D8A3C1349A56</stationID>
+ <name>Oldies @ KJJQ-AM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385391BE62335D9A0CB72A7643801CBE90881E7059EED36A932AAA132B42BA47035678</stationID>
+ <name>AC @ KSDN-AM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385391F5A8831CD14CB8D9CF1618E3D1F17F1D9365879F374DCFF74486BEFF6C74D675</stationID>
+ <name>Country @ KXRB-AM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853916BCAB76DF2535A286BF90CC7248CE4E7AF57D1045188639AE605ADC5400CFC70</stationID>
+ <name>News/Talk @ KSOO-AM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>1.14</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385391FA9EDBEA1B51FA17990F139582733021740B0479E9EBD3F71F32C977F12CBAE7</stationID>
+ <name>Country @ KOKK-AM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>1.21</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385391C438EE82AF289885616B04FE35C140A536A4F4D1CCC613698821204EA0CC5B41</stationID>
+ <name>Sports/Talk @ KWSN-AM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385391CAF688EB9234B8F5481D83465634CFC4097CCB6B7F8FC39788961C58125E3510</stationID>
+ <name>News/Talk @ KELO-AM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853917265CC4CB1B04C06514E338CF4292253A8788DD85183FE8BA414B49D62EFD00F</stationID>
+ <name>Sports/News @ KOTA-AM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539137CFC8B778107EF871F5AA5926F2401F36F85125747F0CB5FDD7D2F19B4F914E</stationID>
+ <name>Country @ KJAM-AM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385391BD4266791CFCC0569854A30E6AA5C76559D5B09F7052E47992C6D69E94FFE633</stationID>
+ <name>Nostalgia @ KBRK-AM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853914D21D3FB3B5E976E5F6471AE11ED09550F348736FBB4422AC5D2045A24471FA8</stationID>
+ <name>Sports/News @ KSDR-AM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>1.48</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385391C2D9575C5060767BE4C5DE137807FC0F2C0FD1D127DB37D505D4C2A2A02F1742</stationID>
+ <name>Country @ KKAA-AM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>1.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/South Dakota_fm.krp b/kradio3/presets/usa/South Dakota_fm.krp
new file mode 100644
index 0000000..6cd7d6d
--- /dev/null
+++ b/kradio3/presets/usa/South Dakota_fm.krp
@@ -0,0 +1,230 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>South Dakota</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853914836981F3C2C9A45C08579E84986A7AE60F29E439A15F5E73531E4BE852A7C48</stationID>
+ <name>CHR @ KJBB-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>89.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385391B7C1E623E9BB4BD04CB1161001A44567EE1D6BC677EB782107E5921F918D8310</stationID>
+ <name>AC @ KELO-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385391735A03D8DA07BEDF634DA311A7301A8479618441E6F4CB2FF30B614A43D89D0D</stationID>
+ <name>Country @ KSDR-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385391902CBB7E39C736C40EDA576460E7976EB0A9DDE97DE360AC8ED70E1217AEAE16</stationID>
+ <name>AC @ KBRK-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853918C2B504193D46162D9A6C7DEB699B3DE0232085498B9BA94D221346B5532CC19</stationID>
+ <name>AC @ KKMK-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385391B2D1CB71452F4C349D2A9E0755E9F3DBAD63082D2A43D3A86EDDE3C3D9E78A3B</stationID>
+ <name>Classic Rock @ KSDN-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853911D3E1A6D8804EC8FA3D5E409D28B1CA32004B0E30CC14CDBE22C16591F1ECD24</stationID>
+ <name>Oldies @ KQAA-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539127391A397F61A205C1145A0D84A443ED0CB8B1C88BA6F5537761CA2030010DA3</stationID>
+ <name>Ethnic @ KINI-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853916FBC0843D201D527B9BDA3189355AB1EF5DDE9E0B86C29AD895B35EBF29BCEF7</stationID>
+ <name>Hot AC @ KMXC-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853919AF64AFE634958D997173F9460B4F8C3FBB96F03CD919D552FF13AED37E29CA9</stationID>
+ <name>Christian @ KLMP-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853918C8E10C7B96FE024F354E214C30C90D4573919B78B1376B2F681914ACE201CC4</stationID>
+ <name>Oldies @ KUQL-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853911F81C38199E8089C13551C553D8286D6C9A32C778AD6C721F573CB100CBA7CBE</stationID>
+ <name>Country @ KOUT-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539142D12FA59438C5B5C0B999261D2E50DE3829FBB658605A6337957E09154E7484</stationID>
+ <name>Classic Rock @ KFXS-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539181AEF5A9876FDCF48F23A8D863B8DA9A1C087B545CE638971A23A797F78EE8E1</stationID>
+ <name>Country @ KIKN-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385391907E1B608C3D2BEAA4F501D731C59DC2AA9B71880F880A5A08BDFF98938CFB15</stationID>
+ <name>Rock @ KDDX-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385391AD83B0A7F4B1BD9D104CBBD623E35EB87E25D1435D010D4D147AB6DA12AC4858</stationID>
+ <name>Country @ KTWB-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853919F8A51E06B338755AFBC5411C2774F8F26818B0708AA44186A1415840CA73F48</stationID>
+ <name>Country @ KKQQ-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385391672BDB9DA2334FEEFB9A782700C8967F81591923CB205720F5134BFD6E2F28C4</stationID>
+ <name>Classic Hits @ KYBB-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853910E416611BB562DF2FB9978C6A4885CAA44B73167504F997A7A60180A2741ACCC</stationID>
+ <name>Country @ KBWS-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853911CD2D1E1702710B8DF8443BE79AE49657E522C9C82F99C7B5695CAE8FE1752F8</stationID>
+ <name>Country @ KJAM-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853915D4C1C8381831954111115298B7040E03193AB5C7D0FB19B8E13917686846365</stationID>
+ <name>Rock @ KRRO-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853912061EC87FCB96D68F4C9990323DE9A1A5132CDA265BEE1DC56865A0213BF4376</stationID>
+ <name>CHR @ KKLS-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853919A6C2CF894DD33ACB2644B5A843D397DB4079820A92FE99909129BB80E40793A</stationID>
+ <name>AC @ KZKK-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853912ACE9E63B17B97546BFF0AABF68D1E2B97937D3F6591E0DE0FA3AF0049E343C5</stationID>
+ <name>Country @ KMIT-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385391B99BF71DFF965B1770CEA5F70EB15D6E64FB039A89D6E953B42A92B39CD55BE0</stationID>
+ <name>AAA @ KDBX-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853910BB9EFFE8D07BEBFB81C93F65A5D8718E366D3E53911BA9EAA22B81D571E65A7</stationID>
+ <name>Christian @ KSLT-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853910BEDE90510BE343455F53A0EC571A510AC353CBFC119BBA6C17FB8F0A743F5E5</stationID>
+ <name>Rock @ KSOB-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Tennessee.krp b/kradio3/presets/usa/Tennessee.krp
new file mode 100644
index 0000000..c7893ed
--- /dev/null
+++ b/kradio3/presets/usa/Tennessee.krp
@@ -0,0 +1,838 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Tennessee</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853927D97E2BAA6C420E16FC90222DEA942F253F84AA09A9F6E286085D9928AD14A77</stationID>
+ <name>Various @ WMTS-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539258F593057BA6B203FF9C12FDAF24B6268141D31E1576FDBBA77576C5E805AF35</stationID>
+ <name>Christian @ WAYM-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853922B649185FD0776FFFCD6D1CA154B4624DB41B7D022A645AE1357FACE012F5A05</stationID>
+ <name>Christian @ WYLV-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>89.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392397425D7F398B8A017DE1700E53030ABF4E9DD7D7B71D25A3C9F904BF154B08D</stationID>
+ <name>Smooth Jazz @ WUTM-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>90.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853922113B3009C9F075DB4AD86E5A58B041FCC698ECB00079EDAD7D302035A33E8B5</stationID>
+ <name>Classic Rock @ WYNU-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392DB84B95C78D5CCFEC386346A03B3D551F8A8A04976FFE7041F28CDF2B0995942</stationID>
+ <name>AC @ WJXA-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853920EEF554CAAC66C4BFE830AAD91A1BF990AFE37EBA2F14C4FA07FD95D620941F0</stationID>
+ <name>Religious @ WWGM-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853928069439A31FD8029555186ECE691213FEAE6881BDCA47283FA842C816515F8C0</stationID>
+ <name>Country @ WAXM-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539265ECE6990EF97F108FA2653FEB20F1AF9FAC44523F41FDC3C24D296DBB5DA3AC</stationID>
+ <name>Christian @ WYYB-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853929D1802708CDB3AD589AFD8AA415DC4A7FE90D9AB210023CE95237A13570B0B39</stationID>
+ <name>Country @ WMEV-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392925773EEEBADB9AA8152152B504159400F5D4C46EAA6A0DB4FEBA55BD9AFC393</stationID>
+ <name>Christian @ WRLG-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392D3B4DE0B53F0B56ABB7DCA99F1E7F520912E334D35C28E0F7AEC4F5C230362D1</stationID>
+ <name>Misc @ WDBL-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392B8A0EF83A4BFD0C03677AF28F6FB48F5DEC20D25A474464762B6D693822A8E30</stationID>
+ <name>Country @ WFGZ-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392E2BF587B047CB7004A28E2D012D056FD41CB207158FA9A52BD41B8547EFA4D9E</stationID>
+ <name>Country @ WGSQ-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392353F7AD08B65CFA5C2F22ACC878ED8092122516104919C81CE72E895D187B07C</stationID>
+ <name>CHR @ WAEZ-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539203497DAFDB9A7D066FE2412FF7E2D7A642D0DC68FECF27A6CF11DAB261D77889</stationID>
+ <name>Christian @ WVIM-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853929B220740508C7895A293812E26E17902001C0BFEB898AE976324097F4E06E08D</stationID>
+ <name>Country @ WSM-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392C48E6641D28A68A5A7AA5DC7F5B906533AE3FAB5C63BC42CAB162152DBE229A8</stationID>
+ <name>Oldies @ WOTO-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853928094CC7F8597CCA3694BFAE281F753CD2AACBA2AD6A2B2A6344633AB18DF2686</stationID>
+ <name>Alternative @ WRZK-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392BF93EF022F15DF4594FCABE2B4CB481423BB97EAE008DA5A991295D12CB26080</stationID>
+ <name>Country @ WYYL-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539297A8F10970E1E519E8C8DBD7EF0BF33F27A1902A3B03FA55EEE3BC698C518CEE</stationID>
+ <name>Oldies @ WMAK-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392C951031FB6E882207B7A2689E43A905FB189B4CAC22049EE7E25430EF060DBE7</stationID>
+ <name>Alternative @ WDOD-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392FEBD39D14DE0C347C595818F7AE7980F56A4A671044A2F06DE490D3B7F7D7F57</stationID>
+ <name>Religious @ KWLR-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392F844A18EFAA8F96C476CB3BE79BCE60E32653CE4DD353B62D159122FE13F7120</stationID>
+ <name>Urban @ WHRK-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539285608E3092DB42DD07CA9ECE73E3803FAFD97ED4EEBCF148A53D35C9B3D3F414</stationID>
+ <name>AC @ WWEZ-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392CAB8ABC269191BF36B6DEE0260E8BA32F3BB7516CA813AF04A3F7E7CF804A025</stationID>
+ <name>Country @ WSIX-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539272B7A47A4B6FE08E8AE9A57D6F17620CABF1EA0E1959D69E45A4A3FD2C0E6BBF</stationID>
+ <name>Classic Hits @ WSRR-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392E94746CDB8C46ECF53975351B233FF99DB2D758172A33E05544AAA150DF51D5D</stationID>
+ <name>CHR @ WGIC-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392FC29515658CFB87B386B5963CD36F7BC642834B49BAB472F6AA07B0EB17E6659</stationID>
+ <name>Rhythmic CHR @ WYIL-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392CCB6194F5A55EC2D5B3AFB03B2E17C1438D28F8C3A2F38BF47A2DB36C432DDF7</stationID>
+ <name>CHR @ WWKF-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392171DA4948398E5ADCE1A7ECD5E45422F6A46DB5BF64D7329841A20BC76C80B0C</stationID>
+ <name>News/Talk @ WTN-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853926FFD0791D0FE9F9ED5EC3A13AEC36BB33C741B25AE4668B9CAF9A6C97E86D42C</stationID>
+ <name>AAA @ WRLT-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392E169BB2BD86636C57965245749A288C0EEB511AD12E813B787148B8B7ED7B834</stationID>
+ <name>AAA @ WOKI-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392A9EB0816DEB5BB504E2781B0F3DFB96471179F02637D09ACFD3C1AA44B4187B3</stationID>
+ <name>Country @ WUSY-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539364A40978A84393D98C38886412A2C9E9BD7DC7A602F95A54B619D38028EE9315</stationID>
+ <name>Urban @ WUBT-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853935377E4A24F754072ADE273A9F41A4C2DBB538431EC7B70BC1BBEBB05F59E9F77</stationID>
+ <name>AC @ WFTZ-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393E3F64CFEF34A7CF43B74AD2AEB9FE25AF1E978D7F3B71961E0922724725FC632</stationID>
+ <name>AC @ WCMT-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853937A8D1E00DC69CF6CA3AB58B4F3F9F14BCBC68D2191F1ECDDB62C5A6CDEEA5EC5</stationID>
+ <name>CHR @ WWST-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393D434A1353B62954A997DD032BB8E1C5A8CF31CBA7FDF913EB17F5C64370326F6</stationID>
+ <name>Modern AC @ WZDQ-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853939B672751FB549FC20F84BB27360823A7FE75128F9D9591F40768E7D8D506B239</stationID>
+ <name>Rhythmic CHR @ WQZQ-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393390F8B48EE00C5C32B22A4010B241AD9F50CE3A98D7F8628368CCE74ECBE225C</stationID>
+ <name>Classic Rock @ WEGR-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393256DCA21C7AC931886AD26656A0565872831BB33E1B5D503A63F4143D67B350F</stationID>
+ <name>Country @ WIKQ-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853933224D3456208F1B0CCFC424DD5C626B150BCF08750347DED9402E550AB068B82</stationID>
+ <name>Country @ WKDF-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393D6225AE9C97B2825412F090A347035E45B9F9D7B3F189FD4230052128DB806E6</stationID>
+ <name>Urban Oldies @ WRBO-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393DAF18CAD25D3B65BC0050D1A7AA39488C69797642EADD93995F9C8B4EE0BD398</stationID>
+ <name>Country @ WTNV-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539387BDCCEA3AC8712C9C0904F69CD03D3CDC8D30D3BAC2775A0F26CF20AF515F50</stationID>
+ <name>80s/70s @ WGFX-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393F03412016C9B9C5006E4A56E107920D2B8077F84E6F47CD1634AD50F47713D63</stationID>
+ <name>Country @ WYVY-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393A69E1E92BF51CF1B1D37099A51EECE8C5EEC7B577FD63F2C72EC9F6760AA4FFF</stationID>
+ <name>Christian @ WVRY-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853938E2B35DE77974816C3C83BB491191CE20537CFA9C35B93173FCC80164F3AE18E</stationID>
+ <name>Eighties @ WKVL-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539360CD352ED1C17DF3356E9F8C10E85237E23A8BAF6B9CE7C9B69A025192CF71C9</stationID>
+ <name>AC @ WSEV-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853933A51D65FB557EC9FB7DA0E48726ADB018034D5127C257611183BC0CEC2472BDC</stationID>
+ <name>Rock @ WWUC-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539324A4CD108F06DD7D3C0531A062D81C96D3380F1F9E9302F0121D924AF62DC47A</stationID>
+ <name>Classic Rock @ WNRQ-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393B6AD4E5B61715EE3372945174B5FD7BCD1B94AF8FA9847DE5FFBECCA5517253E</stationID>
+ <name>Classic Rock @ WSKZ-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393A897545C326FBFB77E18CD399698E50252F75CFA575A957007A1F6B0E5D6FC4E</stationID>
+ <name>Country @ WWYN-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853932CBF20029B159B6E7DA6A3B5CCF898C5E74B433AB5F51ACB195B2B4324427112</stationID>
+ <name>Rhythmic CHR @ KXHT-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853939662BEECCB1806C81ADE6B35279F596C74619D360B1E038222438D9D39D1D965</stationID>
+ <name>CHR @ WRVW-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853939767368F9837409F75C5C4F1A752B7E5437F7661BB0551F3F901E7E64306C04F</stationID>
+ <name>Country @ WIVK-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393ED60A4F47596F05F42E20519E8BA1EDBB0E453E02283072D22D608CB67032937</stationID>
+ <name>Hot AC @ WCVQ-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539350E8E3B53775B9BE0E118AA863E2CCC02FC1B3430231FFBBA9757E75ED50B93E</stationID>
+ <name>News/Talk @ WDXN-AM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>0.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393D1CA4EB47185BE7A66025967D4FB75AFD70B4E24A32119A9835751A415F31208</stationID>
+ <name>News/Talk @ WNSR-AM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393FB8F6A1E7FC89B527B3E165C9DEBFD977859B2EBD5D16045552BDE905B5A4311</stationID>
+ <name>News/Talk @ WREC-AM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539363B81FD12906ADE70C2D99299F99194D0D23F16151DA5E94992262589B6D9575</stationID>
+ <name>Nostalgia @ WTPL-AM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393B01770DFB56FF4E993594B66666E53D0A678977C5E92608E4B2F2983A6A86351</stationID>
+ <name>Religious @ WRJZ-AM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>0.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853939138F93CF3F272E586FE3842647444E90506392CE9864978F6C05D5EC5D41623</stationID>
+ <name>Religious @ WCRV-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>0.64</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393D00FCE00A2D1303EE665CBF1F2195EE2CB42537F2573C7E239ACDD7C6BDB1727</stationID>
+ <name>Country @ WSM-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>0.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393B2843601022724117A8F56D16199FFBF674FC585660BD6B8AC811346EFD76EB9</stationID>
+ <name>Sports/News @ WRWB-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>0.74</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393C42FCFCE4750BDE9D9DC83A5D89A6A1DFB0099257EA33A940BFA31E36236D91C</stationID>
+ <name>News/Talk @ WENO-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>0.76</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393C02B0A431CA0E16A643EBDE36B0BAE8A12EC7D66166443E9482FD34C0676E0FA</stationID>
+ <name>Sports/Talk @ WMC-AM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393D476413EC5BBDCEDDDCEBEA6C186FBC0325AB1ADB13ACCFC4C1C5DD10C6FC7E1</stationID>
+ <name>News/Talk @ WMGC-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>0.81</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539340107B90C966AB717417B145C5762C9AB996093DA8B66C00602842A3F0EDE99D</stationID>
+ <name>Talk @ WKVL-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>0.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853931EFCDA209A011C8633C08A585F5EFD4653072E13784B5EED79B18BA06B9199C6</stationID>
+ <name>Sports/News @ WJCW-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853934BEA70F0487D28FB77CA2EE769AF7206FF2E60105B8F72D0AF7DD2DDAE291EC2</stationID>
+ <name>Religious @ KWAM-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393FFF0C3B99756C79690305F210EF5BCDBDCB89F02DF4C661384F91391BB2AAAB1</stationID>
+ <name>Country @ WHIN-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>1.01</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393EF9EDBA2B75C56AA8FF9BFA60CF7F35E7DC8458E8E6C9B33CD9DCC672561C769</stationID>
+ <name>Spanish @ WGSF-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>1.03</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853934FB4F09336DBF6D667C6A395DF161BB46C24740C57BB6F6A5EBB913C84B8AAD8</stationID>
+ <name>Urban AC @ WDIA-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>1.07</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853935B0D2D0475872E210F913D08B98E0DA484907D2AF9B0ED25C3E3BB60DD2FF01B</stationID>
+ <name>Country @ WSLV-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>1.11</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393EC155A840860A6329F030FA6FBBD9B36C0B4DBA5A266C6660FF2F7DF240FAADC</stationID>
+ <name>Nostalgia @ WKCE-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>1.12</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393C06008A7B78C13D45604384E5D29F6BAE79BE6E577872E7E467614A0B7968B41</stationID>
+ <name>Country @ WYXE-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>1.13</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393A19091750CAD632878C23CE67845DEC78D3C0CCA1E9A91884428CD17E7AB098D</stationID>
+ <name>News/Talk @ WGOW-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539363F99E51A3F8D0E1EBAB36F8E4C7D0CB57D369997553170DE7576E8C94162D57</stationID>
+ <name>Nostalgia @ WAMB-AM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>1.16</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393E0728CA2C03DDA9449F4DA5AF75AFD831095AD5CA371379A3979AC25372D9D12</stationID>
+ <name>Sports/Talk @ WHMT-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>1.19</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539362B8A2B96A5839E43F503325A1FB5537A3D5BB36FF352E66DF298044000E4BD8</stationID>
+ <name>Country @ WFWL-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>1.22</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393DC9DBCFCC1EBCA11582CBC1335FD195404FF3A82C5855EE81C76755DDCD14C78</stationID>
+ <name>Oldies @ WENK-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393BD2694E1CF0E69FC5F6EC0663C817964A4A8F0DAB9007F3492BC7EB8F08BDEDD</stationID>
+ <name>Country @ WKBL-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>1.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853930B711785BE7B133127D46E8B929072DC7CE8F017D711D6E2A4683E73293541AE</stationID>
+ <name>News/Talk @ WNQM-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393FB6F5FD4A359BE530C5FD33087E67CEEFA25F9CF1391300086F2615432471ACF</stationID>
+ <name>News/Talk @ WDXI-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393CA4AD46F7758ADE641D27545E7104547C8BBA883250D1A69BA42D93BC21E273F</stationID>
+ <name>Sports/News @ WKIN-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393FDCEBCB756B126B91537EB5EB781E7364F7C2E4171B6A7C8287166F55432C30D</stationID>
+ <name>Gospel @ WLOK-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853930D7F976B4D5A820E31F92129A72190BF07BCA569DB984D6CED2FEF894F56407B</stationID>
+ <name>Religious @ WNAH-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853933BD8040256EB0FBB57EF830206D33E31D16DF32E134C98419510CB0E1F19F0E9</stationID>
+ <name>Urban @ WJMR-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393323DFBEBE25302C41033B8E795E4E60DEABC6A3F41B7AEC7DD093F920D313A5C</stationID>
+ <name>Country @ WYSH-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853939E62957AC5AB2BB82545E4BDC1CCD8CDA406D9B030134625DFBEBA9A97E89D45</stationID>
+ <name>Country @ WMCT-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393CCC7936B2079AAE73F93ECCBA43E45A8DE1FD79D7780E0929CAAFC9CF825A0EF</stationID>
+ <name>Nostalgia @ WKPT-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393C6FBD23473D7BF69FC5BFBADD98AC02106977C63EB8B7E7F70284D69CA6398DC</stationID>
+ <name>Country @ WCMT-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853932E8790B9306ED71B82D11D5BE4A968B6A57C92A883F482FE73C5BC6FD7E754D0</stationID>
+ <name>Country @ WEMB-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853933DED6307EAD72A91DD39F20FCA25173078B0CCF0202F9994FCCC78F63B31C5FA</stationID>
+ <name>News/Talk @ WQCQ-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853937A1AF5F826E977A4CA04EE76A8A448E513BBD0AEBF11D6E9652323CBF5C1DEB0</stationID>
+ <name>News/Talk @ WGNS-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393A0C05D345594D69FDE620DA70AEF0D5E4D4710F161C87A23430971F1160B50C8</stationID>
+ <name>Urban AC @ WVOL-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539311393C6B24EA179519E308561D28FBA63219C3D234A7514ED0D5FDB8FD6352CA</stationID>
+ <name>Religious @ WITA-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539349AA4D828CE6A584D9E1830E241B6DA5E9BB568DEF5C269D48738964C30A93EA</stationID>
+ <name>News/Talk @ WLAC-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>1.51</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853932362288E617BB2AC7BE62859F9FBBDF6C148DEC2B015B88053701E2E17D2825A</stationID>
+ <name>Country @ WBRY-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>1.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393A964B6518829DD50864E9923E2896FE63D550E81D02FB3BB3DD8315C24E9F1BA</stationID>
+ <name>Religious @ WBCV-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393E7465670AE2F909B61A93BA86FBBC0EFA8DC34682B3E355BB83C04883235CB9A</stationID>
+ <name>Sports/News @ WATX-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Tennessee_am.krp b/kradio3/presets/usa/Tennessee_am.krp
new file mode 100644
index 0000000..5b36634
--- /dev/null
+++ b/kradio3/presets/usa/Tennessee_am.krp
@@ -0,0 +1,374 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Tennessee</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385392101B7F6DB27E47B25C3EA685D24A6390DEDCE548218D5EC7132007C3CA0049BF</stationID>
+ <name>News/Talk @ WDXN-AM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>0.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392EA1778078745C91DEF75160DCC6C40A239383A5EF03A25F538A9E42B1C1DFF9A</stationID>
+ <name>News/Talk @ WNSR-AM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853926C5D52B653D886ADC0CF32DA338CFFCEEF32DB85557018AA89812D4E08D1048B</stationID>
+ <name>News/Talk @ WREC-AM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>0.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392227F84840166088AB716496BA10BC6392338F5241F5FA803BBEC908C0153239E</stationID>
+ <name>Nostalgia @ WTPL-AM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392291FA8D975DAFBC8FBAC752E96850A809B4177E7873342C92D645D2C2FE1EC12</stationID>
+ <name>Religious @ WRJZ-AM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>0.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853927208F03AADBFE05647C4BF7709DBCF8C4920F32531F634DDB2C0888CA8F98C39</stationID>
+ <name>Religious @ WCRV-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>0.64</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853922F524657A9083413BA3CEDD2A4EE3EA04D1ADA1D5713622F18886EAA332D6791</stationID>
+ <name>Country @ WSM-AM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>0.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853927518C167D251321813D199B78A322EDD28D5C94669F5BA117468642CB2E6871D</stationID>
+ <name>Sports/News @ WRWB-AM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>0.74</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853925309D5DF9CE02B60FE1EC248715DC0DC303740401E2CBF80A398CCC52A0F4AFE</stationID>
+ <name>News/Talk @ WENO-AM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>0.76</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392EF6BA9CD80D2532D73DF921FD3B22580D0CE4B839410722B95EB54C583AF727D</stationID>
+ <name>Sports/Talk @ WMC-AM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539208987E0D800E776F05A4EAF19629DA2F3E00935A17905E7EF3E05DC3B1B8234E</stationID>
+ <name>News/Talk @ WMGC-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>0.81</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539202D8B1E4D7753A967C9A746E49580F8EB489BB256069A7D293368EDEE0FA688F</stationID>
+ <name>Talk @ WKVL-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>0.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392DF8E569E506D0527F3F4500AFE8DC616338C2B1175DA2625F3E37BD003CC80B6</stationID>
+ <name>Sports/News @ WJCW-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853928C654EE1793FFA39EE9D3AA829AFAAB8D8DF4D47E9BE4BE78637628756C9DDBF</stationID>
+ <name>Religious @ KWAM-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853929059488FE8AA72ABF50516B737E4C96F0E399060CC43D229A7E84652431C0D4B</stationID>
+ <name>Country @ WHIN-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>1.01</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539292EDFEC91D0B527A7CD0033C8EDDFC52DA7409A33F3C3351024C2BE829DCEBDC</stationID>
+ <name>Spanish @ WGSF-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>1.03</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853921B655F80731440F23EFC79D4DE84958B4A4F171E8C3908526E94DA53B18FD720</stationID>
+ <name>Urban AC @ WDIA-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>1.07</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853920C17415DC2B371673BBEBAA38D77897CE7A784D2D6910610A030E042D2C3833A</stationID>
+ <name>Country @ WSLV-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>1.11</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392AC94F9B771967A2A07ED880F78DD6112DC8D6315CC21CBB9E8881CA03B150C3E</stationID>
+ <name>Nostalgia @ WKCE-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>1.12</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392FDDAAD0C0867572A64A49FBB53D1902460D25850041251E27E42D1F4E6478593</stationID>
+ <name>Country @ WYXE-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>1.13</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853926C2A4D749BCA33E88CBD01A95F2D69BC96B246A707DA3030AFFCA12D5209119B</stationID>
+ <name>News/Talk @ WGOW-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392A0A80D82886AE8B6EEA376297F449ADB815C5D1D0A4D579A8295A5695F107F18</stationID>
+ <name>Nostalgia @ WAMB-AM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>1.16</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392C574B6EDE9C1B4D57B4FB54416ED29CD2A7728DD1BE167D25ABC1E55B1D2D864</stationID>
+ <name>Sports/Talk @ WHMT-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>1.19</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392812A2F80AC2F199B2E0E9A89385645D1A136A8D3B2587E51382DD882DE540BED</stationID>
+ <name>Country @ WFWL-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>1.22</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853929CD413385A7D8549BAF2DCD6AF53D83CB97ECF57F65DEBBE0500A4ED9F5B97A8</stationID>
+ <name>Oldies @ WENK-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853926FA7787C82300159361F0384759F556F54AED25D19D1F0DFBDD21E5773BBBF65</stationID>
+ <name>Country @ WKBL-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>1.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392EDBF3AF5E4BF102A6F8C1C581B7DD72B71598886B36124493DCAAE7D0D144D81</stationID>
+ <name>News/Talk @ WNQM-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539233CB5DE8559BDCF20148C6BE4A93A4EA822290C5257A8689C8F19194A4FF5CCC</stationID>
+ <name>News/Talk @ WDXI-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853922DAE468CF85BA3E2924A64734025B0C3FA8D7174BD702498B07C1A457C13D802</stationID>
+ <name>Sports/News @ WKIN-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392B6F3196B6D3B043BE9D507660C95245F4E0EA06C1BD6B33D133890D0698303B4</stationID>
+ <name>Gospel @ WLOK-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392605E421B435DB6B64ED4F278E8200E2015B03BBB488D89607BA44BFBF3358B7F</stationID>
+ <name>Religious @ WNAH-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853926BB33E7EEB66B7610E20EEAB5C707C13CB17015F8C86EA516144EE778F92DD7F</stationID>
+ <name>Urban @ WJMR-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539251B7A1D4BAAC89693805D9A09D5C5504E2DA94A1EAF256F941A2EF47DCCBDDC9</stationID>
+ <name>Country @ WYSH-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853926A735787E73407F732CC1786D0123F2377B1F72CCF80A30A5ACD765B9DB00CB4</stationID>
+ <name>Country @ WMCT-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392E3F19A4E7A7889C547E4B113C9EF45C4DE805BA19BCDF66DAB3B61E6E51DC080</stationID>
+ <name>Nostalgia @ WKPT-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392EFF524220C987CF6DCE9ED191B75D3675A1D10D70E37884829D458620B66D080</stationID>
+ <name>Country @ WCMT-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392F7B31683604D9E392642D6CCD3B8E54FC36923AEB370DD9374C31F9F789B33E8</stationID>
+ <name>Country @ WEMB-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392AE650524EB1F65779B59B7062831C5BC38C5283E5CF01457AE2D4FEDDB1A2C80</stationID>
+ <name>News/Talk @ WQCQ-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392C4B809E913529C771A903399764D998551AF73798D8C4CA9868CD83D80D434C4</stationID>
+ <name>News/Talk @ WGNS-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392B0C4E3602CC26EDDA1D6BA008C5656D01EDF6A96AB3DB2C821CED64A367C4F96</stationID>
+ <name>Urban AC @ WVOL-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392D503DA53CE03024CDD288C206425EE5FD45E8701F76DE2DCA6C6BE0DF6DAE4CE</stationID>
+ <name>Religious @ WITA-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392E938B9DD74C3D73F2CE88C37517D62B55E185CB9029F8F6A74A0E10DF13950C4</stationID>
+ <name>News/Talk @ WLAC-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>1.51</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392A6C939CA538F6496DCDEC8B8E9F92142D89D7C176F5113A1B92A9AE4E49A6BD5</stationID>
+ <name>Country @ WBRY-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>1.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853926ED381E26C240EDA86015D79ED7AF50EE837BD638DAE5F8F5F0AAA20AD6B3523</stationID>
+ <name>Religious @ WBCV-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853929B176D88A90E231438AD0251941858FC228BC7096B93BA4AB196E3493AD8ACDC</stationID>
+ <name>Sports/News @ WATX-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Tennessee_fm.krp b/kradio3/presets/usa/Tennessee_fm.krp
new file mode 100644
index 0000000..9bccaa0
--- /dev/null
+++ b/kradio3/presets/usa/Tennessee_fm.krp
@@ -0,0 +1,478 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Tennessee</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853924DBEDF93C443838E273E06BBA7823A4FE802C98F35ACB4EFA1B9F519BBD6094D</stationID>
+ <name>Various @ WMTS-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539224FAA5E22B0E2936F20824DF902DD1DEE5D80E65B5701629EEBEB37C42E14A95</stationID>
+ <name>Christian @ WAYM-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392CB010E4C047CDB3CCA28CF417DF0F15B8622E8770CBB044D584C1A8B9F1220BC</stationID>
+ <name>Christian @ WYLV-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>89.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853927216B8720BE0D9031A57D88D644F07B711EDBF8952E2AF74EDB4634DA68784ED</stationID>
+ <name>Smooth Jazz @ WUTM-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>90.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392306E7D35B7587A45E4A695B3F77F7EC90780BCE442FE9D9B220F4D3F6DD1477A</stationID>
+ <name>Classic Rock @ WYNU-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853928E7F2962FF74F66CE29AC3BC80B03B6F9C709AAC76E9AD99183BF4B066BB3841</stationID>
+ <name>AC @ WJXA-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539254FAFE5F8EEDEA450E1F11CA66FAD6BE61C14C34290C8149AD455E63EEED5698</stationID>
+ <name>Religious @ WWGM-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853928884C394BF3FC5B7AEFFA2A362B3B3F53D3BBDF137D6F67FDC3FF5556551BEB5</stationID>
+ <name>Country @ WAXM-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539208778B45403087FD326522E3606A4557440EE4EBD469D3ABA08E5AA627D5339B</stationID>
+ <name>Christian @ WYYB-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539286F5A6EB2F622EB343290F7DB52CD68FBC02844074D9F59A63A3F850D2130B10</stationID>
+ <name>Country @ WMEV-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392DFD81A735570A4E5FA6797F9AA86990D746801FEBFAFDD30EFC6943F68004042</stationID>
+ <name>Christian @ WRLG-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392CEFE612EF023A30222335BE1ABD724F71EBBF2E55A657C8291C2F361F67350A8</stationID>
+ <name>Misc @ WDBL-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853920A7DF3025088167995E0C21A5D3E21FEC05FF0751711C9B99A0492DFE9FC1E34</stationID>
+ <name>Country @ WFGZ-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539279D40D6F8F0241912A4CD3E6711625B6CFA32F915D618314109D990238FFEA9F</stationID>
+ <name>Country @ WGSQ-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853924026D7AE6886EFE90ABC74C7C4C10D24AA6DABEA544ED6B4836343F646B3FB49</stationID>
+ <name>CHR @ WAEZ-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392428F412768FB321E53A82BCC5E66AB46216C999833977E07E98A1AC7DC525F7C</stationID>
+ <name>Christian @ WVIM-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853923D53728A6C427C6F9410F4FA218BEDDEC17D4573A1DA7A89F3BE8C7BF7DF5AE1</stationID>
+ <name>Country @ WSM-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392BB38681C40DAD6F7D8B33387BA9E640394FAD44F32F6011F5888670A0EE7920F</stationID>
+ <name>Oldies @ WOTO-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392BDD330C939F5A4B289BDACAF0ED70848CA28EB4A1B6C3BA7011989DAA556BAA1</stationID>
+ <name>Alternative @ WRZK-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392CCD08C32C471BE5826193C396E598FE1CC5808BB0E65ABF7CF48A28CB6A2FDD2</stationID>
+ <name>Country @ WYYL-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853925B17C0B5F5F970FB9A603ABE2E471424E7BEDE78E76E9CDF1213A1180C6AB114</stationID>
+ <name>Oldies @ WMAK-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539271C50F87CE18A4B463A3CBA053AC293C6524B477FB885C5E388A3950DCE10DD7</stationID>
+ <name>Alternative @ WDOD-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392825A963B27C001E45A3F2F98682CD96175AC3BA9AD6A45805EA633DF06A1C4C8</stationID>
+ <name>Religious @ KWLR-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539267B4CA04200C748C36EA4C46448254D45CCDD110A5D64FECAC71A73D03A15DA5</stationID>
+ <name>Urban @ WHRK-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539225B0804C8B0236ABFB5A3699BA69446541579F5D6D0A553FC5B4C163ABB99701</stationID>
+ <name>AC @ WWEZ-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853922EFC3B115577221C0CC760167E3632B3D70BB051040363AB7FB0103EC09E63F5</stationID>
+ <name>Country @ WSIX-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392A0174D6BBC315CA69F741213FF37078A7175AF81E8A04DE02E397B63920BC11E</stationID>
+ <name>Classic Hits @ WSRR-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853929B4B2643B93F10F18CFA2FFAF44E53045B1C1090401C0D03D6E1BFF06205D389</stationID>
+ <name>CHR @ WGIC-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392D45749093E4EEDD463BF9310D5B92FC9F806CC08BC1D5A8D9D0E8CE12F1A9DE7</stationID>
+ <name>Rhythmic CHR @ WYIL-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392B98FA76AFC4ED72CE7AD1AE4ADCEBB0BEABDB8F8195A9D8FC28AA48346D7A9F0</stationID>
+ <name>CHR @ WWKF-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853923E31465D17591C3038A046C036B7C50575E0ACE170D64B6133BC93DD29E6DCAB</stationID>
+ <name>News/Talk @ WTN-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392F6C66A899B3895E000DA00D4F4A903732B5A01983DC55DFE821E90D61AA55A14</stationID>
+ <name>AAA @ WRLT-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853923EDF9049FBD32042919A396B0B13302C6BE8B13BE168EBC985FDE5BB699B87E1</stationID>
+ <name>AAA @ WOKI-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853928B108CEA3EABCF7797BD09BB5D3B6125A319ECC7A2F67781ECFE1CFE360E97A4</stationID>
+ <name>Country @ WUSY-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392330A5C8447DA525BC202F5F51249AF65D5DFA1FBDFDCBEA5781E5CC55577EBDE</stationID>
+ <name>Urban @ WUBT-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539299A2C28E0D8BA35E5CA4DA45BA131CE5F60B98F74E1632345D627EA50562C722</stationID>
+ <name>AC @ WFTZ-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853921953B3B82FC96B1D1DE03E0A28F4278FE608FDF7E062273AF97F1F9B09ECCE66</stationID>
+ <name>AC @ WCMT-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392678BC6B24FAEB363AE22E3609844D6CDB43693C7A4F1C1CFC0206F6EB2999435</stationID>
+ <name>CHR @ WWST-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539215046EAF5FFE65B4DDDE5A66338E4C21CD4CB55279F24A6AD6B83C86E393D4F2</stationID>
+ <name>Modern AC @ WZDQ-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392F31E23C8F47645B9723E4625E8EC8F77D289DE72F0FA0AA2E40A404FA75C0A14</stationID>
+ <name>Rhythmic CHR @ WQZQ-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853920838E36BFC6E5BF8DC6DD3896C7F2D9272A8C193DE644DD06F8478A926A819B3</stationID>
+ <name>Classic Rock @ WEGR-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853920F2283F509196989714DBB289F102992EC0B4A66AA1CF3E26902CF7E5D55A02C</stationID>
+ <name>Country @ WIKQ-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392CBA46A1960E137342CE10669101DD117702568365B8ACDFD1B60752C2C22DD59</stationID>
+ <name>Country @ WKDF-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392290C1D338E2FB047AFBE7FB857822A835A20E0BA6EBF7B557544B788981D08F1</stationID>
+ <name>Urban Oldies @ WRBO-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853923E40B0DBEC26A34C5403E975BD2973BDF9235C9C9888333D7C21B366E105FDD9</stationID>
+ <name>Country @ WTNV-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853926676E3A9905CB8BFA2318CD2A0A22671CDA4FA7481F889A13EB2FAB78A988359</stationID>
+ <name>80s/70s @ WGFX-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539214CF9AE03A9CB8716746E11D812C6D798EB5F72F114F4FF79AAFEF3C9E125901</stationID>
+ <name>Country @ WYVY-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853923AC8543DFEB75E9D04423A958FCBBFE944A255D8AA4D672956B31267053D8F1B</stationID>
+ <name>Christian @ WVRY-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392DA0AE73BB5FA0234494962445C2D098CEEA9BC70AB974894E2C4598621D3D8F0</stationID>
+ <name>Eighties @ WKVL-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392F7E952D0BDF439127CBDBA1E0C8761BFB3BE94433DA309813D76B70DFC219422</stationID>
+ <name>AC @ WSEV-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392681A9A85A5F4787B1A41D563FB0C7AD412A9DBBD3B1B9F15439EC61CCABE6452</stationID>
+ <name>Rock @ WWUC-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853923CF5C31D07C77BB0CA7BACC9B1D142C95AEBC274F52F0AC53CD0F43F4906CE15</stationID>
+ <name>Classic Rock @ WNRQ-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392372B16AE637F7E8918229B75DB331E38F1B9EAECAB1812408492FD17CB4F83C0</stationID>
+ <name>Classic Rock @ WSKZ-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392722DC95DC00D481DAD18A8ADB0CEC5DEBFD1406B0FF31D807B3DF31912222E2B</stationID>
+ <name>Country @ WWYN-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392BB4A79F7CF81AC3FB338708DEBB72DA8D66BD7E678AB49E84E47ED2ED6B50EC0</stationID>
+ <name>Rhythmic CHR @ KXHT-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392381A1F7E8EA386FE2696007D3E9AA686F0E69026505D9A761D0663CD9B1697D5</stationID>
+ <name>CHR @ WRVW-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392C6BADAB564F79ADCB0DC96DCA93D3A326AFC8085B6DB231CC8942FC5BDFDF952</stationID>
+ <name>Country @ WIVK-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385392731452738CDD154255A6DB43B6CFAF153A90D3689001B4B0C43B116317A0E50E</stationID>
+ <name>Hot AC @ WCVQ-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Texas.krp b/kradio3/presets/usa/Texas.krp
new file mode 100644
index 0000000..6cec39b
--- /dev/null
+++ b/kradio3/presets/usa/Texas.krp
@@ -0,0 +1,1366 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Texas</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385393D4E2474F0301A577DC218D4BCE243B950DE869A776E635044102BC7DD77EC0FE</stationID>
+ <name>News @ KFDM-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>87.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853939AEFB6B9F047193A5D8A39CCF791BA0CB5BCC88AEB184656EC1C077BD0C3C060</stationID>
+ <name>Hot AC @ KNLE-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853938C4FDC94717F49AB6597A7702DF7DD7FBA0740B24A079A87163211623B2034F0</stationID>
+ <name>Religious @ KAXF-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>88.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853930B568AF0C7C0C75D554736274C10E01525951D680C5B7B1AF678CC24FEF92FAB</stationID>
+ <name>Classic Hits @ KETR-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>88.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393067B24192E97A50BAAD19DD5CCE44D3D864AE04E821A7979F68448D2C9C79204</stationID>
+ <name>Christian AC @ KSBJ-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>89.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393F29593F2FB93245EDE0850557A27459082338EE8C828E088DD6134F6BED2E666</stationID>
+ <name>Various @ KTSW-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393E4E20B69E1B360BA75CBA6F2B4F85FC1F8C925AC9730A30187EC91F92E7B8112</stationID>
+ <name>Alternative @ KSAU-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>90.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393B5A5C8F0CEA55A92EEC3F707793B21BE72F64F168FEB8116F1B41B4F2F2B0EAB</stationID>
+ <name>Christian @ KSWP-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>90.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393E6F6794A024E60865AEB7F25F472DD0288EA91CDDF73FAFB26D38618D0E06A92</stationID>
+ <name>Alternative @ KTRU-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>91.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539304520E021EE593E2B943100C0FBDD664DC233A8A822D3919B713ABEA9122DBED</stationID>
+ <name>CHR @ KPFC-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393E78DFF3EED397A812EBA6630B6FA3740D5DDBE07ECBD0EB2F6B6CCF9C892F000</stationID>
+ <name>Americana @ KNBT-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393C2DDF2C7EBF67443818D59C867A3F0C3339219356B331033C4AB10604A3AD573</stationID>
+ <name>Country @ KRNH-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853933EF15843CB0227990E530254A2E4BDE5E3E4D3F7BC6F166026D29A2FE68CD3BD</stationID>
+ <name>Urban AC @ KSJL-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393F42958AEAC698ACC1FF9D85FF8FE01CC9CCAD250EEBF8EAB5A64093CED158CDE</stationID>
+ <name>Alternative @ KESO-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393DB40633B426EBBEB070C20EC6B673D73E15D8D346BFD57363BB800FA923DBFAD</stationID>
+ <name>CHR @ KNIN-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853938AD8B980BAEBB05CA36CD796D0A1D2EA2C8D18661F2B2999485B53054DB0A318</stationID>
+ <name>Hot AC @ KTYL-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853938FE218C66E09FB8C617AAA041C1A0E3446B23A9FAD0DB1A3D3EC10C11446FBA0</stationID>
+ <name>CHR @ KBAT-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393C635C45B6E4AF1BD95105E170BC938EED0C9D52141B54A3524346B2780BE6DCC</stationID>
+ <name>Oldies @ KOOK-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539343BB99F93E1835F9334AA049007B9BEDD579C37D80108A9C5D59C3E2C6B3DDBA</stationID>
+ <name>Tejano @ KXTQ-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393F7B53307C4D94CE7E6008860981ABB8C49FEEB2C50E62434BEE50CA3755BF25A</stationID>
+ <name>Country @ KOYN-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853938F8DFAF4217B8597D7F44751769E99FC631D3C8009B3E3394050C656DCCF9C29</stationID>
+ <name>Spanish @ KLEY-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539391DAACFD07DA4B6B8812D800F96A4BCBD1533AFD05DC8139B7994E8DECB90BE5</stationID>
+ <name>Country @ KRVL-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539327CA91E32E782E913F673FA15F8643B741F488E7FFDEEE8A731146683415F3FF</stationID>
+ <name>Jazz @ KBCT-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539383C49E51954D164061CA2AE5388127442591DAC7C68E537FDD596D3C0CDD678C</stationID>
+ <name>CHR @ KIXY-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393079E05CCDF2FB8074B99C523A04822F897D9E85FDE1D6FA82596D39753454840</stationID>
+ <name>Christian @ KLTY-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853937D1BDA74CC188DAA89D2358BC36E70373651D2941A59BD727205C698D2195A01</stationID>
+ <name>Spanish AC @ KCOR-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539374AE23C92E5C308B8D3A7541D97CCB4DF42EE2F394EA08E3847A1814D9937BC2</stationID>
+ <name>Oldies @ KFRO-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393B313AFD339435CFA118F7D51784ED0B11B65FD7DC7EB426A959D580E80F9D657</stationID>
+ <name>CHR @ KAFX-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853939319F65452CA98F4F547210B5A3800203B57A84576688DF0D2CFBC97B6BDAFA5</stationID>
+ <name>Oldies @ KCKR-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539317F891625ED0A6A36A18728F7925D70FEE4081DC7F4522B76880BB456B7A0A60</stationID>
+ <name>Country @ KYXS-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853930651E341C50418898D8DF7FD63253BCFB843DACC668E71582E0978D3D21A7B6C</stationID>
+ <name>Classic Rock @ KKTX-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853932B21AF887119FA43A3D3447E23A016F6DD2DF8C7A5AA1BCDFC9E52C44D5D2C7A</stationID>
+ <name>Country @ KLLL-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539316C66B24E9091960D43C9C6BB4AFEDB51247FA643C7E788B242A9D9FC6F2D007</stationID>
+ <name>Rock @ KCSE-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393623FBDF7BA902785DAC4311E6085B970C53B75ACDBCC9452B9650DB91F86D0EA</stationID>
+ <name>Classic Rock @ KLIS-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853935A741DA2E49E2B51484DE5E77699B43A60F0AD97FEEC9AC8D3D6BD06D7992438</stationID>
+ <name>Oldies @ KMCM-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393F2CB234EDB1F9A4E101710349DCACB8AA30D02300F775819543104DAEED922A4</stationID>
+ <name>Country @ KTHT-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539396E8EF0DE19CB70367A6DB3E18648F9C922C8D6AA8A50668A4A9298DA7074473</stationID>
+ <name>Country @ KAJA-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393A6FA418C7C65F5CDA4D1A98287057871AD8002BD964BC0883AFFFE430D54D7BA</stationID>
+ <name>CHR @ KWTX-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853939D4C1601B61253DD4C051FA3829F789F636E18FAF97BDE39FB9AE34724692070</stationID>
+ <name>AC @ KALK-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393F737321B62B0C80B87A8B3EB7E5B5FFC470E43FE8C300F387ED8CB49FEA90421</stationID>
+ <name>AC @ KODM-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853934BF8D96DB118FA733DAFEDD649836DC106C4A91F38D301F334DF03CF43C558E0</stationID>
+ <name>AC @ KFQX-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539327D6791A32994EA8D7A70CAC66F4973AAFB3324ED6A61B89F2880E361DF6751B</stationID>
+ <name>Country @ KORA-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853939B28E52681CCA4CDDEFB3F9B766725C0B5137F3AEBCA6C6F15A3938C91CDCC48</stationID>
+ <name>Urban @ KBBT-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853939B989760A90BB3A00672F7C738213BB2150A17C890B7EBBFCE233E9BCB93904C</stationID>
+ <name>Oldies @ KELI-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393E8710369447E0A41CE4DBFAD800FE07572BD063580190DEE763A7FD863DD19AE</stationID>
+ <name>AC @ KODA-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853936B2FEF8E5F3C0E42B1F8A8DF70C94DD4BECAC686D04218512244ECFD81DA0109</stationID>
+ <name>Country @ KIXK-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853931DA3092D8DE4BD785B1BF6E75F2D9DA7261C5F99C1E54FC55112257718FBC987</stationID>
+ <name>Active Rock @ KISS-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539311C2434080A0E7EFCC8B7A33DDD1F90D36A5040AFF6A545A707E61F498E13832</stationID>
+ <name>Country @ KBCY-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853934DE07A0B63CF0A6AED07AD6CA9D9C3FDECFDF33E7A92D60E7C3CA1BC9CFAB732</stationID>
+ <name>Country @ KLUR-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853936C9D88460AEEE6CEBA8DE425BA5D9DEAC742BD6B54D8195147AAA40B0B4B6C3A</stationID>
+ <name>Tejano @ KYZZ-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393B84E471D7599357A257BD08BA571F982A810EF16DFA866BA3DAD325E8E37ECBB</stationID>
+ <name>Country @ KCYY-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853939E886736FC05303ECD2E7024C12B6AB4E1E5CCF1B762747E18812CEBB596CFFF</stationID>
+ <name>Spanish @ KBDR-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853930ADED2736D8716314683917024E51A2B39B55DD7CD7283EFB9B9BE0C3CB71165</stationID>
+ <name>Spanish @ KMFM-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393B88C44EC2BF630151ED3DF3CD2764AEA9D7259BFFC6BE04325D2DBE8C567202C</stationID>
+ <name>Country @ KIXC-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393C3A66D6840220AC3B05190C2A50B385B52EC30490E8504399775A304776388AB</stationID>
+ <name>Oldies @ KONO-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539305D8C3F14C53372BE8E0762DB492B4D75ECE689A401C203EDCFCE90009201E9B</stationID>
+ <name>Religious @ KKKK-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853937FFED706DE7234B17732A690C5CFCBF15EF5A73D3A73AC0EF7635874B4FA5BC2</stationID>
+ <name>Country @ KNUE-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393573AF685D5059A0970B162791C501879C3E030AD514955B96DFD0A99E627CF5C</stationID>
+ <name>Country @ KSAM-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393F95EAB91E10201748A8DA1042E7F926D0493FC9AFBBCBC07B93F0FEE19C83C2D</stationID>
+ <name>AC @ KQXT-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393A9D6585A4C75D0AEEAE3FF3CC187F8A2F65F60E50ED3FB770652AC2652CE7ED8</stationID>
+ <name>Rock @ KFZX-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853932F75C99740C3870C6AE2F7D9DA2F5A20628CE7CF7517C741C57F0A9D12EC4A9A</stationID>
+ <name>Country @ KWFS-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393A9EC8EFA521F9FD525227AFB2A3763D1E267DCE63D31BECB4D5839CD2A014EBA</stationID>
+ <name>Rock @ KBRQ-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393A44C74E5677448B1DB5E268DAECE515B1577AA40D2AB66359CE213D24C5CF317</stationID>
+ <name>Rhythmic CHR @ KBLZ-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393D6C829FF4D95E2C6CE7318E8C06A43A5679F4DE38DB1EA7C89827095A3E7AB59</stationID>
+ <name>Mexican @ KLTN-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393E5173A262D0A8CB2616C82C943A359281C23998AAEEDC162982A360A023D9697</stationID>
+ <name>Country @ KKCN-FM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539322FF3188930FAEAC8A58A1AE2CFCC07CD466E01DB1B8689480BA2C435317874F</stationID>
+ <name>Country @ KJCS-FM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853932F14DD244BC313A7A645CC87D60E8261C01E044C667E5A5A0D8EA999780BE530</stationID>
+ <name>Mexican @ KAMZ-FM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393BDAB14A9A5E09F1CD4F0C7991FE049EB1885BEE6BBE67F06AED94F3CFA85FB57</stationID>
+ <name>Country @ KVST-FM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393827B756F5636972FB4391C473161A66632B4D8DF9FA059A5250E9506F5A5C0E5</stationID>
+ <name>Alternative @ KXCS-FM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853931E2CF252C42F5CF9A59FDD0D9F82C59669380A5BDCFFB17EF1D1C98F24234DEA</stationID>
+ <name>Country @ KWOW-FM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393196B0F58DD60A8802A2CBFAEA891FA5AD777221B36885320DAC5B491BC78CE3B</stationID>
+ <name>AC @ KLZK-FM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539325062E62A6147C7202701DCA3ED8CEA172D7F657E9BBFF712439149334EC47C7</stationID>
+ <name>Classic Rock @ KZEP-FM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393CB68144C76FFF60F9D701D85CCD0AED208D108BFE25C0261D4D783BA86782AB3</stationID>
+ <name>Classic Rock @ KYYI-FM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393B20D3BF47153D65A17269B997DE4C01A58390929EF5A70308D3A862606AB6C34</stationID>
+ <name>Country @ KBUK-FM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853935DB8EF5DC491B02702344DD18D0EE4417D3AB64846DE3614E78288EEDA691692</stationID>
+ <name>Hot AC @ KSMG-FM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539367AE440A410E38E18FB3D4A2C06690BCF1ADF263CB426E0A67E76ECF9F60FF90</stationID>
+ <name>Hot AC @ KPLV-FM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393795D8DC7C9D794E031E02A798D0F3B5DF78E25AE583710591481EFB44E9125FE</stationID>
+ <name>Country @ KYKX-FM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853937BEF9170D2CD1322AFB2CB21C306D593DF14EDC9A0A07B8C2D3848792EF1D2DD</stationID>
+ <name>Oldies @ KFMK-FM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539332B686D0A848DA41298F1A3975724A9A23F1CE02124F9D59A012ED8C09186501</stationID>
+ <name>Sports/News @ KNFO-FM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853930CDB03B0FAB3CABAB545DAEB135317FC6C001BD369A296C6934F7E313F4F94B0</stationID>
+ <name>AC @ KTLT-FM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393C577F30829E4A5333903399ABB92059802F9D801CB9DDD8D5C125407CFC4836D</stationID>
+ <name>AC @ KOOI-FM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853939FEF5790BFB2E04C9E95346254DF3D359C0BC8ECAB3B28C9DD52F0C1BA25C4A7</stationID>
+ <name>Rhythmic CHR @ KCJZ-FM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853930A8A293835F7DD467E16E90C4A8EEF410E5487F68636FC89EF5076E4971EAB20</stationID>
+ <name>Classic Rock @ KLUB-FM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539371DFF06BBFCDD1502F53AEE2E9B2671701AEAF312F1549C5E2A8C2D4C82CD931</stationID>
+ <name>Spanish AC @ KDXT-FM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393258A4B53CE2EEDD21BB667404FAC4EBFD7E43F2AF9F0819A327391C322CC43F9</stationID>
+ <name>CHR @ KISX-FM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393AAC39D60BB703FD10B8A66B7C02273E45A7FFD3A8769EB92183E99FAB5ED40B3</stationID>
+ <name>Hot AC @ KWKQ-FM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>107.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393DC3A79077D959C236AAD124A99A11514F6D64C8183AFB20B2528E67D50731956</stationID>
+ <name>Spanish @ KCTM-FM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853939267EF714B69D763DB4F1599A3F800D30D9A246FC6B9604F3D5A93D821455585</stationID>
+ <name>Tejano @ KXTN-FM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539364261F7F48D3CC43FDBDEF4A852DB25C0894F2DA6A92DB7502CAEF4A1B6675CF</stationID>
+ <name>Country @ KIXS-FM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853937925B2FAD83398BF2B14C462F0992957927C3B49C84A4D22E490471907C3BA17</stationID>
+ <name>News/Talk @ KTSA-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>0.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393A8C9F6F7D26D7B07E1FE545B8FCEA6F0D0E6288D725C672E6911DD195617C468</stationID>
+ <name>News/Talk @ KLVI-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393F3C29C994D9EC1656ACE457BC4D5B032900A16335A16BA947DFC1AC4DAAAF034</stationID>
+ <name>News/Talk @ KLIF-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>0.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853935149752F432E61E5FACDF93A25169E2C3A37D011B360563097B37677C98A2082</stationID>
+ <name>Nostalgia @ KRFE-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>0.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853936EAD33072E3E51161E1F09B33342C0C3DE1DC84D520E37252DF4710DC43FB9A5</stationID>
+ <name>News/Talk @ KLBJ-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393EE2E08094DC7F5C188D61029DD8BA570DDD31A1404EDBE64C5FF6A58807014DA</stationID>
+ <name>Sports @ KILT-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853936DD80BC58EF6EF1AEA3550F22DE5F63A86CAAC9D3A5742BDD32800D4F2F93B7D</stationID>
+ <name>Childrens @ KMKI-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>0.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393D06152C8A0AD35BEBCAC2BC6BC256605C96B78A713FEC8A1C28344F8BEFC1F2A</stationID>
+ <name>Religious @ KSLR-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>0.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539376F10572AB853624FEB7C5A31CD7F88C411A80640EE20C8AE8F126AE716C4C82</stationID>
+ <name>Business @ KIKK-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>0.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393E1CFDB1D78246DBA4591CD928D6F0A7F6A59A3EB780EAE620C36B0733A576972</stationID>
+ <name>Religious @ KSKY-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>0.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853930C02AFA20FF8B80E9D032DA5EF8B0B3275F55E24E108E84EEA4ECE9DFFA31CEB</stationID>
+ <name>Country @ KKYX-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>0.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853938322EF17408CADF571701ED214411A9D5462B63A41167B6C31BBBA9DE3CB37F8</stationID>
+ <name>News/Talk @ KTSM-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>0.69</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393AFF2454109B25A958813054F251CEAB6C0930D54C331E413281742CF1DCA3B75</stationID>
+ <name>Nostalgia @ KSEV-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>0.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393F0995F0A4C2BE608A50C161169C78A86698CBDEE19ED347259960C448C8CED33</stationID>
+ <name>News/Talk @ KURV-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>0.71</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393C0B31DF5F30D1B46706DD2CDA47EB40697BB560A735669CFB15466F87385C93C</stationID>
+ <name>News/Talk @ KTRH-AM</name>
+ <shortname>104</shortname>
+ <icon></icon>
+ <frequency>0.74</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853931208D362567A88FC83ADEB4B3CC606AD07F8FE6DDD00D37B3551BBC243D5F515</stationID>
+ <name>Spanish @ KAMA-AM</name>
+ <shortname>105</shortname>
+ <icon></icon>
+ <frequency>0.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853931EF3A0209BD6EC2D80A3ECB9B9279AAB3D3F1A9C69795499C147BCE47547D1E3</stationID>
+ <name>Sports @ KTKR-AM</name>
+ <shortname>106</shortname>
+ <icon></icon>
+ <frequency>0.76</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853939F9B49F0C4A7CA03709DA8EEDA7E95E9C146EAC3B1796D87D0E5D720DCF1A208</stationID>
+ <name>News/Talk @ KFYO-AM</name>
+ <shortname>107</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539326ABC5814E6C6CAE9DE162B3DF58A1273676126BE0F038D8496E715CD2DF2A97</stationID>
+ <name>Urban AC @ KSJL-AM</name>
+ <shortname>108</shortname>
+ <icon></icon>
+ <frequency>0.81</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393966378DEB12D5DCFAB0401DA63608095C218517CF4DF9F417CC0B05DD964435E</stationID>
+ <name>News/Talk @ WBAP-AM</name>
+ <shortname>109</shortname>
+ <icon></icon>
+ <frequency>0.82</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539306C45A5A5FAAD5EF38DEED8999335F1330A33092C6DAD8B889DF56C0162D97A9</stationID>
+ <name>News/Talk @ KVJY-AM</name>
+ <shortname>110</shortname>
+ <icon></icon>
+ <frequency>0.84</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539362FF79A0BEB7A8118AA07270F47808C630426E51646102AB4C9B91FCA8D11445</stationID>
+ <name>Spanish @ KEYH-AM</name>
+ <shortname>111</shortname>
+ <icon></icon>
+ <frequency>0.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393509F6CFFC822B44CC42D78B4B77CDB8F4923A599747C28FCB9D38A4647F4C64D</stationID>
+ <name>Oldies @ KONO-AM</name>
+ <shortname>112</shortname>
+ <icon></icon>
+ <frequency>0.86</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853934B3288A0984F5DFA749BCB3E530361F25D9C0CAD9C95CC3924FCC5A6BF0BEC8A</stationID>
+ <name>Ethnic @ KREH-AM</name>
+ <shortname>113</shortname>
+ <icon></icon>
+ <frequency>0.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853933FEC8A6D987EBFEF6DE68F8C60A3AA7D46B6FC7695777B93EF89963DBA1C9EFE</stationID>
+ <name>Country @ KNAF-AM</name>
+ <shortname>114</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853937C24A27670B80EA5E79CB69BD7E9AEF8A1FBBBDCCDB888920D9CAA9A150E5059</stationID>
+ <name>Nostalgia @ KLUP-AM</name>
+ <shortname>115</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539306325BC5BB54A094CBDE3A99FCAE22D84326B7E0C772D37156FE6C468788CA63</stationID>
+ <name>Nostalgia @ KIXZ-AM</name>
+ <shortname>116</shortname>
+ <icon></icon>
+ <frequency>0.94</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853930B693CCA9A4A1003F96592529107E43C15E4F7996BAFCD1C1DC5A4877452C74B</stationID>
+ <name>News/Talk @ KJTV-AM</name>
+ <shortname>117</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853931C0EC06FB28FA78B06CE4F2B8996F52E7C4AC0C635EDEE30130DBB855DF0D04F</stationID>
+ <name>Religious @ KIXL-AM</name>
+ <shortname>118</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393E0E9412D3CEA701954096A08EA97D82BBF5E48B47D0E700695412FD044DBF3E0</stationID>
+ <name>Spanish NT @ KRTX-AM</name>
+ <shortname>119</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393022CF703F4ED89F1FA117851CE856AC7F7AB3E62B85E2A1DDD1B1E6234FBE91F</stationID>
+ <name>Christian @ KWFT-AM</name>
+ <shortname>120</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853937208A8ED11F763CEE2583E26E7A34585E37E9DF4A966C8B18C18AFF361D387E2</stationID>
+ <name>Spanish NT @ KLAT-AM</name>
+ <shortname>121</shortname>
+ <icon></icon>
+ <frequency>1.01</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853935ABC6A98022015A709093AECD5741C68B4566E4A7B27A215383D865E9658F22B</stationID>
+ <name>Christian @ KIJN-AM</name>
+ <shortname>122</shortname>
+ <icon></icon>
+ <frequency>1.06</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393BE4A55806291A32BF5A4FF9C2B6035F55D8B65CB12F0435EA658792085B15741</stationID>
+ <name>Religious @ KKHT-AM</name>
+ <shortname>123</shortname>
+ <icon></icon>
+ <frequency>1.07</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853936291581CA3D5C63E31BBA336DDE52B642009F313CB517BA1CDFBB382E12E3627</stationID>
+ <name>News/Talk @ KRLD-AM</name>
+ <shortname>124</shortname>
+ <icon></icon>
+ <frequency>1.08</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539335212EB1B43F80044E084097679F01A589148DFE59C0D9D4FBFE13EA39FA8A40</stationID>
+ <name>Country @ KKYN-AM</name>
+ <shortname>125</shortname>
+ <icon></icon>
+ <frequency>1.09</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853936ED75FCEAFF1B45ADE9BD088C3D3428FEC9DD253B499B0BAE00EEAC0F2F90AA4</stationID>
+ <name>Religious @ KDRY-AM</name>
+ <shortname>126</shortname>
+ <icon></icon>
+ <frequency>1.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393C82490C046E06B21FF02A0169882646963229B3C3E73E839F98267E5A0A4B0D1</stationID>
+ <name>Ethnic @ KTEK-AM</name>
+ <shortname>127</shortname>
+ <icon></icon>
+ <frequency>1.11</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853934A4C05F50A308ACA3F2F6FBAB827A12EA2A77439692B078A82109F59EEECD811</stationID>
+ <name>Nostalgia @ KJSA-AM</name>
+ <shortname>128</shortname>
+ <icon></icon>
+ <frequency>1.12</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853939C27171D257EDE817C67939FE4F0DD87A24C46814D35DEFB0BD7613845D5BF2C</stationID>
+ <name>Sports @ KZNE-AM</name>
+ <shortname>129</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853936D279DEE00267395925A33D35A944805D68803B5738B7CE13F56BDD48EA27565</stationID>
+ <name>News/Talk @ KENS-AM</name>
+ <shortname>130</shortname>
+ <icon></icon>
+ <frequency>1.16</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393AFB3EF7155386A62397211576535AAB74CAAEC450234E5D9E041E731C8C00C4B</stationID>
+ <name>Sports/Talk @ KFXR-AM</name>
+ <shortname>131</shortname>
+ <icon></icon>
+ <frequency>1.19</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393457AF78CDF440AF159C2C265F7F9D97252AA0439D9B4FBFD03C0424B20A51717</stationID>
+ <name>News/Talk @ WOAI-AM</name>
+ <shortname>132</shortname>
+ <icon></icon>
+ <frequency>1.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853936314CF99EE6F17CC039ACE6362DDBB871ED51C4FDB343D2B16D12B2013E8F53C</stationID>
+ <name>Asian @ KZEE-AM</name>
+ <shortname>133</shortname>
+ <icon></icon>
+ <frequency>1.22</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539373C5284C463A702C4B53B956DDDF2D1DB631875905A398271267CDE6E3C21FEA</stationID>
+ <name>Childrens @ KWTX-AM</name>
+ <shortname>134</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853933C33FCEFD4F4D65AA5C56DBD23A448078D2C4D85898BFBF3DBD1733C1CB0860D</stationID>
+ <name>News/Talk @ KSOX-AM</name>
+ <shortname>135</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539377FF7D38D9E0173798DE5B9D7FEBCCB2F743D4CDEC3C4502DC648AE78EA2FC4F</stationID>
+ <name>Spanish N/T @ KZDC-AM</name>
+ <shortname>136</shortname>
+ <icon></icon>
+ <frequency>1.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853939A5797879607AF3574B77F053FB58E947840C9CE9D9ED82F6D3EC456933B4982</stationID>
+ <name>Spanish @ KSML-AM</name>
+ <shortname>137</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393338E8DBA991B1F8A62A55C8BE504AADE1D793FCB76BB0FD3385639CEE3D0C6AA</stationID>
+ <name>Mexican @ KESS-AM</name>
+ <shortname>138</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393E8F358B81008F9E32CDDB1453CF87A157AC368C260B16D3451E955D16E83ABD3</stationID>
+ <name>Country @ KWHI-AM</name>
+ <shortname>139</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393DD26F7D0CD6D11EE91AEDFB2FD98DC28ACF4BF75507A93069767A5C0441458E4</stationID>
+ <name>News/Talk @ KWFS-AM</name>
+ <shortname>140</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853930520149A191F16912320DF5CE1A117A7463EB0D0785E6FB89C8F45E73DE7372C</stationID>
+ <name>News/Talk @ KSET-AM</name>
+ <shortname>141</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393594BD99D8609C68F05A1F42FFFD968841B4E69D0A05F53B36AF66A4773B5D312</stationID>
+ <name>Tejano @ KXTN-AM</name>
+ <shortname>142</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393B5CA87CA047C766C1DC1646DCF6D5B2104FD6B5F07D17C8F049BE6BD8FD42710</stationID>
+ <name>Oldies @ KLBO-AM</name>
+ <shortname>143</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853937EA28F3D6BCFDFF211E289618580D011CB68346BDC4DD10E6EB8CCE867876731</stationID>
+ <name>Nostalgia @ KHLB-AM</name>
+ <shortname>144</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853935C69E586B44C4EFB80CB8B224246ACC5DA83E0059426BA96997DBBC0C4F54F35</stationID>
+ <name>Spanish @ KCOR-AM</name>
+ <shortname>145</shortname>
+ <icon></icon>
+ <frequency>1.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393784404A1F9627966CC67522B1DAC3E4B2AFBE19EC3ECC148F5A3244AA5E0277E</stationID>
+ <name>Religious @ KWWJ-AM</name>
+ <shortname>146</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393E42A67C6F0A0CF55DCDBFB89672ADCEABB82310520E6F7AC0876AFC32D723D16</stationID>
+ <name>News/Talk @ KFRO-AM</name>
+ <shortname>147</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393AA412F6206A42FCFE70B9322F2278DBD4617BDEC272C81352298BAFBAD19AE41</stationID>
+ <name>Classic Hits @ KRCM-AM</name>
+ <shortname>148</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853931FD8D74221AA600972ACEC585F22C1FC7D8B94716BB09EE2049283AE9F015967</stationID>
+ <name>Country @ KBEC-AM</name>
+ <shortname>149</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853933FE8A9389760B4425C4052281F4676ADCDB466E6F0509764662FD417B9AD13D6</stationID>
+ <name>Country @ KEBE-AM</name>
+ <shortname>150</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393FD1444999DB27BC36953977B1E8DF6BB81504169FC2760DACF9BDD59F1E9CB84</stationID>
+ <name>Religious @ KLVQ-AM</name>
+ <shortname>151</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539376BC8441D216F32AD025AD5969B6B66CC89A6530528C475E58FDB0890287B4CC</stationID>
+ <name>News/Talk @ KGNB-AM</name>
+ <shortname>152</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853934AD6A8ADB89962FC0B66A5BC8441895BDB1E598EE757B6B4DDD0D9620248238F</stationID>
+ <name>Spanish @ KTNO-AM</name>
+ <shortname>153</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393E84F1F7BDDD295280BE139535627A0E21E4524EFE10F6D038127C4580768CC7A</stationID>
+ <name>Country @ KMBL-AM</name>
+ <shortname>154</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853939F81B29E421ED3CCE7025B867263EC6990C9AF038F364C178198ED1ECCBC447A</stationID>
+ <name>Country @ KBRZ-AM</name>
+ <shortname>155</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393041EBAE471AB128040C64236C320FFBE39C18D426B7E599380BF15D0C5A32C05</stationID>
+ <name>Country @ KSLI-AM</name>
+ <shortname>156</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853937D9C0C3C2EF4803CBC4FD5BA300CAC44FD8F415D1F42A00BB486C705C55D0A37</stationID>
+ <name>Gospel @ KCHL-AM</name>
+ <shortname>157</shortname>
+ <icon></icon>
+ <frequency>1.48</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853932FFD162BD45A698134B61974851534887C235704481466A79CDCEA292F2C6FA3</stationID>
+ <name>MOR @ KWUD-AM</name>
+ <shortname>158</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853933B3732BC74221402153E3EFAADF840F79A761F32829B6F20B74BB5EB42F00EED</stationID>
+ <name>Spanish @ KGLF-AM</name>
+ <shortname>159</shortname>
+ <icon></icon>
+ <frequency>1.51</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393C8A97431AA4E44624483C89A84FD8EA114B8BB64E633F6522824E8FD3363BF96</stationID>
+ <name>Sports/News @ KGBT-AM</name>
+ <shortname>160</shortname>
+ <icon></icon>
+ <frequency>1.53</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393504AB07A51ABFB94DF9D4D5EA72EC341E6FE4633CA55128C88CD119D7408BF2B</stationID>
+ <name>Spanish @ KEDA-AM</name>
+ <shortname>161</shortname>
+ <icon></icon>
+ <frequency>1.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539301628C661AA97CF8DEE8D358C9A9A4AFDC145556C0CE347E8DA58CB2A375AC02</stationID>
+ <name>Country @ KAYD-AM</name>
+ <shortname>162</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393F1A0A2AD4760C046E6F48BFE4FAC921883A5DEDCDA8D6E554D83B1D59FA4F66D</stationID>
+ <name>News/Talk @ KZQQ-AM</name>
+ <shortname>163</shortname>
+ <icon></icon>
+ <frequency>1.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539336041868D9297A10AACFE01A38FDE26BA1C51B4857E8CF9A6DD7523E3CE736F9</stationID>
+ <name>Nostalgia @ KPYK-AM</name>
+ <shortname>164</shortname>
+ <icon></icon>
+ <frequency>1.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393DE797D876EDC65503516EA341E3194C6ACDB07A37E1484602835E79967346DAA</stationID>
+ <name>Country @ KWED-AM</name>
+ <shortname>165</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393B7AE020543772F9E9F51E0C240FD96B46A671C0022120A1E4CF2307B9600C0EA</stationID>
+ <name>Oldies @ KDAV-AM</name>
+ <shortname>166</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393135D210BD8BA09C226B6A45BC4233EF57CA86D660CF9757A37C9F2D001EABB99</stationID>
+ <name>Country @ KOGT-AM</name>
+ <shortname>167</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393C0C9F771F397786A3FF0C6F6B7EDDD9859A234A14CDB8C226182126D60BD0F71</stationID>
+ <name>Sports/News @ WTAW-AM</name>
+ <shortname>168</shortname>
+ <icon></icon>
+ <frequency>1.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539300BB429477E31E1E9F1BC9A6FD165D0333D593E0BC9C75575D85E0EDF1B0E725</stationID>
+ <name>Sports @ KTBK-AM</name>
+ <shortname>169</shortname>
+ <icon></icon>
+ <frequency>1.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Texas_am.krp b/kradio3/presets/usa/Texas_am.krp
new file mode 100644
index 0000000..bf79e54
--- /dev/null
+++ b/kradio3/presets/usa/Texas_am.krp
@@ -0,0 +1,654 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Texas</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853934B68739A74E8EB4987928A6CAEF85638FD7ABDE1CA6830162380A25D89F3BED8</stationID>
+ <name>News/Talk @ KTSA-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>0.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853931C507C8A5E8E6DFCC3268CC6191992E25D44A54EBA9E1FC05E13D766220E5F49</stationID>
+ <name>News/Talk @ KLVI-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853932614E2A9804D5866A4FDD4F54F89ED1B4C47B94F7598519D0795746B0914A7FE</stationID>
+ <name>News/Talk @ KLIF-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>0.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539398DCE2091D344B42E12A00E6214BD0D828B5D4F23A74E779148BA02CAF72E349</stationID>
+ <name>Nostalgia @ KRFE-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>0.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539328540F1C5489BDB20F1270909E54FE5ACD98571F81C717D74DE27F01EE2276F2</stationID>
+ <name>News/Talk @ KLBJ-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393DA73B7961FCEE62F6705B005718A80A6FC0EB48F11B697FB9787C0CEC217B3BC</stationID>
+ <name>Sports @ KILT-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393E8575A86B98B8BB1DF32D22450CF3B90E088E6BE4047E8F6A771CF0EB97D4DF3</stationID>
+ <name>Childrens @ KMKI-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>0.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853937B9B949074A75C447C878B5716731383C5C4D412EF57FAB635F52D1C47105637</stationID>
+ <name>Religious @ KSLR-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>0.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853938FDBDAB6C7BCB2826CA169E6BBD426E7A5F9C0E06027AACE511BEE24CB71A14D</stationID>
+ <name>Business @ KIKK-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>0.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853937326529410411F6A6F75E4DB102FC1D7A0FC0134B142B5791963127D1E3D630C</stationID>
+ <name>Religious @ KSKY-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>0.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853930D9A8082661726C7C09877936867382C2D28A642175A61021D2DCFBB99D80B72</stationID>
+ <name>Country @ KKYX-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>0.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393663981A145DD94EAEE6A06B3899AF030B55E399BA149622DDDD3C206DFB1B7D7</stationID>
+ <name>News/Talk @ KTSM-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>0.69</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393AF701F2BA6945672948D58301F3816E6DAE0EACBE7D82F82B3D1D047199C22F9</stationID>
+ <name>Nostalgia @ KSEV-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>0.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539351F882DCB5673458E5C68ED7820072762E0AF92EA499DDB54C00D36DA8EE8F75</stationID>
+ <name>News/Talk @ KURV-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>0.71</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393B698C39EF53663F89D3920371E7B8F26749A577E09E10E8FDD020CC1472B6A47</stationID>
+ <name>News/Talk @ KTRH-AM</name>
+ <shortname>104</shortname>
+ <icon></icon>
+ <frequency>0.74</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539381CFDBD6C54EA868B1657D92617785F5F8A0FF6EC00F8A819DEA67266E2D2F5C</stationID>
+ <name>Spanish @ KAMA-AM</name>
+ <shortname>105</shortname>
+ <icon></icon>
+ <frequency>0.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853936F38129656C3F589EBE32A54BB2C121171DE866CAB417D650C1DECBA697B64A8</stationID>
+ <name>Sports @ KTKR-AM</name>
+ <shortname>106</shortname>
+ <icon></icon>
+ <frequency>0.76</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853939315DE48944D4BDD4832B2A506493728DCBDA31F99964D766AE0073960F5C9DE</stationID>
+ <name>News/Talk @ KFYO-AM</name>
+ <shortname>107</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853936516841F6902A233B7C6A9745E0B9D5A3600C1E30D523037E8F1CB9338D468AA</stationID>
+ <name>Urban AC @ KSJL-AM</name>
+ <shortname>108</shortname>
+ <icon></icon>
+ <frequency>0.81</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539359D5F596DF5647C380F45251DED1CBD223F32DE4B294D90554FC7C5E395E9F95</stationID>
+ <name>News/Talk @ WBAP-AM</name>
+ <shortname>109</shortname>
+ <icon></icon>
+ <frequency>0.82</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393528CC98C56B9ADC2158B9821ECF3DB809CDE2B3A66362F4C5591CFD63EB91CC6</stationID>
+ <name>News/Talk @ KVJY-AM</name>
+ <shortname>110</shortname>
+ <icon></icon>
+ <frequency>0.84</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393CAAC3B700E2B933691BD2C454E8C8A3D2049A3269AE0B71C298B5BA038AF655F</stationID>
+ <name>Spanish @ KEYH-AM</name>
+ <shortname>111</shortname>
+ <icon></icon>
+ <frequency>0.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393C1B51CF9F570B8D20E75E3D983784A7F9B5572ACA6E1EEC3353D7AB323419B38</stationID>
+ <name>Oldies @ KONO-AM</name>
+ <shortname>112</shortname>
+ <icon></icon>
+ <frequency>0.86</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539337B67A59F44EDA496AE51C1FA13D48462B0FFD81405073BAEC4C8A3CBD24A25E</stationID>
+ <name>Ethnic @ KREH-AM</name>
+ <shortname>113</shortname>
+ <icon></icon>
+ <frequency>0.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539328CEB6F2EC9838714950432BAEABB40B34BB775E5C14724D35BF738690F49713</stationID>
+ <name>Country @ KNAF-AM</name>
+ <shortname>114</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853930511C936F4A61478C90549901404AF3B16A4F59CE98C51658F56EDAE18358100</stationID>
+ <name>Nostalgia @ KLUP-AM</name>
+ <shortname>115</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853931E4F97F9A172E30BBA1CED5DB8DF22E2F7A22A2D121498455B63C4FBC10740EA</stationID>
+ <name>Nostalgia @ KIXZ-AM</name>
+ <shortname>116</shortname>
+ <icon></icon>
+ <frequency>0.94</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853933291B9F96E776696B611658FC43A9610F490A9557FFEDB9D5FCA5EB8C4202240</stationID>
+ <name>News/Talk @ KJTV-AM</name>
+ <shortname>117</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393C1FF6EDFA42278703FACD6BEBEF6A64965C3DFFA8DE08CB5C9E2FCB61EFABFBB</stationID>
+ <name>Religious @ KIXL-AM</name>
+ <shortname>118</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393CD2A9A8F02F6FFFA5DFE8A27E2BC00967F1A1FD32416018DC084DD44AF6647F7</stationID>
+ <name>Spanish NT @ KRTX-AM</name>
+ <shortname>119</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853938EED10C571493959B034CB10158FCCF32434A61EDFAF5C0198F561530D6B620C</stationID>
+ <name>Christian @ KWFT-AM</name>
+ <shortname>120</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393C2EED776CFF7DA0CAA87F7BEB3A849701BE0C5C4B21DDD074A0DD4C3A9D5EDF6</stationID>
+ <name>Spanish NT @ KLAT-AM</name>
+ <shortname>121</shortname>
+ <icon></icon>
+ <frequency>1.01</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393016B5DD46A3B8DECF045A5173CD457042F8E3A0D0FEEA06C7776E75F2BA0D29F</stationID>
+ <name>Christian @ KIJN-AM</name>
+ <shortname>122</shortname>
+ <icon></icon>
+ <frequency>1.06</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853936AD53C3DC12C1AFD27594CEC0B1367C6F504D4A3D1A128644003E8A1DE0F1BE6</stationID>
+ <name>Religious @ KKHT-AM</name>
+ <shortname>123</shortname>
+ <icon></icon>
+ <frequency>1.07</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853931094C654A7041D994A8100CBA6454100F85886340F4ED8297BBA7FD510D1F513</stationID>
+ <name>News/Talk @ KRLD-AM</name>
+ <shortname>124</shortname>
+ <icon></icon>
+ <frequency>1.08</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539356FE1373BC7F4A4EC52669F58C23F97B7E90958F61E1634216D9065DC428E2B4</stationID>
+ <name>Country @ KKYN-AM</name>
+ <shortname>125</shortname>
+ <icon></icon>
+ <frequency>1.09</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539352075E33546291507A739F05224858CD8D32B673C8B51B18B8C75D309481542D</stationID>
+ <name>Religious @ KDRY-AM</name>
+ <shortname>126</shortname>
+ <icon></icon>
+ <frequency>1.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853934AE911F5284D935A70B14D6F94EA4D2B58FD024AC62F6490A42D38CEE2908192</stationID>
+ <name>Ethnic @ KTEK-AM</name>
+ <shortname>127</shortname>
+ <icon></icon>
+ <frequency>1.11</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853937C6A20DA818B3FC7032DB5C822483EF55AF3D6497AB44458C07BF16C79C3CFA3</stationID>
+ <name>Nostalgia @ KJSA-AM</name>
+ <shortname>128</shortname>
+ <icon></icon>
+ <frequency>1.12</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393BC21163A5FE9CEF6596DAAE0ABF03AF240C77884DF17D471382EBF39C742F359</stationID>
+ <name>Sports @ KZNE-AM</name>
+ <shortname>129</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853932688EA7C1B3E34CC11ED5A12CC398A33D0033DCFEC066365597B209E7C85FBC8</stationID>
+ <name>News/Talk @ KENS-AM</name>
+ <shortname>130</shortname>
+ <icon></icon>
+ <frequency>1.16</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853933064486FDF0CDC7568100714F0D9EEE6CB527431C8679F4937AD6863564684C2</stationID>
+ <name>Sports/Talk @ KFXR-AM</name>
+ <shortname>131</shortname>
+ <icon></icon>
+ <frequency>1.19</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393BA40C0CD5A7DF4E5F8DBDF21867AAA5519ED1B992BAA85E3A1B93507F3F38FA6</stationID>
+ <name>News/Talk @ WOAI-AM</name>
+ <shortname>132</shortname>
+ <icon></icon>
+ <frequency>1.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539348900160E0829D51E07398E337C3ED11769C5BE5E30A007B8C1C142D45270D22</stationID>
+ <name>Asian @ KZEE-AM</name>
+ <shortname>133</shortname>
+ <icon></icon>
+ <frequency>1.22</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393949DC0ECE657CBF6A1669BB12C22B8FC4E1A059D63A52B647A1AB8CAC9ED765F</stationID>
+ <name>Childrens @ KWTX-AM</name>
+ <shortname>134</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393A6D996DC86912F81ADA710FCF1375CF43AB70BB8D2FA8A8D15FCE5A3D4D22623</stationID>
+ <name>News/Talk @ KSOX-AM</name>
+ <shortname>135</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539335683D25C312161DC6F524B1C89A8FA350263C9D1FDE422858A4FC18723344E7</stationID>
+ <name>Spanish N/T @ KZDC-AM</name>
+ <shortname>136</shortname>
+ <icon></icon>
+ <frequency>1.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393D89E81D9BDFACF35E7220363E1A1B5CDFD4D29767542B50CF87CC3C85E6BA7CC</stationID>
+ <name>Spanish @ KSML-AM</name>
+ <shortname>137</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853937FBAB86BEA973813D5BE60A34FC974B3CFAFCC08F9E03E4A6E09A13E5565C044</stationID>
+ <name>Mexican @ KESS-AM</name>
+ <shortname>138</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539396F6B93DBA78D03EA56B46C5C0DEF6FB53885D679B3FE9CA6A10154C12DBFDA9</stationID>
+ <name>Country @ KWHI-AM</name>
+ <shortname>139</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539354AD58580A2312B6F306D9F44F7277EF787FC567C1A700EDF53AEEFD1A9352EA</stationID>
+ <name>News/Talk @ KWFS-AM</name>
+ <shortname>140</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393929462378D2216481E35B62F39E262794EF2D88E85E070727E87BCF94668FEDD</stationID>
+ <name>News/Talk @ KSET-AM</name>
+ <shortname>141</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853933BC03275D280047D142E3BFD04559845284AB1F78D5E83E4883C0DA88236C4D1</stationID>
+ <name>Tejano @ KXTN-AM</name>
+ <shortname>142</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393933F12DD2D579816FD0BF51D13C20EAEE44EF4928DA32E4730A9987BBE0D1D78</stationID>
+ <name>Oldies @ KLBO-AM</name>
+ <shortname>143</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853931F1778C19D7A1BCD64079B3C2F789C3CC8B6D806BD981F3EFEEFE8B81749F27B</stationID>
+ <name>Nostalgia @ KHLB-AM</name>
+ <shortname>144</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393CD38E15405CEFC2507FFFB898E0F0DBE3A0DC7D3685D0210F3E89127CC5CC9A5</stationID>
+ <name>Spanish @ KCOR-AM</name>
+ <shortname>145</shortname>
+ <icon></icon>
+ <frequency>1.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393721C14A44DE2A46CC90FC534ED68DD5DB5C33E6C4679752C53AC1B00A09DB47C</stationID>
+ <name>Religious @ KWWJ-AM</name>
+ <shortname>146</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393974EF3931DC98C16CDEA64B1C86536ECA1053A080901A2EE8E28BFEF7137FB6C</stationID>
+ <name>News/Talk @ KFRO-AM</name>
+ <shortname>147</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393EB41B17B26C2528B135928D9178412A3B5574EF7759480F8F365047BA88D89FA</stationID>
+ <name>Classic Hits @ KRCM-AM</name>
+ <shortname>148</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393736985F4434F4585FB6097E35BB2E097CB645B793FC564969551D4F3DFE447FC</stationID>
+ <name>Country @ KBEC-AM</name>
+ <shortname>149</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393123A85D35E147F210DB71AB89D1DAA7D90DA266B306AF3FBD58265F6987CABE2</stationID>
+ <name>Country @ KEBE-AM</name>
+ <shortname>150</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539311055F9990A109A74ABF12B4CBC1E82251BD5596F22050D24B8A2109EA9F08C0</stationID>
+ <name>Religious @ KLVQ-AM</name>
+ <shortname>151</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393EEA85E781E8E3B5B23235B4DECA9DEB637948D8DB05CA0C14EF47484875639A6</stationID>
+ <name>News/Talk @ KGNB-AM</name>
+ <shortname>152</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393C7C17F56B7ED09B0217F741C3CB8707676CE5BA527C8148A742ABA25776E3E17</stationID>
+ <name>Spanish @ KTNO-AM</name>
+ <shortname>153</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393837677CB7B38671C5A56DE9F16E3A1B6CDCA9E57D712EB06C10BAE791A63BF58</stationID>
+ <name>Country @ KMBL-AM</name>
+ <shortname>154</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539342734E22B1D8D66C3E741D3974D8D4711C60EFADDC8E7B0EC7BC2CFD536500CB</stationID>
+ <name>Country @ KBRZ-AM</name>
+ <shortname>155</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539380397BC97DD47CF5AE7BBF2740603C0112DB438A67484F8AB59CD3D73D209AB8</stationID>
+ <name>Country @ KSLI-AM</name>
+ <shortname>156</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853938EA8379AD917DBE70EB85A4EA1C533C9F53A20A04447AAE860FAB50EF1DBF537</stationID>
+ <name>Gospel @ KCHL-AM</name>
+ <shortname>157</shortname>
+ <icon></icon>
+ <frequency>1.48</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393CE9F067180B999128DAB5E5ABDD17673C6F8D9D318278163EF113263E66563C9</stationID>
+ <name>MOR @ KWUD-AM</name>
+ <shortname>158</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393240F729DD05632C9929EA9E821229859EB4B48841AD9C1F15AA5FB79468DB3B1</stationID>
+ <name>Spanish @ KGLF-AM</name>
+ <shortname>159</shortname>
+ <icon></icon>
+ <frequency>1.51</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853936A3DAB7A02E252B64FF9DC3942ACF2E419D491B093D0462DA57158E516A4B054</stationID>
+ <name>Sports/News @ KGBT-AM</name>
+ <shortname>160</shortname>
+ <icon></icon>
+ <frequency>1.53</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393332397466DF6AFBD7C80625C0227B8285C3442472107EB5C4871CD9270973C45</stationID>
+ <name>Spanish @ KEDA-AM</name>
+ <shortname>161</shortname>
+ <icon></icon>
+ <frequency>1.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393FAA865A369F61214245C04FF711326379EFA59E9E1226298FAF9A1AF63C778EA</stationID>
+ <name>Country @ KAYD-AM</name>
+ <shortname>162</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393D19B3C7B37DE57714B9E74C803220D6ED55F9F4FFC02A6CBB99BD5D0962FEEDC</stationID>
+ <name>News/Talk @ KZQQ-AM</name>
+ <shortname>163</shortname>
+ <icon></icon>
+ <frequency>1.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853935546DC8FDF8730A5176F63FAB71F2147FBE09DC36E7DCF0ADF42F2457F00D365</stationID>
+ <name>Nostalgia @ KPYK-AM</name>
+ <shortname>164</shortname>
+ <icon></icon>
+ <frequency>1.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853934A53E34EE6B33A2B80B8023F39D68141AC67F931C9942724BEAEEC66C994B1DA</stationID>
+ <name>Country @ KWED-AM</name>
+ <shortname>165</shortname>
+ <icon></icon>
+ <frequency>1.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539314D2F797EE92CCFCCD9C17F0DE930467FFE75A3B8FA1E1561DF64E44D95DB944</stationID>
+ <name>Oldies @ KDAV-AM</name>
+ <shortname>166</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393F969FAEE3B92F3E4866C26C75FEE39D90574AE64596CD7903325F2AEC7AB4397</stationID>
+ <name>Country @ KOGT-AM</name>
+ <shortname>167</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393F4B5FFE81989062A90336C5B4096DAC34B46D5B83BD0E9FC8DD3E2E41EE52BF9</stationID>
+ <name>Sports/News @ WTAW-AM</name>
+ <shortname>168</shortname>
+ <icon></icon>
+ <frequency>1.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393F19DDA5E2057A0A35015180A04AEC44E6E4BE17692B3289D1D82DFA90ED85711</stationID>
+ <name>Sports @ KTBK-AM</name>
+ <shortname>169</shortname>
+ <icon></icon>
+ <frequency>1.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Texas_fm.krp b/kradio3/presets/usa/Texas_fm.krp
new file mode 100644
index 0000000..c88225b
--- /dev/null
+++ b/kradio3/presets/usa/Texas_fm.krp
@@ -0,0 +1,726 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Texas</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385393AAD41E53F6390D8A250B43A0E7D5373431432416A63132A3A1DAA86FB1009D84</stationID>
+ <name>News @ KFDM-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>87.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539379BBE3B995BAB20770D15E61848893C340095978AC542DCCF7C40B769D1FEBB4</stationID>
+ <name>Hot AC @ KNLE-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>88.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539334D3FABF77CEB2F80C809D8828413FBCFA397CDF0A569A7F7AE421BC418AE157</stationID>
+ <name>Religious @ KAXF-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>88.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393DF99AA2725649DE252E8018004463DB4A0A3302DE6C6568B21A94F1E6E7F9617</stationID>
+ <name>Classic Hits @ KETR-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>88.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853931E095702D0A60F3D5AF16318B590A4BF6E521464317C20EECEE9B0E5E527298C</stationID>
+ <name>Christian AC @ KSBJ-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>89.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539395B4BFAD5798CDD522818CDBA532A8C20F32C8B44E9783FDC8D167D410B4273E</stationID>
+ <name>Various @ KTSW-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393CA89913EDC0A47AC4AB5D57F322495EBE66BA55E01A2AA85E2D36EF414A4D117</stationID>
+ <name>Alternative @ KSAU-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>90.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539364132B55A40DD40E3D52423EB24CE4C6B73F0FA39617F4B4942397219152CF40</stationID>
+ <name>Christian @ KSWP-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>90.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393242BF4C5A69036976D2452843158E7A69C900894C27891C23D0C43B5ACDE1CD5</stationID>
+ <name>Alternative @ KTRU-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>91.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393BA8C9301C19909342A15D347EE2E0ED8E9ACCF0FDA0386C2FD6A5C9A76B3B664</stationID>
+ <name>CHR @ KPFC-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853935215FBF6E1C7DAD614608F519DD678BA45F46D49BD22379A211DFBBBD0F96ECB</stationID>
+ <name>Americana @ KNBT-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393D5CCD1260F50A7E6222FBDF0F43A3648779780D17B4BAB590EF19DC0F1AA4E3C</stationID>
+ <name>Country @ KRNH-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853931C5BE20F5E38EB926416F0EAB49F9D7C8C3374F92CDDC6D6770669319E1DBDC7</stationID>
+ <name>Urban AC @ KSJL-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393487BCBAE4AC28E75C27DA2594646DF0CA37434A67576449605EF833E9F0E5BB7</stationID>
+ <name>Alternative @ KESO-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853939BB76525FEB72BB8E943F7515DE4865252037CFF59DE73582F14431D9F450F6E</stationID>
+ <name>CHR @ KNIN-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393E4EFE96980AD21F79ED479F1C7BB2548F5996B24295C840DC319AC8CC4E1E439</stationID>
+ <name>Hot AC @ KTYL-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539395D95AB5B65D0E3CDF8F0DD7469AB0BE4644878E8A44FF2254D8DE79BA153BBD</stationID>
+ <name>CHR @ KBAT-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853930C1318955F0ACD5C1A80031CF1C7A20EC62541270B4F41182A6EE13B32AB3963</stationID>
+ <name>Oldies @ KOOK-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393B77089BC5FB08776BDEB203BD568B5DCC3AD180639D339B66D5649183051F062</stationID>
+ <name>Tejano @ KXTQ-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853937264E9D31DAFF5A8C38A459D9B6EEA3435907CFB87F709449A2A21733284249B</stationID>
+ <name>Country @ KOYN-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393D25D3A78E5B068418D70D008E408D3E35801A7E09A79D1FB3D052A25C8881463</stationID>
+ <name>Spanish @ KLEY-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393CE462559BCAC044C92184078F74EB9326CA4FEDA36D47696C85F7EC38BB58B2B</stationID>
+ <name>Country @ KRVL-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393B810213D34A9A71C2E266346D348E2108FBCA0A0281D635928E459C0AE22F585</stationID>
+ <name>Jazz @ KBCT-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853935745108B6C5FF58FED0FA2C3D7B6141619CFF92BE136C37381934EAFE93BE90E</stationID>
+ <name>CHR @ KIXY-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853939B8E3964D2898F6AD222D6BA36FEADE413FF7F9786ABC173FC08BAA34502A478</stationID>
+ <name>Christian @ KLTY-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393F7A8D1CE5DDF3A000835102CBC00F40B7F8D02446148A6A835A70B64FD91A537</stationID>
+ <name>Spanish AC @ KCOR-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539374F30D27241EEEA4501CD4EC2569596046C49896C2D0C9252B043256D9968666</stationID>
+ <name>Oldies @ KFRO-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393C94D6759AD9B17C7FCF9571D9FCF393A87BD16AC91F3788F066AC8BB8AE836AC</stationID>
+ <name>CHR @ KAFX-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393A3F383CA5ECC424E4FEED7F9D22C90B1BCF4C9281B0FED5A1C84F053E96A2B93</stationID>
+ <name>Oldies @ KCKR-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539311FBDF41CF42E0C8D77515FFBE773DDE1BEBC65671238051CEC5CDEF4555825B</stationID>
+ <name>Country @ KYXS-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393A4FE9CCFAEF391424352D417D59AF1011FACE49CCB72B9CB04F175DE0E28DD63</stationID>
+ <name>Classic Rock @ KKTX-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393565BE0F9DE8994EFB3B5DA1B6CDECA78A38F5D0733B3536B0EEA4B3B72F862F4</stationID>
+ <name>Country @ KLLL-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393E0705FBF17584CCF75842E10CFECFC06DF796FE6B5B99318B219C70B2EAFC8B8</stationID>
+ <name>Rock @ KCSE-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539344B296746C44A1A3575E97156310B895B8CD451009A68B932ED108BDA3A1396B</stationID>
+ <name>Classic Rock @ KLIS-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393A93B9E1C0424B00F1DC9953432E16EBA7DE2C25E022C0D861FF82EC8089CB688</stationID>
+ <name>Oldies @ KMCM-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539387FF4D12FCB5FC8E598DECEF36D0544399ED794D3489E6A43AB9AB99D6B33F7D</stationID>
+ <name>Country @ KTHT-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853938C27DF26D24B9371B4DBE8E592F07BAF0E95AF90249F12945A93C16178BDB9C7</stationID>
+ <name>Country @ KAJA-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393D0D7C2E54242D8A03C3E234FC9B0D87E83CFF7DDA2A3E2140665A09556765097</stationID>
+ <name>CHR @ KWTX-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393BE7DD815314F6DA7D11DED16FA304E7D4C6B6E07D4941A3B8922E75DD3E4C996</stationID>
+ <name>AC @ KALK-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393A010E5478C51E9AD97161BC45109DD3811DE9F271554B28295C3F6D316C0D969</stationID>
+ <name>AC @ KODM-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853934CF665E94A1DBDEC5B486A8D1F2A53078BB5962F3CC25B1251F50E922C3FCBBF</stationID>
+ <name>AC @ KFQX-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393FDFD8DBD254FC8FB55975F1BC4DCBA94ECA01008CD7E934BD6A38455C2A50BC7</stationID>
+ <name>Country @ KORA-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853931CE6DAE3A7469A287BCCAB9AB302CC26B39ABFABAB32BD220711CE8153744075</stationID>
+ <name>Urban @ KBBT-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853933AD2A440E707F5C7FC3AAC3A7C9A87C2239FC433C99B9B2A5CD0FA593A0C1D8F</stationID>
+ <name>Oldies @ KELI-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393B29B6C80E798026C91CAEE7DE8B72992EA751DDABAB495354D919A865E59DC9E</stationID>
+ <name>AC @ KODA-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853930FFEF323BA3F1BE4274725E5AF091E1418B9CC4074E4867F8778CF7E14A354D4</stationID>
+ <name>Country @ KIXK-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853931C955BF99E5F2C037D787A528924FD4C965E018C74D505CD5126F156FF4F3D95</stationID>
+ <name>Active Rock @ KISS-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853932650F448E701B30DB13C8F0014460AA272096A3C3C73E407E4A8995179A6EA64</stationID>
+ <name>Country @ KBCY-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853930DA94C1189A43D240E65F4EF2055FB591EDA0766632A928E47EF68568063AEDE</stationID>
+ <name>Country @ KLUR-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393A58DBC71CA525BD21EAC3A00CEA282FF3AA4D8BD09EF76A437357134FF272F39</stationID>
+ <name>Tejano @ KYZZ-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393E5197DB7DF295B5B58847D11F1F7E2047790F36D1E3F7726517FD2216331BEFE</stationID>
+ <name>Country @ KCYY-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853933E355C0A1CF3EF748A6997C29E041626E65DF51E2B0C070E91C395A699A09CD9</stationID>
+ <name>Spanish @ KBDR-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539322EC5CB6F518672BDDD06C7A4C0842C0390DA6574E464FF19A9E910A497D30D6</stationID>
+ <name>Spanish @ KMFM-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393810B16A948149028C26AF5EB4696EC507C545A7D627D0EEFB91BB6157F7C38DC</stationID>
+ <name>Country @ KIXC-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393106868F5CC2E8F37177162857E575CF6C2618251EAD8CD2C62B961C2D3A8C7C2</stationID>
+ <name>Oldies @ KONO-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393F6E1092D31A582195B5D8CB64961B09C0E6F82BB3D923C4F2289FA4666577580</stationID>
+ <name>Religious @ KKKK-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539315255E6D4694570F72DAE51D09803012C91CC4323DCB6B25B517414740C2C509</stationID>
+ <name>Country @ KNUE-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393C7D25E575C72DDB29E34B255B97445F59DC1B2DF4CD5BB5152A2E0614B93F5FF</stationID>
+ <name>Country @ KSAM-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539307F8B920B390139DE96BEE4FCFDD36E497ABE648E26A1F39A90B370269070F9B</stationID>
+ <name>AC @ KQXT-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853934B306C1FE8BF3E46407150BBDB76D6A3E7C1E6A9DD1E97134F150B1BB15D92CF</stationID>
+ <name>Rock @ KFZX-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393018601C65B18D5920BB6888A5294C64CCB943EA7A44CB53E7388D345A7A3B36F</stationID>
+ <name>Country @ KWFS-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539389C2B5C086FF2D7274A3E35DD69DCEFCD1BE277158CF9337013026CE91934F39</stationID>
+ <name>Rock @ KBRQ-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853936146E60BDB7EB2DECB038C4F9375849E099B682CFE2C08E27B0CEB6667A761F2</stationID>
+ <name>Rhythmic CHR @ KBLZ-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393EE7301295DD35C3E875D43A81774DB3D86C43BBF40CDD67887F15D5E222052FA</stationID>
+ <name>Mexican @ KLTN-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393DC68041E6279238FA30489E5CFFC864A5356F393F9A9419C6BA52BBFC9A296BE</stationID>
+ <name>Country @ KKCN-FM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393DAAE1AE35DFAAC70BFBA74A0E6CC3B28CFEFB55CE5906DCAA97B10EE8D302D5A</stationID>
+ <name>Country @ KJCS-FM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853939896B91FD469303DE3269D1F596DB573A8B533C8C39981E0502C697E3765CC4E</stationID>
+ <name>Mexican @ KAMZ-FM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393BECDD67C4FD96A8D983C470B9D7C09DB0258A438355A9DA16B9586CC749F871F</stationID>
+ <name>Country @ KVST-FM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393054DBCDF7D61D8CA1C15F47C4F126F3B04F555863BFE17E948580AD7BBAF74E0</stationID>
+ <name>Alternative @ KXCS-FM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393E79A0B191811CAFDB05B5E4E4E6C28EB4AC7CB16411BBAF5F3F2F1134B824CF4</stationID>
+ <name>Country @ KWOW-FM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393A3870551ABBC7D91B17A41FD2C049610D9D674CE99902C3E1AC9A6AFAFCE6DD1</stationID>
+ <name>AC @ KLZK-FM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539359E1C76B3792185226B40480B6FE00F3E3FFB0543C8291CD672574DBF3A5553F</stationID>
+ <name>Classic Rock @ KZEP-FM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539383206E0BB4F305FA2F25D821636C726E1EF071688A9427349CF72B37B8892A56</stationID>
+ <name>Classic Rock @ KYYI-FM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853930596C87ECA66CD5A81CC32F87B1C1D4C3488F785DDAA9F62B72F53E0427FE887</stationID>
+ <name>Country @ KBUK-FM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393AA3B1547B2C7FE0C93209A2CF9B387B7E304CC8F14313C547E1CF5F3370F3D33</stationID>
+ <name>Hot AC @ KSMG-FM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853934DD3A5E9F1D07AC4C4E27D52651F0A4E0009106804C14E5EFE30FE1C0B728344</stationID>
+ <name>Hot AC @ KPLV-FM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539338F481C7E6984C9256761248F4002F13C4B0CA386F42DAAD8CDB29692BBCCEA0</stationID>
+ <name>Country @ KYKX-FM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393FC20459134212A506550DC92AD9E058F8CC6830A1B5674602A7666F8F0BDB119</stationID>
+ <name>Oldies @ KFMK-FM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853935DD226C10582A6F5ABDE62AC321AC68CAFF502A1DDBE2E6352F52CEB3896B3FF</stationID>
+ <name>Sports/News @ KNFO-FM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393D3DF0C5A0B69FCE698354E8D529B90DA6FFBF5140BAB87AAEC15122EF2415BA6</stationID>
+ <name>AC @ KTLT-FM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393FF3C1596160240E56F388AE80E8B61DA9C9382CEA7379251376408777F7619D9</stationID>
+ <name>AC @ KOOI-FM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539331FD92DBC3985A86F97A1D489E4A54E4DA446B2705986B88D02A0A50B960631A</stationID>
+ <name>Rhythmic CHR @ KCJZ-FM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853931DAB7E70A7B52E3DB8EDFC02577BCFCC8D50BB9F4738A3DCAC63C7BE27B93A59</stationID>
+ <name>Classic Rock @ KLUB-FM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393F9943F77CD9ADA1C7CECB598753B4368457CF571163CA0CC72100181394D3DFD</stationID>
+ <name>Spanish AC @ KDXT-FM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853931F24F9B68FC8F09EAD6F36E464E3A9471255A533A4569883E76E19AB3D7C0856</stationID>
+ <name>CHR @ KISX-FM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539324C95D4078649C701E2E1997ED95257944574A978C947CAB4C2CFA0730AB94EE</stationID>
+ <name>Hot AC @ KWKQ-FM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>107.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393205BE2DF0D73213C6C996CA29A8C94000C2AB7969BB31E4931AD600F17B4B2C6</stationID>
+ <name>Spanish @ KCTM-FM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385393928564138A8C53683DC4358251C7C5B742AA6EB72CF655512607AC4497417C0D</stationID>
+ <name>Tejano @ KXTN-FM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853935146BFF2036FE8B78CFC3237C9D617A228D11F43E596B94F9A263A31816FB470</stationID>
+ <name>Country @ KIXS-FM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Utah.krp b/kradio3/presets/usa/Utah.krp
new file mode 100644
index 0000000..838a1aa
--- /dev/null
+++ b/kradio3/presets/usa/Utah.krp
@@ -0,0 +1,414 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Utah</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853943B2247D7A9211CB7944E8DEE1C9C864923CC9B47A3C87F3478FEB077D4DB6F64</stationID>
+ <name>AC @ KBLQ-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394F66A67C1B66AACF84844DF9F3B0503CFABC99851ECA0C841D1DCAE2DC1B95219</stationID>
+ <name>Country @ KUBL-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853947B35253148DC4F94F18B198F296BE1FF5CE6B7E20D4B3768BE9C5F9BCF9A456B</stationID>
+ <name>Hot AC @ KSNN-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853945CA63330C0583AC378DC23B368969515CCF909B858CDF3C66A0B2A811929675E</stationID>
+ <name>Country @ KCYQ-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394939A7AE881A651DCE7B89B5C656BD365EEBF7DC0D6400BEE723154F1AD58B83D</stationID>
+ <name>Oldies @ KODJ-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853945BFD473C0EE64C6304FE59790338721184D803F9384CF3905EC9FB03B5A0C100</stationID>
+ <name>CHR @ KVFX-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394F74F01F1E586CC7DFED839F291BA92EA8EFB5B0C94A59160518D2F27BBFD38AD</stationID>
+ <name>CHR @ KZHT-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539427AC247F908A77CC7A291991582EFEAC7C3CA418C2D2806C997B368D606DB535</stationID>
+ <name>Rock @ KZHK-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394D52A46EFCE34D7C7443640EC9E0089FE7C363210AEB23998298A523CE6BC6153</stationID>
+ <name>Alternative @ KXRK-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394EC21636DE348E7AADFCF0E138C8251C5EF8EC80FC0DD2095411632B9BA51D296</stationID>
+ <name>Country @ KKEX-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853940FB6370AA155D939AF9F708FFED310651587D9A3C28251506DDBF5C7DFF3B36F</stationID>
+ <name>Hot AC @ KISN-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394002FA8ADC1EEED755AE32D0EDC58C3248AD393899A254C18825BE282BFA2EB9E</stationID>
+ <name>Jazz @ KBZN-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853946083A9247C8A1ABAD097A8C3E349F7CCE0EC16089590D73D09B149EB6451EE9B</stationID>
+ <name>AC @ KREC-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394D2B58F3E305014F7810254B2C7449D266A0338C9F8C770F75159448FCF6C0415</stationID>
+ <name>Country @ KARB-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853947E33950E883A5577246CD4C6827DE07C7AC2CC83D0B188C6D85DA0F78C8979C0</stationID>
+ <name>Hot AC @ KBEE-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394341ECF62DC2D193A8FEFF0AE774830754D9596341253E84135F6022F73BA957F</stationID>
+ <name>Classic Rock @ KURR-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853942A6BEE3C5522BB3C107C852EFC7689059DC4D9A36E0A07535126AB249FEF0F24</stationID>
+ <name>Country @ KONY-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539475895679A6C8B1FFC353F014C1B284982BE2FC453AC82E01B180320F7EA50677</stationID>
+ <name>AC @ KSFI-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853940C3C7C9A29F062B11AC5AF8D303A1087CDCB3E88FA5047B64E363D773173E4CA</stationID>
+ <name>Rock @ KBER-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853948591663C76E533234397D7BAA5B2445430953A7F75E89C810C7F9B2633B37111</stationID>
+ <name>Country @ KKAT-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394D66AFB4D9BCF7FFD1E5F30AEFA5159DAF3B67CF6F03E4769DC302BB2A96C4C1D</stationID>
+ <name>Hot AC @ KQMB-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539413C2D375DE5DAB18EAF2C2E5B4FA865F9D9BC63DE38DD4FBDCBD1B7B4AC5562B</stationID>
+ <name>Classic Hits @ KRSP-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394E223CFF28614F218FDBE7F38167ED7D3FDA6B0A4AA8FEE795B3D0FC5D7F30E26</stationID>
+ <name>Country @ KGNT-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853947DD7A3A125B9C367CCEF1F04F67E392F909040727F73380506D3EB732C10924C</stationID>
+ <name>Country @ KSOP-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394C23D4C53988498F6A813295FDB566828860259EC07B88FD2A9AEFDC4C648CE41</stationID>
+ <name>Oldies @ KNFL-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853949321B4D25BDDAA66FED9A4D87F0DABFFEE2EDCDB0FE5AAF5FB67A30A3207400C</stationID>
+ <name>B/EZ @ KMXU-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394E254C67E95B4D1C0B5AE140EF6A736158FE871CC340A38953B4149ECA269E357</stationID>
+ <name>Alternative @ KCPX-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539431681ED2475DC431A7B5D85E55D28938EC97519D475791062E5D6DECEB4EE64C</stationID>
+ <name>AAA @ KENZ-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394987949BF25E278A6AF8221A03BEFE155F5D38B3E350C6241BD68122398BF5213</stationID>
+ <name>Sports/News @ KNAK-AM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>0.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394E3583DCDD11B29D84E55E1CE8365ACE5B8206B73A00C2B9DCCC2DEA9387FFAF8</stationID>
+ <name>News/Talk @ KNRS-AM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>0.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394848110000A3FE86F8A614ED3DBCB5E182504EBECFCD8CA9B56B1B2ED2BE0457A</stationID>
+ <name>News/Talk @ KSUB-AM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853944870584AA0F7816EE5C4E5A91969B6975C0B3AFCA9C30865FA041D872BFBF329</stationID>
+ <name>News/Talk @ KTKK-AM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>0.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394DA4FA880ABDAE2C0FD515922C6DD6353A05B9800A9557C64C3266204F54D489B</stationID>
+ <name>Country @ KMTI-AM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>0.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539457A2AE24672052197E9B66F51866A4A4B4F7C98ACFADD78926E76E24CD070599</stationID>
+ <name>Country @ KWLW-AM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>0.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539457D91ABA7F8F64586F49380F16191C93BAA20F7CC979F13F5126F02ACA10E43F</stationID>
+ <name>Sports/News @ KOAL-AM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>0.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539458C0DD6CFCE5EB8DD5C6C4FBF3989992914ED0EF64213A726DB8C76FF98AF3E5</stationID>
+ <name>Sports @ KSOS-AM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394FB8C103E99ED680A88429D7B20DA00F039E3FB96CB5258041ADD905208F0C067</stationID>
+ <name>Childrens @ KBEE-AM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>0.86</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853946A430DBBD0468DD5C6699701110476701C88A830EB354BD9ECD71B6BC11E2FB5</stationID>
+ <name>News/Talk @ KDXU-AM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>0.89</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394DACD7A05760598CBA07C73CC4C3834A314A604280B631861029F412AFE63DFFC</stationID>
+ <name>News/Talk @ KALL-AM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394D3B797C93B3A2F8B369CC3A3E1D1EC2AAF0BD1C6A977D6F9C51F09F7B2944EC2</stationID>
+ <name>News/Talk @ KSVC-AM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853944FCAF9BD8362BCEC82254C95C4623A7F7FCB88FA751120023A98AC2B29E95B55</stationID>
+ <name>News @ KIQN-AM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>1.01</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394355DC605FCF160501397BB615B356C334E03F17E682B65BF599778D134BED97B</stationID>
+ <name>Nostalgia @ KKDS-AM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>1.06</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394859883D17ECFA3B88608324D2351D09A4A75B4621EB7D8589FEFCB6757048CAD</stationID>
+ <name>Sports/News @ KSL-AM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>1.16</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394CF42B5E321286CABD6B1A25AD988491CA7797F78C5898E465C913E12F6F5A0DE</stationID>
+ <name>Nostalgia @ KUNF-AM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>1.21</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394B855FF86E39A5B26075F3C4741ED554FE626BEC4338F088EE43E8766EA630D81</stationID>
+ <name>Sports/Talk @ KZNS-AM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394BC51B50E603BFF65D4C13C2A7917ACFF951EBEC705453F8157CB053861CD4DF4</stationID>
+ <name>Sports @ KFNZ-AM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853943CD3AFC0FDEE98D7693B06C70B0571DDF2526438F4A35787BCF332DAEC225AF1</stationID>
+ <name>Country @ KSOP-AM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853944927B5C3E1745F0C783E6250308220466F17C9884DA88D14380BF9AB9C0FBC2A</stationID>
+ <name>Nostalgia @ KLGN-AM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394F57B3F2FCBA96FCA78556A4E27D72B899F7F779846A3A43E654C4DCF66051AC1</stationID>
+ <name>News/Talk @ KZNU-AM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853947DBC68879A385329181FCA0915DE759B036D3753203714F1037CBFB28CDBAD89</stationID>
+ <name>Religious @ KMRI-AM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Utah_am.krp b/kradio3/presets/usa/Utah_am.krp
new file mode 100644
index 0000000..50d17f0
--- /dev/null
+++ b/kradio3/presets/usa/Utah_am.krp
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Utah</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338539474771B79040439DC95AB9DC8D2E25C855D0BFFF319231A042BA42DFA160ED11E</stationID>
+ <name>Sports/News @ KNAK-AM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>0.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394A919924D2A331C52D4661806D7FEB38522CE00054F2486D6A3EAC1DCCC5D6519</stationID>
+ <name>News/Talk @ KNRS-AM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>0.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853947522EB45702A07824DDAC83D5551C2D564B1858CC6D94A05DCA2F62AFB460B23</stationID>
+ <name>News/Talk @ KSUB-AM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853941C7EC49C656AA2B044E90338D1ACA99BB121396CC3D8E4DC18C77751F8CF4271</stationID>
+ <name>News/Talk @ KTKK-AM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>0.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853947689854F95E9D2979934394AC8084CDDEC7C9E46F6DA5A2B6E4D7DC03CABF431</stationID>
+ <name>Country @ KMTI-AM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>0.65</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539468ECA9FC64571F446A55E9CF43789F4F6323D1693290CBFC7EBF869DAFF6B264</stationID>
+ <name>Country @ KWLW-AM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>0.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853949D0F640E4DA3A39D502DFF8F29194A82B34D3ECC28BF39C5B749B840C003319C</stationID>
+ <name>Sports/News @ KOAL-AM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>0.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853944BE7551A91CE4772517359B2312D378C905631A5A679331832813D0732DFFFFD</stationID>
+ <name>Sports @ KSOS-AM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>0.8</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394C24B393179FD08ADFF34F46EC5786A25AFDA35BF02B3EF89A6B5D7CFA95B295E</stationID>
+ <name>Childrens @ KBEE-AM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>0.86</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394A7A1167B2EE01AE3D15BC02ABBECB95F892D44BF9C13B2B18994CDE81EAEAB51</stationID>
+ <name>News/Talk @ KDXU-AM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>0.89</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394D278A3FB03DFA740FE21E57CBCDF1C551B5DDD7F35C46A6E3726D3157AF7A25D</stationID>
+ <name>News/Talk @ KALL-AM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394CA81C48C62FE7CC94B9E319839D93005A9A297168F0A8BE6AF373F7AFD306852</stationID>
+ <name>News/Talk @ KSVC-AM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394DD793D868378C8111322551D77A69ACB58E26B06FE6309DE812F21F95D60BE2D</stationID>
+ <name>News @ KIQN-AM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>1.01</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394D462C64DB4E9A1B78BE602FD6D2DBAF1D472356A0382B3C77BB493BD26A1AA93</stationID>
+ <name>Nostalgia @ KKDS-AM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>1.06</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394C288D234A947C9F41B443614DA9F6E75A77ACB58B5CD4B1557BA2064B43F0D47</stationID>
+ <name>Sports/News @ KSL-AM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>1.16</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853940BFEB5D2E9DDDB23F1D9F8651D7797634023E80D56C8A2C2EF7AC2EC5AF15264</stationID>
+ <name>Nostalgia @ KUNF-AM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>1.21</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394937A305C09D0465EB51B7EE12B9EA89ED307C4B00D7CF72E965B5D28BA3BD8B4</stationID>
+ <name>Sports/Talk @ KZNS-AM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394137AEF1DEAF177F5A390E1EA64E05C0A88FC7CCFE6C0F7B863C002E947A19DBF</stationID>
+ <name>Sports @ KFNZ-AM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539482538260B02DE0FD151F19A93309705AC76C178215ABB5C5E504794FFF1353FA</stationID>
+ <name>Country @ KSOP-AM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394BB7087145CBE8CBF4DB21FE8894D4D9AB3C4AAAE7CC19465055C6B975D674251</stationID>
+ <name>Nostalgia @ KLGN-AM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394DB24614A6C8A92369AB752D391D837717858F2FBFFFE528913CBCBA25ED6BC75</stationID>
+ <name>News/Talk @ KZNU-AM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394A61632C1F8EACC457D5CB8708B9B55315C8FB99EB40EC8DA7C72B36FD74D5694</stationID>
+ <name>Religious @ KMRI-AM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Utah_fm.krp b/kradio3/presets/usa/Utah_fm.krp
new file mode 100644
index 0000000..10920b6
--- /dev/null
+++ b/kradio3/presets/usa/Utah_fm.krp
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Utah</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385394CFF6B5E119005B82AD7ED0C04AC92F466C442F2328406A03323CFA640B306320</stationID>
+ <name>AC @ KBLQ-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394338338858B188D62552A1E6A52C3CB8CB9E2EC2E16ED9E1B0D39BE6847EC4E48</stationID>
+ <name>Country @ KUBL-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539421CF901D8D12B676D5B38078C1A961A40775D965AC0406F3DA3CD847160301BF</stationID>
+ <name>Hot AC @ KSNN-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394840C5150386EF625A5CA8140026D5E5EAF925742B0CA1D83F219D9EA1E59F1B6</stationID>
+ <name>Country @ KCYQ-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394AC5F499EFACFD3FB7AD1ACF719AF0D3A6785C1CE747C5D3510DD29F95388B46C</stationID>
+ <name>Oldies @ KODJ-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394AD0E961215F2D0F350A5863C503894F24933717F99FB64324614914D4B42644D</stationID>
+ <name>CHR @ KVFX-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394FCA4C4155E28E52332DF312D4AB42B415D0A34DFDC5A9CEE8C1325FCEDE973DA</stationID>
+ <name>CHR @ KZHT-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853944B530AA5841DECA17DD857D56B13C98E2C360F399C5B77DFA8DBB5E5775FA208</stationID>
+ <name>Rock @ KZHK-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853945E76C9A2B1061DD0B1EC373FD888F86C43C8A58B24FC3C941A2B1454D5DE26E4</stationID>
+ <name>Alternative @ KXRK-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394EF67E47F9F3DEA392CDBE6047DF98540A0FE5063F5CA8FF94041322DEFB90370</stationID>
+ <name>Country @ KKEX-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394F718A480B00020AE6CE282888A18A3036F2A0D6857793D3E7C33E1F5390CFD42</stationID>
+ <name>Hot AC @ KISN-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394C006A62045E4744D7D1AB3F1D42E4D6A0DDF9D3AF9734AFDA183CBABBBDF1558</stationID>
+ <name>Jazz @ KBZN-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394D97FF6C2A659B10C8140E6F02A764E10CB5EFE4024A41C9D681355A74D105636</stationID>
+ <name>AC @ KREC-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394B29B3CECED184412BEADC5FDE4C040F04D37B08DFC6A44F05B93C3EE9BCC4AF2</stationID>
+ <name>Country @ KARB-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394E297921D20E93DE1A5BFB554E9DB4CBEF162AA2FC4D3799DDA7F84E35722EC31</stationID>
+ <name>Hot AC @ KBEE-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394F2C40737A74D736C5E2B29AFB47E8592150C739C8380D426F62EC9DEC9977AC4</stationID>
+ <name>Classic Rock @ KURR-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853945713837B078D6F0A21A964E5C9F85972072F74085EDEC74A0BCF9AB84B0323C1</stationID>
+ <name>Country @ KONY-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853947068E39CAF2894597066A7A13516DFEF87E16BD8911597E52660527F735FA733</stationID>
+ <name>AC @ KSFI-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394BBEF35FA3299F82B6F4BA44A48D37EFD83839E5F0E86B3E1CE369D7A1C7428A2</stationID>
+ <name>Rock @ KBER-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394007D12057701209E0134A1CB7DC959669C4218805AD61E535A6EA61ED66F954C</stationID>
+ <name>Country @ KKAT-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853947222D347FDA4EE9EE80E436466AB56C88DE3647B5EECD5BB0E28711113AA0F10</stationID>
+ <name>Hot AC @ KQMB-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539431ECCB19D0500F59982D32D7F9C3161D1DAFF2BEFB99369987C10A8278309094</stationID>
+ <name>Classic Hits @ KRSP-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>103.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394C709489B576AE03EFE0EFDCB156E935A6424F7DFE66D89F87865282C6B9D7E43</stationID>
+ <name>Country @ KGNT-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853943853FF00C80AB724C1227BDC0B50E094827D7F49B76BED9F593F6C8C276B7D0B</stationID>
+ <name>Country @ KSOP-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853942747AB72BA0F1EE1DC32707C05CA88AAB46E389745163B38F75EC742F8C43722</stationID>
+ <name>Oldies @ KNFL-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853941D919B4F86B4B08E47DB208CE459E8DA44537A6635B25D416D499AE93759A6AE</stationID>
+ <name>B/EZ @ KMXU-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853948AC0155D814E9D2806CF8AF3A418C7D511325DF3B8389A14FF988A7801E1611D</stationID>
+ <name>Alternative @ KCPX-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853948B006053AA68873C0EE4FBCF3CF0722A639D7608A588DCD413AE53A39ECF4208</stationID>
+ <name>AAA @ KENZ-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Vermont.krp b/kradio3/presets/usa/Vermont.krp
new file mode 100644
index 0000000..24b9772
--- /dev/null
+++ b/kradio3/presets/usa/Vermont.krp
@@ -0,0 +1,342 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Vermont</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338539685F2B1A3D30E420DC17632B67E94FE4D064CFBA010F33A1E9D8F3FDA4D2747B8</stationID>
+ <name>Alternative @ WWPV-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396E3A57D76F08DC5AE32D9748D6FAB5CAD5849A6BABFA4B752C33BC2D2766531CB</stationID>
+ <name>Alternative @ WRUV-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>90.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539629479146F2C0D92344D275A14E1825A99259647AE65688D9A94A8F703D30DAF9</stationID>
+ <name>Alternative @ WGDR-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539681B010B41DB80224AB67189987A011E3415416536B6463C166F9DA0697A4D609</stationID>
+ <name>Alternative @ WIUV-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853961362C27C36CC699312266F7CB8651C0F4DAFA8F5E1D5FCDAFA0D9F341AE66D6B</stationID>
+ <name>Alternative @ WWLR-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396DB22FF3DC186758FA0CFA80F1731B324C5070D3AFA59BDD5C01C897D3EB880A8</stationID>
+ <name>Oldies @ WMOO-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539656266AA049F1D23F1E92D03A81FEF0D65EAF6FA53CC416C36AD1B67DDC68AAEE</stationID>
+ <name>Classic Rock @ WKVT-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853961677782DC29D43166FC989F7EAF5E74C0E58863D0E31DF521BB1E6D7656CF841</stationID>
+ <name>Modern AC @ WXAL-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396DBC62EFC21C185B15465C9BDA1414C3A5BD7A457F578E786925695440E49E05E</stationID>
+ <name>Country @ WLVB-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853961849920855973B11823D55C9A9730F4C351D58857390B69F2F4379EAB566AB4E</stationID>
+ <name>CHR @ WHGC-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539653EB31F0AF357F88C8A2470B7A281F51B13DB7E9E09EBCC3DFC46D4FA7978C39</stationID>
+ <name>Country @ WJAN-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853961E3C61F0826F32B89D6DEF5754F32BC48D61E2118D4FDA4D49E3C43CFB88D83B</stationID>
+ <name>CHR @ WXXX-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396B9CB050F2768C110CEEB14B61CF2188312218CF180F8FB12F74D4EC4DE0CDAC8</stationID>
+ <name>AAA @ WDOT-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853968CBD77115E8468397ECEAF256B3AFDD3D078E3230AA27374317F1B973734E220</stationID>
+ <name>CHR @ WZRT-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539654C276256F85343A01B71A02BBD80B151E859E6722F51C0B6B5F8DF36FDEF91A</stationID>
+ <name>AC @ WGMT-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853961016E9AE95F290128F25E7CB0396572C782B2A2C9595AFDD54D079A957473F18</stationID>
+ <name>AC @ WJJR-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853968C3C1B9B8590177416D4BA6D8403FD8733C236876BD2896E21216ADC01EF6EAB</stationID>
+ <name>Country @ WOKO-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853965BD6733F92B9162DFB3CAC0DB7CC762BBF8ED18877481DD1CE86178F8DED23B0</stationID>
+ <name>Alternative @ WBTZ-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539619177A3867B53A0B713FB6E15518D3045192F69758DB32FB5AD5410404CF541A</stationID>
+ <name>Country @ WWFY-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396C5310D2683AAB19E932EAA749682DDDD81BFC01EA0EF54E62FD890E8C9120AD6</stationID>
+ <name>Country @ WYKR-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539657EB5DEC7A417BDB70E2FBAE4ACD589755D44B7A3B7967AFBDE4749AE6F18E38</stationID>
+ <name>Classical @ WCVT-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853966057DD0848B9D035549F4AD2A8CCA7B6ADB13066AB2314A4988F6C7896BE280C</stationID>
+ <name>Country @ WCVR-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396D0073FDA6E72E449C790C8EBAA055942173D611620035CCFA866D8EF7B5B7984</stationID>
+ <name>AC @ WLKC-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396C11E19C0BE2D6BA89F8F959FC34C3B8CF2F6D0437E407BBA58A6CB2182D82A59</stationID>
+ <name>AAA @ WNCS-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396A2A257B0BCAADB68DACB4CFCC7F3F867FB959F1D36C267093D38271DDE246B31</stationID>
+ <name>Oldies @ WKOL-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396E6FABE7954B8CB320C135F649BE85CFAF067FA52B0DAD62E508560A10B545CF9</stationID>
+ <name>AAA @ WEBK-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396C5F0ADC28D299D6A2AAC47B2F860FC9382A473841CDA0A706C746ABF7615B515</stationID>
+ <name>Country @ WKXH-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396839034137B8DC4F746BD337112BCE310D8962B056F83FE4AF8C4B76031947EE3</stationID>
+ <name>Rock @ WIZN-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539663A12E04806C141DE826DCC36FFF21F1636D3032D39F53F5E1101641DE8E0AC3</stationID>
+ <name>Hot AC @ WORK-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396F4E659E350136EEC5064D6F4B10E936F38074838973C6A16E34A15D0BBC0B20B</stationID>
+ <name>NPR @ WVPS-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396985C3B7137DCD3237DF34F93142C05E43BDD0A25B6A39E5920219CB42E33A858</stationID>
+ <name>Nostalgia @ WDEV-AM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>0.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396E9A74A0777EA021CF4C1D458E9A687DB8BF007753D040E9E91AFD80F212DAED0</stationID>
+ <name>Country @ WLFE-AM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>1.07</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396C14C2F5FDD1247A7762B2A4E0438B27916F09039A9D6D2EFBC78A183B04319F3</stationID>
+ <name>B/EZ @ WJOY-AM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539647CDD6AE1FC0FCF0466EC636B886315BB8B6B77B33E129CDA0C137B24FCDBD63</stationID>
+ <name>Nostalgia @ WSKI-AM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396058712DFA459D78330BA54CB4A71102B4BF3FBB2B71ECA54936D87E98A1F87B5</stationID>
+ <name>Nostalgia @ WSTJ-AM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539692E43AFA3C3892C46865776110BB10D59389B8998D296C0FBF55B37CA4654FC4</stationID>
+ <name>Various @ WBTN-AM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853967E4F898A7729279BD99B59321799AB60884B50A44B3C5C977687D0BA41D41E2A</stationID>
+ <name>News/Talk @ WSYB-AM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539628C25FC63096AFD8820D5B0E7CBBF1BD3781958DC158BA3C800EEF10D264583E</stationID>
+ <name>News/Talk @ WKDR-AM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396F62CA102D5953D8321634B3268E2276171F4808883AA8566ACB7CB01F871F5DC</stationID>
+ <name>Sports/News @ WSNO-AM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396D9079672B3EB13D7CA003996ED77C3DF3E4EAC69A3823F86ABAECAE99AB4D0F3</stationID>
+ <name>Misc @ WNBX-AM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>1.48</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539629AA3F50AA1A747AA689D27D2700DEA0C923D08EE70FC5BDE00BC8E85E8067FF</stationID>
+ <name>Country @ WIKE-AM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Vermont_am.krp b/kradio3/presets/usa/Vermont_am.krp
new file mode 100644
index 0000000..84db129
--- /dev/null
+++ b/kradio3/presets/usa/Vermont_am.krp
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Vermont</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385395EF0B2BB5DE91350E90F4A98EECE8911A29CD478E98B771D903164DBE8993B1AF</stationID>
+ <name>Nostalgia @ WDEV-AM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>0.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395CECD4C6FA84C24396D2FE1B02E1F0B9A9EC6D660D1DA624F96B5857E6E7796B5</stationID>
+ <name>Country @ WLFE-AM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>1.07</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395F3FD25B1CF2078EC6FED84BB28545317B64158E5A41A2F71F2945416D4450DE0</stationID>
+ <name>B/EZ @ WJOY-AM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395EAD8AF7165A3B6BE6868194BA8DBA183B58B16F88599E5A6E6335892459CDC4D</stationID>
+ <name>Nostalgia @ WSKI-AM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853952F71262D8FE0BE15F53DB1503F51015B5ABACDA2A1F48E30E7D991CE67B6AC1B</stationID>
+ <name>Nostalgia @ WSTJ-AM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395AFF476ACCF6BE7551B2316A7CB75FDDCC438265F61C19CBD6A011DDFF8A81ACE</stationID>
+ <name>Various @ WBTN-AM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395E27C423B80788440427ECFD47EF5886FEF44C70BD87D4B3A6025A10E53E42E50</stationID>
+ <name>News/Talk @ WSYB-AM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853953752B4DD56390BF1DFF14970916FFDA3F6C6972F8C1068B9B1491D3E7648ADD2</stationID>
+ <name>News/Talk @ WKDR-AM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395018CFB9B9787402AAE2013FB6C93C5E4DC555A9BB10ED9540134C5070D4E5F29</stationID>
+ <name>Sports/News @ WSNO-AM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539511B993C6E9A82B52AE314CEE4263F166B4F5DCE7676169C15C6FA9D33AF4661D</stationID>
+ <name>Misc @ WNBX-AM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>1.48</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395719B8FDA98100BFA994074151422509052778258037EE6E6E254E0A4527BA92E</stationID>
+ <name>Country @ WIKE-AM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Vermont_fm.krp b/kradio3/presets/usa/Vermont_fm.krp
new file mode 100644
index 0000000..226af52
--- /dev/null
+++ b/kradio3/presets/usa/Vermont_fm.krp
@@ -0,0 +1,254 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Vermont</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853952E9D248C0B24DD29DD01A5C5707912B474D7D0DDE26B4A9559422E611792FE30</stationID>
+ <name>Alternative @ WWPV-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539558E5587EBAE9E7FECC0964ADE4ADFBCCD5F55A6AFCFF2AA832ABDC979BAC096C</stationID>
+ <name>Alternative @ WRUV-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>90.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395F1AA9FBBBF4A05E45130575EDC1EAD4ADD0534FB0160798D0D8282F21AF0F355</stationID>
+ <name>Alternative @ WGDR-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395108EDD8C0439D400DA83E1D1FCC9B19E381B3BA513E0FA42B806D42871FF3A66</stationID>
+ <name>Alternative @ WIUV-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853954F35302A49F9CD8055F4F3A5C468A558F4903B03FA4445DDAE179FCDF3E950FA</stationID>
+ <name>Alternative @ WWLR-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>91.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853954ECCE2A8559AEC2C01C5B16D9D822D6C379CC34AC8637019A96D33C6CCCF3DE8</stationID>
+ <name>Oldies @ WMOO-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395607075E2A065BC6D57EF4A2CB76EA59C39C32F2AEB10C99466E7E8D576885D49</stationID>
+ <name>Classic Rock @ WKVT-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395D6024CA06C8CD32AFA4CFE03AD2C4E6F92AD63A4A6FB27CD6BC04E9BBA5B4ADC</stationID>
+ <name>Modern AC @ WXAL-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395EB52FAC969C3C1750E171DBCA71D6A4A13B47B654E0FE562A6432C9E2F12DDB5</stationID>
+ <name>Country @ WLVB-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>93.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395394B237D0DE07020232C0839FB39121F30F8ACB06367D77A11DA725789351CE5</stationID>
+ <name>CHR @ WHGC-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395D1E36F3A0708A0D4196164AB3608589ECE8E7B30E7F660DA95896D6BF637B07D</stationID>
+ <name>Country @ WJAN-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395936F5DFAA6D2BAEC9F4C48024E508109FD228E54CB3B496936C88851C76461C1</stationID>
+ <name>CHR @ WXXX-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395DE69DA1833DFCDA459D2ABF43C8B2EF86D4AAAED4EE5131B51BDA02DC0A2FB5F</stationID>
+ <name>AAA @ WDOT-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395C75C4D86CAB1F8621BE18892ABEAD86DF7C6D85711A1DA8AC5A7326943D67989</stationID>
+ <name>CHR @ WZRT-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395264220BCBFF85378F8BAFCAFF7CA8EDCB8FCE8B9C5C678C0091B30C10B1F0FA1</stationID>
+ <name>AC @ WGMT-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395E51BD5BF713845B80B8BA097B4E95BCA7CC7639827C476582ADDC11247A32953</stationID>
+ <name>AC @ WJJR-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395E547D6DAED65253DFDFDEF15156BF84E8B8C528195399A098FED12623B95950D</stationID>
+ <name>Country @ WOKO-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395678AE4300B49B4A459845CAA979836559BEDB47974127D8F0718600E80E82D91</stationID>
+ <name>Alternative @ WBTZ-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395C049270594F7582CAFD8E7A1FF0880FA6DE083F7D6D0FFB653A864526CF5676E</stationID>
+ <name>Country @ WWFY-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539553B49AA4779C7EFC383A64010063E9EE9E44B600D3F4B2861741DB9D0D844E69</stationID>
+ <name>Country @ WYKR-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395FFCD2322D33EA9FB5C62703156E40EDB4703BA457E2FE03F565D643B4F2F6800</stationID>
+ <name>Classical @ WCVT-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395C02215432C8BF63BCD8C1AF7EE09325E8F9B3408388E3D072549D1B80FBC3A1C</stationID>
+ <name>Country @ WCVR-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395C4C3262C6B2EEE550BE64C6CEAD1E511B2873C86DDFA8303FE2518F5175C1EAB</stationID>
+ <name>AC @ WLKC-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395C3E816957E16EECD086FBEA0D35F701C27C7F0D5F4F5B5EA900DF96B41696248</stationID>
+ <name>AAA @ WNCS-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395ED1FA93C9714475F2754471999CCB4DDA62702505645F672447B65C49C26DC0C</stationID>
+ <name>Oldies @ WKOL-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853952E018B46AFAE58F7F7B68387DC25D8C7EE1349166CC46663C064C9B8CA8E423D</stationID>
+ <name>AAA @ WEBK-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395AEC588A1D98307E15551AB8ECB06F56AB080444A4148F94E50BBDCD963247BED</stationID>
+ <name>Country @ WKXH-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853950FA5D175FDBF0DD740B2CD479A0A83A3BE4D8661DC6074170BB39C589F366541</stationID>
+ <name>Rock @ WIZN-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853955C4AECB1C209B24CAFB248B7A6B1B1C4A9728154B614C59CE6F87EDC29AA7AB7</stationID>
+ <name>Hot AC @ WORK-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539568954C8C28A7B35B4EE893D4CDA53FA46AFEBCEEDE8FAE22A6BB7BF1AECFF86A</stationID>
+ <name>NPR @ WVPS-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Virginia.krp b/kradio3/presets/usa/Virginia.krp
new file mode 100644
index 0000000..ece26da
--- /dev/null
+++ b/kradio3/presets/usa/Virginia.krp
@@ -0,0 +1,902 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Virginia</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338539589FB447809B5334AC1A5E73391869A1FFE936FACDF0169200A38C372888E45CE</stationID>
+ <name>Alternative @ WXJM-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853950861ABFD9F50D5098FFAED605D8737AFEAF65BF02B945CC1E83CA7AB7C67F8E0</stationID>
+ <name>News/Talk @ WHRV-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>89.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395A5DDB15EEEE3AFD15A1F90F2BE048F0BF9BBC873C829D4F6A839FAD50587C1A9</stationID>
+ <name>Christian @ WPER-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853956371AB262362E3E8CE56D941AA68B5FAFB2DCAFC22EC818A309B66490014E001</stationID>
+ <name>Christian @ WWMC-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>90.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539533D9A9623A84AE7D68035F1A6198CC7113D4A41C85AEBB114C2F7DB787CEC413</stationID>
+ <name>Alternative @ WTJU-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395968405199066416759F323AFFD38828DEF26C022E816F8EB6F821F2C559A045B</stationID>
+ <name>Christian @ WEMC-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>91.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539576A1D93D6ED7830FC560A79203FC40C505389F2B4384F88355EB421316FD8C52</stationID>
+ <name>CHR @ WXLK-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853950AE2C15A5AF54EB0D9DEA3F52F432F155061757127524E531A8AD03C5B70BF77</stationID>
+ <name>AC @ WINC-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395CE21A53723800D4899671D4B18CCD37F5F4D43AE90066DF26220195D6CF149AE</stationID>
+ <name>Urban AC @ WUVA-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395B245ACE6229E3A0502A7DBD8CD91A1F86F801887558F53E49A9B5638F4F1BC52</stationID>
+ <name>Oldies @ WWSO-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539509C1AE53923CBCF931944E8A95ED5823322EB6753D9982DB5983B45CBEA705F0</stationID>
+ <name>Jazz @ WJZV-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539523DFE996447DD161D355E4D300E2066A05A0F48E071E92CCD054AB44E9D7C04F</stationID>
+ <name>Country @ WFLS-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395D7733CC03A6309FF2D6ECE19BB125DA2BA1EACAA3E90C1F7E1FB76AD6F7C1ED2</stationID>
+ <name>Soft AC @ WSNV-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853957E4FD3AF1997B72FDAA5A210120D0599FE48FD1070DC6030863252C6E17EE324</stationID>
+ <name>AAA @ WKOC-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539571E08431651BC4ED600A3F2F939B551F4A327A45ABE83848F9DD19B4C5201C4E</stationID>
+ <name>Religious @ WXEZ-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853958439B0AEC83830B7CD62ED584FBBD0B5BD0B3A4DED3AA01933C466FE8F271908</stationID>
+ <name>AC @ WTON-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395DC61131C256CFAC05130B8CA0B60DAB9E6B07F7ABA1EA1B5A10EFD642ECB08EB</stationID>
+ <name>CHR @ WRVQ-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853957842FB860AF16BC3C7A6A2BEF46C40D44B63049DFA603D3E3796AD5D6F46C848</stationID>
+ <name>Hot AC @ WPTE-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539559FFC9AE7114ACA9D5B005D35B096FE2EE69F41AC41EABC0B221F467CBF4F8DE</stationID>
+ <name>AC @ WQMZ-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853955986D4AA0BB553809CBAAF16EEA5F2AE3DDFACF537833A4D903724519D0E8676</stationID>
+ <name>Oldies @ WZRV-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395B337667FFF872F7B0EC0480DB9A15D1BC93D08504D8D4F5D45AC05BCE2DC901A</stationID>
+ <name>Oldies @ WVKL-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395A08AFA662109F983987D6300048D90D4616D601CB89BC5B9EF18FDB43F70F026</stationID>
+ <name>Oldies @ WGRQ-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853958C1FAF7EAC9E9160C261EA5733EA95F13B5C7EACCB9B962E993ECD6C2DCA8E5D</stationID>
+ <name>Alternative @ WROX-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395FD5784906E0EAE2F09593531685E2C05C998E4FCFD2D47B81B9279E1A57C942E</stationID>
+ <name>Rock @ WROV-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853951DFE19B331FD76383B8E92FD896DD181AE3F43781DBBB05965B8A251D6FD0141</stationID>
+ <name>Classic Rock @ WKLR-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395DA5BEE2DB543D49281C664936B2836890538F99687205A74AFD7E4E7FA142261</stationID>
+ <name>Country @ WJMA-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395F924756EAF9063849BFF34E0E0E0A4BFC2A463C13C56008B63D829A09FCC72CA</stationID>
+ <name>Classic Hits @ WWUZ-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853956D9088587FAC0F0393B13B11A0B68CEE34FDCB08A52AF4AB7FAA73A9DAE70985</stationID>
+ <name>Country @ WGH-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539566F1542CC3466F4FC3B4D5B95EBFDFE98378D106F34E676C9479128C16862CA0</stationID>
+ <name>Rock @ WWWV-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853958284881BEC1F523677F0B11DB807E1EEC667319BE17C0408A1CEB90CE2D1CEE7</stationID>
+ <name>AC @ WMJD-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395E50273DACA625C9F2AFA7E0EBDAB9768458F973D6AC51538E94E9DB1C63621DF</stationID>
+ <name>Oldies @ WZZU-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539546D546DF01CA43D57AD1B65630ACE4BCC28C4680F72F58C8FFCF8CED0C4B7BA8</stationID>
+ <name>AC @ WTVR-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539532AF10E55D1C7FE0FA27429F546B40F57B0CC88ADDE476ABE0454CB84DC4840F</stationID>
+ <name>Clasic Rock @ WACL-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539599522DEAC4844C671828279112B311346325F8AE345602D47D15AA695E68FE39</stationID>
+ <name>Rock @ WNOR-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395C731F8ABAB3EE091A4EEEA911448DB606DCC6CCF555834ACFD05A9A1D890B560</stationID>
+ <name>AC @ WSLQ-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853959CA1EE8044E817959CC4B609C44C1584B19E32BEAFFCACC4B26B90E0EB9936A6</stationID>
+ <name>Rock @ WFQX-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395C031F7FC64F19D77D31D073E70A330464E5AD99F1EBB8CA950FA0EF9323D6736</stationID>
+ <name>Country @ WCYK-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395FCDCA79F7F5C8DE48225600F5965AA1EEB062CD75E854B2D78981A7AA65189B2</stationID>
+ <name>Religious @ WYFJ-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395BAE9A0CA028D4DE0AF4E61EF6C2A6501E6A101922044621876ADA7B290E729D3</stationID>
+ <name>Country @ WCMS-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853958A24905A0ABB32DB4B48FDBE645E3DA7B10BF1A8A6557786C39A6EF72162F3A0</stationID>
+ <name>CHR @ WQPO-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853954E898F3024282878365BA9E78EEB09384415CD946EE71A0D28DE26B5EC224C93</stationID>
+ <name>Country @ WNNT-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853950650FE81D55657AAFBC886985F7C1C5E65B1814969DA58B07EDC98316909EC21</stationID>
+ <name>Alternative @ WDYL-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853955C5FB044E262ABC32831F9C4085EF46B922328D2173C92CA8ECC58AF915CD12C</stationID>
+ <name>AC @ WWDE-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395EA1DDB74EB455C33FFF2BE32895B935727F577699B925AFB54514B48868718CB</stationID>
+ <name>Alternative @ WZZI-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853954E4CEB3DE49BD16AA3AC8537D25E069743F5652F3291F1D3C64FE98F54A70FBC</stationID>
+ <name>AC @ WKWI-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395AB5829E2C4C23839E9B8AF63F1102DCD9C8B11AAD65EA65166ADDA0309FC5B00</stationID>
+ <name>CHR @ WHTE-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395EA96902EAFEE01E5F0F05188F570D470FBE2BD8C82072C9C82C881DCE4362569</stationID>
+ <name>Alternative @ WRXL-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853957365CB8F3F91DE013A72973C1A9B420842BE260E622214CE9C735BD418683D47</stationID>
+ <name>Country @ WDXC-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539596CA452EEBA4D12D1DB7D8599F1FEA86E02A83DFE1EC63DB91EAB00FF7C92C3E</stationID>
+ <name>Country @ WUSQ-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853958EFFE47683280DE358197315DDE2F4FAC6ADED84921F26AD75242EC17E7DC89E</stationID>
+ <name>Urban @ WOWI-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395F57ED848B3AEAA31E3B60CC9AAF8C261455F61F45EBED8657ECCCE44EB619E2A</stationID>
+ <name>Country @ WCUL-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395AA556F85F08200BBFC5D579E6AB9498AD5AD793BA103DA9EFD9AF63FD3C26B54</stationID>
+ <name>AC @ WESR-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395D0D108DE85D4E565B50E57585D6B0A50BD56DABDCFBA4C00065EF95469363139</stationID>
+ <name>AC @ WMXB-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395285941F18E3FF6F7AB7C034486EA270460BCE7A3080908DEB250067140944078</stationID>
+ <name>Country @ WKCY-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539530684CCD7CE2E5781F85CACF52354FA4459180DC1B9E1C5BE144D3DD9CC8F2A8</stationID>
+ <name>CHR @ WNVZ-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395C7456D29D2A1BAF9473AFF74D78103156880217E97BC7FC33E20CA6F66D0D052</stationID>
+ <name>Classic Rock @ WWRT-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539565A53A8722C0116144B942038B58357AC552D764BC7590977CE4478938FFB6E4</stationID>
+ <name>Country @ WJDV-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853955BC48A1574B5DA8AB6B0A84127B3163588E6E81F0A51A1D1157FBF3763FB3288</stationID>
+ <name>Urban AC @ WSVY-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853957D8B7FC6D727E094F365F74ECBF2DC61CF71FF866954EF0B55D769C0457E92A5</stationID>
+ <name>Classic Rock @ WWRE-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853954594654B9C90DA4BDDABF2A3AC3EA06FFE1F19B685C9401B1F03211410AD3CFC</stationID>
+ <name>Nostalgia @ WMXH-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395319C200739BC501AFE2D2F480E54C73482762055F7A4AE6FC8EC6A3D51096B6A</stationID>
+ <name>Sports/News @ WLNI-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395D174CDF513A8E01A3E3773C71BDAFD630780CD8081795D905EAEF2D727F1FFF5</stationID>
+ <name>CHR @ WJJS-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853953EDBF7F54A5F027FFCA70ED3E55EAB0B17E5F6963D6AAF1C788158B2167C11E6</stationID>
+ <name>Urban @ WBTJ-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853950602E88CF228E08EF02C5EA1B786C33CFC04858C7E0A48DA7B135D50D6EBF436</stationID>
+ <name>Classic Hits @ WAFX-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539501AA747335FB4F55E81C613D493E012009DCAC0FB7BBF918718498D8E0469A9F</stationID>
+ <name>Country @ WPSK-FM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853954CE4AEB46F5C463C4A43752C132862BA1E4E440D044769964DF69903A435148A</stationID>
+ <name>Hot AC @ WUMX-FM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395AB1197FEDD4A82B57F5D5AFCE8EFFEEBA1A0CFD70C485FADBA3CFE45F2B4E58B</stationID>
+ <name>Smooth Jazz @ WJCD-FM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853957F3DB0E86C54B74CE267C45EA647C36F49C50B8D5A265F08BCBE648C8F96A811</stationID>
+ <name>AC @ WWBR-FM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853952C405593F7421111744C0965B0CD08318659B6614540ADF1600B5FBFAE78516D</stationID>
+ <name>News/Talk @ WSVA-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>0.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539512075D7FC9D7B7B21D65488B2510FD5A593310A4A8EB53A3A9156826BCA7ED7E</stationID>
+ <name>Nostalgia @ WLVA-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539586D354960ABC504DBD1424B21569FA8079FEF58F7181C263D4DC6FC31D675914</stationID>
+ <name>Christian @ WNTW-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853956AD0A1A5D8C8506EB6004899A885007219FF7CDAD629F084D84FEC974ECB1488</stationID>
+ <name>Nostalgia @ WVAW-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>0.64</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853950FE6453808AB4073B2508AB362B9643CCF01AA42E77AC14BCE232A5E3EC22648</stationID>
+ <name>Gospel @ WRJR-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>0.67</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395846CA4FAF28F67E362FA666523321CDCAB423BEF366784D486FD856B9F022399</stationID>
+ <name>Sports/News @ WFNR-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>0.71</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395856469CFBD409A605BB54446305283D58D0AB95241B029E192825354EFED1362</stationID>
+ <name>Nostalgia @ WMBG-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>0.74</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853951BFBA39A4C0622FAA85202DAD6544E4F2012887CEEEA3AF7F591A45AAE9978C3</stationID>
+ <name>News/Talk @ WTAR-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395665F97AB292AA9B788E65CDA233811101CEB53BB76D84C40CB59A4C522BCC611</stationID>
+ <name>Gospel @ WGGM-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>0.82</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395ED13CD401CC44028B41A03B2AED43D8220F7AF9E6C899181BF151E8EA03829C9</stationID>
+ <name>Sports/News @ WRNL-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395EB38A45BB702DDEDD3BFFBD980B4B746E98134B592AE80417322412F9AC80783</stationID>
+ <name>Country @ WNRG-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>0.94</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395F99B7DD285DE7849D573FE50D5DDF730657B3405D3DB508306B72C43CA180E7B</stationID>
+ <name>Country @ WXGI-AM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395160DD5441CD0017DA8E8B14A0FF17B4A3380AA0B591FD55204AA630E79CE5002</stationID>
+ <name>News/Talk @ WKCI-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395DFD77CE78204F74DAFE0EFCC30E7F8A9416F8819AF7D7AFCEFF153112FA4759B</stationID>
+ <name>News/Talk @ WMEK-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395B273835EB9CF55793B7BED893FB9982CB6A009D0E42F0854C2A773EBC8F38522</stationID>
+ <name>Talk @ WLEE-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539555975124685B14CFE9513CA80AC24B169C35597E69327BE7B9F4C1BAC6273BD8</stationID>
+ <name>AC @ WRAR-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395D57D3E8DAFA5BB36BCFF9C0E17F0D0E8E2D024DF53C6599139867B380FC36817</stationID>
+ <name>Religious @ WFOG-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>1.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853955ABC7F81E554BAAD48712A00B302C726C7244EE76EC515DC890E8844DF411B11</stationID>
+ <name>News/Talk @ WINA-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>1.07</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395F2D77305A43CC6530A05621379D434542560CC31E2FE76A3901F3F6ACF1C1363</stationID>
+ <name>Religious @ WCKO-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>1.11</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539513008938E2790E8CA380571C2CB71E1220B25E5C2200B2FC8339EFBA680F08F9</stationID>
+ <name>News/Talk @ WAGE-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>1.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395C1C66F226FB3D35B3589F26D3AD33952AC6199530D4E15DCF68F38F4810B1412</stationID>
+ <name>Nostalgia @ WJOI-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395A27229FFB6F4DDD04B938378ABD3786BBBF0DD93D8B7A675041A14B74CD6969E</stationID>
+ <name>Religious @ WGCV-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539552FF1D46DFAE6F6CCAC90F593A615BEEC35FEAB6784894DB019BDE68B2783DEB</stationID>
+ <name>Religious @ WPRZ-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>1.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853958F566B983765F10A981EA3A628D692DB5F03835048B56FCA8CB8FB6BEF5A7B4C</stationID>
+ <name>Country @ WHEO-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853951596B0D736043E206A5F5C815924B2AEFFC0B062F461F96C8CF6B886F9BE30CF</stationID>
+ <name>Childrens @ WDZY-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853951EB6D1CE8E5022852EC209BFF44BC8D9DA1043614C4DA05D6FBA298F68B0E6AE</stationID>
+ <name>News/Talk @ WKCY-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395F8B3260BA6F5C091D1963205C4ABF2FEF2E08D0F87E4E2DD6B6A9CA217610D96</stationID>
+ <name>News/Talk @ WGH-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539558228D56D71812B33BCC3F664D2CB4CE6D7A28CB52C7AC70F31BC3820DCDA682</stationID>
+ <name>Nostalgia @ WVNZ-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395284DD6D83A6F4A542DCCD1D6FFA7F7E471B6E143738D7EA397F498423498E434</stationID>
+ <name>News/Talk @ WESR-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853958A5CE434B2014AF2686651D884E743A07CF9B1362A9DD66408B95847A2D17C37</stationID>
+ <name>News/Talk @ WVCV-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395CF4AC2CC9AE3A1BECE754CF0B0975304E983A370CE6714CAF8E6B577D8233D5E</stationID>
+ <name>AAA @ WYSK-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>1.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853958C850830FEC6D0E12E588E9B3AA3A47826D9072BE973D88B5876C20216D327F0</stationID>
+ <name>Sports @ WHBG-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395591A5A3A323AE61750BAAA0CC8B5654E48D59EF0215EAE96F860705F1A8C6D6E</stationID>
+ <name>Country @ WHEE-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853953E06E55D926FB27B6F6FD5207E599C42BECC23357CFDD347F5C2FE10D4543187</stationID>
+ <name>Christian @ WBTK-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395E7D4648914EA3C26C4F63E698BBD0A388C1A10ECF36AE1D222F57CF19842132B</stationID>
+ <name>News/Talk @ WINC-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395328913F11B1D423F4B254BC6C3B7514047E21591DBCE38C3952F14DF11B40CE9</stationID>
+ <name>Country @ WKCW-AM</name>
+ <shortname>104</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395AC65648D6E657E363E9A14CB71426EBA2E5C779B38F3B2A050F5621DFE0F279A</stationID>
+ <name>Sports/News @ WFTR-AM</name>
+ <shortname>105</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539516820266BE36DBB7FCEA7642BCAAE2B60DB04562FF493A995F8AD55F4C754669</stationID>
+ <name>Nostalgia @ WRAD-AM</name>
+ <shortname>106</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395E2E707845B031118E0D4C0448A3B6740E84AEDAF96C536C7CEBE97ADD98FBB14</stationID>
+ <name>Religious @ WBTX-AM</name>
+ <shortname>107</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853959C10D843D447B635F77A88A1E809782B0F52F4D331ECC69BFCA40FFE2F16DAD0</stationID>
+ <name>Country @ WBYM-AM</name>
+ <shortname>108</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395EF2C7CAEA55565651DC161B7E5E4FD675CFD218A41AC009BD4406D0DDD3DFA53</stationID>
+ <name>Gospel @ WREJ-AM</name>
+ <shortname>109</shortname>
+ <icon></icon>
+ <frequency>1.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395FA9217B50864EF79712E03961964029DEB0E11F0C14B1B63BDBC6D392CB0D503</stationID>
+ <name>News/Talk @ WVAB-AM</name>
+ <shortname>110</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539502C147535C8BE496121132CFAF3996B111F2ECC2970C1850ED0B5FCEEBD1FD93</stationID>
+ <name>Country @ WSWV-AM</name>
+ <shortname>111</shortname>
+ <icon></icon>
+ <frequency>1.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Virginia_am.krp b/kradio3/presets/usa/Virginia_am.krp
new file mode 100644
index 0000000..82ec861
--- /dev/null
+++ b/kradio3/presets/usa/Virginia_am.krp
@@ -0,0 +1,358 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Virginia</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385395BA4E29A4B6439D720100641A7EB786B36DFE754A3AC514E37F26DE995D48CE5E</stationID>
+ <name>News/Talk @ WSVA-AM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>0.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853951DE0BEFDBEBF3069255D8B60E6D6BCDB3CEE97383530A96166625AB65863C59F</stationID>
+ <name>Nostalgia @ WLVA-AM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853951E1ACF14EEFB4376A7B42967467BD05082521D76C50E6EE1E6FA20389DE7FD0A</stationID>
+ <name>Christian @ WNTW-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853955E884C697777346A5E6CBE1A455F8E9DD707110C290043B06100C32C7EC7EE2F</stationID>
+ <name>Nostalgia @ WVAW-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>0.64</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853959429648E4F5C350B39566FD9FDF999D98024BD89A6D356EB515CFD8398D07BB9</stationID>
+ <name>Gospel @ WRJR-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>0.67</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395DA72BD26E757689135D49E0B470B0B9B6F15CBC549D191581E019E38F679FD4A</stationID>
+ <name>Sports/News @ WFNR-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>0.71</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853957CCF9B8098FD8E72C8A95D193C260DFC1F8FAC2B6021FDD5C34776A408D8079D</stationID>
+ <name>Nostalgia @ WMBG-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>0.74</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395764317B7641768A3C2B8F25A919E32DC7E9085C773A99685D6E6539E4F1CC214</stationID>
+ <name>News/Talk @ WTAR-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395F3D18D3454A4B46050071665E2C5F3C764081F58C770AB939E0C59EE3D3E967E</stationID>
+ <name>Gospel @ WGGM-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>0.82</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853951E0F2BDB33849992517CF3AE3840ECD5535B4C541A5B09C82FA15512F6474224</stationID>
+ <name>Sports/News @ WRNL-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>0.91</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853959378408BB861BC7AF9B9E135E7FC8C60A3BC756669041707D45085C204DEE1C4</stationID>
+ <name>Country @ WNRG-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>0.94</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395420A484B725AED21BBC05BC508B26E59117E100CC492BC190162E58A1AEA47F6</stationID>
+ <name>Country @ WXGI-AM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395C5979055899A82DA0C26023B4150C1DDD3A51450F0A4D78E243A4CF778C84E44</stationID>
+ <name>News/Talk @ WKCI-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395760B26D1E209C97184A91EFD1DCFBBB8724E2AFFF4BE44990A9815E8FF1CA256</stationID>
+ <name>News/Talk @ WMEK-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539540B1D5610CD1260E81E43974FEC5F6E5FC2EDE45250F992AC0D189FA964D9DF6</stationID>
+ <name>Talk @ WLEE-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>0.99</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853951C583F90BDF9D0A505FDA7710CA110CFC03A47A6AE37A737CF38E23F65819F04</stationID>
+ <name>AC @ WRAR-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853950FE9817552237A2F02CD0CDFE8D5840DD82B51DBCA792488820196F6D5BC7361</stationID>
+ <name>Religious @ WFOG-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>1.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853955B3AE1F5AB75B10223F8249F1D5ECD987CB79303B97FF4DA62EF7D0D3CA13CC9</stationID>
+ <name>News/Talk @ WINA-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>1.07</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853959C6400EAE124D87FA6E9DBD719F2FBBF219BE03B86B715FEC43D9F6672B9A9D9</stationID>
+ <name>Religious @ WCKO-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>1.11</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539517D806AA58274A31802F72C12A3752901BE1C9D761822B47DFF0019892D267F5</stationID>
+ <name>News/Talk @ WAGE-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>1.2</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395E33454CFE6A244BB5769DEC7673522B2FFED1243E74E5792FEC990C7B7B71DE4</stationID>
+ <name>Nostalgia @ WJOI-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395802F7BF7D57AFE2979FC7A02A25F343E085925DB805B66B7E660C1507D8F9568</stationID>
+ <name>Religious @ WGCV-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853952E5F77322CF30BCD827B8E141AFD336C1CD9A3A2364D66BC39DFA88F957322DC</stationID>
+ <name>Religious @ WPRZ-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>1.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853957A5516D56679F06F532A72A3BC7CF855936D1EAA762DE54ABCF666CEED0034C8</stationID>
+ <name>Country @ WHEO-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853951A57404DADBE5A9D7829DB6422B1037425817F0B36FB063801645E52B0657208</stationID>
+ <name>Childrens @ WDZY-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539532BE8D1DD589F0F65914F25693F3357ACD64DABC0C5320FE6CAB5CE7797BE07B</stationID>
+ <name>News/Talk @ WKCY-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853956EF08177CA0A5B7111A4E691FDB6F831D88C3F627812E813C0A907F1D7850D8D</stationID>
+ <name>News/Talk @ WGH-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853951DA8C4F344F2E41B18D4A97524AE5486C431C085D0276B506B1759AA3E3C8FB3</stationID>
+ <name>Nostalgia @ WVNZ-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539567F2F11036F5CA9E03CBAFEE13F9D5743921A1FEAAD64186F3F8C5967B4D5495</stationID>
+ <name>News/Talk @ WESR-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395E8D5B9C3F2B7903781D10065B7981A689C7B580377EDF4F03E690B8A70E1ECAA</stationID>
+ <name>News/Talk @ WVCV-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395683F3C1EAA46F1B4300E524F87CFEE2A4C8CC852C7FBF6D2B2327EE7D042D495</stationID>
+ <name>AAA @ WYSK-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>1.35</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853958151EE57B5E1A79EBC0240E31BFEE6C7A8E14EEAAE210F5370A42F14F85B06F1</stationID>
+ <name>Sports @ WHBG-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853959FAC0B24276E9B103EF2DE41CD501ECCD79BD923A6860CAF5BA476488EADDBCA</stationID>
+ <name>Country @ WHEE-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539584F2AE1C57AC2F6745FEF6AA5DD9ED04F8AE4BE8C9ACC8D87F2430ABA67D713E</stationID>
+ <name>Christian @ WBTK-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853953BCBE9F2FB44BB41D3F5393E5084613C325489C495C356CB136315C15020D97B</stationID>
+ <name>News/Talk @ WINC-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853950B715A8726C1503FBA61FE4FBF11C9D9AE111D40E32E35A81DEBFDFF58C8258B</stationID>
+ <name>Country @ WKCW-AM</name>
+ <shortname>104</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539596C434D73F4C1CA0F7A6AB7280037425D74FF09F4856BC2AA37135093BE9E874</stationID>
+ <name>Sports/News @ WFTR-AM</name>
+ <shortname>105</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395BB5D259318AAF0E4F91441F6B307C06EF0E749D6F4A2C1D6615F15BBBCA00C37</stationID>
+ <name>Nostalgia @ WRAD-AM</name>
+ <shortname>106</shortname>
+ <icon></icon>
+ <frequency>1.46</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395472E9907E940DB673D3E32B9CB1355BC77E9388DB0E13BE325BF6AC593F47C97</stationID>
+ <name>Religious @ WBTX-AM</name>
+ <shortname>107</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395C8FB258E57531B0FBA7417E3144CF796CFCAD262A83B5A212B69BB1BEC634E91</stationID>
+ <name>Country @ WBYM-AM</name>
+ <shortname>108</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395E0EF0993B7667D6EC7C79ACAF55376CDE6D8E918C503C10C3D12DD9717D8F9F7</stationID>
+ <name>Gospel @ WREJ-AM</name>
+ <shortname>109</shortname>
+ <icon></icon>
+ <frequency>1.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385395F6431848D1DA3D32C38302FA2AA3992936E15C2D0F5EA1EDAB0E662432CFCD18</stationID>
+ <name>News/Talk @ WVAB-AM</name>
+ <shortname>110</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853950260CD82658216B23A24022735D14828939C6A671DAA49465AD7D96ABC735AC7</stationID>
+ <name>Country @ WSWV-AM</name>
+ <shortname>111</shortname>
+ <icon></icon>
+ <frequency>1.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Virginia_fm.krp b/kradio3/presets/usa/Virginia_fm.krp
new file mode 100644
index 0000000..2a343a6
--- /dev/null
+++ b/kradio3/presets/usa/Virginia_fm.krp
@@ -0,0 +1,558 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Virginia</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385394B95374FD485AAD4ED523D06ECD7E5122C588E2297AA37F4C06EFD0008E5675F1</stationID>
+ <name>Alternative @ WXJM-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853946C200071B870FFE7AB5A059ACB5E859B5A51F17624CBB68422926F7CCCE729DE</stationID>
+ <name>News/Talk @ WHRV-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>89.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394893E25BA4C72DBBE7971D62C1476114A81CD8FE831AFDA08878AF948F9F215A2</stationID>
+ <name>Christian @ WPER-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853949B69DD626D5947387DBBB2B46C6FC58F2CD7C99EF91CD6B3742F76301966B289</stationID>
+ <name>Christian @ WWMC-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>90.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853945BCC2535222D09F13F944FF4CD5FB667EF54138719E95D6421D71B5977B00547</stationID>
+ <name>Alternative @ WTJU-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853948DA6D591C90EF75E35B62F008ADFDD0828472DA70507E793C07934317F7844D7</stationID>
+ <name>Christian @ WEMC-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>91.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394D3A056B3B0880CB3A856A258271AC692EF40B740695F92E03FF0F9DFDDA7A3DE</stationID>
+ <name>CHR @ WXLK-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394BB6093474F4E29074F3179756F6AD9E71776730C6840546124F3A6205F5AB8CC</stationID>
+ <name>AC @ WINC-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394C7950B5479DDF5D5F54E56F9F07B6FD86DDF8951B5067769F8E2ABEBDC126298</stationID>
+ <name>Urban AC @ WUVA-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394F6C21CE76E042D2BFFB6F8969763E295D49D7A95B1177922C901C77CBECB11AC</stationID>
+ <name>Oldies @ WWSO-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394DFB1A5BD015341ADC13F3295182D98EB2D96EAFAAAA0F28CE78C3287FE56FC7C</stationID>
+ <name>Jazz @ WJZV-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>93.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853943924324D7E312D3A09BE217FA7C656901323531ED69DD24B1AC9FA86C486395F</stationID>
+ <name>Country @ WFLS-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394C2AC43C43B22D29BD98F228487BB48184ACEC59B00BAA4378186671F150CDB60</stationID>
+ <name>Soft AC @ WSNV-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853946AD4DB44B823297A462B6FB39D83F56AC10081D0FC980C42953609D103D2028E</stationID>
+ <name>AAA @ WKOC-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853948C46F6C1A73A685CFE95F02818ABEF476C17909C98742008714B98C1F529F99D</stationID>
+ <name>Religious @ WXEZ-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853949231258306993F93E258067293A3024FB989FEAFC884F05ED798B9A2748136FE</stationID>
+ <name>AC @ WTON-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853944AB52B2B70522BA081C7FB9DE5272B13FE33D450BCE039ECFA6B2A6F7557F7AA</stationID>
+ <name>CHR @ WRVQ-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539443030107C0BFEDB94ACB3237A0180998C67E5075D1E8EA9FF29FB99B9BCA99CB</stationID>
+ <name>Hot AC @ WPTE-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853943A549F9914437DC8858EAF2A004DCA6D1354D181935B5B0EEF9508668E35408D</stationID>
+ <name>AC @ WQMZ-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853949AE7256C034460F320A8FB5171E7380E356AB24D7A15CBA81DBE7912EE4DC594</stationID>
+ <name>Oldies @ WZRV-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853948AD9ECE612386BBDEA2ACE4FEAAA04E0030B7475E6828C806F3649E4A292DB37</stationID>
+ <name>Oldies @ WVKL-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394E33EC0A3D8C6EB27074B6D946CAACD98D945EA1A4CDB4F1AA6ABD285657AD54D</stationID>
+ <name>Oldies @ WGRQ-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394F1C53399353349890CDDD06F7A0AA8FF41BB2433D3025D288973C7EBDF674296</stationID>
+ <name>Alternative @ WROX-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394859BEB0D51070BD3C389C4FB94EF0A17ABB77348E10EF548AA0E1E070E625C07</stationID>
+ <name>Rock @ WROV-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853943883E6EFFD2A3583754A499442BC79C1E8C293C1806612E5DF62B75E803B549E</stationID>
+ <name>Classic Rock @ WKLR-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539454C290815BE4400DFE0BC86E8D5DB78E354DCAB62836D330C8955E7814ADE8E7</stationID>
+ <name>Country @ WJMA-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539486CDD4A70B4CA5540B0B695FE199AED5948E2C4D0FE4EA01DC263D41381E7899</stationID>
+ <name>Classic Hits @ WWUZ-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853947C8A840F79AEF4D0E4380EBB88B4969B490610BFB5D471B04A2AA27DF48AF472</stationID>
+ <name>Country @ WGH-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853941E3DF04547343AD521D5A1993DA4CA0BAAAC1C446004DFCEB03756BD2CDB74ED</stationID>
+ <name>Rock @ WWWV-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853941674130CB8A9E542C8C1D9557C8D1115E7666A1F778086435F4D54070CF57A06</stationID>
+ <name>AC @ WMJD-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394332E0AAB0357F3DDBB4C0804F5250672538E53BDD4B26B492D08AC4A253D6437</stationID>
+ <name>Oldies @ WZZU-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394304967EFD418BE623E8BE8A798111708ED778265832428D2CCBE6812F8370078</stationID>
+ <name>AC @ WTVR-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853940E33988BDC88F35A600D2DF8D5AFC518BE8F3A66218DEA4280C4E63E662629EF</stationID>
+ <name>Clasic Rock @ WACL-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394FCF514EFAF590D1F365A864A1DD35B4C9735B1885F6E652E494DB68553AAF0B3</stationID>
+ <name>Rock @ WNOR-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853945CCCC54C12750D4CD37B58C668DF593E33775D46DBD3505FD55BD787DE4F0DC3</stationID>
+ <name>AC @ WSLQ-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394B09A3AC5B1EBFD19E696A73E6F5D6AFE426ACB3102E74FA7BBAA8CB6B43C424A</stationID>
+ <name>Rock @ WFQX-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539497C7B5BBBB80D7F45A24F1877EAB618960A90AF9EB3DE9570716692ECF1E4F87</stationID>
+ <name>Country @ WCYK-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853943CC69D0E20223597161B7F4DA6A3024C2C3D649696F5CCA83506BE86A719D773</stationID>
+ <name>Religious @ WYFJ-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394250AE950A3EE703DBB03946A7409772805D1B2807209FCC166104BD028041605</stationID>
+ <name>Country @ WCMS-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853940BEA8B5A9F97921C26B82BBC0BEB7FB2983D6C0AB02F717F31D02A17F2DF162B</stationID>
+ <name>CHR @ WQPO-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853945EADE925B53905343C0DA672CADE354EE479E69DD0ECAA2A9D4477BCA74DFA24</stationID>
+ <name>Country @ WNNT-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394C895995EA2CB65EC56AAA9B494F51660BA218380C6B70E24D379E7CB9B0E9969</stationID>
+ <name>Alternative @ WDYL-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394406DD4F7A07D0B25969D05BAB3997EE73311D597FE67763D8BF40DFC8A673E3B</stationID>
+ <name>AC @ WWDE-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394AC4B83E87B324A902AB1C53BB863114CC1E2192829E266648549928BAD70BF50</stationID>
+ <name>Alternative @ WZZI-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539472EBA487E6B8F70EAB217C7B97900220346CAA92E7C8BD80C9E655E4AB5E4968</stationID>
+ <name>AC @ WKWI-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539477268FBF2FF36CFF880F98EEB79CA3DE028CAECFE10E7DE4CAD1372E167BD20D</stationID>
+ <name>CHR @ WHTE-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853949309944727BDBC62901E39099C4F15003E3657293625EBF695D6CE2DD9A591CF</stationID>
+ <name>Alternative @ WRXL-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539409473A8E9563E29F93A48D03909D01D6171287F168DE69373113B5402A408D5D</stationID>
+ <name>Country @ WDXC-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539408F2236F5D17B438D7290D95430117D2BFE1FD5FC899D42533868219F86920DB</stationID>
+ <name>Country @ WUSQ-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539487421B3BC357F34370FC5D0BB7298D426085324351022AF8C6D041FABE177012</stationID>
+ <name>Urban @ WOWI-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853945E31B77081BDB76BB2165CEEA12F3BF8C5A19055042A0ACC7A534D1A2801B33E</stationID>
+ <name>Country @ WCUL-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853948EA742ECFBA775AAC1B5019FDD94C88A33C7F855D36F24DED6096F1904B014B0</stationID>
+ <name>AC @ WESR-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394056B60EF316D24B00142ACA0BBA52781E24783FBBB776F83AF9F4415DB05593D</stationID>
+ <name>AC @ WMXB-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539477D2DD2E8A42BAE006AFB261C91272453E2057332D0EDE54F7D02035CB382147</stationID>
+ <name>Country @ WKCY-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539498547955C96499ABE1D20018232CF96DDFA0319CD7586B88DD0CF40309A3E4E9</stationID>
+ <name>CHR @ WNVZ-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539458F703BEDD1973D5D9829314CD58ABA4ABF8CBEEEDF7C7D4EAE291C426BDC3A0</stationID>
+ <name>Classic Rock @ WWRT-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539435A32750C446DC9FD024509239260E3DD390C1F7AB4F806D7D130E47479F7997</stationID>
+ <name>Country @ WJDV-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853944B96B0D50E7A3B437BB133CCCF36EC6ACA97C14C80F98BD2B66CA55940266B7B</stationID>
+ <name>Urban AC @ WSVY-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394D271D07ABFC0727E35A29077FCF6C8242CC63F06EF9A5DE0667194C109D12A82</stationID>
+ <name>Classic Rock @ WWRE-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394262444E6187B375DFD8A6CDE741CE8DFE495C0823396D9798006147A1365EDB0</stationID>
+ <name>Nostalgia @ WMXH-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394813CA2EA67AB2BC463DEF6ECCB95633397B1E56B9F7602454CE9B8081089ED71</stationID>
+ <name>Sports/News @ WLNI-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853949BAD458996B08E8D7BEE0DC331AFAFDAA946D9483BF8AE8A72A0FADE23932800</stationID>
+ <name>CHR @ WJJS-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539409DB52B90BD07C615F04451081D45EB387804AF7BDC310B422AF68217734AA50</stationID>
+ <name>Urban @ WBTJ-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539421264ED550F3DDD4C4CA09A3D78CD0E0123E6A9410628E940C1B6F145E1CBACE</stationID>
+ <name>Classic Hits @ WAFX-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394639192798E10C997ECA7473B12F0BB136FBDD11621D0882EF27E6F8361FCECFC</stationID>
+ <name>Country @ WPSK-FM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539470AD226778E3C55EB18E1F16F9FEF33AA953B4E4BA601E56DC59745DBFCD7F1C</stationID>
+ <name>Hot AC @ WUMX-FM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394E3570A51C1D1BB1FD5930041B2AB54FD4AAF81C30FC2E9DF1A8B60A42FCBC7F6</stationID>
+ <name>Smooth Jazz @ WJCD-FM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385394FC298AF55E0B5069ACFFABEA5D0754373D6BBC4E4817DAC506B049F006B8B2BE</stationID>
+ <name>AC @ WWBR-FM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Washington.krp b/kradio3/presets/usa/Washington.krp
new file mode 100644
index 0000000..6032267
--- /dev/null
+++ b/kradio3/presets/usa/Washington.krp
@@ -0,0 +1,990 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Washington</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385396285DF4FE293D7CA94F27B393B6834DA8291980CDDC862235E9ED2297A3BD55C2</stationID>
+ <name>NPR/Jazz @ KPLU-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853967DF485C3BC016DBE1322551EE62347EF9F514C8A6385530C4C08E129C786BBE7</stationID>
+ <name>Classical @ KFAE-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>89.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539669682512347B8B358706583124EAB8FD66E517670D4F9B0C15428B3FA8891D43</stationID>
+ <name>Eclectic @ KAOS-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>89.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853962BF54A28A3F554DADF1C358315B436E95DFAEA221295C3BC76465D450DF4F741</stationID>
+ <name>CHR @ KNHC-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>89.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853962F24E507C17AFAF24035378ACBE270B40FDC0C77E04ED844A34C7F15B5117F9E</stationID>
+ <name>Christian @ KPLW-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396ACA45177071C1622851CEB93906B64726C596B64795FEC5AE7CDB1CDDA5CFE12</stationID>
+ <name>AAA @ KEXP-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>90.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396E7ADC1CA56FCD1D6CA0CD4C423DFB5471701AF054E658412F7DF54CF553F475F</stationID>
+ <name>Various @ KSER-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>90.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396D81C399A5C046FB0EF84FC2EA4E97399DBC0F95CCCDB8267C90636DB86088B38</stationID>
+ <name>Christian @ KGTS-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539655A6FE6F98593B0B4EA5D0BC230C150FBC52321E07C2742379B81386F3E702BB</stationID>
+ <name>Country @ KULE-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853962C77161492315A54A810740027156D3B40E5B0030B8511A2EB9F215FF466ECEE</stationID>
+ <name>Spanish @ KZHR-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539618D6BB06C961A80291E599FC987F310F51001F8AB6AF7F9CCC01EA218C265DE5</stationID>
+ <name>Country @ KNCW-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396100DC901DDE80FA4F8143761E5C56B691C5F9AB6FC492F32A38088F7EAE4CA79</stationID>
+ <name>Country @ KDBL-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853969FB96940B6EB9C62DCF9077250FE81B0C55FE7867E732EF3ACC4E79A0639BE7A</stationID>
+ <name>Christian @ KTWY-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853965E4CC4EA92E1AEE62CF139A24F9E9046D6FC30D8C8A650B96CC28A8A5782F3FE</stationID>
+ <name>AC @ KOZI-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539695973C65DCF2157526AA478DC2AFC2F86CADD7E3AEBA85C71889143E2FADB4E9</stationID>
+ <name>Gospel @ KGSG-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539600071748F4E2960B7AD65B57708A881E075DDD0BD8FC5D3F6D944771458A0DEC</stationID>
+ <name>Country @ KMPS-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853965449C4207FBA022E3ECC9BE92E2B42363920CDF6A68AB59B94644D0910A090A1</stationID>
+ <name>Rock @ KATS-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396EF86B094B6036BA2CBDC3E6CF4464B9E0A334C1131516C6DBD0B3CA5F69D904B</stationID>
+ <name>Country @ KIOK-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396870D82D866629170C0E31C0B082D87D605F90B7E645C051C7D79EA660ABE852A</stationID>
+ <name>Rock @ KUGR-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396C71A37A235A835D08068A929F02EF48BF16A603657BD8CE48B3285FAFCA10F64</stationID>
+ <name>Country @ KXLE-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853962BFAD3B7FDCF3D0FA3B281EE17F99B4755CDC87994C2BA874542796DD90EF5C1</stationID>
+ <name>Oldies @ KNLT-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396CA3577EB600186D802ACBDA831D51EAF3A7E5B89B8F578906D30F15AB3D7F4CC</stationID>
+ <name>Country @ KIXZ-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396A5F62843D74EC3F77C97ABA460C2A448CCB216BF6E16BF3F5A2FE4F101D75E9A</stationID>
+ <name>Spanish @ KRCW-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853961041F93D0CDC3E2C217FCAC6F90A0B07FAB8CF0CFA480799F6693911ADFF6E30</stationID>
+ <name>Eighties @ KYPT-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396574B43EEDEC97A9BDBBB8B403FFC900F7CFCA368DF1B9E726EBC8CCF6634E5CB</stationID>
+ <name>Spanish @ KZTA-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396F81B40A29AAB69523CDD832DCC53B0CADDDC74B042262426AB2129BD34DC247B</stationID>
+ <name>Rock @ KXRX-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396A5AE09F3A568EE5E914C057BC3CF56ADD47F833EF5C0A1D60C5817A889B7B26A</stationID>
+ <name>Oldies @ KBSG-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853961483B5E9581A38D5A0BFB65DF0635ACF7326FF93031BC3640EF7467A478B5E99</stationID>
+ <name>AC @ KZLN-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853973962CDD3A0789931B96C8AD8C2593FF11666D7CDECB90E3338223BB5C9C56578</stationID>
+ <name>Country @ KYSN-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539738D823C24CD56B3FE14776468B821B0649D19528F46BFD390A6A30FF1299C2A0</stationID>
+ <name>Classic Rock @ KTHK-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397BD9933457EEE2663279E53541987807DC79E80359EF792995100B0A00A2DC2AD</stationID>
+ <name>AC @ KISC-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853973301BE68B84580DE4E93D3022AE46E9F72D0DFFE5EDA8D21C512068C61B200AB</stationID>
+ <name>AC @ KEYW-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397B86EF5581635DEB05FC4B2D2DD16F13BDE09F13326D60D02B17E56125006CB02</stationID>
+ <name>Oldies @ KEYG-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397C2EE1C4214CE18EC18DED21167C3B5CDCA6228BCAAA44D69A6B35BBC89C9452F</stationID>
+ <name>Classic Rock @ KKZX-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397F8FCD456646441C5C964A0B3E21F0905E9978233736E2A65938CDEE57CEEC343</stationID>
+ <name>CHR @ KUJ-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539794C53A30A79C9609DB991E35884BBDABAFFCDA28D10C60C5DAC438D35B618997</stationID>
+ <name>Hot AC @ KQSN-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539762FFE8485AF2BEC9A5F6769F9A121882332114AF8DDE5FF0075D3E353EF06F65</stationID>
+ <name>Country @ KZZL-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853970A3E5BF6C7B4D6E0A4937C4D977A7E952294DBDF00D3113FCCEFD94A31EA73AB</stationID>
+ <name>Rhythmic CHR @ KHHK-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853977A3CDEBA9CBA177A87A09D2034049AC079ADE6C1EA92D474718D9B65375A731D</stationID>
+ <name>AC @ KXLY-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397ACF669CADC0A934F1BDFB9B0D7EECB314F02C6957D123B837FE609D02A426DBC</stationID>
+ <name>Country @ KWIQ-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397BF2285A346B164489BCA31F9BC519CC3EBEB8AA6137E519AEB8606DE60C6A6C4</stationID>
+ <name>News/Talk @ KHSS-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539730A6BA5B120BF771A145840CA0A427CEC98045A7CA5F1503C03739597E86E040</stationID>
+ <name>Oldies @ KEYF-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397D7218D9A873395FEAE7E26A5BC6832F218808BF05DC4C134F35611D459BE7F34</stationID>
+ <name>Religious @ KGDN-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853977C7614E1CD0DEA937E2B5286F7D21D0B4B8F720DFB60103F3A3CCF51FC4B0587</stationID>
+ <name>Hot AC @ KPLZ-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397083DD1B763A5CB85F229B343765B2292103681ABC5598458C1A6D114E48CF255</stationID>
+ <name>Spanish @ KMNA-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397B11B663571C97A1E6F3E3BDF57D70C0CFE9A9679EE9D3E0504D6A9493EE30302</stationID>
+ <name>Religious @ KTSL-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853978897B16D40643B4DB63566FB98239CA1DB8FC89DC58179E5D78D47B157C153C8</stationID>
+ <name>Classic Rock @ KPQ-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397456E87F759F5B0B1FB4D7D49E793F4B6DEFF42B9AE64F49E24344C421A42DEA0</stationID>
+ <name>Country @ KYYT-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397FF513F6B653559E567B56BEE14EAA948CCDA36A3742935B481F2A6BC4AB08A6F</stationID>
+ <name>Classic Rock @ KZOK-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397342968D2446F6188078A3BF4D3C8BA78A5968D823FF26FD3B6BA3AD5C8D51657</stationID>
+ <name>Country @ KORD-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397ED2FF356C96DC929AD33C36F19B3EBD1E621385079A800E666E28FE2DCC459BC</stationID>
+ <name>Country @ KMNT-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397102AD645AB3371603E433CDE468B9469C6CF5B347D50F287245CF447E86E714E</stationID>
+ <name>AC @ KCDA-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397F84878E141367175D1C8654E4616B7A3502EACAC83A72E2C5C77CF518D3CC3EC</stationID>
+ <name>Oldies @ KKXA-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853973B19F14342A8CD84CDB3E6DDCC68F45AEE9B556958A1CCE56D6B4258BCD221B3</stationID>
+ <name>AAA @ KMTT-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539712F0B827B2447FC382707D1D6FBE57A6ED7AB69E7F6168398AF0D5F9FBB6C9A0</stationID>
+ <name>Rhythmic CHR @ KYWL-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397553915F93B06A0D9F21AC02B7795EE25A929DF2B2719D34597348FCDA06DEFBF</stationID>
+ <name>AC @ KAFE-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539731EBF7586E2E2F62229AF4E99EEED0BA58EDE3114818D11F42962CF90F5714D1</stationID>
+ <name>Christian @ KEEH-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397E7B1C850EF794D8FB1C59C5A272BB5A1465D6977B7B07199F5598989AC9FCF13</stationID>
+ <name>Country @ KKRV-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853972BD9EF61DDC7D50C9C38D1AB56FEBC95CA20CD97C9B3905C3B6CC658771B328B</stationID>
+ <name>AC @ KONA-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539743BE38C82A34ACFABA732521962D0E83D739BFB1AB8DDB0726DF2927679F5799</stationID>
+ <name>Hot AC @ KLYK-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853974D6EF10E8283161151220CB6D9933FA8B51A822F7F6A3A9D3F40CB883AFA166F</stationID>
+ <name>Alternative @ KAEP-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853978675AFFA9B3336DBCC8624B8DCBF4B639B35F64125C2BE1A939A6B9811C107A3</stationID>
+ <name>CHR @ KBKS-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539785C5F9122C57D72D3A2B0D3DC7210211314B00DD57E2AAB5A935B91D6B990FC0</stationID>
+ <name>AAA @ KVLR-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853975FBC08F4A18974F0987278CE5C80443B95A7215A9668D323FDB0BD5301C5F4D2</stationID>
+ <name>Classic Rock @ KEGX-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397A88995120692FCB2EF2E01B01A6F4631E2A4C4436D01158865CCE236B26F9667</stationID>
+ <name>Classic Rock @ KZPH-FM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853973B160CAE2EBB4F1A8FB62675F098E2A13667FA014ECF258B3F21EE816C0B15A4</stationID>
+ <name>Soft AC @ KRWM-FM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539747BE22B6A0BFDD10EF79A95377A329EDDC015D94E6BDAF558A429DC2946F8B2E</stationID>
+ <name>Nostalgia @ KAZZ-FM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397B02B167A2BEE630E3C200EE1DF9F28CC04DB56BC9A5C2F31F8D6071CF0701E50</stationID>
+ <name>CHR @ KFFM-FM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397D8143C74219594FC059FA957EBD9D6874C999930D429135DF005F86E3A17FEFE</stationID>
+ <name>Alternative @ KNDD-FM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853977B6522A8DB6C528DB6993D78235BD95804076ED560360120FCFA09FA7CB6D5A3</stationID>
+ <name>Religious @ KMBI-FM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539712E45CBDF7FEF21DB8D1BEC9E5BA5C5B27FC58E769A7C3CDF0F87D80335293C6</stationID>
+ <name>News/Talk @ KPQ-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539724F941DEC5DDCB26D34C9EFD34835E366F70171BBDB18A07EB063FDFA481EF4C</stationID>
+ <name>News/Talk @ KVI-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>0.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397A7D68E71887095BC2381E72A83A4C458F087ADD7D62C191D6DB715AFB3D4ADC3</stationID>
+ <name>News/Talk @ KQNT-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853977818AFB394520917A692828CB20360705C1C450911DEC19CFD92038893354E8E</stationID>
+ <name>AC @ KONA-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397E330781B083F08AEE8C3B82EF12ACA59060021DC5CC9E3E5EB9C1F728511EC38</stationID>
+ <name>Religious @ KCIS-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>0.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397A2BB2D4C5187EA28D3407F580136691B5398E6AFC2A61B5894FEA3B241DEBA72</stationID>
+ <name>Country @ KAPS-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>0.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397F466A821E682AEAC65B923049B3B09EB3B0A89E39BEB72495A5B57CA131B470C</stationID>
+ <name>AC @ KOMW-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>0.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397FB970B18E14CE4350007CD41C4B160355AB9C1DCB1C772704A0A2737D3772F64</stationID>
+ <name>News/Talk @ KIRO-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>0.71</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397A88AE5405A7F67B06795B234F95BFB8494B1DE746D6B7A7A7CFCAF1C1C23C2BA</stationID>
+ <name>Talk @ KULE-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>0.73</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853977D2B48624F622D49A1CF351421D3B486E5287B00EE3E8C96AC6DB49EC28307EF</stationID>
+ <name>Talk @ KTTH-AM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>0.77</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539794B0012DE465275077D0CDF891B1AB47C8CFDED2107EAA426BFE899E512356DD</stationID>
+ <name>Sports/News @ KJRB-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397DEED149EC43DAB9095E67059528EE65C8D399EED892931133A4E527E47EC742F</stationID>
+ <name>Religious @ KGNW-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>0.82</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853977607C261A0F0A4B3960FABBF30EEDAB7204E317704FCE36BEBF940EE5D61AE78</stationID>
+ <name>Sports @ KHHO-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>0.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853970C67757354898D17D00663390EA2F5DAFFCCE54D92D0024C16C91856C86436E0</stationID>
+ <name>Sports/Talk @ KFLD-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>0.87</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397DAC9F071EF6501F87CCD31ED8D3B2C5D97EA3D2E1E27C152F5D6E1641BF5027F</stationID>
+ <name>Nostalgia @ KIXI-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>0.88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853978905417CBA6C46E9B8F70C1201BE8890BD5C70E604998EAC9139DBF4DC5A76E3</stationID>
+ <name>Sports @ KKRT-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>0.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853973335D11F876ED4F6FA2CF2BA4BE87894DECE82D49989226403929CFF91BAFCB1</stationID>
+ <name>News/Talk @ KXLY-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397EFEB6AB4517C93C0822BB116CB4F56D382CF6936EE92435EBFE9FBA9B1FA9313</stationID>
+ <name>Religious @ KYAK-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397B616443C68CAB8A8262B0B787E4DADAC9C1957C0987F47FD5AB9F1A7953DC544</stationID>
+ <name>Sports @ KJR-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539779C89CB4C025C4A3E7378A17F530716078F65E87169F9E2C258C46AD3FD0FF41</stationID>
+ <name>Nostalgia @ KALE-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>0.96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397010830AEBCFE92BBB377A7290F45B065306E8DBC454719BF899556789922682B</stationID>
+ <name>Religious @ KTRW-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397243648E1EF3C017861101148AC1BE148C3FAFCF7E28D1BE013D3924649801E28</stationID>
+ <name>News @ KOMO-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539756CFEA5A4579220FC18C53714D5DC9EDD87EC32C528AC2943DBAE8314CDC4888</stationID>
+ <name>Nostalgia @ KYXE-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>1.02</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397C73C27C8F7CD82ADA30BF8CBE3BF535647902EEB7203F70642660C06405093EE</stationID>
+ <name>AC @ KMAS-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>1.03</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397A9EE9EC74EE096DDF862A62FE37522F47A636F02D1BCB4EF66A6A410F64C4A3C</stationID>
+ <name>Oldies @ KEYF-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>1.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853973CA9D8765553244A950ACD0867DA52356E76D78F42F73F8AC4B5CA2F4856E825</stationID>
+ <name>Country @ KYCW-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>1.09</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397DFC7FB20B18FB692FF67366BB4439EECD4609D29B85B80A1F49C61AE801F9B0F</stationID>
+ <name>Various @ KWDB-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>1.11</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853971FB86C0E8186A98F709F7213D2B0748877FA713EA89692BCF661FE9CAA3086E5</stationID>
+ <name>News @ KKNW-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397E58521E8D3191C49F716E1D59908F595C7A6D68AA81C33FC5804E9D6EB93A48B</stationID>
+ <name>Sports @ KPUG-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>1.17</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397A1F2A0EF107D3712F129323E6E7E86C076EA44953D130AB9D4CB03D03B12DADC</stationID>
+ <name>Sports/News @ KLAY-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>1.18</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397D4BA56F29F1283CE73F7A1D9C6D442B2171E1345DB323991EB05B9FCDBE3C7E4</stationID>
+ <name>Spanish @ KZTS-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>1.21</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397A6168E833903C4A59575C7D3E2AA87C2C1ABFA1F7DEB7DC54D3CDDEC505B6263</stationID>
+ <name>Business @ KSBN-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539705900FFAF5680CAB3974D2D280673B492C1AB03EA0025AB5DB8EB3E9398C1EF0</stationID>
+ <name>AC @ KGY-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539784B313FD34CD03CD53DB1588AA2C81A797CFC65CFCD1D5C40E2DA9B9C13A677C</stationID>
+ <name>Childrens @ KKDZ-AM</name>
+ <shortname>104</shortname>
+ <icon></icon>
+ <frequency>1.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853979468D26039DC8061DB17088AF86BC7816FB7611CBD7DB851B0A2CB84A5418C8D</stationID>
+ <name>News/Talk @ KIT-AM</name>
+ <shortname>105</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397623309842D7E6CF12EBB147379E184E0C0854B0FF93F1C8C31A5D6FAF4D42E52</stationID>
+ <name>Talk @ KKOL-AM</name>
+ <shortname>106</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397D1A9A305701E19178AAC8CBDE605AECA34364F167F2CA5CFB4A5DFC0F7A71909</stationID>
+ <name>News/Talk @ KZXR-AM</name>
+ <shortname>107</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397BB138DB7A0CC0A905B70C631B6A1ADAA0BC34553524FA00AD93C58F2481866C7</stationID>
+ <name>AC @ KXRO-AM</name>
+ <shortname>108</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853977DB68BC8A8E4435827DD1232405CB538A27D68F0028FA1B11FCA402869F07BC0</stationID>
+ <name>Religious @ KMBI-AM</name>
+ <shortname>109</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397825033CDCA198B5AC38C8D22E8A1C8747CC8C420344EF1CE64FC720851CF8D11</stationID>
+ <name>Spanish @ KWWX-AM</name>
+ <shortname>110</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397131AF44140F6A47F8F124FCDA9E1428982E1D99055ADA6359680372A009AA2DF</stationID>
+ <name>Spanish @ KKMO-AM</name>
+ <shortname>111</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853978158A97972E4579F4166F803E4E6C2B3F6C493894EF2E2CE6267178DEEF538F2</stationID>
+ <name>News/Talk @ KRKO-AM</name>
+ <shortname>112</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539772F809FCF63013E8D6F72070195CCD2DB83E10E928B0C3C605FD00E407E706B6</stationID>
+ <name>News/Talk @ KITZ-AM</name>
+ <shortname>113</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853977B1DF31563592D71CB78D47E3ECC3DF3307DD3269B6982EF3E71101BEC1915A3</stationID>
+ <name>News/Talk @ KUJ-AM</name>
+ <shortname>114</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397EA3CE7CAC7D7B88E30A2C6CFCF6B97F913CC20D112316000BF8ED9723D098413</stationID>
+ <name>Oldies @ KBRC-AM</name>
+ <shortname>115</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853976EC0E284174ADF86E065609CF54D7CE3A06708370B1B283880B330A315DDC26C</stationID>
+ <name>Sports/News @ KONP-AM</name>
+ <shortname>116</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539774B50367FA6EA9C395873720C4FDEF2DC97B6A5656D411C3DE0E96D9B4D74FFB</stationID>
+ <name>Sports/News @ KELA-AM</name>
+ <shortname>117</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397F8B9AE435DB99D69BD6D6443D18FA1FCAFC1EFC40958DCA83B50AD5EF0E5D378</stationID>
+ <name>Classic Hits @ KLOG-AM</name>
+ <shortname>118</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853975E1FA52D1EE8CED7E3405DEB5D004FE9A1ED338ED31D98843D2690D688463CC8</stationID>
+ <name>News/Talk @ KGA-AM</name>
+ <shortname>119</shortname>
+ <icon></icon>
+ <frequency>1.51</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397FD38782DF4C1FD735760DA4DDB6F42C8C72FF6596C463BFB088F1E97578D9BAF</stationID>
+ <name>AC @ KZIZ-AM</name>
+ <shortname>120</shortname>
+ <icon></icon>
+ <frequency>1.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397DDED18D1E39B5E9DB3F25403AC39961FC64A3BFBE00AF0BCD0F637947F3CFCED</stationID>
+ <name>Religious @ KLFE-AM</name>
+ <shortname>121</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397B0FDD9FB6C68EF06DB6F47CB10B1919A5D78BA615AB74EEB2403BCD581E5F78D</stationID>
+ <name>Urban @ KYIZ-AM</name>
+ <shortname>122</shortname>
+ <icon></icon>
+ <frequency>1.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Washington_am.krp b/kradio3/presets/usa/Washington_am.krp
new file mode 100644
index 0000000..ef50455
--- /dev/null
+++ b/kradio3/presets/usa/Washington_am.krp
@@ -0,0 +1,430 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Washington</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385396766AB0369FFFD63DD869929C142CB757EA33E9826520A9AF8069EF0A527C04D1</stationID>
+ <name>News/Talk @ KPQ-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396C30EDDF460E6C3E075CFF69240EB495C2E6DE874FA0DC8346B44337B1F6A0628</stationID>
+ <name>News/Talk @ KVI-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>0.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539666464AC21320ABF1C2ACAB9D2540978A779AD54D823F69C9DFF3E726AB8A57C1</stationID>
+ <name>News/Talk @ KQNT-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>0.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539671A31BD851EBB3B81E1FA2A9F54884CE1C730B11B2EEBD4BB461BDB69B0A2E8F</stationID>
+ <name>AC @ KONA-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396C2F54E82C83B734861C4A8A6C8005505508B1A1D32B196FCF4A80CB4666310C5</stationID>
+ <name>Religious @ KCIS-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>0.63</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396E7563D8368F2FDCBDFDFB76EE461A55A54745F72E22C624CED66F583E255A95F</stationID>
+ <name>Country @ KAPS-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>0.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853964D08926738D700003BBB89F305D73DE6CFE83C14F694728AA41AB4FCC72F179D</stationID>
+ <name>AC @ KOMW-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>0.68</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539623B27350FBE93F21234C44A215073D1698CCE9C55F4A61D213991942AB7B73D3</stationID>
+ <name>News/Talk @ KIRO-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>0.71</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396D1A2C4C9C03A8F05BE5656E966C46640A1267C2F02BB2F6CDBADD9006C02E3E8</stationID>
+ <name>Talk @ KULE-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>0.73</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539667809166555D819BDF0CC0916BB67937C06DA25B7F1E830027D7CE552AB6386C</stationID>
+ <name>Talk @ KTTH-AM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>0.77</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539682482F20C87EDFA07EF5ED99D70670E9C1BAF7F78B236F6D6D803512F656D998</stationID>
+ <name>Sports/News @ KJRB-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>0.79</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539601A1624A8963C51EB6167E7001FDCD0BD71D1B24177BEE59A65FFF096C808FCE</stationID>
+ <name>Religious @ KGNW-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>0.82</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853968532455CFC0C7EC68055069AE579CA3231D516725AC64F4327D76E3C96EE8EA3</stationID>
+ <name>Sports @ KHHO-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>0.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396B1F76AEC82698A65374FE6EDF70FC4CFAC2FD3B9017043E9B4A6160C237F3BC1</stationID>
+ <name>Sports/Talk @ KFLD-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>0.87</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396E6E322A0F1C8E7E2C35542DC576688A34B854550BDF673FB808C9036C17E190D</stationID>
+ <name>Nostalgia @ KIXI-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>0.88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853967AA41CBA3BFE3D2D801D3AABDCDA7C4025CC54253F05C2A066C1B5751739A073</stationID>
+ <name>Sports @ KKRT-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>0.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853960979884D8FCAA6CD3A4881F177E3325C50B5A858B113183259404AF5B9FA844A</stationID>
+ <name>News/Talk @ KXLY-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539670DD3EC43D49749DAC1F62E479CBB0580EF23D6E7EFAFA26B1393B99EFC5CE15</stationID>
+ <name>Religious @ KYAK-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853969945C72BDD5C5D54457C1110BB0DCF195BD86E1134FB61E2756C45ADB53D62CB</stationID>
+ <name>Sports @ KJR-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>0.95</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396B44F2A19700B6C704739B72216ACBB64B0FB98CE89117EA1D12A323DE3AF4445</stationID>
+ <name>Nostalgia @ KALE-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>0.96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539696EDAB5B7A7BC2758E6BC335B91C104F04783FBD67156C09A139821D254C9921</stationID>
+ <name>Religious @ KTRW-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>0.97</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539605677014E9AD56F12875C2EF0E5D927F743122E0C450879740A035C4DCDDEF89</stationID>
+ <name>News @ KOMO-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853968117FB40B022BA591DE1F6153590807106075AF38F6306974F6CEE9D3032EC61</stationID>
+ <name>Nostalgia @ KYXE-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>1.02</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853963143BB084C44E1629165AA1964FAD835A4480AB6F18C1E0F132423931F1CB7A7</stationID>
+ <name>AC @ KMAS-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>1.03</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396A0ACFD256A76E1FDA1844F940D72200D446525BA34A7BC5ED5550DA900F399A6</stationID>
+ <name>Oldies @ KEYF-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>1.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539613DA801FA96D5200B03FCB691EE80196E0C96C9990FE27D551D9C3253847B8F4</stationID>
+ <name>Country @ KYCW-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>1.09</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853961046137EC7DBBE3B87EC1494252BB6670370756F6BC61A9A2A6615FB4EB653DA</stationID>
+ <name>Various @ KWDB-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>1.11</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396E7B8266FD84587C1F2A46E7DFFF2156E1D04C842D129520C9FDAFCE5E7CFAEB9</stationID>
+ <name>News @ KKNW-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396AD6EDE5C2A6EB6D54171C3ECD7EA0A33146E2323F1048F5E41A527C5B4DEC151</stationID>
+ <name>Sports @ KPUG-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>1.17</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853968DE8F32F26E4E58B4B017C12F9FE59E4E0DF63CA5886BE39621DE5C60F392580</stationID>
+ <name>Sports/News @ KLAY-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>1.18</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853966F2FECF8DF95F36FAB570BA74E6DB6995C7D532F2E2DE4BA0B13C430CE4D73CC</stationID>
+ <name>Spanish @ KZTS-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>1.21</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539616809C83AA329131BC4DA5DF5DA3D17F9AD7A234620520D7C6BBB1F63DAE08D1</stationID>
+ <name>Business @ KSBN-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396F165E6B6679F38D40635CA09CD158E5A1051C9710930D49A982A4F855C958506</stationID>
+ <name>AC @ KGY-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853968E24F0304DBAD308A3D415EB6BFCF80C47673DB51B93840F370CA5E0CEE58357</stationID>
+ <name>Childrens @ KKDZ-AM</name>
+ <shortname>104</shortname>
+ <icon></icon>
+ <frequency>1.25</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853968DC8C5FCE50F56968C190F4419DE0BC0CC7EC2FE4474D1BCA8F2D64B199292B0</stationID>
+ <name>News/Talk @ KIT-AM</name>
+ <shortname>105</shortname>
+ <icon></icon>
+ <frequency>1.28</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539676071A34D456792481ACBF3EF30A9CD7CA516F551D63BA9AD1102E13B94B10D9</stationID>
+ <name>Talk @ KKOL-AM</name>
+ <shortname>106</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539679A789AAD78997C2C2198AD88503C35C3F56BFDC08E891A7FC35D60A41F1DD23</stationID>
+ <name>News/Talk @ KZXR-AM</name>
+ <shortname>107</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396B55ADD9BCE2D9CA8F92D4268199E04BC5D3E2200371F6A2A8FBE9B9ADC0B16AE</stationID>
+ <name>AC @ KXRO-AM</name>
+ <shortname>108</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396CF443FBAF6313E5C2C917EEE9AC6EC3FF01063F9530FDD0511DAF6639639BB75</stationID>
+ <name>Religious @ KMBI-AM</name>
+ <shortname>109</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396D02CEBFBBAE6D23D73C857D3BC53872D79E47D4515C9FF9564D0041A0C801D3A</stationID>
+ <name>Spanish @ KWWX-AM</name>
+ <shortname>110</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539628A4114E9BADA7B8E88205D5F6D9072CDA970E4792554A84AE63EE5B1D5875FB</stationID>
+ <name>Spanish @ KKMO-AM</name>
+ <shortname>111</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396FA8D7BAD47F41F53714F9D4B9616D79D98E798D1311B9EBF12DD1CF8C8CC8A84</stationID>
+ <name>News/Talk @ KRKO-AM</name>
+ <shortname>112</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396821838E9DC9891FC40CE0FABF6514F0AD18A75A1068ECFC92AC7C573436BE384</stationID>
+ <name>News/Talk @ KITZ-AM</name>
+ <shortname>113</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539635A8C54DB7F4BA70956BE297A1DC18E2A4F1F568431D103C005F492CF18259D7</stationID>
+ <name>News/Talk @ KUJ-AM</name>
+ <shortname>114</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396DD0C5B196FF6CC64471894DB66263E2118715DDEE3C6AB5895DF6B18221D13BC</stationID>
+ <name>Oldies @ KBRC-AM</name>
+ <shortname>115</shortname>
+ <icon></icon>
+ <frequency>1.43</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539613F0D8885D0E560FC0D1D143EBA2F84D8A2BE76F2540848599604FBBBC0E09D6</stationID>
+ <name>Sports/News @ KONP-AM</name>
+ <shortname>116</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396202853D1F3C772AD5414EAD9B09849312E720984A98AF16E4CD1B67807BBCD29</stationID>
+ <name>Sports/News @ KELA-AM</name>
+ <shortname>117</shortname>
+ <icon></icon>
+ <frequency>1.47</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396C62322B6CA7DEA617DD734D863281D8FB94743EAE7CE7DF627380EDBDBECDF5F</stationID>
+ <name>Classic Hits @ KLOG-AM</name>
+ <shortname>118</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539660385F365D3CED2066ADB4AC96BF06FD71F89C53EA700E162441ABF03C82E53D</stationID>
+ <name>News/Talk @ KGA-AM</name>
+ <shortname>119</shortname>
+ <icon></icon>
+ <frequency>1.51</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853967607079DB1124CC656766FE134730331FE28D71AFD9CDD2DE27533EDBF297E3A</stationID>
+ <name>AC @ KZIZ-AM</name>
+ <shortname>120</shortname>
+ <icon></icon>
+ <frequency>1.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853961FEF74DF1827E4BFDAF69BA4078B22F64E25998D67ADE19E1EF207540DEB6383</stationID>
+ <name>Religious @ KLFE-AM</name>
+ <shortname>121</shortname>
+ <icon></icon>
+ <frequency>1.59</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396BF88DE17A629B49B95FDA7635C9CA0E12C0A3C1D154D76CE3D7A0653DB86FE9E</stationID>
+ <name>Urban @ KYIZ-AM</name>
+ <shortname>122</shortname>
+ <icon></icon>
+ <frequency>1.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Washington_fm.krp b/kradio3/presets/usa/Washington_fm.krp
new file mode 100644
index 0000000..276e8e7
--- /dev/null
+++ b/kradio3/presets/usa/Washington_fm.krp
@@ -0,0 +1,574 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Washington</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338539697E823B5C510EC56A249E957CE3BAD0C481C01E4BF455F852366E6F81B827E6E</stationID>
+ <name>NPR/Jazz @ KPLU-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396EC7DFA0423BB8D58556FAF605F565B7888C3E2E527F046BB1CEE707148D23E42</stationID>
+ <name>Classical @ KFAE-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>89.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853961F02B0F17136F4FE585354B836D28C7CA902EDD554BB39890F5F9CA36B545D6C</stationID>
+ <name>Eclectic @ KAOS-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>89.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539652A684593B7EF19500DFC9F2C5C6D5023AFCF6E2E408210B7CDB30BD164F3708</stationID>
+ <name>CHR @ KNHC-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>89.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396B8A860090296A8223293F640DB5F977A1AAFB1F18EEAD76A15D2D3116573BD1E</stationID>
+ <name>Christian @ KPLW-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396B0D646D565D04CE26A023926F5F5150220E08C0C5498867C9389BF90AEFB9CB6</stationID>
+ <name>AAA @ KEXP-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>90.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539617835668ECAA95F43C4DCDECF26E49BA4C1E067AD8FC2A69EACC06F9195201FF</stationID>
+ <name>Various @ KSER-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>90.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853960C0D020EFCB487BAFF1AE7A32A6A2E330F9CA7DB5FA7A53F57DE55A5EDAF524B</stationID>
+ <name>Christian @ KGTS-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>91.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853965F6970548AD721810BC541F6CB5BF278AF439F8BB148661BE8C9117F8BEA6D24</stationID>
+ <name>Country @ KULE-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396D6950FF6D9B1C5B34400EA2787D2738B4FC3A06C04A544CA8B42E0E0E1C52B30</stationID>
+ <name>Spanish @ KZHR-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539602DE3B808712C500178050C252662B9F1FD58E4C7EC63E41157E0C7DBF275605</stationID>
+ <name>Country @ KNCW-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853963B8FAB0132DFD487664000875F809D9F763CC7184BA17DCF65F64D86973F949A</stationID>
+ <name>Country @ KDBL-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853960B8C7EB5AFA97D5C75A33D805C339B5ADF21D77E9E1CE41496018BCA411CEDAD</stationID>
+ <name>Christian @ KTWY-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396C042B1551A0415DA54AE779AE68496DA25A505B7BADC13979A49C069B8E61448</stationID>
+ <name>AC @ KOZI-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853964BAA660FD8D45448DF3F27F10302C7A5DA1BF3484A08C63E03273A0E2E2FAFF4</stationID>
+ <name>Gospel @ KGSG-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396914772E7E158A2622685017066FD04500A22D4C1A65149E6B6B1DA7739016B08</stationID>
+ <name>Country @ KMPS-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853969C8EA9885C01121ACBD439B084A046048F18D4EDE5BA5762C620B4DD67922E57</stationID>
+ <name>Rock @ KATS-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396750E780BB529FF201A7E230EFC65FB6150C8001D4354F617D0295016FA6EC34E</stationID>
+ <name>Country @ KIOK-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853962B5CE17D91087B00D1CD12030899E92B072FFF7F0452F68C842909539ECF098E</stationID>
+ <name>Rock @ KUGR-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853967BDA5227607D41FFA64252904072D01E24EA1D3F8B5875AB151E8BFAA572F62D</stationID>
+ <name>Country @ KXLE-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539684E4BF7AB27446C03BE4705982B87A6479BFC223E9E6F878AA3668FFC27450E1</stationID>
+ <name>Oldies @ KNLT-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853965F28CC5B9F30F7C0356D759F63C8F878E1AC93C40526FB91788448211751DCFD</stationID>
+ <name>Country @ KIXZ-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396C5D2246731F7DFD1575A69FB40BAFB4665E8D7871D7129B4DA6379F611281618</stationID>
+ <name>Spanish @ KRCW-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396467214EE38C1BFC16083DA1704F327473677F76EAF5BAA689DAEC1BC27749C9B</stationID>
+ <name>Eighties @ KYPT-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396C52E75B91F37C9B78B2C8BB1F5D2186F17A346216C1AC2302D89D98C262154CA</stationID>
+ <name>Spanish @ KZTA-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396449978F94DACEC053916C3F31978B6E7A068506548363CDE55294025FD75914F</stationID>
+ <name>Rock @ KXRX-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396B048E10BB18CF4EC08583EAB5A9128DB1942DFCA889D3207121B42E085E76047</stationID>
+ <name>Oldies @ KBSG-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853966FD0FDA6895C983621F503EFD2ECC375A665946D21A2F2480BEBFBB3B64D44FA</stationID>
+ <name>AC @ KZLN-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853963943DF98B34B9D30D7A3D52DA3D32CEDF9A2FF8A6BA5F3E9DF8043A0C5A7FF86</stationID>
+ <name>Country @ KYSN-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396D4B5D15B95F79E7E746263134584E022C7C461C4EEDB2333D8BE02EE21E9E417</stationID>
+ <name>Classic Rock @ KTHK-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396BA3B3393ECEAD37E4D84684E6A43BEEBC586EF325F8401A190899C065D895A83</stationID>
+ <name>AC @ KISC-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539689015510AA4F05B9605267D43B328B1BF6F76A264DE91625C67F8E9C501BBFD5</stationID>
+ <name>AC @ KEYW-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396B3D264D241DCF89D90AC7393E48B836767F4B8567C05D96510626BD34AF37450</stationID>
+ <name>Oldies @ KEYG-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853969DF2C6D24E1DC53008845BF51C098DE5B0C9D9AF377800010237B7141E9D856D</stationID>
+ <name>Classic Rock @ KKZX-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396FF5239726218BE1ECAC2F98E91BFD95E843FC9B633E6EB45BD082CBCDCA7931F</stationID>
+ <name>CHR @ KUJ-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396F8A68BF8DCBEF705C2AF8A735FFA5B77E144853EE0DCC35658FAEE225CF95AE6</stationID>
+ <name>Hot AC @ KQSN-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853968C8C7783B494F37DD5EDE7D5ED389DEDFA8940CB563B3045EEA6D98FB476FB79</stationID>
+ <name>Country @ KZZL-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853960C87B5E5730C0AFE39DF54E095918CF97AA132C01A7540032960986AB76A4424</stationID>
+ <name>Rhythmic CHR @ KHHK-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>99.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853963D52CB6C52DED53BFA71C1546DBD437DDF9AFEA971EC0A7457E462215F1BB11D</stationID>
+ <name>AC @ KXLY-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396F3947CB2F0295EDB04891DE2DD0A7315B75F362930AE0FA701F9C85D752BFA50</stationID>
+ <name>Country @ KWIQ-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396541D607C3DD968B9CE9F72DFE28BE04802197533281BA3C2BB44708543B6B787</stationID>
+ <name>News/Talk @ KHSS-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853963D51BC6F0E70C369AF75364DA220FE811FABF1375E5169FCB1EF2F0DDAC0591A</stationID>
+ <name>Oldies @ KEYF-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539635162259399B9BFFA5BAFD573734B7DEAA18170F97A14671ACAA14BE7AC073A9</stationID>
+ <name>Religious @ KGDN-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>101.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396A1D247DCC994DE3055B33051E0B837F3AB0D9B0560D5F4DED7F998420E143EBA</stationID>
+ <name>Hot AC @ KPLZ-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396BA10B40F094179C19E7EA4C3FA980F8C6EAB49E50C3B86E9D0D82896CC2D8243</stationID>
+ <name>Spanish @ KMNA-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396054BB0631584870A36D18B548B7CFC7E99C72720FE1F8FEE53C67242F2586DF5</stationID>
+ <name>Religious @ KTSL-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396BC7917CDD3D70208868F3455D6AD74A28E9014E9A94C9B0625E0C3E6439FC76A</stationID>
+ <name>Classic Rock @ KPQ-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396C79120BA11D270650BB216E6ABC49A31C5E7ECC637BA9907419B13B1A228E59A</stationID>
+ <name>Country @ KYYT-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853961FFB0736137F3DD8A0F169801F6D993AD35C6E95F8B3B49265AB8EAA49AD96BD</stationID>
+ <name>Classic Rock @ KZOK-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853965C5266359D52DFA857A1F2E3A37DF9EC40738B5450959D9714AAD10DC72C2D76</stationID>
+ <name>Country @ KORD-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396A409C2B2D20BAC0C22CAC623149B59CC63C72244E20858F583EA6673B7A51D44</stationID>
+ <name>Country @ KMNT-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539678A3F147339490F9E9106F4A8C05EA778AB8FC93058505C4DD9381C51A37CD80</stationID>
+ <name>AC @ KCDA-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396980001DD435C658DF08F0CF0076794D22620F9B6629E377284418809C4731D0B</stationID>
+ <name>Oldies @ KKXA-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396309734B91FBCAEF68A6D96A93DF69018FE8474FA667F3F6EDE56063095E238B7</stationID>
+ <name>AAA @ KMTT-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853966EA8E8624BC37CA8369DAD3A7310925508448E482A8F5D0532A6BB38EC18DD9C</stationID>
+ <name>Rhythmic CHR @ KYWL-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>103.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853960373185C635C95B190B287CD21AC9737534C1D12C93AFFD85DD470CD1E8514AB</stationID>
+ <name>AC @ KAFE-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853964C9FD40DA23587A56ADA7F7E0AFD85446903D21FB6B15979FE84D3F3133676E9</stationID>
+ <name>Christian @ KEEH-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396C05DE7012E5DC04492A63C6B5341812E882A6141025D5D103C142D97765E6193</stationID>
+ <name>Country @ KKRV-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539677BE1D38F908E98087A20B32499FB0F87EF98AD9580908E77B567612F6CD6540</stationID>
+ <name>AC @ KONA-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853963DAF2775BCFA7AA6C2C28B9767A6637895EBA75CBF199D3EBEB3DF425ABFBB98</stationID>
+ <name>Hot AC @ KLYK-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853960647506E95B73FECA9E244F4BF2D49D83CE5E26D1958CE547E7CF9BFE893D189</stationID>
+ <name>Alternative @ KAEP-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396343832325FACFB0E74268637A2B7BD4A0CC870FBA1A34CE644CDAD37B72A66A6</stationID>
+ <name>CHR @ KBKS-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539613CCDE2A4CFC0C4F0F2DC4945943263C8FA18F154172C29E49E8184254B4C361</stationID>
+ <name>AAA @ KVLR-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396278A502BC994EFF81BC9CC60AA4217815BD2F8539EA922137FDFDDC757795DFA</stationID>
+ <name>Classic Rock @ KEGX-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396035A18CE455DD4C30469CE3B68464BE052D3127DC79DD6E4A76A1373451D12D3</stationID>
+ <name>Classic Rock @ KZPH-FM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853963E36079E744FC6B189F54A07CCBA5117BE26215D57B519C6AD64471FFFE171BA</stationID>
+ <name>Soft AC @ KRWM-FM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396A3578D3D8F2925E299B5A79D17C03ACA1541656D1D3DB2E0866F0FA41F12A963</stationID>
+ <name>Nostalgia @ KAZZ-FM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539645568AADC1D359B1FB727C21D42148E3C526EA64B0041A22C34C786CFDE2892C</stationID>
+ <name>CHR @ KFFM-FM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539691F89A28E91357CBEF7EB5ADB0D25D7A7AFEBFB50D8023B57672FDBAEC1F55EB</stationID>
+ <name>Alternative @ KNDD-FM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385396C5D18FA0FB62442D2BBAB1FACC0757C762A96624A162B6036C8945F2071CAC1A</stationID>
+ <name>Religious @ KMBI-FM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/West Virginia.krp b/kradio3/presets/usa/West Virginia.krp
new file mode 100644
index 0000000..fdec8f8
--- /dev/null
+++ b/kradio3/presets/usa/West Virginia.krp
@@ -0,0 +1,526 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>West Virginia</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338539881051F4BE55EBB63D4F4A75FF5764E72DCC10D849211AE0F45903A8811BD9E44</stationID>
+ <name>CHR @ WVWC-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398595AD94041C65330044475B897A6F3CCBC40D69416BB67E269834154BCCD12C1</stationID>
+ <name>AC @ WRVC-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539863CB3D0D2AE677EE96DBB20E62FCC20A82684F729DAF7A820BB998C788FF8F41</stationID>
+ <name>AC @ WCWV-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398491723A7EBB44BC6EDD1CE0CFBEF9E2BDFC45A29794213CB4BD033A8230EA832</stationID>
+ <name>AC @ WBNV-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398243CEC573521E114B63BAE3EE15E89FCFB94C1A86C1C00BB94767D2E4B65DFFA</stationID>
+ <name>Country @ WDGG-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398D2789F8465AA06D4B647E4FAF56D6DF66A323C6A21D45298E37653A6F67D613D</stationID>
+ <name>Rock @ WQZK-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398E9F71EFF3EECF44B018FEAF248AFF415F2EE5E70CBD912BB660DF609DFFCE37D</stationID>
+ <name>Classic Rock @ WRLF-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398F84F635462A7759681871702F0F660AFFD8DFBE9EE592C6867F13D54F19B0FF3</stationID>
+ <name>Hot AC @ WZJO-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853984A477D2703B331D41EC9927FDECA8860B5E250E9650E87D5FF473104F831AAA8</stationID>
+ <name>Hot AC @ WXIL-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398CAE11225C166E0A5831D3FD11002756E37E0268060D2CC7D35BF1B3B4C52DD85</stationID>
+ <name>Oldies @ WEEL-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539884172C79382BEE2D123EFFC269C67DD0FAF585ED49EB9B5E6AA145FEC45266C8</stationID>
+ <name>Classic Rock @ WKMZ-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398B66B67A307C2F67F29DCCF774630083F2FB467BF553F0AD7EF1A0B8C019999B9</stationID>
+ <name>Country @ WKWS-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853984039082AEAC610818EAE66BA90A973FEF92FD420A24F0988DC194FB0DFC98582</stationID>
+ <name>Christian @ WRKP-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539806285B56FAAFCCBC84E508B0DCEAB43BA63D80E645384D62A6ACDD6735E014F1</stationID>
+ <name>AC @ WCMJ-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853981BF24A5DE8F3B0AB3E710015E77254178FFD0CD6C86B6F5719D163DE14F9B944</stationID>
+ <name>AC @ WVVV-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853981286C50CDD2F3690F12E38924D3C1E0A13BF701C3320DC60A86E908B68E4F161</stationID>
+ <name>Oldies @ WBVB-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398C5EBC8BE95677DAC69FD7505DDEAEBCB8E0C80EC4B51408DFF49F2F7C44B7277</stationID>
+ <name>AC @ WKWK-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853989CD25CDFBBF89B2B5227E7588C208495497BF51F4D32608041C93030BA2F88FD</stationID>
+ <name>Country @ WQBE-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398022CFD7D11922C0EA1A295D2114BCE95EDA6F666322B9F195876B65B263BF866</stationID>
+ <name>Country @ WKKW-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539852A5BC61E05FAED502931D9C6A5A4AF4355338C03AEC8A309FFD51333D9D5B16</stationID>
+ <name>Country @ WOVK-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398B2ACA5F709AD395531012215067F44D5949BDCE092731E1FCC478969CB3B4A51</stationID>
+ <name>Country @ WGGE-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398E6A43BCAD71AA79D18ECB8B30EADB2ACFDD5A1E4C47A0E01937B03EAEE0D38CD</stationID>
+ <name>Country @ WBYG-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853989E93BD922E2253F13A4154BC1AECAD6429FE18D6C37B08ADD8E0452610FBA9B6</stationID>
+ <name>AC @ WVAF-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853982918A496D1A0E406648903B8B8C6FEC4AC272E4FEA197481832F1AFBE22645C1</stationID>
+ <name>Oldies @ WDMX-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398BDAA5D465223D761980BE39543399F347937554BCF7E77BBA7F56B89C9B0CFD4</stationID>
+ <name>CHR @ WOMP-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853982AC1E07224F9CF255078903AA9747CCCFE5683707AD3ABBC4F3AB5D12286B978</stationID>
+ <name>CHR @ WRIC-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398908A99EE64E2087C636BD53B10BBD8C11EFC5B4FCBE5B5B288242EC4A6A26D4E</stationID>
+ <name>News/Talk @ WJAW-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539812B5661027A74B93AFC96EA3BBC3E93A3EC6B012CDEDE01E6ADB7525CE240F28</stationID>
+ <name>Classic Rock @ WRYV-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398F56E9E695072DE8000888FB02345095E4445197976A5FEB75C52B3B05B2E75A9</stationID>
+ <name>CHR @ WVAQ-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398CD440BFF2E68F97FA9D577A2BF4050EC3F3B009ECE1E3933DADCFA48BC995587</stationID>
+ <name>CHR @ WRVB-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539807FE21D5B3EC42CEEF0778958AB1FDF6E55C13869E0E0B5487AFE437073F19CD</stationID>
+ <name>Modern AC @ WSSN-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398BF70EE74F008186949F4B3D55F9FDE8F1187545521B16B99DB6086F523474798</stationID>
+ <name>CHR @ WVSR-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398E75D2A79BB75B1EA7BD6260DB0B4FFD8E1F0652ACEB9D348A9EB872788F76132</stationID>
+ <name>AC @ WELC-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398FEEA8E86F97E4366A3EB93796EEAC2937E22B09E9C8E47C1D809EB81E0D2E25F</stationID>
+ <name>Rock @ WHBR-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398834B73A816FB8DD6600FB0B3D82812B31C5E0000E844E1A91AC513DB9687C96D</stationID>
+ <name>AC @ WQWV-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539807D482E9ECA40699D9485B00AA7D8803D00B9498663914B890DF90370EC91712</stationID>
+ <name>CHR @ WHAJ-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539888C6464F7D219A98F0FBFEACC4135B8DB225BE28AF112A69A73EAA13D1AD8537</stationID>
+ <name>Country @ WWKC-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398AE14FF4ED8F76BB7BD9EDF1A2C904D21451A81329D80066889FBA5FD258B4C1A</stationID>
+ <name>Classic Rock @ WKLC-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853981ADA73E7A2679DB6C70175E28412AF5F5A58CB5F1824F6F0763FC901564A043E</stationID>
+ <name>Rhythmic CHR @ WVKF-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398F74FE646A54326628971FFE2AA3D1B1737E51CDA46B852F39A0346E501F97F21</stationID>
+ <name>Country @ WTNJ-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398282961AAFE6486FE08FBA2118559A0B392EE2C6ACA2343F5BFD3C734E1837896</stationID>
+ <name>Classic Rock @ WRZZ-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398C5EB5E6ACAFA75502C09FB5EA46000C769BA04F2283D62E55663E7A2E119B5B4</stationID>
+ <name>Rock @ WAMX-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539819DB50E0E5A4C3FC37EFF320FEFC65B0F1F0E03345B953AA876A2BD078E129B6</stationID>
+ <name>Classic Rock @ WFBY-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398D71352AC89595E19F55D6281A6B7809FE2F9662425292266FF70373D276F3C2C</stationID>
+ <name>Oldies @ WKAZ-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398DB07E708C9BFD1C4AB9F94C2C5FCB3C8E3378FF6FEB01BB0FE209EB9C0BE7B15</stationID>
+ <name>Classic Rock @ WEGW-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539836448C6BD27F50B9568FDE0D6CE8FF037C95E4B738E8FBA69518B13BA3FDABA8</stationID>
+ <name>AC @ WFSP-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539838D2DB7EBD3AA8D84A84871984A8BFA757BE127B907163D582B01FE162F41462</stationID>
+ <name>Religious @ WJLS-AM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853984E887DDB3C20B1C1DD330BBE9E0AE4876E8B26EB724BF0BEE0E0B06560BD2C10</stationID>
+ <name>Sports/News @ WCHS-AM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>0.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539822491B15F54582A640A5800C62C51D156943F2D22AFA45BFC5E0B2B5C8EE80B2</stationID>
+ <name>Sports/News @ WWNR-AM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>0.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398614CD86112CB4117C6863582BC74741CD8460CFC80FBDBD45E5D2A84A2BF43B3</stationID>
+ <name>Christian @ WYRV-AM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>0.77</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398406896E04FBD1EF8FC9E63CC976EC54FF19F4CB1A4D2D4909DFB708266E4F3C6</stationID>
+ <name>News/Talk @ WMMN-AM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853987F0EE94CB57D046836BED2A4D0E18ABD96D39947777A1C131B0C7F3539F024EA</stationID>
+ <name>Sports/News @ WRVC-AM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539817E473433166492A2B97CFF683525CE8FA12E7701508C4FE1F6970E919ACFB0F</stationID>
+ <name>Religious @ WBGS-AM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>1.03</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398BEDA1994E7AFF44F784184D259AF34AE435256E92F3F92F13C3D020FFF34D407</stationID>
+ <name>Oldies @ WIWS-AM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>1.07</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539801508ACA2C5A31DF120F37E8A94830D1CB9CF9D2DFC19EE25AD3AB288073C0BC</stationID>
+ <name>News/Talk @ WWVA-AM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>1.17</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398350DBD4CA1FBEC714523EA5102C22DFAFF486F133D352512CA28BA34A2B3F37A</stationID>
+ <name>Childrens @ WKYG-AM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398D0F869684681439B8A8439C5D9731D953A984F0C17A85E9C98A91C84CE0860E3</stationID>
+ <name>Oldies @ WCLG-AM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539881FEA5C7FBEC2BD3D9E84B42DCC3F482CD329396CA96385130B44EA85314CFB3</stationID>
+ <name>Sports/News @ WVLY-AM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853989489C987E9420BDA5F6738B7A55D5081E7B8C671ACF67DD893C726D7073A3D17</stationID>
+ <name>Classic Rock @ WMTD-AM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539809F64A3F08E17DE34B84F55087B13999E989284F98A393DCB1A6DEEE2D7D8123</stationID>
+ <name>AC @ WRON-AM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853986D7AE5A25C5A149BD86B18D9927408265AF8D0F2938A00E2424DEE31140A682C</stationID>
+ <name>Religious @ WSCW-AM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398D8E723C3B1DD305C97D3C88C18E99A6F2073E10BC181E44C899F78F4FD4EA37A</stationID>
+ <name>Sports/News @ WAJR-AM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853989DD536777E470B2036BE1527662CFB4B8A2AFA7175132394483B9646EB17F7DA</stationID>
+ <name>Sports/News @ WLTP-AM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539899D9A0F1959A7FAEB56EB5997E8414A21D9473C1E383317369F351826F51492A</stationID>
+ <name>Oldies @ WTCS-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/West Virginia_am.krp b/kradio3/presets/usa/West Virginia_am.krp
new file mode 100644
index 0000000..80d8a40
--- /dev/null
+++ b/kradio3/presets/usa/West Virginia_am.krp
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>West Virginia</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385398A97D0FFD4BB870880378C8C967F8CDC4E4591338BFF14ABC5B50A19CA355C89A</stationID>
+ <name>Religious @ WJLS-AM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>0.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398B8394AD37F94141349BD2F6E0B1BE569ABCF7D6862939B44937725D6E43FA3E2</stationID>
+ <name>Sports/News @ WCHS-AM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>0.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398DDD1193DD7F18FA4911571FF3351FC3746AEB28C505E9684A0009320BBA74CDE</stationID>
+ <name>Sports/News @ WWNR-AM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>0.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539892F9EDCB41B931E6747FEBE8E629C094B8F57F1B3B3555CD9CA1A39F65F6E75D</stationID>
+ <name>Christian @ WYRV-AM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>0.77</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853988B6088DF4A0930495BA0821C2518ED3B95B803037E56407D0779E2DF9B25D9A7</stationID>
+ <name>News/Talk @ WMMN-AM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398DF89BA2BAA37152BEEA0BD3BA5B52C7BC77645F3D582A19DEB4CCABB7E80CBD5</stationID>
+ <name>Sports/News @ WRVC-AM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853984486DC6E85C8E79ADE120495D57D9EB8A58D8D880E16BF137941E0E223CA55FB</stationID>
+ <name>Religious @ WBGS-AM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>1.03</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853980772640F6AA8E5BBAE6D379E0B1086C87A576CE8A9FE9DFF7BD2D25D31C91B3D</stationID>
+ <name>Oldies @ WIWS-AM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>1.07</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398566B5FF3C093FE186F342295D492836D3FBBCB79571DFB4C5E33E5FE04153C06</stationID>
+ <name>News/Talk @ WWVA-AM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>1.17</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398DAA3C5AA364EA3C74CEF76E40CA26762814A7FF0A6345F5B40E1766A6A32362F</stationID>
+ <name>Childrens @ WKYG-AM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398CC6BDEC0CD510C5CE014138D490073271E1084E1BC70D82ABB3E811A63849B8A</stationID>
+ <name>Oldies @ WCLG-AM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>1.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398E2AA65549502C38EC8FFFE7E6D3C96C1D65A4F7FA43D081C1A76E3D7DEAB52A3</stationID>
+ <name>Sports/News @ WVLY-AM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398688BD4B3CF6C263B39188346A8E2D5A76898F0EA6EA5E5FEADC6F9A45DCB6F05</stationID>
+ <name>Classic Rock @ WMTD-AM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853989AB3271A39C08264BA68611699FF80F71604520534F63960A3E74913CB31802B</stationID>
+ <name>AC @ WRON-AM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398E60C810AE5DA59262E03B4429E412851E996542734F88C0E887E12BF73915235</stationID>
+ <name>Religious @ WSCW-AM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539801C4642D0785CEB85E9C9FCFEFD5F2A3698F5B8187BB8E0787B72BC3EBE2616B</stationID>
+ <name>Sports/News @ WAJR-AM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>1.44</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853985A305DA2FA9647EAFA904AD1ADAEBC8D56552A4709FA571668DBF20EAE5457A8</stationID>
+ <name>Sports/News @ WLTP-AM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398D8392ACB4478FE19B304008E509CDAC4264FB1FE2915187BD31177AC2E4B5907</stationID>
+ <name>Oldies @ WTCS-AM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/West Virginia_fm.krp b/kradio3/presets/usa/West Virginia_fm.krp
new file mode 100644
index 0000000..37ab051
--- /dev/null
+++ b/kradio3/presets/usa/West Virginia_fm.krp
@@ -0,0 +1,382 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>West Virginia</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385398A105C9B7BE3DD72603FBC5005520CDA821F6918534F48DEC4591DAFF4C489B37</stationID>
+ <name>CHR @ WVWC-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398052EFC17BFA306EC725EF8F45BD28945F98A85D5F6EB66649D26B10EC0D53E58</stationID>
+ <name>AC @ WRVC-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>92.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398E62DBA20766856FBF211756FF8F688016BC737D20D6974407855EED6D35B59B8</stationID>
+ <name>AC @ WCWV-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539824F0BB57A1377179664210EED6841A3E4D16F0E25074B9F6462129B1E2DE7471</stationID>
+ <name>AC @ WBNV-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398960193EF2F64EB52B3C4B2FACC34D069168DA9952981DBB08F206FC2B32060A4</stationID>
+ <name>Country @ WDGG-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398B3A7025324D8A9BD9ABA0A37DD4188E01E9C2CBBF9BCD4788ADA5E0867126989</stationID>
+ <name>Rock @ WQZK-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853988E9CDE2B37D22889ED77406D27902EC78FE69A81F056369E6CC9EF050DC03517</stationID>
+ <name>Classic Rock @ WRLF-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398EBB1E95F14876B959FE61D586DA3FABAC3868AA830CCC92D883C52ACA7B9C492</stationID>
+ <name>Hot AC @ WZJO-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539814CE1EFEC1136D6EC64B5955248194830EC72355AD5F4EEF18E3082DD3B509A0</stationID>
+ <name>Hot AC @ WXIL-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853982EF4E280EBE61019E29B0BFC33733F665B9B68154CD691498CE5D02FF5398F45</stationID>
+ <name>Oldies @ WEEL-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539844256048242696DE147BEB5692B600C8728CD88B408B2473824F1688F3E18CFD</stationID>
+ <name>Classic Rock @ WKMZ-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539811F7E7A6CCD21CAAE542FA35E46C4E39EE20A4D6A404081C2137440C3FE1F043</stationID>
+ <name>Country @ WKWS-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539841074A837086157C720533CC19E4635AF95C84E22052EB701DF8DF205719481E</stationID>
+ <name>Christian @ WRKP-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853987155982E9541B9913BC6409CB0F4056BF05569FC6AC3EE2B54878D9BB580DF4A</stationID>
+ <name>AC @ WCMJ-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853987B3E7EA9A522256A05B1110F8B4FBE62026CCFCF60A9E05E8E8A0C6E3F0C0344</stationID>
+ <name>AC @ WVVV-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853984FA28047CB831D41A54698881F87F89227D96C60FEA1502EBB2EE79CC0F93F28</stationID>
+ <name>Oldies @ WBVB-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398836341BD7CABBAE289B75EA2422669CC42147E5FA25B71EE45709839B9DAD623</stationID>
+ <name>AC @ WKWK-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398614AE43130A55589AA061C4BF64DA1634048E03E011E6DD04E7F1D9FE6D3332A</stationID>
+ <name>Country @ WQBE-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398BD0164E0D0EADB44BDBF7E44B318FA20B897D5D68FD61C7AA760870CF86B9301</stationID>
+ <name>Country @ WKKW-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398B70BE504490795C7372BD53CBDA5492CFFF4FB143F475651355A5949E15BDE20</stationID>
+ <name>Country @ WOVK-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398DC7CB40D293A3722D0B8855EB0EA4A42BF2E81C757C519824B83DCC937A51397</stationID>
+ <name>Country @ WGGE-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398B23EDA2FAAA6F497CCF7780077645B1124F05EF09FA0D1682893D13F34C783BE</stationID>
+ <name>Country @ WBYG-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853988A742ACE083A26FEEC7D94D04F45507E8E6617D80A444901D4BB4E085CF6C45C</stationID>
+ <name>AC @ WVAF-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539864FEEE68D15990CDDD67CE6673E0A22420D58AED0540F667FB2184C44BCF69E3</stationID>
+ <name>Oldies @ WDMX-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398A1B9EE7871F4A84DD412A134526356070DF11471865A6E1F96254F9CF2C37558</stationID>
+ <name>CHR @ WOMP-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539856F9C2616954ACFEA6A0267DA34CB77C58A59AB24EA4F629445C614C3DA1C533</stationID>
+ <name>CHR @ WRIC-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398296648202C554F539AC758BB1C67AACB2067CBD0C8C3A51F0F13637CC4764F22</stationID>
+ <name>News/Talk @ WJAW-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398FF349D26B093844D1CA4948AD8EA1DB58344EAF9F9E663634C9378C1A08304DD</stationID>
+ <name>Classic Rock @ WRYV-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398410C3060CAD4049F3F95C75BE9689F4F910CAC3A7E724AFBC6680C4D095B53BC</stationID>
+ <name>CHR @ WVAQ-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398FF48F4BCF5BF5A30643A988BF4188A0BC606D7BB0FA3488F0A802168BB80358E</stationID>
+ <name>CHR @ WRVB-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853987D8BC408AD19F441A7D820DB131E78FA51EBD320BD2B75AA8EDD662B6B7C30C4</stationID>
+ <name>Modern AC @ WSSN-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539880957ED0789366101EDDDC9717A7217708DFBA93572ABA361699CAFD4241C296</stationID>
+ <name>CHR @ WVSR-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853981B25FE59CE62606D308C6F0EDD395E5731CED5C212320EC87547A9EAD5C38FA5</stationID>
+ <name>AC @ WELC-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398F55F87A38CED09073BDE812D2368BAA90D94A8370D6FF0F617E203F8CBCDD47E</stationID>
+ <name>Rock @ WHBR-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398E5321307B1189DB6E7FD2E659CA0B644634DD0B363E526718BB70B6F66B035BA</stationID>
+ <name>AC @ WQWV-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398826E0568AA5076EDC713FE02B826C4C465D5A1EFAA20BFA974973B903A8D11A0</stationID>
+ <name>CHR @ WHAJ-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853989A65CF54604E2423F387B41CCB5D723AAAB7A0EF0ADD1D6C386046137DC91283</stationID>
+ <name>Country @ WWKC-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853981E268626EDD8041169F51C97B031306B9842B9D1B1FFA7DE7F74A45A05D9BDE5</stationID>
+ <name>Classic Rock @ WKLC-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853981956A94593898C88B0ABD9E906888F8E029D81A4B1B50620FA4F6B63ACBE4AB4</stationID>
+ <name>Rhythmic CHR @ WVKF-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398A9DE54C615FE85AEAF1E444118DE311EF970444008B62ADCF1EA7DE834DA3F96</stationID>
+ <name>Country @ WTNJ-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853982E10B327D02694F3B933D3FAD2B4435DEEAE76F8C6F31DBB2D52D35BE89E6428</stationID>
+ <name>Classic Rock @ WRZZ-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398E28BDE76A03A8DEEF66A75AE29EDFBC262AEC3F5CB4924DFF629B4A542F70700</stationID>
+ <name>Rock @ WAMX-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>106.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398650059A1A4C1AFAC91169379F1C11DDFD1C94F1C2E5D6579081961CED0B7278A</stationID>
+ <name>Classic Rock @ WFBY-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>106.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398DCB5EEDA59957BE3DCB15D0010008A2C387A2D1FB8D7051A41BFABCC8912AD0D</stationID>
+ <name>Oldies @ WKAZ-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>107.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853989907154BC3379E56BC8D256076D5E74C198B0AE971040AAD75DCD329858DE7A8</stationID>
+ <name>Classic Rock @ WEGW-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398F7CA8FEC93DA56121C2C0179709E2EC633AD671D983597AABBC8F8C24CE78C41</stationID>
+ <name>AC @ WFSP-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Wisconsin.krp b/kradio3/presets/usa/Wisconsin.krp
new file mode 100644
index 0000000..c9a7cdb
--- /dev/null
+++ b/kradio3/presets/usa/Wisconsin.krp
@@ -0,0 +1,910 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Wisconsin</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385397604C0EF5450934036509877BCB1E2595599CBB478A1E3B49EDBAD411EAB775B5</stationID>
+ <name>Smooth Jazz @ WUWM-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397FAD394366DA287B540781BDDE10BFF8528833B6CA2B2891D642897887BEDF2F1</stationID>
+ <name>Alternative @ WORT-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397817366DA8DE8EAA1BCE6E99F73B07873FB179ED68538F05F9C1AE9CA759E54DB</stationID>
+ <name>Nostalgia @ WSUM-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>91.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853975E0CEA71429FA616C7D9ECC148E4B3630447928EE77DB8B4C60DB9E151C50AD3</stationID>
+ <name>Soft AC @ WEZY-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397394D87803E2F20E0C891612320FD4E94BF389AFA11169FBDD4F6453F64299C65</stationID>
+ <name>AMERICANA @ WJMQ-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397CF5086749C9EEE76C9713AE48EBA51184CF50FEB8ED1931E22A7EBFF588B9D05</stationID>
+ <name>Oldies @ WECL-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853974610DBEC6A316D5E648592F1B54EC288D3EC8497DC89E6F94CF0CD1B51DF91E7</stationID>
+ <name>Smooth Jazz @ WJZI-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539745C7F8E36418C5BB0730D82276817A7DA2C19350982236AB0A51BECBE12604EC</stationID>
+ <name>Classic Rock @ WOZZ-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397780198610948D83F14E8A6B1F543EEAA3B9A343DBC09161F034A495AA2A4E825</stationID>
+ <name>Oldies @ WLSL-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397DD576C84D3BFED0A935B1B2D848B7A13899DFB990CF192FFBA1D76E3EC70FE0D</stationID>
+ <name>Rock @ WJJO-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397B562F84A0B84AE7034F843F97556F6BD31DD609BA600F28C03D6455D7366F219</stationID>
+ <name>Country @ WQPC-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397F37B69D945322DDD5F855217146E8C8ED3B4233DDBDB00C98A9CA101028A964F</stationID>
+ <name>AC @ WKTI-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397AD45F9C572E6C4375351B77C99E3BD77F879EF5AD4AE9FDCC7389F5CF87E084E</stationID>
+ <name>Active Rock @ WZOR-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853972102CBB12F2524EA517245CA37DE24FAC1C2A73CFCECB61910BD4E777E39DFC3</stationID>
+ <name>Oldies @ WOLX-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539793748C813C7A49AF8F2CF52C41BCEE97E78BA50AAB05F0904CF6156916D4479A</stationID>
+ <name>CHR @ WLST-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853978A8A3BCB4034A88637BF04E21D5998317B0BA8809218FA7B63EB517B2CD39681</stationID>
+ <name>Classic Rock @ WGMO-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397156305BF133F5A0D9A970EAA281C5A5C7E99A956D0788B79614B17B5F01547A6</stationID>
+ <name>CHR @ WIFC-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397B2EB8E7B636EFCCD2B3FFDB0B57D4E417F7A5E6EB79D0A8BE432825AA2868C98</stationID>
+ <name>Oldies @ WRIT-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397AFA488959ED748DB34C53CF81A77BA41A6E15AA9681B90BF4688F77814AEA02C</stationID>
+ <name>AC @ WMQA-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853977B9D486C40E11C0BF56D94E8190EC3812B3279A6D416A599768BF043DF8B86D9</stationID>
+ <name>Country @ WJMC-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853974148A1B2C8BBF2A5B32E2811691B05B36CC43395C0F28CFE08D16F7FE7BB61E8</stationID>
+ <name>Oldies @ WSFQ-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397D4B84F91389383AA449674EAAF43C6CF105E355F3A5563E1CF96E9EA8E1D5580</stationID>
+ <name>Classic Hits @ WKLH-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397B0B370155635CBA52B867E208C5FEA0555B1B9DEECD4EDF026079C40CE7ED928</stationID>
+ <name>Country @ WYTE-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397FEBE211FF07C07E839383723FB42BB74CE55FCC7587E4B32E054270A860AA157</stationID>
+ <name>Rock @ WWWX-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539795505BFEF8B9886A1D727822CFF3613251BE5D2EEB27CE83DBB7AEDFD11A644A</stationID>
+ <name>Country @ WCOW-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397841D714CFDDCBBF89C4C83EE7B051CBB11ECD99B50FE9BCA996DB30EFD54A2C9</stationID>
+ <name>AC @ WLTQ-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397EE94FA73EFB76A70E152D7FDFFA237DD086F2EDB92A0A5B84DF252BE036B597B</stationID>
+ <name>Country @ WHDG-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397D36AC2E45D01385B62E633B46817C7094AA22303F6AA970B45BB843AB02DE1D0</stationID>
+ <name>AC @ WSRG-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539774648D8C35E512148ADAF43901191C26D6548DA06340B59A8D4021AD49BE7E8C</stationID>
+ <name>Hot AC @ WSPT-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397ED844DC5E82D50866CBDF168757BE304F9DB0CEBCC172FC6D12220F69AD421B6</stationID>
+ <name>AC @ WMGN-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539724D126EC8F63E18DC65514894FB2C7DAA8537A3F9BB898AD56B588E4B3086CA7</stationID>
+ <name>Country @ WCQM-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853975B73D58E56830CA15025C5FE8B41D6957C99E1D249578DCBFB0FB2A1F9398FA1</stationID>
+ <name>Hot AC @ WQLH-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397EC6037A285A4758DA512977E2A204703D53691E0737EB3449FE8890517B131EE</stationID>
+ <name>Oldies @ WMDC-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397A22A92860B50F93FAE354BC04401206439FF9AFBD80A8C6D48AE1CABD7E72FF9</stationID>
+ <name>Country @ KTCO-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853979E9A0D5A1C87A9FF3C5CA2D98F849A2EE4AFA00011383FD121923E672F2FC53C</stationID>
+ <name>Oldies @ WOWN-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853977297A6746638232EA0E552A92C4903F99933FE1B5AA865560206034A042E7630</stationID>
+ <name>Country @ WPKR-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853977F25A7A573399C03E21560A69A9445B864F6D8508797F31A2C29F0CC682B5D5C</stationID>
+ <name>Oldies @ WIZD-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397E96D7FA101030E978379DCFE109201408788F2E6C51646A101EC5F5C2F6D58C9</stationID>
+ <name>Classic Rock @ WGLB-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853976225B8A8E1EC7DC2252C87AC411D1E9140C4BC73C668E4B8C3E0BC4DDCBB9D36</stationID>
+ <name>Country @ WNCY-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397BFE7548D78733479E1B8EB28261BBAC9737553CC99BEEA068EE7EC64488DD443</stationID>
+ <name>Talk @ WTLX-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397BEC118702BED9F728434D7A6AC98392CF1A4FF30757F5AAF589DA4251FCB4D97</stationID>
+ <name>Urban @ WKKV-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397507EDD4D74151047DD7060F1C06A5BC15E70F8B1B6E343393AC3315629A03CEB</stationID>
+ <name>AC @ WRCO-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539713E30EDAA1005C9543BF8477C7CCD7B10EC66F2638BFA51B2F101D93152252FD</stationID>
+ <name>CHR @ WIXX-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397CED62691BD988551E8CF19E8C0F6001CCEA1839952C9932FFE890A3D9CB2C813</stationID>
+ <name>Rock @ WIBA-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539705810FF1D476DAD521161E70EDEC098FF311C4E7BF05A12AB8FD830A71EE2695</stationID>
+ <name>Country @ WDEZ-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853975429BDC979A28E49CD3FE2557410E7D4A64A0C9707A1598D2916F84E2E341EBA</stationID>
+ <name>Active Rock @ WLUM-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853973B3F3C5AF080077F34F61DDA8AF8F7877B95554406270195407BCEADC59EC308</stationID>
+ <name>Country @ WVRQ-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853975CE2E8646B0540EB527D1896F07C13880FAE9C3E11E5E3EF6EA1EE3E89671BDC</stationID>
+ <name>Christian @ WNWC-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397490C782721822DE3EE453752E6021A0E2A288A67DB5DFD8CEC3F0F14AEB324D1</stationID>
+ <name>Religious @ WRVM-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853971181CCC7460F760614BEB806067CC1F62DF48AB6ACCE2004A7353EE569B3472E</stationID>
+ <name>Rock @ WLZR-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853976F9B06C78675633E4B887D5FB8B0A824CDDBEDFDEFD9B5C000EB92A829D2EDBE</stationID>
+ <name>Oldies @ WOGB-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397B89732D1997C34D81AC8DAFBFEB24FBFA8E88095159C0DC158773D62DBA48AC8</stationID>
+ <name>Classic Rock @ WGLX-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397847A6F93284838260E679E8DF1782F6DE0D5AEEDFF780B53A73F867C936BF33B</stationID>
+ <name>CHR @ WXSS-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397E541178152C2F89E19C936F177F104025DA85386C8DFFE53BEA4933B9C54460D</stationID>
+ <name>Rock @ WMZK-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397C35D4801979121C54C096B65E051AE5B07E39E50587E60E4912D9F8F9522C3AA</stationID>
+ <name>Classic Hits @ WECB-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853973817445E6B4F2F8C908BEDBB31C9D07EC660A80D1779D0D81D3A5D482B4E526A</stationID>
+ <name>AC @ WXER-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539726BFAA56D9C9D02BA171AA75E9A7E930B02236614B7E21F4B191B2C85BC2E45E</stationID>
+ <name>Country @ WEXT-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853973D32CBC254A3959BAF4271503E2E7CE0638DFDD8FD4492832D824DB70CC4BEBE</stationID>
+ <name>Classic Rock @ WKQH-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539730415394FBE7F6BE01BCD0F21F3C543882877C5114DA6BAAD3922C1858F02933</stationID>
+ <name>Eighties @ WBZU-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397B7F4B0F52D4890D023D9C0A86FAA5D2FC252BDFFF6B821DADDF84BFA3A19D1DE</stationID>
+ <name>Classic Rock @ WRLO-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397C2D6017C2A564093F4D69F0B67C09293799F22E8D86F15CD0810D680D2955983</stationID>
+ <name>AAA @ WMMM-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853973C57BDE5D2EE0ED28BF747E10891D115951B9290F9B7747896CB559C07A4D8B2</stationID>
+ <name>Rock @ WAPL-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853973CD3DAB093A73F2731D2908490FF55CF3AEE326B4DA82F47B20FFDF6D38B8A79</stationID>
+ <name>Religious @ WEGZ-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539775FAF0083643D03E4284B24F5B8A26CA42A9C389E98A2966ABD834DDF9CC03B7</stationID>
+ <name>Country @ WMIL-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397BF022894138AE5F442B756195C1FAFC7FB94960BD918BCAD89DE3A93A16C660D</stationID>
+ <name>Country @ WATQ-FM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853976749C89E61162EC3A23DD021379ACD509147E63B7EE77A0B2EFC791ADAA439A9</stationID>
+ <name>Rhythmic Oldies @ WMJR-FM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397D5C94F87F9D109A1EB9746DAD63BAF2A03C3164CD30888C3467C4DE983E0456A</stationID>
+ <name>Hot AC @ KFIZ-FM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397B4FA636362DB753566DADFCA57A976E23C01F63C777CA746F95D8A74953170C0</stationID>
+ <name>Classic Rock @ WCCN-FM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539711F001550572901F2733A437F48824C35A3ADF2E44AAD7F9BFEDEC5F003F358B</stationID>
+ <name>Hot AC @ KUSZ-FM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397881D6AE8CB03A104D7DA4D432D6B05C39D57B5329F69CA4C66D04FE464A7BD3D</stationID>
+ <name>AC @ WYCO-FM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853976F2576CD2F220A463A55CCB44FE57B8E880C589473139FFE6202C35FFC592EEE</stationID>
+ <name>News/Talk @ WSAU-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>0.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397E376D24EA787F426FA32A881212EFAADFD65A4C6955A98CFD5A1A7001580AD87</stationID>
+ <name>Sports @ WMAM-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>0.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397BC6ADAD37C50F88AF859DA62D2D1476EA56D59F481B00BE12C3640A666D547D1</stationID>
+ <name>News/Talk @ WKTY-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>0.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539750BD5E12D6DAFCE7662D1FC44D1CF77891B490B0CBEF7C619BBB5C8A17BD7C62</stationID>
+ <name>News/Talk @ KDAL-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539798983227DE2E6985B240FBA115469745BF7EE10E027700F3CD4EDA6FF0D6EFD6</stationID>
+ <name>News/Talk @ WTMJ-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>0.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539784FDF74C4966C0E6E5343C3371897021D3B70055F51731639228FEF819375AE4</stationID>
+ <name>Religious @ WWJC-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>0.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397085812273223BBAFF802B339F77679CDF4423D08D0EE279DBB3B29CBBFD30127</stationID>
+ <name>News/Talk @ WMEQ-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>0.88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397CF6A040532E2E0DCC7837CA5D65400D26B6B925DFDA3F09C53921E46C246A829</stationID>
+ <name>Nostalgia @ WOKY-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397AEC5BD9C8410CAF5E851DF0338867EB14BFF61F9FE1834583EE02F6839DA6933</stationID>
+ <name>Nostalgia @ WCSW-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>0.94</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853979201ED24AE161C8E5F6C4245AE45E17CE493C898EFF4ABB040A5ACD7776BECED</stationID>
+ <name>Country @ WTCH-AM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>0.96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539724E838E37BF6FD15E28B01B2E3F20092267F8272982959AEFCE37019D71A79D0</stationID>
+ <name>Oldies @ WPRE-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397E4AB7ACCF79E9F99192D6916790721DAF2657546B61DFEA537DFFBEF94911C16</stationID>
+ <name>News/Talk @ WSPT-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>1.01</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853977787BB6B8A2D765F5FDC6C8D4F8C5B86A9061C2A5E46000F26111CC64717D72C</stationID>
+ <name>Nostalgia @ WLIP-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>1.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539747CAD53B5EC2FCE062E2D75C564FC6692EA31D8F367B170BE0E87BCDE053043C</stationID>
+ <name>News/Talk @ WTSO-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>1.07</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539747279D58547C22A3E08A969F11EF6A61D62D202698EFEF3B14BCEC9FA1349E72</stationID>
+ <name>Country @ WAQE-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>1.09</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397EFAE48D2D51A96B7122D48469E75C49419E99DA2DE37B70057C13F1B5EEAADD4</stationID>
+ <name>News/Talk @ WISN-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>1.13</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853974453ABBDFD48A579D41F424ECDCC355A48866134C428E99A73386F51D795BF78</stationID>
+ <name>News/Talk @ WHBY-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539759E2B168F69558257FD521CF55944FD86B3C97D89B2AF291495469E2471BD16F</stationID>
+ <name>Nostalgia @ WMRH-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>1.17</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397BDAD2AE3D7F841E199C341B5D14FC4C9B9C1A1646DD61CFF9222C0255E573352</stationID>
+ <name>News/Talk @ WXCO-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853976BBDF6A6C4C392E351C836F7AAE7FC80AB4C7892A660DAB817D3795FB4500090</stationID>
+ <name>AC @ WJMC-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539757DF93C0AB967BCF27C2C05DB00BD30BC6769FBF2C519063F8409EC44B9E4D29</stationID>
+ <name>AC @ WWIS-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397EB77593C77F954FF6BD008B3F7C7CBC45151BC569F24DADCD787DCDB44B10C3F</stationID>
+ <name>Talk @ WKLJ-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397BF280F73D5D5275F185EDF18E8ED819EFDEEFDC4C3CB415427AB86F74C2DB4E0</stationID>
+ <name>Sports/News @ WIBA-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853974FCFF4FF2FE271BFCA9975254A35389C472F2AB0EF3C9DBF629FB3723A72517A</stationID>
+ <name>Sports/News @ WFHR-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853976EA7495F51B0EF80AF16BDEAFCF40D17226A90A0863C1ED9DF71CB1A513E84A8</stationID>
+ <name>Misc @ WLDY-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397A395D9ACA8F8D293BF9E994A85186CE8C353F8AD1CC7E13D4348331DDE0E9D74</stationID>
+ <name>Oldies @ WVRQ-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397193F05CCABCD9EC40CB0917FBEAFA8BE72EBC1271E034232AB0818160D8AE968</stationID>
+ <name>Nostalgia @ WCCN-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397B0EBC5D4B640B305B788B8B7E6DD7BFB7B7457A92D8A21C7FA0499D2EB1B822A</stationID>
+ <name>Nostalgia @ WFCL-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853974A61887EB68B9AD262B26A1A40E07E84E94E07C1BEE718DECDCCC2B100EEBB30</stationID>
+ <name>Talk @ WRIG-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853971D210F72D1DC857F8EFC02E4CE735150E247374D0801B911B55AED7DB677F1BC</stationID>
+ <name>News/Talk @ WDUZ-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397BCE55176E9B822E2C492982D88CF8F48939E7A205FE82E1B247BF2F683C88460</stationID>
+ <name>News/Talk @ WIZM-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397DC094A19F0E716EAD534F451CD3A62E31987704F6372A0B50EA772CD8779FF3C</stationID>
+ <name>Religious @ WJUB-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397908E380D8D29C2E39EBBBB2A5BF51F3A9C3F7410A4312A5FA48BA3820B54698E</stationID>
+ <name>AC @ WRCO-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539773F4CE5E528FF72B453A1224F5D701C5457A88F1E8A4A5FF4A054A672118C090</stationID>
+ <name>Sports/News @ WOSH-AM</name>
+ <shortname>104</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397D2E443DDC97D36901E96596D3C6D631DC3C721FAF10A8444499381037EF6236E</stationID>
+ <name>News/Talk @ WAUK-AM</name>
+ <shortname>105</shortname>
+ <icon></icon>
+ <frequency>1.51</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853973F85814269A2FB189FB05B3B07257171D886AAA8B7408444AD0C200F4A108128</stationID>
+ <name>Sports @ WMBE-AM</name>
+ <shortname>106</shortname>
+ <icon></icon>
+ <frequency>1.53</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853973D9B89B4564B91A444A8D500027880C2E938B78898C7B69D97F8CAEDC4E68778</stationID>
+ <name>Country @ WTKM-AM</name>
+ <shortname>107</shortname>
+ <icon></icon>
+ <frequency>1.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397F1ECA67625167EA2C194C39462B2E6DB4EB93228674A49432AC7260410C705D7</stationID>
+ <name>Sports @ WAUX-AM</name>
+ <shortname>108</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397AFDA09FB5D1917367310404526F5A5F40A16F59474CB0F5268E7E41089670742</stationID>
+ <name>Religious @ WGLB-AM</name>
+ <shortname>109</shortname>
+ <icon></icon>
+ <frequency>1.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853973C35A54E878FAF17DA10AFB63A9BBAD1C5F41C1C625764AD00B00EEC301AA20B</stationID>
+ <name>AC @ WMQA-AM</name>
+ <shortname>110</shortname>
+ <icon></icon>
+ <frequency>1.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853976D854B59A6EF8D5FCC2D555D5559F6D0056F7EB9EBEC9D75F28A6C6F83E038B1</stationID>
+ <name>AC @ WRPN-AM</name>
+ <shortname>111</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539770046720FC0D4C28B95A9350661B36D128E4F03D19364C820F58D8F4C0372712</stationID>
+ <name>Oldies @ WCNZ-AM</name>
+ <shortname>112</shortname>
+ <icon></icon>
+ <frequency>1.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Wisconsin_am.krp b/kradio3/presets/usa/Wisconsin_am.krp
new file mode 100644
index 0000000..b793986
--- /dev/null
+++ b/kradio3/presets/usa/Wisconsin_am.krp
@@ -0,0 +1,350 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Wisconsin</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853971D938E5B0443E95257A3947C304E3287C5F0AB2B1FCE27BD8DBA95E0C7300567</stationID>
+ <name>News/Talk @ WSAU-AM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <frequency>0.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539710C1DE921584C0390095DFA6EA622A53E50930149EB8782AADD046665211D576</stationID>
+ <name>Sports @ WMAM-AM</name>
+ <shortname>72</shortname>
+ <icon></icon>
+ <frequency>0.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397565BC79FFEFF7155E0C37BD217D7D49F4A991A38E826B4785DD51A5B3D5705FB</stationID>
+ <name>News/Talk @ WKTY-AM</name>
+ <shortname>73</shortname>
+ <icon></icon>
+ <frequency>0.58</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539761BE3E4768DC4946E9C595B504C1881A677FAA90A655BA3CCE51EC4414DBD0DC</stationID>
+ <name>News/Talk @ KDAL-AM</name>
+ <shortname>74</shortname>
+ <icon></icon>
+ <frequency>0.61</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397B331B69B8F217FDA29611CF177D96366A3B8ADCF070D7292A6859DAE25FD4190</stationID>
+ <name>News/Talk @ WTMJ-AM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <frequency>0.62</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539762673FA6FB904661FE4DB2EED295B5201D685772818DE8555D190253BF731A1D</stationID>
+ <name>Religious @ WWJC-AM</name>
+ <shortname>76</shortname>
+ <icon></icon>
+ <frequency>0.85</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539756153D0AD8625298F9F68906197ADEFBCF8A67B7368A90A867DF95F22FC993D8</stationID>
+ <name>News/Talk @ WMEQ-AM</name>
+ <shortname>77</shortname>
+ <icon></icon>
+ <frequency>0.88</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539714FBCC38F0CB481F550C45E25E9E62751F11AEFF6A44A2DC37AAF74D07BC87FA</stationID>
+ <name>Nostalgia @ WOKY-AM</name>
+ <shortname>78</shortname>
+ <icon></icon>
+ <frequency>0.92</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397CD572A47955B62DD6C9958C861E84C1A88CF15259F04CDAECF6206EEC8343B48</stationID>
+ <name>Nostalgia @ WCSW-AM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <frequency>0.94</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853979CA535125E612C40F820FE92F15CCF95805AF8AC92E54C538DEF2DAFDA622A70</stationID>
+ <name>Country @ WTCH-AM</name>
+ <shortname>80</shortname>
+ <icon></icon>
+ <frequency>0.96</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397ABD5CF8B6CB4677DCFCC99BA92775CB2FE5FE233285C2D4F7144E631D3AD995C</stationID>
+ <name>Oldies @ WPRE-AM</name>
+ <shortname>81</shortname>
+ <icon></icon>
+ <frequency>0.98</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853973335DA5C168326B88794E651F7394902DBFD7231E43E3DA20020B7E9CCC2A350</stationID>
+ <name>News/Talk @ WSPT-AM</name>
+ <shortname>82</shortname>
+ <icon></icon>
+ <frequency>1.01</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853971976A0C793F1DCC4508735C7FD2B27DECCFCDF8D3F9E6A12848880E28706661C</stationID>
+ <name>Nostalgia @ WLIP-AM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <frequency>1.05</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397B7F3D6A3735007DCCE38F5F3696FD9DB25B39F89E77229A52975FD96641F7CCF</stationID>
+ <name>News/Talk @ WTSO-AM</name>
+ <shortname>84</shortname>
+ <icon></icon>
+ <frequency>1.07</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539788A1A8022F76FC9F2FEC002C5B76EF305E463B92A1DB10A0757C9EBBC555EDB3</stationID>
+ <name>Country @ WAQE-AM</name>
+ <shortname>85</shortname>
+ <icon></icon>
+ <frequency>1.09</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397C1F91A14A8601C92464987AB442D773C9EDD6CE32A90B9424D2B6BCA5B944E82</stationID>
+ <name>News/Talk @ WISN-AM</name>
+ <shortname>86</shortname>
+ <icon></icon>
+ <frequency>1.13</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853973C899A4E1950893CB2D8CC43567F71C9A35006213E9913497A1D5F77A40812ED</stationID>
+ <name>News/Talk @ WHBY-AM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <frequency>1.15</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853974466C63819AACB0AD1A19E29D7FB862C53B9F222B7284B704F818DFC990AC007</stationID>
+ <name>Nostalgia @ WMRH-AM</name>
+ <shortname>88</shortname>
+ <icon></icon>
+ <frequency>1.17</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539795FA9239B6C8264CB0525154301121F4A81E9277A14F33423EC3E61B17979128</stationID>
+ <name>News/Talk @ WXCO-AM</name>
+ <shortname>89</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397E99FAE529FE634BC286BBACCB3DAB5EDAD01ED54EE88866707848454DCE13C72</stationID>
+ <name>AC @ WJMC-AM</name>
+ <shortname>90</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397C3C93F3B89AA1CBA5769AC01DC3A53DE56F57FA21E5607BEBA01E3F41B13B759</stationID>
+ <name>AC @ WWIS-AM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539740F01A8FF1A0A3D92EA78202696CDAC3C234771AD6CCD47DAB46F50CADA21971</stationID>
+ <name>Talk @ WKLJ-AM</name>
+ <shortname>92</shortname>
+ <icon></icon>
+ <frequency>1.29</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397E7276268979C7BD23C3E432825F92FF6BB8670C02BB0927798193911009D2F2A</stationID>
+ <name>Sports/News @ WIBA-AM</name>
+ <shortname>93</shortname>
+ <icon></icon>
+ <frequency>1.31</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397A8E98A0607148D3660CD3DD9327CC9F099CB6DCDFDCCBDF2CFD004ED8D0BE173</stationID>
+ <name>Sports/News @ WFHR-AM</name>
+ <shortname>94</shortname>
+ <icon></icon>
+ <frequency>1.32</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853979F425387E827CF9B25F6BB326066F822D36EEF2E7C1962A973C4EB6F538CA062</stationID>
+ <name>Misc @ WLDY-AM</name>
+ <shortname>95</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853974C27558752CD6F04C4E7361CF0DD30BA4A7581431E2F89B40FE1C543B073CF1E</stationID>
+ <name>Oldies @ WVRQ-AM</name>
+ <shortname>96</shortname>
+ <icon></icon>
+ <frequency>1.36</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397C3218AF1B9119ABC27957EEFDC829FA24BB75FB3372657E34FE53F862518B22E</stationID>
+ <name>Nostalgia @ WCCN-AM</name>
+ <shortname>97</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853970F4F8AC07178DBDE98A06D2B2044785B10278A26F339A44CAD74B67D293AA769</stationID>
+ <name>Nostalgia @ WFCL-AM</name>
+ <shortname>98</shortname>
+ <icon></icon>
+ <frequency>1.38</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397676D3E8C7F0CBFC826354AD9D3060E3F26ECD527D489C1894F9DE1F7A0C812EE</stationID>
+ <name>Talk @ WRIG-AM</name>
+ <shortname>99</shortname>
+ <icon></icon>
+ <frequency>1.39</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853970998F72945E01F83C85B5B2B14F43BC9A8FA84E11AC5BFA25389F5BB28049F6A</stationID>
+ <name>News/Talk @ WDUZ-AM</name>
+ <shortname>100</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397E2CEF14BA5CC11D1FA620FEEFDC67A80AE1BF411258C2C7677C0BD76763B6CE0</stationID>
+ <name>News/Talk @ WIZM-AM</name>
+ <shortname>101</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853975476E8574E403386047D7A6FCAB0C951514B1CC46608A591DD480C0672F66889</stationID>
+ <name>Religious @ WJUB-AM</name>
+ <shortname>102</shortname>
+ <icon></icon>
+ <frequency>1.42</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397F1A908D36A9F74D52F738E73FAAC253DC3C256C27604AC699C79849306688F8E</stationID>
+ <name>AC @ WRCO-AM</name>
+ <shortname>103</shortname>
+ <icon></icon>
+ <frequency>1.45</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853975BA88F34B1809B35FE44858763881F255ED8A065ED10A0EAE76FCE4BD4A0C0F3</stationID>
+ <name>Sports/News @ WOSH-AM</name>
+ <shortname>104</shortname>
+ <icon></icon>
+ <frequency>1.49</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853979A509C7A1DC5405B02145A412FF97AD5F92F559241C719CF8176AE239D2D68FB</stationID>
+ <name>News/Talk @ WAUK-AM</name>
+ <shortname>105</shortname>
+ <icon></icon>
+ <frequency>1.51</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539780352EAFD4B4C292FBFD810D21EFE010E4E949BC048A20EDB07C73CBE12214E8</stationID>
+ <name>Sports @ WMBE-AM</name>
+ <shortname>106</shortname>
+ <icon></icon>
+ <frequency>1.53</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397E55B8203105C3539851D9EAA32758A98C091ED6CD3BA5402BD9784A97A603B74</stationID>
+ <name>Country @ WTKM-AM</name>
+ <shortname>107</shortname>
+ <icon></icon>
+ <frequency>1.54</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539789255AE29C3C4958E99A212B10D5C1569B4E3D5DE17009A0F457C0D7E2534875</stationID>
+ <name>Sports @ WAUX-AM</name>
+ <shortname>108</shortname>
+ <icon></icon>
+ <frequency>1.55</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397CDBD1B5B9D7A199692E5B60FAEA82951E8D297C887FFFF1852E19B5BC7044540</stationID>
+ <name>Religious @ WGLB-AM</name>
+ <shortname>109</shortname>
+ <icon></icon>
+ <frequency>1.56</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853973E02D7106E0B95AA28774FB63E431DDD58104B8C88CFCAE2D44F34A203ED7BBC</stationID>
+ <name>AC @ WMQA-AM</name>
+ <shortname>110</shortname>
+ <icon></icon>
+ <frequency>1.57</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397B647672D9ED91277BDE3F24A8FE374B10CBA53A56DA171518B497BA4407B30C2</stationID>
+ <name>AC @ WRPN-AM</name>
+ <shortname>111</shortname>
+ <icon></icon>
+ <frequency>1.6</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397A35777F0AF1AE79E912313BFBEED4BCE4CF2F5D19BBC114A7708CD4A71621557</stationID>
+ <name>Oldies @ WCNZ-AM</name>
+ <shortname>112</shortname>
+ <icon></icon>
+ <frequency>1.66</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Wisconsin_fm.krp b/kradio3/presets/usa/Wisconsin_fm.krp
new file mode 100644
index 0000000..78939f5
--- /dev/null
+++ b/kradio3/presets/usa/Wisconsin_fm.krp
@@ -0,0 +1,574 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Wisconsin</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385397A251A35FABD917B48A116272DA55909D6CA04FE1732564C18BFB4827F725114E</stationID>
+ <name>Smooth Jazz @ WUWM-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>89.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853977066CB6D26FCEF8507E6BAD77F3E34920DC0448A47E971F52D568083A9AB8D01</stationID>
+ <name>Alternative @ WORT-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>89.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853977B8CF88B6B92F2476D560A63E226BAE45859D726766F68FE6002CA36352A27AE</stationID>
+ <name>Nostalgia @ WSUM-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>91.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853971077A0A2D661F88BA8CA355D001F46F99D8D6AAD5AA907FD16938E04BA18B4CF</stationID>
+ <name>Soft AC @ WEZY-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>92.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539776C346C949130781D321528BBEADEA93EC56F972C11FBDCE40B37955EC53A48F</stationID>
+ <name>AMERICANA @ WJMQ-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>92.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853975555E4276F451123D773826A1AA90DB8974D82E2FC41A2781ACA98338C5FDB33</stationID>
+ <name>Oldies @ WECL-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397E7C59D8623B768D39D35123CEBF8926A04AEF1812837083EE38749EAFECFE672</stationID>
+ <name>Smooth Jazz @ WJZI-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539799BBF6B3E15BA2087B5DF16BB2CDA9E0D494D17B2251F569812FAD24341679DE</stationID>
+ <name>Classic Rock @ WOZZ-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>93.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853971E80FAF7AC3D9A8D36F8EA4B0572E17588FAD1CE5286C49CED1E036595547EC9</stationID>
+ <name>Oldies @ WLSL-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853975FD72CD3E16B5315E820A6F7152FFB9DAC52617D384ADB8343C2D5F480FA63D2</stationID>
+ <name>Rock @ WJJO-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>94.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397010FAF31B6046643112B247FACE00512E7B529F7B4C8588E2548C332B47B1049</stationID>
+ <name>Country @ WQPC-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>94.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853977272F6770D0146718B02BDDFD90087876895A9E12080C7E3C4A66A267D79E03D</stationID>
+ <name>AC @ WKTI-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853978EB5D90A17AFB2C767A1E2CE1D4EF2E19F774C9E3C277E7DAB2A8498A1177A48</stationID>
+ <name>Active Rock @ WZOR-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>94.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853979B3AF13396ACAA4EF8DF4ADBB3B35DA1D34A884F1351DCAB399350F477774FDA</stationID>
+ <name>Oldies @ WOLX-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539774D2E064109458ECA88C4722B599939A64C6AFA06575701A4EC3A49A89A15A9C</stationID>
+ <name>CHR @ WLST-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397DA32D48DA34B9B9078338B8B4F6B479B19AB1A7D8EFB2D3C501CCF2F4064A9BC</stationID>
+ <name>Classic Rock @ WGMO-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539791DD1CCCD14C30C5F9DB0BD2221CB2CC185889561F0E3F029C26DDA3AE9603A3</stationID>
+ <name>CHR @ WIFC-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397FC4321C777C410B591ADC6D70AF5229FE1482BB33D36179F92D6E413D2BD4309</stationID>
+ <name>Oldies @ WRIT-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>95.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539766DFDB2CD5D4118C14E12E90F08620C344D0774BF50576DFC14A6051231D41DC</stationID>
+ <name>AC @ WMQA-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>95.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397150ADA9CCB5FA2A42CB7E2893C334E0E3462D72FD6F036DE73488831A973337C</stationID>
+ <name>Country @ WJMC-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397F0F1A98BC86233C349FF484DAB2951FC0F5EE00847AA9F525EEDC3079F26B5BF</stationID>
+ <name>Oldies @ WSFQ-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>96.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397D6AF9610653D01962C740F54754731D431EC33B20DB2FFF1622D5CE1BD1678E0</stationID>
+ <name>Classic Hits @ WKLH-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539700190426D4E35861B1079E3F460F3946344D4530E4FD8E24E9FC6337B935C860</stationID>
+ <name>Country @ WYTE-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397DDE5EC90D95CB2167ED182CF8624DEC873A88FB50C6907658A7564BE8EA02419</stationID>
+ <name>Rock @ WWWX-FM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397EC2E2900F5D638198C77E728B6E18FAF9D489D7B29D56CF6659F342FC7FA181A</stationID>
+ <name>Country @ WCOW-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853970C11E306FA873848E05C5DA671813191C871F95E61890C83F7AF442B223DFBC4</stationID>
+ <name>AC @ WLTQ-FM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>97.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397C72C1198F094F693990E27F5BFCCA089F0A85B196312F1522B77902135D28F5B</stationID>
+ <name>Country @ WHDG-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>97.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397C1362CA6EDB7194AF23562438D4375B16400CC165956EE47509BF1C4E7FA652A</stationID>
+ <name>AC @ WSRG-FM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>97.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397CA697FB1E6176B0D28DE198BCCF0323212E154CF80CFF27CCA1FAF5F4154BA0B</stationID>
+ <name>Hot AC @ WSPT-FM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853974F795FEB52F54B79AA154987F1FB27D3CCA215C18E723AD8A509E61B6BF50908</stationID>
+ <name>AC @ WMGN-FM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>98.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853975A119F33F7D3D492511BA4D1CB5068A2FDB172798364BEEC401069278697FEBD</stationID>
+ <name>Country @ WCQM-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>98.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397046C4D6C0B82FA4165D6F6C76580CECD8B3FD66655C85932BBE04F4C82519B2B</stationID>
+ <name>Hot AC @ WQLH-FM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>98.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853974741C2B843C7741639D34235588ADBAFEFF03426872FDD410922064A411CD390</stationID>
+ <name>Oldies @ WMDC-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>98.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397B9D10F653154306E5426B4A84873B5BC7466E60E672FFE5D417468975701D190</stationID>
+ <name>Country @ KTCO-FM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>98.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853973677BA6EA84B823C79784EB190B05582E750DA7E2A370B1E43FAAAC9EBCD5C04</stationID>
+ <name>Oldies @ WOWN-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539771BF50B2785CF58DEC0313E0A85B9FD6E4F3CD47D235CD3D165C178AF0D5BF1C</stationID>
+ <name>Country @ WPKR-FM</name>
+ <shortname>36</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397DAC22D26C1C07F9EB4BC8AC4FBDEF7234A5A3F77015F3BDFAA33CF67E3022332</stationID>
+ <name>Oldies @ WIZD-FM</name>
+ <shortname>37</shortname>
+ <icon></icon>
+ <frequency>99.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397C0C0525A46624EFE1EFDDCA1D1D6DE5E8D0C3CA6D56CF0D64852ACC62B410D06</stationID>
+ <name>Classic Rock @ WGLB-FM</name>
+ <shortname>38</shortname>
+ <icon></icon>
+ <frequency>100.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539759862BEB959DD056947A4D0EB2ADE10156649BF88F970AADD6EF1C36ECC296FD</stationID>
+ <name>Country @ WNCY-FM</name>
+ <shortname>39</shortname>
+ <icon></icon>
+ <frequency>100.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397DAD364912D092FE232CDA23529D2EB953BDF2F745FBC903FF2DB48CD54CB6C22</stationID>
+ <name>Talk @ WTLX-FM</name>
+ <shortname>40</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539792AA90EFE6315A4CD0795D9B7EA6288A04BA2E286D7D9D82D4F463358C3E886F</stationID>
+ <name>Urban @ WKKV-FM</name>
+ <shortname>41</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853978FFAEC7649C0A022D9BF0B00A9FE490CE9C8EB938739732C25DB2633DF61E454</stationID>
+ <name>AC @ WRCO-FM</name>
+ <shortname>42</shortname>
+ <icon></icon>
+ <frequency>100.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853972847A07A0D85407DCA056F3CB36E1855ECD4CF686B7FC527532B0554ECEA3831</stationID>
+ <name>CHR @ WIXX-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <frequency>101.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539746F0694CB87FE6436464B93A9AE57F0DB932BADC7ECC700A1C2749CBD796600F</stationID>
+ <name>Rock @ WIBA-FM</name>
+ <shortname>44</shortname>
+ <icon></icon>
+ <frequency>101.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397A01C051A45B4649B4701FDC2713CFBA0FFF4CA86E141CBEE93764DD6D69924F9</stationID>
+ <name>Country @ WDEZ-FM</name>
+ <shortname>45</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397920F1132514F59095D2547A67DAC494E402E98926DBDEAA3C44F699284E6826E</stationID>
+ <name>Active Rock @ WLUM-FM</name>
+ <shortname>46</shortname>
+ <icon></icon>
+ <frequency>102.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853979213A14BCACCD15D81A438629C13DCB1F7BC5D0A9F6EB4671C77E6524B951A2A</stationID>
+ <name>Country @ WVRQ-FM</name>
+ <shortname>47</shortname>
+ <icon></icon>
+ <frequency>102.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853971F45988362E2B4E1CBDD93F9360CE57F50E1939BD804F1C1BB821F75CEFF1C52</stationID>
+ <name>Christian @ WNWC-FM</name>
+ <shortname>48</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539798F495E0172007E52BFFA70E4DEBFB6FA39F992E1469054398365981F11ED43F</stationID>
+ <name>Religious @ WRVM-FM</name>
+ <shortname>49</shortname>
+ <icon></icon>
+ <frequency>102.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397B650F923A0A84BA32971396E16A57150232E94901BC2D24FD0FF8D912CB5BD0D</stationID>
+ <name>Rock @ WLZR-FM</name>
+ <shortname>50</shortname>
+ <icon></icon>
+ <frequency>102.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853977D30C10F14D85E974E4450DB5F326DE54D3DB477EC4994FE3647F48E97C4F339</stationID>
+ <name>Oldies @ WOGB-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <frequency>103.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853974DBB50F87AE6019656F7268B14FD182E76179E6CC4CE36830312FF509C78E2A0</stationID>
+ <name>Classic Rock @ WGLX-FM</name>
+ <shortname>52</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853970144E484D60D0389165C85AB6BA6CB5C7E12CB5F7DAF85EA448BAF3595568878</stationID>
+ <name>CHR @ WXSS-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397BA2841899B6746730819ED25407AE1F16E8FABF46E960BE50D179864DCA07926</stationID>
+ <name>Rock @ WMZK-FM</name>
+ <shortname>54</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539729C653CF298B7974A49F01EFD313C5C03EBF686F8D61A2631D0B5B602212D4FF</stationID>
+ <name>Classic Hits @ WECB-FM</name>
+ <shortname>55</shortname>
+ <icon></icon>
+ <frequency>104.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853979FFF2E4C3FEFCCC5E520C127B665346E31337761BE79C3A4DF316B843B082717</stationID>
+ <name>AC @ WXER-FM</name>
+ <shortname>56</shortname>
+ <icon></icon>
+ <frequency>104.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853972C919720B84797E3FB5B9DFEF258DBA580CEFEF39E28C70461C1D0F41DF45D6D</stationID>
+ <name>Country @ WEXT-FM</name>
+ <shortname>57</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397A811E31FB60F2ED8202776221FD23F50AFFCC11A7606A74103E8596401CFD212</stationID>
+ <name>Classic Rock @ WKQH-FM</name>
+ <shortname>58</shortname>
+ <icon></icon>
+ <frequency>104.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539797991ACE321F9098FEFAFFB6D006108E824B67A2AFFEF087EBE94100BA249E75</stationID>
+ <name>Eighties @ WBZU-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <frequency>105.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397C33D8B0D95F956DD9ABA341FBAB14BA49FE9D3615AB3E86AC74F2019DBD32495</stationID>
+ <name>Classic Rock @ WRLO-FM</name>
+ <shortname>60</shortname>
+ <icon></icon>
+ <frequency>105.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853976EB2CADB7DC0192D82C2971F6DB3E951E9AF4A10155240194731CA1E67B7B88B</stationID>
+ <name>AAA @ WMMM-FM</name>
+ <shortname>61</shortname>
+ <icon></icon>
+ <frequency>105.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853976F9B1DAA04671F74E693FDEE1742D9E33DF563CBD0203994BE78DD85CBA5D2A0</stationID>
+ <name>Rock @ WAPL-FM</name>
+ <shortname>62</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397D65F74CE6B0D4E6D50FE3A19DEB2365725040C4B382913826746D3344329AB97</stationID>
+ <name>Religious @ WEGZ-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <frequency>105.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853976CE9DC830C42307F78BBC66EEA72802751A21C154F62013109B15724AF7023D9</stationID>
+ <name>Country @ WMIL-FM</name>
+ <shortname>64</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853973FA5FAAB678CD179CC9C18BA63AE892F9D5FBB9B451C837EA20823E75F293618</stationID>
+ <name>Country @ WATQ-FM</name>
+ <shortname>65</shortname>
+ <icon></icon>
+ <frequency>106.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853978848F6B891DDAB6FAB945EF58C0EA9D40F144690827FA2A903D86BF1139D69CC</stationID>
+ <name>Rhythmic Oldies @ WMJR-FM</name>
+ <shortname>66</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853974086ABC0FAAE20171BD893499A8BE9CA283D4124272EF43B452528B482DDFEE4</stationID>
+ <name>Hot AC @ KFIZ-FM</name>
+ <shortname>67</shortname>
+ <icon></icon>
+ <frequency>107.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539741A156503F3068FD74FD8BBDCDA649D0F1CE5D3C3641F3E9BE9DED822D41E2EA</stationID>
+ <name>Classic Rock @ WCCN-FM</name>
+ <shortname>68</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397F80019BCBB5E3AFC2F9498612BBEDECF2E5F430949093146281AD3484A872260</stationID>
+ <name>Hot AC @ KUSZ-FM</name>
+ <shortname>69</shortname>
+ <icon></icon>
+ <frequency>107.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385397ECCD351F881EE9DE4455D5CC61983BFB6C401F12731E25A9C9DF1D051E096675</stationID>
+ <name>AC @ WYCO-FM</name>
+ <shortname>70</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Wyoming.krp b/kradio3/presets/usa/Wyoming.krp
new file mode 100644
index 0000000..1357c74
--- /dev/null
+++ b/kradio3/presets/usa/Wyoming.krp
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Wyoming</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1063385399FE8F0DAFAC256C61114867301835F1C91385CC7787FFAE0B8C76BC257828E67C</stationID>
+ <name>AC @ KUWR-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399BB71AA9F44F6B5EE9DB92109D1E77EC1B6F2466B9E93A86C7CE4D27201DC83A0</stationID>
+ <name>Classic Rock @ KLZY-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399E94280BA50BAE5DA28DFDD96F014A0276310A3E803B4F0CF134AE3736092E442</stationID>
+ <name>Country @ KLGT-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853995103E75A0776EFBE38563CD8E2A9AD1BED928649B2B9FDDDD7B285BB32B685F9</stationID>
+ <name>Country @ KYTI-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399797DBFBF5098BCC116DB455D060D75AB2EE4E9550AF538E700042C715FDF84F9</stationID>
+ <name>Oldies @ KMLD-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853991C9D267CFDAA50E78EF4FB787E3BF3D59CDB5AD941DD980AF2F34E8A0B260131</stationID>
+ <name>Classic Rock @ KZWY-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539933790E6C11531825D705317AB5B74E7157840AAB469CC5A64873F0A4E0F20121</stationID>
+ <name>CHR @ KYCS-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399911AD8EE006112E348FEACCAB0FA41D0FDB1D922FC46A3D1502DA29C08DD94C9</stationID>
+ <name>Rock @ KZJH-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399A44C0BB2354532DCF1B179F2D7BF03446E9EB84722C81C85AEAAA511BAFEED2B</stationID>
+ <name>Country @ KWYY-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399B61638D0D5D406DF4BDD69FE3194CFE8F233AC50377FE289C53FE2174B62FA45</stationID>
+ <name>AC @ KMGW-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853994F353A858CF4A99BEA84606FFF2C3DFDAA12090C9DFAEB6E55862EA0EC0F9552</stationID>
+ <name>CHR @ KMTN-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399FF248DF53FC5B7DEB49D582511169512196AA2024932806793CD433646300E68</stationID>
+ <name>CHR @ KTAG-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399086A3466D72B92F20529623E8514E8BD05281B975BC6ED4CB4FBBE0BDE1A53A7</stationID>
+ <name>Country @ KKTY-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399CB395ED823C0FC02D7F0954395932D11035FE6729639D1C9C924AF7C2752AD7E</stationID>
+ <name>Country @ KGWY-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399F2449013AF3587FAAF86F36382F83D6DD33BA396726C254964832EB71E2A4079</stationID>
+ <name>AC @ KZEW-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539936556D466FD726FA994988A75C9F88AD9FD381A15F11507E3DE53DA75A9AD02D</stationID>
+ <name>Country @ KMUS-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399D512BF3E22C37186BA9D0EA4E472FBEE103C67A97FA0BFECD7993FB7C0A4EA74</stationID>
+ <name>Hot AC @ KHOC-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399849A919E5BC59F1FF36978C1B71ABBDA5F2B764A0C827C0855835911101285ED</stationID>
+ <name>Country @ KQLT-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399CE0CB192C6C734D88CEE5807DA79D101A2425169AA909AAA8C73AC424126F137</stationID>
+ <name>CHR @ KTRS-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399ADE0CBFDFCF0454D97EACB06A62A47AE6F558B7B79BA47F664C1547DBC4C3087</stationID>
+ <name>AC @ KOTB-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539969899294A2DE454BDB330EA4302C622E3F5156C4D435F3763AE2A09B91A47D7B</stationID>
+ <name>Classic Rock @ KASS-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539919D146A083AE299C377643DB4CE2992C8B329E78B8071E70CE7CC3D32B4026C1</stationID>
+ <name>Classic Hits @ KRVK-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539950CB62E3A3E539920D11E96E2FCF1B0DA0DA02F90080BCA017BA83121A8D00C5</stationID>
+ <name>Oldies @ KROE-AM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399ACBEEA576D57B56A84BC10BB9DBAC2DAD79B181B6418182D8560745EC82B1F76</stationID>
+ <name>Country @ KTWO-AM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>1.03</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399395F307C541074F94103264CC70E7289F9D022DC78D1C3C9D4D7269EDDD3E776</stationID>
+ <name>Country @ KZMQ-AM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>1.14</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399C5D2EEB81B9330EA5F08AAF823126F6F3CE865CA3E3AD7321B4FFC59E771DAFF</stationID>
+ <name>Nostalgia @ KVOC-AM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399B5A074FD0AEF42170B8244DE54BC60D63D7491DD7019405E6C386429861FE232</stationID>
+ <name>Oldies @ KASL-AM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399454E7A47032E5C22E3EC2FDC4CA39598B68778086EE2AEFD7BF6B0F2AFBD700D</stationID>
+ <name>Country @ KPOW-AM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399BEA1C4E8E1045389EAE7691C70E010EDE5BD4A102A0AD31C8B6095E3FA42B3B6</stationID>
+ <name>Country @ KIML-AM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399C6C1A38B8B4B43EDCE0E6EBD85D4C52608A3DD84D5027BC1F7CD9FFC386CFAC6</stationID>
+ <name>Country @ KOVE-AM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539928B6A439E8F232B8E2C0E106FA7102447A0CA3F4B9A49AC8319598A762FFAAE9</stationID>
+ <name>Country @ KYCN-AM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853999646C24B244615FBE3AAAB926897BC23FB480DDA23F6D8ED07A24F82708A0639</stationID>
+ <name>Nostalgia @ KJJL-AM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399BC9747EA0D156B6C466A5DF7C1B1EC2A93EAE2AA94073C07F6BBD46280D54F36</stationID>
+ <name>Sports/News @ KODI-AM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399C182E94282D7810EBB6182236800CBF80DFACC5083EE9D06DC9BEFD0252EA0AA</stationID>
+ <name>Nostalgia @ KWYO-AM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Wyoming_am.krp b/kradio3/presets/usa/Wyoming_am.krp
new file mode 100644
index 0000000..4c907f4
--- /dev/null
+++ b/kradio3/presets/usa/Wyoming_am.krp
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Wyoming</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633853991CB5D029838C343B796E71BE98724C17AB0534CB93F130D151217EC95B2F6BAA</stationID>
+ <name>Oldies @ KROE-AM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <frequency>0.93</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399C95D77B53A85EB73394FE704121B84D60679CD427C289753C9300A124934E914</stationID>
+ <name>Country @ KTWO-AM</name>
+ <shortname>24</shortname>
+ <icon></icon>
+ <frequency>1.03</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399683A9DFF57D51549CF653BF81B7365567EEF7DCDD2F5829178D5B420BFED67C8</stationID>
+ <name>Country @ KZMQ-AM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <frequency>1.14</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853994AC2FA911B06EB44012AFCE46218C09E75D740D17304167799731B7A27217CD5</stationID>
+ <name>Nostalgia @ KVOC-AM</name>
+ <shortname>26</shortname>
+ <icon></icon>
+ <frequency>1.23</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853991F0FC6F0120037AAB82DB1784493332C36F129508F69417946C4B03F9AF5BF95</stationID>
+ <name>Oldies @ KASL-AM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <frequency>1.24</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853998E5B2973429CE5A2DB231D4AA623D72335832A75A1EE68D5C58B1E22CCEF2FFB</stationID>
+ <name>Country @ KPOW-AM</name>
+ <shortname>28</shortname>
+ <icon></icon>
+ <frequency>1.26</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853990DB90670343BD6FC63FEE41D3BE6DB9E5CB16F43C749A4E5F44459E3E18CAF4E</stationID>
+ <name>Country @ KIML-AM</name>
+ <shortname>29</shortname>
+ <icon></icon>
+ <frequency>1.27</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853994448962EA7415CEA24CF95DE08B15FA2FD6F995D4A2266C7F150C99E40EF7CA5</stationID>
+ <name>Country @ KOVE-AM</name>
+ <shortname>30</shortname>
+ <icon></icon>
+ <frequency>1.33</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853994C631BF8FBB7514641AE01315B17A5DF3450F6468A2DE9D5DD838644C07E8688</stationID>
+ <name>Country @ KYCN-AM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <frequency>1.34</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399382C4EE129B072B20DE8EF09027139443AF69F9D4CFF8421C051953E5FEB0EC5</stationID>
+ <name>Nostalgia @ KJJL-AM</name>
+ <shortname>32</shortname>
+ <icon></icon>
+ <frequency>1.37</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853997190D1E1FA762F04D1FEFD193CFE12D122BF50729F112ED358957FF86A72A1F1</stationID>
+ <name>Sports/News @ KODI-AM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <frequency>1.4</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385399D6F3BCAE7CCC168D2A052749E4AF11B3C1BE27D3F777CE444AFD44A8DB0A8889</stationID>
+ <name>Nostalgia @ KWYO-AM</name>
+ <shortname>34</shortname>
+ <icon></icon>
+ <frequency>1.41</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/Wyoming_fm.krp b/kradio3/presets/usa/Wyoming_fm.krp
new file mode 100644
index 0000000..38b2e57
--- /dev/null
+++ b/kradio3/presets/usa/Wyoming_fm.krp
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>G. Richard Raab, rraab@plusten.com</maintainer>
+ <changed>Sat Jan 18 14:31:54 2003</changed>
+ <country>USA</country>
+ <city>Wyoming</city>
+ <media>antenna</media>
+ <comments>Generated from http://links.radio-online.com/stations.htm</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>106338539878A74D182373217D9F99E64DFDF76409EB5E66ACF4B9A0602F1E0E2772AD76EF</stationID>
+ <name>AC @ KUWR-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853980C04C8E9AA7EF3BECE491D8956CDBF6FC3C4A356B0932B53EE95351D4CFC39A2</stationID>
+ <name>Classic Rock @ KLZY-FM</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>92.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853985882C8F9FFD868753C6BAF60B01A2D8433385CCCDC998D397F26515704E1D246</stationID>
+ <name>Country @ KLGT-FM</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>92.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398F6C9E6E31F77B5CF79B3146605BC143E5CCCEC3AD770A1EAD742DD16B2034936</stationID>
+ <name>Country @ KYTI-FM</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>93.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398558341C8F41C9BBF629D6FB424AD36F0951F96A46B11DFD8044E3EA6D77ECA03</stationID>
+ <name>Oldies @ KMLD-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338539845E9B3987662952B6DCA8FE405044112F7BE4804D1010316C6E8E507C6EDD238</stationID>
+ <name>Classic Rock @ KZWY-FM</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>94.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398108AC36F9A5FDEAADFA1D0B595107B396FAAACD9F1BEAEF9C4974C3C5CB2382C</stationID>
+ <name>CHR @ KYCS-FM</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>95.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398074B26BBFACB70A4744F0B1464C219005CE55EAB88F9B6AD22DF64E9FCC8759E</stationID>
+ <name>Rock @ KZJH-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>95.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853983F3A8E416187CCD4C78F62D39A05BD7CEE2639C851A2BD73913B786696991E5A</stationID>
+ <name>Country @ KWYY-FM</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398784FEFF8A02B61E26E717CD0FDC2D94EA0946F23A8823FB746AFEE96D5CFC815</stationID>
+ <name>AC @ KMGW-FM</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>96.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398F7D513ED66A06C9C280CA3A5BDE8BDBEA3906588C80289CDE919D9032F87C880</stationID>
+ <name>CHR @ KMTN-FM</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>96.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853982D1A3A371B1EE3C7728A1593051EA396E0D32DE465FD62E06AF470FE1019C75B</stationID>
+ <name>CHR @ KTAG-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>97.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853982D90EFB39547176C37AB78A34238249DA8482E99EF17BC8187161BE7B2EE7A96</stationID>
+ <name>Country @ KKTY-FM</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>99.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398B9A7589ED4B9708DBF507536457DE712080298F27B78EA85BA0E59288C5411CC</stationID>
+ <name>Country @ KGWY-FM</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>100.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853981F9D76F880AB4085FF0F4278A1FC57AACD9927621A34F8B41CD7CB7722E223C8</stationID>
+ <name>AC @ KZEW-FM</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>101.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853984D553019FD2606CD65C40F831D6D24C11144DC21DC4AFB2AF261DC3BE41B69B8</stationID>
+ <name>Country @ KMUS-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>101.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398DF34E59204FEE40CBE8D6A706D6DD2C1A6CDFD53D79DBBE356C12AEC01F2A47B</stationID>
+ <name>Hot AC @ KHOC-FM</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398B03F5944D66C1B8561B66468B3CA872512C3F20246CFAAC71015018939BEA890</stationID>
+ <name>Country @ KQLT-FM</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>103.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398AB6C0564C90843C6B886149E0AC3EF1CEB112A20BD41A1F38F377D5113C5AEE2</stationID>
+ <name>CHR @ KTRS-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398999165766C32DD2C1E2FDF864AEB9EB6283F59CD11737DE8C3184C73DA3F1D81</stationID>
+ <name>AC @ KOTB-FM</name>
+ <shortname>20</shortname>
+ <icon></icon>
+ <frequency>106.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385398DACC30C0D55A148CA5B120AB209836B2D604EBC836F3B4BF257516B9806E72F2</stationID>
+ <name>Classic Rock @ KASS-FM</name>
+ <shortname>21</shortname>
+ <icon></icon>
+ <frequency>106.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633853981B746AD0F34986FF4D22244AF04F5937424E81C8AAA9801CC1A6A834295EA2B4</stationID>
+ <name>Classic Hits @ KRVK-FM</name>
+ <shortname>22</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/college-park,GA.krp b/kradio3/presets/usa/college-park,GA.krp
new file mode 100644
index 0000000..ef78d7a
--- /dev/null
+++ b/kradio3/presets/usa/college-park,GA.krp
@@ -0,0 +1,215 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Rodney Ricks, &lt;rsricks@bellsouth.net&gt;</maintainer>
+ <changed>2005-03-27T12:35:32</changed>
+ <country>United States</country>
+ <city>College Park, GA</city>
+ <media></media>
+ <comments>Not all Metro Atlanta stations are included, just those that have
+a strong signal in Zip Code 30349.</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>1116455444C9422304B5360CB65429F4A002AD3C71A5EFBD5160FBFD272863FFC20BD8ADC1</stationID>
+ <name>WRAS Georgia State University - Alternative</name>
+ <shortname>WRAS</shortname>
+ <icon></icon>
+ <frequency>88.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544490F02F5DF861E909C06089BAD7E6F2403C347A584392BD4C973447754A2F0A31</stationID>
+ <name>WRFG Radio Free Georgia - Progressive</name>
+ <shortname>WRFG</shortname>
+ <icon></icon>
+ <frequency>89.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554447F92BA1F34DD4A9079B9EE6E5FB56F8527ED9B0506A3DAE8ACD5CF061718B9B2</stationID>
+ <name>WABE NPR - NPR and Classical</name>
+ <shortname>WABE-NPR</shortname>
+ <icon></icon>
+ <frequency>90.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444D5070A1BB1C0BA8D2EEF3F7A7100892DD81D4502B5128054A83B644ED011CF19</stationID>
+ <name>WREK Georgia Tech - Alternative</name>
+ <shortname>WREK</shortname>
+ <icon></icon>
+ <frequency>91.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444D0FBE2286496B0883E89285BFAECA1EDAF017417A75C0C331D255921B2B4FF66</stationID>
+ <name>WCLK Clark Atlanta University - NPR and Jazz</name>
+ <shortname>WCLK-NPR</shortname>
+ <icon></icon>
+ <frequency>91.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444B7C2CC18E97E0BC74180B041D0E0F38EDC2DEF03B7CFF5630731D2EA9939575C</stationID>
+ <name>WZGC Z93 - Classic Rock</name>
+ <shortname>Z93</shortname>
+ <icon></icon>
+ <frequency>92.934</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444F30FA008CD64A5D7050598694B282601129065236FEB119FECF35AB23E99C804</stationID>
+ <name>WVFJ J93.3 - Christian Comtemporary</name>
+ <shortname>J93.3</shortname>
+ <icon></icon>
+ <frequency>93.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444EB5BCFF00E0407F766E04E58A7D7F74DB1406DE472A841443677F3A3BFFD9E22</stationID>
+ <name>WSTR Star 94 - Top 40</name>
+ <shortname>Star94</shortname>
+ <icon></icon>
+ <frequency>94.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554445A940CDE6A955EA02249F063194318BF802C79EE89549174501E996A54AE4792</stationID>
+ <name>WLTM Lite FM - Soft Adult Contemporary</name>
+ <shortname>94.9LiteFM</shortname>
+ <icon></icon>
+ <frequency>94.938</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554449A026D1A86E99D31A83215E4B0359F8C778C7AB17EE6813D4705CE2A23DC1957</stationID>
+ <name>WKLS 96 Rock - Rock</name>
+ <shortname>96Rock</shortname>
+ <icon></icon>
+ <frequency>96.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554443FD738DFE6D3B4CB7304444FCF3CF7304CC29561F2FA89BA07E69369EF0360D4</stationID>
+ <name>WBZY 96.7 the Buzz - Alternative</name>
+ <shortname>TheBuzz</shortname>
+ <icon></icon>
+ <frequency>96.6875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554444DA754235B2E9DD48042460B326741C83B71813EDDF9079323699A52B91D0C03</stationID>
+ <name>WFOX 97.1 JAMZ - R&amp;B and Hip Hop</name>
+ <shortname>97.1JAMZ</shortname>
+ <icon></icon>
+ <frequency>97.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444DBA43BB3744CC94BB4EBD58CDD53EF8B4E302F27246A3EAA67FDAAA5E895057B</stationID>
+ <name>WPZE Praise 97.5 - Gospel</name>
+ <shortname>Praise97.5</shortname>
+ <icon></icon>
+ <frequency>97.5625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544411E223A1D7B0622D36D503C57403581B837EE7F241757B5FD48D2B64EF14602D</stationID>
+ <name>WSB B98.5 - Soft Rock</name>
+ <shortname>B98.5</shortname>
+ <icon></icon>
+ <frequency>98.5625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554440EEFEA93386786D656ABD5F8F8FA15B29B8C4A3334E481DCC6461E03C791AF4E</stationID>
+ <name>WNNX 99X - Rock</name>
+ <shortname>99X</shortname>
+ <icon></icon>
+ <frequency>99.6875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554446807D5450A5B1DDDFC442A948CD9E335253B10B86BAF325AF9F05550F2FBCF04</stationID>
+ <name>WWWQ Q100 - Top 40</name>
+ <shortname>Q100</shortname>
+ <icon></icon>
+ <frequency>100.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554442936AD4168FB356C3622E10E4ED754C061FFEFE15C4567F59A5FAC8F2994F80A</stationID>
+ <name>WKHX Kicks - Country</name>
+ <shortname>Kicks</shortname>
+ <icon></icon>
+ <frequency>101.562</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444049CA9F8E586BD0F9D1F73CBCAB86A12782126A22CDB256F847BBBDB113C6999</stationID>
+ <name>WAMJ - Classic Soul 102.5 - R&amp;B</name>
+ <shortname>ClassicSoul</shortname>
+ <icon></icon>
+ <frequency>102.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444B93D94BA4A7D0AA26FA4D746A1945CB03430905F094A4DCC31CFAA87DF7DB2DE</stationID>
+ <name>WVEE V-103 - Hip Hop</name>
+ <shortname>V-103</shortname>
+ <icon></icon>
+ <frequency>103.3</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444682F737C8639D6F737B32E3F42E6B9B38E0CB0727866BA26BCCA4A76F4CA90DB</stationID>
+ <name>WRBN Sky 104 - R&amp;B</name>
+ <shortname>Sky104</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>111645544462D47719C5D12998FD170F142F8CE4CB18981EB831A343121F4A3E3ACD0CA732</stationID>
+ <name>WFSH The Fish - Christian Comtemporary</name>
+ <shortname>Fish104.7</shortname>
+ <icon></icon>
+ <frequency>104.7</frequency>
+ <volumepreset>-0.01</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444A7A583D45F9F062A970D9C01089CC5209FE6EC81823FB65AEEA31462ED194D96</stationID>
+ <name>WMAX Viva 105.3 - Spanish</name>
+ <shortname>Viva105.3</shortname>
+ <icon></icon>
+ <frequency>105.312</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444DFE822631AE345200E49FC3F44D78C0C7B40DEFF953BB231158682EF09413D22</stationID>
+ <name>WLCL Cool 105.7 - Hits of 60&apos;s and 70&apos;s</name>
+ <shortname>Cool105.7</shortname>
+ <icon></icon>
+ <frequency>105.7</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>11164554442CE37FE0789E4C2372966DA11E4A6F05D674EACDD13825F5CBA4A9BBA66FD8E1</stationID>
+ <name>WJZZ Smooth Jazz - Modern Jazz and R&amp;B</name>
+ <shortname>SmoothJazz</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1116455444E1DFE0618A96D2FD2B98BF4A75C6551AACC8196F3A507F88716DF9470E4EC71B</stationID>
+ <name>WHTA Hot 107.9 - Hip Hop</name>
+ <shortname>Hot107.9</shortname>
+ <icon></icon>
+ <frequency>107.9</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/houston.krp b/kradio3/presets/usa/houston.krp
new file mode 100644
index 0000000..a5cb835
--- /dev/null
+++ b/kradio3/presets/usa/houston.krp
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Richard Atcheson &lt;ratcheson@earthlink.net&gt;</maintainer>
+ <changed>2003-05-12T10:27:55</changed>
+ <country>USA</country>
+ <city>Houston, TX</city>
+ <media></media>
+ <comments>Not complete but a start.</comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10633854005D3AD3977E71DD1D811E416318F7C7173935ED4A0C1B616A001576B825954A8E</stationID>
+ <name>KRTS</name>
+ <shortname>Classical</shortname>
+ <icon></icon>
+ <frequency>92.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385400432543BE8E163A889A5805C5A02D4697F29FF98A7BA3256F3857A27F9F80AB8F</stationID>
+ <name>93Q Country</name>
+ <shortname>Country</shortname>
+ <icon></icon>
+ <frequency>92.925</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385400AFD59FD364E1DC47776EFFF226E47A116B166AC513D9B860A4014C6083C62C93</stationID>
+ <name>Classic Rock</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>93.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854000593F37112C3C040F30E9CD2BC9AEBD1889C83920BF18E502E45C99174F74C6F</stationID>
+ <name>The Buzz</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>94.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854004357A3F0FA11D3A2F051FDAB5E6074C4528AA00FF51B379473E3A2FCB9809BAF</stationID>
+ <name>Smooth Jazz</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>95.6875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854008D2FC44B600604648A4EA2E5E7C625DA1C948EA9C8DF06A859E72F77B57841A7</stationID>
+ <name>KMIX</name>
+ <shortname>KMIX</shortname>
+ <icon></icon>
+ <frequency>96.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540011BA19D2311BAADC6AD95EA71679AC0CCA547FCA31EB39AEEB219CA8F748BB74</stationID>
+ <name>KODA</name>
+ <shortname>Sunny99</shortname>
+ <icon></icon>
+ <frequency>99.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385400C46D69570C39E2FBDD4033FFB6B63A29BE66E9D961AC435D11E81F6FF6EBB721</stationID>
+ <name>KILT</name>
+ <shortname></shortname>
+ <icon></icon>
+ <frequency>100.312</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385400A5953BFDE1BD9B3C49ABDD2DC3D1D7CCB122CA20F420121E5F2CD35C30D0F4B2</stationID>
+ <name>KLOL</name>
+ <shortname>KLOL</shortname>
+ <icon></icon>
+ <frequency>101.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>106338540005031FC77135FD9ECE25C7E7689600128E6E4815EF982FB43727424D8B1A1485</stationID>
+ <name>Magic 102</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>102.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1063385400FDA213C9452DA0C7B1007AF4796B21571006A3FEB6931F799DAE0B485AE24151</stationID>
+ <name>KmRB</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>104.1</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10633854009E1DD66DC7438B3DBE700511C2F3F89A324F4E1C5CFE253B7FC421D1BEC992BA</stationID>
+ <name>KLDL</name>
+ <shortname>Koldies</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/los-angeles-antenna.krp b/kradio3/presets/usa/los-angeles-antenna.krp
new file mode 100644
index 0000000..ac6c44f
--- /dev/null
+++ b/kradio3/presets/usa/los-angeles-antenna.krp
@@ -0,0 +1,351 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <creator>kradio-snapshot_2005_12_04</creator>
+ <maintainer>Marc D. Williams, marcdw@charter.net</maintainer>
+ <changed>2006-07-15T01:26:26</changed>
+ <country>USA</country>
+ <city>Los Angeles</city>
+ <media>antenna</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>1152950059902556CDD68E06652CE0EA6220179CEB6699EED0E674CCF8F8F641B8DAB7EDE5</stationID>
+ <name>L.A. Catholic @ Guadalupe Radio FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>87.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385359D97B84A3972D21AEAE5BB530B711D055EC09AC946656DD2EFCD035ACAC40FFB3</stationID>
+ <name>Smooth Jazz @ KZSC-FM</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853592A232C7B6F4B7352E287D540FC8D6ACBAEBE44B80EEB9A60A95C963959AE3928</stationID>
+ <name>Eclectic/NPR @ KPCC-FM</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385359324F936228026093B09910076F1489BD1524AD548A576473B8B43590BAB1C7DF</stationID>
+ <name>Alternative @ KCRW-FM</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1152946717588B5BF0877D15D063CF6DAD6C4C689119D37F6832035204C363CAF2721E3903</stationID>
+ <name>Air1 Positive Alternative @ 90.3-FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385359DE50F799A788BB7BA23D1EEEE7A492208183AC359B40A216D924757DE98F92DC</stationID>
+ <name>Alternative @ KPFK-FM</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338535936ED1C1BB8D659D1A08EF699022EA1A46102218ABB7DE53547B506D9FAD64852</stationID>
+ <name>Classical @ KUSC-FM</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853596A1988C4A725B954C542AE0AEAF47A709114DF2729656DBA104F77C68C293D7F</stationID>
+ <name>Hot 92 Jamz Urban AC @ KHHT-FM</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853594CC5FA142358CBD0E634E8CCBA2B3516B3550F9C27F2333FD2B5569990FB49C4</stationID>
+ <name>Jack FM AH/AC @ KCBS-FM</name>
+ <shortname>23</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853594AF93CC78DFA66F51442E9EA7D3EE55AB9CD9847E4C55135BFE1BEEACAA1E6EE</stationID>
+ <name>Urban @ KDAY-FM</name>
+ <shortname>25</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338535987DA3A89611E794BECCCDC3D4BAF07903F7638B19D935F074ABDFF96ADCCBD7D</stationID>
+ <name>Country @ KZLA-FM</name>
+ <shortname>27</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11529523912D95A415CBAEF039AAE24CEA80B62EBF8C40AE490CB895BF35B8189F20C28E78</stationID>
+ <name>Mexican @ KBUA-FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385359C2BB10623D50E73D1287A3EC008D0FCB508C814C06C3477B8B8764486480B57E</stationID>
+ <name>The Wave Smooth Jazz @ KTWV-FM</name>
+ <shortname>31</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338535908C01A91C1C64CDA7AFC8411E11897F0524D11909706B940D54852D99C2B5943</stationID>
+ <name>Country @ KFRG-FM</name>
+ <shortname>33</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338535934F2F94AC12606D1EBF4AFEF762F7C30D49940FFDFD3ABE45137815DC9BEE7A9</stationID>
+ <name>AOR @ KLOS-FM</name>
+ <shortname>35</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1152947388BEF351A64AA84E6A2EC32052FADFBD360C0934D9CD261B39BCC06218BD4A1961</stationID>
+ <name>Hispanic Rhythmic @ KXOL-FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>96.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338535932CEC86C47BD5F58EA6F9F687F546B2A11B3A341BF4FB59C955F92983222C77F</stationID>
+ <name>Talk @ KLSX-FM</name>
+ <shortname>43</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1152947685D51401C28498D60985880CA1A6BCE39487090E169E59F67A5122233FD9422720</stationID>
+ <name>Regional Mexican @ KLAX-FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1152947760CCA8D4E92C7AD709A9E6CA19A0C67A1278FD6ACA86D841ACDD337D25FA461099</stationID>
+ <name>Spanish Oldies @ KRCV-FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385359BF6615980FACD96FB8CB8A885C14BE5C3E2C9F476BCA06A01A83FE6F21277B77</stationID>
+ <name>Star 98.7 AC @ KYSR-FM</name>
+ <shortname>51</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338535986201DD46803F7028FC3E8F63841C5E8094E4ECE03A9090C76298EB4D26599B4</stationID>
+ <name>Urban AC @ KGGI-FM</name>
+ <shortname>53</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1152947858B471A82B0A50995F3D4B9B2221A23076746AAB0E8CE904491E5CEFD69F35575E</stationID>
+ <name>Christian Talk @ KXLA-FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853593BBC12DCEF158A6286B72B533EF4DB1A7424B441CE3F5E33DD2B89F2CE1BFEB0</stationID>
+ <name>The Beat Urban AC @ KKBT-FM</name>
+ <shortname>59</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385359AE87F2BAB86643E219FDDF9F6501ED5B059E4ECDC2CAF922771356BF2A9412FB</stationID>
+ <name>Oldies @ KRTH-FM</name>
+ <shortname>63</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1152947972F5B8415C864BC1093743B6AED51DC44326F4A8A6E8FEF8412BFD081C9AAC1F74</stationID>
+ <name>Regional Mexican @ KSCA-FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>11529481012D93C031D49DB7C5CC3E9FF3D4E9EEC6F7CF6868371C013CCE5D849F83821800</stationID>
+ <name>Urban AC @ KJLH-FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10633853594AF1A74B03F7FB27D503EF2AB61461DDF4B42189D453F19138ED0F6D2A134786</stationID>
+ <name>Top-40/CHR @ KIIS-FM</name>
+ <shortname>71</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>102.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1152952484648FFF3EF8A490DE56EC81F3D5A3AC264D72F2D9510D82174BCAD5E023070206</stationID>
+ <name>Alternative Indie 103.1 @ KDLD-FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385359FF561BE7884070E2E513306749FDAA021844ED9C4709F80DD044AA285DFA7046</stationID>
+ <name>Coast 103.5 AC @ KOST-FM</name>
+ <shortname>75</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1152948460C54A20D1EC3BA70142E1AA7316C217D4F66898A85A37E4A3304BE8FDB536B1CA</stationID>
+ <name>X 103.9 Alternative @ KCXX-FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106338535990258B79105FAD94B0D1602950CF335860312DB3F29B30578DBCF4E566A0A162</stationID>
+ <name>Hot AC @ KBIG-FM</name>
+ <shortname>79</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385359F381A1EA9AE734C46D0CD01922A5AEE8DC7B496D85B5586FCBDA82B95A5D52F8</stationID>
+ <name>K-Mozart Classical @ KMZT-FM</name>
+ <shortname>83</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1152949148C93624C654FAC3226EC3364C4CF62C02F3B4C58D15977B073DB13750A69E917F</stationID>
+ <name>Regional Mexican @ KBUE-FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385359DD0DA0109BC47BA4A375C6130392563EE632FE889B471D4E2B48F1234CF5B64B</stationID>
+ <name>Power 106 Urban CHR @ KPWR-FM</name>
+ <shortname>87</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1063385359035620161DDB0B8F6F8FF3025EADD76278A00EF5145279F80AC45E8E36928348</stationID>
+ <name>Modern Rock @ KROQ-FM</name>
+ <shortname>91</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1152949422D7B23A20A725A02DA0452DE62B57A38FD134B8A1AE908D8C2709120C66D06DE3</stationID>
+ <name>Spanish CHR @ KSSE-FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>115294948926BA8A2C08968140E7BCA99760073DF996A78AB85C0A5FDE72FE55F89720A438</stationID>
+ <name>Spanish Soft AC @ KLVE-FM</name>
+ <shortname></shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.5</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
diff --git a/kradio3/presets/usa/oregon-portland-antenna.2.krp b/kradio3/presets/usa/oregon-portland-antenna.2.krp
new file mode 100644
index 0000000..557b0aa
--- /dev/null
+++ b/kradio3/presets/usa/oregon-portland-antenna.2.krp
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Ross, &lt;marcus0263@runbox.com&gt;</maintainer>
+ <changed>2004-04-05T22:42:25</changed>
+ <country>USA</country>
+ <city>Portland, Oregon</city>
+ <media>FM</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+ <stationID>10912883503322384E916BA3C361863403928DE2BA48B099841201A206EA809FD68D5AEAF3</stationID>
+ <name>KNRK Modern Rock</name>
+ <shortname>1</shortname>
+ <icon></icon>
+ <frequency>94.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288350B43C49E8EFF956A2728BF399F34C03C1BE7772A42ACB57FE4FD031A74AAA9859</stationID>
+ <name>KUFO</name>
+ <shortname>2</shortname>
+ <icon></icon>
+ <frequency>101.062</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288350B423F17E2F2542BA6E21E102351EC91F2C65C39503779DEAA06EE9A951DDBFDA</stationID>
+ <name>KGON Classic Rock</name>
+ <shortname>3</shortname>
+ <icon></icon>
+ <frequency>92.3125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288350030AB7BA60EF437A09E1212B338F28E028F4589534F3DDFEB6F19490DCD3D4AC</stationID>
+ <name>River</name>
+ <shortname>4</shortname>
+ <icon></icon>
+ <frequency>105.938</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912883508591F92E68989190FC26602AB89AA3B90201389556DCD5D71BC8FE0C21801ED6</stationID>
+ <name>KKCW Soft Rock</name>
+ <shortname>5</shortname>
+ <icon></icon>
+ <frequency>103.312</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912883508C7166E6B456DB474B6B90CEAACA6018B20B11220084D91547754AB912555E95</stationID>
+ <name>KISN Oldies</name>
+ <shortname>6</shortname>
+ <icon></icon>
+ <frequency>97.0625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912883505B71B4FC79E95BC143931F881C9AF25D866ECF5AF99A6FAC4E9047AA1AD7BFFE</stationID>
+ <name>KINK</name>
+ <shortname>7</shortname>
+ <icon></icon>
+ <frequency>101.938</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288350CB8A16783B3D466D144AAA3C2DEEFA944FFB8D48C94914CBE3CA56D39E3954C1</stationID>
+ <name>KLIT Lite Rock</name>
+ <shortname>8</shortname>
+ <icon></icon>
+ <frequency>106.688</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109128835090E49533A4EAD1765EC4FF246E182DFFC05A7E6EAD27B6A7D10B8F1314DF8563</stationID>
+ <name>KBOO</name>
+ <shortname>9</shortname>
+ <icon></icon>
+ <frequency>90.6875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912883504332D6A14FCB1149302E42DF922F3DF7819EA6C49C3E92999FFFFC76A73A9B14</stationID>
+ <name>Classical</name>
+ <shortname>10</shortname>
+ <icon></icon>
+ <frequency>91.5625</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109128835002C061F0DEC71F402ACA2027604C2327613FABDED9D5818A19AF06D0937010BA</stationID>
+ <name>B95</name>
+ <shortname>11</shortname>
+ <icon></icon>
+ <frequency>95.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>109128835074779138F648EFDEBD7A257BA84F28DCBAC4C227C3ED2193C21E3DEDDAE18F4C</stationID>
+ <name>Z100</name>
+ <shortname>12</shortname>
+ <icon></icon>
+ <frequency>100.312</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912883507516A08E38096F30D3D8C665F4A87E5F05E9A18855D5D369A92586092ABDD272</stationID>
+ <name>Buzz</name>
+ <shortname>13</shortname>
+ <icon></icon>
+ <frequency>105.062</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288350931BF5D4BB240EC795F7AF29D49DE22478774197E65720D227346B088A1B0017</stationID>
+ <name>KBBT The Beat</name>
+ <shortname>14</shortname>
+ <icon></icon>
+ <frequency>107.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912883501F305986B6F8D53CB0687BC249AA199D56B574AED5C8E96612A11CE7518CE3C9</stationID>
+ <name>KUPL Country</name>
+ <shortname>15</shortname>
+ <icon></icon>
+ <frequency>98.75</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912883506165A65999BD616548E035C95FD23206E958CD90D3111E5F64741B29B4343EBB</stationID>
+ <name>KWJJ Country</name>
+ <shortname>16</shortname>
+ <icon></icon>
+ <frequency>99.5</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288350D9DCC282F38923B9C5C4F66D701DE74CA5FF9769A8CFBE48CACEEC73AE43BD59</stationID>
+ <name>new station 2</name>
+ <shortname>17</shortname>
+ <icon></icon>
+ <frequency>87.8125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>1091288350F3A96DFDD29F0B73F65F9FF558CFB9A08B3A34C9513C5FFA315915DC38B2837C</stationID>
+ <name>new station 4</name>
+ <shortname>18</shortname>
+ <icon></icon>
+ <frequency>89.125</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+ <stationID>10912883501048B09DC2FA8541C2F77AA1FD13062E1D345BB012191B50ABAB691CDB35B88D</stationID>
+ <name>new station 5</name>
+ <shortname>19</shortname>
+ <icon></icon>
+ <frequency>89.875</frequency>
+ <volumepreset>-1</volumepreset>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
diff --git a/kradio3/presets/usa/oregon-portland-antenna.krp b/kradio3/presets/usa/oregon-portland-antenna.krp
new file mode 100644
index 0000000..5d841ef
--- /dev/null
+++ b/kradio3/presets/usa/oregon-portland-antenna.krp
@@ -0,0 +1,214 @@
+<kradiorc>
+ <stationlist>
+ <format>kradio-1.0</format>
+ <info>
+ <maintainer>Paul Turley &lt;pturley@aracnet.com&gt;</maintainer>
+ <changed>2003-09-27T15:10:57</changed>
+ <country>USA</country>
+ <city>Portland, Oregon</city>
+ <media>Antenna</media>
+ <comments></comments>
+ </info>
+ <FrequencyRadioStation>
+
+<stationID>106445007009FDADCC19856E4A47143D94FD485593DD74E80B4975623570B9096510C0C85D</stationID>
+ <name>KBVM Portland, Catholic Broadcasting</name>
+ <shortname>KBVM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106445014953DC29E5313245A5F0A9833B89DE545BB667FCE656C2DEA15BD3FE99BCE3D8A6</stationID>
+ <name>KLVP Cherryville, Great Christian Music</name>
+ <shortname>KLVP</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>88.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106444845328301F4A6AFD707A7F1B28AA1E3F2CE26CE657ACAC721DDB9A7B96FF818F4E52</stationID>
+ <name>KMHD Gresham, The Jazz Station</name>
+ <shortname>KMHD</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1064448570C31ACB0868984DFB7DFA7C4F114F22EEA9AC3DE4C1629941C23A63EBEA2372F4</stationID>
+ <name>KBPS Portland, Classical &amp; Education</name>
+ <shortname>KBPS</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>89.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1064448653562743C2D08EEE69C0CA582ACCCB758C185B63B5C343BA166A6E3DD96C40F04D</stationID>
+ <name>KBOO Portland, Community Radio</name>
+ <shortname>KBOO</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>90.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106444876867A41293EAC675B54BB4C55C9EB8451F41E8EAB531C8872EB6A7886CBC032CF2</stationID>
+ <name>KOPB Portland, Oregon Public Broadcasting</name>
+ <shortname>KOPB</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>91.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106444889032579E9FE88D392574929223185A7CE012E8DAFE951CB2E87B7FCD94B5E884A0</stationID>
+ <name>KGON Portland, Real Classic Rock</name>
+ <shortname>KGON</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>92.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10644489780038AF4AEF7852EECF30D5E52932C7E7E9B23CB763032CDF16AFD105FAF9670F</stationID>
+ <name>KPDQ Portland, Today&apos;s Christian Radio</name>
+ <shortname>KPDQ</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>93.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1064449054D19F2ADBAD143976D04B3AC9ACE7341601F190B8F10CBE55C79BDD739E0235B8</stationID>
+ <name>KNRK Camas, New Rock</name>
+ <shortname>KNRK</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>94.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1064449119E9724FFF5B8B567AE88FEAFE4232B131AB95F2AABF2521A22F4FF7DF02C8BFFB</stationID>
+ <name>KSJM Portland, Jammin&apos; 95.5</name>
+ <shortname>KXJM</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>95.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10644492250C3839B50E82294C77EC5743EA4820AF993B7191C26F81A9FC38CCEF1168C2D2</stationID>
+ <name>KKSN Portland, The Fun Oldies Station</name>
+ <shortname>KKSN</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>97.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106444929507F67B3D4A0FD5BFCB2EE0733BD465ED8515D9F79FCA0AD0172FF21E6FCE783A</stationID>
+ <name>KUPL Portland, Country</name>
+ <shortname>KUPL</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>98.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10644493604AD9DB9E2095CA9CFC7CA1FBA0C76F964014F4A1733D3E6F6A2399EC626C65EC</stationID>
+ <name>KWJJ Portland, Country</name>
+ <shortname>KWJJ</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>99.5</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106444943805728F4D532AAEB39294F03B96EF3346AA3EE53B832B30C1457060D3B8549D95</stationID>
+ <name>KKRZ Portland, Z100</name>
+ <shortname>KKRZ</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>100.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1064449533A895981D1026BC81DE0B3C72959B7A15EC29C632D366AE3B5D2DFF407AF1D5C2</stationID>
+ <name>KUFO Portland, Continuous Rock</name>
+ <shortname>KUFO</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1064449598230B9FEEAE9BFEC68B585FD2AFD0B3492DFA59DB3FFB6074A3EAAC222FF9AEB1</stationID>
+ <name>KINK Portland, True to the Music</name>
+ <shortname>KINK</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>101.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>106444968090820EA9CB292FB5920869E7EA6B920E6CDB5833651BBC731F7C2DB8909D7190</stationID>
+ <name>KKCW Beaverton, Soft Rock Favorites</name>
+ <shortname>KKCW</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>103.3</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10644497281D8A1242996C8757569E63A5F470595816D2CD672571E2BCD1777F410DD5D90A</stationID>
+ <name>KFIS Scappoose, The Fish</name>
+ <shortname>KFIS</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>104.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1064449785A015907433C8E061CC8F0928D1D514D2933174469556FDAF083BACADB06C8F01</stationID>
+ <name>KRSK Portland, The Buzz</name>
+ <shortname>KRSK</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.1</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1064449860AEDD56C3B03A36DFACC9EA16C4B6673D11D25FDA8F4184F044E86AE5C360B927</stationID>
+ <name>KRVO Vancouver, The River</name>
+ <shortname>KRVO</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>105.9</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>10644499168F3FBF80F60EE53135E356FCFD5B2F3E30A61261E73C3B6216AEB9F60450D4EA</stationID>
+ <name>KLTH Lake Oswego, K-Lite</name>
+ <shortname>KLTH</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>106.7</frequency>
+ </FrequencyRadioStation>
+ <FrequencyRadioStation>
+
+<stationID>1064449979094B9ABB5D962A50546E05B555852631AF2BD8527EF777BB95881BB0AF7241AE</stationID>
+ <name>KVMX Banks, The All New Mix 107.5</name>
+ <shortname>KVMX</shortname>
+ <icon></icon>
+ <volumepreset>-1</volumepreset>
+ <frequency>107.5</frequency>
+ </FrequencyRadioStation>
+ </stationlist>
+</kradiorc>
+
+
+
diff --git a/kradio3/src/Makefile.am b/kradio3/src/Makefile.am
new file mode 100644
index 0000000..7b74324
--- /dev/null
+++ b/kradio3/src/Makefile.am
@@ -0,0 +1,104 @@
+SUBDIRS = po .
+
+INCLUDES = -I$(top_srcdir)/kradio3/src/include \
+ -I$(top_builddir)/kradio3/src/include \
+ $(all_includes)
+
+METASOURCES = AUTO
+
+META_INCLUDES = $(srcdir)/include
+
+KDE_CXXFLAGS="-UQT_NO_ASCII_CAST"
+
+bin_PROGRAMS = kradio
+
+kradio_SOURCES = \
+ main.cpp \
+ errorlog-interfaces.cpp \
+ radiodevice_interfaces.cpp \
+ radiodevicepool_interfaces.cpp \
+ radio_interfaces.cpp \
+ soundstreamclient_interfaces.cpp \
+ stationselection_interfaces.cpp \
+ timecontrol_interfaces.cpp \
+ alarm.cpp \
+ debug-profiler.cpp \
+ fileringbuffer.cpp \
+ frequencyseekhelper.cpp \
+ kradioapp.cpp \
+ multibuffer.cpp \
+ plugin_configuration_dialog.cpp \
+ pluginmanager-configuration.cpp \
+ pluginmanager-configuration-ui.ui \
+ pluginmanager.cpp \
+ plugins.cpp \
+ ringbuffer.cpp \
+ seekhelper.cpp \
+ soundformat.cpp \
+ soundstreamid.cpp \
+ stationlist.cpp \
+ stationlistxmlhandler.cpp \
+ utils.cpp \
+ widgetplugins.cpp \
+ frequencyradiostation.cpp \
+ internetradiostation.cpp \
+ radiostation-config.cpp \
+ radiostation.cpp \
+ aboutwidget.cpp \
+ radiostation-listview.cpp \
+ standardscandialog.cpp \
+ standardscandialog-ui.ui \
+ station-drag-object.cpp \
+ stationselector.cpp \
+ stationselector-ui.ui
+
+noinst_HEADERS = \
+ include/aboutwidget.h \
+ include/alarm.h \
+ include/debug-profiler.h \
+ include/errorlog-interfaces.h \
+ include/fileringbuffer.h \
+ include/frequencyradiostation.h \
+ include/frequencyseekhelper.h \
+ include/gui_list_helper.h \
+ include/interfaces.h \
+ include/internetradiostation.h \
+ include/kradioapp.h \
+ include/kradioversion.h \
+ include/multibuffer.h \
+ include/plugin_configuration_dialog.h \
+ include/pluginmanager-configuration.h \
+ include/pluginmanager.h \
+ include/plugins.h \
+ include/radiodevice_interfaces.h \
+ include/radiodevicepool_interfaces.h \
+ include/radio_interfaces.h \
+ include/radiostation-config.h \
+ include/radiostation.h \
+ include/radiostation-listview.h \
+ include/ringbuffer.h \
+ include/seekhelper.h \
+ include/soundformat.h \
+ include/sound_metadata.h \
+ include/soundstreamclient_interfaces.h \
+ include/soundstreamid.h \
+ include/standardscandialog.h \
+ include/station-drag-object.h \
+ include/stationlist.h \
+ include/stationlistmetadata.h \
+ include/stationlistxmlhandler.h \
+ include/stationselection_interfaces.h \
+ include/stationselector.h \
+ include/timecontrol_interfaces.h \
+ include/utils.h \
+ include/widgetplugins.h
+
+kradio_LDADD = $(LIB_KFILE) $(LIB_KDEUI) $(LIB_KDECORE) $(LIB_KIO)
+
+kradio_LDFLAGS = $(all_libraries) $(KDE_RPATH) $(LIRC) -Wl,--export-dynamic
+
+xdg_apps_DATA = kradio.desktop
+
+messages: rc.cpp
+ $(EXTRACTRC) *.ui >> rc.cpp
+ $(XGETTEXT) rc.cpp *.cpp include/*.h -o po/kradio.pot
diff --git a/kradio3/src/aboutwidget.cpp b/kradio3/src/aboutwidget.cpp
new file mode 100644
index 0000000..5039c2d
--- /dev/null
+++ b/kradio3/src/aboutwidget.cpp
@@ -0,0 +1,611 @@
+/***************************************************************************
+ aboutwidget.cpp - description
+ -------------------
+ begin : Sa Sep 13 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+/* Unfortunately KDE doesn't provide the class KAboutContainerBase
+ to public programming, so we have to copy most of that code into
+ an own class :(
+*/
+
+#include "include/kradioversion.h"
+#include "include/aboutwidget.h"
+#include <qframe.h>
+#include <kaboutdialog.h>
+#include <qtabwidget.h>
+#include <qlayout.h>
+#include <qtabbar.h>
+#include <qimage.h>
+
+#include <kglobalsettings.h>
+#include <ktextbrowser.h>
+#include <qtextedit.h>
+#include <kdebug.h>
+#include <kapplication.h>
+#include <klocale.h>
+#include <kaboutdata.h>
+#include <kurllabel.h>
+
+// copied (and renamed) from kaboutdialog.cpp
+// original: KAboutTabWidget
+
+class KRadioAboutTabWidget : public QTabWidget
+{
+public:
+ KRadioAboutTabWidget( QWidget* parent ) : QTabWidget( parent ) {}
+ QSize sizeHint() const {
+ return QTabWidget::sizeHint().expandedTo( tabBar()->sizeHint() + QSize(4,4) );
+ }
+};
+
+
+// copied (renamed and extended) from kaboutdialog.cpp
+// original: KAboutContainerBase
+
+KRadioAboutWidget::KRadioAboutWidget(const KAboutData &aboutData, int layoutType, QWidget *_parent,
+ char *_name )
+ : QWidget( _parent, _name ),
+ mImageLabel(0), mTitleLabel(0), mIconLabel(0),mVersionLabel(0),
+ mAuthorLabel(0), mImageFrame(0),mPageTab(0),mPlainSpace(0)
+{
+ mTopLayout = new QVBoxLayout( this, 0, KDialog::spacingHint() );
+ if( mTopLayout == 0 ) { return; }
+
+ if( layoutType & AbtImageOnly )
+ {
+ layoutType &= ~(AbtImageLeft|AbtImageRight|AbtTabbed|AbtPlain);
+ }
+ if( layoutType & AbtImageLeft )
+ {
+ layoutType &= ~AbtImageRight;
+ }
+
+ if( layoutType & AbtTitle )
+ {
+ mTitleLabel = new QLabel( this, "title" );
+ mTitleLabel->setAlignment(AlignCenter);
+ mTopLayout->addWidget( mTitleLabel );
+ mTopLayout->addSpacing( KDialog::spacingHint() );
+ }
+
+ if( layoutType & AbtProduct )
+ {
+ QWidget *productArea = new QWidget( this, "area" );
+ mTopLayout->addWidget( productArea, 0, AlignLeft );
+
+ QHBoxLayout *hbox = new QHBoxLayout(productArea,0,KDialog::spacingHint());
+ if( hbox == 0 ) { return; }
+
+ mIconLabel = new QLabel( productArea );
+ hbox->addWidget( mIconLabel, 0, AlignLeft|AlignHCenter );
+
+ QVBoxLayout *vbox = new QVBoxLayout();
+ if( vbox == 0 ) { return; }
+ hbox->addLayout( vbox );
+
+ mVersionLabel = new QLabel( productArea, "version" );
+ mAuthorLabel = new QLabel( productArea, "author" );
+ vbox->addWidget( mVersionLabel );
+ vbox->addWidget( mAuthorLabel );
+ hbox->activate();
+
+ mTopLayout->addSpacing( KDialog::spacingHint() );
+ }
+
+ QHBoxLayout *hbox = new QHBoxLayout();
+ if( hbox == 0 ) { return; }
+ mTopLayout->addLayout( hbox, 10 );
+
+ if( layoutType & AbtImageLeft )
+ {
+ QVBoxLayout *vbox = new QVBoxLayout();
+ hbox->addLayout(vbox);
+ vbox->addSpacing(1);
+ mImageFrame = new QFrame( this );
+ setImageFrame( true );
+ vbox->addWidget( mImageFrame );
+ vbox->addSpacing(1);
+
+ vbox = new QVBoxLayout( mImageFrame, 1 );
+ mImageLabel = new KRadioImageTrackLabel( mImageFrame );
+ connect( mImageLabel, SIGNAL(mouseTrack( int, const QMouseEvent * )),
+ SLOT( slotMouseTrack( int, const QMouseEvent * )) );
+ vbox->addStretch(10);
+ vbox->addWidget( mImageLabel );
+ vbox->addStretch(10);
+ vbox->activate();
+ }
+
+ if( layoutType & AbtTabbed )
+ {
+ mPageTab = new KRadioAboutTabWidget( this );
+ if( mPageTab == 0 ) { return; }
+ hbox->addWidget( mPageTab, 10 );
+ }
+ else if( layoutType & AbtImageOnly )
+ {
+ mImageFrame = new QFrame( this );
+ setImageFrame( true );
+ hbox->addWidget( mImageFrame, 10 );
+
+ QGridLayout *gbox = new QGridLayout(mImageFrame, 3, 3, 1, 0 );
+ gbox->setRowStretch( 0, 10 );
+ gbox->setRowStretch( 2, 10 );
+ gbox->setColStretch( 0, 10 );
+ gbox->setColStretch( 2, 10 );
+
+ mImageLabel = new KRadioImageTrackLabel( mImageFrame );
+ connect( mImageLabel, SIGNAL(mouseTrack( int, const QMouseEvent * )),
+ SLOT( slotMouseTrack( int, const QMouseEvent * )) );
+ gbox->addWidget( mImageLabel, 1, 1 );
+ gbox->activate();
+ }
+ else
+ {
+ mPlainSpace = new QFrame( this );
+ if( mPlainSpace == 0 ) { return; }
+ hbox->addWidget( mPlainSpace, 10 );
+ }
+
+ if( layoutType & AbtImageRight )
+ {
+ QVBoxLayout *vbox = new QVBoxLayout();
+ hbox->addLayout(vbox);
+ vbox->addSpacing(1);
+ mImageFrame = new QFrame( this );
+ setImageFrame( true );
+ vbox->addWidget( mImageFrame );
+ vbox->addSpacing(1);
+
+ vbox = new QVBoxLayout( mImageFrame, 1 );
+ mImageLabel = new KRadioImageTrackLabel( mImageFrame );
+ connect( mImageLabel, SIGNAL(mouseTrack( int, const QMouseEvent * )),
+ SLOT( slotMouseTrack( int, const QMouseEvent * )) );
+ vbox->addStretch(10);
+ vbox->addWidget( mImageLabel );
+ vbox->addStretch(10);
+ vbox->activate();
+ }
+
+ fontChange( font() );
+
+ setAboutData(aboutData);
+}
+
+
+void KRadioAboutWidget::show( void )
+{
+ QWidget::show();
+}
+
+QSize KRadioAboutWidget::sizeHint( void ) const
+{
+ return minimumSize().expandedTo( QSize( QWidget::sizeHint().width(), 0 ) );
+}
+
+void KRadioAboutWidget::fontChange( const QFont &/*oldFont*/ )
+{
+ if( mTitleLabel != 0 )
+ {
+ QFont f( KGlobalSettings::generalFont() );
+ f.setBold( true );
+ f.setPointSize( 14 ); // Perhaps changeable ?
+ mTitleLabel->setFont(f);
+ }
+
+ if( mVersionLabel != 0 )
+ {
+ QFont f( KGlobalSettings::generalFont() );
+ f.setBold( true );
+ mVersionLabel->setFont(f);
+ mAuthorLabel->setFont(f);
+ mVersionLabel->parentWidget()->layout()->activate();
+ }
+
+ update();
+}
+
+QFrame *KRadioAboutWidget::addTextPage( const QString &title,
+ const QString &text,
+ bool richText, int numLines )
+{
+ QFrame *page = addEmptyPage( title );
+ if( page == 0 ) { return 0; }
+ if( numLines <= 0 ) { numLines = 10; }
+
+ QVBoxLayout *vbox = new QVBoxLayout( page, KDialog::spacingHint() );
+
+ if( richText == true )
+ {
+ KTextBrowser *browser = new KTextBrowser( page, "browser" );
+ browser->setHScrollBarMode( QScrollView::AlwaysOff );
+ browser->setText( text );
+ browser->setMinimumHeight( fontMetrics().lineSpacing()*numLines );
+
+ vbox->addWidget(browser);
+ connect(browser, SIGNAL(urlClick(const QString &)),
+ SLOT(slotUrlClick(const QString &)));
+ connect(browser, SIGNAL(mailClick(const QString &,const QString &)),
+ SLOT(slotMailClick(const QString &,const QString &)));
+ }
+ else
+ {
+ QTextEdit *textEdit = new QTextEdit( page, "text" );
+ textEdit->setReadOnly( true );
+ textEdit->setMinimumHeight( fontMetrics().lineSpacing()*numLines );
+ textEdit->setWordWrap( QTextEdit::NoWrap );
+ vbox->addWidget( textEdit );
+ }
+
+ return page;
+}
+
+QFrame *KRadioAboutWidget::addLicensePage( const QString &title,
+ const QString &text, int numLines)
+{
+ QFrame *page = addEmptyPage( title );
+ if( page == 0 ) { return 0; }
+ if( numLines <= 0 ) { numLines = 10; }
+
+ QVBoxLayout *vbox = new QVBoxLayout( page, KDialog::spacingHint() );
+
+ QTextEdit *textEdit = new QTextEdit( page, "license" );
+ textEdit->setFont( KGlobalSettings::fixedFont() );
+ textEdit->setReadOnly( true );
+ textEdit->setWordWrap( QTextEdit::NoWrap );
+ textEdit->setText( text );
+ textEdit->setMinimumHeight( fontMetrics().lineSpacing()*numLines );
+ vbox->addWidget( textEdit );
+
+ return page;
+}
+
+
+KAboutContainer *KRadioAboutWidget::addContainerPage( const QString &title,
+ int childAlignment,
+ int innerAlignment )
+{
+ if( mPageTab == 0 )
+ {
+ kdDebug(291) << "addPage: " << i18n("Invalid layout") << endl;
+ return 0;
+ }
+
+ KAboutContainer *container = new KAboutContainer( mPageTab, "container",
+ KDialog::spacingHint(), KDialog::spacingHint(), childAlignment,
+ innerAlignment );
+ mPageTab->addTab( container, title );
+
+ if( mContainerList.resize( mContainerList.size() + 1) == true )
+ {
+ mContainerList[ mContainerList.size()-1 ]=container;
+ }
+
+ connect(container, SIGNAL(urlClick(const QString &)),
+ SLOT(slotUrlClick(const QString &)));
+ connect(container, SIGNAL(mailClick(const QString &,const QString &)),
+ SLOT(slotMailClick(const QString &,const QString &)));
+
+ return container;
+}
+
+
+KAboutContainer *KRadioAboutWidget::addScrolledContainerPage(
+ const QString &title,
+ int childAlignment,
+ int innerAlignment )
+{
+ if( mPageTab == 0 )
+ {
+ kdDebug(291) << "addPage: " << "Invalid layout" << endl;
+ return 0;
+ }
+
+ QFrame *page = addEmptyPage( title );
+ QVBoxLayout *vbox = new QVBoxLayout( page, KDialog::spacingHint() );
+ QScrollView *scrollView = new QScrollView( page );
+ scrollView->viewport()->setBackgroundMode( PaletteBackground );
+ vbox->addWidget( scrollView );
+
+ KAboutContainer *container = new KAboutContainer( scrollView, "container",
+ KDialog::spacingHint(), KDialog::spacingHint(), childAlignment,
+ innerAlignment );
+ scrollView->addChild( container );
+
+
+ connect(container, SIGNAL(urlClick(const QString &)),
+ SLOT(slotUrlClick(const QString &)));
+ connect(container, SIGNAL(mailClick(const QString &,const QString &)),
+ SLOT(slotMailClick(const QString &,const QString &)));
+
+ return container;
+}
+
+
+QFrame *KRadioAboutWidget::addEmptyPage( const QString &title )
+{
+ if( mPageTab == 0 )
+ {
+ kdDebug(291) << "addPage: " << "Invalid layout" << endl;
+ return 0;
+ }
+
+ QFrame *page = new QFrame( mPageTab, title.latin1() );
+ page->setFrameStyle( QFrame::NoFrame );
+
+ mPageTab->addTab( page, title );
+ return page;
+}
+
+
+KAboutContainer *KRadioAboutWidget::addContainer( int childAlignment,
+ int innerAlignment )
+{
+ KAboutContainer *container = new KAboutContainer( this, "container",
+ 0, KDialog::spacingHint(), childAlignment, innerAlignment );
+ mTopLayout->addWidget( container, 0, childAlignment );
+
+ if( mContainerList.resize( mContainerList.size() + 1) == true )
+ {
+ mContainerList[ mContainerList.size()-1 ]=container;
+ }
+
+ connect(container, SIGNAL(urlClick(const QString &)),
+ SLOT(slotUrlClick(const QString &)));
+ connect(container, SIGNAL(mailClick(const QString &,const QString &)),
+ SLOT(slotMailClick(const QString &,const QString &)));
+
+ return container;
+}
+
+
+
+void KRadioAboutWidget::setTitle( const QString &title )
+{
+ if( mTitleLabel == 0 )
+ {
+ kdDebug(291) << "setTitle: " << "Invalid layout" << endl;
+ return;
+ }
+ mTitleLabel->setText(title);
+}
+
+
+void KRadioAboutWidget::setImage( const QString &fileName )
+{
+ if( mImageLabel == 0 )
+ {
+ kdDebug(291) << "setImage: " << "Invalid layout" << endl;
+ return;
+ }
+ if( fileName.isNull() )
+ {
+ return;
+ }
+
+ QImage logo( fileName );
+ if( logo.isNull() == false )
+ {
+ QPixmap pix;
+ pix = logo;
+ mImageLabel->setPixmap( pix );
+ }
+ mImageFrame->layout()->activate();
+
+}
+
+
+void KRadioAboutWidget::setImageBackgroundColor( const QColor &color )
+{
+ if( mImageFrame != 0 )
+ {
+ mImageFrame->setBackgroundColor( color );
+ }
+}
+
+
+void KRadioAboutWidget::setImageFrame( bool state )
+{
+ if( mImageFrame != 0 )
+ {
+ if( state == true )
+ {
+ mImageFrame->setFrameStyle( QFrame::Panel | QFrame::Sunken );
+ mImageFrame->setLineWidth(1);
+ }
+ else
+ {
+ mImageFrame->setFrameStyle( QFrame::NoFrame );
+ mImageFrame->setLineWidth(0);
+ }
+ }
+}
+
+
+void KRadioAboutWidget::setProduct( const QString &appName,
+ const QString &/*version*/,
+ const QString &author,
+ const QString &year )
+{
+ if( mIconLabel == 0 )
+ {
+ kdDebug(291) << "setProduct: " << "Invalid layout" << endl;
+ return;
+ }
+
+ if ( kapp )
+ mIconLabel->setPixmap( kapp->icon() );
+
+ QString msg1 = i18n("%1 %2 (Using KDE %3)").arg(appName).
+ arg(QString::fromLatin1(KRADIO_VERSION)).
+ arg(QString::fromLatin1(KDE_VERSION_STRING));
+ QString msg2 = !year.isEmpty() ? i18n("%1 %2, %3").arg('').arg(year).
+ arg(author) : QString::fromLatin1("");
+
+ mVersionLabel->setText( msg1 );
+ mAuthorLabel->setText( msg2 );
+ if( msg2.isEmpty() )
+ {
+ mAuthorLabel->hide();
+ }
+
+ mIconLabel->parentWidget()->layout()->activate();
+}
+
+
+void KRadioAboutWidget::slotMouseTrack( int mode, const QMouseEvent *e )
+{
+ emit mouseTrack( mode, e );
+}
+
+
+void KRadioAboutWidget::slotUrlClick( const QString &url )
+{
+ if ( kapp )
+ kapp->invokeBrowser( url );
+}
+
+
+void KRadioAboutWidget::slotMailClick( const QString &/*_name*/,
+ const QString &_address )
+{
+ if ( kapp )
+ kapp->invokeMailer( _address, QString::null );
+}
+
+
+// copied (and renamed) from kaboutapplication.cpp
+// original: KAboutApplication::buildDialog
+
+void KRadioAboutWidget::setAboutData(const KAboutData &_aboutData)
+{
+ const KAboutData *aboutData = &_aboutData;
+ if (aboutData->programName().length()) {
+ setProduct( aboutData->programName(), aboutData->version(),
+ QString::null, QString::null );
+ }
+
+ QString appPageText = aboutData->shortDescription() + "\n";
+
+ if (!aboutData->otherText().isEmpty())
+ appPageText += "\n" + aboutData->otherText()+"\n";
+
+ if (!aboutData->copyrightStatement().isEmpty())
+ appPageText += "\n" + aboutData->copyrightStatement()+"\n";
+
+ KAboutContainer *appPage = addContainerPage( i18n("&About"));
+
+ QLabel *appPageLabel = new QLabel( appPageText, 0 );
+ appPage->addWidget( appPageLabel );
+
+ if (!aboutData->homepage().isEmpty()) {
+ KURLLabel *url = new KURLLabel();
+ url->setText(aboutData->homepage());
+ url->setURL(aboutData->homepage());
+ appPage->addWidget( url );
+ // FIXME
+ connect( url, SIGNAL(leftClickedURL(const QString &)),
+ this, SLOT(slotUrlClick(const QString &)));
+ }
+
+ int authorCount = aboutData->authors().count();
+
+ if (authorCount) {
+ QString authorPageTitle = authorCount == 1 ?
+ i18n("A&uthor") : i18n("A&uthors");
+ KAboutContainer *authorPage = addScrolledContainerPage( authorPageTitle );
+ QValueList<KAboutPerson>::ConstIterator it = aboutData->authors().begin();
+ QValueList<KAboutPerson>::ConstIterator end = aboutData->authors().end();
+ for (; it != end; ++it) {
+ authorPage->addPerson( (*it).name(), (*it).emailAddress(),
+ (*it).webAddress(), (*it).task() );
+ }
+ }
+
+ int creditsCount = aboutData->credits().count();
+
+ if (creditsCount) {
+ KAboutContainer *creditsPage =
+ addScrolledContainerPage( i18n("&Thanks To") );
+ QValueList<KAboutPerson>::ConstIterator it = aboutData->credits().begin();
+ QValueList<KAboutPerson>::ConstIterator end = aboutData->credits().end();
+ for (; it != end; ++it) {
+ creditsPage->addPerson( (*it).name(), (*it).emailAddress(),
+ (*it).webAddress(), (*it).task() );
+ }
+ }
+
+ const QValueList<KAboutTranslator> translatorList = aboutData->translators();
+
+ if(translatorList.count() > 0) {
+ KAboutContainer *translatorPage =
+ addScrolledContainerPage( i18n("T&ranslation") );
+
+ QValueList<KAboutTranslator>::ConstIterator it = translatorList.begin();
+ QValueList<KAboutTranslator>::ConstIterator end = translatorList.end();
+ for(; it != end; ++it) {
+ translatorPage->addPerson((*it).name(), (*it).emailAddress(),
+ 0,0);
+ }
+
+ QLabel *label = new QLabel(KAboutData::aboutTranslationTeam(),
+ translatorPage);
+ label->adjustSize();
+ label->setMinimumSize(label->sizeHint());
+ translatorPage->addWidget(label);
+ }
+
+ if (!aboutData->license().isEmpty() ) {
+ addLicensePage( i18n("&License Agreement"), aboutData->license() );
+ }
+}
+
+
+//
+// A class that can can monitor mouse movements on the image
+//
+// copied (and renamed) from kaboutdialog.cpp
+// original: KImageTrackLabel
+
+KRadioImageTrackLabel::KRadioImageTrackLabel( QWidget *_parent, const char *_name, WFlags f )
+ : QLabel( _parent, _name, f )
+{
+ setText( i18n("Image missing"));
+}
+
+void KRadioImageTrackLabel::mousePressEvent( QMouseEvent *e )
+{
+ emit mouseTrack( MousePress, e );
+}
+
+void KRadioImageTrackLabel::mouseReleaseEvent( QMouseEvent *e )
+{
+ emit mouseTrack( MouseRelease, e );
+}
+
+void KRadioImageTrackLabel::mouseDoubleClickEvent( QMouseEvent *e )
+{
+ emit mouseTrack( MouseDoubleClick, e );
+}
+
+void KRadioImageTrackLabel::mouseMoveEvent ( QMouseEvent *e )
+{
+ emit mouseTrack( MouseDoubleClick, e );
+}
+
+
+
+
+#include "aboutwidget.moc"
diff --git a/kradio3/src/alarm.cpp b/kradio3/src/alarm.cpp
new file mode 100644
index 0000000..3c6784e
--- /dev/null
+++ b/kradio3/src/alarm.cpp
@@ -0,0 +1,82 @@
+/***************************************************************************
+ alarm.cpp - description
+ -------------------
+ begin : Mon Feb 4 2002
+ copyright : (C) 2002 by Martin Witte / Frank Schwanz
+ email : witte@kawo1.rwth-aachen.de / schwanz@fh-brandenburg.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+#include "include/alarm.h"
+
+int Alarm::m_LastID = 0;
+
+Alarm::Alarm(const QDateTime &time, bool daily, bool enabled)
+ : m_time (time),
+ m_daily (daily),
+ m_weekdayMask (0x7F),
+ m_enabled (enabled),
+ m_stationID (QString::null),
+ m_volumePreset (-1),
+ m_type (StartPlaying),
+ m_ID (++m_LastID)
+{
+}
+
+
+Alarm::Alarm ()
+ : m_time (QDateTime (QDate(1800, 1,1), QTime(0,0,0))),
+ m_daily (false),
+ m_weekdayMask (0x7F),
+ m_enabled (false),
+ m_stationID (QString::null),
+ m_volumePreset(-1),
+ m_type (StartPlaying),
+ m_ID (++m_LastID)
+{
+}
+
+
+Alarm::Alarm (const Alarm &a)
+ : m_time (a.m_time),
+ m_daily (a.m_daily),
+ m_weekdayMask (a.m_weekdayMask),
+ m_enabled (a.m_enabled),
+ m_stationID (a.m_stationID),
+ m_volumePreset(a.m_volumePreset),
+ m_type (a.m_type),
+ m_ID (a.m_ID)
+{
+}
+
+
+Alarm::~Alarm()
+{
+}
+
+
+QDateTime Alarm::nextAlarm(bool ignoreEnable) const
+{
+ QDateTime now = QDateTime::currentDateTime(),
+ alarm = m_time;
+ if (m_daily) {
+ alarm.setDate (now.date());
+ if (alarm <= now)
+ alarm = alarm.addDays(1);
+ while (m_weekdayMask &&
+ !(m_weekdayMask & (1 << (alarm.date().dayOfWeek()-1))))
+ {
+ alarm = alarm.addDays(1);
+ }
+ }
+ return (m_enabled || ignoreEnable) && (!m_daily || m_weekdayMask) ? alarm : QDateTime();
+}
+
+
diff --git a/kradio3/src/debug-profiler.cpp b/kradio3/src/debug-profiler.cpp
new file mode 100644
index 0000000..8c5a9ab
--- /dev/null
+++ b/kradio3/src/debug-profiler.cpp
@@ -0,0 +1,138 @@
+/***************************************************************************
+ debug-profiler.h - description
+ -------------------
+ begin : Sat May 28 2005
+ copyright : (C) 2005 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "include/debug-profiler.h"
+
+#include <qstringlist.h>
+
+#include <sys/resource.h>
+
+TimeProfiler global_time_profiler;
+MemProfiler global_mem_profiler;
+
+Profiler::Profiler()
+{
+}
+
+
+Profiler::~Profiler()
+{
+ m_tmpStartVal = 0;
+}
+
+void Profiler::stopInternalCounter()
+{
+ long long counter = getCounter();
+ long long diff = counter - m_tmpStartVal;
+ m_internalCounter += diff;
+}
+
+void Profiler::startInternalCounter() {
+ m_tmpStartVal = getCounter();
+}
+
+void Profiler::startProfile(const QString &descr)
+{
+ stopInternalCounter();
+
+ if (m_ProfileData.contains(descr)) {
+ profile_data &d = m_ProfileData[descr];
+ d.startCounter = m_internalCounter;
+ } else {
+ m_ProfileData.insert(descr, profile_data(m_internalCounter));
+ }
+
+ startInternalCounter();
+}
+
+
+void Profiler::stopProfile (const QString &descr)
+{
+ stopInternalCounter();
+
+ if (!descr.isNull() && m_ProfileData.contains(descr)) {
+ profile_data &d = m_ProfileData[descr];
+ long long diff = m_internalCounter - d.startCounter;
+ d.accumulatedCounter += diff;
+ if (d.maxCounter < diff)
+ d.maxCounter = diff;
+ if (d.minCounter > diff)
+ d.minCounter = diff;
+ d.callCounter++;
+ }
+
+ startInternalCounter();
+}
+
+
+void Profiler::printData ()
+{
+ stopInternalCounter();
+
+ QStringList keys=m_ProfileData.keys();
+ keys.sort();
+ QValueListIterator<QString> it = keys.begin();
+ QValueListIterator<QString> end = keys.end();
+ for (; it != end; ++it) {
+ int l = (*it).length();
+ l = (((l-1) / 25) + 1) * 25;
+ if (l < 50) l = 50;
+ const profile_data &d = m_ProfileData[*it];
+ printf(("%-"+QString::number(l)+"s: total: %3.8f (%9lli) avg: %3.8f min: %3.8f max: %3.8f\n").ascii(),
+ (*it).ascii(),
+ (double)d.accumulatedCounter / 1.666e9,
+ d.callCounter,
+ (double)d.accumulatedCounter / (double)d.callCounter / 1.666e9,
+ (double)d.minCounter / 1.666e9,
+ (double)d.maxCounter / 1.666e9);
+ }
+
+ startInternalCounter();
+}
+
+
+long long MemProfiler::getCounter() const
+{
+ struct rusage usg;
+ if (getrusage(RUSAGE_SELF, &usg) == 0) {
+ return usg.ru_idrss + usg.ru_isrss;
+ } else {
+ return 0;
+ }
+}
+
+
+BlockProfiler::BlockProfiler(const QString &descr)
+ : m_Description(descr)
+{
+ global_mem_profiler.startProfile(m_Description);
+ global_time_profiler.startProfile(m_Description);
+}
+
+BlockProfiler::~BlockProfiler()
+{
+ global_time_profiler.stopProfile(m_Description);
+ global_mem_profiler.stopProfile(m_Description);
+}
+
+void BlockProfiler::stop()
+{
+ global_time_profiler.stopProfile(m_Description);
+ global_mem_profiler.stopProfile(m_Description);
+ m_Description = QString::null;
+}
+
diff --git a/kradio3/src/errorlog-interfaces.cpp b/kradio3/src/errorlog-interfaces.cpp
new file mode 100644
index 0000000..025c0be
--- /dev/null
+++ b/kradio3/src/errorlog-interfaces.cpp
@@ -0,0 +1,111 @@
+/***************************************************************************
+ errorlog-interfaces.cpp - description
+ -------------------
+ begin : Sa Sep 13 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "include/errorlog-interfaces.h"
+
+#include <kdebug.h>
+#include <klocale.h>
+#include <qdatetime.h>
+
+IErrorLog *staticLogger = NULL;
+
+IErrorLog::IErrorLog()
+ : BaseClass(-1)
+{
+ if (!staticLogger)
+ staticLogger = this;
+}
+
+
+IErrorLog::~IErrorLog()
+{
+ if (staticLogger == this)
+ staticLogger = NULL;
+}
+
+
+int IErrorLogClient::sendLogError(const QString &s) const
+{
+ kdDebug() << QString(i18n("%1 Error: %2\n"))
+ .arg(QDateTime::currentDateTime().toString(Qt::ISODate))
+ .arg(s);
+ IF_SEND_MESSAGE(logError(s));
+}
+
+
+int IErrorLogClient::sendLogWarning(const QString &s) const
+{
+ kdDebug() << QString(i18n("%1 Warning: %2\n"))
+ .arg(QDateTime::currentDateTime().toString(Qt::ISODate))
+ .arg(s);
+ IF_SEND_MESSAGE(logWarning(s));
+}
+
+
+int IErrorLogClient::sendLogInfo(const QString &s) const
+{
+ kdDebug() << QString(i18n("%1 Information: %2\n"))
+ .arg(QDateTime::currentDateTime().toString(Qt::ISODate))
+ .arg(s);
+ IF_SEND_MESSAGE(logInfo(s));
+}
+
+
+int IErrorLogClient::sendLogDebug(const QString &s) const
+{
+ kdDebug() << QString(i18n("%1 Debug: %2\n"))
+ .arg(QDateTime::currentDateTime().toString(Qt::ISODate))
+ .arg(s);
+ IF_SEND_MESSAGE(logDebug(s));
+}
+
+void IErrorLogClient::staticLogError (const QString &s)
+{
+ kdDebug() << QString(i18n("%1 Error: %2\n"))
+ .arg(QDateTime::currentDateTime().toString(Qt::ISODate))
+ .arg(s);
+ if (staticLogger)
+ staticLogger->logError(s);
+}
+
+void IErrorLogClient::staticLogWarning(const QString &s)
+{
+ kdDebug() << QString(i18n("%1 Warning: %2\n"))
+ .arg(QDateTime::currentDateTime().toString(Qt::ISODate))
+ .arg(s);
+ if (staticLogger)
+ staticLogger->logWarning(s);
+}
+
+void IErrorLogClient::staticLogInfo (const QString &s)
+{
+ kdDebug() << QString(i18n("%1 Information: %2\n"))
+ .arg(QDateTime::currentDateTime().toString(Qt::ISODate))
+ .arg(s);
+ if (staticLogger)
+ staticLogger->logInfo(s);
+}
+
+void IErrorLogClient::staticLogDebug (const QString &s)
+{
+ kdDebug() << QString(i18n("%1 Debug: %2\n"))
+ .arg(QDateTime::currentDateTime().toString(Qt::ISODate))
+ .arg(s);
+ if (staticLogger)
+ staticLogger->logDebug(s);
+}
+
diff --git a/kradio3/src/fileringbuffer.cpp b/kradio3/src/fileringbuffer.cpp
new file mode 100644
index 0000000..beea2b4
--- /dev/null
+++ b/kradio3/src/fileringbuffer.cpp
@@ -0,0 +1,252 @@
+/***************************************************************************
+ ringbuffer.cpp - description
+ -------------------
+ begin : Sun March 21 2004
+ copyright : (C) 2004 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "include/fileringbuffer.h"
+
+#include <qstring.h>
+#include <unistd.h>
+#include <klocale.h>
+
+FileRingBuffer::FileRingBuffer(const QString &filename, Q_UINT64 max_size)
+{
+ m_BaseFileName = filename;
+ m_FileIdx = 0;
+ m_FileName = m_BaseFileName + "_" + QString::number(++m_FileIdx);
+ m_File = fopen(m_FileName.ascii(), "w+");
+ m_MaxSize = max_size;
+ m_RealSize = 0;
+ m_FillSize = 0;
+ m_Start = 0;
+ m_error = m_File == NULL;
+ m_errorString = m_File ? QString::null : i18n("cannot open buffer file %1").arg(filename);
+}
+
+
+FileRingBuffer::~FileRingBuffer()
+{
+ if (m_File) {
+ fclose (m_File);
+ unlink (m_FileName.ascii());
+ }
+ m_File = NULL;
+ m_FileName = QString::null;
+ m_MaxSize = 0;
+ m_RealSize = 0;
+ m_FillSize = 0;
+ m_Start = 0;
+ m_error = false;
+ m_errorString = QString::null;
+}
+
+
+bool FileRingBuffer::resize(const QString &filename, Q_UINT64 new_max_size)
+{
+ if (filename != m_BaseFileName) {
+ clear();
+ if (m_File) {
+ fclose (m_File);
+ unlink (m_FileName.ascii());
+ }
+ m_BaseFileName = filename;
+ m_FileName = m_BaseFileName + "_" + QString::number(++m_FileIdx);
+ m_File = fopen(m_FileName.ascii(), "w+");
+ m_error = m_File == NULL;
+ m_errorString = m_File ? QString::null : i18n("cannot open buffer file %1").arg(filename);
+ }
+
+ if (new_max_size >= m_RealSize) {
+ m_MaxSize = new_max_size;
+ }
+ else if (m_Start + m_FillSize < m_RealSize && new_max_size > m_Start + m_FillSize) {
+ ftruncate(fileno(m_File), new_max_size);
+ m_MaxSize = new_max_size;
+ }
+ else if (new_max_size >= m_FillSize) {
+ const size_t buffer_size = 65536;
+ char buffer[buffer_size];
+
+ QString tmp_file_name = m_BaseFileName + "_" + QString::number(++m_FileIdx);
+ FILE *tmp_file = fopen (tmp_file_name.ascii(), "w+");
+ Q_UINT64 newFill = 0;
+ if (tmp_file) {
+ while (!m_error && m_FillSize > 0) {
+ int tmp_size = takeData(buffer, buffer_size);
+ if (tmp_size > 0) {
+ if (fwrite (buffer, tmp_size, 1, tmp_file) > 0) {
+ newFill += tmp_size;
+ } else {
+ m_error = true;
+ m_errorString += i18n("FileRingbuffer::resize: Writing to tmpfile %1 failed. ").arg(tmp_file_name);
+ }
+ }
+ }
+ } else {
+ m_error = true;
+ m_errorString += i18n("FileRingbuffer::resize: Opening tmpfile %1 failed. ").arg(tmp_file_name);
+ }
+
+ if (!m_error) {
+ fclose (m_File);
+ m_FileName = tmp_file_name;
+ m_File = tmp_file;
+ m_FillSize = newFill;
+ m_Start = 0;
+ m_MaxSize = new_max_size;
+ m_RealSize = newFill;
+ }
+ return true;
+ }
+ return false;
+}
+
+
+size_t FileRingBuffer::addData (const char *src, size_t size)
+{
+ size_t written = 0;
+ if (m_Start + m_FillSize <= m_RealSize) {
+ Q_UINT64 rest = m_MaxSize - (m_Start + m_FillSize);
+ if (rest > size)
+ rest = size;
+ fseek(m_File, m_Start + m_FillSize, SEEK_SET);
+ if (rest > 0 && fwrite(src, rest, 1, m_File) <= 0) {
+ m_error = true;
+ m_errorString += i18n("FileRingBuffer::addData: failed writing data to file %1.").arg(m_FileName);
+ } else {
+ m_FillSize += rest;
+ if (m_Start + m_FillSize > m_RealSize)
+ m_RealSize = m_Start + m_FillSize;
+ written += rest;
+ size -= rest;
+ src += rest;
+ }
+ }
+ if (!m_error && size > 0 && m_FillSize < m_RealSize) {
+ size_t rest = size;
+ if (rest > m_RealSize - m_FillSize)
+ rest = m_RealSize - m_FillSize;
+
+ fseek(m_File, m_Start + m_FillSize - m_RealSize, SEEK_SET);
+ if (fwrite(src, rest, 1, m_File) <= 0) {
+ m_error = true;
+ m_errorString += i18n("FileRingBuffer::addData: failed writing data to file %1.").arg(m_FileName);
+ } else {
+ m_FillSize += rest;
+ written += rest;
+ //fflush(m_File); // debug only
+ }
+ }
+ return written;
+}
+
+
+size_t FileRingBuffer::takeData(char *dst, size_t size)
+{
+ size_t read = 0;
+ while (!m_error && m_FillSize > 0 && size > 0) {
+ size_t n = size;
+ if (n > m_FillSize)
+ n = m_FillSize;
+ if (n > m_RealSize - m_Start)
+ n = m_RealSize - m_Start;
+ fseek(m_File, m_Start, SEEK_SET);
+ if (fread(dst+read, n, 1, m_File) <= 0) {
+ m_error = true;
+ m_errorString += i18n("FileRingBuffer::takeData: failed reading data to file %1.").arg(m_FileName);
+ } else {
+ m_FillSize -= n;
+ m_Start += n;
+ read += n;
+ size -= n;
+ if (m_Start >= m_RealSize)
+ m_Start -= m_RealSize;
+ }
+
+ }
+ return read;
+}
+
+
+Q_UINT64 FileRingBuffer::getFreeSpace(Q_UINT64 &size)
+{
+ if (m_FillSize == m_RealSize) {
+ size = 0;
+ return 0;
+ }
+
+ if (m_Start + m_FillSize >= m_RealSize) {
+ size = m_RealSize - m_FillSize;
+ return m_Start + m_FillSize - m_RealSize;
+ } else {
+ size = m_MaxSize - m_Start - m_FillSize;
+ return m_Start + m_FillSize;
+ }
+}
+
+
+Q_UINT64 FileRingBuffer::removeFreeSpace(Q_UINT64 size)
+{
+ if (m_FillSize == m_RealSize)
+ return 0;
+
+ if (m_Start + m_FillSize >= m_RealSize) {
+ if (size > m_RealSize - m_FillSize)
+ size = m_RealSize - m_FillSize;
+ m_FillSize += size;
+ return size;
+ } else {
+ if (m_Start + m_FillSize + size >= m_MaxSize)
+ size = m_MaxSize - m_Start - m_FillSize;
+ m_FillSize += size;
+ return size;
+ }
+}
+
+
+Q_UINT64 FileRingBuffer::getData(Q_UINT64 &size)
+{
+ if (m_Start + m_FillSize >= m_RealSize) {
+ size = m_RealSize - m_Start;
+ } else {
+ size = m_FillSize;
+ }
+ return m_Start;
+}
+
+
+Q_UINT64 FileRingBuffer::removeData(Q_UINT64 size)
+{
+ if (size > m_FillSize)
+ size = m_FillSize;
+ if (m_Start + size >= m_RealSize) {
+ m_Start = m_Start + size - m_RealSize;
+ } else {
+ m_Start += size;
+ }
+ m_FillSize -= size;
+ return size;
+}
+
+
+void FileRingBuffer::clear()
+{
+ if (!m_error) {
+ ftruncate(fileno(m_File), 0);
+ m_Start = 0;
+ m_FillSize = 0;
+ m_RealSize = 0;
+ }
+}
diff --git a/kradio3/src/frequencyradiostation.cpp b/kradio3/src/frequencyradiostation.cpp
new file mode 100644
index 0000000..a2833ec
--- /dev/null
+++ b/kradio3/src/frequencyradiostation.cpp
@@ -0,0 +1,200 @@
+/***************************************************************************
+ frequencyradiostation.cpp - description
+ -------------------
+ begin : Sat March 29 2003
+ copyright : (C) 2003 by Klas Kalass, Ernst Martin Witte
+ email : klas@kde.org, witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "include/frequencyradiostation.h"
+#include <typeinfo>
+#include "include/radiostation-config.h"
+#include <klocale.h>
+#include <kglobal.h>
+
+/////////////////////////////////////////////////////////////////////////////
+
+const char *StationFrequencyElement = "frequency";
+
+static FrequencyRadioStation emptyFrequencyRadioStation(registerStationClass);
+
+/////////////////////////////////////////////////////////////////////////////
+
+FrequencyRadioStation::FrequencyRadioStation (RegisterStationClass, const QString &classname)
+ : RadioStation(registerStationClass, !classname.isNull() ? classname : getClassName()),
+ m_frequency(0)
+{
+}
+
+FrequencyRadioStation::FrequencyRadioStation()
+ : RadioStation(),
+ m_frequency(0)
+{
+}
+
+FrequencyRadioStation::FrequencyRadioStation(float frequency)
+ : RadioStation(),
+ m_frequency(frequency)
+{
+}
+
+FrequencyRadioStation::FrequencyRadioStation(const QString &name,
+ const QString &shortName,
+ float frequency)
+ : RadioStation(name, shortName),
+ m_frequency(frequency)
+{
+}
+
+FrequencyRadioStation::FrequencyRadioStation(FrequencyRadioStation const &s)
+ : RadioStation(s),
+ m_frequency(s.m_frequency)
+{
+}
+
+
+/** returns an exact copy of this station */
+RadioStation *FrequencyRadioStation::copy() const
+{
+ return new FrequencyRadioStation(*this);
+}
+
+RadioStation *FrequencyRadioStation::copyNewID() const
+{
+ RadioStation *x = new FrequencyRadioStation(*this);
+ x->generateNewStationID();
+ return x;
+}
+
+
+
+FrequencyRadioStation::~FrequencyRadioStation()
+{
+}
+
+
+/* = 0 : "this" is same as "s", i.e. approximately same frequency
+ > 0 : this.frequency > s.frequency
+ < 0 : this.frequency < s.frequency
+ other class than FrequencyRadioStation: compare typeid(.).name()
+*/
+int FrequencyRadioStation::compare(const RadioStation &_s) const
+{
+ FrequencyRadioStation const *s = dynamic_cast<FrequencyRadioStation const*>(&_s);
+
+ if (!s) {
+ return (typeid(this).name() > typeid(&_s).name()) ? 1 : -1;
+ }
+
+ // stations with no valid frequency are never identical
+ if (m_frequency == 0)
+ return -1;
+ if (s->m_frequency == 0)
+ return 1;
+
+ float delta = (m_frequency < 10) ? STATION_FREQ_INTERVAL_AM : STATION_FREQ_INTERVAL_FM;
+
+ if ( m_frequency + delta/4 > s->m_frequency
+ && m_frequency - delta/4 < s->m_frequency)
+ {
+ return 0;
+ } else {
+ return (m_frequency > s->m_frequency) ? 1 : -1;
+ }
+}
+
+
+QString FrequencyRadioStation::longName() const
+{
+ QString longN = name();
+ if (!longN.isEmpty()) {
+ longN = i18n("%1, %2").arg(longN).arg(description());
+ } else {
+ longN = description();
+ }
+
+ return longN;
+}
+
+
+QString FrequencyRadioStation::description() const
+{
+ float cf = frequency();
+ QString f;
+ if (cf >= 10)
+ f = i18n("%1 MHz").arg(KGlobal::locale()->formatNumber(cf, 2));
+ else
+ f = i18n("%1 kHz").arg(KGlobal::locale()->formatNumber(cf * 1000, 0));
+
+ return f;
+}
+
+
+bool FrequencyRadioStation::isValid() const
+{
+ return m_frequency > 0;
+}
+
+
+
+bool FrequencyRadioStation::setProperty(const QString &pn, const QString &val)
+{
+ bool retval = false;
+ if (pn == StationFrequencyElement) {
+ float f = val.toFloat(&retval);
+ if (retval)
+ m_frequency = f;
+ } else {
+ retval = RadioStation::setProperty(pn, val);
+ }
+ return retval;
+}
+
+
+QString FrequencyRadioStation::getProperty(const QString &pn) const
+{
+ if (pn == StationFrequencyElement) {
+ return QString().setNum(m_frequency);
+ } else {
+ return RadioStation::getProperty(pn);
+ }
+}
+
+
+QStringList FrequencyRadioStation::getPropertyNames() const
+{
+ QStringList l = RadioStation::getPropertyNames();
+ l.push_back(StationFrequencyElement);
+ return l;
+}
+
+
+RadioStationConfig *FrequencyRadioStation::createEditor() const
+{
+ return new FrequencyRadioStationConfig(NULL);
+}
+
+bool FrequencyRadioStation::operator == (const RadioStation &x) const
+{
+ if (!RadioStation::operator == (x))
+ return false;
+
+ FrequencyRadioStation const *fx = dynamic_cast<FrequencyRadioStation const*>(&x);
+ if (!fx)
+ return false;
+
+ float delta = (m_frequency < 10) ? STATION_FREQ_INTERVAL_AM : STATION_FREQ_INTERVAL_FM;
+
+ return m_frequency + delta/4 > fx->m_frequency
+ && m_frequency - delta/4 < fx->m_frequency;
+
+}
diff --git a/kradio3/src/frequencyseekhelper.cpp b/kradio3/src/frequencyseekhelper.cpp
new file mode 100644
index 0000000..670c300
--- /dev/null
+++ b/kradio3/src/frequencyseekhelper.cpp
@@ -0,0 +1,142 @@
+/***************************************************************************
+ frequencyseekhelper.cpp - description
+ -------------------
+ begin : Fre Mai 9 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "include/frequencyseekhelper.h"
+#include <qtimer.h>
+
+FrequencySeekHelper::FrequencySeekHelper(ISeekRadio &parent)
+ : SeekHelper(parent)
+{
+ m_timer = new QTimer(this);
+ QObject::connect (m_timer, SIGNAL(timeout()), this, SLOT(step()));
+}
+
+
+FrequencySeekHelper::~FrequencySeekHelper()
+{
+ delete m_timer;
+}
+
+
+bool FrequencySeekHelper::connectI (Interface *i)
+{
+ bool a = SeekHelper::connectI(i);
+ bool b = IFrequencyRadioClient::connectI(i);
+ return a || b;
+}
+
+
+bool FrequencySeekHelper::disconnectI(Interface *i)
+{
+ bool a = SeekHelper::disconnectI(i);
+ bool b = IFrequencyRadioClient::disconnectI(i);
+ return a || b;
+}
+
+
+void FrequencySeekHelper::start(const SoundStreamID &id, direction_t dir)
+{
+ SeekHelper::start(id, dir);
+ m_bestFrequency = 0;
+}
+
+
+void FrequencySeekHelper::abort()
+{
+ m_timer->stop();
+ m_bestFrequency = 0;
+}
+
+
+bool FrequencySeekHelper::nextSeekStep()
+{
+ float f = queryFrequency();
+ f += (m_direction == up ? 1 : -1) * queryScanStep();
+
+ bool bounds = false;
+ if (f > queryMaxFrequency()) {
+ f = queryMaxFrequency();
+ bounds = true;
+ }
+ if (f < queryMinFrequency()) {
+ f = queryMinFrequency();
+ bounds = true;
+ }
+
+ if (sendFrequency(f) > 0) {
+ if (!bounds) {
+ m_timer->start (50, true);
+ return true;
+ } else {
+ return false;
+ }
+ } else {
+ return false;
+ }
+}
+
+
+bool FrequencySeekHelper::bestFound() const
+{
+ return m_bestFrequency > 0;
+}
+
+
+void FrequencySeekHelper::rememberBest()
+{
+ m_bestFrequency = m_currentFrequency;
+}
+
+
+void FrequencySeekHelper::getData()
+{
+ m_oldSignal = m_currentSignal;
+ m_oldFrequency = m_currentFrequency;
+
+ querySignalQuality(m_SoundStreamID, m_currentSignal);
+ queryHasGoodQuality(m_SoundStreamID, m_goodSignal);
+ m_currentFrequency = queryFrequency();
+}
+
+
+bool FrequencySeekHelper::isBetter() const
+{
+ return m_currentSignal > m_oldSignal;
+}
+
+
+bool FrequencySeekHelper::isWorse() const
+{
+ return m_currentSignal < m_oldSignal;
+}
+
+
+bool FrequencySeekHelper::isGood() const
+{
+ return m_goodSignal;
+}
+
+
+void FrequencySeekHelper::applyBest()
+{
+ sendFrequency( (m_bestFrequency + m_currentFrequency) / 2);
+}
+
+
+
+
+#include "frequencyseekhelper.moc"
diff --git a/kradio3/src/include/aboutwidget.h b/kradio3/src/include/aboutwidget.h
new file mode 100644
index 0000000..c2a8562
--- /dev/null
+++ b/kradio3/src/include/aboutwidget.h
@@ -0,0 +1,147 @@
+/***************************************************************************
+ aboutwidget.h - description
+ -------------------
+ begin : Sa Sep 13 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_ABOUT_WIDGET_H
+#define KRADIO_ABOUT_WIDGET_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+
+#include <qwidget.h>
+
+/* Unfortunately KDE doesn't provide the class KAboutContainerBase
+ to public programming, so we have to copy most of that code into
+ an own class :(
+*/
+
+class QFrame;
+class KAboutContainer;
+class QTabWidget;
+class QVBoxLayout;
+class KAboutData;
+
+#include <qlabel.h>
+
+// copied (and renamed) from kaboutdialog_private.h
+// original: KImageTrackLabel
+
+class KRadioImageTrackLabel : public QLabel
+{
+ Q_OBJECT
+
+ public:
+ enum MouseMode
+ {
+ MousePress = 1,
+ MouseRelease,
+ MouseDoubleClick,
+ MouseMove
+ };
+
+ public:
+ KRadioImageTrackLabel( QWidget * parent, const char * name=0, WFlags f=0 );
+
+ signals:
+ void mouseTrack( int mode, const QMouseEvent *e );
+
+ protected:
+ virtual void mousePressEvent( QMouseEvent *e );
+ virtual void mouseReleaseEvent( QMouseEvent *e );
+ virtual void mouseDoubleClickEvent( QMouseEvent *e );
+ virtual void mouseMoveEvent ( QMouseEvent *e );
+};
+
+// copied (and renamed) from kaboutdialog_private.h
+// original: KAboutContainerBase
+
+class KRadioAboutWidget : public QWidget
+{
+ Q_OBJECT
+
+ public:
+ enum LayoutType
+ {
+ AbtPlain = 0x0001,
+ AbtTabbed = 0x0002,
+ AbtTitle = 0x0004,
+ AbtImageLeft = 0x0008,
+ AbtImageRight = 0x0010,
+ AbtImageOnly = 0x0020,
+ AbtProduct = 0x0040,
+ AbtKDEStandard = AbtTabbed|AbtTitle|AbtImageLeft,
+ AbtAppStandard = AbtTabbed|AbtTitle|AbtProduct,
+ AbtImageAndTitle = AbtPlain|AbtTitle|AbtImageOnly
+ };
+
+ public:
+ KRadioAboutWidget(const KAboutData &abtData, int layoutType, QWidget *parent = 0, char *name = 0);
+ virtual void show( void );
+ virtual QSize sizeHint( void ) const;
+
+ void setAboutData(const KAboutData &abtData);
+
+ void setTitle( const QString &title );
+ void setImage( const QString &fileName );
+ void setImageBackgroundColor( const QColor &color );
+ void setImageFrame( bool state );
+ void setProduct( const QString &appName, const QString &version,
+ const QString &author, const QString &year );
+
+ QFrame *addTextPage( const QString &title, const QString &text,
+ bool richText=false, int numLines=10 );
+ QFrame *addLicensePage( const QString &title, const QString &text,
+ int numLines=10 );
+ KAboutContainer *addContainerPage( const QString &title,
+ int childAlignment = AlignCenter, int innerAlignment = AlignCenter );
+ KAboutContainer *addScrolledContainerPage( const QString &title,
+ int childAlignment = AlignCenter, int innerAlignment = AlignCenter );
+
+ QFrame *addEmptyPage( const QString &title );
+
+ KAboutContainer *addContainer( int childAlignment, int innerAlignment );
+
+ public slots:
+ virtual void slotMouseTrack( int mode, const QMouseEvent *e );
+ virtual void slotUrlClick( const QString &url );
+ virtual void slotMailClick( const QString &name, const QString &address );
+
+ protected:
+ virtual void fontChange( const QFont &oldFont );
+
+ signals:
+ void mouseTrack( int mode, const QMouseEvent *e );
+ void urlClick( const QString &url );
+ void mailClick( const QString &name, const QString &address );
+
+ private:
+ QMemArray<QWidget*> mContainerList;
+
+ QVBoxLayout *mTopLayout;
+ KRadioImageTrackLabel *mImageLabel;
+ QLabel *mTitleLabel;
+ QLabel *mIconLabel;
+ QLabel *mVersionLabel;
+ QLabel *mAuthorLabel;
+ QFrame *mImageFrame;
+ QTabWidget *mPageTab;
+ QFrame *mPlainSpace;
+};
+
+
+#endif
diff --git a/kradio3/src/include/alarm.h b/kradio3/src/include/alarm.h
new file mode 100644
index 0000000..45cb397
--- /dev/null
+++ b/kradio3/src/include/alarm.h
@@ -0,0 +1,104 @@
+/***************************************************************************
+ alarm.h - description
+ -------------------
+ begin : Mon Feb 4 2002
+ copyright : (C) 2002 by Martin Witte / Frank Schwanz
+ email : witte@kawo1.rwth-aachen.de / schwanz@fh-brandenburg.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_ALARM_H
+#define KRADIO_ALARM_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qdatetime.h>
+#include <vector>
+
+/**
+ *@author Martin Witte
+ */
+
+class Alarm
+{
+public:
+
+ enum AlarmType { StartPlaying, StopPlaying, StartRecording, StopRecording };
+
+protected:
+ QDateTime m_time;
+
+ bool m_daily;
+ int m_weekdayMask;
+
+ bool m_enabled;
+ QString m_stationID;
+ float m_volumePreset; // < 0: disabled
+
+ AlarmType m_type;
+
+ int m_ID;
+
+ static int m_LastID;
+
+public:
+ Alarm();
+ Alarm(const QDateTime &time, bool daily, bool enabled);
+ Alarm(const Alarm &);
+ ~Alarm();
+
+ bool isEnabled() const { return m_enabled; }
+ bool isDaily() const { return m_daily; }
+ int weekdayMask() const { return m_weekdayMask; }
+ QDateTime alarmTime () const { return m_time; }
+ QDateTime nextAlarm (bool ignoreEnable = false) const;
+ const QString &stationID () const { return m_stationID; }
+ float volumePreset () const { return m_volumePreset; }
+ AlarmType alarmType() const { return m_type; }
+
+ int ID() const { return m_ID; }
+
+ void setEnabled (bool enable = true) { m_enabled = enable; }
+ void setDaily (bool d = true) { m_daily = d; }
+ void setWeekdayMask(int m = 0x7F) { m_weekdayMask = m; }
+ void setDate (const QDate &d) { m_time.setDate(d); }
+ void setTime (const QTime &d) { m_time.setTime(d); }
+ void setVolumePreset(float v) { m_volumePreset = v; }
+ void setStationID(const QString &id) { m_stationID = id;}
+ void setAlarmType(AlarmType t) { m_type = t; }
+
+
+ bool operator == (const Alarm &x) const {
+ return
+ m_time == x.m_time &&
+ m_daily == x.m_daily &&
+ m_weekdayMask == x.m_weekdayMask &&
+ m_enabled == x.m_enabled &&
+ m_stationID == x.m_stationID &&
+ m_volumePreset == x.m_volumePreset &&
+ m_type == x.m_type &&
+ m_ID == x.m_ID;
+ }
+ bool operator != (const Alarm &x) const { return ! operator == (x); }
+
+};
+
+using namespace std;
+
+typedef vector<Alarm> AlarmVector;
+typedef AlarmVector::iterator iAlarmVector;
+typedef AlarmVector::const_iterator ciAlarmVector;
+
+
+
+#endif
diff --git a/kradio3/src/include/debug-profiler.h b/kradio3/src/include/debug-profiler.h
new file mode 100644
index 0000000..969008a
--- /dev/null
+++ b/kradio3/src/include/debug-profiler.h
@@ -0,0 +1,112 @@
+/***************************************************************************
+ debug-profiler.h - description
+ -------------------
+ begin : Sat May 28 2005
+ copyright : (C) 2005 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_DEBUG_PROFILER_H
+#define KRADIO_DEBUG_PROFILER_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qstring.h>
+#include <qmap.h>
+
+#if (defined __i386__) || (defined __x86_64__)
+static __inline__ unsigned long long int rdtsc()
+{
+ unsigned int a, d;
+ asm volatile("rdtsc" : "=a" (a), "=d" (d));
+ return ((unsigned long long)a) | (((unsigned long long)d) << 32);
+}
+#else
+static __inline__ unsigned long long int rdtsc()
+{
+ return 0UL;
+}
+#endif
+
+class Profiler
+{
+public:
+ Profiler();
+ virtual ~Profiler();
+
+ void startProfile(const QString &descr);
+ void stopProfile (const QString &descr);
+
+ void printData();
+
+protected:
+
+ virtual long long getCounter() const = 0;
+
+ void stopInternalCounter();
+ void startInternalCounter();
+
+ long long m_internalCounter;
+ long long m_tmpStartVal;
+
+ struct profile_data
+ {
+ profile_data(long long start = 0) :
+ startCounter(start), accumulatedCounter(0), callCounter(0),
+ minCounter(0x7FFFFFFFFFFFFFFFll), maxCounter(0) {}
+ long long startCounter;
+ long long accumulatedCounter;
+ long long callCounter;
+ long long minCounter;
+ long long maxCounter;
+ };
+
+ QMap<QString, profile_data> m_ProfileData;
+};
+
+
+class TimeProfiler : public Profiler
+{
+protected:
+ long long getCounter() const { return rdtsc(); }
+};
+
+
+class MemProfiler : public Profiler
+{
+protected:
+ long long getCounter() const;
+};
+
+
+extern TimeProfiler global_time_profiler;
+extern MemProfiler global_mem_profiler;
+
+
+
+class BlockProfiler
+{
+public:
+ BlockProfiler(const QString &descr);
+ ~BlockProfiler();
+
+ void stop();
+
+protected:
+ QString m_Description;
+};
+
+
+
+#endif
diff --git a/kradio3/src/include/errorlog-interfaces.h b/kradio3/src/include/errorlog-interfaces.h
new file mode 100644
index 0000000..a480927
--- /dev/null
+++ b/kradio3/src/include/errorlog-interfaces.h
@@ -0,0 +1,64 @@
+/***************************************************************************
+ errorlog-interfaces.h - description
+ -------------------
+ begin : Sa Sep 13 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_ERRORLOG_INTERFACES_H
+#define KRADIO_ERRORLOG_INTERFACES_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "interfaces.h"
+
+INTERFACE(IErrorLog, IErrorLogClient)
+{
+public :
+ IErrorLog();
+ virtual ~IErrorLog();
+
+RECEIVERS:
+ IF_RECEIVER( logError (const QString &) )
+ IF_RECEIVER( logWarning(const QString &) )
+ IF_RECEIVER( logInfo (const QString &) )
+ IF_RECEIVER( logDebug (const QString &) )
+};
+
+
+INTERFACE(IErrorLogClient, IErrorLog)
+{
+public :
+ IF_CON_DESTRUCTOR(IErrorLogClient, -1)
+
+public:
+ IF_SENDER ( sendLogError (const QString &) )
+ IF_SENDER ( sendLogWarning(const QString &) )
+ IF_SENDER ( sendLogInfo (const QString &) )
+ IF_SENDER ( sendLogDebug (const QString &) )
+
+ void logError (const QString &s) const { sendLogError(s); }
+ void logWarning(const QString &s) const { sendLogWarning(s); }
+ void logInfo (const QString &s) const { sendLogInfo(s); }
+ void logDebug (const QString &s) const { sendLogDebug(s); }
+
+ static void staticLogError (const QString &s);
+ static void staticLogWarning(const QString &s);
+ static void staticLogInfo (const QString &s);
+ static void staticLogDebug (const QString &s);
+};
+
+
+#endif
diff --git a/kradio3/src/include/fileringbuffer.h b/kradio3/src/include/fileringbuffer.h
new file mode 100644
index 0000000..3447277
--- /dev/null
+++ b/kradio3/src/include/fileringbuffer.h
@@ -0,0 +1,71 @@
+/***************************************************************************
+ ringbuffer.h - description
+ -------------------
+ begin : Sun March 21 2004
+ copyright : (C) 2004 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef _KRADIO_FILE_RING_BUFFER_H
+#define _KRADIO_FILE_RING_BUFFER_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qstring.h>
+#include <stdio.h>
+
+class FileRingBuffer
+{
+public:
+ FileRingBuffer(const QString &filename, Q_UINT64 max_size);
+ ~FileRingBuffer();
+
+ bool resize(const QString &filename, Q_UINT64 new_max_size);
+
+ size_t addData (const char *src, size_t size);
+ size_t takeData(char *dst, size_t size);
+ Q_UINT64 removeData(Q_UINT64 size);
+
+ const QString &getFileName () const { return m_FileName; }
+ Q_UINT64 getMaxSize() const { return m_MaxSize; }
+ Q_UINT64 getRealSize() const { return m_RealSize; }
+ Q_UINT64 getFillSize() const { return m_FillSize; }
+ Q_UINT64 getFreeSize() const { return (m_Start + m_FillSize > m_RealSize) ? m_RealSize - m_FillSize : m_MaxSize - m_FillSize; }
+
+ void clear();
+
+ bool error() const { return m_error; }
+ const QString &errorString() const { return m_errorString; }
+
+protected:
+ Q_UINT64 getFreeSpace(Q_UINT64 &size); // returns position in file + size
+ Q_UINT64 removeFreeSpace(Q_UINT64 size);
+
+ Q_UINT64 getData(Q_UINT64 &size); // returns position in file + size
+
+
+ int m_FileIdx;
+ QString m_BaseFileName;
+ QString m_FileName;
+ FILE *m_File;
+ Q_UINT64 m_Start;
+ Q_UINT64 m_MaxSize;
+ Q_UINT64 m_RealSize;
+ Q_UINT64 m_FillSize;
+
+ QString m_errorString;
+ bool m_error;
+};
+
+#endif
diff --git a/kradio3/src/include/frequencyradiostation.h b/kradio3/src/include/frequencyradiostation.h
new file mode 100644
index 0000000..87e4125
--- /dev/null
+++ b/kradio3/src/include/frequencyradiostation.h
@@ -0,0 +1,83 @@
+/***************************************************************************
+ frequencyradiostation.h - description
+ -------------------
+ begin : Sat March 29 2003
+ copyright : (C) 2003 by Klas Kalass, Ernst Martin Witte
+ email : klas@kde.org, witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_FREQUENCYRADIOSTATION_H
+#define KRADIO_FREQUENCYRADIOSTATION_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "radiostation.h"
+
+/**
+ * @author Klas Kalass, Ernst Martin Witte
+ */
+
+
+// Kopenhagener Wellenplan: 300kHz
+#define STATION_FREQ_INTERVAL_FM 0.3
+
+// Kopenhagener Wellenplan: 9kHz
+#define STATION_FREQ_INTERVAL_AM 0.009
+
+class FrequencyRadioStation : public RadioStation {
+public:
+ FrequencyRadioStation ();
+ FrequencyRadioStation (float frequency);
+ FrequencyRadioStation (const QString &name, const QString &shortName, float frequency);
+ FrequencyRadioStation (const FrequencyRadioStation &);
+ FrequencyRadioStation (RegisterStationClass, const QString &classname = QString::null);
+ ~FrequencyRadioStation();
+
+ float frequency() const { return m_frequency; }
+ void setFrequency (float frequency) { m_frequency = frequency; }
+
+ virtual QString longName() const;
+ virtual QString description() const;
+ virtual bool isValid () const;
+
+ /* = 0 : "this" is same as "s", i.e. approximately same frequency
+ > 0 : this.frequency > s.frequency
+ < 0 : this.frequency < s.frequency
+ other class than FrequencyRadioStation: compare typeid(.).name()
+ */
+ virtual int compare (const RadioStation &s) const;
+
+ /** returns an exact copy of this station */
+ virtual RadioStation *copy() const;
+ virtual RadioStation *copyNewID() const;
+
+ virtual RadioStationConfig *createEditor() const;
+
+ // for XML-Parsing/Export
+ virtual bool setProperty(const QString &property_name, const QString &val);
+ virtual QString getProperty(const QString &property_name) const;
+ virtual QStringList getPropertyNames() const;
+ virtual QString getClassName() const { return "FrequencyRadioStation"; }
+
+
+ virtual bool operator == (const RadioStation &x) const;
+
+protected:
+
+ float m_frequency;
+};
+
+
+
+#endif
diff --git a/kradio3/src/include/frequencyseekhelper.h b/kradio3/src/include/frequencyseekhelper.h
new file mode 100644
index 0000000..4dc529f
--- /dev/null
+++ b/kradio3/src/include/frequencyseekhelper.h
@@ -0,0 +1,77 @@
+/***************************************************************************
+ frequencyseekhelper.h - description
+ -------------------
+ begin : Fre Mai 9 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_FREQUENCY_SEEKHELPER_H
+#define KRADIO_FREQUENCY_SEEKHELPER_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qobject.h>
+#include "radiodevice_interfaces.h"
+#include "seekhelper.h"
+
+class FrequencySeekHelper : public QObject,
+ public SeekHelper,
+ public IFrequencyRadioClient
+{
+Q_OBJECT
+public:
+
+ FrequencySeekHelper(ISeekRadio &parent);
+ virtual ~FrequencySeekHelper();
+
+// IFrequencyRadioClient
+RECEIVERS:
+ bool noticeFrequencyChanged(float /*f*/, const RadioStation */*s*/) { return false; }
+ bool noticeMinMaxFrequencyChanged(float /*min*/, float /*max*/) { return false; }
+ bool noticeDeviceMinMaxFrequencyChanged(float /*min*/, float /*max*/){ return false; }
+ bool noticeScanStepChanged(float /*s*/) { return false; }
+
+public:
+
+ virtual bool connectI (Interface *i);
+ virtual bool disconnectI(Interface *i);
+
+ virtual void start(const SoundStreamID &, direction_t dir);
+
+public slots:
+
+ virtual void step() { SeekHelper::step(); }
+
+protected:
+ virtual void abort();
+ virtual bool isGood() const;
+ virtual bool isBetter() const;
+ virtual bool isWorse() const;
+ virtual bool bestFound() const;
+ virtual void getData();
+ virtual void rememberBest();
+ virtual bool nextSeekStep();
+ virtual void applyBest();
+
+protected:
+ QTimer *m_timer;
+
+ float m_currentSignal, m_oldSignal;
+ bool m_goodSignal;
+ float m_currentFrequency, m_oldFrequency;
+ float m_bestFrequency;
+};
+
+#endif
diff --git a/kradio3/src/include/gui_list_helper.h b/kradio3/src/include/gui_list_helper.h
new file mode 100644
index 0000000..6524043
--- /dev/null
+++ b/kradio3/src/include/gui_list_helper.h
@@ -0,0 +1,174 @@
+/***************************************************************************
+ gui_list_helper.h
+ -------------------
+ begin : Son Sep 26 2004
+ copyright : (C) 2004 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef _KRADIO_LIBKRADIO_GUI_GUI_LIST_HELPER_H_
+#define _KRADIO_LIBKRADIO_GUI_GUI_LIST_HELPER_H_
+
+#include <qmap.h>
+#include <qvaluelist.h>
+
+
+template <class TLIST> class GUISimpleListHelper
+{
+public:
+ GUISimpleListHelper(TLIST *list) : m_List(list) {}
+ ~GUISimpleListHelper() {}
+
+ void setData(const QValueList<QString> &data);
+ QString getCurrentText() const { return m_List->currentText(); }
+ void setCurrentText(const QString &s) { m_List->setCurrentItem(m_revData.contains(s) ? m_revData[s] : 0); }
+
+ int count() const { return m_revData.count(); }
+ bool contains(const QString &id) const { return m_revData.contains(id); }
+
+protected:
+ TLIST *m_List;
+ QMap<QString, int> m_revData;
+};
+
+
+template <class TLIST>
+void GUISimpleListHelper<TLIST>::setData(const QValueList<QString> &data)
+{
+ m_List->clear();
+ m_revData.clear();
+
+ QValueListConstIterator<QString> it = data.begin();
+ QValueListConstIterator<QString> end = data.end();
+ for (int i = 0; it != end; ++it, ++i) {
+ m_revData[*it] = i;
+ m_List->insertItem(*it);
+ }
+}
+
+
+
+
+
+
+
+
+
+template <class TLIST, class TID> class GUIListHelper
+{
+public:
+ enum SORT_KEY { SORT_BY_ID, SORT_BY_DESCR };
+
+ GUIListHelper(TLIST *list, SORT_KEY skey);
+ GUIListHelper(TLIST *list, const QMap<TID, QString> &data, SORT_KEY skey);
+ ~GUIListHelper();
+
+ void setData(const QMap<TID, QString> &data);
+
+ void setCurrentItem(const TID &) const;
+ const TID &getCurrentItem() const;
+
+ int count() const { return m_Index2ID.count(); }
+
+ bool contains(const TID &id) const { return m_ID2Index.contains(id); }
+
+protected:
+ SORT_KEY m_skey;
+ TLIST *m_List;
+ QMap<int, TID> m_Index2ID;
+ QMap<TID, int> m_ID2Index;
+ QMap<TID, QString> m_ID2Description;
+
+ struct THelpData {
+ TID id;
+ QString descr;
+ SORT_KEY skey;
+
+ THelpData() : id(), descr(), skey(SORT_BY_ID) {}
+ THelpData(TID _id, const QString &_descr, SORT_KEY _skey)
+ : id(_id),
+ descr(_descr),
+ skey(_skey)
+ {}
+ bool operator > (const THelpData &d) { return (skey == SORT_BY_ID) ? id > d.id : descr > d.descr; }
+ bool operator < (const THelpData &d) { return (skey == SORT_BY_ID) ? id < d.id : descr < d.descr; }
+ };
+};
+
+
+
+template <class TLIST, class TID>
+GUIListHelper<TLIST, TID>::GUIListHelper(TLIST *list, SORT_KEY skey)
+ : m_skey(skey),
+ m_List(list)
+{
+}
+
+
+template <class TLIST, class TID>
+GUIListHelper<TLIST, TID>::GUIListHelper(TLIST *list, const QMap<TID, QString> &data, SORT_KEY skey)
+ : m_skey(skey),
+ m_List(list)
+{
+ setData(data);
+}
+
+
+template <class TLIST, class TID>
+GUIListHelper<TLIST, TID>::~GUIListHelper()
+{
+}
+
+
+template <class TLIST, class TID>
+void GUIListHelper<TLIST, TID>::setData (const QMap<TID, QString> &data)
+{
+ m_List->clear();
+
+ m_ID2Description = data;
+ QValueList<THelpData> help_list;
+ QMapConstIterator<TID, QString> end = data.end();
+ for (QMapConstIterator<TID, QString> it = data.begin(); it != end; ++it) {
+ help_list.push_back(THelpData(it.key(), *it, m_skey));
+ }
+ qHeapSort(help_list);
+
+ m_Index2ID.clear();
+ m_ID2Index.clear();
+
+ int idx = 0;
+ QValueListIterator<THelpData> end_hlp = help_list.end();
+ for (QValueListIterator<THelpData> it = help_list.begin(); it != end_hlp; ++it, ++idx) {
+ m_Index2ID.insert(idx, (*it).id);
+ m_ID2Index.insert((*it).id, idx);
+ m_List->insertItem((*it).descr);
+ }
+}
+
+
+template <class TLIST, class TID>
+void GUIListHelper<TLIST, TID>::setCurrentItem(const TID &id) const
+{
+ if (m_ID2Index.contains(id))
+ m_List->setCurrentItem(m_ID2Index[id]);
+ else
+ m_List->setCurrentItem(0);
+}
+
+template <class TLIST, class TID>
+const TID &GUIListHelper<TLIST, TID>::getCurrentItem() const
+{
+ int idx = m_List->currentItem();
+ return m_Index2ID[idx];
+}
+
+#endif
diff --git a/kradio3/src/include/interfaces.h b/kradio3/src/include/interfaces.h
new file mode 100644
index 0000000..dced1d7
--- /dev/null
+++ b/kradio3/src/include/interfaces.h
@@ -0,0 +1,714 @@
+/***************************************************************************
+ interfaces.h - description
+ -------------------
+ begin : Fre Feb 28 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_INTERFACES_H
+#define KRADIO_INTERFACES_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qptrlist.h>
+#include <qmap.h>
+#include <kdebug.h>
+#include <typeinfo>
+
+/*
+/////////////////////////////////////////////////////////////////////////////
+
+ Interfaces - Our Concept
+
+ Without connection management an interface can be defined easily as empty
+ abstract C++-Class. But that's not what we want.
+
+ Our interfaces also provide connection management. Thus each interface has
+ exactly one matching counterpart, the complementary interface (cmplIF).
+ Therefore connecting two objects that have matching interfaces can be
+ automated.
+
+ Our interfaces have to be able to support the following "functions":
+
+ - send and receive messages (e.g. notifications, commands, ...) to
+ all connected interfaces. These functions do not need a return value,
+ but in some cases the sender might want to know if anyone has received
+ his message. Thus a boolean return value should indicate if the message
+ was handled or ignored.
+
+ - query for information on connected interfaces / answer queries. These
+ functions usually have a return value. A query is only executed on the
+ "current" or - if not selected - the first or only connection.
+
+/////////////////////////////////////////////////////////////////////////////
+
+ Why are we not using QT signal/slots?
+
+ First the idea of using qt for connecting interfaces is very nice, as the
+ signal/slot model is well known and hopefully properly implemented.
+
+ But there are some problems:
+
+ - Signals/slots do not support return values, except "call by reference".
+ To provide queries or a delivery feedback for messages, wrapper functions
+ would have been necessary.
+
+ - Qt does not support multiple inheritance of QObjects. Thus even signals
+ have to be declared abstract by the interface though the (later)
+ implementation is already known.
+
+ Those functions have to be declared as signals in the interface
+ implementation (derived from QObject) though the implementation does not
+ want to worry about these signals.
+
+ - Qt does connect functions (signals/slots) and not interfaces. These
+ functions have to be connected separately. By that it is possible to
+ forget to connect signals/slots of that interfaces.
+
+ - Aggregation of multiple interface implementations (each one is an QObject)
+ is not possible because qt does not allow multiple inheritance of QObjects
+
+/////////////////////////////////////////////////////////////////////////////
+
+ What about our own solution?
+
+ Well, it eliminates at least the qt-problems explained above. But first we
+ need a common mechanism to manage interface connections. This functionality
+ can be provided by a common base class "InterfaceBase". It stores all
+ connected interfaces in a list of InterfaceBase pointers, e.g. QPtrList.
+
+ With this approach we would have some problems:
+
+ - When calling a function of a connected interface a slow dynamic_cast
+ is necessary to upcast the stored InterfaceBase pointer to the
+ apropriate type.
+
+ - Multiple inheritance of InterfaceBase must not be virtual. Otherwise
+ interface connection management is mixed between interfaces.
+ (well, virtual inheritance is usually no real issue, but worth a hint;-)
+
+ To avoid these problems, InterfaceBase is a template with two parameters,
+ thisIF (IF = interface) and cmplIF (complementary IF). With that
+ information the base class for an interface is capable to handle
+ connections with the correct type information. Additionally some pseudo
+ types are declared (thisInterface, cmplInterface, IFList, IFIterator) to
+ make easy-to-use macros for messages and queries possible.
+
+/////////////////////////////////////////////////////////////////////////////
+
+ How do I use it ? - Declarations
+
+ First you have to declare the two matching interface-classes as unkown
+ classes, because both their names are used in the class declarations.
+ Afterwards you can declare both classes as class derived from
+ InterfaceBase.
+
+ class Interface;
+ class ComplementaryInterface;
+
+ class Interface : public InterfaceBase<Interface, ComplementaryInterface>
+ {
+ ...
+ };
+
+ class ComplementaryInterface : public InterfaceBase<ComplementaryInterface, Interface>
+ {
+ ...
+ };
+
+ With macro abbreviation:
+
+ INTERFACE(Interface, ComplementaryInterface)
+ {
+ };
+
+ INTERFACE(ComplementaryInterface, Interface)
+ {
+ };
+
+
+ In order to receive/send Messages or query/answer queries we have to declare
+ special methods:
+
+ - sending Messages
+
+ Declare a virtual constant method with return value "int" and the desired
+ parameters. The return value will indicate how many receivers have handled
+ the message:
+
+ virtual bool SendingMessages(int any_or_non_param) const;
+
+ Abbreviation by macros:
+
+ IF_SENDER( SendingMessages(int any_or_non_param) )
+
+
+ - receiving Messages
+
+ Declare an abstract Method with return value "bool", and the desired
+ paramters. The return value indicates wether the message was handled or not:
+
+ virtual bool ReceivingMessages(int any_or_non_param) = 0;
+
+ Abbreviation by macros:
+
+ IF_RECEIVER( ReceivingMessages(int any_or_non_param) )
+
+
+ The method has to be implemented by a derived class. The current item of the
+ receivers conntions list is set to the sender.
+
+
+ - querying queries
+
+ Declare a virtual constant method with the desired return value and
+ parameters:
+
+ virtual int QueryingQueries(int another_param) const;
+
+ Abbreviation by macros:
+
+ IF_QUERY( int QueryingQueries(int another_param) )
+
+
+ - answering queries
+
+ Declare an abstract Method with return value void, and the desired
+ paramters:
+
+ virtual void AnsweringQueries(int another_param) = 0;
+
+ Abbreviation by macros:
+
+ IF_ANSWER( AnsweringQueries(int another_param) )
+
+ The method has to be implemented by a derived class. The current item of the
+ receivers conntions list is set to the sender.
+
+
+ At last a note on maxConnections. This member is set on initialization by
+ the constructor and thus can be set in a derived class in it's own
+ constructor. Negative values are interpreted as "unlimited".
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+ How do I use it ? - Implementations
+
+ Because we do not have a MOC as Qt does, we have to implement our sending
+ or querying methods by hand. But this minor disadvantage should be
+ considered as less important than the fact, that this implementation is
+ done where it belongs to. Especially because there are easy to use macros
+ to do this:
+
+ int ComplementaryInterface::SendingMessages(int any_or_non_param) const
+ {
+ IF_SEND_MESSAGE( ReceivingMessages(any_or_non_param) )
+ // macro includes "return #receivers"
+ }
+
+ int ComplementaryInterface::QueryingQueries(int another_param) const
+ {
+ IF_SEND_QUERY( AnsweringQuery(another_param), (int)"default return value" )
+ }
+
+
+ Even shorter:
+
+ IF_IMPL_SENDER( ComplementaryInterface::QueryingQueries(int param),
+ AnsweringQueries(param)
+ )
+
+ IF_IMPL_QUERY( int ComplementaryInterface::SendingMessages(int param),
+ ReceivingMessages(param),
+ (int)"default return value"
+ )
+
+/////////////////////////////////////////////////////////////////////////////
+
+ How do I use it ? - Disconnect/Connect notifications
+
+
+ Usually the virtual methods notifyDisconnect(ed) or notifyConnect(ed)
+ will be called within connect/disconnect methods.
+
+ As constructors and destructors are not able to call virtual methods
+ of derived classes, there are two possible problems:
+
+ * Constructors: Calling a connect method in a constructor will not result
+ in a connect notification of any derived class. Thus do not use connect
+ calls in contructors if any derived class hast to receive all
+ connect/disconnect notifications.
+
+ * Destructors: If connections are still present if the interface destructor
+ is called, it will only call its own empty noticedisconnect method. That
+ shouldn't be a big problem as the derived class is already gone and
+ doesn't have any interest in this notification any more. But it might be
+ possible that the connected object wants to call a function of the just
+ destroyed derived class. That is not possible. Dynamic casts to the
+ derived class will return NULL. Do not try to call methods of this class
+ by use of cached pointers.
+
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+ Extending and Aggregating Interfaces
+
+ Our interfaces must be extended by aggregation. The reason is that
+ otherwise we would have the same problems as with a common base class
+ for connection management. Each interface extensions is an normal
+ interface on its own.
+
+ Example:
+
+ class I_AM_FM_Radio : public IRadioBase,
+ public IRadioFrequencyExtension,
+ public IRadioSeekExtension
+ {
+ ...
+ };
+
+ To guarantee, that connection management continues to work, we have to overwrite
+ the connect and disconnect methods:
+
+ virtual bool I_AM_FM_Radio::connect (Interface *i) {
+ IRadioBase::connect(i);
+ IFrequencyExtension::connect(i);
+ ISeekExtension::connect(i);
+ }
+
+ virtual bool I_AM_FM_Radio::disconnect (Interface *i) {
+ IRadioBase::disconnect(i);
+ IFrequencyExtension::disconnect(i);
+ ISeekExtension::disconnect(i);
+ }
+
+*/
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+// a polymorphic and *virtual* base class so that we can make use of
+// dynamic_casts in connect/disconnect and to be able to merge
+// connect/disconnect methods to one single function in case of multiple
+// inheritance
+
+class Interface
+{
+public:
+ Interface () {}
+ virtual ~Interface() {}
+
+ virtual bool connectI (Interface *) { return false; }
+ virtual bool disconnectI(Interface *) { return false; }
+
+ // "Interface &"-Versions for convienience, not virtual, only "Interface*"
+ // versions have to / may be overwritten in case of multiple inheritance
+ bool connectI (Interface &i) { return connectI (&i); }
+ bool disconnectI(Interface &i) { return disconnectI (&i); }
+};
+
+/////////////////////////////////////////////////////////////////////////////
+
+template <class thisIF, class cmplIF>
+class InterfaceBase : virtual public Interface
+{
+private:
+ typedef InterfaceBase<thisIF, cmplIF> thisClass;
+ typedef InterfaceBase<cmplIF, thisIF> cmplClass;
+
+// friend class cmplClass; // necessary for connects (to keep number of different connect functions low)
+
+public:
+
+ typedef thisIF thisInterface;
+ typedef cmplIF cmplInterface;
+
+ typedef QPtrList<cmplIF> IFList;
+ typedef QPtrListIterator<cmplIF> IFIterator;
+
+ typedef thisClass BaseClass;
+
+public :
+ InterfaceBase (int maxIConnections = -1);
+ virtual ~InterfaceBase ();
+
+ // duplicate connects will add no more entries to connection list
+ virtual bool connectI(Interface *i);
+ virtual bool disconnectI(Interface *i);
+
+protected:
+ virtual void disconnectAllI();
+
+
+public:
+
+ // It might be compfortable to derived Interfaces to get an argument
+ // of the Interface class, but that part of the object might
+ // already be destroyed. Thus it is necessary to evaluate the additional
+ // pointer_valid argument. A null pointer is not transmitted, as the
+ // pointer value might be needed to clean up some references in derived
+ // classes
+ virtual void noticeConnectI (cmplInterface *, bool /*pointer_valid*/) {}
+ virtual void noticeConnectedI (cmplInterface *, bool /*pointer_valid*/) {}
+ virtual void noticeDisconnectI (cmplInterface *, bool /*pointer_valid*/);
+ virtual void noticeDisconnectedI(cmplInterface *, bool /*pointer_valid*/) {}
+
+ virtual bool isIConnectionFree() const;
+ virtual unsigned connectedI() const { return iConnections.count(); }
+
+ thisIF *initThisInterfacePointer();
+ thisIF *getThisInterfacePointer() const { return me; }
+ bool isThisInterfacePointerValid() const { return me_valid; }
+ bool hasConnectionTo(cmplInterface *other) const { return iConnections.containsRef(other); }
+ void appendConnectionTo(cmplInterface *other) { iConnections.append(other); }
+ void removeConnectionTo(cmplInterface *other) { iConnections.removeRef(other); }
+
+protected :
+
+ IFList iConnections;
+ int maxIConnections;
+
+ // functions for individually selectable callbacks
+protected:
+ bool addListener (const cmplInterface *i, QPtrList<cmplInterface> &list);
+ void removeListener(const cmplInterface *i, QPtrList<cmplInterface> &list);
+ void removeListener(const cmplInterface *i);
+
+ QMap<const cmplInterface *, QPtrList<QPtrList<cmplInterface> > > m_FineListeners;
+
+private:
+ thisInterface *me;
+ bool me_valid;
+};
+
+
+// macros for interface declaration
+
+#define INTERFACE(IF, cmplIF) \
+ class IF; \
+ class cmplIF; \
+ class IF : public InterfaceBase<IF, cmplIF> \
+
+#define IF_CON_DESTRUCTOR(IF, n) \
+ IF() : BaseClass((n)) {} \
+ virtual ~IF() { }
+
+// macros to make sending messages or queries easier
+
+
+// debug util
+#ifdef DEBUG
+ #include <iostream>
+ using namespace std;
+ #define IF_QUERY_DEBUG \
+ if (iConnections.count() > 1) { \
+ kdDebug() << "class " << typeid(this).name() << ": using IF_QUERY with #connections > 1\n"; \
+ }
+#else
+ #define IF_QUERY_DEBUG
+#endif
+
+
+
+// messages
+
+#define SENDERS protected
+#define RECEIVERS public
+
+#define IF_SENDER(decl) \
+ virtual int decl const;
+
+#define IF_SEND_MESSAGE(call) \
+ int ____n = 0; \
+ for (IFIterator i(iConnections); i.current(); ++i) { \
+ if (i.current()->call ) ++____n; \
+ } \
+ return ____n;
+
+#define IF_IMPL_SENDER(decl, call) \
+ int decl const \
+ { \
+ IF_SEND_MESSAGE(call) \
+ }
+
+#define IF_RECEIVER(decl) \
+ virtual bool decl = 0;
+
+#define IF_RECEIVER_EMPTY(decl) \
+ virtual bool decl { return false; }
+
+// queries
+
+#define ANSWERS public
+#define QUERIES protected
+
+#define IF_QUERY(decl) \
+ virtual decl const;
+
+#define IF_SEND_QUERY(call, default) \
+ cmplInterface *o = IFIterator(iConnections).current(); \
+ if (o) { \
+ IF_QUERY_DEBUG \
+ return o->call; \
+ } else { \
+ return default; \
+ } \
+
+#define IF_IMPL_QUERY(decl, call, default) \
+ decl const { \
+ IF_SEND_QUERY(call, default) \
+ }
+
+#define IF_ANSWER(decl) \
+ virtual decl = 0;
+
+
+
+
+/////////////////////////////////////////////////////////////////////////////
+// MACROS for individually selectable callbacks
+/////////////////////////////////////////////////////////////////////////////
+
+
+#define IF_SENDER_FINE(name, param) \
+protected: \
+ int name param const; \
+public: \
+ bool register4_##name (cmplInterface *); \
+ void unregister4_##name(cmplInterface *); \
+private: \
+ QPtrList<cmplInterface> m_Listeners_##name;\
+
+
+#define IF_SEND_MESSAGE_FINE(name, params, call) \
+ int ____n = 0; \
+ for (QPtrListIterator<cmplInterface> ____it(m_Listeners_##name); ____it.current(); ++____it) { \
+ if (____it.current()->call ) ++____n; \
+ } \
+ return ____n;
+
+#define IF_IMPL_SENDER_FINE(class, name, param, call) \
+ int class::name param const { \
+ IF_SEND_MESSAGE_FINE(name, param, call) \
+ } \
+ \
+ bool class::register4_##name(cmplInterface *i) { \
+ return addListener(i, m_Listeners_##name); \
+ } \
+ void class::unregister4_##name(cmplInterface *i) { \
+ m_Listeners_##name.remove(i); \
+ }
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+
+template <class thisIF, class cmplIF>
+InterfaceBase<thisIF, cmplIF>::InterfaceBase(int _maxIConnections)
+ : maxIConnections(_maxIConnections),
+ me(NULL),
+ me_valid(false)
+{
+}
+
+
+template <class thisIF, class cmplIF>
+InterfaceBase<thisIF, cmplIF>::~InterfaceBase()
+{
+ me_valid = false;
+ // In this state the derived interfaces may already be destroyed
+ // so that dereferencing cached upcasted me-pointers in noticeDisconnect(ed)
+ // will fail.
+ // Thus we must ensure that disconnectAll() is called in the (upper) thisIF
+ // destructor, not here (see macro IF_CON_DESTRUCTOR).
+ // If this has not taken place (i.e. the programmer forgot to do so)
+ // we can only warn, clear our list now and hope that nothing
+ // more bad will happen
+
+ if (iConnections.count() > 0) {
+ thisClass::disconnectAllI();
+ }
+}
+
+
+template <class thisIF, class cmplIF>
+bool InterfaceBase<thisIF, cmplIF>::isIConnectionFree () const
+{
+ int m = maxIConnections;
+ return (m < 0) || (iConnections.count() < (unsigned) m);
+}
+
+template <class thisIF, class cmplIF>
+thisIF *InterfaceBase<thisIF, cmplIF>::initThisInterfacePointer()
+{
+ if (!me) me = dynamic_cast<thisIF*>(this);
+ me_valid = me != NULL;
+ return me;
+}
+
+template <class thisIF, class cmplIF>
+bool InterfaceBase<thisIF, cmplIF>::connectI (Interface *__i)
+{
+ // cache upcasted pointer, especially important for disconnects
+ // where already destructed derived parts cannot be reached with dynamic casts
+ initThisInterfacePointer();
+
+ // same with the other interface
+ cmplClass *_i = dynamic_cast<cmplClass*>(__i);
+ if (!_i) {
+ return false;
+ }
+
+ cmplIF *i = _i->initThisInterfacePointer();
+
+ if (i && me) {
+ bool i_connected = iConnections.containsRef(i);
+ bool me_connected = i->hasConnectionTo(me);
+
+ if (i_connected || me_connected) {
+ return true;
+ } else if (isIConnectionFree() && i->isIConnectionFree()) {
+
+ noticeConnectI(i, i != NULL);
+ _i->noticeConnectI(me, me != NULL);
+
+ if (!i_connected)
+ appendConnectionTo(i);
+ if (!me_connected)
+ _i->appendConnectionTo(me);
+
+ noticeConnectedI(i, i != NULL);
+ _i->noticeConnectedI(me, me != NULL);
+
+ return true;
+ } else {
+ return false;
+ }
+ }
+ return false;
+}
+
+
+
+template <class thisIF, class cmplIF>
+bool InterfaceBase<thisIF, cmplIF>::disconnectI (Interface *__i)
+{
+ cmplClass *_i = dynamic_cast<cmplClass*>(__i);
+
+ // use cache to find pointer in connections list
+ cmplIF *i = _i ? _i->getThisInterfacePointer() : NULL;
+
+ // The cached me pointer might already point to an destroyed
+ // object. We must use it only for identifying the entry in
+ // connections list
+
+ if (i && _i) {
+ if (me_valid)
+ noticeDisconnectI(i, _i->isThisInterfacePointerValid());
+ }
+
+ if (me && _i) {
+ if (_i->isThisInterfacePointerValid())
+ _i->noticeDisconnectI(me, me_valid);
+ }
+
+ if (i && hasConnectionTo(i)) {
+ removeListener(i);
+ removeConnectionTo(i);
+ }
+
+ if (me && i && i->hasConnectionTo(me))
+ i->removeConnectionTo(me);
+
+ if (me_valid && i && _i)
+ noticeDisconnectedI(i, _i->isThisInterfacePointerValid());
+ if (_i && _i->isThisInterfacePointerValid() && me)
+ _i->noticeDisconnectedI(me, me_valid);
+
+ return true;
+}
+
+
+template <class thisIF, class cmplIF>
+void InterfaceBase<thisIF, cmplIF>::noticeDisconnectI(cmplInterface *i, bool /*pointer_valid*/)
+{
+ removeListener(i);
+}
+
+
+template <class thisIF, class cmplIF>
+void InterfaceBase<thisIF, cmplIF>::disconnectAllI()
+{
+ IFList tmp = iConnections;
+ for (IFIterator it(tmp); it.current(); ++it) {
+ /* Do not call virtual methods if I'm in the contstructor!
+ Actually this should be ensured by the compiler generated
+ code and virtual method tables, but unfortunately some compilers
+ seem to ignore this in some situations.
+ */
+ if (me_valid)
+ disconnectI(it.current());
+ else
+ thisClass::disconnectI(it.current());
+ }
+}
+
+
+
+
+template <class thisIF, class cmplIF>
+bool InterfaceBase<thisIF, cmplIF>::addListener(const cmplInterface *i, QPtrList<cmplInterface> &list)
+{
+ if (iConnections.containsRef(i) && !list.contains(i)) {
+ list.append(i);
+ m_FineListeners[i].append(&list);
+ return true;
+ } else {
+ return false;
+ }
+}
+
+
+template <class thisIF, class cmplIF>
+void InterfaceBase<thisIF, cmplIF>::removeListener(const cmplInterface *i, QPtrList<cmplInterface> &list)
+{
+ list.remove(i);
+ if (m_FineListeners.contains(i))
+ m_FineListeners[i].remove(&list);
+}
+
+
+template <class thisIF, class cmplIF>
+void InterfaceBase<thisIF, cmplIF>::removeListener(const cmplInterface *i)
+{
+ if (m_FineListeners.contains(i)) {
+ QPtrList<QPtrList<cmplInterface> > &list = m_FineListeners[i];
+ QPtrListIterator<QPtrList<cmplInterface> > it(list);
+ for (; it.current(); ++it) {
+ (*it)->remove(i);
+ }
+ }
+ m_FineListeners.remove(i);
+}
+
+
+
+
+
+
+
+#endif
diff --git a/kradio3/src/include/internetradiostation.h b/kradio3/src/include/internetradiostation.h
new file mode 100644
index 0000000..fa25159
--- /dev/null
+++ b/kradio3/src/include/internetradiostation.h
@@ -0,0 +1,75 @@
+/***************************************************************************
+ internetradiostation.h - description
+ -------------------
+ begin : Sat March 29 2003
+ copyright : (C) 2003 by Klas Kalass, Ernst Martin Witte
+ email : klas@kde.org, witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_INTERNETRADIOSTATION_H
+#define KRADIO_INTERNETRADIOSTATION_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "radiostation.h"
+
+// KDE includes
+#include <kurl.h>
+
+/**
+ * @author Klas Kalass, Ernst Martin Witte
+ */
+
+class InternetRadioStation : public RadioStation {
+public:
+ InternetRadioStation();
+ InternetRadioStation(KURL const &url);
+ InternetRadioStation(const QString &name, const QString &shortName, KURL const &url);
+ InternetRadioStation(const InternetRadioStation &);
+ InternetRadioStation(RegisterStationClass, const QString &classname = QString::null);
+ ~InternetRadioStation();
+
+ const KURL & url() const { return m_url; }
+ void setUrl(KURL const &url) { m_url = url; }
+
+ virtual QString longName() const;
+ virtual QString description() const;
+ virtual bool isValid () const;
+
+ /* = 0 : this.url == s.url
+ > 0 : this.url > s.url
+ < 0 : this.url < s.url
+ other class than InternetRadioStation: compare typeid(.).name()
+ */
+ virtual int compare (const RadioStation &s) const;
+
+ /** returns an exact copy of this station */
+ virtual RadioStation *copy() const;
+ virtual RadioStation *copyNewID() const;
+
+ virtual RadioStationConfig *createEditor() const;
+
+ // for XML-Parsing/Export
+ virtual bool setProperty(const QString &property_name, const QString &val);
+ virtual QString getProperty(const QString &property_name) const;
+ virtual QStringList getPropertyNames() const;
+ virtual QString getClassName() const { return "InternetRadioStation"; }
+
+ virtual bool operator == (const RadioStation &x) const;
+
+protected:
+ KURL m_url;
+};
+
+#endif
diff --git a/kradio3/src/include/kradioapp.h b/kradio3/src/include/kradioapp.h
new file mode 100644
index 0000000..f5fb950
--- /dev/null
+++ b/kradio3/src/include/kradioapp.h
@@ -0,0 +1,120 @@
+/***************************************************************************
+ kradioapp.h - description
+ -------------------
+ begin : Sa Feb 9 2002
+ copyright : (C) 2002 by Klas Kalass / Martin Witte / Frank Schwanz
+ email : klas.kalass@gmx.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_KRADIOAPP_H
+#define KRADIO_KRADIOAPP_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qdict.h>
+
+#include <kapplication.h>
+#include <kaboutapplication.h>
+#include "pluginmanager.h"
+#include "plugins.h"
+
+class KLibrary;
+
+class KRadioAbout : public PluginBase
+{
+public:
+ KRadioAbout(const QString &name) : PluginBase(name, "KRadio Application") {}
+
+ virtual QString pluginClassName() const { return "KRadioAbout"; }
+
+ virtual ConfigPageInfo createConfigurationPage () { return ConfigPageInfo(); }
+ virtual AboutPageInfo createAboutPage ();
+
+ virtual void saveState (KConfig *) const {}
+ virtual void restoreState (KConfig *) {}
+};
+
+
+
+
+typedef PluginBase *(*t_kradio_plugin_init_func)(const QString & cls, const QString &obj);
+typedef void (*t_kradio_plugin_info_func)(QMap<QString, QString> &);
+typedef void (*t_kradio_plugin_libload_func)();
+typedef void (*t_kradio_plugin_libunload_func)();
+
+
+struct PluginLibraryInfo {
+ KLibrary *library;
+ QMap<QString,QString> plugins;
+ t_kradio_plugin_init_func init_func;
+ t_kradio_plugin_info_func info_func;
+ t_kradio_plugin_libload_func libload_func;
+ t_kradio_plugin_libunload_func libunload_func;
+
+ PluginLibraryInfo() : library(NULL), init_func(NULL), info_func(NULL), libload_func(NULL), libunload_func(NULL) {}
+ PluginLibraryInfo(const QString &libname);
+ bool valid() { return init_func && info_func && library && libload_func && libunload_func; }
+};
+
+
+struct PluginClassInfo {
+ QString class_name;
+ QString description;
+ t_kradio_plugin_init_func create_function;
+
+ PluginClassInfo() : create_function(NULL) {}
+ PluginClassInfo(const QString &_name, const QString &descr, t_kradio_plugin_init_func init_func)
+ : class_name(_name), description(descr), create_function(init_func) {}
+ PluginBase *CreateInstance(const QString &obj_name) { return create_function ? create_function(class_name, obj_name) : NULL; }
+};
+
+
+class KRadioApp : public KApplication
+{
+Q_OBJECT
+public:
+ KRadioApp();
+ virtual ~KRadioApp();
+
+ virtual void saveState (KConfig *c);
+ virtual void restoreState (KConfig *c);
+
+ virtual PluginManager *createNewInstance(const QString &name);
+
+ virtual KLibrary *LoadLibrary (const QString &library);
+ virtual void UnloadLibrary (const QString &library);
+ virtual PluginBase *CreatePlugin (PluginManager *manager, const QString &name, const QString &object_name);
+
+ virtual const QMap<QString, PluginLibraryInfo> &getPluginLibraries() const { return m_PluginLibraries; }
+ virtual const QMap<QString, PluginClassInfo> &getPluginClasses() const { return m_PluginInfos; }
+
+ virtual void startPlugins();
+
+protected slots:
+
+ virtual void saveState();
+ virtual void slotAboutToQuit();
+
+protected:
+
+ QDict<PluginManager> m_Instances;
+
+ QMap<QString, PluginLibraryInfo> m_PluginLibraries;
+ QMap<QString, PluginClassInfo> m_PluginInfos;
+
+ bool m_quitting;
+};
+
+
+#endif
diff --git a/kradio3/src/include/kradioversion.h b/kradio3/src/include/kradioversion.h
new file mode 100644
index 0000000..cdde36f
--- /dev/null
+++ b/kradio3/src/include/kradioversion.h
@@ -0,0 +1,23 @@
+/***************************************************************************
+ kradioversion.h - description
+ -------------------
+ begin : Su May 22 2005
+ copyright : (C) 2005 by Marcus Camen
+ email : mcamen@mcamen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_VERSION_H
+#define KRADIO_VERSION "snapshot-2006-11-12-r497"
+
+#define KRADIO_VERSION "snapshot-2006-11-12-r497"
+
+#endif
diff --git a/kradio3/src/include/multibuffer.h b/kradio3/src/include/multibuffer.h
new file mode 100644
index 0000000..e835465
--- /dev/null
+++ b/kradio3/src/include/multibuffer.h
@@ -0,0 +1,65 @@
+/***************************************************************************
+ multibuffer.h
+ -------------------
+ begin : Sat Aug 20 2005
+ copyright : (C) 2005 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_MULTIBUFFER_H
+#define KRADIO_MULTIBUFFER_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qsemaphore.h>
+#include <qstring.h>
+
+class MultiBuffer
+{
+public:
+ MultiBuffer(size_t n_buffers, size_t buffersize);
+ ~MultiBuffer();
+
+ char *lockWriteBuffer (size_t &bufferSize);
+ bool unlockWriteBuffer (size_t bufferSize); // return value: complete buffer full / ready for read
+ void unlockAllWriteBuffers();
+ char *wait4ReadBuffer (size_t &buffer_fill);
+ char *getCurrentReadBuffer(size_t &buffer_fill) const;
+
+ const QString &getErrorString() const { return m_errorString; }
+ bool hasError() const { return m_error; }
+ void resetError();
+
+ size_t getWriteBufferFill() const { return (m_currentReadBuffer != m_currentWriteBuffer) ? m_buffersFill[m_currentWriteBuffer] : 0; }
+ size_t getAvailableWriteBuffer() const;
+ size_t getAvailableReadBuffers() const;
+ size_t getCurrentReadBufferIdx() const { return m_currentReadBuffer; }
+ size_t getCurrentWriteBufferIdx() const { return m_currentWriteBuffer; }
+
+protected:
+
+ size_t m_nBuffers;
+ size_t m_BufferSize;
+
+ char **m_buffers;
+ size_t *m_buffersFill;
+ size_t m_currentReadBuffer;
+ size_t m_currentWriteBuffer;
+ QSemaphore m_readLock;
+
+ QString m_errorString;
+ bool m_error;
+};
+
+#endif
diff --git a/kradio3/src/include/plugin_configuration_dialog.h b/kradio3/src/include/plugin_configuration_dialog.h
new file mode 100644
index 0000000..d315a88
--- /dev/null
+++ b/kradio3/src/include/plugin_configuration_dialog.h
@@ -0,0 +1,74 @@
+/***************************************************************************
+ plugin_configuration_dialog.h - description
+ -------------------
+ begin : Sam Jun 21 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+#ifndef KRADIO_PLUGIN_CONFIGURATION_DIALOG
+#define KRADIO_PLUGIN_CONFIGURATION_DIALOG
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <kdialogbase.h>
+#include "widgetplugins.h"
+
+class PluginConfigurationDialog : public KDialogBase,
+ public WidgetPluginBase
+{
+
+Q_OBJECT
+
+public:
+ PluginConfigurationDialog(
+ int dialogFace, const QString &caption,
+ int buttonMask, ButtonCode defaultButton,
+ QWidget *parent=0, const char *name=0,
+ bool modal=true, bool separator=false);
+
+ // PluginBase
+
+ virtual QString pluginClassName() const { return "PluginConfigurationDialog"; }
+
+ virtual void saveState (KConfig *) const;
+ virtual void restoreState (KConfig *);
+
+protected :
+
+ virtual ConfigPageInfo createConfigurationPage();
+ virtual AboutPageInfo createAboutPage();
+
+ // WidgetPluginBase
+
+public slots:
+ void toggleShown() { WidgetPluginBase::pToggleShown(); }
+ virtual void showOnOrgDesktop();
+ virtual void show();
+ virtual void hide();
+ virtual void cancel() { slotCancel(); }
+
+ // QWidget overrides
+
+protected:
+ virtual void showEvent(QShowEvent *);
+ virtual void hideEvent(QHideEvent *);
+
+ virtual QWidget *getWidget() { return this; }
+ virtual const QWidget *getWidget() const { return this; }
+
+ QString m_Caption;
+};
+
+
+#endif
diff --git a/kradio3/src/include/pluginmanager-configuration.h b/kradio3/src/include/pluginmanager-configuration.h
new file mode 100644
index 0000000..5cd8d5f
--- /dev/null
+++ b/kradio3/src/include/pluginmanager-configuration.h
@@ -0,0 +1,60 @@
+/***************************************************************************
+ pluginmanager-configuration.h - description
+ -------------------
+ begin : Thu Sep 30 2004
+ copyright : (C) 2004 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_PLUGINMANAGER_CONFIGURATION_H
+#define KRADIO_PLUGINMANAGER_CONFIGURATION_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <pluginmanager-configuration-ui.h>
+
+class QWidget;
+class KRadioApp;
+class PluginManager;
+
+class PluginManagerConfiguration : public PluginManagerConfigurationUI
+{
+Q_OBJECT
+public :
+ PluginManagerConfiguration (QWidget *parent, KRadioApp *app, PluginManager *pm);
+ ~PluginManagerConfiguration ();
+
+ void noticePluginLibrariesChanged();
+ void noticePluginsChanged();
+
+protected slots:
+
+ void slotOK();
+ void slotCancel();
+
+ void slotAddLibrary();
+ void slotRemoveLibrary();
+ void slotNewPluginInstance();
+ void slotRemovePluginInstance();
+ void slotSetDirty();
+
+protected:
+
+ KRadioApp *m_Application;
+ PluginManager *m_PluginManager;
+ bool m_dirty;
+
+};
+
+#endif
diff --git a/kradio3/src/include/pluginmanager.h b/kradio3/src/include/pluginmanager.h
new file mode 100644
index 0000000..b52c8f2
--- /dev/null
+++ b/kradio3/src/include/pluginmanager.h
@@ -0,0 +1,147 @@
+/***************************************************************************
+ pluginmanager.h - description
+ -------------------
+ begin : Mon Apr 28 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_PLUGINMANAGER_INTERFACES_H
+#define KRADIO_PLUGINMANAGER_INTERFACES_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qstring.h>
+#include <qptrdict.h>
+
+#include "plugins.h"
+
+class PluginBase;
+class WidgetPluginBase;
+class PluginConfigurationDialog;
+class PluginManagerConfiguration;
+class QWidget;
+class KConfig;
+class QFrame;
+class KAboutDialog;
+class KDialogBase;
+
+struct ConfigPageInfo;
+class QMenuData;
+class KRadioApp;
+
+
+class PluginManager : public QObject
+{
+Q_OBJECT
+public :
+ PluginManager(const QString &name,
+ KRadioApp *app,
+ const QString &configDialogTitle,
+ const QString &aboutTitle);
+ virtual ~PluginManager();
+
+ // Library Functions
+
+ void noticeLibrariesChanged();
+ void unloadPlugins(const QString &class_name);
+
+ // managing plugins
+
+ const PluginList &plugins() const { return m_plugins; }
+ void addWidgetPluginMenuItems(QMenuData *menu, QMap<WidgetPluginBase *,int> &map) const;
+ void updateWidgetPluginMenuItem(WidgetPluginBase *p, QMenuData *menu, QMap<WidgetPluginBase *,int> &map, bool shown) const;
+
+ PluginBase *getPluginByName(const QString &name) const;
+
+ // after insert, pluginManager is responsible for deletion
+ void insertPlugin(PluginBase *);
+
+ // remove and delete plugin
+ void deletePlugin(PluginBase *);
+ void deletePluginByName(const QString &name) { deletePlugin(getPluginByName(name)); }
+
+ // remove plugin, afterwards pluginManager is no longer responsible for deletion
+ void removePlugin(PluginBase *);
+ void removePluginByName(const QString &name) { removePlugin(getPluginByName(name)); }
+
+ // operations on all plugins
+
+ virtual void saveState (KConfig *) const;
+ virtual void restoreState (KConfig *);
+ virtual void startPlugins();
+
+ // configuration dialog handling
+
+ virtual PluginConfigurationDialog *getConfigDialog();
+ virtual KDialogBase *getAboutDialog();
+ virtual bool showsProgressBar() const { return m_showProgressBar; }
+ virtual void showProgressBar(bool b) { m_showProgressBar = b; }
+
+ virtual void noticeWidgetPluginShown(WidgetPluginBase *p, bool shown);
+
+protected :
+ virtual void createConfigDialog(const QString &title = QString::null);
+ virtual void createAboutDialog (const QString &title = QString::null);
+
+ virtual void addConfigurationPage (PluginBase *forWhom,
+ const ConfigPageInfo &info);
+ virtual void addAboutPage (PluginBase *forWhom,
+ const AboutPageInfo &info);
+
+protected slots:
+
+ virtual void slotConfigOK();
+
+public slots:
+ virtual void aboutToQuit();
+
+signals:
+
+ virtual void sigConfigOK();
+
+private:
+ virtual QFrame *addConfigurationPage (const ConfigPageInfo &info);
+ ConfigPageInfo createOwnConfigurationPage();
+
+ // PluginManager's data & types ;)
+protected:
+ typedef QPtrDict<QFrame> QFrameDict;
+ typedef QPtrDictIterator<QFrame> QFrameDictIterator;
+ typedef QPtrDict<QWidget> QWidgetDict;
+ typedef QPtrDictIterator<QWidget> QWidgetDictIterator;
+
+ QString m_Name;
+ KRadioApp *m_Application;
+
+ PluginList m_plugins;
+ bool m_showProgressBar;
+
+ QFrameDict m_configPageFrames;
+ QWidgetDict m_configPages;
+
+ QFrameDict m_aboutPageFrames;
+ QWidgetDict m_aboutPages;
+
+ PluginConfigurationDialog *m_configDialog;
+ PluginManagerConfiguration*m_pluginManagerConfiguration;
+ KDialogBase *m_aboutDialog;
+ QString m_configDialogTitle;
+ QString m_aboutDialogTitle;
+};
+
+
+
+
+#endif
diff --git a/kradio3/src/include/plugins.h b/kradio3/src/include/plugins.h
new file mode 100644
index 0000000..8040437
--- /dev/null
+++ b/kradio3/src/include/plugins.h
@@ -0,0 +1,192 @@
+/***************************************************************************
+ plugins.h - description
+ -------------------
+ begin : Mon Mr 10 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef KRADIO_PLUGINS_INTERFACES_H
+#define KRADIO_PLUGINS_INTERFACES_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <kglobal.h>
+
+#include "errorlog-interfaces.h"
+#include <qstring.h>
+#include <qobject.h>
+#include <qptrlist.h>
+
+class PluginManager;
+class PluginBase;
+class QWidget;
+class KConfig;
+
+typedef QPtrList<PluginBase> PluginList;
+typedef QPtrListIterator<PluginBase> PluginIterator;
+
+/* PluginBase must be inherited from Interface so that a plugin can be used
+ in Interface::connect functions.
+
+ PluginBase must not be inherited from QObject, because derived classes may
+ be inherited e.g. from QWidget (multiple inheritance is not possible with
+ OBjects). But we must be able to receive destroy messages e.g. from
+ configuration pages. Thus we need the special callback member
+ m_destroyNotifier.
+
+ PluginBase is derived from Interface to provide connection facilities.
+ In case of multiple inheritance from interface classes, connect and disconnect
+ methods have to be reimplemented in order to call all inherited
+ connect/disconnect methods.
+
+*/
+
+
+class WidgetPluginBase;
+
+struct ConfigPageInfo
+{
+ ConfigPageInfo () : page(NULL) {}
+ ConfigPageInfo (QWidget *p,
+ const QString &in,
+ const QString &ph,
+ const QString &icon)
+ : page (p),
+ itemName(in),
+ pageHeader(ph),
+ iconName(icon)
+ {}
+
+ QWidget *page;
+ QString itemName,
+ pageHeader,
+ iconName;
+};
+
+typedef ConfigPageInfo AboutPageInfo;
+
+
+class PluginBase : public IErrorLogClient
+{
+friend class PluginManager;
+public :
+ PluginBase(const QString &name, const QString &description);
+ virtual ~PluginBase();
+
+ virtual QString pluginClassName() const = 0;
+
+ const QString &name() const { return m_name; }
+ QString &name() { return m_name; }
+
+ const QString &description() const { return m_description; }
+
+ // workaround for compiler bugs
+ bool destructorCalled() const { return m_destructorCalled; }
+
+ // interaction with pluginmanager
+protected:
+ bool setManager (PluginManager *);
+ void unsetManager ();
+ bool isManagerSet () const;
+
+public:
+
+ // these two methods will request a configuration page or
+ // plugin page from plugin manager
+ // they will be deleted automatically when this plugin
+ // is deleted, because we disconnect from pluginmanager
+ // and the plugin manager will delete all associated gui elements
+ virtual ConfigPageInfo createConfigurationPage () = 0;
+ virtual AboutPageInfo createAboutPage () = 0;
+
+ // save/restore status, window position, etc...
+
+ virtual void saveState (KConfig *) const = 0;
+ virtual void restoreState (KConfig *) = 0;
+ virtual void startPlugin();
+
+ virtual void aboutToQuit();
+
+ //
+
+ virtual void noticeWidgetPluginShown(WidgetPluginBase *, bool /*shown*/) {}
+ virtual void noticePluginsChanged(const PluginList &) {}
+
+protected :
+ QString m_name;
+ QString m_description;
+ PluginManager *m_manager;
+ bool m_destructorCalled;
+};
+
+
+#define PLUGIN_LIBRARY_FUNCTIONS(class_name, i18nName, description) \
+extern "C" void KRadioPlugin_LoadLibrary() \
+{ \
+ KGlobal::locale()->insertCatalogue(i18nName); \
+} \
+ \
+extern "C" void KRadioPlugin_UnloadLibrary() \
+{ \
+ KGlobal::locale()->removeCatalogue(i18nName); \
+} \
+ \
+extern "C" void KRadioPlugin_GetAvailablePlugins(QMap<QString, QString> &info) \
+{ \
+ info.insert(#class_name, (description)); \
+} \
+ \
+extern "C" PluginBase *KRadioPlugin_CreatePlugin(const QString &type, const QString &object_name) \
+{ \
+ if (type == #class_name) { \
+ return new class_name(object_name); \
+ } else { \
+ return NULL; \
+ } \
+}
+
+
+#define PLUGIN_LIBRARY_FUNCTIONS2(class_name1, i18nName, description1, class_name2, description2) \
+extern "C" void KRadioPlugin_LoadLibrary() \
+{ \
+ KGlobal::locale()->insertCatalogue(i18nName); \
+} \
+ \
+extern "C" void KRadioPlugin_UnloadLibrary() \
+{ \
+ KGlobal::locale()->removeCatalogue(i18nName); \
+} \
+ \
+extern "C" void KRadioPlugin_GetAvailablePlugins(QMap<QString, QString> &info) \
+{ \
+ info.insert(#class_name1, (description1)); \
+ info.insert(#class_name2, (description2)); \
+} \
+ \
+extern "C" PluginBase *KRadioPlugin_CreatePlugin(const QString &type, const QString &object_name) \
+{ \
+ if (type == #class_name1) { \
+ return new class_name1(object_name); \
+ } else if (type == #class_name2) { \
+ return new class_name2(object_name); \
+ } else { \
+ return NULL; \
+ } \
+}
+
+
+#endif
diff --git a/kradio3/src/include/radio_interfaces.h b/kradio3/src/include/radio_interfaces.h
new file mode 100644
index 0000000..12a9037
--- /dev/null
+++ b/kradio3/src/include/radio_interfaces.h
@@ -0,0 +1,117 @@
+/***************************************************************************
+ radio_interfaces.h - description
+ -------------------
+ begin : Mon Mr 10 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * Interfaces in this header: *
+ * *
+ * IRadio(Client) *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_RADIO_INTERFACES_H
+#define KRADIO_RADIO_INTERFACES_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "interfaces.h"
+#include "soundstreamid.h"
+
+class RadioStation;
+class StationList;
+
+
+///////////////////////////////////////////////////////////////////////
+
+
+INTERFACE(IRadio, IRadioClient)
+{
+public :
+ IF_CON_DESTRUCTOR(IRadio, -1)
+
+RECEIVERS:
+ IF_RECEIVER( powerOn() )
+ IF_RECEIVER( powerOff() )
+ IF_RECEIVER( activateStation(const RadioStation &rs) )
+ IF_RECEIVER( activateStation(int index) )
+ IF_RECEIVER( setStations(const StationList &sl) )
+ IF_RECEIVER( setPresetFile(const QString &f) )
+
+SENDERS:
+ IF_SENDER ( notifyPowerChanged(bool on) )
+ IF_SENDER ( notifyStationChanged (const RadioStation &, int idx) )
+ IF_SENDER ( notifyStationsChanged(const StationList &sl) )
+ IF_SENDER ( notifyPresetFileChanged(const QString &sl) )
+ IF_SENDER ( notifyCurrentSoundStreamIDChanged(SoundStreamID id) )
+
+ANSWERS:
+ IF_ANSWER ( bool isPowerOn() const )
+ IF_ANSWER ( bool isPowerOff() const )
+ IF_ANSWER ( const RadioStation & getCurrentStation() const )
+ IF_ANSWER ( int getStationIdx(const RadioStation &rs) const )
+ IF_ANSWER ( int getCurrentStationIdx() const )
+ IF_ANSWER ( const StationList & getStations() const )
+ IF_ANSWER ( const QString & getPresetFile() const );
+
+ IF_ANSWER ( SoundStreamID getCurrentSoundStreamID() const );
+
+};
+
+
+INTERFACE(IRadioClient, IRadio)
+{
+friend class IRadio;
+
+public :
+ IF_CON_DESTRUCTOR(IRadioClient, 1)
+
+SENDERS:
+ IF_SENDER ( sendPowerOn() )
+ IF_SENDER ( sendPowerOff() )
+ IF_SENDER ( sendActivateStation(const RadioStation &rs) )
+ IF_SENDER ( sendActivateStation(int index) )
+ IF_SENDER ( sendStations(const StationList &sl) )
+ IF_SENDER ( sendPresetFile(const QString &f) )
+
+RECEIVERS:
+ IF_RECEIVER( noticePowerChanged(bool on) )
+ IF_RECEIVER( noticeStationChanged (const RadioStation &, int idx) )
+ IF_RECEIVER( noticeStationsChanged(const StationList &sl) )
+ IF_RECEIVER( noticePresetFileChanged(const QString &f) )
+ IF_RECEIVER( noticeCurrentSoundStreamIDChanged(SoundStreamID id))
+
+QUERIES:
+ IF_QUERY ( bool queryIsPowerOn() )
+ IF_QUERY ( bool queryIsPowerOff() )
+ IF_QUERY ( const RadioStation & queryCurrentStation() )
+ IF_QUERY ( int queryStationIdx(const RadioStation &rs) )
+ IF_QUERY ( int queryCurrentStationIdx() )
+ IF_QUERY ( const StationList & queryStations() )
+ IF_QUERY ( const QString & queryPresetFile() )
+
+ IF_QUERY ( SoundStreamID queryCurrentSoundStreamID() );
+
+RECEIVERS:
+ virtual void noticeConnectedI (cmplInterface *, bool pointer_valid);
+ virtual void noticeDisconnectedI (cmplInterface *, bool pointer_valid);
+};
+
+
+
+#endif
diff --git a/kradio3/src/include/radiodevice_interfaces.h b/kradio3/src/include/radiodevice_interfaces.h
new file mode 100644
index 0000000..53b975e
--- /dev/null
+++ b/kradio3/src/include/radiodevice_interfaces.h
@@ -0,0 +1,353 @@
+/***************************************************************************
+ radiodevice_interfaces.h - description
+ -------------------
+ begin : Fre Apr 18 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * Interfaces in this header: *
+ * *
+ * IRadioDevice(Client) *
+ * IRadioSound(Client) *
+ * ISeekRadio(Client) *
+ * IFrequencyRadio(Client) *
+ * IInternetRadio(Client) *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_RADIODEVICE_INTERFACES_H
+#define KRADIO_RADIODEVICE_INTERFACES_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "soundstreamid.h"
+#include "interfaces.h"
+
+class RadioStation;
+class KURL;
+
+INTERFACE(IRadioDevice, IRadioDeviceClient)
+{
+public:
+ IF_CON_DESTRUCTOR(IRadioDevice, -1)
+
+RECEIVERS:
+ IF_RECEIVER( setPower(bool on) )
+ IF_RECEIVER( powerOn() )
+ IF_RECEIVER( powerOff() )
+ IF_RECEIVER( activateStation(const RadioStation &rs) )
+
+SENDERS:
+ IF_SENDER ( notifyPowerChanged(bool on) )
+ IF_SENDER ( notifyStationChanged (const RadioStation &) )
+ IF_SENDER ( notifyDescriptionChanged (const QString &) )
+ IF_SENDER ( notifyCurrentSoundStreamIDChanged(SoundStreamID id))
+
+ANSWERS:
+ IF_ANSWER ( bool isPowerOn() const );
+ IF_ANSWER ( bool isPowerOff() const );
+ IF_ANSWER ( const RadioStation & getCurrentStation() const );
+ IF_ANSWER ( const QString & getDescription() const );
+
+ IF_ANSWER ( SoundStreamID getCurrentSoundStreamID() const );
+};
+
+
+
+INTERFACE(IRadioDeviceClient, IRadioDevice)
+{
+public :
+ IF_CON_DESTRUCTOR(IRadioDeviceClient, 1);
+ IRadioDeviceClient(int _maxConnections) : IRadioDeviceClient::BaseClass(_maxConnections) {}
+
+SENDERS:
+ IF_SENDER ( sendPower(bool on) )
+ IF_SENDER ( sendPowerOn() )
+ IF_SENDER ( sendPowerOff() )
+ IF_SENDER ( sendActivateStation (const RadioStation &rs) )
+
+RECEIVERS:
+ IF_RECEIVER( noticePowerChanged (bool on, const IRadioDevice *sender = NULL) )
+ IF_RECEIVER( noticeStationChanged (const RadioStation &, const IRadioDevice *sender = NULL) )
+ IF_RECEIVER( noticeDescriptionChanged (const QString &, const IRadioDevice *sender = NULL) )
+ IF_RECEIVER( noticeCurrentSoundStreamIDChanged(SoundStreamID id, const IRadioDevice *sender = NULL))
+
+QUERIES:
+ IF_QUERY ( bool queryIsPowerOn() )
+ IF_QUERY ( bool queryIsPowerOff() )
+ IF_QUERY ( const RadioStation & queryCurrentStation() )
+ IF_QUERY ( const QString & queryDescription() )
+
+ IF_QUERY ( SoundStreamID queryCurrentSoundStreamID() )
+
+RECEIVERS:
+ virtual void noticeConnectedI (cmplInterface *, bool pointer_valid);
+ virtual void noticeDisconnectedI (cmplInterface *, bool pointer_valid);
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+// deprecated, use IRadioSoundStreamClient
+/*
+INTERFACE(IRadioSound, IRadioSoundClient)
+{
+public :
+ IF_CON_DESTRUCTOR(IRadioSound, -1)
+
+RECEIVERS:
+ IF_RECEIVER( setVolume (float v) )
+ IF_RECEIVER( setTreble (float v) )
+ IF_RECEIVER( setBass (float v) )
+ IF_RECEIVER( setBalance (float v) )
+ IF_RECEIVER( mute (bool mute) )
+ IF_RECEIVER( unmute (bool unmute) )
+ IF_RECEIVER( setSignalMinQuality(float q) )
+ IF_RECEIVER( setStereo(bool s) )
+
+SENDERS:
+ IF_SENDER ( notifyVolumeChanged(float v) )
+ IF_SENDER ( notifyTrebleChanged(float v) )
+ IF_SENDER ( notifyBassChanged(float v) )
+ IF_SENDER ( notifyBalanceChanged(float v) )
+ IF_SENDER ( notifyMuted(bool m) )
+ IF_SENDER ( notifySignalQualityChanged(float q) )
+ IF_SENDER ( notifySignalQualityBoolChanged(bool good) )
+ IF_SENDER ( notifySignalMinQualityChanged(float q) )
+ IF_SENDER ( notifyStereoChanged(bool s) )
+
+ANSWERS:
+ IF_ANSWER ( float getVolume() const )
+ IF_ANSWER ( float getTreble() const )
+ IF_ANSWER ( float getBass () const )
+ IF_ANSWER ( float getBalance () const )
+ IF_ANSWER ( bool isMuted() const )
+ IF_ANSWER ( float getSignalQuality() const )
+ IF_ANSWER ( float getSignalMinQuality() const )
+ IF_ANSWER ( bool hasGoodQuality() const )
+ IF_ANSWER ( bool isStereo() const )
+};
+
+
+INTERFACE(IRadioSoundClient, IRadioSound)
+{
+public :
+ IF_CON_DESTRUCTOR(IRadioSoundClient, 1)
+
+SENDERS:
+ IF_SENDER ( sendVolume (float v) )
+ IF_SENDER ( sendTreble (float v) )
+ IF_SENDER ( sendBass (float v) )
+ IF_SENDER ( sendBalance (float v) )
+ IF_SENDER ( sendMute (bool mute = true) )
+ IF_SENDER ( sendUnmute (bool unmute = true) )
+ IF_SENDER ( sendSignalMinQuality (float q) )
+ IF_SENDER ( sendStereo(bool s) )
+
+RECEIVERS:
+ IF_RECEIVER( noticeVolumeChanged(float v) )
+ IF_RECEIVER( noticeTrebleChanged(float v) )
+ IF_RECEIVER( noticeBassChanged(float v) )
+ IF_RECEIVER( noticeBalanceChanged(float v) )
+ IF_RECEIVER( noticeSignalQualityChanged(float q) )
+ IF_RECEIVER( noticeSignalQualityChanged(bool good) )
+ IF_RECEIVER( noticeSignalMinQualityChanged(float q) )
+ IF_RECEIVER( noticeStereoChanged(bool s) )
+ IF_RECEIVER( noticeMuted(bool m) )
+
+QUERIES:
+ IF_QUERY ( float queryVolume() )
+ IF_QUERY ( float queryTreble() )
+ IF_QUERY ( float queryBass() )
+ IF_QUERY ( float queryBalance () )
+ IF_QUERY ( float querySignalQuality() )
+ IF_QUERY ( float querySignalMinQuality() )
+ IF_QUERY ( bool queryHasGoodQuality() )
+ IF_QUERY ( bool queryIsStereo() )
+ IF_QUERY ( bool queryIsMuted() )
+
+RECEIVERS:
+ virtual void noticeConnectedI (cmplInterface *, bool pointer_valid);
+ virtual void noticeDisconnectedI (cmplInterface *, bool pointer_valid);
+};
+*/
+
+/////////////////////////////////////////////////////////////////////////////
+INTERFACE(ISeekRadio, ISeekRadioClient)
+{
+ friend class SeekHelper;
+
+public :
+ IF_CON_DESTRUCTOR(ISeekRadio, -1)
+
+RECEIVERS:
+ IF_RECEIVER( toBeginning() )
+ IF_RECEIVER( toEnd() )
+ IF_RECEIVER( startSeek (bool up) )
+ IF_RECEIVER( startSeekUp() )
+ IF_RECEIVER( startSeekDown() )
+ IF_RECEIVER( stopSeek() )
+
+SENDERS:
+ IF_SENDER ( notifySeekStarted (bool up) )
+ IF_SENDER ( notifySeekStopped () )
+ IF_SENDER ( notifySeekFinished (const RadioStation &s, bool goodQuality) )
+ IF_SENDER ( notifyProgress (float f) )
+
+ANSWERS:
+ IF_ANSWER ( bool isSeekRunning() const )
+ IF_ANSWER ( bool isSeekUpRunning() const )
+ IF_ANSWER ( bool isSeekDownRunning() const )
+ IF_ANSWER ( float getProgress () const )
+};
+
+
+INTERFACE(ISeekRadioClient, ISeekRadio)
+{
+public :
+ IF_CON_DESTRUCTOR(ISeekRadioClient, 1)
+
+SENDERS:
+ IF_SENDER ( sendToBeginning() )
+ IF_SENDER ( sendToEnd() )
+ IF_SENDER ( sendStartSeek (bool up) )
+ IF_SENDER ( sendStartSeekUp() )
+ IF_SENDER ( sendStartSeekDown() )
+ IF_SENDER ( sendStopSeek() )
+
+RECEIVERS:
+ IF_RECEIVER( noticeSeekStarted (bool up) )
+ IF_RECEIVER( noticeSeekStopped () )
+ IF_RECEIVER( noticeSeekFinished (const RadioStation &s, bool goodQuality) )
+ IF_RECEIVER( noticeProgress (float f) )
+
+QUERIES:
+ IF_QUERY ( bool queryIsSeekRunning() )
+ IF_QUERY ( bool queryIsSeekUpRunning() )
+ IF_QUERY ( bool queryIsSeekDownRunning() )
+ IF_QUERY ( float queryProgress () )
+
+RECEIVERS:
+ virtual void noticeConnectedI (cmplInterface *, bool pointer_valid);
+ virtual void noticeDisconnectedI (cmplInterface *, bool pointer_valid);
+};
+
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+INTERFACE(IFrequencyRadio, IFrequencyRadioClient)
+{
+public :
+ IF_CON_DESTRUCTOR(IFrequencyRadio, -1)
+
+RECEIVERS:
+ IF_RECEIVER( setFrequency(float f) )
+ IF_RECEIVER( setMinFrequency(float mf) )
+ IF_RECEIVER( setMaxFrequency(float mf) )
+ IF_RECEIVER( setScanStep(float s) )
+
+SENDERS:
+ IF_SENDER ( notifyFrequencyChanged(float f, const RadioStation *s) )
+ IF_SENDER ( notifyMinMaxFrequencyChanged(float min, float max) )
+ IF_SENDER ( notifyDeviceMinMaxFrequencyChanged(float min, float max) )
+ IF_SENDER ( notifyScanStepChanged(float s) )
+
+ANSWERS:
+ IF_ANSWER ( float getFrequency() const )
+ IF_ANSWER ( float getMinFrequency() const )
+ IF_ANSWER ( float getMinDeviceFrequency() const )
+ IF_ANSWER ( float getMaxFrequency() const )
+ IF_ANSWER ( float getMaxDeviceFrequency() const )
+ IF_ANSWER ( float getScanStep() const )
+};
+
+
+INTERFACE(IFrequencyRadioClient, IFrequencyRadio)
+{
+public :
+ IF_CON_DESTRUCTOR(IFrequencyRadioClient, 1)
+
+SENDERS:
+ IF_SENDER ( sendFrequency(float f) )
+ IF_SENDER ( sendMinFrequency(float mf) )
+ IF_SENDER ( sendMaxFrequency(float mf) )
+ IF_SENDER ( sendScanStep(float s) )
+
+RECEIVERS:
+ IF_RECEIVER( noticeFrequencyChanged(float f, const RadioStation *s) )
+ IF_RECEIVER( noticeMinMaxFrequencyChanged(float min, float max) )
+ IF_RECEIVER( noticeDeviceMinMaxFrequencyChanged(float min, float max) )
+ IF_RECEIVER( noticeScanStepChanged(float s) )
+
+QUERIES:
+ IF_QUERY ( float queryFrequency() )
+ IF_QUERY ( float queryMinFrequency() )
+ IF_QUERY ( float queryMinDeviceFrequency() )
+ IF_QUERY ( float queryMaxFrequency() )
+ IF_QUERY ( float queryMaxDeviceFrequency() )
+ IF_QUERY ( float queryScanStep() )
+
+RECEIVERS:
+ virtual void noticeConnectedI (cmplInterface *, bool pointer_valid);
+ virtual void noticeDisconnectedI (cmplInterface *, bool pointer_valid);
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+INTERFACE(IInternetRadio, IInternetRadioClient)
+{
+public :
+ IF_CON_DESTRUCTOR(IInternetRadio, -1)
+
+RECEIVERS:
+ IF_RECEIVER( setURL(const KURL &url) )
+
+SENDERS:
+ IF_SENDER ( notifyURLChanged(const KURL &u) )
+
+ANSWERS:
+ IF_ANSWER ( const KURL & getURL() const )
+};
+
+
+
+
+INTERFACE(IInternetRadioClient, IInternetRadio)
+{
+public :
+ IF_CON_DESTRUCTOR(IInternetRadioClient, 1)
+
+
+SENDERS:
+ IF_SENDER ( sendURL(const KURL &url) )
+
+RECEIVERS:
+ IF_RECEIVER( noticeURLChanged(const KURL &url) )
+
+QUERIES:
+ IF_QUERY ( const KURL &queryURL() )
+
+RECEIVERS:
+ virtual void noticeConnectedI (cmplInterface *, bool pointer_valid);
+ virtual void noticeDisconnectedI (cmplInterface *, bool pointer_valid);
+};
+
+
+
+#endif
+
diff --git a/kradio3/src/include/radiodevicepool_interfaces.h b/kradio3/src/include/radiodevicepool_interfaces.h
new file mode 100644
index 0000000..6c562a8
--- /dev/null
+++ b/kradio3/src/include/radiodevicepool_interfaces.h
@@ -0,0 +1,75 @@
+/***************************************************************************
+ radiodevicepool_interface.h - description
+ -------------------
+ begin : Sam Apr 19 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_RADIODEVICEPOOL_INTERFACES_H
+#define KRADIO_RADIODEVICEPOOL_INTERFACES_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "interfaces.h"
+
+
+class IRadioDevice;
+
+
+INTERFACE(IRadioDevicePool, IRadioDevicePoolClient)
+{
+public:
+ IF_CON_DESTRUCTOR(IRadioDevicePool, -1)
+
+RECEIVERS:
+ IF_RECEIVER( setActiveDevice(IRadioDevice *rd, bool keepPower = true))
+
+SENDERS:
+ IF_SENDER ( notifyActiveDeviceChanged(IRadioDevice *rd) )
+ IF_SENDER ( notifyDevicesChanged(const QPtrList<IRadioDevice> &) )
+ IF_SENDER ( notifyDeviceDescriptionChanged(const QString &) )
+
+ANSWERS:
+ IF_ANSWER ( IRadioDevice * getActiveDevice() const )
+ IF_ANSWER ( const QPtrList<IRadioDevice> & getDevices() const )
+ IF_ANSWER ( const QString & getDeviceDescription() const )
+};
+
+
+INTERFACE(IRadioDevicePoolClient, IRadioDevicePool)
+{
+public:
+ IF_CON_DESTRUCTOR(IRadioDevicePoolClient, -1)
+
+SENDERS:
+ IF_SENDER ( sendActiveDevice(IRadioDevice *rd, bool keepPower = true))
+
+RECEIVERS:
+ IF_RECEIVER( noticeActiveDeviceChanged(IRadioDevice *rd) )
+ IF_RECEIVER( noticeDevicesChanged(const QPtrList<IRadioDevice> &) )
+ IF_RECEIVER( noticeDeviceDescriptionChanged(const QString &) )
+
+QUERIES:
+ IF_QUERY ( IRadioDevice *queryActiveDevice() )
+ IF_QUERY ( const QPtrList<IRadioDevice> &queryDevices() )
+ IF_QUERY ( const QString &queryDeviceDescription() )
+
+RECEIVERS:
+ virtual void noticeConnectedI (cmplInterface *, bool /*pointer_valid*/);
+ virtual void noticeDisconnectedI (cmplInterface *, bool /*pointer_valid*/);
+};
+
+
+#endif
diff --git a/kradio3/src/include/radiostation-config.h b/kradio3/src/include/radiostation-config.h
new file mode 100644
index 0000000..b0b31cf
--- /dev/null
+++ b/kradio3/src/include/radiostation-config.h
@@ -0,0 +1,79 @@
+/***************************************************************************
+ radiostation-config.h - description
+ -------------------
+ begin : Sa Aug 16 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_RADIOSTATION_CONFIG_H
+#define KRADIO_RADIOSTATION_CONFIG_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qwidget.h>
+
+class RadioStation;
+
+class RadioStationConfig : public QWidget
+{
+Q_OBJECT
+public:
+ RadioStationConfig(QWidget *parent);
+ ~RadioStationConfig();
+
+ virtual void setStationData (const RadioStation &rs) = 0;
+ virtual void storeStationData (RadioStation &rs) = 0;
+
+signals:
+ virtual void changed(RadioStationConfig *);
+};
+
+
+class UndefinedRadioStationConfig : public RadioStationConfig
+{
+Q_OBJECT
+public:
+ UndefinedRadioStationConfig (QWidget *parent);
+ ~UndefinedRadioStationConfig();
+
+ virtual void setStationData (const RadioStation &rs);
+ virtual void storeStationData (RadioStation &rs);
+};
+
+
+
+class QSpinBox;
+
+class FrequencyRadioStationConfig : public RadioStationConfig
+{
+Q_OBJECT
+public:
+ FrequencyRadioStationConfig (QWidget *parent);
+ ~FrequencyRadioStationConfig();
+
+ virtual void setStationData (const RadioStation &rs);
+ virtual void storeStationData (RadioStation &rs);
+
+protected slots:
+ virtual void slotValueChanged(int);
+
+protected:
+
+ QSpinBox *m_editFrequency;
+};
+
+
+
+#endif
diff --git a/kradio3/src/include/radiostation-listview.h b/kradio3/src/include/radiostation-listview.h
new file mode 100644
index 0000000..1f3fb6a
--- /dev/null
+++ b/kradio3/src/include/radiostation-listview.h
@@ -0,0 +1,83 @@
+/***************************************************************************
+ radiostation-listview.h - description
+ -------------------
+ begin : Mi Mar 03 2004
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifndef _KRADIO_RADIOSTATION_LISTVIEW_H_
+#define _KRADIO_RADIOSTATION_LISTVIEW_H_
+
+#include <klistview.h>
+
+class RadioStation;
+class StationList;
+
+class RadioStationListView : public KListView
+{
+Q_OBJECT
+public:
+ RadioStationListView(QWidget *parent=0, const char *name=0);
+ virtual ~RadioStationListView();
+
+ QListViewItem *getItemForIndex(int idx) const;
+ int getIndexForItem(QListViewItem *) const;
+
+ void setStation(int idx, const RadioStation &, int nr = -1);
+ void appendStation(const RadioStation &, int nr = -1);
+ void setStations(const StationList &);
+
+ void removeStation(int idx);
+ void takeItem(QListViewItem *item, int idx);
+ void insertItem(QListViewItem *item, const QString &stationid, int idx);
+
+ void setCurrentStation(int idx);
+ int currentStationIndex() const;
+
+ int count() const { return childCount(); }
+
+ void saveState (KConfig *) const;
+ void restoreState (KConfig *);
+
+
+protected:
+
+ QDragObject *dragObject();
+ void dragEnterEvent(QDragEnterEvent* event);
+ void dropEvent(QDropEvent* event);
+ void contentsDragEnterEvent(QDragEnterEvent* event);
+ void contentsDragMoveEvent(QDragMoveEvent* event);
+ void contentsDropEvent(QDropEvent* event);
+
+protected slots:
+
+ void slotStationActivation(QListViewItem *);
+ void slotCurrentStationChanged(QListViewItem *);
+
+signals:
+ void sigStationActivated(int idx);
+ void sigCurrentStationChanged(int idx);
+ void sigStationsReceived(const QStringList &stationIDs);
+
+protected:
+
+ QStringList m_StationIDs;
+
+};
+
+#endif
diff --git a/kradio3/src/include/radiostation.h b/kradio3/src/include/radiostation.h
new file mode 100644
index 0000000..5c63874
--- /dev/null
+++ b/kradio3/src/include/radiostation.h
@@ -0,0 +1,164 @@
+/***************************************************************************
+ radiostation.h - description
+ -------------------
+ begin : Sat Feb 2 2002
+ copyright : (C) 2003 by Martin Witte, Klas Kalass
+ email : witte@kawo1.rwth-aachen.de / klas@kde.org
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_RADIOSTATION_H
+#define KRADIO_RADIOSTATION_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+//#include "utils.h"
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qdict.h>
+
+#include <klocale.h>
+
+/**
+ *@author Martin Witte, Klas Kalass
+ */
+
+/*
+
+ RadioStation
+
+ RadioStation is an abstract base class for any type of radio station,
+ e.g. AM/FM stations or internet radio stations. Thus no specific knowledge
+ about the frequency or URL is included in this class. A radio station
+ should not contain information on a matching device as well. The device has
+ to decide on its own to use or not to use a station.
+
+ There are some important abstract functions, that have to be overwritten by
+ a derived radio station:
+
+ copy create an exact copy of a station (in case we only have a RadioStation*
+ longName return a verbous station description
+ isValid is this station setup correctly ?
+ compare is this station equivalent to another station, e.g. approximately same frequency
+ getclassname classname string for station registry
+
+ Other methods "should" be overwritten, but still call inherited methods for completeness!
+
+ get/setProperty
+ getPropertyNames
+
+*/
+
+/////////////////////////////////////////////////////////////////////////////
+
+extern struct RegisterStationClass {} registerStationClass;
+
+/////////////////////////////////////////////////////////////////////////////
+
+class RadioStationConfig;
+
+class RadioStation
+{
+protected:
+ RadioStation (RegisterStationClass, const QString &classname);
+public:
+ RadioStation ();
+ RadioStation (const QString &name, const QString &shortName);
+ RadioStation (const RadioStation &);
+ virtual ~RadioStation();
+
+ const QString &stationID() const { return m_stationID; }
+
+ virtual QString longName() const = 0;
+ virtual QString description() const = 0;
+
+ const QString &name() const { return m_name; }
+ const QString &shortName() const { return m_shortName; }
+ const QString &iconName() const { return m_iconName; }
+ float initialVolume() const { return m_initialVolume; }
+
+ void setName (const QString &name) { m_name = name; }
+ void setShortName (const QString &shortName) { m_shortName = shortName; }
+ void setIconName (const QString &iconName) { m_iconName = iconName; }
+ void setInitialVolume(float initialVolume) { m_initialVolume = initialVolume; }
+
+ void copyDescriptionFrom(const RadioStation &rs);
+
+ // for XML-Parsing/Export
+ virtual bool setProperty(const QString &property_name, const QString &val);
+ virtual QString getProperty(const QString &property_name) const;
+ virtual QStringList getPropertyNames() const;
+ virtual QString getClassName() const = 0;
+
+ // get empty derived stations by classname from registry
+ static RadioStation const *getStationClass(const QString &classname);
+ RadioStation const *getStationClass() const { return getStationClass(getClassName()); }
+
+ // = 0 : "this" is same as "s", e.g. approximately same frequency, same url, ...
+ // > 0 : "this" is numerically (frequencies) or alphanumerically (urls) or ... greater than "s"
+ // < 0 : "this" is numerically (frequencies) or alphanumerically (urls) or ... smaller than "s"
+ virtual int compare(const RadioStation &s) const = 0;
+
+ // is this station setup correctly ?
+ virtual bool isValid() const = 0;
+
+ /** returns an exact copy of this station */
+ virtual RadioStation *copy() const = 0;
+ /** returns an exact copy of this station, BUT with a new station ID */
+ virtual RadioStation *copyNewID() const = 0;
+
+ void generateNewStationID();
+
+ virtual RadioStationConfig *createEditor() const = 0;
+
+ virtual bool operator == (const RadioStation &x) const;
+ virtual bool operator != (const RadioStation &x) const { return !operator==(x); }
+
+protected :
+ QString m_stationID;
+
+ QString m_name;
+ QString m_shortName;
+ float m_initialVolume; // <0: => Don't use
+ QString m_iconName;
+
+private:
+ static QDict<RadioStation> *stationClassRegistry;
+};
+
+
+
+
+
+
+
+class UndefinedRadioStation : public RadioStation
+{
+public:
+ UndefinedRadioStation (RegisterStationClass) : RadioStation (registerStationClass, getClassName()) {}
+
+ virtual QString longName() const { return i18n("unknown"); }
+ virtual QString description() const { return i18n("unknown"); }
+ virtual bool isValid() const { return false; }
+ virtual RadioStation *copy() const { return new UndefinedRadioStation(*this); }
+ virtual RadioStation *copyNewID() const { RadioStation *x = new UndefinedRadioStation(*this); x->generateNewStationID(); return x; }
+ virtual int compare(const RadioStation &s) const;
+
+ virtual QString getClassName() const { return "UndefinedRadioStation"; }
+ virtual RadioStationConfig *createEditor() const;
+};
+
+
+extern const UndefinedRadioStation undefinedRadioStation;
+
+#endif
diff --git a/kradio3/src/include/ringbuffer.h b/kradio3/src/include/ringbuffer.h
new file mode 100644
index 0000000..1f545ca
--- /dev/null
+++ b/kradio3/src/include/ringbuffer.h
@@ -0,0 +1,58 @@
+/***************************************************************************
+ ringbuffer.h - description
+ -------------------
+ begin : Sun March 21 2004
+ copyright : (C) 2004 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef _KRADIO_RING_BUFFER_H
+#define _KRADIO_RING_BUFFER_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <sys/types.h>
+
+class RingBuffer
+{
+public:
+ RingBuffer(size_t size);
+ ~RingBuffer();
+
+ bool resize(size_t new_size);
+
+ size_t addData (const char *src, size_t size);
+ size_t takeData(char *dst, size_t size);
+
+ char *getFreeSpace(size_t &size);
+ size_t removeFreeSpace(size_t size);
+
+ char *getData(size_t &size);
+ size_t removeData(size_t size);
+
+ size_t getSize() const { return m_Size; }
+ size_t getFillSize() const { return m_FillSize; }
+ size_t getFreeSize() const { return m_Size - m_FillSize; }
+
+ void clear();
+
+protected:
+
+ char *m_Buffer;
+ size_t m_Start;
+ size_t m_Size,
+ m_FillSize;
+};
+
+#endif
diff --git a/kradio3/src/include/seekhelper.h b/kradio3/src/include/seekhelper.h
new file mode 100644
index 0000000..01d8d86
--- /dev/null
+++ b/kradio3/src/include/seekhelper.h
@@ -0,0 +1,83 @@
+/***************************************************************************
+ seekhelper.h - description
+ -------------------
+ begin : Sam Mai 10 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_SEEKHELPER_H
+#define KRADIO_SEEKHELPER_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "radiodevice_interfaces.h"
+#include "soundstreamclient_interfaces.h"
+
+
+class SeekHelper : public IRadioDeviceClient,
+ public ISoundStreamClient
+{
+public:
+ typedef enum { off, searchWorse, searchBest } state_t;
+ typedef enum { up, down } direction_t;
+
+ SeekHelper(ISeekRadio &parent);
+ virtual ~SeekHelper();
+
+ virtual bool connectI (Interface *i);
+ virtual bool disconnectI(Interface *i);
+
+ virtual void start(const SoundStreamID &id, direction_t dir);
+ virtual void step();
+ virtual void stop();
+
+ bool isRunning() const { return m_state != off; }
+ bool isRunningUp() const { return m_state != off && m_direction == up; }
+ bool isRunningDown() const { return m_state != off && m_direction == down; }
+
+
+// IRadioDeviceClient
+RECEIVERS:
+ bool noticePowerChanged (bool /*on*/, const IRadioDevice */*sender*/) { return false; }
+ bool noticeStationChanged (const RadioStation &, const IRadioDevice */*sender*/) { return false; }
+ bool noticeDescriptionChanged (const QString &, const IRadioDevice */*sender*/) { return false; }
+
+ bool noticeCurrentSoundStreamIDChanged(SoundStreamID /*id*/, const IRadioDevice */*sender*/) { return false; }
+
+protected:
+
+ virtual void finish();
+
+ virtual void abort() = 0;
+ virtual bool isGood() const = 0;
+ virtual bool isBetter() const = 0;
+ virtual bool isWorse() const = 0;
+ virtual bool bestFound() const = 0;
+ virtual void getData() = 0;
+ virtual void rememberBest() = 0;
+ virtual bool nextSeekStep() = 0;
+ virtual void applyBest() = 0;
+
+protected:
+ state_t m_state;
+ direction_t m_direction;
+ bool m_oldMute;
+
+ ISeekRadio &m_parent;
+ SoundStreamID m_SoundStreamID;
+};
+
+#endif
+
diff --git a/kradio3/src/include/sound_metadata.h b/kradio3/src/include/sound_metadata.h
new file mode 100644
index 0000000..ceecb9c
--- /dev/null
+++ b/kradio3/src/include/sound_metadata.h
@@ -0,0 +1,50 @@
+/***************************************************************************
+ sound_metadata.h - description
+ -------------------
+ begin : Sun May 15 2005
+ copyright : (C) 2005 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_SOUND_METADATA_H
+#define KRADIO_SOUND_METADATA_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <time.h>
+#include <endian.h>
+#include <qstring.h>
+#include <kconfig.h>
+#include <kurl.h>
+
+class SoundMetaData
+{
+public:
+ SoundMetaData (Q_UINT64 pos, time_t rel_ts, time_t abs_ts, const KURL &url = KURL())
+ : m_DataPosition(pos), m_relativeTimestamp(rel_ts), m_absoluteTimestamp(abs_ts), m_URL(url) {}
+
+ Q_UINT64 position() const { return m_DataPosition; }
+ KURL url() const { return m_URL; }
+ time_t relativeTimestamp() const { return m_relativeTimestamp; }
+ time_t absoluteTimestamp() const { return m_absoluteTimestamp; }
+
+protected:
+ Q_UINT64 m_DataPosition;
+ time_t m_relativeTimestamp;
+ time_t m_absoluteTimestamp;
+ KURL m_URL;
+};
+
+
+#endif
diff --git a/kradio3/src/include/soundformat.h b/kradio3/src/include/soundformat.h
new file mode 100644
index 0000000..0c7a384
--- /dev/null
+++ b/kradio3/src/include/soundformat.h
@@ -0,0 +1,75 @@
+/***************************************************************************
+ soundformat.h - description
+ -------------------
+ begin : Sun Aug 1 2004
+ copyright : (C) 2004 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_SOUNDFORMAT_H
+#define KRADIO_SOUNDFORMAT_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <endian.h>
+#include <qstring.h>
+#include <kconfig.h>
+
+struct SoundFormat {
+ unsigned m_SampleRate;
+ unsigned m_Channels;
+ unsigned m_SampleBits;
+ bool m_IsSigned;
+ unsigned m_Endianess;
+ QString m_Encoding; // "raw", "mp3", ... (no "wav", because it's only header + raw data)
+
+ SoundFormat(unsigned sample_rate, unsigned channels, unsigned sample_bits, bool is_signed, unsigned endianess, const QString &enc)
+ : m_SampleRate(sample_rate), m_Channels(channels), m_SampleBits(sample_bits), m_IsSigned(is_signed), m_Endianess(endianess), m_Encoding(enc) {}
+ SoundFormat(unsigned sample_rate, unsigned channels, unsigned sample_bits, bool is_signed, unsigned endianess)
+ : m_SampleRate(sample_rate), m_Channels(channels), m_SampleBits(sample_bits), m_IsSigned(is_signed), m_Endianess(endianess), m_Encoding("raw") {}
+ SoundFormat(unsigned sample_rate, unsigned channels, unsigned sample_bits, bool is_signed)
+ : m_SampleRate(sample_rate), m_Channels(channels), m_SampleBits(sample_bits), m_IsSigned(is_signed), m_Endianess(BYTE_ORDER), m_Encoding("raw") {}
+ SoundFormat(bool stereo)
+ : m_SampleRate(44100), m_Channels(stereo ? 2 : 1), m_SampleBits(16), m_IsSigned(true), m_Endianess(BYTE_ORDER), m_Encoding("raw") {}
+ SoundFormat()
+ : m_SampleRate(44100), m_Channels(2), m_SampleBits(16), m_IsSigned(true), m_Endianess(BYTE_ORDER), m_Encoding("raw") {}
+
+ bool operator == (const SoundFormat &o) const { return m_SampleRate == o.m_SampleRate &&
+ m_Channels == o.m_Channels &&
+ m_SampleBits == o.m_SampleBits &&
+ m_IsSigned == o.m_IsSigned &&
+ m_Endianess == o.m_Endianess &&
+ m_Encoding == o.m_Encoding
+ ;
+ }
+ bool operator != (const SoundFormat &o) const { return !operator == (o); }
+
+ int sampleSize() const; // size of a single sample
+ int frameSize() const; // sampleSize * channels
+ int minValue() const;
+ int maxValue() const;
+
+ void restoreConfig(const QString &prefix, KConfig *c);
+ void saveConfig(const QString &prefix, KConfig *c) const;
+
+ int convertSampleToInt(const char *sample, bool do_scale) const;
+ void convertIntToSample(int src, char *dst, bool is_scaled) const;
+ void convertSamplesToInts(const char *src, int *dst, size_t n, bool do_scale) const;
+ void convertIntsToSamples(const int *src, char *dst, size_t n, bool is_scaled) const;
+ void convertSamplesToFloat (const char *src, float **dst, size_t n) const;
+ void convertFloatsToSamples(const float **src, char *dst, size_t n) const;
+};
+
+
+#endif
diff --git a/kradio3/src/include/soundstreamclient_interfaces.h b/kradio3/src/include/soundstreamclient_interfaces.h
new file mode 100644
index 0000000..a3de4ca
--- /dev/null
+++ b/kradio3/src/include/soundstreamclient_interfaces.h
@@ -0,0 +1,372 @@
+/***************************************************************************
+ sounddevice_interfaces.h - description
+ -------------------
+ begin : Sun Mar 21 2004
+ copyright : (C) 2004 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * Interfaces in this header: *
+ * *
+ * ISoundDevice(Client) *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_SOUNDSTREAMCLIENT_INTERFACES_H
+#define KRADIO_SOUNDSTREAMCLIENT_INTERFACES_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <kconfig.h>
+#include <qmap.h>
+
+#include "interfaces.h"
+#include "soundformat.h"
+#include "soundstreamid.h"
+#include "sound_metadata.h"
+
+
+#define CALL_SNDSTR_SERVER(name, param, call) \
+ inline int name param const { \
+ return iConnections.count() ? iConnections.getFirst()->name call : 0; \
+ }
+
+
+#define SIZE_T_DONT_CARE ((size_t)(-1))
+
+class RadioStation;
+
+INTERFACE(ISoundStreamServer, ISoundStreamClient)
+{
+friend class ISoundStreamClient;
+public:
+ IF_CON_DESTRUCTOR(ISoundStreamServer, -1)
+
+ virtual void noticeConnectedI(cmplInterface *i, bool valid);
+ virtual void noticeDisconnectedI(cmplInterface *i, bool valid);
+
+ virtual QMap<QString, ISoundStreamClient *> getPlaybackClients() const;
+ virtual QMap<QString, QString> getPlaybackClientDescriptions() const;
+ virtual QMap<QString, ISoundStreamClient *> getCaptureClients() const;
+ virtual QMap<QString, QString> getCaptureClientDescriptions() const;
+ virtual ISoundStreamClient *getSoundStreamClientWithID(const QString &id) const;
+
+ANSWERS:
+ virtual QPtrList<ISoundStreamClient> getPlaybackMixers() const;
+ virtual QPtrList<ISoundStreamClient> getCaptureMixers() const;
+
+
+SENDERS:
+ IF_SENDER_FINE ( notifyPlaybackChannelsChanged, (const QString &/*client_id*/, const QStringList &) )
+ IF_SENDER_FINE ( notifyCaptureChannelsChanged, (const QString &/*client_id*/, const QStringList &) )
+
+ IF_SENDER_FINE ( sendPlaybackVolume, (SoundStreamID /*id*/, float /*volume*/) )
+ IF_SENDER_FINE ( sendCaptureVolume, (SoundStreamID /*id*/, float /*volume*/) )
+ IF_SENDER_FINE ( queryPlaybackVolume, (SoundStreamID /*id*/, float &/*volume*/) )
+ IF_SENDER_FINE ( queryCaptureVolume, (SoundStreamID /*id*/, float &/*volume*/) )
+ IF_SENDER_FINE ( notifyPlaybackVolumeChanged, (SoundStreamID /*id*/, float /*volume*/) )
+ IF_SENDER_FINE ( notifyCaptureVolumeChanged, (SoundStreamID /*id*/, float /*volume*/) )
+
+ IF_SENDER_FINE ( notifyTrebleChanged, (SoundStreamID /*id*/, float /*v*/) )
+ IF_SENDER_FINE ( notifyBassChanged, (SoundStreamID /*id*/, float /*v*/) )
+ IF_SENDER_FINE ( notifyBalanceChanged, (SoundStreamID /*id*/, float /*v*/) )
+ IF_SENDER_FINE ( notifyMuted, (SoundStreamID /*id*/, bool /*m*/) )
+ IF_SENDER_FINE ( notifySignalQualityChanged, (SoundStreamID /*id*/, float /*q*/) )
+ IF_SENDER_FINE ( notifySignalQualityBoolChanged, (SoundStreamID /*id*/, bool /*good*/) )
+ IF_SENDER_FINE ( notifySignalMinQualityChanged, (SoundStreamID /*id*/, float /*q*/) )
+ IF_SENDER_FINE ( notifyStereoChanged, (SoundStreamID /*id*/, bool /*s*/) )
+
+ IF_SENDER_FINE ( sendTreble, (SoundStreamID /*id*/, float /*v*/) )
+ IF_SENDER_FINE ( sendBass, (SoundStreamID /*id*/, float /*v*/) )
+ IF_SENDER_FINE ( sendBalance, (SoundStreamID /*id*/, float /*v*/) )
+ IF_SENDER_FINE ( sendMute, (SoundStreamID /*id*/, bool mute = true) )
+ IF_SENDER_FINE ( sendUnmute, (SoundStreamID /*id*/, bool unmute = true) )
+ IF_SENDER_FINE ( sendSignalMinQuality, (SoundStreamID /*id*/, float /*q*/) )
+ IF_SENDER_FINE ( sendStereo, (SoundStreamID /*id*/, bool /*s*/) )
+
+ IF_SENDER_FINE ( queryTreble, (SoundStreamID /*id*/, float &) )
+ IF_SENDER_FINE ( queryBass, (SoundStreamID /*id*/, float &) )
+ IF_SENDER_FINE ( queryBalance, (SoundStreamID /*id*/, float &) )
+ IF_SENDER_FINE ( querySignalQuality, (SoundStreamID /*id*/, float &) )
+ IF_SENDER_FINE ( querySignalMinQuality, (SoundStreamID /*id*/, float &) )
+ IF_SENDER_FINE ( queryHasGoodQuality, (SoundStreamID /*id*/, bool &) )
+ IF_SENDER_FINE ( queryIsStereo, (SoundStreamID /*id*/, bool &) )
+ IF_SENDER_FINE ( queryIsMuted, (SoundStreamID /*id*/, bool &) )
+
+
+ // sendPreparePlayback/sendPrepareCapture don't make sense for multiple receivers
+ IF_SENDER_FINE ( sendReleasePlayback, (SoundStreamID id) )
+ IF_SENDER_FINE ( sendReleaseCapture, (SoundStreamID id) )
+
+ IF_SENDER_FINE ( sendStartPlayback, (SoundStreamID id) )
+ IF_SENDER_FINE ( sendPausePlayback, (SoundStreamID id) )
+ IF_SENDER_FINE ( sendStopPlayback, (SoundStreamID id) )
+ IF_SENDER_FINE ( queryIsPlaybackRunning, (SoundStreamID id, bool &) )
+
+// IF_SENDER_FINE ( sendStartCapture, (SoundStreamID id) )
+ IF_SENDER_FINE ( sendStartCaptureWithFormat, (SoundStreamID id,
+ const SoundFormat &proposed_format,
+ SoundFormat &real_format,
+ bool force_format = false) )
+ IF_SENDER_FINE ( sendStopCapture, (SoundStreamID id) )
+ IF_SENDER_FINE ( queryIsCaptureRunning, (SoundStreamID id, bool &running, SoundFormat &sf))
+
+ // we need extra recording, in order to distinguish between plain capturing
+ // (making sound data available to kradio) and writing a stream to disk or sth similar
+ IF_SENDER_FINE ( sendStartRecording, (SoundStreamID id) )
+ IF_SENDER_FINE ( sendStartRecordingWithFormat, (SoundStreamID id,
+ const SoundFormat &proposed_format,
+ SoundFormat &real_format) )
+ IF_SENDER_FINE ( sendStopRecording, (SoundStreamID id) )
+ IF_SENDER_FINE ( queryIsRecordingRunning, (SoundStreamID id, bool &running, SoundFormat &sf))
+
+ IF_SENDER_FINE ( querySoundStreamDescription, (SoundStreamID id, QString &descr) )
+ IF_SENDER_FINE ( querySoundStreamRadioStation, (SoundStreamID id, const RadioStation *&rs))
+ IF_SENDER_FINE ( queryEnumerateSoundStreams, (QMap<QString, SoundStreamID> &) )
+
+ IF_SENDER_FINE ( notifySoundStreamCreated, (SoundStreamID id) )
+ IF_SENDER_FINE ( notifySoundStreamClosed, (SoundStreamID id) )
+ IF_SENDER_FINE ( notifySoundStreamRedirected, (SoundStreamID oldID, SoundStreamID newID) )
+
+ // e.g description or whatever changed
+ IF_SENDER_FINE ( notifySoundStreamChanged, (SoundStreamID id) )
+
+ IF_SENDER_FINE ( notifySoundStreamData, (SoundStreamID /*id*/, const SoundFormat &, const char */*data*/, size_t /*size*/, size_t &/*consumed_size*/, const SoundMetaData &/*md*/) )
+ IF_SENDER_FINE ( notifyReadyForPlaybackData, (SoundStreamID /*id*/, size_t /*size*/) )
+};
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+
+INTERFACE(ISoundStreamClient, ISoundStreamServer)
+{
+public:
+ ISoundStreamClient();
+ virtual ~ISoundStreamClient();
+
+ cmplInterface *getSoundStreamServer() const { return m_Server; }
+
+
+ virtual void noticeConnectedSoundClient(thisInterface *i, bool valid);
+ virtual void noticeDisconnectedSoundClient(thisInterface *i, bool valid);
+
+ virtual void noticeConnectedI(cmplInterface *i, bool valid);
+ virtual void noticeDisconnectedI(cmplInterface *i, bool valid);
+
+// some rarely implemented functions are not pure virtual for convenience
+
+// direct playback / capture device functions
+
+RECEIVERS:
+ IF_RECEIVER_EMPTY( preparePlayback(SoundStreamID /*id*/, const QString &/*channel*/, bool /*active_mode*/, bool /*start_immediately = false*/) )
+ IF_RECEIVER_EMPTY( prepareCapture(SoundStreamID /*id*/, const QString &/*channel*/) )
+ IF_RECEIVER_EMPTY( releasePlayback(SoundStreamID /*id*/) )
+ IF_RECEIVER_EMPTY( releaseCapture(SoundStreamID /*id*/) )
+
+ANSWERS:
+ virtual bool supportsPlayback() const { return false; }
+ virtual bool supportsCapture() const { return false; }
+
+ virtual const QString &getSoundStreamClientID() const;
+ virtual QString getSoundStreamClientDescription() const { return QString::null; }
+
+ virtual QMap<QString, ISoundStreamClient *> getPlaybackClients() const;
+ virtual QMap<QString, QString> getPlaybackClientDescriptions() const;
+ virtual QMap<QString, ISoundStreamClient *> getCaptureClients() const;
+ virtual QMap<QString, QString> getCaptureClientDescriptions() const;
+ virtual ISoundStreamClient *getSoundStreamClientWithID(const QString &id) const;
+
+// device mixer functions
+
+QUERIES:
+ IF_QUERY ( QPtrList<ISoundStreamClient> queryPlaybackMixers() );
+ IF_QUERY ( QPtrList<ISoundStreamClient> queryCaptureMixers() );
+
+
+ANSWERS:
+ virtual const QStringList &getPlaybackChannels() const;
+ virtual const QStringList &getCaptureChannels() const;
+
+RECEIVERS:
+ IF_RECEIVER_EMPTY( noticePlaybackChannelsChanged(const QString & /*client_id*/, const QStringList &/*channels*/) );
+ IF_RECEIVER_EMPTY( noticeCaptureChannelsChanged (const QString & /*client_id*/, const QStringList &/*channels*/) );
+
+
+RECEIVERS:
+ IF_RECEIVER_EMPTY( setPlaybackVolume(SoundStreamID /*id*/, float /*volume*/) )
+ IF_RECEIVER_EMPTY( setCaptureVolume(SoundStreamID /*id*/, float /*volume*/) )
+ IF_RECEIVER_EMPTY( getPlaybackVolume(SoundStreamID /*id*/, float &/*volume*/) const )
+ IF_RECEIVER_EMPTY( getCaptureVolume(SoundStreamID /*id*/, float &/*volume*/) const )
+ IF_RECEIVER_EMPTY( noticePlaybackVolumeChanged(SoundStreamID /*id*/, float /*volume*/) )
+ IF_RECEIVER_EMPTY( noticeCaptureVolumeChanged(SoundStreamID /*id*/, float /*volume*/) )
+
+ IF_RECEIVER_EMPTY( setTreble (SoundStreamID /*id*/, float /*v*/) )
+ IF_RECEIVER_EMPTY( setBass (SoundStreamID /*id*/, float /*v*/) )
+ IF_RECEIVER_EMPTY( setBalance (SoundStreamID /*id*/, float /*v*/) )
+ IF_RECEIVER_EMPTY( mute (SoundStreamID /*id*/, bool /*mute*/) )
+ IF_RECEIVER_EMPTY( unmute (SoundStreamID /*id*/, bool /*unmute*/) )
+ IF_RECEIVER_EMPTY( setSignalMinQuality(SoundStreamID /*id*/, float /*q*/) )
+ IF_RECEIVER_EMPTY( setStereo(SoundStreamID /*id*/, bool /*s*/) )
+
+ IF_RECEIVER_EMPTY( noticeTrebleChanged(SoundStreamID /*id*/, float /*v*/) )
+ IF_RECEIVER_EMPTY( noticeBassChanged(SoundStreamID /*id*/, float /*v*/) )
+ IF_RECEIVER_EMPTY( noticeBalanceChanged(SoundStreamID /*id*/, float /*v*/) )
+ IF_RECEIVER_EMPTY( noticeSignalQualityChanged(SoundStreamID /*id*/, float /*q*/) )
+ IF_RECEIVER_EMPTY( noticeSignalQualityChanged(SoundStreamID /*id*/, bool /*good*/) )
+ IF_RECEIVER_EMPTY( noticeSignalMinQualityChanged(SoundStreamID /*id*/, float /*q*/) )
+ IF_RECEIVER_EMPTY( noticeStereoChanged(SoundStreamID /*id*/, bool /*s*/) )
+ IF_RECEIVER_EMPTY( noticeMuted(SoundStreamID /*id*/, bool /*m*/) )
+
+ IF_RECEIVER_EMPTY( getTreble (SoundStreamID /*id*/, float &/*v*/) const )
+ IF_RECEIVER_EMPTY( getBass (SoundStreamID /*id*/, float &/*v*/) const )
+ IF_RECEIVER_EMPTY( getBalance(SoundStreamID /*id*/, float &/*v*/) const )
+ IF_RECEIVER_EMPTY( isMuted(SoundStreamID /*id*/, bool &/*m*/) const )
+ IF_RECEIVER_EMPTY( getSignalQuality(SoundStreamID /*id*/, float &/*q*/) const )
+ IF_RECEIVER_EMPTY( getSignalMinQuality(SoundStreamID /*id*/, float &/*q*/) const )
+ IF_RECEIVER_EMPTY( hasGoodQuality(SoundStreamID /*id*/, bool &/*good*/) const )
+ IF_RECEIVER_EMPTY( isStereo(SoundStreamID /*id*/, bool &/*s*/) const )
+
+// generic stream handling (broadcasts)
+
+RECEIVERS:
+ IF_RECEIVER_EMPTY( startPlayback(SoundStreamID /*id*/) )
+ IF_RECEIVER_EMPTY( pausePlayback(SoundStreamID /*id*/) )
+ IF_RECEIVER_EMPTY( stopPlayback(SoundStreamID /*id*/) )
+ IF_RECEIVER_EMPTY( isPlaybackRunning(SoundStreamID /*id*/, bool &) const )
+
+// IF_RECEIVER_EMPTY( startCapture(SoundStreamID /*id*/) )
+ IF_RECEIVER_EMPTY( startCaptureWithFormat(SoundStreamID /*id*/,
+ const SoundFormat &/*proposed_format*/,
+ SoundFormat &/*real_format*/,
+ bool /*force_format*/ = false) )
+ IF_RECEIVER_EMPTY( stopCapture(SoundStreamID /*id*/) )
+ IF_RECEIVER_EMPTY( isCaptureRunning(SoundStreamID /*id*/, bool &/*running*/, SoundFormat &/*sf*/) const )
+
+ IF_RECEIVER_EMPTY( startRecording(SoundStreamID /*id*/) )
+ IF_RECEIVER_EMPTY( startRecordingWithFormat(SoundStreamID /*id*/,
+ const SoundFormat &/*proposed_format*/,
+ SoundFormat &/*real_format*/) )
+ IF_RECEIVER_EMPTY( stopRecording(SoundStreamID /*id*/) )
+ IF_RECEIVER_EMPTY( isRecordingRunning(SoundStreamID /*id*/, bool &/*running*/, SoundFormat &/*sf*/) const )
+
+ IF_RECEIVER_EMPTY( getSoundStreamDescription(SoundStreamID /*id*/, QString &/*descr*/) const )
+ IF_RECEIVER_EMPTY( getSoundStreamRadioStation(SoundStreamID /*id*/, const RadioStation *&/*rs*/) const )
+
+ IF_RECEIVER_EMPTY( enumerateSoundStreams(QMap<QString, SoundStreamID> &/*list*/) const )
+
+ IF_RECEIVER_EMPTY( noticeSoundStreamCreated(SoundStreamID /*id*/) )
+ IF_RECEIVER_EMPTY( noticeSoundStreamClosed(SoundStreamID /*id*/) )
+ IF_RECEIVER_EMPTY( noticeSoundStreamRedirected(SoundStreamID /*oldID*/, SoundStreamID /*newID*/) )
+
+ // e.g description or whatever changed
+ IF_RECEIVER_EMPTY( noticeSoundStreamChanged(SoundStreamID /*id*/) )
+
+ IF_RECEIVER_EMPTY( noticeSoundStreamData(SoundStreamID /*id*/, const SoundFormat &, const char */*data*/, size_t /*size*/, size_t &/*consumed_size*/, const SoundMetaData &/*md*/))
+ IF_RECEIVER_EMPTY( noticeReadyForPlaybackData(SoundStreamID /*id*/, size_t /*size*/) )
+
+SENDERS:
+ CALL_SNDSTR_SERVER ( notifyPlaybackChannelsChanged, (const QString &client_id, const QStringList &map), (client_id, map) )
+ CALL_SNDSTR_SERVER ( notifyCaptureChannelsChanged, (const QString &client_id, const QStringList &map), (client_id, map) )
+
+ CALL_SNDSTR_SERVER ( sendPlaybackVolume, (SoundStreamID id, float volume), (id, volume) )
+ CALL_SNDSTR_SERVER ( sendCaptureVolume, (SoundStreamID id, float volume), (id, volume) )
+ CALL_SNDSTR_SERVER ( queryPlaybackVolume, (SoundStreamID id, float &volume), (id, volume) )
+ CALL_SNDSTR_SERVER ( queryCaptureVolume, (SoundStreamID id, float &volume), (id, volume) )
+ CALL_SNDSTR_SERVER ( notifyPlaybackVolumeChanged, (SoundStreamID id, float volume), (id, volume) )
+ CALL_SNDSTR_SERVER ( notifyCaptureVolumeChanged, (SoundStreamID id, float volume), (id, volume) )
+
+ CALL_SNDSTR_SERVER ( notifyTrebleChanged, (SoundStreamID id, float v), (id, v) )
+ CALL_SNDSTR_SERVER ( notifyBassChanged, (SoundStreamID id, float v), (id, v) )
+ CALL_SNDSTR_SERVER ( notifyBalanceChanged, (SoundStreamID id, float v), (id, v) )
+ CALL_SNDSTR_SERVER ( notifyMuted, (SoundStreamID id, bool m), (id, m) )
+ CALL_SNDSTR_SERVER ( notifySignalQualityChanged, (SoundStreamID id, float q), (id, q) )
+ CALL_SNDSTR_SERVER ( notifySignalQualityBoolChanged, (SoundStreamID id, bool good), (id, good) )
+ CALL_SNDSTR_SERVER ( notifySignalMinQualityChanged, (SoundStreamID id, float q), (id, q) )
+ CALL_SNDSTR_SERVER ( notifyStereoChanged, (SoundStreamID id, bool s), (id, s) )
+
+ CALL_SNDSTR_SERVER ( sendTreble , (SoundStreamID id, float v), (id, v) )
+ CALL_SNDSTR_SERVER ( sendBass , (SoundStreamID id, float v), (id, v) )
+ CALL_SNDSTR_SERVER ( sendBalance , (SoundStreamID id, float v), (id, v) )
+ CALL_SNDSTR_SERVER ( sendMute , (SoundStreamID id, bool mute = true), (id, mute) )
+ CALL_SNDSTR_SERVER ( sendUnmute , (SoundStreamID id, bool unmute = true), (id, unmute) )
+ CALL_SNDSTR_SERVER ( sendSignalMinQuality , (SoundStreamID id, float q), (id, q) )
+ CALL_SNDSTR_SERVER ( sendStereo, (SoundStreamID id, bool s), (id, s) )
+
+ CALL_SNDSTR_SERVER ( queryTreble, (SoundStreamID id, float &v), (id, v) )
+ CALL_SNDSTR_SERVER ( queryBass, (SoundStreamID id, float &v), (id, v) )
+ CALL_SNDSTR_SERVER ( queryBalance, (SoundStreamID id, float &v), (id, v) )
+ CALL_SNDSTR_SERVER ( querySignalQuality, (SoundStreamID id, float &v), (id, v) )
+ CALL_SNDSTR_SERVER ( querySignalMinQuality, (SoundStreamID id, float &v), (id, v) )
+ CALL_SNDSTR_SERVER ( queryHasGoodQuality, (SoundStreamID id, bool &v), (id, v) )
+ CALL_SNDSTR_SERVER ( queryIsStereo, (SoundStreamID id, bool &v), (id, v) )
+ CALL_SNDSTR_SERVER ( queryIsMuted, (SoundStreamID id, bool &v), (id, v) )
+
+
+ // sendPreparePlayback/sendPrepareCapture don't make sense for multiple receivers
+ CALL_SNDSTR_SERVER ( sendReleasePlayback, (SoundStreamID id), (id) )
+ CALL_SNDSTR_SERVER ( sendReleaseCapture, (SoundStreamID id), (id) )
+
+ CALL_SNDSTR_SERVER ( sendStartPlayback, (SoundStreamID id), (id) )
+ CALL_SNDSTR_SERVER ( sendPausePlayback, (SoundStreamID id), (id) )
+ CALL_SNDSTR_SERVER ( sendStopPlayback, (SoundStreamID id), (id) )
+ CALL_SNDSTR_SERVER ( queryIsPlaybackRunning, (SoundStreamID id, bool &b), (id, b) )
+
+// CALL_SNDSTR_SERVER ( sendStartCapture, (SoundStreamID id), (id) )
+ CALL_SNDSTR_SERVER ( sendStartCaptureWithFormat, (SoundStreamID id,
+ const SoundFormat &proposed_format,
+ SoundFormat &real_format,
+ bool force_format = false), (id, proposed_format, real_format, force_format) )
+ CALL_SNDSTR_SERVER ( sendStopCapture, (SoundStreamID id), (id) )
+ CALL_SNDSTR_SERVER ( queryIsCaptureRunning, (SoundStreamID id, bool &b, SoundFormat &sf), (id, b, sf) )
+
+ CALL_SNDSTR_SERVER ( sendStartRecording, (SoundStreamID id), (id) )
+ CALL_SNDSTR_SERVER ( sendStartRecordingWithFormat, (SoundStreamID id,
+ const SoundFormat &proposed_format,
+ SoundFormat &real_format), (id, proposed_format, real_format) )
+ CALL_SNDSTR_SERVER ( sendStopRecording, (SoundStreamID id), (id) )
+ CALL_SNDSTR_SERVER ( queryIsRecordingRunning, (SoundStreamID id, bool &b, SoundFormat &sf), (id, b, sf) )
+
+ CALL_SNDSTR_SERVER ( querySoundStreamDescription, (SoundStreamID id, QString &descr), (id, descr) )
+ CALL_SNDSTR_SERVER ( querySoundStreamRadioStation,(SoundStreamID id, const RadioStation *&rs), (id, rs) )
+
+ CALL_SNDSTR_SERVER ( queryEnumerateSoundStreams, (QMap<QString, SoundStreamID> &list), (list) )
+
+ CALL_SNDSTR_SERVER ( notifySoundStreamCreated, (SoundStreamID id), (id) )
+ CALL_SNDSTR_SERVER ( notifySoundStreamClosed, (SoundStreamID id), (id) )
+ CALL_SNDSTR_SERVER ( notifySoundStreamRedirected, (SoundStreamID oldID, SoundStreamID newID), (oldID, newID) )
+
+ // e.g description or whatever changed
+ CALL_SNDSTR_SERVER ( notifySoundStreamChanged, (SoundStreamID id), (id) )
+
+ CALL_SNDSTR_SERVER ( notifySoundStreamData, (SoundStreamID id, const SoundFormat &f, const char *data, size_t size, size_t consumed_size, const SoundMetaData &md), (id, f, data, size, consumed_size, md) )
+ CALL_SNDSTR_SERVER ( notifyReadyForPlaybackData, (SoundStreamID id, size_t size), (id, size) )
+
+protected:
+
+ SoundStreamID createNewSoundStream(bool notify = true) const;
+ SoundStreamID createNewSoundStream(SoundStreamID old_id, bool notify = true) const;
+ void closeSoundStream(SoundStreamID id, bool notify = true);
+
+ static QString createNewSoundStreamClientID();
+ void setSoundStreamClientID(const QString &s);
+
+ QString m_SoundStreamClientID;
+
+ cmplInterface *m_Server;
+};
+
+
+#endif
diff --git a/kradio3/src/include/soundstreamid.h b/kradio3/src/include/soundstreamid.h
new file mode 100644
index 0000000..e7aa4d5
--- /dev/null
+++ b/kradio3/src/include/soundstreamid.h
@@ -0,0 +1,63 @@
+/***************************************************************************
+ soundstreamid.h - description
+ -------------------
+ begin : Sun Aug 1 2004
+ copyright : (C) 2004 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_SOUNDSTREAMID_H
+#define KRADIO_SOUNDSTREAMID_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+class SoundStreamID {
+
+ SoundStreamID(int _id, int _phys_id);
+public:
+ SoundStreamID();
+ SoundStreamID(const SoundStreamID &org);
+
+ SoundStreamID &operator = (const SoundStreamID &id);
+
+ static SoundStreamID createNewID();
+ static SoundStreamID createNewID(const SoundStreamID &oldID);
+
+ bool operator == (const SoundStreamID id) const { return m_ID == id.m_ID; }
+ bool operator != (const SoundStreamID id) const { return m_ID != id.m_ID; }
+ bool operator > (const SoundStreamID id) const { return m_ID > id.m_ID; }
+ bool operator < (const SoundStreamID id) const { return m_ID < id.m_ID; }
+ bool operator >= (const SoundStreamID id) const { return m_ID >= id.m_ID; }
+ bool operator <= (const SoundStreamID id) const { return m_ID <= id.m_ID; }
+
+ bool HasSamePhysicalID(const SoundStreamID &x) const { return m_PhysicalID == x.m_PhysicalID; }
+
+ bool isValid() const { return m_ID != 0; } // m_PhysicalID is not checked!
+ void invalidate();
+
+ static const SoundStreamID InvalidID;
+
+ int getID() const { return m_ID; }
+ int getPhysicalID() const { return m_PhysicalID; }
+
+protected:
+ unsigned m_ID;
+ unsigned m_PhysicalID;
+ static unsigned nextID;
+ static unsigned nextPhysicalID;
+};
+
+
+#endif
+
diff --git a/kradio3/src/include/standardscandialog.h b/kradio3/src/include/standardscandialog.h
new file mode 100644
index 0000000..475457b
--- /dev/null
+++ b/kradio3/src/include/standardscandialog.h
@@ -0,0 +1,100 @@
+/***************************************************************************
+ standardscandialog.h - description
+ -------------------
+ begin : Son Aug 3 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_STANDARDSCANDIALOG_H
+#define KRADIO_STANDARDSCANDIALOG_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <standardscandialog-ui.h>
+#include "radiodevice_interfaces.h"
+#include "radio_interfaces.h"
+#include "stationlist.h"
+
+#include <qtimer.h>
+#include <qdatetime.h>
+
+class StandardScanDialog : public StandardScanDialogUI,
+ public ISeekRadioClient,
+// public IRadioSoundClient,
+ public IRadioClient
+{
+Q_OBJECT
+public:
+ StandardScanDialog(QWidget *parent);
+ ~StandardScanDialog();
+
+ bool connectI (Interface *i);
+ bool disconnectI (Interface *i);
+
+ void start();
+ void stop();
+
+ const StationList &getStations() const { return m_stations; }
+
+// ISeekRadioClient
+
+RECEIVERS:
+ bool noticeSeekStarted (bool up);
+ bool noticeSeekStopped ();
+ bool noticeSeekFinished (const RadioStation &s, bool goodQuality);
+ bool noticeProgress (float f);
+
+// // ISoundRadioClient
+//
+// RECEIVERS:
+// bool noticeVolumeChanged(float /*v*/) { return false; }
+// bool noticeTrebleChanged(float /*v*/) { return false; }
+// bool noticeBassChanged(float /*v*/) { return false; }
+// bool noticeBalanceChanged(float /*v*/) { return false; }
+// bool noticeSignalQualityChanged(float /*q*/) { return false; }
+// bool noticeSignalQualityChanged(bool /*good*/) { return false; }
+// bool noticeSignalMinQualityChanged(float /*q*/) { return false; }
+// bool noticeStereoChanged(bool /*s*/) { return false; }
+// bool noticeMuted(bool /*m*/) { return false; }
+
+// IRadioClient
+
+RECEIVERS:
+ bool noticePowerChanged(bool on);
+ bool noticeStationChanged (const RadioStation &, int /*idx*/){ return false; }
+ bool noticeStationsChanged(const StationList &/*sl*/) { return false; }
+ bool noticePresetFileChanged(const QString &/*f*/) { return false; }
+
+ bool noticeCurrentSoundStreamIDChanged(SoundStreamID /*id*/) { return false; }
+
+protected slots:
+
+ void slotCancelDone();
+
+protected:
+
+ int m_count;
+ bool m_running;
+ bool m_oldPowerOn;
+ RadioStation *m_oldStation;
+ QDateTime m_startTime;
+
+ StationList m_stations;
+
+ bool m_ignorePower;
+};
+
+
+#endif
diff --git a/kradio3/src/include/station-drag-object.h b/kradio3/src/include/station-drag-object.h
new file mode 100644
index 0000000..d65e7a6
--- /dev/null
+++ b/kradio3/src/include/station-drag-object.h
@@ -0,0 +1,39 @@
+/***************************************************************************
+ station-drag-object.h - description
+ -------------------
+ begin : Sun Aug 28 2005
+ copyright : (C) 2005 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_STATION_DRAG_OBJECT_H
+#define KRADIO_STATION_DRAG_OBJECT_H
+
+#include <qdragobject.h>
+
+class StationDragObject : public QStoredDrag
+{
+public:
+ StationDragObject(const QStringList &stationIDs, QWidget *dragSource = NULL, const char * name = NULL);
+ StationDragObject(QWidget *dragSource = NULL, const char * name = NULL);
+ virtual ~StationDragObject();
+
+ const char *format(int i = 0) const;
+
+ void setStations(const QStringList &stationIDs);
+
+ static bool canDecode (const QMimeSource *e);
+ static bool decode (const QMimeSource *e, QStringList &stationIDs);
+};
+
+#endif
+
diff --git a/kradio3/src/include/stationlist.h b/kradio3/src/include/stationlist.h
new file mode 100644
index 0000000..70fbd32
--- /dev/null
+++ b/kradio3/src/include/stationlist.h
@@ -0,0 +1,159 @@
+/***************************************************************************
+ stationlist.h - description
+ -------------------
+ begin : Sat March 29 2003
+ copyright : (C) 2003 by Klas Kalass
+ email : klas@kde.org
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef STATIONLIST_H
+#define STATIONLIST_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "stationlistmetadata.h"
+#include "errorlog-interfaces.h"
+
+#include <qptrlist.h>
+
+class RadioStation;
+class KURL;
+
+/*
+
+ Why an own Station List ?
+
+ RadioStations are used everywhere. But who is responsible for them?
+ Especially after a list merge?
+
+ A very simple solution should be a StationList with "deep copies". Though
+ this is not very efficient, we can assume, that copy operations do not
+ take place very often and thus are not critical.
+
+
+ Why don't we use QValueList then?
+
+ We are using polymorphic radio stations, thus we cannot use a template
+ using instances of a base class and copying them with a copy constructor.
+ But as each derived class has its own copy() function, we are able to create
+ exact copies from a pointer with the type of our base class "RadioStation".
+
+*/
+
+
+class RawStationList : public QPtrList<RadioStation>
+{
+public:
+
+ typedef QPtrListIterator<RadioStation> Iterator;
+ typedef QPtrList<RadioStation> BaseClass;
+
+public:
+ RawStationList ();
+ RawStationList (const RawStationList &sl);
+ ~RawStationList ();
+
+ // overwrite all insert-methods in order to change
+ // multiple insertion of same station_id into an update
+
+ bool insert (uint index, const RadioStation *item);
+ bool insert (const RadioStation *item);
+ void inSort (const RadioStation *item);
+ void prepend (const RadioStation *item);
+ void append (const RadioStation *item);
+ bool replace (uint index, const RadioStation *item);
+
+ // simplify stationIDSearch
+
+ const RadioStation & stationWithID(const QString &sid) const;
+ RadioStation & stationWithID(const QString &sid);
+
+ int idxWithID(const QString &sid) const;
+
+ bool operator == (const RawStationList &l) const;
+ bool operator != (const RawStationList &l) const { return !operator==(l); }
+
+protected:
+
+ QPtrCollection::Item newItem (QPtrCollection::Item s);
+ void deleteItem (QPtrCollection::Item s);
+
+ int compareItems (QPtrCollection::Item a, QPtrCollection::Item b);
+};
+
+
+
+
+/**
+ * Contains a list of stations, including meta data
+ * @author Klas Kalass, Ernst Martin Witte
+ */
+
+class StationList {
+public:
+ StationList();
+ StationList(const StationList &sl);
+ ~StationList();
+
+ // some usefull "proxy" functions
+
+ int count() const { return m_all.count(); }
+ const RadioStation & at(int idx) const;
+ RadioStation & at(int idx);
+
+ const RadioStation & stationWithID(const QString &sid) const;
+ RadioStation & stationWithID(const QString &sid);
+
+ // all stations, with full access
+ RawStationList & all() { return m_all; }
+ RawStationList const & all() const { return m_all; }
+
+ // the meta data for this station List, with full access
+ StationListMetaData & metaData() { return m_metaData; }
+ StationListMetaData const & metaData() const { return m_metaData; }
+
+ // we do not need a special matchingStation/find/... method because
+ // it is already implemented in RawStationList
+
+ /**
+ * merges the other list into this one. creates copies from the stations.
+ */
+ void merge(const StationList &other);
+
+ // assignment
+
+ StationList &operator = (const StationList &sl);
+
+
+ // xml in/out
+
+ bool readXML (const QString &dat, const IErrorLogClient &logger, bool enableMessageBox = true);
+ bool readXML (const KURL &url, const IErrorLogClient &logger, bool enableMessageBox = true);
+
+ QString writeXML (const IErrorLogClient &logger) const;
+ bool writeXML (const KURL &url, const IErrorLogClient &logger, bool enableMessageBox = true) const;
+
+
+ bool operator == (const StationList &x) const { return m_all == x.m_all && m_metaData == x.m_metaData; }
+ bool operator != (const StationList &x) const { return !operator ==(x); }
+
+protected:
+ RawStationList m_all;
+ StationListMetaData m_metaData;
+};
+
+
+extern const StationList emptyStationList;
+
+#endif
diff --git a/kradio3/src/include/stationlistmetadata.h b/kradio3/src/include/stationlistmetadata.h
new file mode 100644
index 0000000..36adb29
--- /dev/null
+++ b/kradio3/src/include/stationlistmetadata.h
@@ -0,0 +1,55 @@
+/***************************************************************************
+ stationlistmetadata.h - description
+ -------------------
+ begin : Sat March 29 2003
+ copyright : (C) 2003 by Klas Kalass
+ email : klas@kde.org
+ copyright : (C) 2002 by Martin Witte / Frank Schwanz
+ email : witte@kawo1.rwth-aachen.de / schwanz@fh-brandenburg.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef STATIONLISTMETADATA_H
+#define STATIONLISTMETADATA_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qstring.h>
+#include <qdatetime.h>
+
+/**
+ * Meta Data about a stationlist
+ * @author Martin Witte
+ */
+
+class StationListMetaData {
+public:
+ QString maintainer;
+ QDateTime lastChange;
+ QString country;
+ QString city;
+ QString media;
+ QString comment;
+
+ bool operator != (const StationListMetaData &x) const { return !operator ==(x); }
+ bool operator == (const StationListMetaData &x) const {
+ return maintainer == x.maintainer &&
+ lastChange == x.lastChange &&
+ country == x.country &&
+ city == x.city &&
+ media == x.media &&
+ comment == x.comment;
+ }
+};
+
+#endif
diff --git a/kradio3/src/include/stationlistxmlhandler.h b/kradio3/src/include/stationlistxmlhandler.h
new file mode 100644
index 0000000..7386933
--- /dev/null
+++ b/kradio3/src/include/stationlistxmlhandler.h
@@ -0,0 +1,85 @@
+/***************************************************************************
+ radiocfgxmlhandler.h - description
+ -------------------
+ begin : Son Jan 12 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+#ifndef KRADIO_RADIOCFGXMLHANDLER_H
+#define KRADIO_RADIOCFGXMLHANDLER_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qxml.h>
+#include <qobject.h>
+
+#include "radiostation.h"
+#include "stationlist.h"
+
+class StationListXmlHandler : public QXmlDefaultHandler
+{
+protected:
+ QStringList m_status;
+ const IErrorLogClient&m_logger;
+
+ RawStationList m_stations;
+ StationListMetaData m_metaData;
+
+ RadioStation *m_newStation;
+
+ bool m_compatMode;
+
+public :
+ StationListXmlHandler (const IErrorLogClient &logger);
+ virtual ~StationListXmlHandler ();
+ bool startDocument ();
+ bool startElement (const QString &ns, const QString &localname,
+ const QString& qname, const QXmlAttributes &);
+ bool endElement (const QString &ns, const QString &localname,
+ const QString &qname);
+ bool characters (const QString &ch);
+
+ const RawStationList &getStations() const { return m_stations; }
+ const StationListMetaData &getMetaData() const { return m_metaData; }
+
+
+ bool wasCompatMode() const { return m_compatMode; }
+
+protected:
+
+ void clearNewStation();
+};
+
+
+
+extern const char *KRadioConfigElement;
+extern const char *StationListElement;
+
+extern const char *StationListInfo;
+extern const char *StationListInfoMaintainer;
+extern const char *StationListInfoCountry;
+extern const char *StationListInfoCity;
+extern const char *StationListInfoMedia;
+extern const char *StationListInfoComments;
+extern const char *StationListInfoChanged;
+extern const char *StationListInfoCreator;
+
+extern const char *StationQuickSelectElement;
+extern const char *StationDockingMenuElement;
+extern const char *StationListFormat;
+
+#define STATION_LIST_FORMAT "kradio-1.0"
+
+
+#endif
diff --git a/kradio3/src/include/stationselection_interfaces.h b/kradio3/src/include/stationselection_interfaces.h
new file mode 100644
index 0000000..a571147
--- /dev/null
+++ b/kradio3/src/include/stationselection_interfaces.h
@@ -0,0 +1,67 @@
+/***************************************************************************
+ stationselection_interfaces.h - description
+ -------------------
+ begin : Son Aug 3 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_STATIONSELECTION_INTERFACES_H
+#define KRADIO_STATIONSELECTION_INTERFACES_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "interfaces.h"
+
+class QStringList;
+
+INTERFACE(IStationSelection, IStationSelectionClient)
+{
+public :
+ IF_CON_DESTRUCTOR(IStationSelection, -1)
+
+RECEIVERS:
+ IF_RECEIVER( setStationSelection(const QStringList &sl) )
+
+SENDERS:
+ IF_SENDER ( notifyStationSelectionChanged(const QStringList &sl) )
+
+ANSWERS:
+ IF_ANSWER ( const QStringList & getStationSelection () const )
+
+};
+
+
+INTERFACE(IStationSelectionClient, IStationSelection)
+{
+public :
+ IF_CON_DESTRUCTOR(IStationSelectionClient, 1)
+
+SENDERS:
+ IF_SENDER ( sendStationSelection(const QStringList &sl) )
+
+RECEIVERS:
+ IF_RECEIVER( noticeStationSelectionChanged(const QStringList &sl) )
+
+QUERIES:
+ IF_QUERY ( const QStringList & queryStationSelection () )
+
+
+RECEIVERS:
+ virtual void noticeConnectedI (cmplInterface *, bool /*pointer_valid*/);
+ virtual void noticeDisconnectedI (cmplInterface *, bool /*pointer_valid*/);
+};
+
+
+#endif
diff --git a/kradio3/src/include/stationselector.h b/kradio3/src/include/stationselector.h
new file mode 100644
index 0000000..6842877
--- /dev/null
+++ b/kradio3/src/include/stationselector.h
@@ -0,0 +1,99 @@
+/***************************************************************************
+ StationSelector.h - description
+ -------------------
+ begin : Son Aug 3 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_STATIONSELECTOR_H
+#define KRADIO_STATIONSELECTOR_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qstringlist.h>
+
+#include "radio_interfaces.h"
+#include "stationselection_interfaces.h"
+#include "stationlist.h"
+
+#include <stationselector-ui.h>
+#include "radiostation-listview.h"
+
+
+class RadioStationListView;
+
+class StationSelector : public StationSelectorUI,
+ public IRadioClient,
+ public IStationSelectionClient
+{
+Q_OBJECT
+public :
+ StationSelector (QWidget *parent);
+ ~StationSelector ();
+
+ bool connectI (Interface *i);
+ bool disconnectI (Interface *i);
+
+// IStationSelectionClient
+
+ bool noticeStationSelectionChanged(const QStringList &sl);
+
+// IRadioClient
+
+ bool noticePowerChanged(bool /*on*/) { return false; }
+ bool noticeStationChanged (const RadioStation &, int /*idx*/) { return false; }
+ bool noticeStationsChanged(const StationList &sl);
+ bool noticePresetFileChanged(const QString &/*f*/) { return false; }
+
+ bool noticeCurrentSoundStreamIDChanged(SoundStreamID) { return false; }
+
+ void saveState (KConfig *) const;
+ void restoreState (KConfig *);
+
+ bool isDirty () const { return m_dirty; }
+
+protected slots:
+
+ void slotButtonToLeft();
+ void slotButtonToRight();
+ void slotMoveToRight(const QStringList &list);
+ void slotMoveToLeft(const QStringList &list);
+
+ void slotOK();
+ void slotCancel();
+ void slotSetDirty();
+
+signals:
+
+ void sigDirty();
+
+protected:
+
+ void moveItem (RadioStationListView *fromListView, QStringList &fromIDList,
+ QListViewItem *item, int fromIdx,
+ RadioStationListView *toListView, QStringList &toIDList);
+
+ void updateListViews();
+
+ // station ids
+ QStringList m_stationIDsAvailable,
+ m_stationIDsSelected,
+ m_stationIDsNotDisplayed,
+ m_stationIDsAll;
+
+ bool m_dirty;
+};
+
+#endif
diff --git a/kradio3/src/include/timecontrol_interfaces.h b/kradio3/src/include/timecontrol_interfaces.h
new file mode 100644
index 0000000..ad743a4
--- /dev/null
+++ b/kradio3/src/include/timecontrol_interfaces.h
@@ -0,0 +1,106 @@
+/***************************************************************************
+ timecontrol_interfaces.h - description
+ -------------------
+ begin : Mon Mr 10 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * Interfaces in this header: *
+ * *
+ * ITimeControl(Client) *
+ * *
+ ***************************************************************************/
+
+
+#ifndef KRADIO_TIMECONTROL_INTERFACES_H
+#define KRADIO_TIMECONTROL_INTERFACES_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "interfaces.h"
+#include "alarm.h"
+
+INTERFACE(ITimeControl, ITimeControlClient)
+{
+public :
+ IF_CON_DESTRUCTOR(ITimeControl, -1)
+
+RECEIVERS:
+ IF_RECEIVER( setAlarms(const AlarmVector &sl) )
+ IF_RECEIVER( setCountdownSeconds(int n) )
+ IF_RECEIVER( startCountdown() )
+ IF_RECEIVER( stopCountdown() )
+
+
+SENDERS:
+ IF_SENDER ( notifyAlarmsChanged(const AlarmVector &sl) )
+ IF_SENDER ( notifyAlarm(const Alarm &) )
+ IF_SENDER ( notifyNextAlarmChanged(const Alarm *) )
+ IF_SENDER ( notifyCountdownStarted(const QDateTime &end) )
+ IF_SENDER ( notifyCountdownStopped() )
+ IF_SENDER ( notifyCountdownZero() )
+ IF_SENDER ( notifyCountdownSecondsChanged(int n) )
+
+
+ANSWERS:
+ IF_ANSWER ( QDateTime getNextAlarmTime () const )
+ IF_ANSWER ( const Alarm* getNextAlarm () const )
+ IF_ANSWER ( const AlarmVector & getAlarms () const )
+ IF_ANSWER ( int getCountdownSeconds () const )
+ IF_ANSWER ( QDateTime getCountdownEnd () const )
+
+};
+
+
+INTERFACE(ITimeControlClient, ITimeControl)
+{
+public :
+ IF_CON_DESTRUCTOR(ITimeControlClient, 1)
+
+SENDERS:
+ IF_SENDER ( sendAlarms(const AlarmVector &sl) )
+ IF_SENDER ( sendCountdownSeconds(int n) )
+ IF_SENDER ( sendStartCountdown() )
+ IF_SENDER ( sendStopCountdown() )
+
+
+RECEIVERS:
+ IF_RECEIVER( noticeAlarmsChanged(const AlarmVector &sl) )
+ IF_RECEIVER( noticeAlarm(const Alarm &) )
+ IF_RECEIVER( noticeNextAlarmChanged(const Alarm *) )
+ IF_RECEIVER( noticeCountdownStarted(const QDateTime &end) )
+ IF_RECEIVER( noticeCountdownStopped() )
+ IF_RECEIVER( noticeCountdownZero() )
+ IF_RECEIVER( noticeCountdownSecondsChanged(int n) )
+
+
+QUERIES:
+ IF_QUERY ( QDateTime queryNextAlarmTime() )
+ IF_QUERY ( const Alarm* queryNextAlarm () )
+ IF_QUERY ( const AlarmVector & queryAlarms () )
+ IF_QUERY ( int queryCountdownSeconds () )
+ IF_QUERY ( QDateTime queryCountdownEnd () )
+
+RECEIVERS:
+ virtual void noticeConnectedI (cmplInterface *, bool /*pointer_valid*/);
+ virtual void noticeDisconnectedI (cmplInterface *, bool /*pointer_valid*/);
+};
+
+
+
+
+#endif
diff --git a/kradio3/src/include/utils.h b/kradio3/src/include/utils.h
new file mode 100644
index 0000000..4e93293
--- /dev/null
+++ b/kradio3/src/include/utils.h
@@ -0,0 +1,47 @@
+/***************************************************************************
+ utils.h - description
+ -------------------
+ begin : Sun Feb 3 2002
+ copyright : (C) 2002 by Martin Witte / Frank Schwanz
+ email : witte@kawo1.rwth-aachen.de / schwanz@fh-brandenburg.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_UTILS_H
+#define KRADIO_UTILS_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+using namespace std;
+
+#include <kconfig.h>
+#include <klocale.h>
+#include <kdebug.h>
+#include <qstring.h>
+#define __USE_ISOC99 1
+#include <math.h>
+
+//extern const char *mixerChannelLabels[];
+//extern const char *mixerChannelNames[];
+
+extern QString XMLEscape (const QString &s);
+QString xmlOpenTag (const QString &tag, bool newline = true);
+QString xmlTag (const QString &tag, const QString &s, bool newline = true);
+QString xmlTag (const QString &tag, int i, bool newline = true);
+QString xmlTag (const QString &tag, float f, bool newline = true);
+QString xmlCloseTag (const QString &tag, bool newline = true);
+
+template<class T1, class T2> inline T1 min (T1 a, T2 b) { return a < b ? a : b; }
+template<class T1, class T2> inline T1 max (T1 a, T2 b) { return a < b ? b : a; }
+
+#endif
diff --git a/kradio3/src/include/widgetplugins.h b/kradio3/src/include/widgetplugins.h
new file mode 100644
index 0000000..c138df3
--- /dev/null
+++ b/kradio3/src/include/widgetplugins.h
@@ -0,0 +1,75 @@
+/***************************************************************************
+ widgetplugins.h - description
+ -------------------
+ begin : Mi Aug 27 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRADIO_WIDGETPLUGINS_INTERFACES_H
+#define KRADIO_WIDGETPLUGINS_INTERFACES_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "plugins.h"
+
+class QWidget;
+
+class WidgetPluginBase : public PluginBase
+{
+public :
+ WidgetPluginBase(const QString &name, const QString &description);
+
+ virtual void saveState (KConfig *) const;
+ virtual void restoreState (KConfig *);
+ virtual void restoreState (KConfig *, bool showByDefault);
+ virtual void startPlugin();
+
+ virtual QWidget *getWidget() = 0;
+ virtual const QWidget *getWidget() const = 0;
+
+ virtual bool isReallyVisible(const QWidget *w = NULL) const;
+ virtual bool isAnywhereVisible(const QWidget *w = NULL) const;
+ virtual void showOnOrgDesktop () = 0;
+
+protected:
+ virtual void pShowOnOrgDesktop ();
+ virtual void pShow ();
+ virtual void pShow (bool show);
+ virtual void pHide ();
+ virtual void pToggleShown ();
+
+ virtual void pShowEvent(QShowEvent *);
+ virtual void pHideEvent(QHideEvent *);
+
+ virtual void notifyManager(bool shown);
+
+ virtual void getKWinState(const QWidget *w = NULL) const;
+
+protected:
+ // temporary data
+ mutable bool m_geoCacheValid;
+ mutable bool m_saveMinimized;
+ mutable bool m_saveMaximized;
+ mutable bool m_saveSticky;
+ mutable int m_saveDesktop;
+ mutable QRect m_saveGeometry;
+
+ bool m_geoRestoreFlag;
+ bool m_restoreShow;
+};
+
+
+
+#endif
diff --git a/kradio3/src/internetradiostation.cpp b/kradio3/src/internetradiostation.cpp
new file mode 100644
index 0000000..f3e5029
--- /dev/null
+++ b/kradio3/src/internetradiostation.cpp
@@ -0,0 +1,176 @@
+/***************************************************************************
+ internetradiostation.cpp - description
+ -------------------
+ begin : Sat March 29 2003
+ copyright : (C) 2003 by Klas Kalass
+ email : klas@kde.org
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "include/internetradiostation.h"
+#include <typeinfo>
+#include "include/radiostation-config.h"
+
+/////////////////////////////////////////////////////////////////////////////
+
+const char *StationUrlElement = "url";
+
+static InternetRadioStation emptyInternetRadioStation(registerStationClass);
+
+/////////////////////////////////////////////////////////////////////////////
+
+InternetRadioStation::InternetRadioStation()
+ : RadioStation(),
+ m_url()
+{
+}
+
+InternetRadioStation::InternetRadioStation(const KURL &url)
+ : RadioStation(),
+ m_url(url)
+{
+}
+
+InternetRadioStation::InternetRadioStation(const QString &name,
+ const QString &shortName,
+ const KURL &url)
+ : RadioStation(name, shortName),
+ m_url(url)
+{
+}
+
+InternetRadioStation::InternetRadioStation(const InternetRadioStation &s)
+ : RadioStation(s),
+ m_url(s.m_url)
+{
+}
+
+
+InternetRadioStation::InternetRadioStation(RegisterStationClass, const QString &classname)
+ : RadioStation(registerStationClass, !classname.isNull() ? classname : getClassName()),
+ m_url()
+{
+}
+
+
+/** returns an exact copy of this station*/
+RadioStation *InternetRadioStation::copy() const
+{
+ return new InternetRadioStation(*this);
+}
+
+RadioStation *InternetRadioStation::copyNewID() const
+{
+ RadioStation *x = new InternetRadioStation(*this);
+ x->generateNewStationID();
+ return x;
+}
+
+InternetRadioStation::~InternetRadioStation()
+{
+}
+
+
+/* = 0 : this.url = s.url
+ > 0 : this.url > s.url
+ < 0 : this.url < s.url
+ other class than FrequencyRadioStation: compare typeid(.).name()
+*/
+int InternetRadioStation::compare(const RadioStation &_s) const
+{
+ InternetRadioStation const *s = dynamic_cast<InternetRadioStation const*>(&_s);
+
+ if (!s)
+ return (typeid(this).name() > typeid(&_s).name()) ? 1 : -1;
+
+ QString thisurl = m_url.url(-1); // -1: remove trailing '/'
+ QString thaturl = s->m_url.url(-1);
+
+ // empty urls are never identical
+ if (thisurl.length () == 0)
+ return -1;
+ if (thaturl.length() == 0)
+ return 1;
+
+ return thisurl.compare(thaturl);
+}
+
+
+
+bool InternetRadioStation::isValid() const
+{
+ // TODO: maybe we need to do more to validate this...
+ return !m_url.isEmpty();
+}
+
+QString InternetRadioStation::longName() const
+{
+ QString longN = name();
+ if (!longN.isEmpty()) {
+ longN = i18n("%1, %2").arg(longN).arg(description());
+ } else {
+ longN = description();
+ }
+
+ return longN;
+}
+
+
+QString InternetRadioStation::description() const
+{
+ return m_url.url();
+}
+
+
+bool InternetRadioStation::setProperty(const QString &pn, const QString &val)
+{
+ bool retval = false;
+ if (pn == StationUrlElement) {
+ m_url = val;
+ retval = true;
+ } else {
+ retval = RadioStation::setProperty(pn, val);
+ }
+ return retval;
+}
+
+QString InternetRadioStation::getProperty(const QString &pn) const
+{
+ if (pn == StationUrlElement) {
+ return m_url.url();
+ } else {
+ return RadioStation::getProperty(pn);
+ }
+}
+
+QStringList InternetRadioStation::getPropertyNames() const
+{
+ QStringList l = RadioStation::getPropertyNames();
+ l.push_back(StationUrlElement);
+ return l;
+}
+
+
+RadioStationConfig *InternetRadioStation::createEditor() const
+{
+ return new UndefinedRadioStationConfig(NULL);
+}
+
+bool InternetRadioStation::operator == (const RadioStation &x) const
+{
+ if (!RadioStation::operator == (x))
+ return false;
+
+ InternetRadioStation const *fx = dynamic_cast<InternetRadioStation const*>(&x);
+ if (!fx)
+ return false;
+ return m_url == fx->m_url;
+}
diff --git a/kradio3/src/kradio.desktop b/kradio3/src/kradio.desktop
new file mode 100644
index 0000000..3d70ff8
--- /dev/null
+++ b/kradio3/src/kradio.desktop
@@ -0,0 +1,13 @@
+# KDE Config File
+[Desktop Entry]
+Encoding=UTF-8
+Type=Application
+Exec=kradio -caption "%c" %i %m
+Icon=kradio.png
+DocPath=kradio/index.html
+Comment=
+Comment[de]=
+Terminal=false
+Name=KRadio
+Name[de]=KRadio
+Categories=Qt;KDE;AudioVideo;
diff --git a/kradio3/src/kradioapp.cpp b/kradio3/src/kradioapp.cpp
new file mode 100644
index 0000000..0f2dca6
--- /dev/null
+++ b/kradio3/src/kradioapp.cpp
@@ -0,0 +1,370 @@
+/**************************************************************************
+ kradioapp.cpp - description
+ -------------------
+ begin : Sa Feb 9 CET 2002
+ copyright : (C) 2002 by Klas Kalass / Martin Witte / Frank Schwanz
+ email : klas.kalass@gmx.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+
+#include <kaboutdata.h>
+#include <klocale.h>
+#include <klibloader.h>
+#include <kconfig.h>
+#include <kmessagebox.h>
+#include <kstandarddirs.h>
+
+// #include <kprogress.h>
+
+#include "include/kradioapp.h"
+#include "include/aboutwidget.h"
+#include "include/errorlog-interfaces.h"
+
+#include "include/debug-profiler.h"
+
+/////////////////////////////////////////////////////////////////////////////
+//// KRadioAbout
+
+AboutPageInfo KRadioAbout::createAboutPage ()
+{
+ const char *description = I18N_NOOP(
+ "KRadio - The Radio Application for KDE"
+ "<P>"
+ "With KRadio you can listen to radio broadcasts with the help of your "
+ "V4L/V4L2 compatible radio card."
+ "<P>"
+ "The KRadio Project contains a station preset data database. To complete "
+ "this database you are encouraged to contribute your station preset file "
+ "to the project. Just send it to one of the authors. "
+ "<P>"
+ "If you like to contribute your ideas, your own plugins or translations, "
+ "don't hesitate to contact one of the authors."
+ "<P>"
+ );
+
+ KAboutData aboutData("kradio", "KRadio",
+ VERSION,
+ description,
+ KAboutData::License_GPL,
+ "(c) 2002-2006 Martin Witte, Klas Kalass",
+ 0,
+ "http://sourceforge.net/projects/kradio",
+ 0);
+ aboutData.addAuthor("Martin Witte", I18N_NOOP("Preset Database, Remote Control Support, Alarms, Rewrite for KRadio 0.3.0, Misc"), "witte@kawo1.rwth-aachen.de");
+ aboutData.addAuthor("Marcus Camen", I18N_NOOP("Buildsystem, Standards Conformance, Cleanups"), "mcamen@mcamen.de");
+ aboutData.addAuthor("Klas Kalass", I18N_NOOP("Miscellaneous"), "klas.kalass@gmx.de");
+ aboutData.addAuthor("Frank Schwanz", I18N_NOOP("idea, first basic application"), "schwanz@fh-brandenburg.de");
+
+ aboutData.addCredit(I18N_NOOP("Many People around the World ... "),
+ I18N_NOOP("... which contributed station preset files \n"
+ "and tested early and unstable snapshots of KRadio \n"
+ "with much patience"));
+
+ return AboutPageInfo(
+ new KRadioAboutWidget(aboutData, KRadioAboutWidget::AbtAppStandard),
+ "KRadio",
+ "KRadio",
+ "kradio"
+ );
+}
+
+
+/////////////////////////////////////////////////////////////////////////////
+//// PluginLibraryInfo
+
+PluginLibraryInfo::PluginLibraryInfo (const QString &lib_name)
+ : library (NULL),
+ init_func(NULL),
+ info_func(NULL),
+ libload_func(NULL),
+ libunload_func(NULL)
+{
+ library = KLibLoader::self()->library(lib_name.ascii());
+ if (library) {
+ info_func = (t_kradio_plugin_info_func) library->symbol("KRadioPlugin_GetAvailablePlugins");
+ init_func = (t_kradio_plugin_init_func) library->symbol("KRadioPlugin_CreatePlugin");
+ libload_func = (t_kradio_plugin_libload_func) library->symbol("KRadioPlugin_LoadLibrary");
+ libunload_func = (t_kradio_plugin_libunload_func)library->symbol("KRadioPlugin_UnloadLibrary");
+ if (info_func && init_func && libload_func && libunload_func) {
+ libload_func();
+ info_func(plugins);
+ } else {
+ KMessageBox::error(NULL,
+ i18n("Library %1: Plugin Entry Point is missing\n")
+ .arg(lib_name),
+ i18n("Plugin Library Load Error"));
+ library->unload();
+ info_func = NULL;
+ init_func = NULL;
+ library = NULL;
+ }
+ } else {
+ KMessageBox::error(NULL,
+ i18n("Library %1: \n%2")
+ .arg(lib_name)
+ .arg(KLibLoader::self()->lastErrorMessage()),
+ i18n("Plugin Library Load Error"));
+ }
+}
+
+
+/////////////////////////////////////////////////////////////////////////////
+//// KRadioApp
+
+KRadioApp::KRadioApp()
+ : KApplication(),
+ m_quitting(false)
+{
+ m_Instances.setAutoDelete(true);
+ connect(this, SIGNAL(aboutToQuit()), this, SLOT(slotAboutToQuit()));
+}
+
+
+KRadioApp::~KRadioApp()
+{
+ IErrorLogClient::staticLogDebug("KRadioApp::~KRadioApp()");
+}
+
+void KRadioApp::saveState()
+{
+ IErrorLogClient::staticLogDebug(i18n("saveState"));
+ saveState(KGlobal::config());
+}
+
+void KRadioApp::saveState (KConfig *c)
+{
+ c->setGroup("Global");
+ c->writeEntry("instances", m_Instances.count());
+
+ int i = 0;
+ QDictIterator<PluginManager> it(m_Instances);
+ for (; it.current(); ++it, ++i) {
+ c->setGroup("Global");
+ c->writeEntry("instance_name_" + QString::number(i), it.currentKey());
+ it.current()->saveState(c);
+ }
+
+ c->setGroup("Plugin Libraries");
+ c->writeEntry("count", m_PluginLibraries.count());
+ int idx = 0;
+ QMapConstIterator<QString, PluginLibraryInfo> end = m_PluginLibraries.end();
+ for (QMapConstIterator<QString, PluginLibraryInfo> it = m_PluginLibraries.begin(); it != end; ++it, ++idx) {
+ c->writeEntry("library_" + QString::number(idx), it.key());
+ }
+
+ c->sync();
+}
+
+
+void KRadioApp::restoreState (KConfig *c)
+{
+ BlockProfiler profiler("KRadioApp::restoreState - loadLibraries");
+
+ c->setGroup("Plugin Libraries");
+ int n_libs = c->readNumEntry("count", 0);
+
+// KProgressDialog *progress = new KProgressDialog(NULL, NULL, i18n("Loading Plugin Libraries"));
+// progress->setMinimumWidth(400);
+// progress->setAllowCancel(false);
+// progress->QWidget::setCaption(i18n("KRadio - Loading Plugin Libraries"));
+// progress->show();
+
+/* progress->progressBar()->setTotalSteps(n_libs);*/
+ for (int idx = 0; idx < n_libs; ++idx) {
+ QString lib = c->readEntry("library_" + QString::number(idx), QString::null);
+ if (lib.length()) {
+ LoadLibrary(lib);
+// progress->progressBar()->setProgress(idx+1);
+ }
+ }
+
+ if (n_libs < 6) { // this seems to be a meaningful minimum value for a working kradio setup
+ QStringList libs
+ = KGlobal::dirs()->findAllResources("lib", "kradio/plugins/*.so");
+ QValueListIterator<QString> end = libs.end();
+ int idx = 0;
+// progress->progressBar()->setTotalSteps(libs.count());
+ for (QValueListIterator<QString> it = libs.begin(); it != end; ++it, ++idx) {
+ LoadLibrary(*it);
+// progress->progressBar()->setProgress(idx+1);
+ }
+ }
+
+// delete progress;
+
+ profiler.stop();
+
+ c->setGroup("Global");
+
+ BlockProfiler rest_profiler("KRadioApp::restoreState - restore");
+
+ int n = c->readNumEntry("instances", 1);
+ if (n < 1 || n > 10)
+ n = 1;
+
+ for (int i = 0; i < n; ++i) {
+ c->setGroup("Global");
+ QString name = c->readEntry("instance_name_" + QString::number(i),
+ n > 1 ? (i18n("Instance") + " " + QString::number(i+1)) : QString(""));
+ createNewInstance(name)->restoreState(c);
+ }
+}
+
+
+PluginManager *KRadioApp::createNewInstance(const QString &_name)
+{
+ BlockProfiler profiler("KRadioApp::createNewInstance");
+
+ QString instance_name = _name;
+ QString title_ext = "";
+ QString id = QString::number(m_Instances.count()+1);
+ if (instance_name.length() == 0) {
+ instance_name = "Instance " + id;
+ }
+ if (_name.length() && m_Instances.count() > 0) {
+ title_ext = " " + instance_name;
+ }
+ PluginManager *pm = new PluginManager ( instance_name,
+ this,
+ i18n("KRadio Configuration") + title_ext,
+ i18n("About KRadio Components") + title_ext
+ );
+
+ m_Instances.insert(instance_name, pm);
+
+ /* Until we don't have library plugins we must instantiate them hard-wired */
+ KRadioAbout *about = new KRadioAbout ( "kradio-about-" + instance_name);
+ pm->insertPlugin(about);
+
+ return pm;
+}
+
+
+KLibrary *KRadioApp::LoadLibrary (const QString &library)
+{
+ BlockProfiler profiler("KRadioApp::LoadLibrary");
+ BlockProfiler libprofiler("KRadioApp::LoadLibrary - " + library);
+
+ PluginLibraryInfo libinfo(library);
+ if (libinfo.valid()) {
+ m_PluginLibraries.insert(library, libinfo);
+ QMapConstIterator<QString,QString> end = libinfo.plugins.end();
+ for (QMapConstIterator<QString,QString> it = libinfo.plugins.begin(); it != end; ++it) {
+ m_PluginInfos.insert(it.key(), PluginClassInfo (it.key(), *it, libinfo.init_func));
+ }
+ } else {
+ kdDebug() << QDateTime::currentDateTime().toString(Qt::ISODate)
+ << " "
+ << i18n("Error: Loading Library %1 failed: %2")
+ .arg(library).arg(KLibLoader::self()->lastErrorMessage())
+ << endl;
+ }
+
+ for (QDictIterator<PluginManager> it_managers(m_Instances); it_managers.current(); ++it_managers) {
+ it_managers.current()->noticeLibrariesChanged();
+ }
+
+ return libinfo.valid() ? libinfo.library : NULL;
+}
+
+
+void KRadioApp::UnloadLibrary (const QString &library)
+{
+ if (!m_PluginLibraries.contains(library))
+ return;
+
+ PluginLibraryInfo info = m_PluginLibraries[library];
+
+ QMapConstIterator<QString, QString> end_classes = info.plugins.end();
+ for (QMapConstIterator<QString, QString> it_classes = info.plugins.begin(); it_classes != end_classes; ++it_classes) {
+ for (QDictIterator<PluginManager> it_managers(m_Instances); it_managers.current(); ++it_managers) {
+ it_managers.current()->unloadPlugins(it_classes.key());
+ }
+ m_PluginInfos.remove(it_classes.key());
+ }
+ m_PluginLibraries.remove(library);
+
+ info.libunload_func();
+ info.library->unload();
+
+ for (QDictIterator<PluginManager> it_managers(m_Instances); it_managers.current(); ++it_managers) {
+ it_managers.current()->noticeLibrariesChanged();
+ }
+}
+
+
+PluginBase *KRadioApp::CreatePlugin (PluginManager *manager, const QString &class_name, const QString &object_name)
+{
+ BlockProfiler all_profiler ("KRadioApp::CreatePlugin");
+ BlockProfiler class_profiler("KRadioApp::CreatePlugin - " + class_name);
+
+ BlockProfiler create_profiler("KRadioApp::CreatePlugin - create");
+
+ PluginBase *retval = NULL;
+ if (m_PluginInfos.contains(class_name)) {
+ retval = m_PluginInfos[class_name].CreateInstance(object_name);
+ if (!retval) {
+ kdDebug() << QDateTime::currentDateTime().toString(Qt::ISODate)
+ << " "
+ << i18n("Error: Creation of instance \"%1\" of class %2 falied.").arg(object_name).arg(class_name)
+ << endl;
+ }
+ } else {
+ kdDebug() << QDateTime::currentDateTime().toString(Qt::ISODate)
+ << " "
+ << i18n("Error: Cannot create instance \"%1\" of unknown class %2.").arg(object_name).arg(class_name)
+ << endl;
+ }
+
+ create_profiler.stop();
+
+ if (retval) {
+
+ BlockProfiler insert_profiler("KRadioApp::CreatePlugin - insert");
+ manager->insertPlugin(retval);
+ insert_profiler.stop();
+
+ //BlockProfiler restore_profiler("KRadioApp::CreatePlugin - restore");
+ //retval->restoreState(KGlobal::config());
+ }
+
+ return retval;
+}
+
+void KRadioApp::startPlugins()
+{
+ QDictIterator<PluginManager> it(m_Instances);
+ for (; it.current(); ++it) {
+ it.current()->startPlugins();
+ }
+}
+
+void KRadioApp::slotAboutToQuit()
+{
+ IErrorLogClient::staticLogDebug("slotAboutToQuit");
+ if (!m_quitting) {
+ IErrorLogClient::staticLogDebug("slotAboutToQuit, m_quitting = false");
+ m_quitting = true;
+ saveState();
+ QDictIterator<PluginManager> it(m_Instances);
+ for (; it.current(); ++it) {
+ it.current()->aboutToQuit();
+ }
+ m_quitting = false;
+ }
+}
+
+#include "kradioapp.moc"
diff --git a/kradio3/src/main.cpp b/kradio3/src/main.cpp
new file mode 100644
index 0000000..443d6bf
--- /dev/null
+++ b/kradio3/src/main.cpp
@@ -0,0 +1,73 @@
+/***************************************************************************
+ main.cpp - description
+ -------------------
+ begin : Don Mr 8 21:57:17 CET 2001
+ copyright : (C) 2001-2005 by Ernst Martin Witte, Frank Schwanz
+ email : witte@kawo1.rwth-aachen.de, schwanz@fh-brandenburg.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include <kcmdlineargs.h>
+#include <kaboutdata.h>
+#include <klocale.h>
+
+#include "include/kradioversion.h"
+#include "include/kradioapp.h"
+
+#include "include/debug-profiler.h"
+
+static KCmdLineOptions options[] =
+{
+ { 0, 0, 0 }
+};
+
+int main(int argc, char *argv[])
+{
+ BlockProfiler profiler_about("main::aboutdata");
+
+ KAboutData aboutData("kradio", I18N_NOOP("KRadio"),
+ KRADIO_VERSION, "KRadio", KAboutData::License_GPL,
+ "(c) 2002-2005 Martin Witte, Klas Kalass, Frank Schwanz",
+ 0,
+ "http://sourceforge.net/projects/kradio",
+ 0);
+ aboutData.addAuthor("Martin Witte", I18N_NOOP("rewrite for 0.3.0, recording, lirc support, alarms, misc"), "witte@kawo1.rwth-aachen.de");
+ aboutData.addAuthor("Marcus Camen", I18N_NOOP("Buildsystem, Standards Conformance, Cleanups"), "mcamen@mcamen.de");
+ aboutData.addAuthor("Klas Kalass", I18N_NOOP("Miscellaneous"), "klas.kalass@gmx.de");
+ aboutData.addAuthor("Frank Schwanz", I18N_NOOP("idea, first basic application"), "schwanz@fh-brandenburg.de");
+
+ KCmdLineArgs::init( argc, argv, &aboutData );
+ KCmdLineArgs::addCmdLineOptions( options ); // Add our own options.
+
+ profiler_about.stop();
+
+ BlockProfiler profiler_kradioapp("main::KRadioApp");
+
+ KRadioApp a;
+
+ profiler_kradioapp.stop();
+ BlockProfiler profiler_restore("main::restore");
+
+ a.restoreState(KGlobal::config());
+ a.startPlugins();
+
+ profiler_restore.stop();
+
+ int ret = a.exec();
+
+ global_time_profiler.printData();
+ global_mem_profiler.printData();
+
+ IErrorLogClient::staticLogDebug("normal shutdown");
+
+ return ret;
+}
+
diff --git a/kradio3/src/multibuffer.cpp b/kradio3/src/multibuffer.cpp
new file mode 100644
index 0000000..5ed4bd0
--- /dev/null
+++ b/kradio3/src/multibuffer.cpp
@@ -0,0 +1,131 @@
+/***************************************************************************
+ multibuffer.cpp
+ -------------------
+ begin : Sat Aug 20 2005
+ copyright : (C) 2005 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include <klocale.h>
+
+#include "include/multibuffer.h"
+
+MultiBuffer::MultiBuffer(size_t n_buffers, size_t buffersize)
+ : m_nBuffers(n_buffers),
+ m_BufferSize(buffersize),
+ m_currentReadBuffer(m_nBuffers-1), // during wait4read, this will be incremented to 0
+ m_currentWriteBuffer(0),
+ m_readLock(n_buffers),
+ m_errorString(QString::null),
+ m_error(false)
+{
+ m_readLock += m_nBuffers;
+
+ m_buffers = new char* [m_nBuffers];
+ m_buffersFill = new size_t [m_nBuffers];
+ for (size_t i = 0; i < m_nBuffers; ++i) {
+ m_buffers [i] = new char [m_BufferSize];
+ m_buffersFill[i] = 0;
+ }
+}
+
+MultiBuffer::~MultiBuffer()
+{
+ for (size_t i = 0; i < m_nBuffers; ++i) {
+ delete m_buffers[i];
+ }
+ delete m_buffers;
+ delete m_buffersFill;
+ m_buffersFill = NULL;
+ m_buffers = NULL;
+}
+
+size_t MultiBuffer::getAvailableWriteBuffer() const
+{
+ size_t bytesAvailable = m_BufferSize - m_buffersFill[m_currentWriteBuffer];
+ return m_currentWriteBuffer != m_currentReadBuffer ? bytesAvailable : 0;
+}
+
+size_t MultiBuffer::getAvailableReadBuffers() const
+{
+ return m_readLock.available();
+}
+
+char *MultiBuffer::lockWriteBuffer(size_t &bufferSize)
+{
+ size_t bytesAvailable = m_BufferSize - m_buffersFill[m_currentWriteBuffer];
+
+ if (m_currentWriteBuffer != m_currentReadBuffer && bytesAvailable > 0) {
+ bufferSize = bytesAvailable;
+ return m_buffers[m_currentWriteBuffer] + m_buffersFill[m_currentWriteBuffer];
+ }
+/* QString tmp;
+ IErrorLogClient::staticLogDebug(tmp.sprintf("current input buffer: %li", m_currentInputBuffer));
+ IErrorLogClient::staticLogDebug(tmp.sprintf("inputAvailableLock: %i", m_inputAvailableLock.available()));
+ for (size_t i = 0; i < m_config.m_EncodeBufferCount; ++i) {
+ IErrorLogClient::staticLogDebug(tmp.sprintf("input buffer %li: fill = %li", i, m_buffersInputFill[i]));
+ }
+*/
+/* m_error = true;
+ m_errorString += i18n("Buffer Overflow. ");*/
+ return NULL;
+}
+
+
+bool MultiBuffer::unlockWriteBuffer(size_t bufferSize) // return value: complete buffer ready for read
+{
+ bool retval = false;
+ if (m_buffersFill[m_currentWriteBuffer] + bufferSize > m_BufferSize) {
+ m_error = true;
+ m_errorString += i18n("Buffer Overflow. ");
+ } else if (bufferSize > 0) {
+ m_buffersFill[m_currentWriteBuffer] += bufferSize;
+
+ if (m_buffersFill[m_currentWriteBuffer] == m_BufferSize) {
+ m_currentWriteBuffer = (m_currentWriteBuffer+1 < m_nBuffers) ? m_currentWriteBuffer + 1 : 0;
+ m_readLock--;
+ retval = true;
+ }
+ }
+ return retval;
+}
+
+
+void MultiBuffer::unlockAllWriteBuffers()
+{
+ m_currentWriteBuffer = m_currentReadBuffer;
+ // there are at maximum m_nBuffers - 1 full buffers. The nth buffer is the current read buffer
+ m_readLock -= m_nBuffers - 1 - m_readLock.available();
+}
+
+
+char *MultiBuffer::wait4ReadBuffer(size_t &buffer_fill)
+{
+ m_buffersFill[m_currentReadBuffer] = 0; // mark buffer as empty again
+ m_readLock++;
+ m_currentReadBuffer = (m_currentReadBuffer+1 < m_nBuffers) ? m_currentReadBuffer + 1 : 0;
+ buffer_fill = m_buffersFill[m_currentReadBuffer];
+ return m_buffers[m_currentReadBuffer];
+}
+
+
+char *MultiBuffer::getCurrentReadBuffer(size_t &buffer_fill) const
+{
+ buffer_fill = m_buffersFill[m_currentReadBuffer];
+ return m_buffers[m_currentReadBuffer];
+}
+
+void MultiBuffer::resetError()
+{
+ m_error = false;
+ m_errorString = QString::null;
+}
diff --git a/kradio3/src/plugin_configuration_dialog.cpp b/kradio3/src/plugin_configuration_dialog.cpp
new file mode 100644
index 0000000..d5f4568
--- /dev/null
+++ b/kradio3/src/plugin_configuration_dialog.cpp
@@ -0,0 +1,103 @@
+/***************************************************************************
+ plugin_configuration_dialog.cpp - description
+ -------------------
+ begin : Sam Jun 21 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "include/plugin_configuration_dialog.h"
+#include <kconfig.h>
+#include <klocale.h>
+
+PluginConfigurationDialog::PluginConfigurationDialog(
+ int dialogFace, const QString &caption,
+ int buttonMask, ButtonCode defaultButton,
+ QWidget *parent, const char *name,
+ bool modal, bool separator)
+: KDialogBase(dialogFace, caption, buttonMask, defaultButton,
+ parent, name, modal, separator),
+ WidgetPluginBase (name, i18n("Configuration Dialog")),
+ m_Caption(caption)
+{
+}
+
+
+// PluginBase
+
+void PluginConfigurationDialog::saveState (KConfig *c) const
+{
+ c->setGroup(QString("config-dialog-") + WidgetPluginBase::name());
+ WidgetPluginBase::saveState(c);
+}
+
+void PluginConfigurationDialog::restoreState (KConfig *c)
+{
+ c->setGroup(QString("config-dialog-") + WidgetPluginBase::name());
+ WidgetPluginBase::restoreState(c, true);
+}
+
+
+ConfigPageInfo PluginConfigurationDialog::createConfigurationPage()
+{
+ return ConfigPageInfo();
+}
+
+
+AboutPageInfo PluginConfigurationDialog::createAboutPage()
+{
+ return AboutPageInfo();
+}
+
+
+// WidgetPluginBase
+
+void PluginConfigurationDialog::show()
+{
+ WidgetPluginBase::pShow();
+ KDialogBase::show();
+}
+
+
+void PluginConfigurationDialog::showOnOrgDesktop()
+{
+ WidgetPluginBase::pShowOnOrgDesktop();
+ //KDialogBase::show();
+}
+
+
+void PluginConfigurationDialog::hide()
+{
+ WidgetPluginBase::pHide();
+ KDialogBase::hide();
+}
+
+
+// QWidget overrides
+
+void PluginConfigurationDialog::showEvent(QShowEvent *e)
+{
+ KDialogBase::showEvent(e);
+ QWidget::setCaption(m_Caption);
+ WidgetPluginBase::pShowEvent(e);
+}
+
+
+void PluginConfigurationDialog::hideEvent(QHideEvent *e)
+{
+ KDialogBase::hideEvent(e);
+ WidgetPluginBase::pHideEvent(e);
+}
+
+
+
+#include "plugin_configuration_dialog.moc"
diff --git a/kradio3/src/pluginmanager-configuration-ui.ui b/kradio3/src/pluginmanager-configuration-ui.ui
new file mode 100644
index 0000000..ce481e3
--- /dev/null
+++ b/kradio3/src/pluginmanager-configuration-ui.ui
@@ -0,0 +1,396 @@
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
+<class>PluginManagerConfigurationUI</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>PluginManagerConfigurationUI</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>403</width>
+ <height>324</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>PluginManagerConfigurationUI</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <widget class="QCheckBox" row="6" column="0">
+ <property name="name">
+ <cstring>cbShowProgressBar</cstring>
+ </property>
+ <property name="text">
+ <string>Show Progress Bar during Startup for Plugin Initiali&amp;zation</string>
+ </property>
+ <property name="accel">
+ <string>Alt+Z</string>
+ </property>
+ </widget>
+ <widget class="Line" row="5" column="0">
+ <property name="name">
+ <cstring>line1_2_2</cstring>
+ </property>
+ <property name="frameShape">
+ <enum>HLine</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>Sunken</enum>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ </widget>
+ <widget class="QGroupBox" row="4" column="0">
+ <property name="name">
+ <cstring>groupBox4</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>7</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="frameShape">
+ <enum>NoFrame</enum>
+ </property>
+ <property name="title">
+ <string></string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <widget class="KListView" row="0" column="0" rowspan="2" colspan="1">
+ <column>
+ <property name="text">
+ <string>Plugin Class</string>
+ </property>
+ <property name="clickable">
+ <bool>true</bool>
+ </property>
+ <property name="resizable">
+ <bool>true</bool>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>Instance Name</string>
+ </property>
+ <property name="clickable">
+ <bool>true</bool>
+ </property>
+ <property name="resizable">
+ <bool>true</bool>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>Description</string>
+ </property>
+ <property name="clickable">
+ <bool>true</bool>
+ </property>
+ <property name="resizable">
+ <bool>true</bool>
+ </property>
+ </column>
+ <property name="name">
+ <cstring>listPluginInstances</cstring>
+ </property>
+ <property name="allColumnsShowFocus">
+ <bool>true</bool>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>list of running plugins</string>
+ </property>
+ </widget>
+ <spacer row="1" column="1">
+ <property name="name">
+ <cstring>spacer3_2_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>87</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="KPushButton" row="0" column="1">
+ <property name="name">
+ <cstring>btnRemovePluginInstance</cstring>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>24</width>
+ <height>24</height>
+ </size>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="iconSet">
+ <iconset>"editdelete"</iconset>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>remove/stop a selected plugin instance</string>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ <widget class="Line" row="3" column="0">
+ <property name="name">
+ <cstring>line1_2</cstring>
+ </property>
+ <property name="frameShape">
+ <enum>HLine</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>Sunken</enum>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ </widget>
+ <widget class="QGroupBox" row="2" column="0">
+ <property name="name">
+ <cstring>groupBox3</cstring>
+ </property>
+ <property name="frameShape">
+ <enum>NoFrame</enum>
+ </property>
+ <property name="title">
+ <string></string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <spacer row="1" column="1">
+ <property name="name">
+ <cstring>spacer3_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>55</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="KPushButton" row="0" column="1">
+ <property name="name">
+ <cstring>btnNewPluginInstance</cstring>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>24</width>
+ <height>24</height>
+ </size>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="iconSet">
+ <iconset>"filenew2"</iconset>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>create a new instance of selected plugin class</string>
+ </property>
+ </widget>
+ <widget class="KListView" row="0" column="0" rowspan="2" colspan="1">
+ <column>
+ <property name="text">
+ <string>Plugin Class</string>
+ </property>
+ <property name="clickable">
+ <bool>true</bool>
+ </property>
+ <property name="resizable">
+ <bool>true</bool>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>Description</string>
+ </property>
+ <property name="clickable">
+ <bool>true</bool>
+ </property>
+ <property name="resizable">
+ <bool>true</bool>
+ </property>
+ </column>
+ <property name="name">
+ <cstring>listPluginClasses</cstring>
+ </property>
+ <property name="allColumnsShowFocus">
+ <bool>true</bool>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>list of available plugin classes</string>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ <widget class="Line" row="1" column="0">
+ <property name="name">
+ <cstring>line1</cstring>
+ </property>
+ <property name="frameShape">
+ <enum>HLine</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>Sunken</enum>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ </widget>
+ <widget class="QGroupBox" row="0" column="0">
+ <property name="name">
+ <cstring>groupBox2</cstring>
+ </property>
+ <property name="frameShape">
+ <enum>NoFrame</enum>
+ </property>
+ <property name="title">
+ <string></string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <widget class="KURLRequester" row="0" column="0" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>editPluginLibrary</cstring>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>select a plugin library</string>
+ </property>
+ </widget>
+ <widget class="KPushButton" row="2" column="1">
+ <property name="name">
+ <cstring>btnRemoveLibrary</cstring>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>24</width>
+ <height>24</height>
+ </size>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="iconSet">
+ <iconset>"editdelete"</iconset>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>unload a plugin library</string>
+ </property>
+ </widget>
+ <widget class="KPushButton" row="1" column="1">
+ <property name="name">
+ <cstring>btnAddLibrary</cstring>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>24</width>
+ <height>24</height>
+ </size>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="iconSet">
+ <iconset>"filenew2"</iconset>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>load a selected plugin library</string>
+ </property>
+ </widget>
+ <widget class="KListBox" row="1" column="0" rowspan="3" colspan="1">
+ <property name="name">
+ <cstring>listPluginLibraries</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>5</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>list of loaded plugin libraries</string>
+ </property>
+ </widget>
+ <spacer row="3" column="1">
+ <property name="name">
+ <cstring>spacer3</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>61</height>
+ </size>
+ </property>
+ </spacer>
+ </grid>
+ </widget>
+ </grid>
+</widget>
+<customwidgets>
+</customwidgets>
+<includes>
+ <include location="global" impldecl="in implementation">kiconloader.h</include>
+</includes>
+<pixmapfunction>SmallIconSet</pixmapfunction>
+<layoutdefaults spacing="6" margin="0"/>
+<includehints>
+ <includehint>klistview.h</includehint>
+ <includehint>kpushbutton.h</includehint>
+ <includehint>kpushbutton.h</includehint>
+ <includehint>klistview.h</includehint>
+ <includehint>kurlrequester.h</includehint>
+ <includehint>klineedit.h</includehint>
+ <includehint>kpushbutton.h</includehint>
+ <includehint>kpushbutton.h</includehint>
+ <includehint>kpushbutton.h</includehint>
+ <includehint>klistbox.h</includehint>
+</includehints>
+</UI>
diff --git a/kradio3/src/pluginmanager-configuration.cpp b/kradio3/src/pluginmanager-configuration.cpp
new file mode 100644
index 0000000..f589ecb
--- /dev/null
+++ b/kradio3/src/pluginmanager-configuration.cpp
@@ -0,0 +1,171 @@
+/***************************************************************************
+ pluginmanager-configuration.cpp - description
+ -------------------
+ begin : Thu Sep 30 2004
+ copyright : (C) 2004 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "pluginmanager-configuration-ui.h"
+#include "include/pluginmanager-configuration.h"
+#include "include/kradioapp.h"
+#include "include/pluginmanager.h"
+
+#include <klistbox.h>
+#include <klistview.h>
+#include <kpushbutton.h>
+#include <kurlrequester.h>
+#include <kinputdialog.h>
+
+#include <qcheckbox.h>
+
+PluginManagerConfiguration::PluginManagerConfiguration(QWidget *parent, KRadioApp *app, PluginManager *pm)
+ : PluginManagerConfigurationUI(parent),
+ m_Application(app),
+ m_PluginManager(pm),
+ m_dirty(true)
+{
+ noticePluginLibrariesChanged();
+ noticePluginsChanged();
+
+ QObject::connect(btnAddLibrary, SIGNAL(clicked()), this, SLOT(slotAddLibrary()));
+ QObject::connect(btnRemoveLibrary, SIGNAL(clicked()), this, SLOT(slotRemoveLibrary()));
+ QObject::connect(btnNewPluginInstance, SIGNAL(clicked()), this, SLOT(slotNewPluginInstance()));
+ QObject::connect(btnRemovePluginInstance, SIGNAL(clicked()), this, SLOT(slotRemovePluginInstance()));
+ QObject::connect(cbShowProgressBar, SIGNAL(toggled(bool)), this, SLOT(slotSetDirty()));
+
+ slotCancel();
+}
+
+
+PluginManagerConfiguration::~PluginManagerConfiguration ()
+{
+}
+
+
+void PluginManagerConfiguration::noticePluginLibrariesChanged()
+{
+ listPluginLibraries->clear();
+ const QMap<QString, PluginLibraryInfo> &libs = m_Application->getPluginLibraries();
+ QMapConstIterator<QString,PluginLibraryInfo> end = libs.end();
+ for (QMapConstIterator<QString,PluginLibraryInfo> it = libs.begin(); it != end; ++it) {
+ listPluginLibraries->insertItem(it.key());
+ }
+
+ listPluginClasses->clear();
+ const QMap<QString, PluginClassInfo> &classes = m_Application->getPluginClasses();
+ QMapConstIterator<QString, PluginClassInfo> end_cls = classes.end();
+ for (QMapConstIterator<QString, PluginClassInfo> it = classes.begin(); it != end_cls; ++it) {
+ listPluginClasses->insertItem(new KListViewItem(listPluginClasses, it.key(), (*it).description));
+ }
+
+ noticePluginsChanged();
+}
+
+
+void PluginManagerConfiguration::noticePluginsChanged()
+{
+ listPluginInstances->clear();
+ const PluginList &plugins = m_PluginManager->plugins();
+ const QMap<QString, PluginClassInfo> &classes = m_Application->getPluginClasses();
+
+ for (PluginIterator it(plugins); it.current(); ++it) {
+ QString class_name = it.current()->pluginClassName();
+ if (classes.contains(class_name)) {
+ QString obj_name = it.current()->name();
+ listPluginInstances->insertItem(new KListViewItem(listPluginInstances, class_name, obj_name, classes[class_name].description));
+ }
+ }
+}
+
+
+void PluginManagerConfiguration::slotOK()
+{
+ if (m_dirty) {
+ m_PluginManager->showProgressBar(cbShowProgressBar->isChecked());
+ m_dirty = false;
+ }
+}
+
+
+void PluginManagerConfiguration::slotCancel()
+{
+ if (m_dirty) {
+ cbShowProgressBar->setChecked(m_PluginManager->showsProgressBar());
+ noticePluginLibrariesChanged();
+ noticePluginsChanged();
+ m_dirty = false;
+ }
+}
+
+
+void PluginManagerConfiguration::slotAddLibrary()
+{
+ slotSetDirty();
+ QString url = editPluginLibrary->url();
+ if (m_Application && url.length())
+ m_Application->LoadLibrary(url);
+}
+
+
+void PluginManagerConfiguration::slotRemoveLibrary()
+{
+ slotSetDirty();
+ if (m_Application) {
+ QString lib = listPluginLibraries->currentText();
+ if (lib.length()) {
+ m_Application->UnloadLibrary(lib);
+ }
+ }
+}
+
+
+void PluginManagerConfiguration::slotNewPluginInstance()
+{
+ slotSetDirty();
+ if (m_Application && m_PluginManager) {
+ QListViewItem *item = listPluginClasses->currentItem();
+ QString class_name = item ? item->text(0) : QString::null;
+ bool ok = false;
+ int default_object_id = 1;
+ while (m_PluginManager->getPluginByName(class_name + QString::number(default_object_id)))
+ ++default_object_id;
+
+ QString object_name = KInputDialog::getText(i18n("Enter Plugin Instance Name"),
+ i18n("Instance Name"),
+ class_name + QString::number(default_object_id),
+ &ok);
+ if (ok && class_name.length() && object_name.length())
+ m_Application->CreatePlugin(m_PluginManager, class_name, object_name);
+ }
+}
+
+
+void PluginManagerConfiguration::slotRemovePluginInstance()
+{
+ slotSetDirty();
+ if (m_Application && m_PluginManager) {
+ QListViewItem *item = listPluginInstances->currentItem();
+ QString object_name = item ? item->text(1) : QString::null;
+ if (object_name.length())
+ m_PluginManager->deletePluginByName(object_name);
+ }
+}
+
+
+void PluginManagerConfiguration::slotSetDirty()
+{
+ m_dirty = true;
+}
+
+
+#include "pluginmanager-configuration.moc"
diff --git a/kradio3/src/pluginmanager.cpp b/kradio3/src/pluginmanager.cpp
new file mode 100644
index 0000000..adac66c
--- /dev/null
+++ b/kradio3/src/pluginmanager.cpp
@@ -0,0 +1,538 @@
+/***************************************************************************
+ pluginmanager.cpp - description
+ -------------------
+ begin : Mon Apr 28 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "include/plugins.h"
+#include "include/pluginmanager.h"
+#include "include/pluginmanager-configuration.h"
+#include "include/plugin_configuration_dialog.h"
+#include "include/kradioapp.h"
+
+#include <kiconloader.h>
+#include <kdialogbase.h>
+#include <klocale.h>
+#include <kconfig.h>
+#include <kprogress.h>
+
+#include <qlayout.h>
+#include <qframe.h>
+#include <qmenudata.h>
+
+#include "include/debug-profiler.h"
+
+PluginManager::PluginManager(
+ const QString &name,
+ KRadioApp *app,
+ const QString &configDialogTitle,
+ const QString &aboutDialogTitle)
+ : m_Name(name),
+ m_Application(app),
+ m_showProgressBar(true),
+ m_configDialog (NULL),
+ m_pluginManagerConfiguration(NULL),
+ m_aboutDialog(NULL),
+ m_configDialogTitle(configDialogTitle),
+ m_aboutDialogTitle (aboutDialogTitle)
+{
+}
+
+
+PluginManager::~PluginManager()
+{
+ delete m_pluginManagerConfiguration;
+ m_pluginManagerConfiguration = NULL;
+
+ // config Dialog must be deleted first, so we can clear m_configPages
+ // without problems (this is the only place where our config dialog is deleted)
+ // Without clearing this list, those pages would be deleted, but
+ // we would try to delete them another time when the associated plugin is
+ // deleted, because m_configPages is out of date.
+ if (m_configDialog) {
+ m_configDialog->cancel();
+ delete m_configDialog;
+ }
+ m_configPages.clear();
+ m_configPageFrames.clear();
+ m_configDialog = NULL;
+
+ if (m_aboutDialog)
+ delete m_aboutDialog;
+ m_aboutPages.clear();
+ m_aboutPageFrames.clear();
+ m_aboutDialog = NULL;
+
+ while (PluginBase *p = m_plugins.getFirst()) {
+ deletePlugin(p);
+ }
+}
+
+
+void PluginManager::noticeLibrariesChanged()
+{
+ if (m_pluginManagerConfiguration)
+ m_pluginManagerConfiguration->noticePluginLibrariesChanged();
+}
+
+
+void PluginManager::unloadPlugins(const QString &class_name)
+{
+ PluginList plugins = m_plugins;
+ for (PluginIterator it(plugins); it.current(); ++it) {
+ PluginBase *p = it.current();
+ if (p->pluginClassName() == class_name) {
+ deletePlugin(p);
+ }
+ }
+}
+
+
+void PluginManager::addWidgetPluginMenuItems(QMenuData *menu, QMap<WidgetPluginBase *,int> &map) const
+{
+ map.clear();
+
+ for (PluginIterator it(m_plugins); it.current(); ++it) {
+ WidgetPluginBase *b = dynamic_cast<WidgetPluginBase*>(it.current());
+ if (!b) continue;
+
+ int id = menu->insertItem("dummy", b->getWidget(), SLOT(toggleShown()));
+ map.insert(b, id);
+ updateWidgetPluginMenuItem(b, menu, map, b->isReallyVisible());
+ }
+}
+
+
+void PluginManager::updateWidgetPluginMenuItem(WidgetPluginBase *b, QMenuData *menu, QMap<WidgetPluginBase *,int> &map, bool shown) const
+{
+ if (!b || !map.contains(b))
+ return;
+
+ const QString &name = b->description();
+ QString text = (shown ? i18n("Hide %1") : i18n("Show %1")).arg(name);
+
+ menu->changeItem(map[b],
+ QIconSet(SmallIconSet(!shown ? "kradio_show" : "kradio_hide")),
+ text);
+}
+
+
+void PluginManager::noticeWidgetPluginShown(WidgetPluginBase *p, bool shown)
+{
+ for (PluginIterator it(m_plugins); it.current(); ++it) {
+ it.current()->noticeWidgetPluginShown(p, shown);
+ }
+}
+
+
+PluginBase *PluginManager::getPluginByName(const QString &name) const
+{
+ for (PluginIterator it(m_plugins); it.current(); ++it) {
+ if (it.current()->name() == name)
+ return it.current();
+ }
+ return NULL;
+}
+
+
+void PluginManager::insertPlugin(PluginBase *p)
+{
+ BlockProfiler profiler("PluginManager::insertPlugin");
+
+ if (p) {
+ BlockProfiler profiler_cfg("PluginManager::insertPlugin - about/config");
+
+ /*kdDebug() << QDateTime::currentDateTime().toString(Qt::ISODate)
+ << " Debug: Adding Plugin: " << p->name() << "\n";*/
+
+ if (!m_configDialog)
+ createConfigDialog(m_configDialogTitle);
+ if (!m_aboutDialog)
+ createAboutDialog(m_aboutDialogTitle);
+
+ m_plugins.append(p);
+ p->setManager(this);
+
+ addConfigurationPage (p, p->createConfigurationPage());
+ addAboutPage (p, p->createAboutPage());
+
+ profiler_cfg.stop();
+ BlockProfiler profiler_connect("PluginManager::insertPlugin - connect");
+
+ // connect plugins with each other
+ for (PluginIterator it(m_plugins); it.current(); ++it) {
+ if (it.current() != p) {
+ /*kdDebug() << QDateTime::currentDateTime().toString(Qt::ISODate)
+ << " Debug: connecting with " << it.current()->name() << "\n";*/
+ p->connectI(it.current());
+ }
+ }
+
+ // perhaps some existing config pages will profit from new plugin
+ // example: timecontrol profits from radio plugin
+ for (QWidgetDictIterator it(m_configPages); it.current(); ++it) {
+ Interface *i = dynamic_cast<Interface *>(it.current());
+ if (i)
+ i->connectI(p);
+ }
+
+ profiler_connect.stop();
+ BlockProfiler profiler_widget("PluginManager::insertPlugin - notifywidgets");
+
+ WidgetPluginBase *w1 = dynamic_cast<WidgetPluginBase*>(p);
+ for (PluginIterator it(m_plugins); it.current(); ++it) {
+ it.current()->noticePluginsChanged(m_plugins);
+ if (w1)
+ it.current()->noticeWidgetPluginShown(w1, w1->isReallyVisible());
+
+ WidgetPluginBase *w2 = dynamic_cast<WidgetPluginBase*>(it.current());
+ if (w2)
+ p->noticeWidgetPluginShown(w2, w2->isReallyVisible());
+ }
+
+ if (m_pluginManagerConfiguration)
+ m_pluginManagerConfiguration->noticePluginsChanged();
+
+ profiler_widget.stop();
+ }
+}
+
+
+void PluginManager::deletePlugin(PluginBase *p)
+{
+ if (p && m_plugins.contains(p)) {
+ removePlugin(p);
+ delete p;
+ }
+}
+
+
+void PluginManager::removePlugin(PluginBase *p)
+{
+ if (p && m_plugins.contains(p)) {
+
+ for (PluginIterator it(m_plugins); it.current(); ++it) {
+ if (it.current() != p) {
+ // workaround for buggy compilers/libstdc++
+ if (p->destructorCalled()) {
+ p->PluginBase::disconnectI(it.current());
+ } else {
+ p->disconnectI(it.current());
+ }
+ }
+ }
+
+ // remove config page from config dialog, only chance is to delete it
+ // plugin will be notified automatically (mechanism implemented by
+ // PluginBase)
+ while (QFrame *f = m_configPageFrames.find(p)) {
+ m_configPageFrames.remove(p);
+ m_configPages.remove(p);
+ delete f;
+ }
+ while (QFrame *f = m_aboutPageFrames.find(p)) {
+ m_aboutPageFrames.remove(p);
+ m_aboutPages.remove(p);
+ delete f;
+ }
+
+ // remove bindings between me and plugin
+ m_plugins.remove(p);
+ p->unsetManager();
+
+ p->noticePluginsChanged(PluginList());
+ for (PluginIterator it(m_plugins); it.current(); ++it) {
+ it.current()->noticePluginsChanged(m_plugins);
+ }
+
+ if (m_pluginManagerConfiguration)
+ m_pluginManagerConfiguration->noticePluginsChanged();
+ }
+}
+
+
+void PluginManager::addConfigurationPage (PluginBase *forWhom,
+ const ConfigPageInfo &info)
+{
+ if (!forWhom || !m_plugins.containsRef(forWhom) || !info.page)
+ return;
+ QFrame *f = addConfigurationPage(info);
+
+ // register this frame and config page
+ m_configPageFrames.insert(forWhom, f);
+ m_configPages.insert(forWhom, info.page);
+
+ // perhaps new config page profits from existing plugins
+ // example: timecontrol profits from radio plugin
+ Interface *i = dynamic_cast<Interface *>(info.page);
+ if (i) {
+ for (PluginIterator it(m_plugins); it.current(); ++it)
+ i->connectI(it.current());
+ }
+}
+
+
+QFrame *PluginManager::addConfigurationPage (const ConfigPageInfo &info)
+{
+ if (!m_configDialog)
+ createConfigDialog(i18n(m_configDialogTitle.ascii()));
+
+ // create empty config frame
+ QFrame *f = m_configDialog->addPage(
+ info.itemName,
+ info.pageHeader,
+ KGlobal::instance()->iconLoader()->loadIcon( info.iconName, KIcon::NoGroup, KIcon::SizeMedium )
+ );
+
+ // fill config frame with layout ...
+ QGridLayout *l = new QGridLayout(f);
+ l->setSpacing( 0 );
+ l->setMargin( 0 );
+
+ // ... and externally created config page
+ info.page->reparent (f, QPoint(0,0), true);
+ l->addWidget( info.page, 0, 0 );
+
+ // make sure, that config page receives ok, apply and cancel signals
+ QObject::connect(this, SIGNAL(sigConfigOK()), info.page, SLOT(slotOK()));
+ QObject::connect(m_configDialog, SIGNAL(cancelClicked()), info.page, SLOT(slotCancel()));
+
+ return f;
+}
+
+
+void PluginManager::createConfigDialog(const QString &title)
+{
+ if (m_configDialog) delete m_configDialog;
+ m_configDialog = NULL;
+
+ PluginConfigurationDialog *cfg = new PluginConfigurationDialog(
+ KDialogBase::IconList,
+ title,
+ KDialogBase::Apply|KDialogBase::Ok|KDialogBase::Cancel,
+ KDialogBase::Ok,
+ /*parent = */ NULL,
+ title.ascii(),
+ /*modal = */ false,
+ true);
+
+ m_configDialog = cfg;
+
+ QObject::connect(m_configDialog, SIGNAL(okClicked()), this, SLOT(slotConfigOK()));
+ QObject::connect(m_configDialog, SIGNAL(applyClicked()), this, SLOT(slotConfigOK()));
+
+ insertPlugin(cfg);
+
+ addConfigurationPage(createOwnConfigurationPage());
+
+ for (PluginIterator i(m_plugins); m_configDialog && i.current(); ++i) {
+ addConfigurationPage(i.current(),
+ i.current()->createConfigurationPage());
+ }
+}
+
+
+ConfigPageInfo PluginManager::createOwnConfigurationPage()
+{
+ m_pluginManagerConfiguration = new PluginManagerConfiguration(NULL, m_Application, this);
+ return ConfigPageInfo (m_pluginManagerConfiguration,
+ i18n("Plugins"),
+ i18n("Plugin Library Configuration"),
+ "kradio_plugins");
+}
+
+
+
+
+
+void PluginManager::addAboutPage (PluginBase *forWhom,
+ const AboutPageInfo &info)
+{
+ if (!m_aboutDialog)
+ createAboutDialog(i18n(m_aboutDialogTitle.ascii()));
+
+ if ( !forWhom || !m_plugins.containsRef(forWhom)
+ || !m_aboutDialog || !info.page)
+ return;
+
+
+ // create empty about frame
+ QFrame *f = m_aboutDialog->addPage(
+ info.itemName,
+ info.pageHeader,
+ KGlobal::instance()->iconLoader()->loadIcon( info.iconName, KIcon::NoGroup, KIcon::SizeMedium )
+ );
+
+ // register this frame and config page
+ m_aboutPageFrames.insert(forWhom, f);
+ m_aboutPages.insert(forWhom, info.page);
+
+ // fill config frame with layout ...
+ QGridLayout *l = new QGridLayout(f);
+ l->setSpacing( 0 );
+ l->setMargin( 0 );
+
+ // ... and externally created config page
+ info.page->reparent (f, QPoint(0,0), true);
+ l->addWidget( info.page, 0, 0 );
+}
+
+
+void PluginManager::createAboutDialog(const QString &title)
+{
+ if (m_aboutDialog) delete m_aboutDialog;
+ m_aboutDialog = NULL;
+
+ m_aboutDialog = new KDialogBase(KDialogBase::IconList,
+ title,
+ KDialogBase::Close,
+ KDialogBase::Close,
+ /*parent = */ NULL,
+ title.ascii(),
+ /*modal = */ false,
+ true);
+
+ for (PluginIterator i(m_plugins); m_aboutDialog && i.current(); ++i) {
+ addAboutPage(i.current(),
+ i.current()->createAboutPage());
+ }
+}
+
+
+void PluginManager::saveState (KConfig *c) const
+{
+ c->setGroup("PluginManager-" + m_Name);
+ c->writeEntry("show-progress-bar", m_showProgressBar);
+ int n = 0;
+ for (PluginIterator it(m_plugins); it.current(); ++it) {
+ QString class_name = it.current()->pluginClassName();
+ QString object_name = it.current()->name();
+ if (class_name.length() && object_name.length() &&
+ m_Application->getPluginClasses().contains(class_name))
+ {
+ ++n;
+ c->writeEntry("plugin_class_" + QString::number(n), class_name);
+ c->writeEntry("plugin_name_" + QString::number(n), object_name);
+ }
+ }
+ c->writeEntry("plugins", n);
+
+ for (PluginIterator i(m_plugins); i.current(); ++i) {
+ i.current()->saveState(c);
+ }
+}
+
+
+void PluginManager::restoreState (KConfig *c)
+{
+ BlockProfiler profile_all("PluginManager::restoreState");
+ c->setGroup("PluginManager-" + m_Name);
+ m_showProgressBar = c->readBoolEntry("show-progress-bar", true);
+ int n = c->readNumEntry("plugins", 0);
+
+ KProgressDialog *progress = NULL;
+ if (m_showProgressBar) {
+ progress = new KProgressDialog(NULL, NULL, i18n("Starting Plugins"));
+ progress->setMinimumWidth(400);
+ progress->setAllowCancel(false);
+ progress->show();
+ progress->progressBar()->setTotalSteps(2*n);
+ }
+
+ for (int i = 1; i <= n; ++i) {
+ c->setGroup("PluginManager-" + m_Name);
+ QString class_name = c->readEntry("plugin_class_" + QString::number(i));
+ QString object_name = c->readEntry("plugin_name_" + QString::number(i));
+
+ if (m_showProgressBar)
+ progress->QWidget::setCaption(i18n("Creating Plugin %1").arg(class_name));
+ if (class_name.length() && object_name.length())
+ m_Application->CreatePlugin(this, class_name, object_name);
+ if (m_showProgressBar)
+ progress->progressBar()->setProgress(i);
+ }
+
+ if (m_Application && n == 0) {
+ const QMap<QString, PluginClassInfo> &classes = m_Application->getPluginClasses();
+ QMapConstIterator<QString, PluginClassInfo> end = classes.end();
+ n = classes.count();
+ if (m_showProgressBar)
+ progress->progressBar()->setTotalSteps(2*n);
+ int idx = 1;
+ for (QMapConstIterator<QString, PluginClassInfo> it=classes.begin(); it != end; ++it, ++idx) {
+ const PluginClassInfo &cls = *it;
+ if (m_showProgressBar)
+ progress->QWidget::setCaption(i18n("Creating Plugin %1").arg(cls.class_name));
+ m_Application->CreatePlugin(this, cls.class_name, m_Name + "-" + cls.class_name);
+ if (m_showProgressBar)
+ progress->progressBar()->setProgress(idx);
+ }
+ m_configDialog->show();
+ }
+
+ BlockProfiler profile_plugins("PluginManager::restoreState - plugins");
+
+ int idx = n;
+ for (PluginIterator i(m_plugins); i.current(); ++i, ++idx) {
+ BlockProfiler profile_plugin("PluginManager::restoreState - " + i.current()->pluginClassName());
+ if (m_showProgressBar)
+ progress->QWidget::setCaption(i18n("Initializing Plugin %1").arg(i.current()->pluginClassName()));
+ i.current()->restoreState(c);
+ if (m_showProgressBar)
+ progress->progressBar()->setProgress(idx+1);
+ }
+ if (m_showProgressBar)
+ delete progress;
+}
+
+PluginConfigurationDialog *PluginManager::getConfigDialog()
+{
+ if (!m_configDialog)
+ createConfigDialog(m_configDialogTitle);
+ return m_configDialog;
+}
+
+KDialogBase *PluginManager::getAboutDialog()
+{
+ if (!m_aboutDialog)
+ createAboutDialog();
+ return m_aboutDialog;
+}
+
+
+
+void PluginManager::slotConfigOK()
+{
+ emit sigConfigOK();
+ if (m_Application)
+ m_Application->saveState(KGlobal::config());
+}
+
+
+void PluginManager::startPlugins()
+{
+ for (PluginIterator i(m_plugins); i.current(); ++i) {
+ i.current()->startPlugin();
+ }
+}
+
+void PluginManager::aboutToQuit()
+{
+ for (PluginIterator i(m_plugins); i.current(); ++i) {
+ i.current()->aboutToQuit();
+ }
+}
+
+
+#include "pluginmanager.moc"
diff --git a/kradio3/src/plugins.cpp b/kradio3/src/plugins.cpp
new file mode 100644
index 0000000..4da7310
--- /dev/null
+++ b/kradio3/src/plugins.cpp
@@ -0,0 +1,84 @@
+/***************************************************************************
+ plugins.cpp - description
+ -------------------
+ begin : Mon Mr 10 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "include/plugins.h"
+#include "include/pluginmanager.h"
+
+PluginBase::PluginBase(const QString &name, const QString &description)
+ : m_name(name),
+ m_description(description),
+ m_manager(NULL),
+ m_destructorCalled(false)
+{
+}
+
+
+PluginBase::~PluginBase()
+{
+ m_destructorCalled = true;
+ //IErrorLogClient::logDebug("destructing plugin " + m_name);
+ unsetManager();
+}
+
+
+bool PluginBase::setManager (PluginManager *m)
+{
+ if (!m_manager && m) {
+ m_manager = m;
+ return true;
+ } else {
+ return false;
+ }
+}
+
+
+void PluginBase::unsetManager ()
+{
+ if (m_manager) {
+ PluginManager *old = m_manager;
+ m_manager = NULL;
+ old->removePlugin(this);
+ }
+}
+
+
+bool PluginBase::isManagerSet () const
+{
+ return m_manager != NULL;
+}
+
+
+void PluginBase::saveState (KConfig *) const
+{
+ // do nothing
+}
+
+
+void PluginBase::restoreState (KConfig *)
+{
+ // do nothing
+}
+
+
+void PluginBase::startPlugin()
+{
+ // do nothing
+}
+
+void PluginBase::aboutToQuit()
+{
+}
diff --git a/kradio3/src/po/Makefile.am b/kradio3/src/po/Makefile.am
new file mode 100644
index 0000000..a83d550
--- /dev/null
+++ b/kradio3/src/po/Makefile.am
@@ -0,0 +1,2 @@
+POFILES = AUTO
+PACKAGE = kradio
diff --git a/kradio3/src/po/de.po b/kradio3/src/po/de.po
new file mode 100644
index 0000000..27961b7
--- /dev/null
+++ b/kradio3/src/po/de.po
@@ -0,0 +1,552 @@
+# translation of de.po to
+# This file is put in the public domain.
+#
+# Ernst Martin Witte <witte@kawo1.rwth-aachen.de>, 2006.
+# Ernst Martin Witte <emw@nocabal.de>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-12 18:41+0100\n"
+"PO-Revision-Date: 2006-11-12 18:27+0100\n"
+"Last-Translator: Ernst Martin Witte <emw@nocabal.de>\n"
+"Language-Team: <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 16
+#: rc.cpp:3 rc.cpp:81 pluginmanager-configuration-ui.cpp:170
+#, no-c-format
+msgid "PluginManagerConfigurationUI"
+msgstr "PluginManagerConfigurationUI"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 30
+#: rc.cpp:6 rc.cpp:84 pluginmanager-configuration-ui.cpp:171
+#, no-c-format
+msgid "Show Progress Bar during Startup for Plugin Initiali&zation"
+msgstr "Fortschrittsbalken bei der Initialisierung der Plugins anzeigen"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 33
+#: rc.cpp:9 rc.cpp:87 pluginmanager-configuration-ui.cpp:172
+#, no-c-format
+msgid "Alt+Z"
+msgstr "Alt+Z"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 78
+#. i18n: file pluginmanager-configuration-ui.ui line 229
+#. i18n: file pluginmanager-configuration-ui.ui line 78
+#. i18n: file pluginmanager-configuration-ui.ui line 229
+#: rc.cpp:13 rc.cpp:34 rc.cpp:91 rc.cpp:112
+#: pluginmanager-configuration-ui.cpp:63
+#: pluginmanager-configuration-ui.cpp:104
+#: pluginmanager-configuration-ui.cpp:174
+#: pluginmanager-configuration-ui.cpp:183
+#, no-c-format
+msgid "Plugin Class"
+msgstr "Plugin Klasse"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 89
+#: rc.cpp:16 rc.cpp:94 pluginmanager-configuration-ui.cpp:64
+#: pluginmanager-configuration-ui.cpp:175 pluginmanager-configuration.cpp:144
+#, no-c-format
+msgid "Instance Name"
+msgstr "Name der Instanz"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 100
+#. i18n: file pluginmanager-configuration-ui.ui line 240
+#. i18n: file pluginmanager-configuration-ui.ui line 100
+#. i18n: file pluginmanager-configuration-ui.ui line 240
+#: rc.cpp:19 rc.cpp:37 rc.cpp:97 rc.cpp:115
+#: pluginmanager-configuration-ui.cpp:65
+#: pluginmanager-configuration-ui.cpp:105
+#: pluginmanager-configuration-ui.cpp:176
+#: pluginmanager-configuration-ui.cpp:184 radiostation-listview.cpp:36
+#, no-c-format
+msgid "Description"
+msgstr "Beschreibung"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 116
+#: rc.cpp:22 rc.cpp:100 pluginmanager-configuration-ui.cpp:177
+#, no-c-format
+msgid "list of running plugins"
+msgstr "Liste der laufenden Plugins"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 153
+#: rc.cpp:26 rc.cpp:104 pluginmanager-configuration-ui.cpp:179
+#, no-c-format
+msgid "remove/stop a selected plugin instance"
+msgstr "Anhalten/Entfernen der ausgewählten Plugin-Instanz"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 223
+#: rc.cpp:31 rc.cpp:109 pluginmanager-configuration-ui.cpp:182
+#, no-c-format
+msgid "create a new instance of selected plugin class"
+msgstr "Erzeugen einer neuen Instanz der ausgewählten Pluginklasse"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 256
+#: rc.cpp:40 rc.cpp:118 pluginmanager-configuration-ui.cpp:185
+#, no-c-format
+msgid "list of available plugin classes"
+msgstr "Liste der Verfügbaren Plugin-Klassen"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 297
+#: rc.cpp:44 rc.cpp:122 pluginmanager-configuration-ui.cpp:187
+#, no-c-format
+msgid "select a plugin library"
+msgstr "Auswahl einer Plugin-Bibliothek"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 317
+#: rc.cpp:48 rc.cpp:126 pluginmanager-configuration-ui.cpp:189
+#, no-c-format
+msgid "unload a plugin library"
+msgstr "Entfernen einer Plugin-Bibliothek"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 337
+#: rc.cpp:52 rc.cpp:130 pluginmanager-configuration-ui.cpp:191
+#, no-c-format
+msgid "load a selected plugin library"
+msgstr "Laden der ausgewählten Plugin-Bibliothek"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 353
+#: rc.cpp:55 rc.cpp:133 pluginmanager-configuration-ui.cpp:192
+#, no-c-format
+msgid "list of loaded plugin libraries"
+msgstr "Liste der geladenen Plugin-Bibliotheken"
+
+#. i18n: file standardscandialog-ui.ui line 16
+#: rc.cpp:58 rc.cpp:136 standardscandialog-ui.cpp:86
+#, no-c-format
+msgid "Stations search in progress ..."
+msgstr "Sendersuchlauf läuft ..."
+
+#. i18n: file standardscandialog-ui.ui line 104
+#: rc.cpp:64 rc.cpp:142 standardscandialog-ui.cpp:88
+#, no-c-format
+msgid "remaining time"
+msgstr "verbleibende Zeit"
+
+#. i18n: file standardscandialog-ui.ui line 120
+#: rc.cpp:67 rc.cpp:145 standardscandialog-ui.cpp:89
+#, no-c-format
+msgid "<p align=\"right\">nothing here</p>"
+msgstr "<p align=\"right\">hier ist nix</p>"
+
+#. i18n: file stationselector-ui.ui line 16
+#: rc.cpp:70 rc.cpp:148 stationselector-ui.cpp:90
+#, no-c-format
+msgid "StationSelectorUI"
+msgstr "StationSelectorUI"
+
+#. i18n: file stationselector-ui.ui line 30
+#: rc.cpp:73 rc.cpp:151 stationselector-ui.cpp:91
+#, no-c-format
+msgid "Selected Stations"
+msgstr "Ausgewählte Sender"
+
+#. i18n: file stationselector-ui.ui line 119
+#: rc.cpp:78 rc.cpp:156 stationselector-ui.cpp:94
+#, no-c-format
+msgid "Available Stations"
+msgstr "Verfügbare Sender"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Ernst Martin Witte"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "emw@nocabal.de"
+
+#: aboutwidget.cpp:282
+msgid "Invalid layout"
+msgstr "Ungültiges Layout"
+
+#: aboutwidget.cpp:451
+msgid "%1 %2 (Using KDE %3)"
+msgstr "%1 %2 (KDE %3)"
+
+#: aboutwidget.cpp:454
+msgid "%1 %2, %3"
+msgstr "%1 %2, %3"
+
+#: aboutwidget.cpp:527
+msgid "A&uthor"
+msgstr "A&utor"
+
+#: aboutwidget.cpp:527
+msgid "A&uthors"
+msgstr "A&utoren"
+
+#: aboutwidget.cpp:541
+msgid "&Thanks To"
+msgstr "&Dank an"
+
+#: aboutwidget.cpp:554
+msgid "T&ranslation"
+msgstr "Ü&bersetzungen"
+
+#: aboutwidget.cpp:571
+msgid "&License Agreement"
+msgstr "&Lizenzen"
+
+#: aboutwidget.cpp:585
+msgid "Image missing"
+msgstr "Bilddatei fehlt"
+
+#: errorlog-interfaces.cpp:43 errorlog-interfaces.cpp:78
+msgid "%1 Error: %2\n"
+msgstr "%1 Fehler: %2\n"
+
+#: errorlog-interfaces.cpp:52 errorlog-interfaces.cpp:87
+msgid "%1 Warning: %2\n"
+msgstr "%1 Warnung: %2\n"
+
+#: errorlog-interfaces.cpp:61 errorlog-interfaces.cpp:96
+msgid "%1 Information: %2\n"
+msgstr "%1 Information: %2\n"
+
+#: errorlog-interfaces.cpp:70 errorlog-interfaces.cpp:105
+msgid "%1 Debug: %2\n"
+msgstr "%1 Debug: %2\n"
+
+#: fileringbuffer.cpp:35 fileringbuffer.cpp:68
+msgid "cannot open buffer file %1"
+msgstr "kann die Puffer-Datei %1 nicht öffnen"
+
+#: fileringbuffer.cpp:93
+msgid "FileRingbuffer::resize: Writing to tmpfile %1 failed. "
+msgstr ""
+"FileRingbuffer::resize: Schreiben in die temporäre Datei %1 schlug fehl. "
+
+#: fileringbuffer.cpp:99
+msgid "FileRingbuffer::resize: Opening tmpfile %1 failed. "
+msgstr ""
+"FileRingbuffer::resize: Das Öffnen der temporären Datei %1 schlug fehl. "
+
+#: fileringbuffer.cpp:127 fileringbuffer.cpp:145
+msgid "FileRingBuffer::addData: failed writing data to file %1."
+msgstr "FileRingBuffer::addData: Das Schreiben in die Datei %1 schlug fehl."
+
+#: fileringbuffer.cpp:168
+msgid "FileRingBuffer::takeData: failed reading data to file %1."
+msgstr "FileRingBuffer::takeData: Das Lesen aus der Datei %1 schlug fehl."
+
+#: frequencyradiostation.cpp:120 internetradiostation.cpp:118
+msgid "%1, %2"
+msgstr "%1, %2"
+
+#: frequencyradiostation.cpp:134
+msgid "%1 MHz"
+msgstr "%1 MHz"
+
+#: frequencyradiostation.cpp:136
+msgid "%1 kHz"
+msgstr "%1 kHz"
+
+#: kradioapp.cpp:44
+msgid ""
+"KRadio - The Radio Application for KDE<P>With KRadio you can listen to radio "
+"broadcasts with the help of your V4L/V4L2 compatible radio card.<P>The "
+"KRadio Project contains a station preset data database. To complete this "
+"database you are encouraged to contribute your station preset file to the "
+"project. Just send it to one of the authors. <P>If you like to contribute "
+"your ideas, your own plugins or translations, don't hesitate to contact one "
+"of the authors.<P>"
+msgstr ""
+"KRadio - Das Radio-Programm für KDE<P>Mit KRadio und einer Radiokarte, die "
+"vom Video-Für-Linux Treiber des Linux-Kernels unterstützt wird, können Sie "
+"am PC Radiosendungen hören.<P> Das KRadio-Projekt baut eine weltweite "
+"Senderdatenbank auf. Seien Sie ermutigt, Ihre eigenen Sendereinstellungen "
+"dem KRadio-Projekt beizusteuern. Schicken Sie ihre Sendereinstellungen "
+"einfach an einen der Autoren. <P> Wenn Sie mit Ihren Ideen, eigenen Plugins "
+"oder Übersetzungen zum KRadio-Projekt beitragen wollen, zögern Sie nicht, "
+"sich mit einem der Autoren in Verbindung zu setzen.<P>"
+
+#: kradioapp.cpp:66
+msgid ""
+"Preset Database, Remote Control Support, Alarms, Rewrite for KRadio 0.3.0, "
+"Misc"
+msgstr ""
+"Sender-Datenbank, Unterstützung für Fernsteuerungen, Wecker, Überarbeitung "
+"zu KRadio 0.3.0, Verschiedenes"
+
+#: kradioapp.cpp:67 main.cpp:43
+msgid "Buildsystem, Standards Conformance, Cleanups"
+msgstr "Buildsystem, Standardkonformität, Aufräumarbeiten "
+
+#: kradioapp.cpp:69 main.cpp:45
+msgid "idea, first basic application"
+msgstr "Idee, allererste Anwendung"
+
+#: kradioapp.cpp:71
+msgid "Many People around the World ... "
+msgstr "Viele Leute rund um die Welt ..."
+
+#: kradioapp.cpp:72
+msgid ""
+"... which contributed station preset files \n"
+"and tested early and unstable snapshots of KRadio \n"
+"with much patience"
+msgstr ""
+"... die Senderauswahl-Dateien beigesteuert und frühe und instabile Snapshots "
+"von KRadio mit viel Geduld getestet haben. "
+
+#: kradioapp.cpp:106
+msgid "Library %1: Plugin Entry Point is missing\n"
+msgstr "Bibliothek %1: Eintrittspunkt wurde nicht gefunden\n"
+
+#: kradioapp.cpp:108 kradioapp.cpp:119
+msgid "Plugin Library Load Error"
+msgstr "Das Laden der Bibliothek schlug fehl"
+
+#: kradioapp.cpp:116
+msgid ""
+"Library %1: \n"
+"%2"
+msgstr ""
+"Bibliothek %1: \n"
+"%2"
+
+#: kradioapp.cpp:143
+msgid "saveState"
+msgstr "saveState"
+
+#: kradioapp.cpp:221
+msgid "Instance"
+msgstr "Instanz"
+
+#: kradioapp.cpp:242
+msgid "KRadio Configuration"
+msgstr "KRadio-Konfiguration "
+
+#: kradioapp.cpp:243
+msgid "About KRadio Components"
+msgstr "Über die KRadio-Komponenten "
+
+#: kradioapp.cpp:271
+msgid "Error: Loading Library %1 failed: %2"
+msgstr "Fehler: Das Laden der Bibliothek %1 schlug fehl: %2"
+
+#: kradioapp.cpp:322
+msgid "Error: Creation of instance \"%1\" of class %2 falied."
+msgstr "Fehler: Das erzeugen der Instanz \"%1\" der Klasse %2 schlug fehl."
+
+#: kradioapp.cpp:328
+msgid "Error: Cannot create instance \"%1\" of unknown class %2."
+msgstr ""
+"Fehler: Kann die Instanz \"%1\" der unbekannten Klasse %2 nicht erzeugen."
+
+#: main.cpp:36
+msgid "KRadio"
+msgstr "KRadio"
+
+#: main.cpp:42
+msgid "rewrite for 0.3.0, recording, lirc support, alarms, misc"
+msgstr ""
+"Überarbeitung für 0.3.0, Aufnahmefunktion, LIRC-Unterstützung, Wecker, "
+"Verschiedenes"
+
+#: multibuffer.cpp:89
+msgid "Buffer Overflow. "
+msgstr "Puffer Überlauf."
+
+#: plugin_configuration_dialog.cpp:29
+msgid "Configuration Dialog"
+msgstr "Konfigurationsdialog"
+
+#: pluginmanager-configuration.cpp:143
+msgid "Enter Plugin Instance Name"
+msgstr "Name der Plugin-Instanz eingeben"
+
+#: pluginmanager.cpp:123
+msgid "Hide %1"
+msgstr "Verstecke %1"
+
+#: pluginmanager.cpp:123
+msgid "Show %1"
+msgstr "%1 anzeigen"
+
+#: pluginmanager.cpp:350
+msgid "Plugins"
+msgstr "Plugins"
+
+#: pluginmanager.cpp:351
+msgid "Plugin Library Configuration"
+msgstr "Konfiguration der Plugin-Bibliotheken"
+
+#: pluginmanager.cpp:446
+msgid "Starting Plugins"
+msgstr "Starten der Plugins"
+
+#: pluginmanager.cpp:459 pluginmanager.cpp:476
+msgid "Creating Plugin %1"
+msgstr "Erzeuge Plugin %1"
+
+#: pluginmanager.cpp:490
+msgid "Initializing Plugin %1"
+msgstr "Starten des Plugins %1"
+
+#: radiostation-config.cpp:45
+msgid "I don't know how to edit this station"
+msgstr "Keine Ahnung, wie dieser Sender bearbeitet werden soll"
+
+#: radiostation-config.cpp:68
+msgid "Frequency:"
+msgstr "Frequenz:"
+
+#: radiostation-listview.cpp:33
+msgid "No."
+msgstr "Nr."
+
+#: radiostation-listview.cpp:34
+msgid "Icon"
+msgstr "Symbol "
+
+#: radiostation-listview.cpp:35
+msgid "Station"
+msgstr "Sender"
+
+#: radiostation-listview.cpp:234
+msgid "contentsDragEnterEvent accepted"
+msgstr "contentsDragEnterEvent angenommen"
+
+#: radiostation-listview.cpp:236
+msgid "contentsDragEnterEvent rejected"
+msgstr "contentsDragEnterEvent abgelehnt"
+
+#: standardscandialog.cpp:118
+msgid "new station "
+msgstr "Neuer Sender "
+
+#: standardscandialog.cpp:142
+msgid "&Done"
+msgstr "&Fertig"
+
+#: standardscandialog.cpp:160
+msgid "<p align=\"right\">%1</p>"
+msgstr "<p align=\"right\">%1</p>"
+
+#: standardscandialog.cpp:162 standardscandialog.cpp:165
+#: include/radiostation.h:150 include/radiostation.h:151
+msgid "unknown"
+msgstr "unbekannt"
+
+#: station-drag-object.cpp:70
+msgid "canDecode = true"
+msgstr "canDecode = true"
+
+#: stationlist.cpp:255
+msgid "Contains merged Data"
+msgstr "Enthält zusammengefügte Einträge"
+
+#: stationlist.cpp:315
+msgid ""
+"Probably an old station preset file was read.\n"
+"You have to rebuild your station selections for the quickbar and the docking "
+"menu."
+msgstr ""
+"Wahrscheinlich wurde eine alte Senderdatei gelesen.\n"
+"Sie müssen ihre Senderauswahlen für das Kurzwahlfenster und das "
+"Kontrollleistenmenü neu erstellen."
+
+#: stationlist.cpp:325
+msgid "parsing failed"
+msgstr "Das Parsen schlug fehl"
+
+#: stationlist.cpp:329
+msgid ""
+"Parsing the station preset file failed.\n"
+"See console output for more details."
+msgstr ""
+"Das Parsen der Senderdatei schlug fehl.\n"
+"Mehr informationen gibts in der Ausgabe auf der Konsole."
+
+#: stationlist.cpp:343 stationlist.cpp:349
+msgid "error downloading preset file %1"
+msgstr "Fehler beim Download der Senderdatei %1"
+
+#: stationlist.cpp:345
+msgid "Download of the station preset file at %1 failed."
+msgstr "Der Download der Senderdatei %1 schlug fehl."
+
+#: stationlist.cpp:355
+msgid "temporary file: "
+msgstr "temporäre Datei: "
+
+#: stationlist.cpp:361
+msgid "error opening preset file %1"
+msgstr "Fehler beim Öffnen der Senderdatei %1"
+
+#: stationlist.cpp:364
+msgid "Opening of the station preset file at %1 failed."
+msgstr "Das Öffnen der Senderdatei %1 schluf fehl."
+
+#: stationlist.cpp:383
+msgid "Old Preset File Format detected"
+msgstr "Altes Senderdateiformat erkannt"
+
+#: stationlist.cpp:461
+msgid "error writing to tempfile %1"
+msgstr "Fehler beim schreiben in die temporäre Datei %1"
+
+#: stationlist.cpp:464
+msgid "Writing station preset file %1 failed."
+msgstr "Das Schreiben der Senderdatei %1 schlug fehl."
+
+#: stationlist.cpp:475
+msgid "uploading preset file %1: "
+msgstr "Speichern der Senderliste in Datei %1: "
+
+#: stationlist.cpp:477
+msgid ""
+"something strange happend, station list has only %1 entries. Writing station "
+"preset file skipped"
+msgstr ""
+"Etwas seltsames ist passiert: Die Senderliste hat nur %1 Einträge. Das "
+"Speichern der Senderliste wurde übersprungen."
+
+#: stationlist.cpp:482
+msgid "error uploading preset file %1"
+msgstr "Fehler: Das Speichern der Senderlistendatei %1 schlug fehl"
+
+#: stationlist.cpp:486
+msgid "Upload of station preset file to %1 failed."
+msgstr "Der Upload der Senderdatei %1 schlug fehl."
+
+#: stationlistxmlhandler.cpp:64
+msgid "misplaced element %1"
+msgstr "unerwartetes Element %1"
+
+#: stationlistxmlhandler.cpp:116
+msgid "unknown or unexpected element %1"
+msgstr "unbekanntes oder unerwartetes Element %1"
+
+#: stationlistxmlhandler.cpp:145
+msgid "expected element %1, but found %2"
+msgstr "erwartetes Element: %1, gefundenes: %2"
+
+#: stationlistxmlhandler.cpp:149
+msgid "unexpected element %1"
+msgstr "unerwartetes Element %1"
+
+#: stationlistxmlhandler.cpp:157
+msgid "invalid data for element %1"
+msgstr "ingültige Daten im Element %1"
+
+#: stationlistxmlhandler.cpp:172
+msgid "found a station list with unknown format %1"
+msgstr "Die Senderdatei enthält das unbekannte Format %1"
+
+#: stationlistxmlhandler.cpp:212
+msgid "unknown property %1 for class %2"
+msgstr "Die Eigenschaft %1 ist der Klasse %2 unbekannt"
+
+#: stationlistxmlhandler.cpp:219
+msgid "characters ignored for element %1"
+msgstr "Einige Zeichen des Elements %1 wurden ignoriert"
diff --git a/kradio3/src/po/es.po b/kradio3/src/po/es.po
new file mode 100644
index 0000000..022ca6c
--- /dev/null
+++ b/kradio3/src/po/es.po
@@ -0,0 +1,1333 @@
+# translation of es.po to es_ES
+# translation of kradio.po to es_ES
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Rafael Rodrguez Martn <apt-drink@telefonica.net>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: es\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-12 18:20+0100\n"
+"PO-Revision-Date: 2004-02-28 22:45+0000\n"
+"Last-Translator: Rafael Rodrguez Martn <apt-drink@telefonica.net>\n"
+"Language-Team: es_ES <kde-es@kybs.de>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-15\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 16
+#: rc.cpp:3 rc.cpp:81 pluginmanager-configuration-ui.cpp:170
+#, fuzzy, no-c-format
+msgid "PluginManagerConfigurationUI"
+msgstr "DockingConfigurationUI"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 30
+#: rc.cpp:6 rc.cpp:84 pluginmanager-configuration-ui.cpp:171
+#, no-c-format
+msgid "Show Progress Bar during Startup for Plugin Initiali&zation"
+msgstr ""
+
+#. i18n: file pluginmanager-configuration-ui.ui line 33
+#: rc.cpp:9 rc.cpp:87 pluginmanager-configuration-ui.cpp:172
+#, no-c-format
+msgid "Alt+Z"
+msgstr ""
+
+#. i18n: file pluginmanager-configuration-ui.ui line 78
+#. i18n: file pluginmanager-configuration-ui.ui line 229
+#. i18n: file pluginmanager-configuration-ui.ui line 78
+#. i18n: file pluginmanager-configuration-ui.ui line 229
+#: rc.cpp:13 rc.cpp:34 rc.cpp:91 rc.cpp:112
+#: pluginmanager-configuration-ui.cpp:63
+#: pluginmanager-configuration-ui.cpp:104
+#: pluginmanager-configuration-ui.cpp:174
+#: pluginmanager-configuration-ui.cpp:183
+#, no-c-format
+msgid "Plugin Class"
+msgstr ""
+
+#. i18n: file pluginmanager-configuration-ui.ui line 89
+#: rc.cpp:16 rc.cpp:94 pluginmanager-configuration-ui.cpp:64
+#: pluginmanager-configuration-ui.cpp:175 pluginmanager-configuration.cpp:144
+#, fuzzy, no-c-format
+msgid "Instance Name"
+msgstr "Instancia"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 100
+#. i18n: file pluginmanager-configuration-ui.ui line 240
+#. i18n: file pluginmanager-configuration-ui.ui line 100
+#. i18n: file pluginmanager-configuration-ui.ui line 240
+#: rc.cpp:19 rc.cpp:37 rc.cpp:97 rc.cpp:115
+#: pluginmanager-configuration-ui.cpp:65
+#: pluginmanager-configuration-ui.cpp:105
+#: pluginmanager-configuration-ui.cpp:176
+#: pluginmanager-configuration-ui.cpp:184 radiostation-listview.cpp:36
+#, no-c-format
+msgid "Description"
+msgstr ""
+
+#. i18n: file pluginmanager-configuration-ui.ui line 116
+#: rc.cpp:22 rc.cpp:100 pluginmanager-configuration-ui.cpp:177
+#, no-c-format
+msgid "list of running plugins"
+msgstr ""
+
+#. i18n: file pluginmanager-configuration-ui.ui line 153
+#: rc.cpp:26 rc.cpp:104 pluginmanager-configuration-ui.cpp:179
+#, no-c-format
+msgid "remove/stop a selected plugin instance"
+msgstr ""
+
+#. i18n: file pluginmanager-configuration-ui.ui line 223
+#: rc.cpp:31 rc.cpp:109 pluginmanager-configuration-ui.cpp:182
+#, no-c-format
+msgid "create a new instance of selected plugin class"
+msgstr ""
+
+#. i18n: file pluginmanager-configuration-ui.ui line 256
+#: rc.cpp:40 rc.cpp:118 pluginmanager-configuration-ui.cpp:185
+#, no-c-format
+msgid "list of available plugin classes"
+msgstr ""
+
+#. i18n: file pluginmanager-configuration-ui.ui line 297
+#: rc.cpp:44 rc.cpp:122 pluginmanager-configuration-ui.cpp:187
+#, no-c-format
+msgid "select a plugin library"
+msgstr ""
+
+#. i18n: file pluginmanager-configuration-ui.ui line 317
+#: rc.cpp:48 rc.cpp:126 pluginmanager-configuration-ui.cpp:189
+#, no-c-format
+msgid "unload a plugin library"
+msgstr ""
+
+#. i18n: file pluginmanager-configuration-ui.ui line 337
+#: rc.cpp:52 rc.cpp:130 pluginmanager-configuration-ui.cpp:191
+#, no-c-format
+msgid "load a selected plugin library"
+msgstr ""
+
+#. i18n: file pluginmanager-configuration-ui.ui line 353
+#: rc.cpp:55 rc.cpp:133 pluginmanager-configuration-ui.cpp:192
+#, no-c-format
+msgid "list of loaded plugin libraries"
+msgstr ""
+
+#. i18n: file standardscandialog-ui.ui line 16
+#: rc.cpp:58 rc.cpp:136 standardscandialog-ui.cpp:86
+#, no-c-format
+msgid "Stations search in progress ..."
+msgstr "Bsqueda de emisoras en progreso ..."
+
+#. i18n: file standardscandialog-ui.ui line 104
+#: rc.cpp:64 rc.cpp:142 standardscandialog-ui.cpp:88
+#, no-c-format
+msgid "remaining time"
+msgstr "tiempo restante"
+
+#. i18n: file standardscandialog-ui.ui line 120
+#: rc.cpp:67 rc.cpp:145 standardscandialog-ui.cpp:89
+#, no-c-format
+msgid "<p align=\"right\">nothing here</p>"
+msgstr "<p align=\"right\">nada aqu</p>"
+
+#. i18n: file stationselector-ui.ui line 16
+#: rc.cpp:70 rc.cpp:148 stationselector-ui.cpp:90
+#, no-c-format
+msgid "StationSelectorUI"
+msgstr "StationSelectorUI"
+
+#. i18n: file stationselector-ui.ui line 30
+#: rc.cpp:73 rc.cpp:151 stationselector-ui.cpp:91
+#, no-c-format
+msgid "Selected Stations"
+msgstr "Emisoras seleccionadas"
+
+#. i18n: file stationselector-ui.ui line 119
+#: rc.cpp:78 rc.cpp:156 stationselector-ui.cpp:94
+#, no-c-format
+msgid "Available Stations"
+msgstr "Emisoras disponibles"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Rafael Rodrguez Martn"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "apt-drink@telefonica.net"
+
+#: aboutwidget.cpp:282
+#, fuzzy
+msgid "Invalid layout"
+msgstr "emisora no vlida"
+
+#: aboutwidget.cpp:451
+msgid "%1 %2 (Using KDE %3)"
+msgstr "%1 %2 (Utilizando KDE %3)"
+
+#: aboutwidget.cpp:454
+msgid "%1 %2, %3"
+msgstr "%1 %2, %3"
+
+#: aboutwidget.cpp:527
+msgid "A&uthor"
+msgstr "A&utor"
+
+#: aboutwidget.cpp:527
+msgid "A&uthors"
+msgstr "A&utores"
+
+#: aboutwidget.cpp:541
+msgid "&Thanks To"
+msgstr "&Gracias a"
+
+#: aboutwidget.cpp:554
+msgid "T&ranslation"
+msgstr "T&raduccin"
+
+#: aboutwidget.cpp:571
+msgid "&License Agreement"
+msgstr "&Acuerdo de licencia"
+
+#: aboutwidget.cpp:585
+msgid "Image missing"
+msgstr "Falta imagen"
+
+#: errorlog-interfaces.cpp:43 errorlog-interfaces.cpp:78
+msgid "%1 Error: %2\n"
+msgstr ""
+
+#: errorlog-interfaces.cpp:52 errorlog-interfaces.cpp:87
+#, fuzzy
+msgid "%1 Warning: %2\n"
+msgstr "Avisos"
+
+#: errorlog-interfaces.cpp:61 errorlog-interfaces.cpp:96
+msgid "%1 Information: %2\n"
+msgstr ""
+
+#: errorlog-interfaces.cpp:70 errorlog-interfaces.cpp:105
+msgid "%1 Debug: %2\n"
+msgstr ""
+
+#: fileringbuffer.cpp:35 fileringbuffer.cpp:68
+#, fuzzy
+msgid "cannot open buffer file %1"
+msgstr "No se puede abrir el archivo de salida %1. "
+
+#: fileringbuffer.cpp:93
+msgid "FileRingbuffer::resize: Writing to tmpfile %1 failed. "
+msgstr ""
+
+#: fileringbuffer.cpp:99
+msgid "FileRingbuffer::resize: Opening tmpfile %1 failed. "
+msgstr ""
+
+#: fileringbuffer.cpp:127 fileringbuffer.cpp:145
+msgid "FileRingBuffer::addData: failed writing data to file %1."
+msgstr ""
+
+#: fileringbuffer.cpp:168
+msgid "FileRingBuffer::takeData: failed reading data to file %1."
+msgstr ""
+
+#: frequencyradiostation.cpp:120 internetradiostation.cpp:118
+#, fuzzy
+msgid "%1, %2"
+msgstr "%1 %2, %3"
+
+#: frequencyradiostation.cpp:134
+#, fuzzy
+msgid "%1 MHz"
+msgstr " kHz"
+
+#: frequencyradiostation.cpp:136
+#, fuzzy
+msgid "%1 kHz"
+msgstr " kHz"
+
+#: kradioapp.cpp:44
+msgid ""
+"KRadio - The Radio Application for KDE<P>With KRadio you can listen to radio "
+"broadcasts with the help of your V4L/V4L2 compatible radio card.<P>The "
+"KRadio Project contains a station preset data database. To complete this "
+"database you are encouraged to contribute your station preset file to the "
+"project. Just send it to one of the authors. <P>If you like to contribute "
+"your ideas, your own plugins or translations, don't hesitate to contact one "
+"of the authors.<P>"
+msgstr ""
+"KRadio - La aplicacin de radio para KDE<P>Con KRadio puede escuchar "
+"retransmisiones de radio con la ayuda de su tarjeta de radio compatible con "
+"V4L/V4L2.<P>El proyecto KRadio contiene una base de datos de configuraciones "
+"de emisoras. Para completar esta base de datos, le animamos a contribuir al "
+"proyecto con su configuracin. Slo envela a uno de los autores. <P>Si "
+"desea contribuir con sus ideas, sus propios plugins, o sus traducciones, no "
+"dude en contactar con uno de los autores.<P>"
+
+#: kradioapp.cpp:66
+msgid ""
+"Preset Database, Remote Control Support, Alarms, Rewrite for KRadio 0.3.0, "
+"Misc"
+msgstr ""
+"Base de datos de configuraciones, soporte de control remoto, alertas, "
+"reescritura para KRadio 0.3.0, Miscelnea"
+
+#: kradioapp.cpp:67 main.cpp:43
+msgid "Buildsystem, Standards Conformance, Cleanups"
+msgstr ""
+
+#: kradioapp.cpp:69 main.cpp:45
+msgid "idea, first basic application"
+msgstr "idea, primera aplicacin bsica"
+
+#: kradioapp.cpp:71
+msgid "Many People around the World ... "
+msgstr "Mucha gente alrededor del mundo ... "
+
+#: kradioapp.cpp:72
+msgid ""
+"... which contributed station preset files \n"
+"and tested early and unstable snapshots of KRadio \n"
+"with much patience"
+msgstr ""
+"... que ha contribuido con archivos de configuracin de emisoras \n"
+"y ha testeado las primeras versiones inestables no oficiales de KRadio \n"
+"con mucha paciencia"
+
+#: kradioapp.cpp:106
+msgid "Library %1: Plugin Entry Point is missing\n"
+msgstr ""
+
+#: kradioapp.cpp:108 kradioapp.cpp:119
+msgid "Plugin Library Load Error"
+msgstr ""
+
+#: kradioapp.cpp:116
+msgid ""
+"Library %1: \n"
+"%2"
+msgstr ""
+
+#: kradioapp.cpp:143
+msgid "saveState"
+msgstr ""
+
+#: kradioapp.cpp:221
+msgid "Instance"
+msgstr "Instancia"
+
+#: kradioapp.cpp:242
+msgid "KRadio Configuration"
+msgstr "Configuracin de KRadio"
+
+#: kradioapp.cpp:243
+msgid "About KRadio Components"
+msgstr "Acerca de los componentes de KRadio"
+
+#: kradioapp.cpp:271
+#, fuzzy
+msgid "Error: Loading Library %1 failed: %2"
+msgstr "error al leer %1: %2"
+
+#: kradioapp.cpp:322
+msgid "Error: Creation of instance \"%1\" of class %2 falied."
+msgstr ""
+
+#: kradioapp.cpp:328
+msgid "Error: Cannot create instance \"%1\" of unknown class %2."
+msgstr ""
+
+#: main.cpp:36
+msgid "KRadio"
+msgstr "KRadio"
+
+#: main.cpp:42
+msgid "rewrite for 0.3.0, recording, lirc support, alarms, misc"
+msgstr "reescritura para 0.3.0, grabacin, soporte lirc, alertas, miscelnea"
+
+#: multibuffer.cpp:89
+msgid "Buffer Overflow. "
+msgstr ""
+
+#: plugin_configuration_dialog.cpp:29
+msgid "Configuration Dialog"
+msgstr "Dilogo de configuracin"
+
+#: pluginmanager-configuration.cpp:143
+msgid "Enter Plugin Instance Name"
+msgstr ""
+
+#: pluginmanager.cpp:123
+msgid "Hide %1"
+msgstr "Esconder %1"
+
+#: pluginmanager.cpp:123
+msgid "Show %1"
+msgstr "Mostrar %1"
+
+#: pluginmanager.cpp:350
+#, fuzzy
+msgid "Plugins"
+msgstr "Plugin LIRC"
+
+#: pluginmanager.cpp:351
+#, fuzzy
+msgid "Plugin Library Configuration"
+msgstr "Configuracin de barra de acceso rpido"
+
+#: pluginmanager.cpp:446
+#, fuzzy
+msgid "Starting Plugins"
+msgstr "Iniciar reproduccin"
+
+#: pluginmanager.cpp:459 pluginmanager.cpp:476
+#, fuzzy
+msgid "Creating Plugin %1"
+msgstr "Plugin de grabacin"
+
+#: pluginmanager.cpp:490
+#, fuzzy
+msgid "Initializing Plugin %1"
+msgstr "inicializando el plugin lirc de kradio"
+
+#: radiostation-config.cpp:45
+msgid "I don't know how to edit this station"
+msgstr "No s como editar esta emisora"
+
+#: radiostation-config.cpp:68
+msgid "Frequency:"
+msgstr "Frecuencia:"
+
+#: radiostation-listview.cpp:33
+msgid "No."
+msgstr ""
+
+#: radiostation-listview.cpp:34
+msgid "Icon"
+msgstr ""
+
+#: radiostation-listview.cpp:35
+#, fuzzy
+msgid "Station"
+msgstr "Emisoras"
+
+#: radiostation-listview.cpp:234
+msgid "contentsDragEnterEvent accepted"
+msgstr ""
+
+#: radiostation-listview.cpp:236
+msgid "contentsDragEnterEvent rejected"
+msgstr ""
+
+#: standardscandialog.cpp:118
+msgid "new station "
+msgstr "nueva emisora"
+
+#: standardscandialog.cpp:142
+msgid "&Done"
+msgstr "&Hecho"
+
+#: standardscandialog.cpp:160
+#, fuzzy
+msgid "<p align=\"right\">%1</p>"
+msgstr "<p align=\"right\">nada aqu</p>"
+
+#: standardscandialog.cpp:162 standardscandialog.cpp:165
+#: include/radiostation.h:150 include/radiostation.h:151
+msgid "unknown"
+msgstr "desconocido"
+
+#: station-drag-object.cpp:70
+msgid "canDecode = true"
+msgstr ""
+
+#: stationlist.cpp:255
+msgid "Contains merged Data"
+msgstr "Contiene datos fusionados "
+
+#: stationlist.cpp:315
+msgid ""
+"Probably an old station preset file was read.\n"
+"You have to rebuild your station selections for the quickbar and the docking "
+"menu."
+msgstr ""
+"Probablemente fue leido un archivo de configuracion de emisoras antiguo.\n"
+"Tiene que reconstruir su seleccin de emisoras para la barra de acceso "
+"rpido y el men de empotrado."
+
+#: stationlist.cpp:325
+msgid "parsing failed"
+msgstr "fall el anlisis sintctico"
+
+#: stationlist.cpp:329
+msgid ""
+"Parsing the station preset file failed.\n"
+"See console output for more details."
+msgstr ""
+"Fall el anlisis sintctico del archivo de configuracin de emisoras.\n"
+"Observe la salida en la consola para ms detalles."
+
+#: stationlist.cpp:343 stationlist.cpp:349
+msgid "error downloading preset file %1"
+msgstr "error al descargar el archivo de configuracin %1"
+
+#: stationlist.cpp:345
+msgid "Download of the station preset file at %1 failed."
+msgstr "Fall la descarga del archivo de configuracin de emisoras en %1."
+
+#: stationlist.cpp:355
+msgid "temporary file: "
+msgstr "archivo temporal: "
+
+#: stationlist.cpp:361
+msgid "error opening preset file %1"
+msgstr "error abriendo el archivo de configuracin %1"
+
+#: stationlist.cpp:364
+msgid "Opening of the station preset file at %1 failed."
+msgstr "Fall la apertura del archivo de configuracin en %1."
+
+#: stationlist.cpp:383
+msgid "Old Preset File Format detected"
+msgstr "Detectado formato de archivo de configuracin antiguo"
+
+#: stationlist.cpp:461
+msgid "error writing to tempfile %1"
+msgstr "error al escribir al archivo temporal %1"
+
+#: stationlist.cpp:464
+msgid "Writing station preset file %1 failed."
+msgstr "Fall la escritura del archivo de configuracin de emisoras %1."
+
+#: stationlist.cpp:475
+#, fuzzy
+msgid "uploading preset file %1: "
+msgstr "Error al subir el archivo de configuracin %1"
+
+#: stationlist.cpp:477
+msgid ""
+"something strange happend, station list has only %1 entries. Writing station "
+"preset file skipped"
+msgstr ""
+
+#: stationlist.cpp:482
+msgid "error uploading preset file %1"
+msgstr "Error al subir el archivo de configuracin %1"
+
+#: stationlist.cpp:486
+msgid "Upload of station preset file to %1 failed."
+msgstr "Fall la subida del archivo de configuracin de emisoras a %1."
+
+#: stationlistxmlhandler.cpp:64
+msgid "misplaced element %1"
+msgstr "elemento %1 mal colocado"
+
+#: stationlistxmlhandler.cpp:116
+msgid "unknown or unexpected element %1"
+msgstr "elemento %1 desconocido o inesperado"
+
+#: stationlistxmlhandler.cpp:145
+msgid "expected element %1, but found %2"
+msgstr "se esperaba el elemento %1, pero se encontr %2"
+
+#: stationlistxmlhandler.cpp:149
+msgid "unexpected element %1"
+msgstr "elemento inesperado %1"
+
+#: stationlistxmlhandler.cpp:157
+msgid "invalid data for element %1"
+msgstr "datos no vlidos para elemento %1"
+
+#: stationlistxmlhandler.cpp:172
+msgid "found a station list with unknown format %1"
+msgstr "encontrada una lista de emisoras con formato desconocido %1"
+
+#: stationlistxmlhandler.cpp:212
+msgid "unknown property %1 for class %2"
+msgstr "propiedad desconocida %1 para clase %2"
+
+#: stationlistxmlhandler.cpp:219
+msgid "characters ignored for element %1"
+msgstr "caracteres ignorados para elemento %1"
+
+#~ msgid "Display Colors"
+#~ msgstr "Colores de la pantalla"
+
+#~ msgid "Active Text"
+#~ msgstr "Texto activo"
+
+#~ msgid "Inactive Text"
+#~ msgstr "Texto inactivo"
+
+#~ msgid "Background Color"
+#~ msgstr "Color de fondo"
+
+#~ msgid "Docking Plugin"
+#~ msgstr "Plugin de icono empotrable"
+
+#~ msgid "Stop Recording"
+#~ msgstr "Detener grabacin"
+
+#~ msgid "Start Recording"
+#~ msgstr "Iniciar grabacin"
+
+#~ msgid "Docking Menu"
+#~ msgstr "Men de icono empotrable"
+
+#~ msgid "Docking Menu Configuration"
+#~ msgstr "Configuracin del men de icono empotrable"
+
+#~ msgid "Docking Menu for KRadio"
+#~ msgstr "Men de icono empotrable de KRadio"
+
+#~ msgid "Docking Menu Plugin"
+#~ msgstr "Plugin de men del icono empotrable"
+
+#~ msgid "Search Next Station"
+#~ msgstr "Buscar siguiente emisora"
+
+#~ msgid "Search Previous Station"
+#~ msgstr "Buscar anterior emisora"
+
+#~ msgid "next alarm: %1"
+#~ msgstr "siguiente alerta: %1"
+
+#~ msgid "<no alarm pending>"
+#~ msgstr "<no alarm pending>"
+
+#~ msgid "Stop Sleep Countdown (running until %1)"
+#~ msgstr "Detener cuenta atrs para dormir (corriendo hasta %1)"
+
+#~ msgid "Start Sleep Countdown"
+#~ msgstr "Iniciar cuenta atrs para dormir"
+
+#~ msgid "Power Off"
+#~ msgstr "Apagar"
+
+#~ msgid "Power On"
+#~ msgstr "Encender"
+
+#~ msgid "KRadio Logger"
+#~ msgstr "Registro de KRadio"
+
+#~ msgid "Save &as"
+#~ msgstr "Guardar &como"
+
+#~ msgid "Error Logger"
+#~ msgstr "Registro de errores"
+
+#~ msgid "logging started"
+#~ msgstr "registro iniciado"
+
+#~ msgid "Errors"
+#~ msgstr "Errores"
+
+#~ msgid "Debugging"
+#~ msgstr "Depuracin"
+
+#~ msgid "Log Files"
+#~ msgstr "Archivos de registro"
+
+#~ msgid "Select Log File"
+#~ msgstr "Seleccionar archivo de registro"
+
+#~ msgid "Save KRadio Logging Data as ..."
+#~ msgstr "Guardar datos de registro como ..."
+
+#~ msgid "Initializing kradio lirc plugin failed"
+#~ msgstr "Fall la inicializacin del plugin lirc de kradio"
+
+#~ msgid "Initializing kradio lirc plugin successful"
+#~ msgstr "Inicializacin del plugin lirc de kradio correcta"
+
+#~ msgid "Linux Infrared Remote Control Support for KRadio"
+#~ msgstr ""
+#~ "Linux Infrared Remote Control Support (soporte de control remoto por "
+#~ "infrarrojos para Linux) de KRadio"
+
+#~ msgid "LIRC Support"
+#~ msgstr "Soporte LIRC"
+
+#~ msgid "Quickbar Plugin"
+#~ msgstr "Plugin de barra de acceso rpido"
+
+#~ msgid "Quickbar"
+#~ msgstr "Barra de acceso rpido"
+
+#~ msgid "Quickback for KRadio"
+#~ msgstr "Barra de acceso rpido de KRadio"
+
+#~ msgid "Images"
+#~ msgstr "Imgenes"
+
+#~ msgid "Pixmap Selection"
+#~ msgstr "Seleccin de mapa de pxels"
+
+#~ msgid "Select Station Pixmap"
+#~ msgstr "Seleccionar mapa de pxels de la estacin"
+
+#~ msgid "KRadio Preset Files"
+#~ msgstr "Archivos de configuracin de emisoras de KRadio"
+
+#~ msgid "Preset File Selection"
+#~ msgstr "Seleccin de archivos de configuracin"
+
+#~ msgid "Select Preset File"
+#~ msgstr "Seleccionar archivo de configuracin"
+
+#~ msgid "Store Preset File"
+#~ msgstr "Guardar archivo de configuracin"
+
+#~ msgid "Radio Multiplexer Plugin"
+#~ msgstr "Plugin de multiplexado de radio"
+
+#~ msgid "Radio Stations"
+#~ msgstr "Emisoras de radio"
+
+#~ msgid "Setup Radio Stations"
+#~ msgstr "Configurar emisoras de radio"
+
+#~ msgid "Radio Device Multiplexer and Station Management for KRadio"
+#~ msgstr ""
+#~ "Multiplexador de dispositivos de radio y administracin de emisoras de "
+#~ "KRadio"
+
+#~ msgid "Device and Station Management"
+#~ msgstr "Administracin de dispositivos y emisoras"
+
+#~ msgid "Radio Device Multiplexer and Station Management"
+#~ msgstr "Administracin de emisoras y multiplexado de dispositivos de radio"
+
+#~ msgid "Radio Display"
+#~ msgstr "Pantalla de radio"
+
+#~ msgid "Start Recording and display Recording Monitor"
+#~ msgstr "Iniciar grabacin y mostrar monitor de grabacin"
+
+#~ msgid "Start Monitoring"
+#~ msgstr "Iniciar monitorizacin"
+
+#~ msgid "Configure KRadio"
+#~ msgstr "Configurar KRadio"
+
+#~ msgid "Power On/Off"
+#~ msgstr "Encender/Apagar"
+
+#~ msgid "Quit KRadio Application"
+#~ msgstr "Salir de KRadio"
+
+#~ msgid "Start/Stop Recording"
+#~ msgstr "Iniciar/detener grabacin"
+
+#~ msgid "Start/Stop Sleep Countdown"
+#~ msgstr "Iniciar cuenta atrs para dormir"
+
+#~ msgid "Select a Radio Station"
+#~ msgstr "Seleccionar una emisora de radio"
+
+#~ msgid "no preset defined"
+#~ msgstr "ninguna configuracin definida"
+
+#~ msgid "Display"
+#~ msgstr "Pantalla"
+
+#~ msgid "Display Configuration"
+#~ msgstr "Configuracin de la pantalla"
+
+#~ msgid "set Toolbar-Flag for Display"
+#~ msgstr "activar el indicador de barra de herramientas para la pantalla"
+
+#~ msgid "Common"
+#~ msgstr "Comn"
+
+#~ msgid "Standard Radio Display for KRadio"
+#~ msgstr "Pantalla estndar de radio para KRadio"
+
+#~ msgid "Frequency Display"
+#~ msgstr "Pantalla de la frecuencia"
+
+#~ msgid "AM"
+#~ msgstr "AM"
+
+#~ msgid "FM"
+#~ msgstr "FM"
+
+#~ msgid "Search for previous Radio Station"
+#~ msgstr "Buscar emisora de radio anterior"
+
+#~ msgid "Search for next Radio Station"
+#~ msgstr "Buscar siguiente emisora de radio"
+
+#~ msgid "Decrement Frequency"
+#~ msgstr "Decrementar frecuencia"
+
+#~ msgid "Increment Frequency"
+#~ msgstr "Incrementar frecuencia"
+
+#~ msgid "Change Frequency"
+#~ msgstr "Cambiar frecuencia"
+
+#~ msgid "Change Volume"
+#~ msgstr "Cambiar volumen"
+
+#~ msgid "C&ustom"
+#~ msgstr "&Personalizado"
+
+#~ msgid "RadioConfigurationUI"
+#~ msgstr "RadioConfigurationUI"
+
+#~ msgid "Station &Presets"
+#~ msgstr "&Configuraciones de emisoras"
+
+#~ msgid "&Search Stations"
+#~ msgstr "&Buscar emisoras"
+
+#~ msgid "Load"
+#~ msgstr "Cargar"
+
+#~ msgid "Name"
+#~ msgstr "Nombre"
+
+#~ msgid "Short Name"
+#~ msgstr "Nombre corto"
+
+#~ msgid "Pixmap File"
+#~ msgstr "Archivo de mapa de pxels"
+
+#~ msgid " %"
+#~ msgstr " %"
+
+#~ msgid "Volume Preset"
+#~ msgstr "Volumen predefinido"
+
+#~ msgid "Personal Preset File"
+#~ msgstr "Archivo de configuracin personal"
+
+#~ msgid "City"
+#~ msgstr "Ciudad"
+
+#~ msgid "Country"
+#~ msgstr "Pas"
+
+#~ msgid "&Now"
+#~ msgstr "&Ahora"
+
+#~ msgid "Comment"
+#~ msgstr "Comentario"
+
+#~ msgid "Media"
+#~ msgstr "Medio"
+
+#~ msgid "Maintainer"
+#~ msgstr "Responsable del mantenimiento"
+
+#~ msgid "Last Change"
+#~ msgstr "ltimo cambio"
+
+#~ msgid ""
+#~ "<p align=\"center\">Click on the link below to contribute this station "
+#~ "preset file to the kradio project.</p>"
+#~ msgstr ""
+#~ "<p align=\"center\">Pulse en el enlace de abajo para contribuir con este "
+#~ "archivo de configuracin de emisoras al proyecto KRadio.</p>"
+
+#~ msgid "RadioView_SeekInterface"
+#~ msgstr "RadioView_SeekInterface"
+
+#~ msgid "search previous station"
+#~ msgstr "Buscar anterior emisora"
+
+#~ msgid "decrease freq. by 0.05 MHz"
+#~ msgstr "decrementar frecuencia en 0.05 Mhz"
+
+#~ msgid "Frequency control"
+#~ msgstr "Control de frecuencia"
+
+#~ msgid "increase freq. by 0.05 MHz"
+#~ msgstr "incrementar frecuencia en 0.05 Mhz"
+
+#~ msgid "search next station"
+#~ msgstr "buscar siguiente emisora"
+
+#, fuzzy
+#~ msgid "RecordingConfigurationUI"
+#~ msgstr "RecordingConfigurationUI"
+
+#~ msgid "Buffer Management"
+#~ msgstr "Administracin del bfer"
+
+#~ msgid " kB"
+#~ msgstr " kb"
+
+#~ msgid "Encoding Buffer Size"
+#~ msgstr "Tamao del bfer de codificacin"
+
+#~ msgid "Number of Buffers"
+#~ msgstr "Nmero de bfers"
+
+#~ msgid "Output"
+#~ msgstr "Salida"
+
+#~ msgid "Recording Directory"
+#~ msgstr "Directorio de grabacin"
+
+#~ msgid "MP3 Quality(0 - high, 1 - low)"
+#~ msgstr "Calidad del MP3 (0 - alta, 1 - baja)"
+
+#~ msgid "File Format"
+#~ msgstr "Formato de archivo"
+
+#~ msgid "Microsoft Wave (.wav)"
+#~ msgstr "Microsoft Wave (.wav)"
+
+#~ msgid "Apple/SGI (.aiff)"
+#~ msgstr "Apple/SGI (.aiff)"
+
+#~ msgid "Sun/NeXT (.au)"
+#~ msgstr "Sun/NeXT (.au)"
+
+#~ msgid "raw pcm output (.raw)"
+#~ msgstr "salida pcm en crudo (.raw)"
+
+#~ msgid "MP3 Compressed (.mp3)"
+#~ msgstr "MP3 comprimido (.mp3)"
+
+#~ msgid "Input"
+#~ msgstr "Entrada"
+
+#~ msgid "/dev/dsp"
+#~ msgstr "/dev/dsp"
+
+#~ msgid "Sample Bits"
+#~ msgstr "Bits de sampleado"
+
+#~ msgid "Signed"
+#~ msgstr "Con signo"
+
+#~ msgid "Unsigned"
+#~ msgstr "Sin signo"
+
+#~ msgid "16"
+#~ msgstr "16"
+
+#~ msgid "8"
+#~ msgstr "8"
+
+#~ msgid "Recording Device"
+#~ msgstr "Dispositivo de grabacin"
+
+#~ msgid "Endianess"
+#~ msgstr "Posicin del byte ms significativo"
+
+#~ msgid "Channels"
+#~ msgstr "Canales"
+
+#~ msgid "44100"
+#~ msgstr "44100"
+
+#~ msgid "22050"
+#~ msgstr "22050"
+
+#~ msgid "11025"
+#~ msgstr "11025"
+
+#~ msgid "Little Endian"
+#~ msgstr "Little endian ( byte menos significativo primero)"
+
+#~ msgid "Big Endian"
+#~ msgstr "Big endian (byte ms significativo primero)"
+
+#~ msgid "Sample Rate"
+#~ msgstr "Frecuencia de muestreo"
+
+#~ msgid "Stereo"
+#~ msgstr "Estreo"
+
+#~ msgid "Mono"
+#~ msgstr "Mono"
+
+#~ msgid "TimeControlConfigurationUI"
+#~ msgstr "TimeControlConfigurationUI"
+
+#~ msgid "sleep countdown"
+#~ msgstr "cuenta atrs para dormir"
+
+#~ msgid " min"
+#~ msgstr " min"
+
+#~ msgid "Alarms"
+#~ msgstr "Alertas"
+
+#~ msgid "Date"
+#~ msgstr "Fecha"
+
+#~ msgid "Time"
+#~ msgstr "Hora"
+
+#~ msgid "Volume"
+#~ msgstr "Volumen"
+
+#~ msgid "enabled"
+#~ msgstr "activado"
+
+#~ msgid "daily"
+#~ msgstr "diario"
+
+#~ msgid "Radio Station"
+#~ msgstr "Emisora de radio"
+
+#~ msgid "Stop Playing"
+#~ msgstr "Detener reproduccin"
+
+#~ msgid "SetupDialogGeneral"
+#~ msgstr "SetupDialogGeneral"
+
+#~ msgid "Devices"
+#~ msgstr "Dispositivos"
+
+#~ msgid "unknown v4l device"
+#~ msgstr "dispositivo v4l desconocido"
+
+#~ msgid "Mixer Channel"
+#~ msgstr "Canal mezclador"
+
+#~ msgid "Mixer Device"
+#~ msgstr "Dispositivo mezclador"
+
+#~ msgid "Radio Device"
+#~ msgstr "Dispositivo de radio"
+
+#~ msgid "to"
+#~ msgstr "a"
+
+#~ msgid "minimum signal quality"
+#~ msgstr "calidad mnima de seal"
+
+#~ msgid "station scan step"
+#~ msgstr "Paso mnimo al buscar emisoras"
+
+#~ msgid "allowed frequency range"
+#~ msgstr "Rango de frecuencias permitidas"
+
+#~ msgid "V4L Device Controls"
+#~ msgstr "Controles del dispositivo V4L"
+
+#~ msgid "volume"
+#~ msgstr "volumen"
+
+#~ msgid "treble"
+#~ msgstr "agudos"
+
+#~ msgid "bass"
+#~ msgstr "bajos"
+
+#~ msgid "balance"
+#~ msgstr "balance"
+
+#~ msgid "Recording Monitor"
+#~ msgstr "Monitor de grabacin"
+
+#~ msgid "Status"
+#~ msgstr "Estado"
+
+#~ msgid "<undefined>"
+#~ msgstr "<undefined>"
+
+#~ msgid "Recording File"
+#~ msgstr "Archivo de grabacin"
+
+#~ msgid "File Size"
+#~ msgstr "Tamao del archivo"
+
+#~ msgid "Recording Time"
+#~ msgstr "Tiempo de grabacin"
+
+#~ msgid "Hide/Show when recording stops/starts"
+#~ msgstr "Esconder/Iniciar cuando la grabacin se detiene/inicia"
+
+#~ msgid "Monitor Input"
+#~ msgstr "Monitorizar entrada"
+
+#~ msgid "Recording Monitor Plugin for KRadio"
+#~ msgstr "Plugin de monitor de grabacin para KRadio"
+
+#~ msgid "Recording Monitor Plugin"
+#~ msgstr "Plugin de monitor de grabacin"
+
+#~ msgid "&Stop"
+#~ msgstr "&Detener"
+
+#~ msgid "not running"
+#~ msgstr "no est ejecutndose"
+
+#~ msgid "recording"
+#~ msgstr "grabando"
+
+#~ msgid "monitoring"
+#~ msgstr "monitorizando"
+
+#~ msgid "error occurred"
+#~ msgstr "ocurri un error"
+
+#~ msgid "finished"
+#~ msgstr "finalizado"
+
+#~ msgid "KRadio Recording Plugin"
+#~ msgstr "Plugin de grabacin de KRadio"
+
+#~ msgid "Recording"
+#~ msgstr "Grabacin"
+
+#~ msgid "Recording Monitor for KRadio"
+#~ msgstr "Monitor de grabacin de KRadio"
+
+#~ msgid "Recording starting"
+#~ msgstr "Iniciando grabacin"
+
+#~ msgid "Recording stopped with error"
+#~ msgstr "Grabacin detenida con error"
+
+#~ msgid "Monitoring starting"
+#~ msgstr "Iniciando monitorizacin"
+
+#~ msgid "Monitoring stopped with error"
+#~ msgstr "Monitorizacin detenida con error"
+
+#~ msgid "Recording stopped"
+#~ msgstr "Grabacin detenida"
+
+#~ msgid "Monitoring stopped"
+#~ msgstr "Monitorizacin detenida"
+
+#~ msgid "Cannot open DSP device %1"
+#~ msgstr "No se puede abrir dispositivo DSP %1"
+
+#~ msgid "Cannot set sample format for recording"
+#~ msgstr "No se puede fijar el formato de muestreo para la grabacin"
+
+#~ msgid "Cannot set number of channels for recording"
+#~ msgstr "No se puede fijar el nmero de canales para grabacin"
+
+#~ msgid "Cannot set sampling rate for recording"
+#~ msgstr "No se puede fijar la frecuencia de muestreo para la grabacin"
+
+#~ msgid "Asking for recording at %1 Hz but hardware uses %2 Hz"
+#~ msgstr "Intentando grabar a %1 Hz pero el hardware utiliza %2 Hz"
+
+#~ msgid "Cannot set stereo mode for recording"
+#~ msgstr "No se puede fijar el formato estreo para la grabacin"
+
+#~ msgid "Cannot set sample size for recording"
+#~ msgstr "No se puede fijar el tamao de muestreo para la grabacin"
+
+#~ msgid "Cannot set recording buffers"
+#~ msgstr "No se pueden establecer los bfers de grabacin"
+
+#~ msgid "Cannot read recording buffer size"
+#~ msgstr "No se puede leer el tamao del bfer de grabacin"
+
+#~ msgid "Hardware uses buffer blocks of %1 bytes"
+#~ msgstr "El hardware utiliza blques de bfer de %1 bytes"
+
+#~ msgid "Recording::outputFile: "
+#~ msgstr "Recording::outputFile: "
+
+#~ msgid "The encoding thread did not finish. It will be killed now."
+#~ msgstr ""
+#~ "El hilo de ejecucin de la codificacin no finaliz. Ser matado ahora."
+
+#~ msgid "Waiting for encoding thread to terminate."
+#~ msgstr "Esperando a que el hilo de ejecucin de la codificacin finalice."
+
+#~ msgid "Input buffer overflow. Skipped %1 input bytes"
+#~ msgstr "Desbordamiento del bfer de entrada. Saltados %1 bytes de entrada"
+
+#~ msgid "No data to record"
+#~ msgstr "No hay datos para grabar"
+
+#~ msgid "Error %1 while recording"
+#~ msgstr "Error %1 durante la grabacin"
+
+#~ msgid "Error %1 writing output. "
+#~ msgstr "Error %1 al escribir la salida. "
+
+#~ msgid "Error %1 while encoding mp3. "
+#~ msgstr "Error %1 durante la codificacin del mp3"
+
+#~ msgid "Cannot initialize lalibmp3lame. "
+#~ msgstr "No se puede inicializar lalibmp3lame. "
+
+#~ msgid "Cannot initialize libmp3lame parameters. "
+#~ msgstr "No se pueden inicializar los parmetros de libmp3lame. "
+
+#~ msgid "Recorded by KRadio"
+#~ msgstr "Grabado por KRadio"
+
+#~ msgid "Cannot allocate buffers for mp3 encoding. "
+#~ msgstr "No se pueden asignar los bfers para la codificacin del mp3. "
+
+#~ msgid "<don't change>"
+#~ msgstr "<don't change>"
+
+#~ msgid "TimeControl Plugin"
+#~ msgstr "Plugin de control de tiempo"
+
+#~ msgid "Setup Alarms"
+#~ msgstr "Configurar alertas"
+
+#~ msgid ""
+#~ "Time Control Plugin for KRadio.<P>Provides Alarms and Sleep Countdown<P>"
+#~ msgstr ""
+#~ "Plugin de control de tiempo de KRadio.<P>Provee alertas y cuenta atrs "
+#~ "para dormir<P>"
+
+#~ msgid "Time Control Plugin"
+#~ msgstr "Plugin de control de tiempo"
+
+#~ msgid "any ( * )"
+#~ msgstr "cualquiera ( * )"
+
+#~ msgid "Radio Device Selection"
+#~ msgstr "Seleccin del dispositivo de radio"
+
+#~ msgid "Select Radio Device"
+#~ msgstr "Seleccionar dispositivo de radio"
+
+#~ msgid "Mixer Device Selection"
+#~ msgstr "Seleccin del dispositivo mezclador"
+
+#~ msgid "Select Mixer Device"
+#~ msgstr "Seleccionar dispositivo mezclador"
+
+#~ msgid "Video For Linux Plugin"
+#~ msgstr "Plugin de Video For Linux"
+
+#~ msgid "error %1 while setting volume to %2"
+#~ msgstr "error %1 al fijar el volumen en %2"
+
+#~ msgid "error %1 while reading volume"
+#~ msgstr "error %1 al leer el volumen"
+
+#~ msgid "invalid frequency %1"
+#~ msgstr "frecuencia no vlida %1"
+
+#~ msgid "don't known how to handle V4L-version %1"
+#~ msgstr "no se sabe como manejar V4L versin %1"
+
+#~ msgid "error setting frequency to %1 (%2)"
+#~ msgstr "error al fijar la frecuencia en %1 (%2)"
+
+#~ msgid ""
+#~ "Selecting V4L radio input as recording source failed with error code %1"
+#~ msgstr ""
+#~ "Fall la seleccin de la entrada de radio de V4L como fuente de grabacin "
+#~ "con cdigo de error %1"
+
+#~ msgid "Reading igain volume failed with error code %1"
+#~ msgstr "Fall la lectura del volumen igain con cdigo de error %1"
+
+#~ msgid "Setting igain volume failed with error code %1"
+#~ msgstr "Fall la escritura del volumen igain con cdigo de error %1"
+
+#~ msgid "V4L Radio Options"
+#~ msgstr "Opciones de radio V4L"
+
+#~ msgid ""
+#~ "V4L/V4L2 Plugin for KRadio.<P>Provides Support for V4L/V4L2 based Radio "
+#~ "Cards<P>"
+#~ msgstr ""
+#~ "V4L/V4L2 plugin de KRadio.<P>Provee Soporte para tarjetas de radio "
+#~ "basadas en V4L/V4L2<P>"
+
+#~ msgid "V4L/V4L2"
+#~ msgstr "V4L/V4L2"
+
+#~ msgid "V4L/V4L2 Plugin"
+#~ msgstr "Plugin V4L/V4L2"
+
+#~ msgid "Cannot open mixer device %1"
+#~ msgstr "No se peude abrir el dispositivo mezclador %1"
+
+#~ msgid "Cannot open radio device %1"
+#~ msgstr "No se puede abrir el dispositivo de radio %1"
+
+#~ msgid "cannot open %1"
+#~ msgstr "no se puede abrir %1"
+
+#~ msgid "audio caps = %1"
+#~ msgstr "capacidades de audio = %1"
+
+#~ msgid "error reading V4L1 caps"
+#~ msgstr "error al leer las capacidades de V4L1"
+
+#~ msgid "V4L2: Querying mute control failed"
+#~ msgstr "V4L2: Fall el acceso al control de silenciado"
+
+#~ msgid "V4L2: Querying volume control failed"
+#~ msgstr "V4L2: Fall el acceso al control de volumen"
+
+#~ msgid "V4L2: Querying treble control failed"
+#~ msgstr "V4L2: Fall el acceso al control de agudos"
+
+#~ msgid "V4L2: Querying bass control failed"
+#~ msgstr "V4L2: Fall el acceso al control de bajos"
+
+#~ msgid "V4L2: Querying balance control failed"
+#~ msgstr "V4L2: Fall el acceso al control de balanceo"
+
+#~ msgid "V4LRadio::readV4LCaps: Reading V4L2 caps failed"
+#~ msgstr "V4LRadio::readV4LCaps: Fall la lectura de las capacidades de V4L2"
+
+#~ msgid "V4L %1 detected"
+#~ msgstr "Detectado V4L %1"
+
+#~ msgid "V4L not detected"
+#~ msgstr "V4L no detectado"
+
+#~ msgid "Radio is mutable"
+#~ msgstr "La radio es silenciable"
+
+#~ msgid "Radio is not mutable"
+#~ msgstr "La radio no es silenciable"
+
+#~ msgid "Radio has Volume Control"
+#~ msgstr "La radio tiene control de volumen"
+
+#~ msgid "Radio has no Volume Control"
+#~ msgstr "La radio no tiene control de volumen"
+
+#~ msgid "Radio has Bass Control"
+#~ msgstr "La radio tiene control de bajos"
+
+#~ msgid "Radio has no Bass Control"
+#~ msgstr "La radio no tiene control de bajos"
+
+#~ msgid "Radio has Treble Control"
+#~ msgstr "La radio tiene control de agudos"
+
+#~ msgid "Radio has no Treble Control"
+#~ msgstr "La radio no tiene control de agudos"
+
+#~ msgid "cannot get tuner info (error %1)"
+#~ msgstr "no se puede obtener informacin del sintonizador (error %1)"
+
+#~ msgid "error setting %1: %2"
+#~ msgstr "error al fijar %1: %2"
+
+#~ msgid "error updating radio audio info (%1): %2"
+#~ msgstr "error al actualizar la informacin de audio de la radio (%1): %2"
+
+#~ msgid "write"
+#~ msgstr "escribir"
+
+#~ msgid "read"
+#~ msgstr "leer"
diff --git a/kradio3/src/po/pl.po b/kradio3/src/po/pl.po
new file mode 100644
index 0000000..dba6f6f
--- /dev/null
+++ b/kradio3/src/po/pl.po
@@ -0,0 +1,1290 @@
+# translation of pl.po to
+# translation of pl.po to
+# translation of pl.po to
+# translation of pl.po to
+# translation of pl.po to
+# translation of pl.po to
+# translation of kradio.po to
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER, 2003, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pl\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-12 18:20+0100\n"
+"PO-Revision-Date: 2004-01-05 13:29+0000\n"
+"Last-Translator: \n"
+"Language-Team: <pl@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3\n"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 16
+#: rc.cpp:3 rc.cpp:81 pluginmanager-configuration-ui.cpp:170
+#, fuzzy, no-c-format
+msgid "PluginManagerConfigurationUI"
+msgstr "Konfiguracja dokowalnego menu"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 30
+#: rc.cpp:6 rc.cpp:84 pluginmanager-configuration-ui.cpp:171
+#, no-c-format
+msgid "Show Progress Bar during Startup for Plugin Initiali&zation"
+msgstr ""
+
+#. i18n: file pluginmanager-configuration-ui.ui line 33
+#: rc.cpp:9 rc.cpp:87 pluginmanager-configuration-ui.cpp:172
+#, no-c-format
+msgid "Alt+Z"
+msgstr ""
+
+#. i18n: file pluginmanager-configuration-ui.ui line 78
+#. i18n: file pluginmanager-configuration-ui.ui line 229
+#. i18n: file pluginmanager-configuration-ui.ui line 78
+#. i18n: file pluginmanager-configuration-ui.ui line 229
+#: rc.cpp:13 rc.cpp:34 rc.cpp:91 rc.cpp:112
+#: pluginmanager-configuration-ui.cpp:63
+#: pluginmanager-configuration-ui.cpp:104
+#: pluginmanager-configuration-ui.cpp:174
+#: pluginmanager-configuration-ui.cpp:183
+#, no-c-format
+msgid "Plugin Class"
+msgstr ""
+
+#. i18n: file pluginmanager-configuration-ui.ui line 89
+#: rc.cpp:16 rc.cpp:94 pluginmanager-configuration-ui.cpp:64
+#: pluginmanager-configuration-ui.cpp:175 pluginmanager-configuration.cpp:144
+#, no-c-format
+msgid "Instance Name"
+msgstr ""
+
+#. i18n: file pluginmanager-configuration-ui.ui line 100
+#. i18n: file pluginmanager-configuration-ui.ui line 240
+#. i18n: file pluginmanager-configuration-ui.ui line 100
+#. i18n: file pluginmanager-configuration-ui.ui line 240
+#: rc.cpp:19 rc.cpp:37 rc.cpp:97 rc.cpp:115
+#: pluginmanager-configuration-ui.cpp:65
+#: pluginmanager-configuration-ui.cpp:105
+#: pluginmanager-configuration-ui.cpp:176
+#: pluginmanager-configuration-ui.cpp:184 radiostation-listview.cpp:36
+#, no-c-format
+msgid "Description"
+msgstr ""
+
+#. i18n: file pluginmanager-configuration-ui.ui line 116
+#: rc.cpp:22 rc.cpp:100 pluginmanager-configuration-ui.cpp:177
+#, no-c-format
+msgid "list of running plugins"
+msgstr ""
+
+#. i18n: file pluginmanager-configuration-ui.ui line 153
+#: rc.cpp:26 rc.cpp:104 pluginmanager-configuration-ui.cpp:179
+#, no-c-format
+msgid "remove/stop a selected plugin instance"
+msgstr ""
+
+#. i18n: file pluginmanager-configuration-ui.ui line 223
+#: rc.cpp:31 rc.cpp:109 pluginmanager-configuration-ui.cpp:182
+#, no-c-format
+msgid "create a new instance of selected plugin class"
+msgstr ""
+
+#. i18n: file pluginmanager-configuration-ui.ui line 256
+#: rc.cpp:40 rc.cpp:118 pluginmanager-configuration-ui.cpp:185
+#, no-c-format
+msgid "list of available plugin classes"
+msgstr ""
+
+#. i18n: file pluginmanager-configuration-ui.ui line 297
+#: rc.cpp:44 rc.cpp:122 pluginmanager-configuration-ui.cpp:187
+#, no-c-format
+msgid "select a plugin library"
+msgstr ""
+
+#. i18n: file pluginmanager-configuration-ui.ui line 317
+#: rc.cpp:48 rc.cpp:126 pluginmanager-configuration-ui.cpp:189
+#, no-c-format
+msgid "unload a plugin library"
+msgstr ""
+
+#. i18n: file pluginmanager-configuration-ui.ui line 337
+#: rc.cpp:52 rc.cpp:130 pluginmanager-configuration-ui.cpp:191
+#, no-c-format
+msgid "load a selected plugin library"
+msgstr ""
+
+#. i18n: file pluginmanager-configuration-ui.ui line 353
+#: rc.cpp:55 rc.cpp:133 pluginmanager-configuration-ui.cpp:192
+#, no-c-format
+msgid "list of loaded plugin libraries"
+msgstr ""
+
+#. i18n: file standardscandialog-ui.ui line 16
+#: rc.cpp:58 rc.cpp:136 standardscandialog-ui.cpp:86
+#, no-c-format
+msgid "Stations search in progress ..."
+msgstr "Trwa poszukiwanie stacji..."
+
+#. i18n: file standardscandialog-ui.ui line 104
+#: rc.cpp:64 rc.cpp:142 standardscandialog-ui.cpp:88
+#, no-c-format
+msgid "remaining time"
+msgstr "Pozostały czas"
+
+#. i18n: file standardscandialog-ui.ui line 120
+#: rc.cpp:67 rc.cpp:145 standardscandialog-ui.cpp:89
+#, no-c-format
+msgid "<p align=\"right\">nothing here</p>"
+msgstr "<p align=\"right\">nic</p>"
+
+#. i18n: file stationselector-ui.ui line 16
+#: rc.cpp:70 rc.cpp:148 stationselector-ui.cpp:90
+#, no-c-format
+msgid "StationSelectorUI"
+msgstr ""
+
+#. i18n: file stationselector-ui.ui line 30
+#: rc.cpp:73 rc.cpp:151 stationselector-ui.cpp:91
+#, no-c-format
+msgid "Selected Stations"
+msgstr "Wybrane stacje"
+
+#. i18n: file stationselector-ui.ui line 119
+#: rc.cpp:78 rc.cpp:156 stationselector-ui.cpp:94
+#, no-c-format
+msgid "Available Stations"
+msgstr "Dostępne stacje"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr ""
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr ""
+
+#: aboutwidget.cpp:282
+#, fuzzy
+msgid "Invalid layout"
+msgstr "Nieprawidłowa stacja"
+
+#: aboutwidget.cpp:451
+msgid "%1 %2 (Using KDE %3)"
+msgstr "%1 %2 (Wersja KDE %3)"
+
+#: aboutwidget.cpp:454
+msgid "%1 %2, %3"
+msgstr "%1 %2 %3"
+
+#: aboutwidget.cpp:527
+msgid "A&uthor"
+msgstr "A&utor"
+
+#: aboutwidget.cpp:527
+msgid "A&uthors"
+msgstr "A&utorzy"
+
+#: aboutwidget.cpp:541
+msgid "&Thanks To"
+msgstr "P&odziękowania dla"
+
+#: aboutwidget.cpp:554
+msgid "T&ranslation"
+msgstr "&Tłumaczenie"
+
+#: aboutwidget.cpp:571
+msgid "&License Agreement"
+msgstr "Umowa &licencyjne"
+
+#: aboutwidget.cpp:585
+msgid "Image missing"
+msgstr "Brak obrazka"
+
+#: errorlog-interfaces.cpp:43 errorlog-interfaces.cpp:78
+msgid "%1 Error: %2\n"
+msgstr ""
+
+#: errorlog-interfaces.cpp:52 errorlog-interfaces.cpp:87
+#, fuzzy
+msgid "%1 Warning: %2\n"
+msgstr "Ostrzeżenia"
+
+#: errorlog-interfaces.cpp:61 errorlog-interfaces.cpp:96
+#, fuzzy
+msgid "%1 Information: %2\n"
+msgstr "Informacje"
+
+#: errorlog-interfaces.cpp:70 errorlog-interfaces.cpp:105
+msgid "%1 Debug: %2\n"
+msgstr ""
+
+#: fileringbuffer.cpp:35 fileringbuffer.cpp:68
+#, fuzzy
+msgid "cannot open buffer file %1"
+msgstr "NIe można otworzyć pliku %1"
+
+#: fileringbuffer.cpp:93
+msgid "FileRingbuffer::resize: Writing to tmpfile %1 failed. "
+msgstr ""
+
+#: fileringbuffer.cpp:99
+msgid "FileRingbuffer::resize: Opening tmpfile %1 failed. "
+msgstr ""
+
+#: fileringbuffer.cpp:127 fileringbuffer.cpp:145
+msgid "FileRingBuffer::addData: failed writing data to file %1."
+msgstr ""
+
+#: fileringbuffer.cpp:168
+msgid "FileRingBuffer::takeData: failed reading data to file %1."
+msgstr ""
+
+#: frequencyradiostation.cpp:120 internetradiostation.cpp:118
+#, fuzzy
+msgid "%1, %2"
+msgstr "%1 %2 %3"
+
+#: frequencyradiostation.cpp:134
+#, fuzzy
+msgid "%1 MHz"
+msgstr " kHz"
+
+#: frequencyradiostation.cpp:136
+#, fuzzy
+msgid "%1 kHz"
+msgstr " kHz"
+
+#: kradioapp.cpp:44
+msgid ""
+"KRadio - The Radio Application for KDE<P>With KRadio you can listen to radio "
+"broadcasts with the help of your V4L/V4L2 compatible radio card.<P>The "
+"KRadio Project contains a station preset data database. To complete this "
+"database you are encouraged to contribute your station preset file to the "
+"project. Just send it to one of the authors. <P>If you like to contribute "
+"your ideas, your own plugins or translations, don't hesitate to contact one "
+"of the authors.<P>"
+msgstr ""
+"KRadio - Aplikacja do obsługi radia pod KDE<P>KRadio służy do słuchania "
+"radia z wykorzystaniem karty radiowej kompatybilnej ze standardem V4L/V4L2. "
+"<P> Projekt KRadio zawiera bazę danych stacji radiowych. Aby uzupełnić tę "
+"bazę potrzebna jest pomoc użytkowników - zachęcamy więc do stworzenia listy "
+"stacji, które można odbierać w twojej okolicy i przesłanie jej do autorów "
+"KRadio. <P> Jeśli chcielibyście podzielić się swoimi pomysłami, wtyczkami "
+"czy tłumaczeniami skontaktujcie się koniecznie z którymś a autorów. <P>. "
+
+#: kradioapp.cpp:66
+msgid ""
+"Preset Database, Remote Control Support, Alarms, Rewrite for KRadio 0.3.0, "
+"Misc"
+msgstr "Baza Danych Stacjie, Obługa zdalnego sterowania, Alarmy, "
+
+#: kradioapp.cpp:67 main.cpp:43
+msgid "Buildsystem, Standards Conformance, Cleanups"
+msgstr ""
+
+#: kradioapp.cpp:69 main.cpp:45
+msgid "idea, first basic application"
+msgstr "Pomysł, pierwsza wersja aplikacji"
+
+#: kradioapp.cpp:71
+msgid "Many People around the World ... "
+msgstr "Wielu osób w różnych częściach świata..."
+
+#: kradioapp.cpp:72
+msgid ""
+"... which contributed station preset files \n"
+"and tested early and unstable snapshots of KRadio \n"
+"with much patience"
+msgstr ""
+"które przesyłały zestawy zapamiętanych stacji \n"
+" i cierpliwe testowały wczesne i niestabilne \n"
+"wersje KRadio"
+
+#: kradioapp.cpp:106
+msgid "Library %1: Plugin Entry Point is missing\n"
+msgstr ""
+
+#: kradioapp.cpp:108 kradioapp.cpp:119
+msgid "Plugin Library Load Error"
+msgstr ""
+
+#: kradioapp.cpp:116
+msgid ""
+"Library %1: \n"
+"%2"
+msgstr ""
+
+#: kradioapp.cpp:143
+msgid "saveState"
+msgstr ""
+
+#: kradioapp.cpp:221
+msgid "Instance"
+msgstr ""
+
+#: kradioapp.cpp:242
+msgid "KRadio Configuration"
+msgstr "Konfiguracja: KRadio"
+
+#: kradioapp.cpp:243
+msgid "About KRadio Components"
+msgstr "O składnikach KRadio"
+
+#: kradioapp.cpp:271
+#, fuzzy
+msgid "Error: Loading Library %1 failed: %2"
+msgstr "błąd"
+
+#: kradioapp.cpp:322
+msgid "Error: Creation of instance \"%1\" of class %2 falied."
+msgstr ""
+
+#: kradioapp.cpp:328
+msgid "Error: Cannot create instance \"%1\" of unknown class %2."
+msgstr ""
+
+#: main.cpp:36
+msgid "KRadio"
+msgstr "KRadio"
+
+#: main.cpp:42
+msgid "rewrite for 0.3.0, recording, lirc support, alarms, misc"
+msgstr "przepisanie wersji 0.3.0, nagrywanie, obsługa lirc, alarmy, różne"
+
+#: multibuffer.cpp:89
+msgid "Buffer Overflow. "
+msgstr ""
+
+#: plugin_configuration_dialog.cpp:29
+msgid "Configuration Dialog"
+msgstr "Okno Konfiguracji"
+
+#: pluginmanager-configuration.cpp:143
+msgid "Enter Plugin Instance Name"
+msgstr ""
+
+#: pluginmanager.cpp:123
+msgid "Hide %1"
+msgstr "Ukryj: %1"
+
+#: pluginmanager.cpp:123
+msgid "Show %1"
+msgstr "Pokaż: %1"
+
+#: pluginmanager.cpp:350
+#, fuzzy
+msgid "Plugins"
+msgstr "Wtyczka LIRC"
+
+#: pluginmanager.cpp:351
+#, fuzzy
+msgid "Plugin Library Configuration"
+msgstr "Konfiguracja paska skrótów"
+
+#: pluginmanager.cpp:446
+#, fuzzy
+msgid "Starting Plugins"
+msgstr "Rozpocznij odtwarzanie"
+
+#: pluginmanager.cpp:459 pluginmanager.cpp:476
+#, fuzzy
+msgid "Creating Plugin %1"
+msgstr "Wtyczka nagrywania"
+
+#: pluginmanager.cpp:490
+#, fuzzy
+msgid "Initializing Plugin %1"
+msgstr "Inicjalizacja wtyczki LIRC"
+
+#: radiostation-config.cpp:45
+msgid "I don't know how to edit this station"
+msgstr "Nie można edytować tej stacji"
+
+#: radiostation-config.cpp:68
+msgid "Frequency:"
+msgstr "Częstotliwość"
+
+#: radiostation-listview.cpp:33
+msgid "No."
+msgstr ""
+
+#: radiostation-listview.cpp:34
+msgid "Icon"
+msgstr ""
+
+#: radiostation-listview.cpp:35
+#, fuzzy
+msgid "Station"
+msgstr "Stacje"
+
+#: radiostation-listview.cpp:234
+msgid "contentsDragEnterEvent accepted"
+msgstr ""
+
+#: radiostation-listview.cpp:236
+msgid "contentsDragEnterEvent rejected"
+msgstr ""
+
+#: standardscandialog.cpp:118
+msgid "new station "
+msgstr "Nowa stacja"
+
+#: standardscandialog.cpp:142
+msgid "&Done"
+msgstr "&Gotowe"
+
+#: standardscandialog.cpp:160
+#, fuzzy
+msgid "<p align=\"right\">%1</p>"
+msgstr "<p align=\"right\">nic</p>"
+
+#: standardscandialog.cpp:162 standardscandialog.cpp:165
+#: include/radiostation.h:150 include/radiostation.h:151
+msgid "unknown"
+msgstr "nieznany"
+
+#: station-drag-object.cpp:70
+msgid "canDecode = true"
+msgstr ""
+
+#: stationlist.cpp:255
+msgid "Contains merged Data"
+msgstr ""
+
+#: stationlist.cpp:315
+msgid ""
+"Probably an old station preset file was read.\n"
+"You have to rebuild your station selections for the quickbar and the docking "
+"menu."
+msgstr "do."
+
+#: stationlist.cpp:325
+msgid "parsing failed"
+msgstr "Błąd odczytu"
+
+#: stationlist.cpp:329
+msgid ""
+"Parsing the station preset file failed.\n"
+"See console output for more details."
+msgstr ""
+"Błąd odczytu pliku zaprogramowanych stacji By dowiedzieć się więcej "
+"obejrzyj komunikaty na konsoli"
+
+#: stationlist.cpp:343 stationlist.cpp:349
+msgid "error downloading preset file %1"
+msgstr "błąd"
+
+#: stationlist.cpp:345
+msgid "Download of the station preset file at %1 failed."
+msgstr "nieudane."
+
+#: stationlist.cpp:355
+msgid "temporary file: "
+msgstr "plik tymczasowy"
+
+#: stationlist.cpp:361
+msgid "error opening preset file %1"
+msgstr "błąd"
+
+#: stationlist.cpp:364
+msgid "Opening of the station preset file at %1 failed."
+msgstr "nieudane."
+
+#: stationlist.cpp:383
+msgid "Old Preset File Format detected"
+msgstr "Wykryto stary format pliku zapamiętanych stacji"
+
+#: stationlist.cpp:461
+msgid "error writing to tempfile %1"
+msgstr "błąd do"
+
+#: stationlist.cpp:464
+msgid "Writing station preset file %1 failed."
+msgstr "nieudane."
+
+#: stationlist.cpp:475
+#, fuzzy
+msgid "uploading preset file %1: "
+msgstr "Błąd podczas wysyłania pliku zapamiętanych stacji: %1"
+
+#: stationlist.cpp:477
+msgid ""
+"something strange happend, station list has only %1 entries. Writing station "
+"preset file skipped"
+msgstr ""
+
+#: stationlist.cpp:482
+msgid "error uploading preset file %1"
+msgstr "Błąd podczas wysyłania pliku zapamiętanych stacji: %1"
+
+#: stationlist.cpp:486
+msgid "Upload of station preset file to %1 failed."
+msgstr "Wysyłanie pliku zapamiętanych stacji do: %1 nieudane."
+
+#: stationlistxmlhandler.cpp:64
+msgid "misplaced element %1"
+msgstr ""
+
+#: stationlistxmlhandler.cpp:116
+msgid "unknown or unexpected element %1"
+msgstr "nieznany"
+
+#: stationlistxmlhandler.cpp:145
+msgid "expected element %1, but found %2"
+msgstr "oczekiwano %1; znaleziono %2"
+
+#: stationlistxmlhandler.cpp:149
+msgid "unexpected element %1"
+msgstr "nieoczekiwany element: %1"
+
+#: stationlistxmlhandler.cpp:157
+msgid "invalid data for element %1"
+msgstr ""
+
+#: stationlistxmlhandler.cpp:172
+msgid "found a station list with unknown format %1"
+msgstr "nieznany"
+
+#: stationlistxmlhandler.cpp:212
+msgid "unknown property %1 for class %2"
+msgstr "nieznany"
+
+#: stationlistxmlhandler.cpp:219
+msgid "characters ignored for element %1"
+msgstr ""
+
+#~ msgid "Display Colors"
+#~ msgstr "Kolory wyświetlacza"
+
+#~ msgid "Active Text"
+#~ msgstr "Kolor aktywnego tekstu"
+
+#~ msgid "Inactive Text"
+#~ msgstr "Kolor nieaktywnego tekstu"
+
+#~ msgid "Background Color"
+#~ msgstr "Kolor tła"
+
+#~ msgid "Docking Plugin"
+#~ msgstr "Wtyczka dokowania"
+
+#~ msgid "Stop Recording"
+#~ msgstr "Zakończ nagrywanie"
+
+#~ msgid "Start Recording"
+#~ msgstr "Rozpocznij nagrywanie"
+
+#~ msgid "Docking Menu"
+#~ msgstr "Menu dokowalne"
+
+#~ msgid "Docking Menu Configuration"
+#~ msgstr "Konfiguracja dokowalnego menu"
+
+#~ msgid "Docking Menu for KRadio"
+#~ msgstr "Menu dokowalne KRadio"
+
+#~ msgid "Docking Menu Plugin"
+#~ msgstr "Wtyczka menu dokowalnego"
+
+#~ msgid "Search Next Station"
+#~ msgstr "Szukaj następnej stacji"
+
+#~ msgid "Search Previous Station"
+#~ msgstr "Szukaj poprzedniej stacji"
+
+#~ msgid "next alarm: %1"
+#~ msgstr "następny alarm:"
+
+#~ msgid "<no alarm pending>"
+#~ msgstr "<brak ustawionych alarmów>"
+
+#~ msgid "Stop Sleep Countdown (running until %1)"
+#~ msgstr "Zatrzymaj usypianie (ustawione na %1)"
+
+#~ msgid "Start Sleep Countdown"
+#~ msgstr "Rozpocznij usypianie"
+
+#~ msgid "Power Off"
+#~ msgstr "Wyłącz"
+
+#~ msgid "Power On"
+#~ msgstr "Włącz"
+
+#~ msgid "KRadio Logger"
+#~ msgstr "Dziennik Kradio"
+
+#~ msgid "Save &as"
+#~ msgstr "Zapisz j&ako"
+
+#~ msgid "Error Logger"
+#~ msgstr "Dziennik błędów"
+
+#~ msgid "logging started"
+#~ msgstr "Zapisywanie rozpoczęte"
+
+#~ msgid "Errors"
+#~ msgstr "Błędy"
+
+#~ msgid "Debugging"
+#~ msgstr "Debugowanie"
+
+#~ msgid "Log Files"
+#~ msgstr "Pliki dziennika"
+
+#~ msgid "Select Log File"
+#~ msgstr "Wybierz plik dziennika"
+
+#~ msgid "Save KRadio Logging Data as ..."
+#~ msgstr "Zapisz dziennik KRadio jako..."
+
+#~ msgid "Initializing kradio lirc plugin failed"
+#~ msgstr "Inicjalizacja wtyczki LIRC nieudana"
+
+#~ msgid "Initializing kradio lirc plugin successful"
+#~ msgstr "Inicjalizacja wtyczki LIRC udana"
+
+#~ msgid "Linux Infrared Remote Control Support for KRadio"
+#~ msgstr "Obsługa LIRC (Linux Infrared Remote Control) dla KRadio"
+
+#~ msgid "LIRC Support"
+#~ msgstr "Obsługa LIRC"
+
+#~ msgid "Quickbar Plugin"
+#~ msgstr "Wtyczka paska skrótów"
+
+#~ msgid "Quickbar"
+#~ msgstr "Pasek skrótów"
+
+#~ msgid "Quickback for KRadio"
+#~ msgstr "Pasek skrótów KRadio"
+
+#~ msgid "Images"
+#~ msgstr "Obrazy"
+
+#~ msgid "Pixmap Selection"
+#~ msgstr "Wybór logo"
+
+#~ msgid "Select Station Pixmap"
+#~ msgstr "Wybierz logo stacji"
+
+#~ msgid "KRadio Preset Files"
+#~ msgstr "Pliki zapamiętanych stacji Kradio"
+
+#~ msgid "Preset File Selection"
+#~ msgstr "Wybór pliku zapamiętanych stacji"
+
+#~ msgid "Select Preset File"
+#~ msgstr "Wybierz plik zapamiętanych stacji"
+
+#~ msgid "Store Preset File"
+#~ msgstr "Zapamiętaj plik stacji"
+
+#~ msgid "Radio Multiplexer Plugin"
+#~ msgstr "Wtyczka Mulipleksera Radia"
+
+#~ msgid "Radio Stations"
+#~ msgstr "Stacje"
+
+#~ msgid "Setup Radio Stations"
+#~ msgstr "Stacje"
+
+#~ msgid "Radio Device Multiplexer and Station Management for KRadio"
+#~ msgstr "Multiplekser urządzenia radia i zarządzanie stacjami dla KRadio"
+
+#~ msgid "Device and Station Management"
+#~ msgstr "Urządzenia i zarządzanie stacjami"
+
+#~ msgid "Radio Device Multiplexer and Station Management"
+#~ msgstr "Multiplekser urządzenia radia i zarządzanie stacjami"
+
+#~ msgid "Radio Display"
+#~ msgstr "Okno radia"
+
+#~ msgid "Start Recording and display Recording Monitor"
+#~ msgstr "Rozpocznij nagrywanie i pokaż monitor"
+
+#~ msgid "Start Monitoring"
+#~ msgstr "Rozpocznij monitorowanie"
+
+#~ msgid "Configure KRadio"
+#~ msgstr "Konfiguruj: KRadio"
+
+#~ msgid "Power On/Off"
+#~ msgstr "Włącz/Wyłącz"
+
+#~ msgid "Quit KRadio Application"
+#~ msgstr "Zakończ KRadio"
+
+#~ msgid "Start/Stop Recording"
+#~ msgstr "Rozpocznij/Zakończ nagrywanie"
+
+#, fuzzy
+#~ msgid "Start/Stop Sleep Countdown"
+#~ msgstr "Rozpocznij usypianie"
+
+#~ msgid "Select a Radio Station"
+#~ msgstr "Wybierz stację"
+
+#~ msgid "no preset defined"
+#~ msgstr "nie zdefiniowano ustawień"
+
+#~ msgid "Display"
+#~ msgstr "Wyświetlacz"
+
+#~ msgid "Display Configuration"
+#~ msgstr "Konfiguracja wyświetlacza"
+
+#~ msgid "Standard Radio Display for KRadio"
+#~ msgstr "Standardowy wyświetlacz dla KRadio"
+
+#~ msgid "Frequency Display"
+#~ msgstr "Wyświetlacz częstotliwości"
+
+#~ msgid "AM"
+#~ msgstr "AM"
+
+#~ msgid "FM"
+#~ msgstr "FM"
+
+#~ msgid "Search for previous Radio Station"
+#~ msgstr "Szukaj poprzedniej stacji radiowej"
+
+#~ msgid "Search for next Radio Station"
+#~ msgstr "Szukaj następnej stacji radiowej"
+
+#~ msgid "Decrement Frequency"
+#~ msgstr "Zmniejsz częstotliwość"
+
+#~ msgid "Increment Frequency"
+#~ msgstr "Zwiększ częstotliwość"
+
+#~ msgid "Change Frequency"
+#~ msgstr "Zmień częstotliwość"
+
+#~ msgid "Change Volume"
+#~ msgstr "Zmiana głośności"
+
+#~ msgid "Station &Presets"
+#~ msgstr "Za&pamiętane stacje"
+
+#~ msgid "&Search Stations"
+#~ msgstr "&Szukaj stacji"
+
+#~ msgid "Load"
+#~ msgstr "Otwórz"
+
+#~ msgid "Name"
+#~ msgstr "Nazwa"
+
+#~ msgid "Short Name"
+#~ msgstr "Krótka nazwa"
+
+#~ msgid "Pixmap File"
+#~ msgstr "Logo stacji"
+
+#~ msgid " %"
+#~ msgstr " %"
+
+#, fuzzy
+#~ msgid "Volume Preset"
+#~ msgstr "Głośność"
+
+#, fuzzy
+#~ msgid "Personal Preset File"
+#~ msgstr "Wybierz plik zapamiętanych stacji"
+
+#~ msgid "City"
+#~ msgstr "Miasto"
+
+#~ msgid "Country"
+#~ msgstr "Kraj"
+
+#~ msgid "&Now"
+#~ msgstr "&Teraz"
+
+#~ msgid "Comment"
+#~ msgstr "Komentarz"
+
+#~ msgid "Media"
+#~ msgstr "Media"
+
+#~ msgid "Maintainer"
+#~ msgstr "Opiekun"
+
+#~ msgid "Last Change"
+#~ msgstr "Ostatnia zmiana"
+
+#~ msgid ""
+#~ "<p align=\"center\">Click on the link below to contribute this station "
+#~ "preset file to the kradio project.</p>"
+#~ msgstr ""
+#~ "<p align=\"center\">Kliknij poniżej żeby dołączyć listę stacji do bazy "
+#~ "projektu.KRadio</p>"
+
+#, fuzzy
+#~ msgid "search previous station"
+#~ msgstr "Szukaj poprzedniej stacji"
+
+#, fuzzy
+#~ msgid "Frequency control"
+#~ msgstr "Częstotliwość"
+
+#, fuzzy
+#~ msgid "search next station"
+#~ msgstr "Szukaj następnej stacji"
+
+#, fuzzy
+#~ msgid "Encoding Buffer Size"
+#~ msgstr "Nie można odczytać wielkości bufora nagrywania"
+
+#~ msgid "Output"
+#~ msgstr "Wyjście"
+
+#~ msgid "Recording Directory"
+#~ msgstr "Katalog zapisywania"
+
+#~ msgid "File Format"
+#~ msgstr "Format pliku"
+
+#~ msgid "Microsoft Wave (.wav)"
+#~ msgstr "Microsoft Wave (.wav)"
+
+#~ msgid "Apple/SGI (.aiff)"
+#~ msgstr "Apple/SGI (.aiff)"
+
+#~ msgid "Sun/NeXT (.au)"
+#~ msgstr "Sun/NeXT (.au)"
+
+#~ msgid "Input"
+#~ msgstr "Wejście"
+
+#~ msgid "/dev/dsp"
+#~ msgstr "/dev/dsp"
+
+#~ msgid "Sample Bits"
+#~ msgstr "Próbkowanie"
+
+#~ msgid "16"
+#~ msgstr "16"
+
+#~ msgid "8"
+#~ msgstr "7"
+
+#~ msgid "Recording Device"
+#~ msgstr "Urządzenie nagrywające"
+
+#~ msgid "Endianess"
+#~ msgstr "Kolejność bajtów"
+
+#~ msgid "Channels"
+#~ msgstr "Kanały"
+
+#~ msgid "44100"
+#~ msgstr "44100"
+
+#~ msgid "22050"
+#~ msgstr "22050"
+
+#~ msgid "11025"
+#~ msgstr "11025"
+
+#~ msgid "Little Endian"
+#~ msgstr "Little Endian"
+
+#~ msgid "Big Endian"
+#~ msgstr "Big Endian"
+
+#~ msgid "Sample Rate"
+#~ msgstr "Częstotliwość próbkowania"
+
+#~ msgid "Stereo"
+#~ msgstr "Stereo"
+
+#~ msgid "Mono"
+#~ msgstr "Mono"
+
+#~ msgid "sleep countdown"
+#~ msgstr "Czas uśpienia"
+
+#~ msgid " min"
+#~ msgstr "min"
+
+#~ msgid "Alarms"
+#~ msgstr "Alarmy"
+
+#~ msgid "Date"
+#~ msgstr "Data"
+
+#~ msgid "Time"
+#~ msgstr "Czas"
+
+#~ msgid "Volume"
+#~ msgstr "Głośność"
+
+#~ msgid "enabled"
+#~ msgstr "Aktywny"
+
+#~ msgid "daily"
+#~ msgstr "Codziennie"
+
+#~ msgid "Radio Station"
+#~ msgstr "Stacja radiowa"
+
+#~ msgid "Stop Playing"
+#~ msgstr "Zakończ odtwarzanie"
+
+#~ msgid "Devices"
+#~ msgstr "Urządzenia"
+
+#~ msgid "unknown v4l device"
+#~ msgstr "Nieznane urządzenie V4L"
+
+#~ msgid "Mixer Channel"
+#~ msgstr "Kanał miksera"
+
+#~ msgid "Mixer Device"
+#~ msgstr "Urządzenie miksera"
+
+#~ msgid "Radio Device"
+#~ msgstr "Urządzenie radia"
+
+#~ msgid "to"
+#~ msgstr "do"
+
+#~ msgid "minimum signal quality"
+#~ msgstr "Minimalna jakość sygnału"
+
+#~ msgid "station scan step"
+#~ msgstr "Skok podczas skanowania"
+
+#~ msgid "allowed frequency range"
+#~ msgstr "Dopuszczalny zakres częstotliwości"
+
+#~ msgid "V4L Device Controls"
+#~ msgstr "Ustawienie urządzenia V4L"
+
+#, fuzzy
+#~ msgid "volume"
+#~ msgstr "Głośność"
+
+#, fuzzy
+#~ msgid "treble"
+#~ msgstr "Aktywny"
+
+#~ msgid "Recording Monitor"
+#~ msgstr "Monitor nagrywania"
+
+#~ msgid "Status"
+#~ msgstr "Status"
+
+#~ msgid "<undefined>"
+#~ msgstr "<niezdefiniowane>"
+
+#~ msgid "Recording File"
+#~ msgstr "Nazwa pliku"
+
+#~ msgid "File Size"
+#~ msgstr "Rozmiar pliku"
+
+#~ msgid "Recording Time"
+#~ msgstr "Czas nagrywania"
+
+#~ msgid "Hide/Show when recording stops/starts"
+#~ msgstr "Pokaż/Ukryj kiedy nagrywanie rozpoczyna/kończy się"
+
+#~ msgid "Monitor Input"
+#~ msgstr "Monitoruj poziom sygnału"
+
+#~ msgid "Recording Monitor Plugin for KRadio"
+#~ msgstr "Wtyczka monitorowania nagrywania dla KRadio"
+
+#~ msgid "Recording Monitor Plugin"
+#~ msgstr "Wtyczka monitorowania nagrywania"
+
+#~ msgid "&Stop"
+#~ msgstr "&Stop"
+
+#~ msgid "recording"
+#~ msgstr "nagrywanie"
+
+#~ msgid "monitoring"
+#~ msgstr "monitorowanie"
+
+#~ msgid "error occurred"
+#~ msgstr "wystąpił błąd"
+
+#~ msgid "finished"
+#~ msgstr "zakończone"
+
+#, fuzzy
+#~ msgid "KRadio Recording Plugin"
+#~ msgstr "Wtyczka nagrywania"
+
+#~ msgid "Recording"
+#~ msgstr "Nagrywanie"
+
+#~ msgid "Recording Monitor for KRadio"
+#~ msgstr "Monitor nagrywania dla KRadio"
+
+#~ msgid "Recording starting"
+#~ msgstr "Nagrywanie rozpoczęte"
+
+#~ msgid "Recording stopped with error"
+#~ msgstr "Nagrywanie zakończone z błędem"
+
+#~ msgid "Monitoring starting"
+#~ msgstr "Monitorowanie rozpoczęte"
+
+#~ msgid "Monitoring stopped with error"
+#~ msgstr "Monitorowanie zakończone z błędem"
+
+#~ msgid "Recording stopped"
+#~ msgstr "Nagrywanie zatrzymane"
+
+#~ msgid "Monitoring stopped"
+#~ msgstr "Monitorowanie zatrzymane"
+
+#~ msgid "Cannot open DSP device %1"
+#~ msgstr "Nie można otworzyć urządzenia DSP"
+
+#~ msgid "Cannot set sample format for recording"
+#~ msgstr "Nie można ustawić formatu dla nagrywania"
+
+#~ msgid "Cannot set number of channels for recording"
+#~ msgstr "Nie można ustawić liczby kanałów dla nagywania"
+
+#~ msgid "Cannot set sampling rate for recording"
+#~ msgstr "Nie można ustawić częstotliwości próbkowania dla nagrywania"
+
+#, fuzzy
+#~ msgid "Cannot set stereo mode for recording"
+#~ msgstr "Nie można ustawić formatu dla nagrywania"
+
+#, fuzzy
+#~ msgid "Cannot set sample size for recording"
+#~ msgstr "Nie można ustawić formatu dla nagrywania"
+
+#, fuzzy
+#~ msgid "Cannot set recording buffers"
+#~ msgstr "Nie można odczytać wielkości bufora nagrywania"
+
+#~ msgid "Cannot read recording buffer size"
+#~ msgstr "Nie można odczytać wielkości bufora nagrywania"
+
+#~ msgid "Recording::outputFile: "
+#~ msgstr "Nagrywanie::outputFile: "
+
+#~ msgid "No data to record"
+#~ msgstr "Brak danych do nagrania"
+
+#~ msgid "Error %1 while recording"
+#~ msgstr "Błąd %1 podczas nagrywania"
+
+#, fuzzy
+#~ msgid "Error %1 writing output. "
+#~ msgstr "Błąd %1 podczas zapisu pliku"
+
+#, fuzzy
+#~ msgid "Error %1 while encoding mp3. "
+#~ msgstr "Błąd %1 podczas nagrywania"
+
+#, fuzzy
+#~ msgid "Recorded by KRadio"
+#~ msgstr "Monitor nagrywania dla KRadio"
+
+#, fuzzy
+#~ msgid "Cannot allocate buffers for mp3 encoding. "
+#~ msgstr "Nie można ustawić formatu dla nagrywania"
+
+#~ msgid "<don't change>"
+#~ msgstr "<nie zmieniać>"
+
+#~ msgid "TimeControl Plugin"
+#~ msgstr "Wtyczka kontroli czasu"
+
+#~ msgid "Setup Alarms"
+#~ msgstr "Ustawienia alarmów"
+
+#~ msgid ""
+#~ "Time Control Plugin for KRadio.<P>Provides Alarms and Sleep Countdown<P>"
+#~ msgstr ""
+#~ "Wtyczka kontroli czasu dla KRadio <P> Umożliwia obsługę alarmów i "
+#~ "usypiania<P>"
+
+#~ msgid "Time Control Plugin"
+#~ msgstr "Wtyczka kontroli czasu"
+
+#~ msgid "any ( * )"
+#~ msgstr "dowolny"
+
+#~ msgid "Radio Device Selection"
+#~ msgstr "Wybór urządzenia radia"
+
+#~ msgid "Select Radio Device"
+#~ msgstr "Wybierz urządzenie radia"
+
+#~ msgid "Mixer Device Selection"
+#~ msgstr "Wybór urządzenia miksera"
+
+#~ msgid "Select Mixer Device"
+#~ msgstr "Wybierz urządzenie miksera"
+
+#~ msgid "Video For Linux Plugin"
+#~ msgstr "Wtyczka Video for Linux"
+
+#~ msgid "error %1 while setting volume to %2"
+#~ msgstr "błąd: %1 podczas ustawiania głośności na: %2"
+
+#~ msgid "error %1 while reading volume"
+#~ msgstr "błąd %1 podczas odczytu głośności"
+
+#~ msgid "invalid frequency %1"
+#~ msgstr "nieprawidłowa częstotliwość %1"
+
+#~ msgid "don't known how to handle V4L-version %1"
+#~ msgstr "do"
+
+#~ msgid "error setting frequency to %1 (%2)"
+#~ msgstr "błąd do"
+
+#~ msgid ""
+#~ "Selecting V4L radio input as recording source failed with error code %1"
+#~ msgstr "nieudane błąd"
+
+#~ msgid "Reading igain volume failed with error code %1"
+#~ msgstr "nieudane błąd"
+
+#~ msgid "Setting igain volume failed with error code %1"
+#~ msgstr "nieudane błąd"
+
+#~ msgid "V4L Radio Options"
+#~ msgstr "Opcje radia V4L"
+
+#~ msgid ""
+#~ "V4L/V4L2 Plugin for KRadio.<P>Provides Support for V4L/V4L2 based Radio "
+#~ "Cards<P>"
+#~ msgstr ""
+#~ "Wtyczka V4L/V4L2 dla KRadio. <p>Umożliwia obsługę kart radiowych zgodnych "
+#~ "z V4L/V4L2<p>"
+
+#~ msgid "V4L/V4L2"
+#~ msgstr "V4L/V4LV2"
+
+#~ msgid "V4L/V4L2 Plugin"
+#~ msgstr "Wtyczka V4L/V4L2"
+
+#~ msgid "Cannot open mixer device %1"
+#~ msgstr "Nie można otworzyć urządzenia miksera: %1"
+
+#~ msgid "Cannot open radio device %1"
+#~ msgstr "Nie można otworzyć urządzenia radia: %1"
+
+#~ msgid "cannot open %1"
+#~ msgstr "nie można otworzyć %1"
+
+#~ msgid "error reading V4L1 caps"
+#~ msgstr "błąd"
+
+#~ msgid "V4L2: Querying mute control failed"
+#~ msgstr "nieudane"
+
+#~ msgid "V4L2: Querying volume control failed"
+#~ msgstr "nieudane"
+
+#~ msgid "V4L2: Querying treble control failed"
+#~ msgstr "nieudane"
+
+#~ msgid "V4L2: Querying bass control failed"
+#~ msgstr "nieudane"
+
+#~ msgid "V4L2: Querying balance control failed"
+#~ msgstr "nieudane"
+
+#~ msgid "V4LRadio::readV4LCaps: Reading V4L2 caps failed"
+#~ msgstr "nieudane"
+
+#~ msgid "V4L %1 detected"
+#~ msgstr "Wykryto V4l %1"
+
+#~ msgid "V4L not detected"
+#~ msgstr "Nie wykryto V4L"
+
+#~ msgid "Radio is mutable"
+#~ msgstr "Radio jest wyciszalne"
+
+#~ msgid "Radio is not mutable"
+#~ msgstr "Radio nie jest wyciszalne"
+
+#~ msgid "Radio has Volume Control"
+#~ msgstr "Radio ma regulację głośności"
+
+#~ msgid "Radio has no Volume Control"
+#~ msgstr "Radio nie ma regulacji głośności"
+
+#~ msgid "Radio has Bass Control"
+#~ msgstr "Radio ma regulację basu"
+
+#~ msgid "Radio has no Bass Control"
+#~ msgstr "Radio nie ma regulacji basu"
+
+#~ msgid "Radio has Treble Control"
+#~ msgstr "Radio ma regulację sopranu"
+
+#~ msgid "Radio has no Treble Control"
+#~ msgstr "Radio nie ma regulacji sopranu"
+
+#~ msgid "cannot get tuner info (error %1)"
+#~ msgstr "błąd"
+
+#~ msgid "error setting %1: %2"
+#~ msgstr "błąd"
+
+#~ msgid "error updating radio audio info (%1): %2"
+#~ msgstr "błąd"
+
+#~ msgid "&About"
+#~ msgstr "O progr&amie..."
+
+#~ msgid "&Quit"
+#~ msgstr "Za&kończ"
+
+#~ msgid "Miscellaneous"
+#~ msgstr "Różne"
+
+#~ msgid "&Cancel"
+#~ msgstr "&Anuluj"
+
+#~ msgid "Save As"
+#~ msgstr "Zapisz jako"
+
+#~ msgid "Volume Preset (-1 = disabled)"
+#~ msgstr "Ustawienie głośności (-1=wyłączone)"
+
+#~ msgid "A&bout"
+#~ msgstr "&O..."
+
+#~ msgid "<p align=\"center\">volume</p>"
+#~ msgstr "<p align=\"center\">głośność</p>"
+
+#~ msgid "<p align=\"center\">treble</p>"
+#~ msgstr "<p align=\"center\">tony wysokie</p>"
+
+#~ msgid "<p align=\"center\">bass</p>"
+#~ msgstr "<p align=\"center\">tony niskie</p>"
+
+#~ msgid "<p align=\"center\">balance</p>"
+#~ msgstr "<p align=\"center\">balans</p>"
+
+#~ msgid "Options"
+#~ msgstr "Opcje"
+
+#~ msgid "&Close"
+#~ msgstr "&Zamknij"
+
+#~ msgid "&Start"
+#~ msgstr "&Start"
diff --git a/kradio3/src/po/ru.po b/kradio3/src/po/ru.po
new file mode 100644
index 0000000..d01bcb3
--- /dev/null
+++ b/kradio3/src/po/ru.po
@@ -0,0 +1,547 @@
+# translation of kradio.po to
+# This file is put in the public domain.
+# Алексей Кузнецов <Alexey.Kouznetsov@GMail.com>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: kradio\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-12 18:20+0100\n"
+"PO-Revision-Date: 2006-11-08 11:44+0300\n"
+"Last-Translator: Алексей Кузнецов <Alexey.Kouznetsov@GMail.com>\n"
+"Language-Team: <ru@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10\n"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 16
+#: rc.cpp:3 rc.cpp:81 pluginmanager-configuration-ui.cpp:170
+#, no-c-format
+msgid "PluginManagerConfigurationUI"
+msgstr "PluginManagerConfigurationUI"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 30
+#: rc.cpp:6 rc.cpp:84 pluginmanager-configuration-ui.cpp:171
+#, no-c-format
+msgid "Show Progress Bar during Startup for Plugin Initiali&zation"
+msgstr "&Иллюстрировать загрузку модулей во время запуска программы"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 33
+#: rc.cpp:9 rc.cpp:87 pluginmanager-configuration-ui.cpp:172
+#, no-c-format
+msgid "Alt+Z"
+msgstr "Alt+Z"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 78
+#. i18n: file pluginmanager-configuration-ui.ui line 229
+#. i18n: file pluginmanager-configuration-ui.ui line 78
+#. i18n: file pluginmanager-configuration-ui.ui line 229
+#: rc.cpp:13 rc.cpp:34 rc.cpp:91 rc.cpp:112
+#: pluginmanager-configuration-ui.cpp:63
+#: pluginmanager-configuration-ui.cpp:104
+#: pluginmanager-configuration-ui.cpp:174
+#: pluginmanager-configuration-ui.cpp:183
+#, no-c-format
+msgid "Plugin Class"
+msgstr "Модуль"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 89
+#: rc.cpp:16 rc.cpp:94 pluginmanager-configuration-ui.cpp:64
+#: pluginmanager-configuration-ui.cpp:175 pluginmanager-configuration.cpp:144
+#, no-c-format
+msgid "Instance Name"
+msgstr "Экземпляр"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 100
+#. i18n: file pluginmanager-configuration-ui.ui line 240
+#. i18n: file pluginmanager-configuration-ui.ui line 100
+#. i18n: file pluginmanager-configuration-ui.ui line 240
+#: rc.cpp:19 rc.cpp:37 rc.cpp:97 rc.cpp:115
+#: pluginmanager-configuration-ui.cpp:65
+#: pluginmanager-configuration-ui.cpp:105
+#: pluginmanager-configuration-ui.cpp:176
+#: pluginmanager-configuration-ui.cpp:184 radiostation-listview.cpp:36
+#, no-c-format
+msgid "Description"
+msgstr "Описание"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 116
+#: rc.cpp:22 rc.cpp:100 pluginmanager-configuration-ui.cpp:177
+#, no-c-format
+msgid "list of running plugins"
+msgstr "Список запущенных модулей"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 153
+#: rc.cpp:26 rc.cpp:104 pluginmanager-configuration-ui.cpp:179
+#, no-c-format
+msgid "remove/stop a selected plugin instance"
+msgstr "Удалить/остановить выбранный модуль"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 223
+#: rc.cpp:31 rc.cpp:109 pluginmanager-configuration-ui.cpp:182
+#, no-c-format
+msgid "create a new instance of selected plugin class"
+msgstr "Создать новый экземпляр выбранного модуля"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 256
+#: rc.cpp:40 rc.cpp:118 pluginmanager-configuration-ui.cpp:185
+#, no-c-format
+msgid "list of available plugin classes"
+msgstr "Список доступных типов модулей"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 297
+#: rc.cpp:44 rc.cpp:122 pluginmanager-configuration-ui.cpp:187
+#, no-c-format
+msgid "select a plugin library"
+msgstr "Выберите файл"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 317
+#: rc.cpp:48 rc.cpp:126 pluginmanager-configuration-ui.cpp:189
+#, no-c-format
+msgid "unload a plugin library"
+msgstr "Отключить библиотеку"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 337
+#: rc.cpp:52 rc.cpp:130 pluginmanager-configuration-ui.cpp:191
+#, no-c-format
+msgid "load a selected plugin library"
+msgstr "Загрузить библиотеку из выбранного файла"
+
+#. i18n: file pluginmanager-configuration-ui.ui line 353
+#: rc.cpp:55 rc.cpp:133 pluginmanager-configuration-ui.cpp:192
+#, no-c-format
+msgid "list of loaded plugin libraries"
+msgstr "Список загруженных библиотек"
+
+#. i18n: file standardscandialog-ui.ui line 16
+#: rc.cpp:58 rc.cpp:136 standardscandialog-ui.cpp:86
+#, no-c-format
+msgid "Stations search in progress ..."
+msgstr "Идёт поиск станций..."
+
+#. i18n: file standardscandialog-ui.ui line 104
+#: rc.cpp:64 rc.cpp:142 standardscandialog-ui.cpp:88
+#, no-c-format
+msgid "remaining time"
+msgstr "Оставшееся время"
+
+#. i18n: file standardscandialog-ui.ui line 120
+#: rc.cpp:67 rc.cpp:145 standardscandialog-ui.cpp:89
+#, no-c-format
+msgid "<p align=\"right\">nothing here</p>"
+msgstr "<p align=\"right\">ничего</p>"
+
+#. i18n: file stationselector-ui.ui line 16
+#: rc.cpp:70 rc.cpp:148 stationselector-ui.cpp:90
+#, no-c-format
+msgid "StationSelectorUI"
+msgstr "StationSelectorUI"
+
+#. i18n: file stationselector-ui.ui line 30
+#: rc.cpp:73 rc.cpp:151 stationselector-ui.cpp:91
+#, no-c-format
+msgid "Selected Stations"
+msgstr "Выбранные"
+
+#. i18n: file stationselector-ui.ui line 119
+#: rc.cpp:78 rc.cpp:156 stationselector-ui.cpp:94
+#, no-c-format
+msgid "Available Stations"
+msgstr "Доступные"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Алексей Кузнецов"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "Alexey.Kouznetsov@GMail.com"
+
+#: aboutwidget.cpp:282
+msgid "Invalid layout"
+msgstr "Неверное расположение"
+
+#: aboutwidget.cpp:451
+msgid "%1 %2 (Using KDE %3)"
+msgstr "%1 %2 (в составе KDE %3)"
+
+#: aboutwidget.cpp:454
+msgid "%1 %2, %3"
+msgstr "%1 %2, %3"
+
+#: aboutwidget.cpp:527
+msgid "A&uthor"
+msgstr "&Автор"
+
+#: aboutwidget.cpp:527
+msgid "A&uthors"
+msgstr "&Авторы"
+
+#: aboutwidget.cpp:541
+msgid "&Thanks To"
+msgstr "&Благодарности"
+
+#: aboutwidget.cpp:554
+msgid "T&ranslation"
+msgstr "&Перевод"
+
+#: aboutwidget.cpp:571
+msgid "&License Agreement"
+msgstr "&Лицензионное соглашение"
+
+#: aboutwidget.cpp:585
+msgid "Image missing"
+msgstr "Изображение недоступно"
+
+#: errorlog-interfaces.cpp:43 errorlog-interfaces.cpp:78
+msgid "%1 Error: %2\n"
+msgstr "Ошибка %1: %2\n"
+
+#: errorlog-interfaces.cpp:52 errorlog-interfaces.cpp:87
+msgid "%1 Warning: %2\n"
+msgstr "Предупреждение %1: %2\n"
+
+#: errorlog-interfaces.cpp:61 errorlog-interfaces.cpp:96
+msgid "%1 Information: %2\n"
+msgstr "Сообщение от %1: %2\n"
+
+#: errorlog-interfaces.cpp:70 errorlog-interfaces.cpp:105
+msgid "%1 Debug: %2\n"
+msgstr "Отладочное сообщение %1: %2\n"
+
+#: fileringbuffer.cpp:35 fileringbuffer.cpp:68
+msgid "cannot open buffer file %1"
+msgstr "Не могу открыть буферный файл %1"
+
+#: fileringbuffer.cpp:93
+msgid "FileRingbuffer::resize: Writing to tmpfile %1 failed. "
+msgstr "FileRingbuffer::resize: Не могу записать временный файл %1. "
+
+#: fileringbuffer.cpp:99
+msgid "FileRingbuffer::resize: Opening tmpfile %1 failed. "
+msgstr "FileRingbuffer::resize: Не могу открыть ременный файл %1. "
+
+#: fileringbuffer.cpp:127 fileringbuffer.cpp:145
+msgid "FileRingBuffer::addData: failed writing data to file %1."
+msgstr "FileRingBuffer::addData: Не могу записать данные в файл %1."
+
+#: fileringbuffer.cpp:168
+msgid "FileRingBuffer::takeData: failed reading data to file %1."
+msgstr ""
+
+#: frequencyradiostation.cpp:120 internetradiostation.cpp:118
+msgid "%1, %2"
+msgstr "%1, %2"
+
+#: frequencyradiostation.cpp:134
+msgid "%1 MHz"
+msgstr "%1 МГц"
+
+#: frequencyradiostation.cpp:136
+msgid "%1 kHz"
+msgstr "%1 кГц"
+
+#: kradioapp.cpp:44
+msgid ""
+"KRadio - The Radio Application for KDE<P>With KRadio you can listen to radio "
+"broadcasts with the help of your V4L/V4L2 compatible radio card.<P>The "
+"KRadio Project contains a station preset data database. To complete this "
+"database you are encouraged to contribute your station preset file to the "
+"project. Just send it to one of the authors. <P>If you like to contribute "
+"your ideas, your own plugins or translations, don't hesitate to contact one "
+"of the authors.<P>"
+msgstr ""
+"KRadio — радио для среды KDE<P>С KRadio вы можете слушать радио с помощью "
+"платы радио, совместимой с v4l/v4l2.<P>Проект KRadio включает и базу данных "
+"радиостанций; чтобы её дополнить, вы можете включить в проект свой файл с "
+"настройками радиостанций: просто отправьте его одному из авторов.<P>Если вы "
+"хотите видеть реализованными в проекте свои идеи, готовые модули или "
+"переводы, не стесняйтесь связаться с кем-нибудь из авторов.<P>"
+
+#: kradioapp.cpp:66
+msgid ""
+"Preset Database, Remote Control Support, Alarms, Rewrite for KRadio 0.3.0, "
+"Misc"
+msgstr ""
+"База данных радиостанций, поддержка ДУ, выполнение заданий по расписанию, "
+"код для KRadio 0.3.0, разное"
+
+#: kradioapp.cpp:67 main.cpp:43
+msgid "Buildsystem, Standards Conformance, Cleanups"
+msgstr "Система сборки, стандартизация, чистка кода"
+
+#: kradioapp.cpp:69 main.cpp:45
+msgid "idea, first basic application"
+msgstr "Идея, первый вариант программы"
+
+#: kradioapp.cpp:71
+msgid "Many People around the World ... "
+msgstr "Всем-всем-всем..."
+
+#: kradioapp.cpp:72
+msgid ""
+"... which contributed station preset files \n"
+"and tested early and unstable snapshots of KRadio \n"
+"with much patience"
+msgstr ""
+"... кто создавал файлы настроек радиостанций \n"
+"и с огромным терпением проверял работу ранних, нестабильных \n"
+" версий KRadio"
+
+#: kradioapp.cpp:106
+msgid "Library %1: Plugin Entry Point is missing\n"
+msgstr "Библиотека %1: не найдена точка вхождения модуля\n"
+
+#: kradioapp.cpp:108 kradioapp.cpp:119
+msgid "Plugin Library Load Error"
+msgstr "Ошибка загрузки библиотечного модуля"
+
+#: kradioapp.cpp:116
+msgid ""
+"Library %1: \n"
+"%2"
+msgstr ""
+"Библиотека %1: \n"
+"%2"
+
+#: kradioapp.cpp:143
+msgid "saveState"
+msgstr "saveState"
+
+#: kradioapp.cpp:221
+msgid "Instance"
+msgstr "Экземпляр"
+
+#: kradioapp.cpp:242
+msgid "KRadio Configuration"
+msgstr "Настройка KRadio"
+
+#: kradioapp.cpp:243
+msgid "About KRadio Components"
+msgstr "О компонентах KRadio"
+
+#: kradioapp.cpp:271
+msgid "Error: Loading Library %1 failed: %2"
+msgstr "Ошибка загрузки библиотеки %1: %2"
+
+#: kradioapp.cpp:322
+msgid "Error: Creation of instance \"%1\" of class %2 falied."
+msgstr "Ошибка при создании экземпляра \"%1\" класса %2."
+
+#: kradioapp.cpp:328
+msgid "Error: Cannot create instance \"%1\" of unknown class %2."
+msgstr "Ошибка: не могу создать экземпляр \"%1\" неизвестного класса %2."
+
+#: main.cpp:36
+msgid "KRadio"
+msgstr "Радиоприёмник KDE"
+
+#: main.cpp:42
+msgid "rewrite for 0.3.0, recording, lirc support, alarms, misc"
+msgstr "Написание версии 0.3.0, запись, поддержка LIRC, расписание, разное"
+
+#: multibuffer.cpp:89
+msgid "Buffer Overflow. "
+msgstr "Переполнение буфера. "
+
+#: plugin_configuration_dialog.cpp:29
+msgid "Configuration Dialog"
+msgstr "Окно параметров"
+
+#: pluginmanager-configuration.cpp:143
+msgid "Enter Plugin Instance Name"
+msgstr "Введите название для этого экземпляра"
+
+#: pluginmanager.cpp:123
+msgid "Hide %1"
+msgstr "Скрыть \"%1\""
+
+#: pluginmanager.cpp:123
+msgid "Show %1"
+msgstr "Показать \"%1\""
+
+#: pluginmanager.cpp:350
+msgid "Plugins"
+msgstr ""
+"Модули\n"
+"программы"
+
+#: pluginmanager.cpp:351
+msgid "Plugin Library Configuration"
+msgstr "Настройка библиотечных модулей"
+
+#: pluginmanager.cpp:446
+msgid "Starting Plugins"
+msgstr "Запуск модулей"
+
+#: pluginmanager.cpp:459 pluginmanager.cpp:476
+msgid "Creating Plugin %1"
+msgstr "Создаю модуль %1"
+
+#: pluginmanager.cpp:490
+msgid "Initializing Plugin %1"
+msgstr "Включаю модуль %1"
+
+#: radiostation-config.cpp:45
+msgid "I don't know how to edit this station"
+msgstr "Не знаю, как редактировать эту станцию"
+
+#: radiostation-config.cpp:68
+msgid "Frequency:"
+msgstr "Частота, кГц:"
+
+#: radiostation-listview.cpp:33
+msgid "No."
+msgstr "No "
+
+#: radiostation-listview.cpp:34
+msgid "Icon"
+msgstr "Логотип"
+
+#: radiostation-listview.cpp:35
+msgid "Station"
+msgstr "Название"
+
+#: radiostation-listview.cpp:234
+msgid "contentsDragEnterEvent accepted"
+msgstr "contentsDragEnterEvent "
+
+#: radiostation-listview.cpp:236
+msgid "contentsDragEnterEvent rejected"
+msgstr "contentsDragEnterEvent rejected"
+
+#: standardscandialog.cpp:118
+msgid "new station "
+msgstr "Новая станция"
+
+#: standardscandialog.cpp:142
+msgid "&Done"
+msgstr "&Готово"
+
+#: standardscandialog.cpp:160
+msgid "<p align=\"right\">%1</p>"
+msgstr "<p align=\"right\">%1</p>"
+
+#: standardscandialog.cpp:162 standardscandialog.cpp:165
+#: include/radiostation.h:150 include/radiostation.h:151
+msgid "unknown"
+msgstr "неизвестно"
+
+#: station-drag-object.cpp:70
+msgid "canDecode = true"
+msgstr "canDecode = true"
+
+#: stationlist.cpp:255
+msgid "Contains merged Data"
+msgstr "Содержит объединённые данные"
+
+#: stationlist.cpp:315
+msgid ""
+"Probably an old station preset file was read.\n"
+"You have to rebuild your station selections for the quickbar and the docking "
+"menu."
+msgstr ""
+"Был прочитан старый файл настроек KRadio.\n"
+"Вам потребуется заново выбрать станции для меню в системном лотке и панели "
+"быстрого доступа."
+
+#: stationlist.cpp:325
+msgid "parsing failed"
+msgstr "прочтение не удалось"
+
+#: stationlist.cpp:329
+msgid ""
+"Parsing the station preset file failed.\n"
+"See console output for more details."
+msgstr ""
+"Не могу разобрать файл настроек радиостанций.\n"
+"Для получения более подробной информации см.\n"
+"вывод в консоли."
+
+#: stationlist.cpp:343 stationlist.cpp:349
+msgid "error downloading preset file %1"
+msgstr "ошибка при скачивании файла настроек"
+
+#: stationlist.cpp:345
+msgid "Download of the station preset file at %1 failed."
+msgstr "Не могу скачать файл радиостанций %1."
+
+#: stationlist.cpp:355
+msgid "temporary file: "
+msgstr "временный файл: "
+
+#: stationlist.cpp:361
+msgid "error opening preset file %1"
+msgstr "ошибка открытия файла настроек: %1"
+
+#: stationlist.cpp:364
+msgid "Opening of the station preset file at %1 failed."
+msgstr "Не могу открыть файл радиостанций %1."
+
+#: stationlist.cpp:383
+msgid "Old Preset File Format detected"
+msgstr "Старый формат файла радиостанций"
+
+#: stationlist.cpp:461
+msgid "error writing to tempfile %1"
+msgstr "Ошибка записи во временный файл %1"
+
+#: stationlist.cpp:464
+msgid "Writing station preset file %1 failed."
+msgstr "Не могу записать файл радиостанций %1."
+
+#: stationlist.cpp:475
+#, fuzzy
+msgid "uploading preset file %1: "
+msgstr "Ошибка выгрузки файла настроек %1"
+
+#: stationlist.cpp:477
+msgid ""
+"something strange happend, station list has only %1 entries. Writing station "
+"preset file skipped"
+msgstr ""
+
+#: stationlist.cpp:482
+msgid "error uploading preset file %1"
+msgstr "Ошибка выгрузки файла настроек %1"
+
+#: stationlist.cpp:486
+msgid "Upload of station preset file to %1 failed."
+msgstr "Выгрузка файла радиостанций %1 завершилась неудачей."
+
+#: stationlistxmlhandler.cpp:64
+msgid "misplaced element %1"
+msgstr "Элемент %1 неверно расположен"
+
+#: stationlistxmlhandler.cpp:116
+msgid "unknown or unexpected element %1"
+msgstr "Элемент %1 неизвестен либо не ожидался"
+
+#: stationlistxmlhandler.cpp:145
+msgid "expected element %1, but found %2"
+msgstr "Ожидался элемент %1, однако встречен был %2"
+
+#: stationlistxmlhandler.cpp:149
+msgid "unexpected element %1"
+msgstr "Неожиданно встретился элемент %1"
+
+#: stationlistxmlhandler.cpp:157
+msgid "invalid data for element %1"
+msgstr "Неправильные данные для элемента %1"
+
+#: stationlistxmlhandler.cpp:172
+msgid "found a station list with unknown format %1"
+msgstr "Найден список станций неизвестного формата %1"
+
+#: stationlistxmlhandler.cpp:212
+msgid "unknown property %1 for class %2"
+msgstr "Неизвестное свойство класса %2: %1"
+
+#: stationlistxmlhandler.cpp:219
+msgid "characters ignored for element %1"
+msgstr "Символы элемента %1 игнорированы"
diff --git a/kradio3/src/radio_interfaces.cpp b/kradio3/src/radio_interfaces.cpp
new file mode 100644
index 0000000..c91df36
--- /dev/null
+++ b/kradio3/src/radio_interfaces.cpp
@@ -0,0 +1,96 @@
+/***************************************************************************
+ radio_interfaces.cpp - description
+ -------------------
+ begin : Don Apr 17 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "include/radio_interfaces.h"
+#include "include/stationlist.h"
+#include "include/radiostation.h"
+
+// IRadio
+
+IF_IMPL_SENDER ( IRadio::notifyPowerChanged(bool on),
+ noticePowerChanged(on) );
+IF_IMPL_SENDER ( IRadio::notifyStationChanged (const RadioStation &s, int idx),
+ noticeStationChanged (s, idx) );
+IF_IMPL_SENDER ( IRadio::notifyStationsChanged(const StationList &sl),
+ noticeStationsChanged(sl) );
+IF_IMPL_SENDER ( IRadio::notifyPresetFileChanged(const QString &f),
+ noticePresetFileChanged(f) );
+IF_IMPL_SENDER ( IRadio::notifyCurrentSoundStreamIDChanged(SoundStreamID id),
+ noticeCurrentSoundStreamIDChanged(id) );
+
+// IRadioClient
+
+IF_IMPL_SENDER ( IRadioClient::sendPowerOn(),
+ powerOn() );
+IF_IMPL_SENDER ( IRadioClient::sendPowerOff(),
+ powerOff() );
+IF_IMPL_SENDER ( IRadioClient::sendActivateStation(const RadioStation &rs),
+ activateStation(rs) );
+IF_IMPL_SENDER ( IRadioClient::sendActivateStation(int index),
+ activateStation(index) );
+IF_IMPL_SENDER ( IRadioClient::sendStations(const StationList &sl),
+ setStations(sl) );
+IF_IMPL_SENDER ( IRadioClient::sendPresetFile(const QString &f),
+ setPresetFile(f) );
+
+IF_IMPL_QUERY ( bool IRadioClient::queryIsPowerOn(),
+ isPowerOn(),
+ false );
+
+IF_IMPL_QUERY ( bool IRadioClient::queryIsPowerOff(),
+ isPowerOff(),
+ true );
+
+IF_IMPL_QUERY ( const RadioStation & IRadioClient::queryCurrentStation(),
+ getCurrentStation(),
+ undefinedRadioStation );
+
+IF_IMPL_QUERY ( int IRadioClient::queryCurrentStationIdx(),
+ getCurrentStationIdx(),
+ -1 );
+
+IF_IMPL_QUERY ( int IRadioClient::queryStationIdx(const RadioStation &rs),
+ getStationIdx(rs),
+ -1 );
+
+IF_IMPL_QUERY ( const StationList & IRadioClient::queryStations(),
+ getStations(),
+ emptyStationList );
+
+static QString emptyString;
+IF_IMPL_QUERY ( const QString & IRadioClient::queryPresetFile(),
+ getPresetFile(),
+ emptyString );
+
+IF_IMPL_QUERY ( SoundStreamID IRadioClient::queryCurrentSoundStreamID(),
+ getCurrentSoundStreamID(),
+ SoundStreamID::InvalidID );
+
+void IRadioClient::noticeConnectedI (cmplInterface *, bool /*pointer_valid*/)
+{
+ noticeStationsChanged(queryStations());
+ noticeStationChanged (queryCurrentStation(), queryCurrentStationIdx());
+ noticePowerChanged (queryIsPowerOn());
+}
+
+void IRadioClient::noticeDisconnectedI (cmplInterface *, bool /*pointer_valid*/)
+{
+ noticeStationsChanged(queryStations());
+ noticeStationChanged(queryCurrentStation(), queryCurrentStationIdx());
+ noticePowerChanged(queryIsPowerOn());
+}
+
diff --git a/kradio3/src/radiodevice_interfaces.cpp b/kradio3/src/radiodevice_interfaces.cpp
new file mode 100644
index 0000000..3f8a015
--- /dev/null
+++ b/kradio3/src/radiodevice_interfaces.cpp
@@ -0,0 +1,330 @@
+/***************************************************************************
+ radiodevice_interfaces.cpp - description
+ -------------------
+ begin : Sam Apr 19 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+
+#include "include/radiodevice_interfaces.h"
+#include "include/radiostation.h"
+
+#include <kurl.h>
+
+// IRadioDevice
+
+IF_IMPL_SENDER ( IRadioDevice::notifyPowerChanged(bool on),
+ noticePowerChanged(on, this) );
+IF_IMPL_SENDER ( IRadioDevice::notifyStationChanged (const RadioStation &s),
+ noticeStationChanged (s, this) );
+IF_IMPL_SENDER ( IRadioDevice::notifyDescriptionChanged (const QString&s),
+ noticeDescriptionChanged (s, this) );
+IF_IMPL_SENDER ( IRadioDevice::notifyCurrentSoundStreamIDChanged(SoundStreamID id),
+ noticeCurrentSoundStreamIDChanged(id, this) );
+
+// IRadioDeviceClient
+
+IF_IMPL_SENDER ( IRadioDeviceClient::sendPower(bool on),
+ setPower(on) );
+IF_IMPL_SENDER ( IRadioDeviceClient::sendPowerOn(),
+ powerOn() );
+IF_IMPL_SENDER ( IRadioDeviceClient::sendPowerOff(),
+ powerOff() );
+IF_IMPL_SENDER ( IRadioDeviceClient::sendActivateStation(const RadioStation &rs),
+ activateStation(rs) );
+
+IF_IMPL_QUERY ( bool IRadioDeviceClient::queryIsPowerOn(),
+ isPowerOn(),
+ false );
+IF_IMPL_QUERY ( bool IRadioDeviceClient::queryIsPowerOff(),
+ isPowerOff(),
+ true );
+IF_IMPL_QUERY ( const RadioStation & IRadioDeviceClient::queryCurrentStation(),
+ getCurrentStation(),
+ undefinedRadioStation );
+
+static QString IRadioDeviceClient_unknown("unknown");
+IF_IMPL_QUERY ( const QString & IRadioDeviceClient::queryDescription(),
+ getDescription(),
+ IRadioDeviceClient_unknown );
+
+IF_IMPL_QUERY ( SoundStreamID IRadioDeviceClient::queryCurrentSoundStreamID(),
+ getCurrentSoundStreamID(),
+ SoundStreamID::InvalidID );
+
+void IRadioDeviceClient::noticeConnectedI (cmplInterface *c, bool pointer_valid)
+{
+ noticePowerChanged(queryIsPowerOn());
+ noticeStationChanged(queryCurrentStation(), pointer_valid ? c : NULL);
+ noticeDescriptionChanged(queryDescription(), pointer_valid ? c : NULL);
+}
+
+void IRadioDeviceClient::noticeDisconnectedI (cmplInterface *c, bool pointer_valid)
+{
+ noticePowerChanged(queryIsPowerOn());
+ noticeStationChanged(queryCurrentStation(), pointer_valid ? c : NULL);
+ noticeDescriptionChanged(queryDescription(), pointer_valid ? c : NULL);
+}
+
+
+
+
+/* Deprecated
+// IRadioSound
+
+IF_IMPL_SENDER ( IRadioSound::notifyVolumeChanged(float v),
+ noticeVolumeChanged(v) )
+IF_IMPL_SENDER ( IRadioSound::notifyTrebleChanged(float v),
+ noticeTrebleChanged(v) )
+IF_IMPL_SENDER ( IRadioSound::notifyBassChanged(float v),
+ noticeBassChanged(v) )
+IF_IMPL_SENDER ( IRadioSound::notifyBalanceChanged(float v),
+ noticeBalanceChanged(v) )
+IF_IMPL_SENDER ( IRadioSound::notifySignalQualityChanged(float q),
+ noticeSignalQualityChanged(q) )
+IF_IMPL_SENDER ( IRadioSound::notifySignalQualityBoolChanged(bool good),
+ noticeSignalQualityChanged(good) )
+IF_IMPL_SENDER ( IRadioSound::notifySignalMinQualityChanged(float q),
+ noticeSignalMinQualityChanged(q) )
+IF_IMPL_SENDER ( IRadioSound::notifyStereoChanged(bool s),
+ noticeStereoChanged(s) )
+IF_IMPL_SENDER ( IRadioSound::notifyMuted(bool m),
+ noticeMuted(m) )
+
+// IRadioSoundClient
+
+IF_IMPL_SENDER ( IRadioSoundClient::sendVolume (float v),
+ setVolume (v) )
+IF_IMPL_SENDER ( IRadioSoundClient::sendTreble (float v),
+ setTreble (v) )
+IF_IMPL_SENDER ( IRadioSoundClient::sendBass (float v),
+ setBass (v) )
+IF_IMPL_SENDER ( IRadioSoundClient::sendBalance (float v),
+ setBalance (v) )
+IF_IMPL_SENDER ( IRadioSoundClient::sendMute (bool mute),
+ mute (mute) )
+IF_IMPL_SENDER ( IRadioSoundClient::sendUnmute (bool unmute),
+ unmute (unmute) )
+IF_IMPL_SENDER ( IRadioSoundClient::sendSignalMinQuality (float q),
+ setSignalMinQuality (q) )
+IF_IMPL_SENDER ( IRadioSoundClient::sendStereo(bool s),
+ setStereo(s) )
+
+IF_IMPL_QUERY ( float IRadioSoundClient::queryVolume(),
+ getVolume(),
+ 0.0 )
+IF_IMPL_QUERY ( float IRadioSoundClient::queryTreble(),
+ getTreble(),
+ 0.0 )
+IF_IMPL_QUERY ( float IRadioSoundClient::queryBass(),
+ getBass(),
+ 0.0 )
+IF_IMPL_QUERY ( float IRadioSoundClient::queryBalance(),
+ getBalance(),
+ 0.0 )
+IF_IMPL_QUERY ( float IRadioSoundClient::querySignalQuality(),
+ getSignalQuality(),
+ 0.0 )
+IF_IMPL_QUERY ( float IRadioSoundClient::querySignalMinQuality(),
+ getSignalMinQuality(),
+ 0.75 )
+IF_IMPL_QUERY ( bool IRadioSoundClient::queryHasGoodQuality(),
+ hasGoodQuality(),
+ false )
+IF_IMPL_QUERY ( bool IRadioSoundClient::queryIsStereo(),
+ isStereo(),
+ false )
+IF_IMPL_QUERY ( bool IRadioSoundClient::queryIsMuted(),
+ isMuted(),
+ true )
+
+
+void IRadioSoundClient::noticeConnectedI (cmplInterface *, bool pointer_valid)
+{
+ noticeVolumeChanged (queryVolume());
+ noticeTrebleChanged (queryTreble());
+ noticeBassChanged (queryBass());
+ noticeBalanceChanged (queryBalance());
+ noticeSignalQualityChanged (querySignalQuality());
+ noticeSignalQualityChanged (queryHasGoodQuality());
+ noticeSignalMinQualityChanged(querySignalMinQuality());
+ noticeStereoChanged (queryIsStereo());
+ noticeMuted (queryIsMuted());
+}
+
+
+void IRadioSoundClient::noticeDisconnectedI (cmplInterface *, bool pointer_valid)
+{
+ noticeVolumeChanged (queryVolume());
+ noticeTrebleChanged (queryTreble());
+ noticeBassChanged (queryBass());
+ noticeBalanceChanged (queryBalance());
+ noticeSignalQualityChanged (querySignalQuality());
+ noticeSignalQualityChanged (queryHasGoodQuality());
+ noticeSignalMinQualityChanged(querySignalMinQuality());
+ noticeStereoChanged (queryIsStereo());
+ noticeMuted (queryIsMuted());
+}
+
+*/
+
+
+
+// ISeekRadio
+
+IF_IMPL_SENDER ( ISeekRadio::notifySeekStarted (bool up),
+ noticeSeekStarted (up) );
+IF_IMPL_SENDER ( ISeekRadio::notifySeekStopped (),
+ noticeSeekStopped () );
+IF_IMPL_SENDER ( ISeekRadio::notifySeekFinished (const RadioStation &s, bool goodQuality),
+ noticeSeekFinished (s, goodQuality) );
+IF_IMPL_SENDER ( ISeekRadio::notifyProgress (float f),
+ noticeProgress (f) );
+
+
+// ISeekRadioClient
+
+IF_IMPL_SENDER ( ISeekRadioClient::sendToBeginning(),
+ toBeginning() );
+IF_IMPL_SENDER ( ISeekRadioClient::sendToEnd(),
+ toEnd() );
+IF_IMPL_SENDER ( ISeekRadioClient::sendStartSeek (bool up),
+ startSeek (up) );
+IF_IMPL_SENDER ( ISeekRadioClient::sendStartSeekUp(),
+ startSeekUp() );
+IF_IMPL_SENDER ( ISeekRadioClient::sendStartSeekDown(),
+ startSeekDown() );
+IF_IMPL_SENDER ( ISeekRadioClient::sendStopSeek(),
+ stopSeek() );
+
+IF_IMPL_QUERY ( bool ISeekRadioClient::queryIsSeekRunning(),
+ isSeekRunning(),
+ false );
+IF_IMPL_QUERY ( bool ISeekRadioClient::queryIsSeekUpRunning(),
+ isSeekUpRunning(),
+ false );
+IF_IMPL_QUERY ( bool ISeekRadioClient::queryIsSeekDownRunning(),
+ isSeekDownRunning(),
+ false );
+IF_IMPL_QUERY ( float ISeekRadioClient::queryProgress(),
+ getProgress(),
+ 1.0 );
+
+
+void ISeekRadioClient::noticeConnectedI (cmplInterface *, bool /*pointer_valid*/)
+{
+ if (queryIsSeekRunning()) {
+ noticeSeekStarted(queryIsSeekUpRunning());
+ } else {
+ noticeSeekStopped();
+ }
+ noticeProgress(queryProgress());
+}
+
+
+void ISeekRadioClient::noticeDisconnectedI (cmplInterface *, bool /*pointer_valid*/)
+{
+ noticeSeekStopped();
+ noticeProgress(queryProgress());
+}
+
+
+// IFrequencyRadio
+
+IF_IMPL_SENDER ( IFrequencyRadio::notifyFrequencyChanged(float f, const RadioStation *s),
+ noticeFrequencyChanged(f, s) )
+IF_IMPL_SENDER ( IFrequencyRadio::notifyMinMaxFrequencyChanged(float min, float max),
+ noticeMinMaxFrequencyChanged(min, max) )
+IF_IMPL_SENDER ( IFrequencyRadio::notifyDeviceMinMaxFrequencyChanged(float min, float max),
+ noticeDeviceMinMaxFrequencyChanged(min, max) )
+IF_IMPL_SENDER ( IFrequencyRadio::notifyScanStepChanged(float s),
+ noticeScanStepChanged(s) )
+
+// IFrequencyRadioClient
+
+IF_IMPL_SENDER ( IFrequencyRadioClient::sendFrequency(float f),
+ setFrequency(f) )
+IF_IMPL_SENDER ( IFrequencyRadioClient::sendMinFrequency(float mf),
+ setMinFrequency(mf) )
+IF_IMPL_SENDER ( IFrequencyRadioClient::sendMaxFrequency(float mf),
+ setMaxFrequency(mf) )
+IF_IMPL_SENDER ( IFrequencyRadioClient::sendScanStep(float s),
+ setScanStep(s) )
+
+IF_IMPL_QUERY ( float IFrequencyRadioClient::queryFrequency(),
+ getFrequency(),
+ 0 )
+IF_IMPL_QUERY ( float IFrequencyRadioClient::queryMinFrequency(),
+ getMinFrequency(),
+ 0 )
+IF_IMPL_QUERY ( float IFrequencyRadioClient::queryMinDeviceFrequency(),
+ getMinDeviceFrequency(),
+ 0 )
+IF_IMPL_QUERY ( float IFrequencyRadioClient::queryMaxFrequency(),
+ getMaxFrequency(),
+ 0 )
+IF_IMPL_QUERY ( float IFrequencyRadioClient::queryMaxDeviceFrequency(),
+ getMaxDeviceFrequency(),
+ 0 )
+IF_IMPL_QUERY ( float IFrequencyRadioClient::queryScanStep(),
+ getScanStep(),
+ 0.05 )
+
+void IFrequencyRadioClient::noticeConnectedI (cmplInterface *, bool /*pointer_valid*/)
+{
+ noticeFrequencyChanged(queryFrequency(), NULL);
+ noticeMinMaxFrequencyChanged(queryMinFrequency(), queryMaxFrequency());
+ noticeDeviceMinMaxFrequencyChanged(queryMinDeviceFrequency(), queryMaxDeviceFrequency());
+ noticeScanStepChanged(queryScanStep());
+}
+
+
+void IFrequencyRadioClient::noticeDisconnectedI (cmplInterface *, bool /*pointer_valid*/)
+{
+ noticeFrequencyChanged(queryFrequency(), NULL);
+ noticeMinMaxFrequencyChanged(queryMinFrequency(), queryMaxFrequency());
+ noticeDeviceMinMaxFrequencyChanged(queryMinDeviceFrequency(), queryMaxDeviceFrequency());
+ noticeScanStepChanged(queryScanStep());
+}
+
+
+
+// IInternetRadio
+
+IF_IMPL_SENDER ( IInternetRadio::notifyURLChanged(const KURL &u),
+ noticeURLChanged(u) )
+
+// IInternetRadioClient
+
+IF_IMPL_SENDER ( IInternetRadioClient::sendURL(const KURL &url),
+ setURL(url) )
+
+
+static KURL emptyURL;
+
+IF_IMPL_QUERY ( const KURL &IInternetRadioClient::queryURL(),
+ getURL(),
+ emptyURL )
+
+void IInternetRadioClient::noticeConnectedI (cmplInterface *, bool /*pointer_valid*/)
+{
+ noticeURLChanged(queryURL());
+}
+
+
+void IInternetRadioClient::noticeDisconnectedI (cmplInterface *, bool /*pointer_valid*/)
+{
+ noticeURLChanged(queryURL());
+}
+
+
diff --git a/kradio3/src/radiodevicepool_interfaces.cpp b/kradio3/src/radiodevicepool_interfaces.cpp
new file mode 100644
index 0000000..27c111e
--- /dev/null
+++ b/kradio3/src/radiodevicepool_interfaces.cpp
@@ -0,0 +1,65 @@
+/***************************************************************************
+ radiodevicepool_interface.cpp - description
+ -------------------
+ begin : Sam Apr 19 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+
+#include "include/radiodevicepool_interfaces.h"
+#include "include/radiodevice_interfaces.h"
+
+// IRadioDevicePool
+
+IF_IMPL_SENDER ( IRadioDevicePool::notifyActiveDeviceChanged(IRadioDevice *rd),
+ noticeActiveDeviceChanged(rd) )
+IF_IMPL_SENDER ( IRadioDevicePool::notifyDevicesChanged(const QPtrList<IRadioDevice> &l),
+ noticeDevicesChanged(l) )
+IF_IMPL_SENDER ( IRadioDevicePool::notifyDeviceDescriptionChanged(const QString &s),
+ noticeDeviceDescriptionChanged(s) )
+
+// IRadioDevicePoolClient
+
+IF_IMPL_SENDER ( IRadioDevicePoolClient::sendActiveDevice(IRadioDevice *rd, bool keepPower ),
+ setActiveDevice(rd, keepPower) )
+
+IF_IMPL_QUERY ( IRadioDevice *IRadioDevicePoolClient::queryActiveDevice(),
+ getActiveDevice(),
+ NULL )
+
+static const QPtrList<IRadioDevice> IRadioDevicePoolClient_emptyList;
+IF_IMPL_QUERY ( const QPtrList<IRadioDevice> &IRadioDevicePoolClient::queryDevices(),
+ getDevices(),
+ IRadioDevicePoolClient_emptyList )
+
+static QString IRadioDevicePoolClient_unknown("unknown");
+IF_IMPL_QUERY ( const QString &IRadioDevicePoolClient::queryDeviceDescription(),
+ getDeviceDescription(),
+ IRadioDevicePoolClient_unknown )
+
+
+void IRadioDevicePoolClient::noticeConnectedI (cmplInterface *, bool /*pointer_valid*/)
+{
+ noticeActiveDeviceChanged(queryActiveDevice());
+ noticeDevicesChanged(queryDevices());
+ noticeDeviceDescriptionChanged(queryDeviceDescription());
+}
+
+void IRadioDevicePoolClient::noticeDisconnectedI (cmplInterface *, bool /*pointer_valid*/)
+{
+ noticeActiveDeviceChanged(queryActiveDevice());
+ noticeDevicesChanged(queryDevices());
+ noticeDeviceDescriptionChanged(queryDeviceDescription());
+}
+
+
diff --git a/kradio3/src/radiostation-config.cpp b/kradio3/src/radiostation-config.cpp
new file mode 100644
index 0000000..f60230c
--- /dev/null
+++ b/kradio3/src/radiostation-config.cpp
@@ -0,0 +1,102 @@
+/***************************************************************************
+ radiostation-config.cpp - description
+ -------------------
+ begin : Sa Aug 16 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include <qlabel.h>
+#include <qspinbox.h>
+#include <qlayout.h>
+#include <klocale.h>
+
+#include <math.h>
+
+#include "include/radiostation-config.h"
+#include "include/frequencyradiostation.h"
+
+
+RadioStationConfig::RadioStationConfig(QWidget *parent)
+ : QWidget (parent)
+{
+
+}
+
+RadioStationConfig::~RadioStationConfig()
+{
+}
+
+
+///////////////////////////////////////////////////////////////////////
+
+UndefinedRadioStationConfig::UndefinedRadioStationConfig (QWidget *parent)
+ : RadioStationConfig(parent)
+{
+ new QLabel (i18n("I don't know how to edit this station"), this);
+}
+
+UndefinedRadioStationConfig::~UndefinedRadioStationConfig()
+{
+}
+
+void UndefinedRadioStationConfig::setStationData (const RadioStation &/*rs*/)
+{
+}
+
+void UndefinedRadioStationConfig::storeStationData (RadioStation &/*rs*/)
+{
+}
+
+
+///////////////////////////////////////////////////////////////////////
+
+FrequencyRadioStationConfig::FrequencyRadioStationConfig (QWidget *parent)
+ : RadioStationConfig(parent)
+{
+ QHBoxLayout *hl = new QHBoxLayout(this);
+ QVBoxLayout *vl = new QVBoxLayout(hl);
+ vl->addWidget (new QLabel(i18n("Frequency:"), this));
+ m_editFrequency = new QSpinBox(20, 150000, 10, this);
+ vl->addWidget (m_editFrequency);
+ hl->addItem(new QSpacerItem (10, 1, QSizePolicy::Expanding, QSizePolicy::Fixed));
+
+ connect (m_editFrequency, SIGNAL(valueChanged(int)), this, SLOT(slotValueChanged(int)));
+}
+
+FrequencyRadioStationConfig::~FrequencyRadioStationConfig()
+{
+}
+
+void FrequencyRadioStationConfig::setStationData (const RadioStation &x)
+{
+ const FrequencyRadioStation *rs = dynamic_cast<const FrequencyRadioStation*>(&x);
+ if (rs) {
+ m_editFrequency->setValue((int)rint(rs->frequency() * 1000));
+ }
+}
+
+void FrequencyRadioStationConfig::storeStationData (RadioStation &x)
+{
+ FrequencyRadioStation *rs = dynamic_cast<FrequencyRadioStation*>(&x);
+ if (rs) {
+ rs->setFrequency(0.001 * m_editFrequency->value());
+ }
+}
+
+void FrequencyRadioStationConfig::slotValueChanged(int /*i*/)
+{
+ emit changed(this);
+}
+
+
+#include "radiostation-config.moc"
diff --git a/kradio3/src/radiostation-listview.cpp b/kradio3/src/radiostation-listview.cpp
new file mode 100644
index 0000000..e23fbaa
--- /dev/null
+++ b/kradio3/src/radiostation-listview.cpp
@@ -0,0 +1,259 @@
+/***************************************************************************
+ radiostation-listview.cpp - description
+ -------------------
+ begin : Mi Feb 3 2004
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "include/radiostation-listview.h"
+#include "include/stationlist.h"
+#include "include/radiostation.h"
+#include "include/station-drag-object.h"
+
+#include <klocale.h>
+#include <qfile.h>
+#include <qimage.h>
+#include <qpixmap.h>
+
+#include <kconfig.h>
+
+RadioStationListView::RadioStationListView(QWidget *parent, const char *name)
+ : KListView(parent, name)
+{
+ addColumn(i18n("No."));
+ addColumn(i18n("Icon"));
+ addColumn(i18n("Station"));
+ addColumn(i18n("Description"));
+ setAllColumnsShowFocus(true);
+ setSorting(-1);
+
+ QObject::connect(this, SIGNAL(spacePressed(QListViewItem*)),
+ this, SLOT(slotStationActivation(QListViewItem* )));
+ QObject::connect(this, SIGNAL(returnPressed(QListViewItem*)),
+ this, SLOT(slotStationActivation(QListViewItem* )));
+ QObject::connect(this, SIGNAL(doubleClicked(QListViewItem*)),
+ this, SLOT(slotStationActivation(QListViewItem *)));
+ QObject::connect(this, SIGNAL(currentChanged(QListViewItem*)),
+ this, SLOT(slotCurrentStationChanged(QListViewItem *)));
+
+ setAcceptDrops(true);
+}
+
+
+RadioStationListView::~RadioStationListView()
+{
+}
+
+
+QListViewItem *RadioStationListView::getItemForIndex(int idx) const
+{
+ QListViewItem *item = NULL;
+
+ if (idx >= 0 && idx < childCount()) {
+ item = firstChild();
+ int i = 0;
+ while (item && i < idx) {
+ item = item->nextSibling();
+ ++i;
+ }
+ }
+ return item;
+}
+
+
+int RadioStationListView::getIndexForItem(QListViewItem *queryItem) const
+{
+ int idx = -1;
+
+ if (queryItem) {
+ QListViewItem *item = firstChild();
+ ++idx;
+ while (item && item != queryItem) {
+ item = item->nextSibling();
+ ++idx;
+ }
+ if (!item)
+ idx = -1;
+ }
+
+ return idx;
+}
+
+
+void RadioStationListView::setStation(int idx, const RadioStation &s, int nr)
+{
+ QListViewItem *item = getItemForIndex(idx);
+
+ if (idx < 0) {
+ item = new QListViewItem(this, firstChild());
+ firstChild()->moveItem(item);
+ m_StationIDs.prepend(s.stationID());
+ idx = 0;
+ } else if (idx >= childCount()) {
+ item = new QListViewItem(this, lastChild());
+ m_StationIDs.append(s.stationID());
+ idx = childCount() - 1;
+ }
+
+ if (item) {
+ item->setDragEnabled(true);
+ item->setDropEnabled(true);
+
+ item->setText(0, QString::number(nr > 0 ? nr : idx+1));
+ item->setText(2, s.name());
+ item->setText(3, s.description());
+
+ m_StationIDs[idx] = s.stationID();
+
+ QImage img(s.iconName());
+ if (!img.isNull()) {
+ int h = img.height();
+ float f = 0.9 * (float)(item->height()) / (h ? (float)h : 1.0);
+ item->setPixmap(1, img.smoothScale((int)(img.width()*f), (int)(h * f)));
+ } else {
+ item->setPixmap(1, QPixmap());
+ }
+ }
+}
+
+
+void RadioStationListView::appendStation(const RadioStation &st, int nr)
+{
+ setStation(childCount(), st, nr);
+}
+
+
+void RadioStationListView::setStations(const StationList &stations)
+{
+ clear();
+ for (RawStationList::Iterator it(stations.all()); it.current(); ++it) {
+ setStation(childCount(), *it.current());
+ }
+}
+
+
+void RadioStationListView::removeStation(int idx)
+{
+ QListViewItem *item = getItemForIndex(idx);
+ if (item) {
+ delete item;
+ m_StationIDs.remove(m_StationIDs.at(idx));
+ }
+}
+
+void RadioStationListView::takeItem(QListViewItem *item, int idx)
+{
+ QListView::takeItem(item);
+ m_StationIDs.remove(m_StationIDs.at(idx));
+}
+
+void RadioStationListView::insertItem(QListViewItem *item, const QString &stationid, int idx_to)
+{
+ QListView::insertItem(item);
+ m_StationIDs.insert(m_StationIDs.at(idx_to), stationid);
+}
+
+void RadioStationListView::setCurrentStation(int idx)
+{
+ QListViewItem *item = getItemForIndex(idx);
+ if (item) {
+ clearSelection();
+ setSelected(item, true);
+ setCurrentItem(item);
+ }
+}
+
+
+int RadioStationListView::currentStationIndex() const
+{
+ return getIndexForItem(currentItem());
+}
+
+
+void RadioStationListView::slotStationActivation(QListViewItem *item)
+{
+ emit sigStationActivated(getIndexForItem(item));
+}
+
+
+void RadioStationListView::slotCurrentStationChanged(QListViewItem *item)
+{
+ emit sigCurrentStationChanged(getIndexForItem(item));
+}
+
+
+void RadioStationListView::saveState (KConfig *cfg) const
+{
+ if (!cfg)
+ return;
+ for (int i = 0; i < 4; ++i)
+ cfg->writeEntry(QString(name()) + "_radiostation_listview_col_" + QString::number(i), columnWidth(i));
+}
+
+
+void RadioStationListView::restoreState (KConfig *cfg)
+{
+ if (!cfg)
+ return;
+ for (int i = 0; i < 4; ++i)
+ setColumnWidth(i, cfg->readNumEntry(QString(name()) + "_radiostation_listview_col_" + QString::number(i), -1));
+}
+
+
+QDragObject *RadioStationListView::dragObject()
+{
+ QStringList list;
+ QListViewItem *item = firstChild();
+ for (int idx = 0; item; ++idx, item = item->nextSibling()) {
+ if (item->isSelected()) {
+ list.append(m_StationIDs[idx]);
+ }
+ }
+ return new StationDragObject(list, this);
+}
+
+void RadioStationListView::dragEnterEvent(QDragEnterEvent* event)
+{
+ event->accept(StationDragObject::canDecode(event));
+}
+
+void RadioStationListView::contentsDragEnterEvent(QDragEnterEvent* event)
+{
+ bool a = StationDragObject::canDecode(event);
+ if (a)
+ IErrorLogClient::staticLogDebug(i18n("contentsDragEnterEvent accepted"));
+ else
+ IErrorLogClient::staticLogDebug(i18n("contentsDragEnterEvent rejected"));
+ event->accept(a);
+}
+
+void RadioStationListView::dropEvent(QDropEvent* event)
+{
+ QStringList list;
+
+ if ( StationDragObject::decode(event, list) ) {
+ emit sigStationsReceived(list);
+ }
+}
+
+void RadioStationListView::contentsDropEvent(QDropEvent* event)
+{
+ dropEvent(event);
+}
+
+void RadioStationListView::contentsDragMoveEvent(QDragMoveEvent* event)
+{
+ event->accept();
+}
+
+#include "radiostation-listview.moc"
diff --git a/kradio3/src/radiostation.cpp b/kradio3/src/radiostation.cpp
new file mode 100644
index 0000000..6bdcd1a
--- /dev/null
+++ b/kradio3/src/radiostation.cpp
@@ -0,0 +1,216 @@
+/***************************************************************************
+ radiostation.cpp - description
+ -------------------
+ begin : Sat Feb 2 2002
+ copyright : (C) 2002 by Martin Witte / Frank Schwanz
+ email : witte@kawo1.rwth-aachen.de / schwanz@fh-brandenburg.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "include/radiostation.h"
+#include "include/radiostation-config.h"
+
+#include <unistd.h>
+#include <time.h>
+#include <fcntl.h>
+
+extern const char *StationNameElement;
+extern const char *StationShortNameElement;
+extern const char *StationIconStringElement;
+extern const char *StationVolumePresetElement;
+extern const char *StationIDElement;
+
+const char *StationNameElement = "name";
+const char *StationShortNameElement = "shortname";
+const char *StationIconStringElement = "icon";
+const char *StationVolumePresetElement = "volumepreset";
+const char *StationIDElement = "stationID";
+
+const char *dev_urandom_radiostations = "/dev/urandom";
+
+/////////////////////////////////////////////////////////////////////////////
+
+QDict<RadioStation> *RadioStation::stationClassRegistry = 0;
+
+/////////////////////////////////////////////////////////////////////////////
+
+RegisterStationClass registerStationClass;
+const UndefinedRadioStation undefinedRadioStation (registerStationClass);
+
+/////////////////////////////////////////////////////////////////////////////
+
+
+RadioStation::RadioStation(RegisterStationClass, const QString &classname)
+ : m_stationID(QString::null), // mark this station as a prototype station
+ // so that we can create later a real stationID
+ m_name(QString::null),
+ m_shortName(QString::null),
+ m_initialVolume(-1),
+ m_iconName(QString::null)
+{
+ if (! stationClassRegistry)
+ stationClassRegistry = new QDict<RadioStation>;
+ stationClassRegistry->insert(classname, this);
+}
+
+RadioStation::RadioStation()
+ : m_name(QString::null),
+ m_shortName(QString::null),
+ m_initialVolume(-1),
+ m_iconName(QString::null)
+{
+ generateNewStationID();
+}
+
+RadioStation::RadioStation(const QString &name, const QString &shortName)
+ : m_name(name),
+ m_shortName(shortName),
+ m_initialVolume(-1),
+ m_iconName(QString::null)
+{
+ generateNewStationID();
+}
+
+
+RadioStation::RadioStation(const RadioStation &s)
+ : m_stationID(s.m_stationID),
+ m_name(s.m_name),
+ m_shortName(s.m_shortName),
+ m_initialVolume(s.m_initialVolume),
+ m_iconName(s.m_iconName)
+{
+ // create a real stationID if "s" is a prototype
+ if (m_stationID.isNull())
+ generateNewStationID();
+}
+
+
+RadioStation::~RadioStation()
+{
+}
+
+
+void RadioStation::copyDescriptionFrom(const RadioStation &rs)
+{
+ m_name = rs.m_name;
+ m_shortName = rs.m_shortName;
+ m_iconName = rs.m_iconName;
+ m_stationID = rs.m_stationID;
+}
+
+
+void RadioStation::generateNewStationID()
+{
+ const int buffersize = 32;
+ unsigned char buffer[buffersize];
+
+ QString stime, srandom = QString::null;
+ stime.setNum(time(NULL));
+
+ int fd = open (dev_urandom_radiostations, O_RDONLY);
+ read(fd, buffer, buffersize);
+ close(fd);
+ for (int i = 0; i < buffersize; ++i)
+ srandom += QString().sprintf("%02X", (unsigned int)buffer[i]);
+
+ m_stationID = stime + srandom;
+}
+
+
+RadioStation const *RadioStation::getStationClass(const QString &classname)
+{
+ if (stationClassRegistry)
+ return stationClassRegistry->find(classname);
+ else
+ return NULL;
+}
+
+
+bool RadioStation::setProperty(const QString &pn, const QString &val)
+{
+ bool retval = false;
+ if (pn == StationIDElement) {
+ m_stationID = val;
+ retval = true;
+ } else if (pn == StationNameElement) {
+ m_name = val;
+ retval = true;
+ } else if (pn == StationShortNameElement) {
+ m_shortName = val;
+ retval = true;
+ } else if (pn == StationIconStringElement) {
+ m_iconName = val;
+ retval = true;
+ } else if (pn == StationVolumePresetElement) {
+ float x = val.toFloat(&retval);
+ if (retval)
+ m_initialVolume = x;
+ }
+ return retval;
+}
+
+
+QString RadioStation::getProperty(const QString &pn) const
+{
+ if (pn == StationIDElement) {
+ return m_stationID;
+ } else if (pn == StationNameElement) {
+ return m_name;
+ } else if (pn == StationShortNameElement) {
+ return m_shortName;
+ } else if (pn == StationIconStringElement) {
+ return m_iconName;
+ } else if (pn == StationVolumePresetElement) {
+ return QString().setNum(m_initialVolume);
+ } else {
+ return QString::null;
+ }
+}
+
+
+QStringList RadioStation::getPropertyNames() const
+{
+ QStringList l;
+ l.push_back(StationIDElement);
+ l.push_back(StationNameElement);
+ l.push_back(StationShortNameElement);
+ l.push_back(StationIconStringElement);
+ l.push_back(StationVolumePresetElement);
+ return l;
+}
+
+bool RadioStation::operator == (const RadioStation &x) const
+{
+ return m_stationID == x.m_stationID &&
+ m_name == x.m_name &&
+ m_shortName == x.m_shortName &&
+ m_initialVolume == x.m_initialVolume &&
+ m_iconName == x.m_iconName;
+}
+
+/////////////////////////////////////////////////////////////////////////
+
+int UndefinedRadioStation::compare(const RadioStation &_s) const
+{
+ UndefinedRadioStation const *s = dynamic_cast<UndefinedRadioStation const*>(&_s);
+
+ if (!s)
+ return -1;
+
+ return 0;
+
+}
+
+
+RadioStationConfig *UndefinedRadioStation::createEditor() const
+{
+ return new UndefinedRadioStationConfig(NULL);
+}
diff --git a/kradio3/src/ringbuffer.cpp b/kradio3/src/ringbuffer.cpp
new file mode 100644
index 0000000..7609768
--- /dev/null
+++ b/kradio3/src/ringbuffer.cpp
@@ -0,0 +1,173 @@
+/***************************************************************************
+ ringbuffer.cpp - description
+ -------------------
+ begin : Sun March 21 2004
+ copyright : (C) 2004 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "include/ringbuffer.h"
+#include <string.h>
+
+RingBuffer::RingBuffer(size_t size)
+{
+ m_Buffer = new char [size];
+ m_Size = size;
+ m_FillSize = 0;
+ m_Start = 0;
+}
+
+
+RingBuffer::~RingBuffer()
+{
+ delete[] m_Buffer;
+ m_Buffer = NULL;
+ m_Size = 0;
+}
+
+
+bool RingBuffer::resize(size_t new_size)
+{
+ if (new_size >= m_FillSize && new_size > 0) {
+ char *newBuffer = new char[new_size];
+ size_t newFill = 0;
+ while (m_FillSize > 0)
+ newFill += takeData(newBuffer + newFill, m_FillSize);
+
+ delete[] m_Buffer;
+
+ m_FillSize = newFill;
+ m_Start = 0;
+ m_Buffer = newBuffer;
+ m_Size = new_size;
+ return true;
+ }
+ return false;
+}
+
+
+size_t RingBuffer::addData (const char *src, size_t size)
+{
+ size_t written = 0;
+ if (m_Start + m_FillSize < m_Size) {
+ size_t rest = m_Size - m_Start - m_FillSize;
+ if (rest > size)
+ rest = size;
+ memmove (m_Buffer + m_Start + m_FillSize, src, rest);
+ m_FillSize += rest;
+ written += rest;
+ size -= rest;
+ src += rest;
+ }
+ if (size > 0 && m_FillSize < m_Size) {
+ size_t rest = size;
+ if (rest > m_Size - m_FillSize)
+ rest = m_Size - m_FillSize;
+ memmove(m_Buffer + m_Start + m_FillSize - m_Size, src, rest);
+ m_FillSize += rest;
+ written += rest;
+ }
+ return written;
+}
+
+
+size_t RingBuffer::takeData(char *dst, size_t size)
+{
+ size_t read = 0;
+ while (m_FillSize > 0 && size > 0) {
+ size_t n = size;
+ if (n > m_FillSize)
+ n = m_FillSize;
+ if (n > m_Size - m_Start)
+ n = m_Size - m_Start;
+ memmove (dst, m_Buffer + m_Start, n);
+ m_FillSize -= n;
+ m_Start += n;
+ read += n;
+ size -= n;
+ if (m_Start >= m_Size)
+ m_Start -= m_Size;
+
+ }
+ return read;
+}
+
+
+char *RingBuffer::getFreeSpace(size_t &size)
+{
+ if (m_FillSize == m_Size) {
+ size = 0;
+ return NULL;
+ }
+
+ if (m_Start + m_FillSize >= m_Size) {
+ size = m_Size - m_FillSize;
+ return m_Buffer + m_Start + m_FillSize - m_Size;
+ } else {
+ size = m_Size - m_Start - m_FillSize;
+ return m_Buffer + m_Start + m_FillSize;
+ }
+}
+
+
+size_t RingBuffer::removeFreeSpace(size_t size)
+{
+ if (m_FillSize == m_Size)
+ return 0;
+
+ if (m_Start + m_FillSize >= m_Size) {
+ if (size > m_Size - m_FillSize)
+ size = m_Size - m_FillSize;
+ m_FillSize += size;
+ return size;
+ } else {
+ if (m_Start + m_FillSize + size >= m_Size)
+ size = m_Size - m_Start - m_FillSize;
+ m_FillSize += size;
+ return size;
+ }
+}
+
+
+char *RingBuffer::getData(size_t &size)
+{
+ if (m_Start + m_FillSize >= m_Size) {
+ size = m_Size - m_Start;
+ } else {
+ size = m_FillSize;
+ }
+ return m_Buffer + m_Start;
+}
+
+
+size_t RingBuffer::removeData(size_t size)
+{
+ size_t n = 0;
+ if (size > m_FillSize)
+ size = m_FillSize;
+ if (m_Start + size >= m_Size) {
+ n = m_Size - m_Start;
+ m_Start = 0;
+ } else {
+ m_Start += size;
+ n = size;
+ }
+ m_FillSize -= n;
+ return n;
+}
+
+
+void RingBuffer::clear()
+{
+ m_Start = 0;
+ m_FillSize = 0;
+}
diff --git a/kradio3/src/seekhelper.cpp b/kradio3/src/seekhelper.cpp
new file mode 100644
index 0000000..eab7c1a
--- /dev/null
+++ b/kradio3/src/seekhelper.cpp
@@ -0,0 +1,134 @@
+/***************************************************************************
+ seekhelper.cpp - description
+ -------------------
+ begin : Sam Mai 10 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "include/seekhelper.h"
+
+#include <kdebug.h>
+
+SeekHelper::SeekHelper(ISeekRadio &parent)
+ : m_state(off),
+ m_parent(parent),
+ m_SoundStreamID(SoundStreamID::InvalidID)
+{
+}
+
+
+SeekHelper::~SeekHelper()
+{
+}
+
+
+bool SeekHelper::connectI (Interface *i)
+{
+ bool a = IRadioDeviceClient::connectI(i);
+ bool b = ISoundStreamClient::connectI(i);
+ return a || b;
+}
+
+
+bool SeekHelper::disconnectI(Interface *i)
+{
+ bool a = IRadioDeviceClient::disconnectI(i);
+ bool b = ISoundStreamClient::disconnectI(i);
+ return a || b;
+}
+
+
+void SeekHelper::start(const SoundStreamID &id, direction_t dir)
+{
+ m_SoundStreamID = id;
+ if (m_state == off) {
+ getData();
+ m_state = isGood() ? searchWorse : searchBest;
+ m_direction = dir;
+
+ queryIsMuted(m_SoundStreamID, m_oldMute);
+ sendMute(m_SoundStreamID, true);
+
+ m_parent.notifySeekStarted(m_direction == up);
+
+ step();
+ }
+}
+
+
+void SeekHelper::stop ()
+{
+ if (m_state != off) {
+ m_state = off;
+ abort();
+ sendMute(m_SoundStreamID, m_oldMute);
+ m_parent.notifySeekStopped();
+ m_SoundStreamID = SoundStreamID::InvalidID;
+ }
+}
+
+
+void SeekHelper::finish ()
+{
+ if (m_state != off) {
+ applyBest();
+ const RadioStation &rs = queryCurrentStation();
+
+ stop();
+ m_parent.notifySeekFinished(rs, isGood());
+ }
+}
+
+
+void SeekHelper::step ()
+{
+ if (m_state == off)
+ return;
+
+ getData();
+
+ switch (m_state) {
+
+ case off : break;
+
+ case searchWorse :
+ if (isWorse())
+ m_state = searchBest;
+
+ if (! nextSeekStep()) {
+ stop();
+ }
+
+ break;
+
+ case searchBest :
+ if (isWorse() && bestFound()) {
+ finish();
+ } else {
+ if (isBetter() && isGood()) {
+ rememberBest();
+ }
+ if (! nextSeekStep()) {
+ if (isGood() && bestFound()) {
+ finish();
+ } else {
+ stop();
+ }
+ }
+ }
+ break;
+ }
+}
+
+
+
diff --git a/kradio3/src/soundformat.cpp b/kradio3/src/soundformat.cpp
new file mode 100644
index 0000000..c3f290b
--- /dev/null
+++ b/kradio3/src/soundformat.cpp
@@ -0,0 +1,270 @@
+/***************************************************************************
+ soundformat.cpp - description
+ -------------------
+ begin : Sun Aug 1 2004
+ copyright : (C) 2004 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "include/soundformat.h"
+
+int SoundFormat::sampleSize() const
+{
+ if (m_SampleBits <= 8) return 1;
+ if (m_SampleBits <= 16) return 2;
+ if (m_SampleBits <= 32) return 4;
+
+ // unknown
+ return -1;
+}
+
+
+int SoundFormat::frameSize() const
+{
+ return sampleSize() * m_Channels;
+}
+
+
+int SoundFormat::minValue() const
+{
+ if (!m_IsSigned) return 0;
+ return -(1 << (m_SampleBits - 1));
+}
+
+
+int SoundFormat::maxValue() const
+{
+ return (1 << (m_SampleBits - m_IsSigned)) - 1;
+}
+
+
+void SoundFormat::restoreConfig(const QString &prefix, KConfig *c)
+{
+ m_SampleBits = c->readNumEntry (prefix + "bits", 16);
+ m_IsSigned = c->readBoolEntry(prefix + "sign", true);
+ m_Channels = c->readNumEntry (prefix + "channels", 2);
+ m_SampleRate = c->readNumEntry (prefix + "samplerate", 44100);
+ bool littleEndian = c->readBoolEntry(prefix + "littleEndian", true);
+ m_Endianess = littleEndian ? LITTLE_ENDIAN : BIG_ENDIAN;
+ m_Encoding = c->readEntry(prefix + "encoding", "raw");
+}
+
+
+void SoundFormat::saveConfig(const QString &prefix, KConfig *c) const
+{
+ c->writeEntry(prefix + "bits", m_SampleBits);
+ c->writeEntry(prefix + "sign", m_IsSigned);
+ c->writeEntry(prefix + "channels", m_Channels);
+ c->writeEntry(prefix + "samplerate", m_SampleRate);
+ c->writeEntry(prefix + "littleEndian", m_Endianess == LITTLE_ENDIAN);
+ c->writeEntry(prefix + "encoding", m_Encoding);
+}
+
+
+int SoundFormat::convertSampleToInt(const char *sample, bool do_scale) const
+{
+ int size = sampleSize();
+
+ unsigned val = 0;
+ if (m_Endianess == LITTLE_ENDIAN) {
+ sample = sample + size - 1;
+ for (int i = size - 1; i >= 0; --i, --sample) {
+ val = (val << 8) | (unsigned char)*sample;
+ }
+ } else {
+ for (int i = 0; i < size; ++i, ++sample) {
+ val = (val << 8) | (unsigned char)*sample;
+ }
+ }
+
+ int scale = (sizeof(unsigned) << 3) - m_SampleBits;
+ int signmask = do_scale ? (!m_IsSigned << ((sizeof(unsigned) << 3) - 1)) :
+ (-m_IsSigned << ((size << 3) - 1)) ;
+ if (do_scale) {
+ // map to int number space
+ return (val << scale) ^ signmask;
+ } else {
+ // do only sign extension
+ if (val & signmask)
+ val |= signmask;
+ return val;
+ }
+}
+
+
+void SoundFormat::convertIntToSample(int src, char *dst, bool is_scaled) const
+{
+ int size = sampleSize();
+ int scale = (sizeof(unsigned) * 8) - m_SampleBits;
+ int signmask = (!m_IsSigned << (sizeof(unsigned) * 8 - 1));
+
+ unsigned val = is_scaled ? (src ^ signmask) >> scale : src;
+ if (m_Endianess == LITTLE_ENDIAN) {
+ for (int i = 0; i < size; ++i, ++dst) {
+ (unsigned char &)*dst = val & 0xFF;
+ val >>= 8;
+ }
+ } else {
+ dst = dst - 1 + size;
+ for (int i = size - 1; i >= 0; --i, --dst) {
+ (unsigned char &)*dst = val & 0xFF;
+ val >>= 8;
+ }
+ }
+}
+
+
+void SoundFormat::convertSamplesToInts(const char *src, int *dst, size_t n, bool do_scale) const
+{
+ int size = sampleSize();
+ int scale = (sizeof(unsigned) * 8) - m_SampleBits;
+ int signmask = do_scale ? (!m_IsSigned << ((sizeof(unsigned) << 3) - 1)) :
+ (-m_IsSigned << ((size << 3) - 1)) ;
+ if (m_Endianess == LITTLE_ENDIAN) {
+ src = src - 1 + (size * n);
+ int *end = dst;
+ for (dst = dst - 1 + n; dst >= end; --dst) {
+ unsigned val = 0;
+ for (int i = size - 1; i >= 0; --i, --src) {
+ val = (val << 8) | (unsigned char)*src;
+ }
+ if (do_scale) {
+ *dst = (val << scale) ^ signmask;
+ } else if (val & signmask) {
+ *dst = val | signmask;
+ }
+ }
+ } else {
+ for (int *end = dst + n; dst < end; ++dst) {
+ unsigned val = 0;
+ for (int i = 0; i < size; ++i, ++src) {
+ val = (val << 8) | (unsigned char)*src;
+ }
+ if (do_scale) {
+ *dst = (val << scale) ^ signmask;
+ } else if (val & signmask) {
+ *dst = val | signmask;
+ }
+ }
+ }
+}
+
+
+void SoundFormat::convertIntsToSamples(const int *src, char *dst, size_t n, bool is_scaled) const
+{
+ int size = sampleSize();
+ int scale = (sizeof(unsigned) * 8) - m_SampleBits;
+ int signmask = (!m_IsSigned << (sizeof(unsigned) * 8 - 1));
+
+ if (m_Endianess == LITTLE_ENDIAN) {
+ for (const int *end = src+n; src < end; ++src) {
+ unsigned val = is_scaled ? ((unsigned)(*src ^ signmask)) >> scale : *src;
+ for (int i = 0; i < size; ++i, ++dst) {
+ (unsigned char &)*dst = val & 0xFF;
+ val >>= 8;
+ }
+ }
+ } else {
+ dst = dst - 1 + (size * n);
+ const int *end = src;
+ for (src = src - 1 + n; src >= end; --src) {
+ unsigned val = is_scaled ? ((unsigned)(*src ^ signmask)) >> scale : *src;
+ for (int i = size - 1; i >= 0; --i, --dst) {
+ (unsigned char &)*dst = val & 0xFF;
+ val >>= 8;
+ }
+ }
+ }
+}
+
+
+void SoundFormat::convertSamplesToFloat(const char *_src, float **_dst, size_t n) const
+{
+ int sample_size = sampleSize();
+ int frame_size = frameSize();
+ int scale = (sizeof(short) << 3) - m_SampleBits;
+ int signmask = !m_IsSigned << ((sizeof(short) << 3) - 1);
+ int skip = frame_size - sample_size;
+
+ if (m_Endianess == LITTLE_ENDIAN) {
+ const char *src_ch0_end = _src + frame_size * (n - 1) + sample_size - 1;
+ for (unsigned ch = 0; ch < m_Channels; ++ch) {
+ const char *src = src_ch0_end + sample_size * ch;
+ float *dst = _dst[ch];
+ float *end = dst;
+ for (dst = dst - 1 + n; dst >= end; --dst) {
+ unsigned val = 0;
+ for (int i = sample_size - 1; i >= 0; --i, --src) {
+ val = (val << 8) | (unsigned char)*src;
+ }
+ *dst = (float)(signed short)((val << scale) ^ signmask) / 32768.0f;
+ src = src - skip;
+ }
+ }
+ } else {
+ for (unsigned ch = 0; ch < m_Channels; ++ch) {
+ const char *src = _src + sample_size * ch;
+ float *dst = _dst[ch];
+ for (float *end = dst + n; dst < end; ++dst) {
+ unsigned val = 0;
+ for (int i = 0; i < sample_size; ++i, ++src) {
+ val = (val << 8) | (unsigned char)*src;
+ }
+ *dst = (float)(signed short)((val << scale) ^ signmask) / 32768.0f;
+ src = src + skip;
+ }
+ }
+ }
+}
+
+
+
+void SoundFormat::convertFloatsToSamples(const float **_src, char *_dst, size_t n) const
+{
+ int sample_size = sampleSize();
+ int frame_size = frameSize();
+ int scale = (sizeof(short) << 3) - m_SampleBits;
+ int signmask = (!m_IsSigned << (sizeof(short) << 3) - 1);
+ int skip = frame_size - sample_size;
+
+ if (m_Endianess == LITTLE_ENDIAN) {
+ for (unsigned ch = 0; ch < m_Channels; ++ch) {
+ const float *src = _src[ch];
+ char *dst = _dst + ch * sample_size;
+ for (const float *end = src+n; src < end; ++src) {
+ unsigned val = (( ((unsigned)(*src * 32768.0f)) ^ signmask)) >> scale;
+ for (int i = 0; i < sample_size; ++i, ++dst) {
+ (unsigned char &)*dst = val & 0xFF;
+ val >>= 8;
+ }
+ dst = dst + skip;
+ }
+ }
+ } else {
+ char *dst_ch0_end = _dst + frame_size * (n - 1) + sample_size - 1;
+ for (unsigned ch = 0; ch < m_Channels; ++ch) {
+ char *dst = dst_ch0_end + sample_size * ch;
+ const float *src = _src[ch];
+ const float *end = src;
+ for (src = src - 1 + n; src >= end; --src) {
+ unsigned val = (( ((unsigned)(*src * 32768.0f)) ^ signmask)) >> scale;
+ for (int i = sample_size - 1; i >= 0; --i, --dst) {
+ (unsigned char &)*dst = val & 0xFF;
+ val >>= 8;
+ }
+ dst = dst - skip;
+ }
+ }
+ }
+}
+
+
diff --git a/kradio3/src/soundstreamclient_interfaces.cpp b/kradio3/src/soundstreamclient_interfaces.cpp
new file mode 100644
index 0000000..c030ec4
--- /dev/null
+++ b/kradio3/src/soundstreamclient_interfaces.cpp
@@ -0,0 +1,426 @@
+/***************************************************************************
+ sounddevice_interfaces.cpp - description
+ -------------------
+ begin : Mon Mr 21 2004
+ copyright : (C) 2004 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "include/soundstreamclient_interfaces.h"
+
+#include <unistd.h>
+#include <time.h>
+#include <fcntl.h>
+
+const char *dev_urandom = "/dev/urandom";
+
+////////////////////////////////////////////
+
+void ISoundStreamServer::noticeConnectedI(cmplInterface *i, bool pointer_valid)
+{
+ for (QPtrListIterator<cmplInterface> it(iConnections); it.current(); ++it) {
+ it.current()->noticeConnectedSoundClient(i, pointer_valid);
+ cmplInterface *x = it.current();
+ if (x != i && pointer_valid)
+ i->noticeConnectedSoundClient(x, x->isThisInterfacePointerValid());
+ }
+}
+
+void ISoundStreamServer::noticeDisconnectedI(cmplInterface *i, bool pointer_valid)
+{
+ for (QPtrListIterator<cmplInterface> it(iConnections); it.current(); ++it) {
+ it.current()->noticeDisconnectedSoundClient(i, pointer_valid);
+ cmplInterface *x = it.current();
+ if (x != i && pointer_valid)
+ i->noticeDisconnectedSoundClient(x, x->isThisInterfacePointerValid());
+ }
+}
+
+
+
+QPtrList<ISoundStreamClient> ISoundStreamServer::getPlaybackMixers() const
+{
+ QPtrList<ISoundStreamClient> tmp;
+ for (QPtrListIterator<ISoundStreamClient> it(iConnections); it.current(); ++it) {
+ if (it.current()->supportsPlayback())
+ tmp.append(it.current());
+ }
+ return tmp;
+}
+
+QPtrList<ISoundStreamClient> ISoundStreamServer::getCaptureMixers() const
+{
+ QPtrList<ISoundStreamClient> tmp;
+ for (QPtrListIterator<ISoundStreamClient> it(iConnections); it.current(); ++it) {
+ if (it.current()->supportsCapture())
+ tmp.append(it.current());
+ }
+ return tmp;
+}
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, sendPlaybackVolume, (SoundStreamID id, float volume),
+ setPlaybackVolume(id, volume) );
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, sendCaptureVolume, (SoundStreamID id, float volume),
+ setCaptureVolume(id, volume) );
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, queryPlaybackVolume, (SoundStreamID id, float &volume),
+ getPlaybackVolume(id, volume) );
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, queryCaptureVolume, (SoundStreamID id, float &volume),
+ getCaptureVolume(id, volume) );
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, notifyPlaybackVolumeChanged, (SoundStreamID id, float volume),
+ noticePlaybackVolumeChanged(id, volume) );
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, notifyCaptureVolumeChanged, (SoundStreamID id, float volume),
+ noticeCaptureVolumeChanged(id, volume) );
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, sendReleasePlayback, (SoundStreamID id),
+ releasePlayback(id) );
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, sendReleaseCapture, (SoundStreamID id),
+ releaseCapture(id) );
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, sendStartPlayback, (SoundStreamID id),
+ startPlayback(id) );
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, sendPausePlayback, (SoundStreamID id),
+ pausePlayback(id) );
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, sendStopPlayback, (SoundStreamID id),
+ stopPlayback(id) );
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, queryIsPlaybackRunning, (SoundStreamID id, bool &b),
+ isPlaybackRunning(id, b) );
+
+//IF_IMPL_SENDER_FINE ( ISoundStreamServer, sendStartCapture, (SoundStreamID id),
+// startCapture(id) );
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, sendStartCaptureWithFormat, (SoundStreamID id, const SoundFormat &proposed_format, SoundFormat &real_format, bool force_format),
+ startCaptureWithFormat(id, proposed_format, real_format, force_format) );
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, sendStopCapture, (SoundStreamID id),
+ stopCapture(id) );
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, queryIsCaptureRunning, (SoundStreamID id, bool &b, SoundFormat &sf),
+ isCaptureRunning(id, b, sf) );
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, sendStartRecording, (SoundStreamID id),
+ startRecording(id) );
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, sendStartRecordingWithFormat, (SoundStreamID id, const SoundFormat &proposed_format, SoundFormat &real_format),
+ startRecordingWithFormat(id, proposed_format, real_format) );
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, sendStopRecording, (SoundStreamID id),
+ stopRecording(id) );
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, queryIsRecordingRunning, (SoundStreamID id, bool &b, SoundFormat &sf),
+ isRecordingRunning(id, b, sf) );
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, notifySoundStreamCreated, (SoundStreamID id),
+ noticeSoundStreamCreated(id) );
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, notifySoundStreamClosed, (SoundStreamID id),
+ noticeSoundStreamClosed(id) );
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, notifySoundStreamRedirected, (SoundStreamID oldID, SoundStreamID newID),
+ noticeSoundStreamRedirected(oldID, newID) );
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, notifySoundStreamChanged, (SoundStreamID id),
+ noticeSoundStreamChanged(id) );
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, notifySoundStreamData, (SoundStreamID id, const SoundFormat &format, const char *data, size_t size, size_t &consumed_size, const SoundMetaData &md),
+ noticeSoundStreamData(id, format, data, size, consumed_size, md) );
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, notifyReadyForPlaybackData, (SoundStreamID id, size_t size),
+ noticeReadyForPlaybackData(id, size) );
+
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, notifyTrebleChanged, (SoundStreamID id, float v),
+ noticeTrebleChanged(id, v) );
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, notifyBassChanged, (SoundStreamID id, float v),
+ noticeBassChanged(id, v) );
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, notifyBalanceChanged, (SoundStreamID id, float v),
+ noticeBalanceChanged(id, v) );
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, notifyMuted, (SoundStreamID id, bool m),
+ noticeMuted(id, m) );
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, notifySignalQualityChanged, (SoundStreamID id, float q),
+ noticeSignalQualityChanged(id, q) );
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, notifySignalQualityBoolChanged, (SoundStreamID id, bool good),
+ noticeSignalQualityChanged(id, good) );
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, notifySignalMinQualityChanged, (SoundStreamID id, float q),
+ noticeSignalMinQualityChanged(id, q) );
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, notifyStereoChanged, (SoundStreamID id, bool s),
+ noticeStereoChanged(id, s) );
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, sendTreble , (SoundStreamID id, float v),
+ setTreble(id, v) );
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, sendBass , (SoundStreamID id, float v),
+ setBass(id, v) );
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, sendBalance , (SoundStreamID id, float v),
+ setBalance(id, v) );
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, sendMute , (SoundStreamID id, bool mute),
+ mute(id, mute) );
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, sendUnmute , (SoundStreamID id, bool unmute),
+ unmute(id, unmute) );
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, sendSignalMinQuality , (SoundStreamID id, float q),
+ setSignalMinQuality(id, q) );
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, sendStereo, (SoundStreamID id, bool s),
+ setStereo(id, s) );
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, queryTreble, (SoundStreamID id, float &v),
+ getTreble(id, v) );
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, queryBass, (SoundStreamID id, float &v),
+ getBass(id, v) );
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, queryBalance, (SoundStreamID id, float &v),
+ getBalance(id, v) );
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, querySignalQuality, (SoundStreamID id, float &q),
+ getSignalQuality(id, q) );
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, querySignalMinQuality, (SoundStreamID id, float &q),
+ getSignalMinQuality(id, q) );
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, queryHasGoodQuality, (SoundStreamID id, bool &good),
+ hasGoodQuality(id, good) );
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, queryIsStereo, (SoundStreamID id, bool &s),
+ isStereo(id, s) );
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, queryIsMuted, (SoundStreamID id, bool &m),
+ isMuted(id, m) );
+
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, notifyPlaybackChannelsChanged, (const QString &client_id, const QStringList &map),
+ noticePlaybackChannelsChanged(client_id, map) );
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, notifyCaptureChannelsChanged, (const QString &client_id, const QStringList &map),
+ noticeCaptureChannelsChanged (client_id, map) );
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, querySoundStreamDescription, (SoundStreamID id, QString &descr),
+ getSoundStreamDescription(id, descr) );
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, querySoundStreamRadioStation, (SoundStreamID id, const RadioStation *&rs),
+ getSoundStreamRadioStation(id, rs) );
+
+IF_IMPL_SENDER_FINE ( ISoundStreamServer, queryEnumerateSoundStreams, (QMap<QString, SoundStreamID> &list),
+ enumerateSoundStreams(list) );
+
+
+
+
+////////////////////////////////////////////
+
+
+ISoundStreamClient::ISoundStreamClient()
+ : BaseClass(1),
+ m_Server(NULL)
+{
+ setSoundStreamClientID(createNewSoundStreamClientID());
+}
+
+
+ISoundStreamClient::~ISoundStreamClient()
+{
+}
+
+QString ISoundStreamClient::createNewSoundStreamClientID()
+{
+ const int buffersize = 32;
+ unsigned char buffer[buffersize];
+
+ QString stime, srandom = QString::null;
+ stime.setNum(time(NULL));
+
+ int fd = open (dev_urandom, O_RDONLY);
+ read(fd, buffer, buffersize);
+ close(fd);
+ for (int i = 0; i < buffersize; ++i)
+ srandom += QString().sprintf("%02X", (unsigned int)buffer[i]);
+
+ return stime + srandom;
+}
+
+
+
+void ISoundStreamClient::setSoundStreamClientID(const QString &s)
+{
+ ISoundStreamServer *server = getSoundStreamServer();
+ if (server)
+ server->noticeDisconnectedI(this, true);
+ m_SoundStreamClientID = s;
+ if (server)
+ server->noticeConnectedI(this, true);
+}
+
+
+const QString &ISoundStreamClient::getSoundStreamClientID() const
+{
+ return m_SoundStreamClientID;
+}
+
+
+
+void ISoundStreamClient::noticeConnectedI(cmplInterface *i, bool valid)
+{
+ if (valid && i)
+ m_Server = i;
+}
+
+void ISoundStreamClient::noticeDisconnectedI(cmplInterface *i, bool /*valid*/)
+{
+ if (i == m_Server) {
+ m_Server = NULL;
+ }
+}
+
+
+SoundStreamID ISoundStreamClient::createNewSoundStream(bool notify) const
+{
+ SoundStreamID x = SoundStreamID::createNewID();
+ if (iConnections.count() && notify)
+ iConnections.getFirst()->notifySoundStreamCreated(x);
+ return x;
+}
+
+
+SoundStreamID ISoundStreamClient::createNewSoundStream(SoundStreamID old_id, bool notify) const
+{
+ SoundStreamID x = SoundStreamID::createNewID(old_id);
+ if (iConnections.count() && notify)
+ iConnections.getFirst()->notifySoundStreamCreated(x);
+ return x;
+}
+
+
+void ISoundStreamClient::closeSoundStream(SoundStreamID id, bool notify)
+{
+ if (iConnections.count() && notify)
+ iConnections.getFirst()->notifySoundStreamClosed(id);
+}
+
+
+static const QStringList emptyList;
+
+const QStringList &ISoundStreamClient::getPlaybackChannels() const
+{
+ return emptyList;
+}
+
+
+const QStringList &ISoundStreamClient::getCaptureChannels() const
+{
+ return emptyList;
+}
+
+
+static const QMap<QString, ISoundStreamClient *> emptyClientMap;
+QMap<QString, ISoundStreamClient *> ISoundStreamClient::getPlaybackClients() const
+{
+ return iConnections.count() ? iConnections.getFirst()->getPlaybackClients() : emptyClientMap;
+}
+
+QMap<QString, ISoundStreamClient *> ISoundStreamServer::getPlaybackClients() const
+{
+ QMap<QString, ISoundStreamClient *> map;
+ for (QPtrListIterator<ISoundStreamClient> it(ISoundStreamServer::iConnections); it.current(); ++it) {
+ if (it.current()->supportsPlayback())
+ map.insert(it.current()->getSoundStreamClientID(), it.current());
+ }
+ return map;
+}
+
+
+
+static const QMap<QString, QString> emptyClientDescrMap;
+QMap<QString, QString> ISoundStreamClient::getPlaybackClientDescriptions() const
+{
+ return iConnections.count() ? iConnections.getFirst()->getPlaybackClientDescriptions() : emptyClientDescrMap;
+}
+
+QMap<QString, QString> ISoundStreamServer::getPlaybackClientDescriptions() const
+{
+ QMap<QString, QString> map;
+ for (QPtrListIterator<ISoundStreamClient> it(ISoundStreamServer::iConnections); it.current(); ++it) {
+ if (it.current()->supportsPlayback())
+ map.insert(it.current()->getSoundStreamClientID(), it.current()->getSoundStreamClientDescription());
+ }
+ return map;
+}
+
+
+
+
+QMap<QString, ISoundStreamClient *> ISoundStreamClient::getCaptureClients() const
+{
+ return iConnections.count() ? iConnections.getFirst()->getCaptureClients() : emptyClientMap;
+}
+
+
+QMap<QString, ISoundStreamClient *> ISoundStreamServer::getCaptureClients() const
+{
+ QMap<QString, ISoundStreamClient *> map;
+ for (QPtrListIterator<ISoundStreamClient> it(ISoundStreamServer::iConnections); it.current(); ++it) {
+ if (it.current()->supportsCapture())
+ map.insert(it.current()->getSoundStreamClientID(), it.current());
+ }
+ return map;
+}
+
+
+
+
+QMap<QString, QString> ISoundStreamClient::getCaptureClientDescriptions() const
+{
+ return iConnections.count() ? iConnections.getFirst()->getCaptureClientDescriptions() : emptyClientDescrMap;
+}
+
+QMap<QString, QString> ISoundStreamServer::getCaptureClientDescriptions() const
+{
+ QMap<QString, QString> map;
+ for (QPtrListIterator<ISoundStreamClient> it(ISoundStreamServer::iConnections); it.current(); ++it) {
+ if (it.current()->supportsCapture())
+ map.insert(it.current()->getSoundStreamClientID(), it.current()->getSoundStreamClientDescription());
+ }
+ return map;
+}
+
+
+
+
+
+ISoundStreamClient *ISoundStreamClient::getSoundStreamClientWithID(const QString &search_id) const
+{
+ return iConnections.count() ? iConnections.getFirst()->getSoundStreamClientWithID(search_id) : NULL;
+}
+
+ISoundStreamClient *ISoundStreamServer::getSoundStreamClientWithID(const QString &search_id) const
+{
+ for (QPtrListIterator<ISoundStreamClient> it(ISoundStreamServer::iConnections); it.current(); ++it) {
+ const QString &id = it.current()->getSoundStreamClientID();
+ if (id == search_id)
+ return it.current();
+ }
+ return NULL;
+}
+
+void ISoundStreamClient::noticeConnectedSoundClient(thisInterface */*i*/, bool /*pointer_valid*/)
+{
+}
+
+void ISoundStreamClient::noticeDisconnectedSoundClient(thisInterface */*i*/, bool /*pointer_valid*/)
+{
+}
+
+static const QPtrList<ISoundStreamClient> emptyClientList;
+IF_IMPL_QUERY ( QPtrList<ISoundStreamClient> ISoundStreamClient::queryPlaybackMixers(),
+ getPlaybackMixers(),
+ emptyClientList );
+
+IF_IMPL_QUERY ( QPtrList<ISoundStreamClient> ISoundStreamClient::queryCaptureMixers(),
+ getPlaybackMixers(),
+ emptyClientList );
diff --git a/kradio3/src/soundstreamid.cpp b/kradio3/src/soundstreamid.cpp
new file mode 100644
index 0000000..1c9cfed
--- /dev/null
+++ b/kradio3/src/soundstreamid.cpp
@@ -0,0 +1,70 @@
+/***************************************************************************
+ soundstreamid.cpp - description
+ -------------------
+ begin : Sun Aug 1 2004
+ copyright : (C) 2004 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "include/soundstreamid.h"
+
+unsigned SoundStreamID::nextID = 1;
+unsigned SoundStreamID::nextPhysicalID = 1;
+const SoundStreamID SoundStreamID::InvalidID;
+
+SoundStreamID::SoundStreamID()
+ : m_ID(0),
+ m_PhysicalID(0)
+{
+}
+
+
+SoundStreamID::SoundStreamID(int _id, int _phys_id)
+ : m_ID(_id),
+ m_PhysicalID(_phys_id)
+{
+}
+
+
+SoundStreamID::SoundStreamID(const SoundStreamID &org)
+ : m_ID (org.m_ID),
+ m_PhysicalID(org.m_PhysicalID)
+{
+}
+
+
+SoundStreamID &SoundStreamID::operator = (const SoundStreamID &id)
+{
+ m_ID = id.m_ID;
+ m_PhysicalID = id.m_PhysicalID;
+ return *this;
+}
+
+
+SoundStreamID SoundStreamID::createNewID()
+{
+ return SoundStreamID (nextID++, nextPhysicalID++);
+}
+
+
+SoundStreamID SoundStreamID::createNewID(const SoundStreamID &oldID)
+{
+ return SoundStreamID (nextID++, oldID.m_PhysicalID);
+}
+
+
+void SoundStreamID::invalidate()
+{
+ m_ID = 0;
+ m_PhysicalID = 0;
+}
+
diff --git a/kradio3/src/standardscandialog-ui.ui b/kradio3/src/standardscandialog-ui.ui
new file mode 100644
index 0000000..ba7b98e
--- /dev/null
+++ b/kradio3/src/standardscandialog-ui.ui
@@ -0,0 +1,136 @@
+<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
+<class>StandardScanDialogUI</class>
+<widget class="QDialog">
+ <property name="name">
+ <cstring>StandardScanDialogUI</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>359</width>
+ <height>104</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Stations search in progress ...</string>
+ </property>
+ <property name="sizeGripEnabled">
+ <bool>true</bool>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QProgressBar" row="0" column="0">
+ <property name="name">
+ <cstring>progressBar</cstring>
+ </property>
+ <property name="progress">
+ <number>50</number>
+ </property>
+ <property name="indicatorFollowsStyle">
+ <bool>true</bool>
+ </property>
+ <property name="percentageVisible">
+ <bool>true</bool>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget" row="2" column="0">
+ <property name="name">
+ <cstring>layout2</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <spacer>
+ <property name="name">
+ <cstring>spacer8_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>100</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>buttonCancel</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Cancel</string>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer8</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>70</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget" row="1" column="0">
+ <property name="name">
+ <cstring>layout2</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>labelTimeDescr</cstring>
+ </property>
+ <property name="text">
+ <string>remaining time</string>
+ </property>
+ </widget>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>labelTime</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>&lt;p align="right"&gt;nothing here&lt;/p&gt;</string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ </grid>
+</widget>
+<connections>
+</connections>
+<includes>
+</includes>
+<variables>
+</variables>
+<slots>
+</slots>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/kradio3/src/standardscandialog.cpp b/kradio3/src/standardscandialog.cpp
new file mode 100644
index 0000000..32d5308
--- /dev/null
+++ b/kradio3/src/standardscandialog.cpp
@@ -0,0 +1,183 @@
+/***************************************************************************
+ standardscandialog.cpp - description
+ -------------------
+ begin : Son Aug 3 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "include/standardscandialog.h"
+#include "include/radiostation.h"
+
+#include <qprogressbar.h>
+#include <qlabel.h>
+#include <qpushbutton.h>
+
+#include <klocale.h>
+
+#include <math.h>
+
+StandardScanDialog::StandardScanDialog(QWidget *parent)
+ : StandardScanDialogUI(parent, NULL, true),
+ m_count(0),
+ m_running(false),
+ m_oldPowerOn(false),
+ m_oldStation(NULL),
+ m_ignorePower(false)
+{
+ QObject::connect(buttonCancel, SIGNAL(clicked()), this, SLOT(slotCancelDone()));
+}
+
+
+StandardScanDialog::~StandardScanDialog()
+{
+ stop();
+}
+
+bool StandardScanDialog::connectI (Interface *i)
+{
+ bool a = ISeekRadioClient::connectI(i);
+// bool b = IRadioSoundClient::connectI(i);
+ bool c = IRadioClient::connectI(i);
+
+ return a || /*b ||*/ c;
+}
+
+bool StandardScanDialog::disconnectI (Interface *i)
+{
+ bool a = ISeekRadioClient::disconnectI(i);
+// bool b = IRadioSoundClient::disconnectI(i);
+ bool c = IRadioClient::disconnectI(i);
+
+ return a || /*b ||*/ c;
+}
+
+
+void StandardScanDialog::start()
+{
+ if (!m_running) {
+ m_running = true;
+ m_stations.all().clear();
+ m_startTime = QDateTime::currentDateTime();
+ m_oldPowerOn = queryIsPowerOn();
+ m_oldStation = queryCurrentStation().copy();
+ sendToBeginning();
+ m_ignorePower = true;
+ sendPowerOn();
+ m_ignorePower = false;
+ sendStartSeekUp();
+ }
+}
+
+
+void StandardScanDialog::stop()
+{
+ if (m_running) {
+ m_running = false;
+
+ sendStopSeek();
+ if (!m_oldPowerOn) sendPowerOff();
+ sendActivateStation(*m_oldStation);
+ delete m_oldStation;
+ m_oldStation = NULL;
+ }
+}
+
+
+bool StandardScanDialog::noticePowerChanged(bool on)
+{
+ if (!on && !m_ignorePower) {
+ stop();
+ }
+ return true;
+}
+
+bool StandardScanDialog::noticeSeekStarted (bool /*up*/)
+{
+ return false;
+}
+
+bool StandardScanDialog::noticeSeekFinished (const RadioStation &, bool goodQuality)
+{
+ if (goodQuality) {
+ ++m_count;
+ QString s;
+ s.setNum(m_count);
+
+ RadioStation *st = queryCurrentStation().copy();
+ if (st->name().isNull()) {
+ st->setName(i18n("new station ") + s);
+ st->setShortName(s);
+ st->generateNewStationID();
+ }
+
+ int oldcount = m_stations.count();
+ m_stations.all().append(st);
+
+ if (oldcount != m_stations.count()) {
+ } else {
+ --m_count;
+ }
+ delete st;
+ }
+
+ if (rint(queryProgress() * 1000) < 1000) { // round to 4 digits
+ if (m_running) sendStartSeekUp();
+ }
+ return true;
+}
+
+bool StandardScanDialog::noticeSeekStopped ()
+{
+ if (rint(queryProgress() * 1000) >= 1000) { // round to 4 digits
+ buttonCancel->setText(i18n("&Done"));
+ stop();
+ }
+ return true;
+}
+
+
+bool StandardScanDialog::noticeProgress (float f)
+{
+ if (!m_running) return true;
+
+ progressBar->setProgress((int)rint(f * 100));
+
+ if (m_running) {
+ int secs = m_startTime.secsTo(QDateTime::currentDateTime());
+ int ms = (int)rint((1 - f) * (float) secs / f * 1000.0);
+
+ if (ms > 0 && ms < 86400000) // max one day
+ labelTime->setText(i18n("<p align=\"right\">%1</p>").arg(QTime(0,0).addMSecs(ms).toString()));
+ else
+ labelTime->setText(i18n("unknown"));
+
+ } else {
+ labelTime->setText(i18n("unknown"));
+ }
+ return true;
+}
+
+
+void StandardScanDialog::slotCancelDone()
+{
+ if (m_running) {
+ stop();
+ reject();
+ } else {
+ accept();
+ }
+}
+
+
+
+#include "standardscandialog.moc"
diff --git a/kradio3/src/station-drag-object.cpp b/kradio3/src/station-drag-object.cpp
new file mode 100644
index 0000000..f951d54
--- /dev/null
+++ b/kradio3/src/station-drag-object.cpp
@@ -0,0 +1,93 @@
+/***************************************************************************
+ station-drag-object.cpp - description
+ -------------------
+ begin : Sun Aug 28 2005
+ copyright : (C) 2005 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "include/station-drag-object.h"
+#include "include/errorlog-interfaces.h"
+#include <klocale.h>
+
+#define STATION_LIST_MIME_TYPE "multimedia/kradio-stationids"
+
+StationDragObject::StationDragObject(const QStringList &stationIDs, QWidget *dragSource, const char * name)
+ : QStoredDrag(STATION_LIST_MIME_TYPE, dragSource, name)
+{
+ setStations(stationIDs);
+}
+
+StationDragObject::StationDragObject(QWidget *dragSource, const char * name)
+ : QStoredDrag(STATION_LIST_MIME_TYPE, dragSource, name)
+{
+}
+
+
+StationDragObject::~StationDragObject()
+{
+}
+
+const char *StationDragObject::format(int i) const
+{
+ if (i == 0)
+ return STATION_LIST_MIME_TYPE;
+ else
+ return NULL;
+}
+
+
+void StationDragObject::setStations(const QStringList &stationIDs)
+{
+ QByteArray tmp;
+ int pos = 0;
+ for (QValueListConstIterator<QString> it=stationIDs.begin(); it != stationIDs.end(); ++it) {
+ const QString &s = *it;
+ tmp.resize(tmp.size()+s.length() + 1);
+ for (unsigned int k = 0; k < s.length(); ++k) {
+ tmp[pos++] = s[k].latin1();
+ }
+ tmp[pos++] = 0;
+ }
+ setEncodedData(tmp);
+}
+
+
+bool StationDragObject::canDecode (const QMimeSource *e)
+{
+ IErrorLogClient::staticLogDebug(e->format(0));
+ bool retval = (e && e->format(0) == QString(STATION_LIST_MIME_TYPE));
+ if (retval)
+ IErrorLogClient::staticLogDebug(i18n("canDecode = true"));
+ return retval;
+}
+
+
+bool StationDragObject::decode (const QMimeSource *e, QStringList &stationIDs)
+{
+ stationIDs.clear();
+ if (canDecode(e)) {
+ const QByteArray &tmp = e->encodedData(e->format(0));
+ QString str = "";
+ for (unsigned int pos = 0; pos < tmp.size(); ++pos) {
+ if (tmp[pos]) {
+ str.append(tmp[pos]);
+ } else {
+ stationIDs.append(str);
+ str = "";
+ }
+ }
+ }
+ return true;
+}
+
+
diff --git a/kradio3/src/stationlist.cpp b/kradio3/src/stationlist.cpp
new file mode 100644
index 0000000..f0f0ace
--- /dev/null
+++ b/kradio3/src/stationlist.cpp
@@ -0,0 +1,494 @@
+/***************************************************************************
+ stationlist.cpp - description
+ -------------------
+ begin : Sat March 29 2003
+ copyright : (C) 2003 by Klas Kalass, Ernst Martin Witte
+ email : klas@kde.org, witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "include/radiostation.h"
+#include "include/errorlog-interfaces.h"
+#include "include/utils.h"
+#include "include/stationlist.h"
+#include "include/stationlistxmlhandler.h"
+#include "include/kradioversion.h"
+
+#include <qstring.h>
+#include <qfile.h>
+#include <qiodevice.h>
+#include <qmessagebox.h>
+#include <kio/netaccess.h>
+#include <ktempfile.h>
+#include <klocale.h>
+
+//////////////////////////////////////////////////////////////////////////////
+
+const StationList emptyStationList;
+
+//////////////////////////////////////////////////////////////////////////////
+
+RawStationList::RawStationList ()
+{
+ setAutoDelete(true);
+}
+
+
+RawStationList::RawStationList (const RawStationList &sl)
+ : QPtrList<RadioStation>(sl)
+{
+ setAutoDelete(true);
+}
+
+
+RawStationList::~RawStationList ()
+{
+ clear();
+}
+
+
+QPtrCollection::Item RawStationList::newItem (QPtrCollection::Item s)
+{
+ if (s)
+ return ((RadioStation*)s)->copy();
+ else
+ return NULL;
+}
+
+
+void RawStationList::deleteItem (QPtrCollection::Item s)
+{
+ if (autoDelete())
+ delete (RadioStation*)s;
+}
+
+
+int RawStationList::compareItems(QPtrCollection::Item a, QPtrCollection::Item b)
+{
+ if (!a && !b)
+ return 0;
+
+ if (!a)
+ return -1;
+
+ if (!b)
+ return 1;
+
+ return ((RadioStation*)a)->compare(*(RadioStation*)b);
+}
+
+
+bool RawStationList::insert (uint index, const RadioStation * item )
+{
+ if (!item) return false;
+ RadioStation *rs = &stationWithID(item->stationID());
+ bool r = true;
+ if (rs != item) {
+ r = BaseClass::insert(index, item);
+ removeRef(rs);
+ }
+ return r;
+}
+
+
+bool RawStationList::insert (const RadioStation * item )
+{
+ if (!item) return false;
+ int idx = idxWithID(item->stationID());
+ if (idx >= 0) {
+ return replace(idx, item);
+ } else {
+ append(item);
+ return true;
+ }
+}
+
+
+void RawStationList::inSort ( const RadioStation * item )
+{
+ if (!item) return;
+ RadioStation *rs = &stationWithID(item->stationID());
+ if (rs != item) {
+ removeRef(rs);
+ }
+ BaseClass::inSort(item);
+}
+
+
+void RawStationList::prepend ( const RadioStation * item )
+{
+ if (!item) return;
+ RadioStation *rs = &stationWithID(item->stationID());
+ if (rs != item) {
+ removeRef(rs);
+ }
+ BaseClass::prepend(item);
+}
+
+
+void RawStationList::append ( const RadioStation * item )
+{
+ if (!item) return;
+ RadioStation *rs = &stationWithID(item->stationID());
+ if (rs != item) {
+ removeRef(rs);
+ }
+ BaseClass::append(item);
+}
+
+
+bool RawStationList::replace ( uint index, const RadioStation * item )
+{
+ bool r = true;
+ RadioStation *rs = &stationWithID(item->stationID());
+ r = BaseClass::replace(index, item);
+ if (rs != item) {
+ BaseClass::removeRef(rs);
+ }
+ return r;
+}
+
+
+const RadioStation &RawStationList::stationWithID(const QString &sid) const
+{
+ Iterator it(*this);
+ for (; const RadioStation *s = it.current(); ++it) {
+ if (s->stationID() == sid)
+ return *s;
+ }
+ return (RadioStation &) undefinedRadioStation;
+}
+
+
+RadioStation &RawStationList::stationWithID(const QString &sid)
+{
+ Iterator it(*this);
+ for (; RadioStation *s = it.current(); ++it) {
+ if (s->stationID() == sid)
+ return *s;
+ }
+ return (RadioStation &) undefinedRadioStation;
+}
+
+
+
+int RawStationList::idxWithID(const QString &sid) const
+{
+ int i = 0;
+ Iterator it(*this);
+ for (; const RadioStation *s = it.current(); ++it, ++i) {
+ if (s->stationID() == sid)
+ return i;
+ }
+ return -1;
+}
+
+
+bool RawStationList::operator == (const RawStationList &l) const
+{
+ QPtrListIterator<RadioStation> it1(*this);
+ QPtrListIterator<RadioStation> it2(l);
+ if (count() != l.count())
+ return false;
+ for (; it1.current() && it2.current(); ++it1, ++it2) {
+ if (**it1 != **it2)
+ return false;
+ }
+ return true;
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
+
+StationList::StationList()
+{
+ m_all.setAutoDelete(true);
+}
+
+StationList::StationList(const StationList &sl)
+ : m_all (sl.m_all),
+ m_metaData (sl.m_metaData)
+{
+ m_all.setAutoDelete(true);
+}
+
+
+StationList::~StationList()
+{
+}
+
+
+void StationList::merge(const StationList & other)
+{
+ // merge meta information: honor merge in comment
+
+ StationListMetaData const & metaData = other.metaData();
+
+ if (! m_metaData.comment.isEmpty())
+ m_metaData.comment += "\n";
+
+ m_metaData.lastChange = QDateTime::currentDateTime();
+
+ if (!metaData.maintainer.isEmpty())
+ m_metaData.maintainer += (count() ? QString(" / ") : QString::null) + metaData.maintainer;
+
+ if (!metaData.country.isEmpty())
+ m_metaData.country += (count() ? QString(" / ") : QString::null) + metaData.country;
+
+ if (!metaData.city.isEmpty())
+ m_metaData.city = (count() ? QString(" / ") : QString::null) + metaData.city;
+
+ if (!metaData.media.isEmpty())
+ m_metaData.media += (count() ? QString(" / ") : QString::null) + metaData.media;
+
+ if (!metaData.comment.isEmpty())
+ m_metaData.comment += (count() ? QString(" / ") : QString::null) + metaData.comment;
+ if (count() && other.count())
+ m_metaData.comment += " " + i18n("Contains merged Data");
+
+
+ // merge stations
+
+ QPtrListIterator<RadioStation> it(other.all());
+ for (RadioStation *s = it.current(); s; s = ++it) {
+ m_all.insert(s);
+ }
+}
+
+
+
+StationList &StationList::operator = (const StationList &other)
+{
+ m_metaData = other.metaData();
+ m_all = other.all();
+ return *this;
+}
+
+
+const RadioStation &StationList::at(int idx) const
+{
+ RawStationList::Iterator it(m_all);
+ it += idx;
+ return it.current() ? *it.current() : (const RadioStation &) undefinedRadioStation;
+}
+
+
+RadioStation &StationList::at(int idx)
+{
+ RawStationList::Iterator it(m_all);
+ it += idx;
+ return it.current() ? *it.current() : (RadioStation &) undefinedRadioStation;
+}
+
+
+const RadioStation &StationList::stationWithID(const QString &sid) const
+{
+ return m_all.stationWithID(sid);
+}
+
+
+RadioStation &StationList::stationWithID(const QString &sid)
+{
+ return m_all.stationWithID(sid);
+}
+
+
+bool StationList::readXML (const QString &dat, const IErrorLogClient &logger, bool enableMessageBox)
+{
+ // FIXME: TODO: error handling
+ QXmlInputSource source;
+ source.setData(dat);
+ QXmlSimpleReader reader;
+ StationListXmlHandler handler(logger);
+ reader.setContentHandler (&handler);
+ if (reader.parse(source)) {
+ if (handler.wasCompatMode() && enableMessageBox) {
+ QMessageBox::information(NULL, "KRadio",
+ i18n("Probably an old station preset file was read.\n"
+ "You have to rebuild your station selections for "
+ "the quickbar and the docking menu.")
+ );
+ }
+
+ m_all = handler.getStations();
+ m_metaData = handler.getMetaData();
+ return true;
+ } else {
+ logger.logError("StationList::readXML: " + i18n("parsing failed"));
+
+ if (enableMessageBox) {
+ QMessageBox::warning(NULL, "KRadio",
+ i18n("Parsing the station preset file failed.\n"
+ "See console output for more details."));
+ }
+ return false;
+ }
+}
+
+
+bool StationList::readXML (const KURL &url, const IErrorLogClient &logger, bool enableMessageBox)
+{
+ QString tmpfile;
+ if (!KIO::NetAccess::download(url, tmpfile, NULL)) {
+ if (enableMessageBox) {
+ logger.logError("StationList::readXML: " +
+ i18n("error downloading preset file %1").arg(url.url()));
+ QMessageBox::warning(NULL, "KRadio",
+ i18n("Download of the station preset file at %1 failed.")
+ .arg(url.url()));
+ } else {
+ logger.logWarning("StationList::readXML: " +
+ i18n("error downloading preset file %1").arg(url.url()));
+ }
+ return false;
+ }
+
+ logger.logDebug("StationList::readXML: " +
+ i18n("temporary file: ") + tmpfile);
+
+ QFile presetFile (tmpfile);
+
+ if (! presetFile.open(IO_ReadOnly)) {
+ logger.logError("StationList::readXML: " +
+ i18n("error opening preset file %1").arg(tmpfile));
+ if (enableMessageBox) {
+ QMessageBox::warning(NULL, "KRadio",
+ i18n("Opening of the station preset file at %1 failed.")
+ .arg(tmpfile));
+ }
+ return false;
+ }
+
+ QString xmlData;
+
+ // make sure that qtextstream is gone when we close presetFile
+ QString tmp;
+ {
+ QTextStream ins(&presetFile);
+ tmp = ins.read();
+ }
+
+ presetFile.reset();
+
+ // preset file written with kradio <= 0.2.x
+ if (tmp.find("<format>") < 0) {
+ logger.logInfo(i18n("Old Preset File Format detected"));
+ QTextStream ins(&presetFile);
+ ins.setEncoding(QTextStream::Locale);
+ xmlData = ins.read();
+ }
+ // preset file written with kradio >= 0.3.0
+ else {
+ QXmlInputSource tmp(&presetFile);
+ xmlData = tmp.data();
+ }
+
+ presetFile.close();
+
+ KIO::NetAccess::removeTempFile(tmpfile);
+
+ return readXML(xmlData, logger, enableMessageBox);
+}
+
+
+QString StationList::writeXML (const IErrorLogClient &/*logger*/) const
+{
+ QString data = QString::null;
+
+ // write station list
+
+ QString t = "\t";
+ QString tt = "\t\t";
+ QString ttt = "\t\t\t";
+
+ data += xmlOpenTag(KRadioConfigElement) +
+ t + xmlOpenTag(StationListElement) +
+ tt + xmlTag(StationListFormat, STATION_LIST_FORMAT) +
+ tt + xmlOpenTag(StationListInfo) +
+ ttt + xmlTag(StationListInfoCreator, "kradio-" KRADIO_VERSION) +
+ ttt + xmlTag(StationListInfoMaintainer, m_metaData.maintainer) +
+ ttt + xmlTag(StationListInfoChanged, m_metaData.lastChange.toString(Qt::ISODate)) +
+ ttt + xmlTag(StationListInfoCountry, m_metaData.country) +
+ ttt + xmlTag(StationListInfoCity, m_metaData.city) +
+ ttt + xmlTag(StationListInfoMedia, m_metaData.media) +
+ ttt + xmlTag(StationListInfoComments, m_metaData.comment) +
+ tt + xmlCloseTag (StationListInfo);
+
+ for (RawStationList::Iterator it(m_all); it.current(); ++it) {
+ RadioStation *s = it.current();
+
+ data += tt + xmlOpenTag (s->getClassName());
+
+ QStringList properties = s->getPropertyNames();
+ QStringList::iterator end = properties.end();
+ for (QStringList::iterator sit = properties.begin(); sit != end; ++sit) {
+ data += ttt + xmlTag (*sit, s->getProperty(*sit));
+ }
+ data += tt + xmlCloseTag(s->getClassName());
+
+ }
+
+ data += t + xmlCloseTag(StationListElement) +
+ xmlCloseTag(KRadioConfigElement);
+
+ return data;
+}
+
+
+bool StationList::writeXML (const KURL &url, const IErrorLogClient &logger, bool enableMessageBox) const
+{
+ KTempFile tmpFile;
+ tmpFile.setAutoDelete(true);
+ QFile *outf = tmpFile.file();
+
+ QTextStream outs(outf);
+ outs.setEncoding(QTextStream::UnicodeUTF8);
+ outs << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" << endl;
+
+ QString output = writeXML(logger);
+
+ outs << output;
+ if (outf->status() != IO_Ok) {
+ logger.logError("StationList::writeXML: " +
+ i18n("error writing to tempfile %1").arg(tmpFile.name()));
+ if (enableMessageBox) {
+ QMessageBox::warning(NULL, "KRadio",
+ i18n("Writing station preset file %1 failed.")
+ .arg(tmpFile.name()));
+ }
+ return false;
+ }
+
+ // close hopefully flushes buffers ;)
+ outf->close();
+
+ if (count() <= 1) {
+ logger.logWarning("StationList::writeXML: " +
+ i18n("uploading preset file %1: ").arg(url.url()));
+ logger.logWarning("StationList::writeXML: " +
+ i18n("something strange happend, station list has only %1 entries. Writing station preset file skipped").arg(count()));
+ } else {
+
+ if (!KIO::NetAccess::upload(tmpFile.name(), url, NULL)) {
+ logger.logError("StationList::writeXML: " +
+ i18n("error uploading preset file %1").arg(url.url()));
+
+ if (enableMessageBox) {
+ QMessageBox::warning(NULL, "KRadio",
+ i18n("Upload of station preset file to %1 failed.")
+ .arg(url.url()));
+ }
+ return false;
+ }
+ }
+
+ return true;
+}
diff --git a/kradio3/src/stationlistxmlhandler.cpp b/kradio3/src/stationlistxmlhandler.cpp
new file mode 100644
index 0000000..71fb78e
--- /dev/null
+++ b/kradio3/src/stationlistxmlhandler.cpp
@@ -0,0 +1,230 @@
+/***************************************************************************
+ StationListXmlHandler.cpp - description
+ -------------------
+ begin : Son Jan 12 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "include/stationlistxmlhandler.h"
+#include <klocale.h>
+
+const char *KRadioConfigElement = "kradiorc";
+
+const char *StationListElement = "stationlist";
+const char *compatStationElement = "station";
+
+const char *StationListInfo = "info";
+const char *StationListInfoMaintainer = "maintainer";
+const char *StationListInfoCountry = "country";
+const char *StationListInfoCity = "city";
+const char *StationListInfoMedia = "media";
+const char *StationListInfoComments = "comments";
+const char *StationListInfoChanged = "changed";
+const char *StationListInfoCreator = "creator";
+
+const char *StationListFormat = "format";
+
+
+StationListXmlHandler::StationListXmlHandler (const IErrorLogClient &logger)
+ : m_logger(logger),
+ m_compatMode (false)
+{
+ m_newStation = NULL;
+}
+
+
+StationListXmlHandler::~StationListXmlHandler ()
+{
+}
+
+
+bool StationListXmlHandler::startDocument ()
+{
+ m_status.clear();
+
+ m_stations.clear();
+ clearNewStation();
+
+ return true;
+}
+
+
+
+#define START_ELEMENT_ERROR m_logger.logError("StationListXmlHandler::startElement: " + \
+ i18n("misplaced element %1") \
+ .arg(qname));\
+ return false;
+
+bool StationListXmlHandler::startElement (const QString &/*ns*/, const QString &/*localname*/,
+ const QString& _qname, const QXmlAttributes &)
+{
+ QString qname = _qname;
+ if (qname == KRadioConfigElement) {
+ if (m_status.size()) { START_ELEMENT_ERROR }
+
+ // station list
+ } else if (qname == StationListElement) {
+ if (!m_status.size() || m_status.back() != KRadioConfigElement) { START_ELEMENT_ERROR }
+ m_stations.clear();
+ clearNewStation();
+
+ } else if (qname == StationListFormat) {
+ if (!m_status.size() || m_status.back() != StationListElement) { START_ELEMENT_ERROR }
+
+ } else if (qname == StationListInfo) {
+ if (!m_status.size() || m_status.back() != StationListElement) { START_ELEMENT_ERROR }
+
+ } else if (qname == StationListInfoMaintainer ||
+ qname == StationListInfoCountry ||
+ qname == StationListInfoCity ||
+ qname == StationListInfoMedia ||
+ qname == StationListInfoComments ||
+ qname == StationListInfoChanged ||
+ qname == StationListInfoCreator
+ )
+ {
+ if (!m_status.size() || m_status.back() != StationListInfo) { START_ELEMENT_ERROR }
+
+ } else if (!m_newStation && m_status.size() && m_status.back() == StationListElement) {
+
+ if (qname == compatStationElement) {
+ qname = "FrequencyRadioStation";
+ m_compatMode = true;
+ }
+
+ const RadioStation *x = RadioStation::getStationClass(qname);
+ m_newStation = x ? x->copy() : NULL;
+
+ if (!m_newStation) { START_ELEMENT_ERROR }
+
+ } else if (m_newStation && m_status.size() && m_status.back() == m_newStation->getClassName()) {
+
+ // check done later when characters arrive
+
+ } else { // unknown
+ m_logger.logWarning("StationListXmlHandler::startElement: " +
+ i18n("unknown or unexpected element %1").arg(qname));
+ }
+
+ m_status.push_back(qname);
+ return true;
+}
+
+
+bool StationListXmlHandler::endElement (const QString &/*ns*/, const QString &/*localname*/,
+ const QString &_qname)
+{
+ QString qname = _qname;
+ if (qname == compatStationElement) {
+ qname = "FrequencyRadioStation";
+ m_compatMode = true;
+ }
+
+ if (m_status.size() && m_status.back() == qname) {
+
+ if (m_newStation && qname == m_newStation->getClassName()) {
+ m_stations.append(m_newStation);
+ clearNewStation();
+ }
+
+ m_status.pop_back();
+
+ } else {
+ if (m_status.size()) {
+ m_logger.logError("StationListXmlHandler::endElement: " +
+ i18n("expected element %1, but found %2")
+ .arg(m_status.back()).arg(qname));
+ } else {
+ m_logger.logError("StationListXmlHandler::endElement: " +
+ i18n("unexpected element %1").arg(qname));
+ }
+ }
+ return true;
+}
+
+
+#define CHARACTERS_ERROR m_logger.logError("StationListXmlHandler::characters: " + \
+ i18n("invalid data for element %1") \
+ .arg(stat)); \
+ return false;
+
+bool StationListXmlHandler::characters (const QString &ch)
+{
+ QString stat = m_status.back();
+ QString str = ch.stripWhiteSpace();
+
+ // Station parsing
+
+ // information on list
+ if (stat == StationListFormat) {
+
+ if (str != STATION_LIST_FORMAT) {
+ m_logger.logError(i18n("found a station list with unknown format %1").arg(str));
+ return false;
+ }
+
+ } else if (stat == StationListInfo) {
+
+ } else if (stat == StationListInfoMaintainer) {
+
+ m_metaData.maintainer = str;
+
+ } else if (stat == StationListInfoCountry) {
+
+ m_metaData.country = str;
+
+ } else if (stat == StationListInfoCity) {
+
+ m_metaData.city = str;
+
+ } else if (stat == StationListInfoMedia) {
+
+ m_metaData.media = str;
+
+ } else if (stat == StationListInfoComments) {
+
+ m_metaData.comment = str;
+
+ } else if (stat == StationListInfoChanged) {
+
+ m_metaData.lastChange = QDateTime::fromString(str, Qt::ISODate);
+
+ } else if (stat == StationListInfoCreator) {
+
+ // do nothing
+
+ // stations
+
+ } else if (m_newStation && m_newStation->getClassName() != stat) {
+
+ if (!m_newStation->setProperty(stat, str)) {
+ m_logger.logWarning("StationListXmlHandler::characters: " +
+ i18n("unknown property %1 for class %2")
+ .arg(stat)
+ .arg(m_newStation->getClassName()));
+ }
+
+ } else if (str.length()) {
+ m_logger.logError("StationListXmlHandler::characters: " +
+ i18n("characters ignored for element %1").arg(stat));
+ }
+ return true;
+}
+
+
+void StationListXmlHandler::clearNewStation()
+{
+ if (m_newStation)
+ delete m_newStation;
+ m_newStation = NULL;
+}
diff --git a/kradio3/src/stationselection_interfaces.cpp b/kradio3/src/stationselection_interfaces.cpp
new file mode 100644
index 0000000..b8d6fe9
--- /dev/null
+++ b/kradio3/src/stationselection_interfaces.cpp
@@ -0,0 +1,47 @@
+/***************************************************************************
+ stationselection_interfaces.cpp - description
+ -------------------
+ begin : Son Aug 3 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "include/stationselection_interfaces.h"
+#include <qstringlist.h>
+
+IF_IMPL_SENDER ( IStationSelection::notifyStationSelectionChanged(const QStringList &sl),
+ noticeStationSelectionChanged(sl)
+ )
+
+IF_IMPL_SENDER ( IStationSelectionClient::sendStationSelection(const QStringList &sl),
+ setStationSelection(sl)
+ )
+
+static QStringList IStationSelectionClient_emptyList;
+
+IF_IMPL_QUERY ( const QStringList & IStationSelectionClient::queryStationSelection(),
+ getStationSelection(),
+ IStationSelectionClient_emptyList
+ )
+
+
+void IStationSelectionClient::noticeConnectedI (cmplInterface *, bool /*pointer_valid*/)
+{
+ noticeStationSelectionChanged(queryStationSelection());
+}
+
+
+void IStationSelectionClient::noticeDisconnectedI (cmplInterface *, bool /*pointer_valid*/)
+{
+ noticeStationSelectionChanged(queryStationSelection());
+}
+
diff --git a/kradio3/src/stationselector-ui.ui b/kradio3/src/stationselector-ui.ui
new file mode 100644
index 0000000..d8adf16
--- /dev/null
+++ b/kradio3/src/stationselector-ui.ui
@@ -0,0 +1,173 @@
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
+<class>StationSelectorUI</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>StationSelectorUI</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>277</width>
+ <height>109</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>StationSelectorUI</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <widget class="QLabel" row="0" column="2">
+ <property name="name">
+ <cstring>labelSelected</cstring>
+ </property>
+ <property name="text">
+ <string>Selected Stations</string>
+ </property>
+ </widget>
+ <widget class="RadioStationListView" row="1" column="0">
+ <property name="name">
+ <cstring>listAvailable</cstring>
+ </property>
+ <property name="acceptDrops">
+ <bool>true</bool>
+ </property>
+ </widget>
+ <widget class="RadioStationListView" row="1" column="2">
+ <property name="name">
+ <cstring>listSelected</cstring>
+ </property>
+ <property name="acceptDrops">
+ <bool>true</bool>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget" row="1" column="1">
+ <property name="name">
+ <cstring>layout1</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="KPushButton">
+ <property name="name">
+ <cstring>buttonToRight</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>1</hsizetype>
+ <vsizetype>1</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="iconSet">
+ <iconset>"2rightarrow"</iconset>
+ </property>
+ </widget>
+ <widget class="KPushButton">
+ <property name="name">
+ <cstring>buttonToLeft</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>1</hsizetype>
+ <vsizetype>1</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="iconSet">
+ <iconset>"2leftarrow"</iconset>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer1</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </vbox>
+ </widget>
+ <widget class="QLabel" row="0" column="0">
+ <property name="name">
+ <cstring>labelAvailable</cstring>
+ </property>
+ <property name="text">
+ <string>Available Stations</string>
+ </property>
+ </widget>
+ <spacer row="0" column="1">
+ <property name="name">
+ <cstring>spacer2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Minimum</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>10</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </grid>
+</widget>
+<customwidgets>
+ <customwidget>
+ <class>RadioStationListView</class>
+ <header location="local">radiostation-listview.h</header>
+ <sizehint>
+ <width>-1</width>
+ <height>-1</height>
+ </sizehint>
+ <container>0</container>
+ <sizepolicy>
+ <hordata>5</hordata>
+ <verdata>5</verdata>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ <pixmap>image0</pixmap>
+ </customwidget>
+</customwidgets>
+<images>
+ <image name="image0">
+ <data format="XBM.GZ" length="79">789c534e494dcbcc4b554829cdcdad8c2fcf4c29c95030e0524611cd48cd4ccf28010a1797249664262b2467241641a592324b8aa363156c15aab914146aadb90067111b1f</data>
+ </image>
+</images>
+<includes>
+ <include location="global" impldecl="in implementation">kiconloader.h</include>
+</includes>
+<pixmapfunction>SmallIconSet</pixmapfunction>
+<layoutdefaults spacing="6" margin="11"/>
+<includehints>
+ <includehint>radiostation-listview.h</includehint>
+ <includehint>kpushbutton.h</includehint>
+</includehints>
+</UI>
diff --git a/kradio3/src/stationselector.cpp b/kradio3/src/stationselector.cpp
new file mode 100644
index 0000000..635d4da
--- /dev/null
+++ b/kradio3/src/stationselector.cpp
@@ -0,0 +1,321 @@
+/***************************************************************************
+ stationselector.cpp - description
+ -------------------
+ begin : Son Aug 3 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+using namespace std;
+
+#include <kpushbutton.h>
+#include <algorithm>
+
+#include "include/stationlist.h"
+#include "include/radiostation.h"
+
+#include "include/stationselector.h"
+#include "include/radiostation-listview.h"
+
+StationSelector::StationSelector (QWidget *parent)
+ : StationSelectorUI(parent),
+ m_dirty(true)
+{
+ QObject::connect(buttonToLeft, SIGNAL(clicked()), this, SLOT(slotButtonToLeft()));
+ QObject::connect(buttonToRight, SIGNAL(clicked()), this, SLOT(slotButtonToRight()));
+ QObject::connect(listAvailable, SIGNAL(sigStationsReceived(const QStringList&)), this, SLOT(slotMoveToLeft(const QStringList&)));
+ QObject::connect(listSelected, SIGNAL(sigStationsReceived(const QStringList&)), this, SLOT(slotMoveToRight(const QStringList&)));
+
+ listSelected->setSelectionMode(QListView::Extended);
+ listAvailable->setSelectionMode(QListView::Extended);
+}
+
+
+StationSelector::~StationSelector ()
+{
+}
+
+
+bool StationSelector::connectI(Interface *i)
+{
+ bool a = IStationSelectionClient::connectI(i);
+ bool b = IRadioClient::connectI(i);
+ return a || b;
+}
+
+
+bool StationSelector::disconnectI(Interface *i)
+{
+ bool a = IStationSelectionClient::disconnectI(i);
+ bool b = IRadioClient::disconnectI(i);
+ return a || b;
+}
+
+
+bool StationSelector::noticeStationSelectionChanged(const QStringList &sl)
+{
+ m_stationIDsNotDisplayed.clear();
+ m_stationIDsSelected.clear();
+ m_stationIDsAvailable.clear();
+
+ for (unsigned int i = 0; i < m_stationIDsAll.count(); ++i) {
+ if (sl.contains(m_stationIDsAll[i])) {
+ m_stationIDsSelected.append(m_stationIDsAll[i]);
+ } else {
+ m_stationIDsAvailable.append(m_stationIDsAll[i]);
+ }
+ }
+ for (unsigned int i = 0; i < sl.count(); ++i) {
+ if (!m_stationIDsAll.contains(sl[i]))
+ m_stationIDsNotDisplayed.append(sl[i]);
+ }
+ updateListViews();
+ m_dirty = false;
+ return true;
+}
+
+
+bool StationSelector::noticeStationsChanged(const StationList &sl)
+{
+ slotSetDirty();
+
+ listAvailable->clear();
+ listSelected->clear();
+
+ m_stationIDsAvailable.clear();
+ m_stationIDsAll.clear();
+
+ for (unsigned int i = 0; i < m_stationIDsSelected.count(); ++i)
+ m_stationIDsNotDisplayed.append(m_stationIDsSelected[i]);
+
+ m_stationIDsSelected.clear();
+
+ for (RawStationList::Iterator i(sl.all()); i.current(); ++i) {
+ const QString &id = i.current()->stationID();
+
+ m_stationIDsAll.append(id);
+ if (m_stationIDsNotDisplayed.contains(id)) {
+ m_stationIDsNotDisplayed.remove(id);
+ m_stationIDsSelected.append(id);
+ } else {
+ m_stationIDsAvailable.append(id);
+ }
+ }
+
+ updateListViews();
+ return true;
+}
+
+
+void StationSelector::slotButtonToLeft()
+{
+ slotSetDirty();
+ listAvailable->clearSelection();
+ QListViewItem *item = listSelected->firstChild();
+ int idx_from = 0;
+ while (item) {
+ QListViewItem *next_item = item->nextSibling();
+
+ if (item->isSelected()) {
+
+ moveItem (listSelected, m_stationIDsSelected,
+ item, idx_from,
+ listAvailable, m_stationIDsAvailable);
+
+ --idx_from;
+ }
+ item = next_item;
+ ++idx_from;
+ }
+}
+
+
+void StationSelector::slotButtonToRight()
+{
+ slotSetDirty();
+ listSelected->clearSelection();
+ QListViewItem *item = listAvailable->firstChild();
+ int idx_from = 0;
+ while (item) {
+ QListViewItem *next_item = item->nextSibling();
+
+ if (item->isSelected()) {
+
+ moveItem (listAvailable, m_stationIDsAvailable,
+ item, idx_from,
+ listSelected, m_stationIDsSelected);
+
+ --idx_from;
+ }
+ item = next_item;
+ ++idx_from;
+ }
+}
+
+
+void StationSelector::slotMoveToRight(const QStringList &list)
+{
+ slotSetDirty();
+ listSelected->clearSelection();
+ QListViewItem *item = listAvailable->firstChild();
+ int idx_from = 0;
+ while (item) {
+ QListViewItem *next_item = item->nextSibling();
+
+ if (list.contains(m_stationIDsAvailable[idx_from])) {
+
+ moveItem (listAvailable, m_stationIDsAvailable,
+ item, idx_from,
+ listSelected, m_stationIDsSelected);
+
+ --idx_from;
+ }
+ item = next_item;
+ ++idx_from;
+ }
+}
+
+
+void StationSelector::slotMoveToLeft(const QStringList &list)
+{
+ slotSetDirty();
+ listAvailable->clearSelection();
+ QListViewItem *item = listSelected->firstChild();
+ int idx_from = 0;
+ while (item) {
+ QListViewItem *next_item = item->nextSibling();
+
+ if (list.contains(m_stationIDsSelected[idx_from])) {
+
+ moveItem (listSelected, m_stationIDsSelected,
+ item, idx_from,
+ listAvailable, m_stationIDsAvailable);
+
+ --idx_from;
+ }
+ item = next_item;
+ ++idx_from;
+ }
+}
+
+
+void StationSelector::moveItem(
+ RadioStationListView *fromListView,
+ QStringList &fromIDList,
+ QListViewItem *item,
+ int idx_from,
+ RadioStationListView *toListView,
+ QStringList &toIDList
+)
+{
+ fromListView->takeItem(item, idx_from);
+
+ QString id = fromIDList[idx_from];
+ fromIDList.remove(fromIDList.at(idx_from));
+
+ unsigned int idx_to = 0,
+ idx_all = 0;
+ bool found = false;
+ QListViewItem *item_to = toListView->firstChild(),
+ *prev_item_to = NULL;
+
+ while (idx_all < m_stationIDsAll.count() &&
+ idx_to < toIDList.count())
+ {
+ while (m_stationIDsAll[idx_all] != toIDList[idx_to])
+ {
+ if (m_stationIDsAll[idx_all] == id) {
+ found = true;
+ break;
+ }
+ ++idx_all;
+ }
+ if (found)
+ break;
+
+ prev_item_to = item_to;
+ item_to = item_to->nextSibling();
+ ++idx_to;
+ }
+
+ toIDList.insert(toIDList.at(idx_to), id);
+ toListView->insertItem(item, id, idx_to);
+ if (prev_item_to) {
+ item->moveItem(prev_item_to);
+ } else {
+ item->moveItem(item_to);
+ if (item_to) item_to->moveItem(item);
+ }
+}
+
+
+void StationSelector::updateListViews()
+{
+ listAvailable->clear();
+ listSelected->clear();
+ const StationList &stations = queryStations();
+ const RawStationList &sl = stations.all();
+
+ for (unsigned int i = 0; i < m_stationIDsAvailable.count(); ++i) {
+ QString id = m_stationIDsAvailable[i];
+ listAvailable->appendStation(sl.stationWithID(id), sl.idxWithID(id)+1);
+ }
+ for (unsigned int i = 0; i < m_stationIDsSelected.count(); ++i) {
+ QString id = m_stationIDsSelected[i];
+ listSelected->appendStation(sl.stationWithID(id), sl.idxWithID(id)+1);
+ }
+}
+
+
+void StationSelector::slotOK()
+{
+ if (m_dirty) {
+ QStringList l = m_stationIDsSelected;
+ for (unsigned int i = 0; i < m_stationIDsNotDisplayed.count(); ++i)
+ l.append(m_stationIDsNotDisplayed[i]);
+ sendStationSelection(l);
+ }
+ m_dirty = false;
+}
+
+
+void StationSelector::slotCancel()
+{
+ if (m_dirty) {
+ noticeStationSelectionChanged(queryStationSelection());
+ }
+ m_dirty = false;
+}
+
+
+void StationSelector::saveState (KConfig *cfg) const
+{
+ listSelected->saveState(cfg);
+ listAvailable->saveState(cfg);
+}
+
+
+void StationSelector::restoreState (KConfig *cfg)
+{
+ listSelected->restoreState(cfg);
+ listAvailable->restoreState(cfg);
+}
+
+void StationSelector::slotSetDirty()
+{
+ if (!m_dirty) {
+ m_dirty = true;
+ emit sigDirty();
+ }
+}
+
+#include "stationselector.moc"
diff --git a/kradio3/src/timecontrol_interfaces.cpp b/kradio3/src/timecontrol_interfaces.cpp
new file mode 100644
index 0000000..f33422c
--- /dev/null
+++ b/kradio3/src/timecontrol_interfaces.cpp
@@ -0,0 +1,104 @@
+/***************************************************************************
+ timecontrol_interfaces.cpp - description
+ -------------------
+ begin : Mon Mr 10 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "include/timecontrol_interfaces.h"
+
+static AlarmVector emptyAlarms;
+
+// ITimeControl
+
+IF_IMPL_SENDER ( ITimeControl::notifyAlarmsChanged(const AlarmVector &sl),
+ noticeAlarmsChanged(sl) )
+
+IF_IMPL_SENDER ( ITimeControl::notifyAlarm(const Alarm &a),
+ noticeAlarm(a) )
+
+IF_IMPL_SENDER ( ITimeControl::notifyNextAlarmChanged(const Alarm *a),
+ noticeNextAlarmChanged(a) )
+
+IF_IMPL_SENDER ( ITimeControl::notifyCountdownStarted(const QDateTime &end),
+ noticeCountdownStarted(end) )
+
+IF_IMPL_SENDER ( ITimeControl::notifyCountdownStopped(),
+ noticeCountdownStopped() )
+
+IF_IMPL_SENDER ( ITimeControl::notifyCountdownZero(),
+ noticeCountdownZero() )
+
+IF_IMPL_SENDER ( ITimeControl::notifyCountdownSecondsChanged(int n),
+ noticeCountdownSecondsChanged(n) )
+
+// ITimeControlClient
+
+IF_IMPL_SENDER ( ITimeControlClient::sendAlarms(const AlarmVector &sl),
+ setAlarms(sl) )
+
+IF_IMPL_SENDER ( ITimeControlClient::sendCountdownSeconds(int n),
+ setCountdownSeconds(n) )
+
+IF_IMPL_SENDER ( ITimeControlClient::sendStartCountdown(),
+ startCountdown() )
+
+IF_IMPL_SENDER ( ITimeControlClient::sendStopCountdown(),
+ stopCountdown() )
+
+
+IF_IMPL_QUERY ( QDateTime ITimeControlClient::queryNextAlarmTime (),
+ getNextAlarmTime(),
+ QDateTime() )
+
+IF_IMPL_QUERY ( const Alarm * ITimeControlClient::queryNextAlarm (),
+ getNextAlarm(),
+ NULL )
+
+IF_IMPL_QUERY ( const AlarmVector &ITimeControlClient::queryAlarms (),
+ getAlarms(),
+ emptyAlarms )
+
+IF_IMPL_QUERY ( int ITimeControlClient::queryCountdownSeconds (),
+ getCountdownSeconds(),
+ 30*60 )
+
+IF_IMPL_QUERY ( QDateTime ITimeControlClient::queryCountdownEnd (),
+ getCountdownEnd(),
+ QDateTime() )
+
+
+void ITimeControlClient::noticeConnectedI(cmplInterface *, bool /*pointer_valid*/)
+{
+ noticeAlarmsChanged(queryAlarms());
+ noticeNextAlarmChanged(queryNextAlarm());
+ QDateTime end = queryCountdownEnd();
+ if (end > QDateTime::currentDateTime())
+ noticeCountdownStarted(end);
+ else
+ noticeCountdownStopped();
+}
+
+
+void ITimeControlClient::noticeDisconnectedI(cmplInterface *, bool /*pointer_valid*/)
+{
+ noticeAlarmsChanged(queryAlarms());
+ noticeNextAlarmChanged(queryNextAlarm());
+ QDateTime end = queryCountdownEnd();
+ if (end > QDateTime::currentDateTime())
+ noticeCountdownStarted(end);
+ else
+ noticeCountdownStopped();
+}
+
+
diff --git a/kradio3/src/utils.cpp b/kradio3/src/utils.cpp
new file mode 100644
index 0000000..e54f19d
--- /dev/null
+++ b/kradio3/src/utils.cpp
@@ -0,0 +1,69 @@
+/***************************************************************************
+ utils.cpp - description
+ -------------------
+ begin : Don Jan 9 2003
+ copyright : (C) 2003 by Martin Witte / Frank Schwanz
+ email : witte@kawo1.rwth-aachen.de / schwanz@fh-brandenburg.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include <qregexp.h>
+#include "include/utils.h"
+#include <linux/soundcard.h>
+
+//const char *mixerChannelLabels[] = SOUND_DEVICE_LABELS;
+//const char *mixerChannelNames[] = SOUND_DEVICE_NAMES;
+
+
+QString XMLEscape (const QString &s)
+{
+ QString c = s;
+ c.replace(QRegExp("&"), "&amp;");
+ c.replace(QRegExp("<"), "&lt;");
+ c.replace(QRegExp(">"), "&gt;");
+ c.replace(QRegExp("\""), "&quot;");
+ c.replace(QRegExp("'"), "&apos;");
+ return c;
+}
+
+
+QString xmlOpenTag (const QString &tag, bool nl)
+{
+ return "<" + tag + ">" + (nl ? QString("\n") : QString::null);
+}
+
+
+QString xmlCloseTag (const QString &tag, bool nl)
+{
+ return "</" + tag + ">" + (nl ? QString("\n") : QString::null);
+}
+
+
+QString xmlTag (const QString &tag, int v, bool nl)
+{
+ return xmlTag (tag, QString().setNum(v), nl);
+}
+
+
+QString xmlTag (const QString &tag, float f, bool nl)
+{
+ return xmlTag(tag, QString().setNum(f), nl);
+}
+
+
+QString xmlTag (const QString &tag, const QString &data, bool nl)
+{
+ return xmlOpenTag(tag, false)
+ + XMLEscape(data)
+ + xmlCloseTag(tag, false)
+ + (nl ? QString("\n") : QString::null);
+}
+
diff --git a/kradio3/src/widgetplugins.cpp b/kradio3/src/widgetplugins.cpp
new file mode 100644
index 0000000..434b568
--- /dev/null
+++ b/kradio3/src/widgetplugins.cpp
@@ -0,0 +1,235 @@
+/***************************************************************************
+ widgetplugins.cpp - description
+ -------------------
+ begin : Mi Aug 27 2003
+ copyright : (C) 2003 by Martin Witte
+ email : witte@kawo1.rwth-aachen.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "include/widgetplugins.h"
+#include "include/pluginmanager.h"
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <kwin.h>
+#include <qwidget.h>
+#include <kconfig.h>
+#include <klocale.h>
+
+WidgetPluginBase::WidgetPluginBase(const QString &name, const QString &description)
+ : PluginBase(name, description),
+ m_geoCacheValid(false),
+ m_geoRestoreFlag(false),
+ m_restoreShow(false)
+{
+}
+
+/*
+QWidget *WidgetPluginBase::getWidget()
+{
+ return dynamic_cast<QWidget*>(this);
+}
+
+
+const QWidget *WidgetPluginBase::getWidget() const
+{
+ return dynamic_cast<const QWidget*>(this);
+}
+*/
+
+void WidgetPluginBase::notifyManager(bool shown)
+{
+ if (m_manager)
+ m_manager->noticeWidgetPluginShown(this, shown);
+}
+
+
+bool WidgetPluginBase::isReallyVisible(const QWidget *_w) const
+{
+ const QWidget *w = _w ? _w : getWidget();
+ if (!w) return false;
+ KWin::WindowInfo i = KWin::WindowInfo(w->winId(), 0, 0);
+ return (i.mappingState() == NET::Visible)
+ && w->isVisible()
+ && (i.onAllDesktops() || i.isOnCurrentDesktop());
+}
+
+
+bool WidgetPluginBase::isAnywhereVisible(const QWidget *_w) const
+{
+ const QWidget *w = _w ? _w : getWidget();
+ if (!w) return false;
+ return w->isVisible();
+}
+
+
+void WidgetPluginBase::pShow(bool on)
+{
+ QWidget *w = getWidget();
+ if (!w) return;
+ if (on && !isReallyVisible(w))
+ w->show();
+ else if (!on && !w->isHidden())
+ w->hide();
+}
+
+
+void WidgetPluginBase::pToggleShown()
+{
+ QWidget *w = getWidget();
+ if (!w) return;
+ if (!isReallyVisible(w))
+ w->show();
+ else
+ w->hide();
+}
+
+
+void WidgetPluginBase::pShowOnOrgDesktop()
+{
+ KWin::setMainWindow(getWidget(), 0);
+
+ logDebug(QString("%1::pShowOnOrgDesktop: all: %2, desktop: %3, visible:%4, anywherevisible:%5, cachevalid: %6").arg(name()).arg(m_saveSticky).arg(m_saveDesktop).arg(isReallyVisible()).arg(isAnywhereVisible()).arg(m_geoCacheValid));
+ if (m_geoCacheValid && (!isReallyVisible() || m_geoRestoreFlag) ) {
+ QWidget *w = getWidget();
+ if (!w) return;
+ WId id = w->winId();
+
+ KWin::setOnAllDesktops(id, m_saveSticky);
+ if (!m_saveSticky) {
+ KWin::setOnDesktop(id, m_saveDesktop);
+ }
+
+ w->resize(m_saveGeometry.size());
+ w->move(m_saveGeometry.topLeft());
+
+ if (m_saveMinimized) {
+ w->showMinimized();
+ KWin::iconifyWindow(id);
+ } else if (m_saveMaximized) {
+ w->showMaximized();
+ } else {
+ w->showNormal();
+ KWin::deIconifyWindow(id);
+ }
+
+ }
+}
+
+void WidgetPluginBase::pShow()
+{
+ KWin::setMainWindow(getWidget(), 0);
+
+ logDebug(QString("%1::pShow: all: %2, desktop: %3, visible:%4, anywherevisible:%5, cachevalid: %6").arg(name()).arg(m_saveSticky).arg(m_saveDesktop).arg(isReallyVisible()).arg(isAnywhereVisible()).arg(m_geoCacheValid));
+ if (m_geoCacheValid && (!isReallyVisible() || m_geoRestoreFlag) ) {
+ QWidget *w = getWidget();
+ if (!w) return;
+ WId id = w->winId();
+
+ KWin::setOnAllDesktops(id, m_saveSticky);
+ if (!m_saveSticky)
+ KWin::setOnDesktop(id, KWin::currentDesktop());
+
+ w->resize(m_saveGeometry.size());
+ w->move(m_saveGeometry.topLeft());
+ KWin::deIconifyWindow(id);
+ }
+}
+
+
+void WidgetPluginBase::pHide()
+{
+ logDebug(QString("%1::pHide1: all: %2, desktop: %3, visible:%4, anywherevisible:%5, cachevalid: %6").arg(name()).arg(m_saveSticky).arg(m_saveDesktop).arg(isReallyVisible()).arg(isAnywhereVisible()).arg(m_geoCacheValid));
+ getKWinState();
+ logDebug(QString("%1::pHide2: all: %2, desktop: %3, visible:%4, anywherevisible:%5, cachevalid: %6").arg(name()).arg(m_saveSticky).arg(m_saveDesktop).arg(isReallyVisible()).arg(isAnywhereVisible()).arg(m_geoCacheValid));
+}
+
+
+void WidgetPluginBase::pShowEvent(QShowEvent *)
+{
+ notifyManager (true);
+}
+
+
+void WidgetPluginBase::pHideEvent(QHideEvent *)
+{
+ notifyManager (false);
+}
+
+
+void WidgetPluginBase::getKWinState(const QWidget *_w) const
+{
+ if (m_geoRestoreFlag) return;
+
+ const QWidget *w = _w ? _w : getWidget();
+ if (!w) return;
+ if (w->isVisible()) {
+ KWin::WindowInfo i = KWin::WindowInfo(w->winId(), 0, 0);
+ m_saveMinimized = i.isMinimized();
+ m_saveMaximized = w->isMaximized();
+ m_saveSticky = i.onAllDesktops();
+ m_saveDesktop = i.desktop();
+ m_saveGeometry = QRect(w->pos(), w->size());
+ m_geoCacheValid = true;
+ }
+}
+
+
+void WidgetPluginBase::saveState (KConfig *config) const
+{
+ const QWidget *w = getWidget();
+ getKWinState(w);
+
+ config->writeEntry("hidden", w ? w->isHidden() : false);
+ config->writeEntry("minimized", m_saveMinimized);
+ config->writeEntry("maximized", m_saveMaximized);
+ config->writeEntry("sticky", m_saveSticky);
+ config->writeEntry("desktop", m_saveDesktop);
+ config->writeEntry("geometry", m_saveGeometry);
+ config->writeEntry("geoCacheValid", m_geoCacheValid);
+}
+
+
+void WidgetPluginBase::restoreState (KConfig *config, bool showByDefault)
+{
+ m_geoCacheValid = config->readBoolEntry("geoCacheValid", false);
+ m_saveDesktop = config->readNumEntry ("desktop", 1);
+ m_saveSticky = config->readBoolEntry("sticky", false);
+ m_saveMaximized = config->readBoolEntry("maximized", false);
+ m_saveMinimized = config->readBoolEntry("minimized", false);
+ m_saveGeometry = config->readRectEntry("geometry");
+
+ m_restoreShow = !config->readBoolEntry("hidden", !showByDefault);
+}
+
+
+void WidgetPluginBase::restoreState (KConfig *config)
+{
+ restoreState(config, true);
+}
+
+
+void WidgetPluginBase::startPlugin()
+{
+ PluginBase::startPlugin();
+
+ QWidget *w = getWidget();
+ if (w) {
+ m_geoRestoreFlag = true;
+ if (!m_restoreShow) w->hide();
+ else w->show();
+ m_geoRestoreFlag = false;
+ }
+}
+
diff --git a/stamp-h.in b/stamp-h.in
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/stamp-h.in
diff --git a/subdirs b/subdirs
new file mode 100644
index 0000000..67b926b
--- /dev/null
+++ b/subdirs
@@ -0,0 +1 @@
+kradio3