From e2de64d6f1beb9e492daf5b886e19933c1fa41dd Mon Sep 17 00:00:00 2001
From: toma
Date: Wed, 25 Nov 2009 17:56:58 +0000
Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdemultimedia@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
---
noatun/modules/Makefile.am | 4 +
noatun/modules/artseffects/ExtraStereo.mcopclass | 5 +
.../artseffects/ExtraStereoGuiFactory.mcopclass | 5 +
noatun/modules/artseffects/Makefile.am | 25 +
noatun/modules/artseffects/RawWriter.mcopclass | 4 +
noatun/modules/artseffects/VoiceRemoval.mcopclass | 5 +
noatun/modules/artseffects/artseffects.idl | 17 +
noatun/modules/artseffects/effect.cpp | 1 +
noatun/modules/artseffects/extrastereo_impl.cc | 153 ++
noatun/modules/artseffects/extrastereogui_impl.cc | 28 +
noatun/modules/artseffects/extrastereogui_impl.h | 26 +
noatun/modules/dcopiface/Makefile.am | 16 +
noatun/modules/dcopiface/dcopiface.cpp | 250 ++++
noatun/modules/dcopiface/dcopiface.h | 104 ++
noatun/modules/dcopiface/dcopiface.plugin | 137 ++
noatun/modules/excellent/Makefile.am | 18 +
noatun/modules/excellent/excellent.plugin | 120 ++
noatun/modules/excellent/excellentui.rc | 45 +
noatun/modules/excellent/noatunui.cpp | 32 +
noatun/modules/excellent/userinterface.cpp | 394 +++++
noatun/modules/excellent/userinterface.h | 101 ++
noatun/modules/htmlexport/Makefile.am | 16 +
noatun/modules/htmlexport/TODO | 3 +
noatun/modules/htmlexport/htmlexport.cpp | 308 ++++
noatun/modules/htmlexport/htmlexport.h | 89 ++
noatun/modules/htmlexport/htmlexport.plugin | 124 ++
noatun/modules/infrared/Makefile.am | 16 +
noatun/modules/infrared/README | 3 +
noatun/modules/infrared/infrared.cpp | 120 ++
noatun/modules/infrared/infrared.h | 30 +
noatun/modules/infrared/infrared.plugin | 120 ++
noatun/modules/infrared/irprefs.cpp | 311 ++++
noatun/modules/infrared/irprefs.h | 62 +
noatun/modules/infrared/lirc.cpp | 173 +++
noatun/modules/infrared/lirc.h | 75 +
noatun/modules/kaiman/Makefile.am | 23 +
noatun/modules/kaiman/README | 3 +
noatun/modules/kaiman/SKIN-SPECS | 518 +++++++
noatun/modules/kaiman/kaiman.plugin | 132 ++
noatun/modules/kaiman/kaimanui.rc | 45 +
noatun/modules/kaiman/noatunui.cpp | 9 +
noatun/modules/kaiman/pref.cpp | 122 ++
noatun/modules/kaiman/pref.h | 48 +
noatun/modules/kaiman/skins/Makefile.am | 3 +
noatun/modules/kaiman/skins/car-preset/Makefile.am | 10 +
noatun/modules/kaiman/skins/car-preset/README | 22 +
.../modules/kaiman/skins/car-preset/btn_exit.png | Bin 0 -> 674 bytes
.../kaiman/skins/car-preset/btn_iconify.png | Bin 0 -> 585 bytes
.../modules/kaiman/skins/car-preset/btn_list.png | Bin 0 -> 762 bytes
.../modules/kaiman/skins/car-preset/btn_next.png | Bin 0 -> 1055 bytes
noatun/modules/kaiman/skins/car-preset/btn_p1.png | Bin 0 -> 691 bytes
noatun/modules/kaiman/skins/car-preset/btn_p2.png | Bin 0 -> 679 bytes
noatun/modules/kaiman/skins/car-preset/btn_p3.png | Bin 0 -> 689 bytes
noatun/modules/kaiman/skins/car-preset/btn_p4.png | Bin 0 -> 641 bytes
noatun/modules/kaiman/skins/car-preset/btn_p5.png | Bin 0 -> 668 bytes
noatun/modules/kaiman/skins/car-preset/btn_p6.png | Bin 0 -> 741 bytes
.../modules/kaiman/skins/car-preset/btn_play.png | Bin 0 -> 623 bytes
.../modules/kaiman/skins/car-preset/btn_prev.png | Bin 0 -> 1006 bytes
noatun/modules/kaiman/skins/car-preset/btn_sml.png | Bin 0 -> 454 bytes
.../modules/kaiman/skins/car-preset/btn_stop.png | Bin 0 -> 603 bytes
.../modules/kaiman/skins/car-preset/btn_voldn.png | Bin 0 -> 923 bytes
.../modules/kaiman/skins/car-preset/btn_volup.png | Bin 0 -> 1026 bytes
noatun/modules/kaiman/skins/car-preset/digbig.png | Bin 0 -> 359 bytes
noatun/modules/kaiman/skins/car-preset/digmed.png | Bin 0 -> 318 bytes
noatun/modules/kaiman/skins/car-preset/letters.png | Bin 0 -> 1240 bytes
noatun/modules/kaiman/skins/car-preset/main.png | Bin 0 -> 7191 bytes
.../modules/kaiman/skins/car-preset/monoster.png | Bin 0 -> 169 bytes
noatun/modules/kaiman/skins/car-preset/posbar.png | Bin 0 -> 519 bytes
noatun/modules/kaiman/skins/car-preset/random.png | Bin 0 -> 178 bytes
noatun/modules/kaiman/skins/car-preset/repeat.png | Bin 0 -> 172 bytes
noatun/modules/kaiman/skins/car-preset/skindata | 71 +
noatun/modules/kaiman/skins/car-preset/status.png | Bin 0 -> 133 bytes
noatun/modules/kaiman/skins/car-preset/volume.png | Bin 0 -> 664 bytes
noatun/modules/kaiman/skins/circle/Makefile.am | 13 +
noatun/modules/kaiman/skins/circle/README | 22 +
noatun/modules/kaiman/skins/circle/back.png | Bin 0 -> 20249 bytes
noatun/modules/kaiman/skins/circle/back_mask.png | Bin 0 -> 1519 bytes
noatun/modules/kaiman/skins/circle/back_sm.png | Bin 0 -> 2166 bytes
.../modules/kaiman/skins/circle/back_sm_mask.png | Bin 0 -> 217 bytes
noatun/modules/kaiman/skins/circle/bar_pos.png | Bin 0 -> 1188 bytes
noatun/modules/kaiman/skins/circle/bar_vol.png | Bin 0 -> 1156 bytes
noatun/modules/kaiman/skins/circle/btn_exit.png | Bin 0 -> 2326 bytes
noatun/modules/kaiman/skins/circle/btn_iconify.png | Bin 0 -> 1899 bytes
noatun/modules/kaiman/skins/circle/btn_list.png | Bin 0 -> 2525 bytes
noatun/modules/kaiman/skins/circle/btn_mode.png | Bin 0 -> 2026 bytes
noatun/modules/kaiman/skins/circle/btn_next.png | Bin 0 -> 2527 bytes
noatun/modules/kaiman/skins/circle/btn_play.png | Bin 0 -> 3081 bytes
noatun/modules/kaiman/skins/circle/btn_pref.png | Bin 0 -> 2610 bytes
noatun/modules/kaiman/skins/circle/btn_prev.png | Bin 0 -> 2411 bytes
noatun/modules/kaiman/skins/circle/btn_repeat.png | Bin 0 -> 2488 bytes
noatun/modules/kaiman/skins/circle/btn_shuffle.png | Bin 0 -> 2504 bytes
noatun/modules/kaiman/skins/circle/btn_sm_exit.png | Bin 0 -> 680 bytes
.../modules/kaiman/skins/circle/btn_sm_iconify.png | Bin 0 -> 627 bytes
noatun/modules/kaiman/skins/circle/btn_sm_mode.png | Bin 0 -> 852 bytes
noatun/modules/kaiman/skins/circle/btn_sm_next.png | Bin 0 -> 759 bytes
noatun/modules/kaiman/skins/circle/btn_sm_play.png | Bin 0 -> 1004 bytes
noatun/modules/kaiman/skins/circle/btn_sm_prev.png | Bin 0 -> 776 bytes
noatun/modules/kaiman/skins/circle/btn_sm_stop.png | Bin 0 -> 1022 bytes
noatun/modules/kaiman/skins/circle/btn_stop.png | Bin 0 -> 3186 bytes
noatun/modules/kaiman/skins/circle/dig.png | Bin 0 -> 370 bytes
noatun/modules/kaiman/skins/circle/digsml.png | Bin 0 -> 201 bytes
noatun/modules/kaiman/skins/circle/letters.png | Bin 0 -> 1260 bytes
noatun/modules/kaiman/skins/circle/skindata | 58 +
noatun/modules/kaiman/skins/circle/skindata_alt | 44 +
noatun/modules/kaiman/skins/circle/status.png | Bin 0 -> 121 bytes
noatun/modules/kaiman/skins/k9/Makefile.am | 11 +
noatun/modules/kaiman/skins/k9/README | 24 +
noatun/modules/kaiman/skins/k9/conf.jpg | Bin 0 -> 771 bytes
noatun/modules/kaiman/skins/k9/conf.png | Bin 0 -> 2436 bytes
noatun/modules/kaiman/skins/k9/eject.jpg | Bin 0 -> 6065 bytes
noatun/modules/kaiman/skins/k9/icon.jpg | Bin 0 -> 569 bytes
noatun/modules/kaiman/skins/k9/icon.png | Bin 0 -> 1427 bytes
noatun/modules/kaiman/skins/k9/kill.jpg | Bin 0 -> 536 bytes
noatun/modules/kaiman/skins/k9/kill.png | Bin 0 -> 1221 bytes
noatun/modules/kaiman/skins/k9/knine-nfont.jpg | Bin 0 -> 1747 bytes
noatun/modules/kaiman/skins/k9/knine-nfont.png | Bin 0 -> 1226 bytes
noatun/modules/kaiman/skins/k9/knine-nfont2.jpg | Bin 0 -> 1721 bytes
noatun/modules/kaiman/skins/k9/knine-nfont2.png | Bin 0 -> 1320 bytes
noatun/modules/kaiman/skins/k9/knine-normal2.jpg | Bin 0 -> 17471 bytes
noatun/modules/kaiman/skins/k9/knine-normal2.png | Bin 0 -> 72057 bytes
noatun/modules/kaiman/skins/k9/knine-vfont.jpg | Bin 0 -> 730 bytes
noatun/modules/kaiman/skins/k9/knine-vfont.png | Bin 0 -> 351 bytes
noatun/modules/kaiman/skins/k9/long2.jpg | Bin 0 -> 146555 bytes
noatun/modules/kaiman/skins/k9/mask.png | Bin 0 -> 3865 bytes
noatun/modules/kaiman/skins/k9/newtext.jpg | Bin 0 -> 3196 bytes
noatun/modules/kaiman/skins/k9/newtext.png | Bin 0 -> 3135 bytes
noatun/modules/kaiman/skins/k9/next.jpg | Bin 0 -> 6840 bytes
noatun/modules/kaiman/skins/k9/pause.jpg | Bin 0 -> 7683 bytes
noatun/modules/kaiman/skins/k9/play.jpg | Bin 0 -> 8850 bytes
noatun/modules/kaiman/skins/k9/pos_item.jpg | Bin 0 -> 166210 bytes
noatun/modules/kaiman/skins/k9/repeat.jpg | Bin 0 -> 756 bytes
noatun/modules/kaiman/skins/k9/repeat.png | Bin 0 -> 1299 bytes
noatun/modules/kaiman/skins/k9/reverse.jpg | Bin 0 -> 6904 bytes
noatun/modules/kaiman/skins/k9/shuffle.jpg | Bin 0 -> 719 bytes
noatun/modules/kaiman/skins/k9/shuffle.png | Bin 0 -> 1268 bytes
noatun/modules/kaiman/skins/k9/skindata | 73 +
noatun/modules/kaiman/skins/k9/small-k.jpg | Bin 0 -> 516 bytes
noatun/modules/kaiman/skins/k9/small-k.png | Bin 0 -> 1009 bytes
noatun/modules/kaiman/skins/k9/square.jpg | Bin 0 -> 720 bytes
noatun/modules/kaiman/skins/k9/square.png | Bin 0 -> 1894 bytes
noatun/modules/kaiman/skins/k9/status.jpg | Bin 0 -> 461 bytes
noatun/modules/kaiman/skins/k9/status.png | Bin 0 -> 246 bytes
noatun/modules/kaiman/skins/k9/stop.jpg | Bin 0 -> 7743 bytes
noatun/modules/kaiman/skins/k9/trans-pos.png | Bin 0 -> 99 bytes
noatun/modules/kaiman/skins/k9/trans-slide.png | Bin 0 -> 105 bytes
noatun/modules/kaiman/style.cpp | 1504 ++++++++++++++++++++
noatun/modules/kaiman/style.h | 356 +++++
noatun/modules/kaiman/userinterface.cpp | 562 ++++++++
noatun/modules/kaiman/userinterface.h | 85 ++
noatun/modules/keyz/Makefile.am | 14 +
noatun/modules/keyz/keyz.cpp | 189 +++
noatun/modules/keyz/keyz.h | 48 +
noatun/modules/keyz/keyz.plugin | 69 +
noatun/modules/kjofol-skin/ChangeLog | 111 ++
noatun/modules/kjofol-skin/Makefile.am | 41 +
noatun/modules/kjofol-skin/helpers.cpp | 64 +
noatun/modules/kjofol-skin/kjbackground.cpp | 29 +
noatun/modules/kjofol-skin/kjbackground.h | 21 +
noatun/modules/kjofol-skin/kjbutton.cpp | 301 ++++
noatun/modules/kjofol-skin/kjbutton.h | 34 +
noatun/modules/kjofol-skin/kjequalizer.cpp | 129 ++
noatun/modules/kjofol-skin/kjequalizer.h | 39 +
noatun/modules/kjofol-skin/kjfont.cpp | 290 ++++
noatun/modules/kjofol-skin/kjfont.h | 50 +
noatun/modules/kjofol-skin/kjguisettingswidget.ui | 465 ++++++
noatun/modules/kjofol-skin/kjloader.cpp | 832 +++++++++++
noatun/modules/kjofol-skin/kjloader.h | 129 ++
noatun/modules/kjofol-skin/kjofolui.plugin | 64 +
noatun/modules/kjofol-skin/kjprefs.cpp | 658 +++++++++
noatun/modules/kjofol-skin/kjprefs.h | 96 ++
noatun/modules/kjofol-skin/kjseeker.cpp | 210 +++
noatun/modules/kjofol-skin/kjseeker.h | 37 +
noatun/modules/kjofol-skin/kjskinselectorwidget.ui | 227 +++
noatun/modules/kjofol-skin/kjsliders.cpp | 336 +++++
noatun/modules/kjofol-skin/kjsliders.h | 88 ++
noatun/modules/kjofol-skin/kjtextdisplay.cpp | 650 +++++++++
noatun/modules/kjofol-skin/kjtextdisplay.h | 139 ++
noatun/modules/kjofol-skin/kjvis.cpp | 538 +++++++
noatun/modules/kjofol-skin/kjvis.h | 102 ++
noatun/modules/kjofol-skin/kjwidget.cpp | 70 +
noatun/modules/kjofol-skin/kjwidget.h | 53 +
noatun/modules/kjofol-skin/noatunui.cpp | 9 +
noatun/modules/kjofol-skin/parser.cpp | 132 ++
noatun/modules/kjofol-skin/parser.h | 49 +
.../kjofol-skin/skins/HexoBronx/HexoBronx.rc | 77 +
.../kjofol-skin/skins/HexoBronx/Makefile.am | 7 +
.../modules/kjofol-skin/skins/HexoBronx/README.txt | 79 +
.../modules/kjofol-skin/skins/HexoBronx/active.png | Bin 0 -> 113726 bytes
.../kjofol-skin/skins/HexoBronx/eckig_font.png | Bin 0 -> 272 bytes
.../modules/kjofol-skin/skins/HexoBronx/font.png | Bin 0 -> 1299 bytes
.../kjofol-skin/skins/HexoBronx/inactive.png | Bin 0 -> 109729 bytes
.../modules/kjofol-skin/skins/HexoBronx/mask.png | Bin 0 -> 3416 bytes
.../modules/kjofol-skin/skins/HexoBronx/pitch.png | Bin 0 -> 22516 bytes
.../modules/kjofol-skin/skins/HexoBronx/splash.png | Bin 0 -> 94261 bytes
.../kjofol-skin/skins/HexoBronx/time_font.png | Bin 0 -> 395 bytes
.../modules/kjofol-skin/skins/HexoBronx/volume.png | Bin 0 -> 24291 bytes
.../skins/HexoBronx/volume_pitch_font.png | Bin 0 -> 355 bytes
noatun/modules/kjofol-skin/skins/Makefile.am | 3 +
.../modules/kjofol-skin/skins/kjofol/Makefile.am | 11 +
noatun/modules/kjofol-skin/skins/kjofol/kjofol.dck | 62 +
noatun/modules/kjofol-skin/skins/kjofol/kjofol.pl | 39 +
noatun/modules/kjofol-skin/skins/kjofol/kjofol.rc | 150 ++
noatun/modules/kjofol-skin/skins/kjofol/kjofol.wsh | 63 +
noatun/modules/kjofol-skin/skins/kjofol/sg.png | Bin 0 -> 29510 bytes
noatun/modules/kjofol-skin/skins/kjofol/sg_num.png | Bin 0 -> 1497 bytes
.../modules/kjofol-skin/skins/kjofol/sg_seek.bmp | Bin 0 -> 218334 bytes
.../modules/kjofol-skin/skins/kjofol/sg_seek.png | Bin 0 -> 8170 bytes
.../modules/kjofol-skin/skins/kjofol/sg_text.png | Bin 0 -> 2093 bytes
noatun/modules/kjofol-skin/skins/kjofol/sgdock.png | Bin 0 -> 5552 bytes
.../modules/kjofol-skin/skins/kjofol/sgdock2.png | Bin 0 -> 5455 bytes
.../modules/kjofol-skin/skins/kjofol/sgdocksk.png | Bin 0 -> 1236 bytes
.../modules/kjofol-skin/skins/kjofol/sgdockvp.png | Bin 0 -> 1234 bytes
noatun/modules/kjofol-skin/skins/kjofol/sgeq.png | Bin 0 -> 1236 bytes
.../modules/kjofol-skin/skins/kjofol/sgpitch.png | Bin 0 -> 7552 bytes
.../modules/kjofol-skin/skins/kjofol/sgpitchp.png | Bin 0 -> 5469 bytes
.../modules/kjofol-skin/skins/kjofol/sgplist.png | Bin 0 -> 25049 bytes
.../modules/kjofol-skin/skins/kjofol/sgplist2.png | Bin 0 -> 24538 bytes
.../modules/kjofol-skin/skins/kjofol/sgpres1.png | Bin 0 -> 29852 bytes
.../modules/kjofol-skin/skins/kjofol/sgpres2.png | Bin 0 -> 29568 bytes
.../modules/kjofol-skin/skins/kjofol/sgpres3.png | Bin 0 -> 29962 bytes
noatun/modules/kjofol-skin/skins/kjofol/sgvol.png | Bin 0 -> 17818 bytes
.../modules/kjofol-skin/skins/kjofol/sgvolnum.png | Bin 0 -> 1290 bytes
.../modules/kjofol-skin/skins/kjofol/sgvolpos.png | Bin 0 -> 4589 bytes
.../modules/kjofol-skin/skins/kjofol/sgwshad.png | Bin 0 -> 7219 bytes
.../modules/kjofol-skin/skins/kjofol/sgwshad2.png | Bin 0 -> 7270 bytes
.../modules/kjofol-skin/skins/kjofol/sgwshdsk.png | Bin 0 -> 710 bytes
.../modules/kjofol-skin/skins/kjofol/sgwshvol.png | Bin 0 -> 519 bytes
.../modules/kjofol-skin/skins/kjofol/sgwshvp.png | Bin 0 -> 709 bytes
noatun/modules/kjofol-skin/skins/phong/Makefile.am | 8 +
noatun/modules/kjofol-skin/skins/phong/p_eq.png | Bin 0 -> 131 bytes
noatun/modules/kjofol-skin/skins/phong/p_main.png | Bin 0 -> 53187 bytes
.../modules/kjofol-skin/skins/phong/p_mainback.png | Bin 0 -> 56216 bytes
.../modules/kjofol-skin/skins/phong/p_numbers.png | Bin 0 -> 189 bytes
.../modules/kjofol-skin/skins/phong/p_playback.png | Bin 0 -> 30106 bytes
.../modules/kjofol-skin/skins/phong/p_playlist.png | Bin 0 -> 29702 bytes
.../modules/kjofol-skin/skins/phong/p_propos.png | Bin 0 -> 3363 bytes
noatun/modules/kjofol-skin/skins/phong/p_text.png | Bin 0 -> 477 bytes
.../modules/kjofol-skin/skins/phong/p_volbar.png | Bin 0 -> 49460 bytes
.../modules/kjofol-skin/skins/phong/p_volpos.png | Bin 0 -> 2325 bytes
noatun/modules/kjofol-skin/skins/phong/phong.dck | 26 +
noatun/modules/kjofol-skin/skins/phong/phong.rc | 104 ++
noatun/modules/kjofol-skin/skins/phong/phong.wsh | 26 +
.../kjofol-skin/skins/phong/phong_readme.txt | 62 +
.../kjofol-skin/skins/vibrocentric/Makefile.am | 8 +
.../kjofol-skin/skins/vibrocentric/i_base.png | Bin 0 -> 65392 bytes
.../kjofol-skin/skins/vibrocentric/i_base2.png | Bin 0 -> 70854 bytes
.../kjofol-skin/skins/vibrocentric/i_eq.png | Bin 0 -> 165 bytes
.../kjofol-skin/skins/vibrocentric/i_font.png | Bin 0 -> 308 bytes
.../kjofol-skin/skins/vibrocentric/i_pl.png | Bin 0 -> 66544 bytes
.../kjofol-skin/skins/vibrocentric/i_pl2.png | Bin 0 -> 66435 bytes
.../kjofol-skin/skins/vibrocentric/i_pro.png | Bin 0 -> 676 bytes
.../kjofol-skin/skins/vibrocentric/i_text.png | Bin 0 -> 379 bytes
.../kjofol-skin/skins/vibrocentric/i_vol.png | Bin 0 -> 13273 bytes
.../kjofol-skin/skins/vibrocentric/i_volpos.png | Bin 0 -> 2550 bytes
.../skins/vibrocentric/vibrocentric.dck | 26 +
.../kjofol-skin/skins/vibrocentric/vibrocentric.rc | 105 ++
.../skins/vibrocentric/vibrocentric.wsh | 26 +
.../skins/vibrocentric/vibrocentric_readme.txt | 19 +
noatun/modules/making_plugins | 23 +
noatun/modules/marquis/Makefile.am | 15 +
noatun/modules/marquis/marquis.cpp | 186 +++
noatun/modules/marquis/marquis.h | 52 +
noatun/modules/marquis/marquis.plugin | 83 ++
noatun/modules/marquis/plugin.cpp | 9 +
noatun/modules/metatag/HANDLED_ITEMS | 21 +
noatun/modules/metatag/Makefile.am | 15 +
noatun/modules/metatag/edit.cpp | 312 ++++
noatun/modules/metatag/edit.h | 55 +
noatun/modules/metatag/metatag.cpp | 124 ++
noatun/modules/metatag/metatag.h | 30 +
noatun/modules/metatag/metatag.plugin | 125 ++
noatun/modules/monoscope/Makefile.am | 16 +
noatun/modules/monoscope/monoscope.cpp | 112 ++
noatun/modules/monoscope/monoscope.h | 34 +
noatun/modules/monoscope/monoscope.plugin | 99 ++
noatun/modules/net/Makefile.am | 14 +
noatun/modules/net/net.cpp | 57 +
noatun/modules/net/net.h | 31 +
noatun/modules/net/net.plugin | 136 ++
noatun/modules/noatunui/Makefile.am | 16 +
noatun/modules/noatunui/noatunui.cpp | 9 +
noatun/modules/noatunui/noatunui.plugin | 120 ++
noatun/modules/noatunui/userinterface.cpp | 315 ++++
noatun/modules/noatunui/userinterface.h | 72 +
noatun/modules/simple/Makefile.am | 16 +
noatun/modules/simple/back.xpm | 21 +
noatun/modules/simple/forward.xpm | 21 +
noatun/modules/simple/noatunui.cpp | 17 +
noatun/modules/simple/pause.xpm | 21 +
noatun/modules/simple/play.xpm | 21 +
noatun/modules/simple/playlist.xpm | 21 +
noatun/modules/simple/propertiesdialog.ui | 348 +++++
noatun/modules/simple/propertiesdialog.ui.h | 58 +
noatun/modules/simple/simple.plugin | 126 ++
noatun/modules/simple/simpleui.rc | 37 +
noatun/modules/simple/stop.xpm | 21 +
noatun/modules/simple/userinterface.cpp | 379 +++++
noatun/modules/simple/userinterface.h | 80 ++
noatun/modules/simple/volume.xpm | 21 +
noatun/modules/splitplaylist/LICENSE | 124 ++
noatun/modules/splitplaylist/Makefile.am | 17 +
noatun/modules/splitplaylist/find.cpp | 63 +
noatun/modules/splitplaylist/find.h | 33 +
noatun/modules/splitplaylist/playlist.cpp | 281 ++++
noatun/modules/splitplaylist/playlist.h | 98 ++
noatun/modules/splitplaylist/splitplaylist.cpp | 13 +
noatun/modules/splitplaylist/splitplaylist.plugin | 118 ++
noatun/modules/splitplaylist/splui.rc | 34 +
noatun/modules/splitplaylist/view.cpp | 1009 +++++++++++++
noatun/modules/splitplaylist/view.h | 165 +++
noatun/modules/systray/Makefile.am | 16 +
noatun/modules/systray/cmodule.cpp | 192 +++
noatun/modules/systray/cmodule.h | 55 +
noatun/modules/systray/kitsystemtray.cpp | 131 ++
noatun/modules/systray/kitsystemtray.h | 54 +
noatun/modules/systray/noatunui.cpp | 9 +
noatun/modules/systray/systray.cpp | 467 ++++++
noatun/modules/systray/systray.h | 80 ++
noatun/modules/systray/systray.plugin | 100 ++
noatun/modules/systray/systrayui.rc | 20 +
noatun/modules/systray/yhconfig.kcfg | 81 ++
noatun/modules/systray/yhconfig.kcfgc | 7 +
noatun/modules/systray/yhconfigwidget.ui | 333 +++++
noatun/modules/voiceprint/Makefile.am | 14 +
noatun/modules/voiceprint/prefs.cpp | 67 +
noatun/modules/voiceprint/prefs.h | 22 +
noatun/modules/voiceprint/voiceprint.cpp | 126 ++
noatun/modules/voiceprint/voiceprint.h | 33 +
noatun/modules/voiceprint/voiceprint.plugin | 92 ++
noatun/modules/winskin/Makefile.am | 51 +
noatun/modules/winskin/fileInfo.cpp | 50 +
noatun/modules/winskin/fileInfo.h | 21 +
noatun/modules/winskin/guiSpectrumAnalyser.cpp | 224 +++
noatun/modules/winskin/guiSpectrumAnalyser.h | 66 +
noatun/modules/winskin/mimetypes/Makefile.am | 2 +
.../winskin/mimetypes/interface/Makefile.am | 6 +
.../mimetypes/interface/x-winamp-skin.desktop | 58 +
noatun/modules/winskin/plugin.cpp | 13 +
noatun/modules/winskin/skinMap.h | 38 +
noatun/modules/winskin/skins/Makefile.am | 11 +
noatun/modules/winskin/skins/winamp/BALANCE.BMP | Bin 0 -> 9654 bytes
noatun/modules/winskin/skins/winamp/CBUTTONS.BMP | Bin 0 -> 5974 bytes
noatun/modules/winskin/skins/winamp/FONT.BMP | Bin 0 -> 12622 bytes
noatun/modules/winskin/skins/winamp/MAIN.BMP | Bin 0 -> 96102 bytes
noatun/modules/winskin/skins/winamp/MONOSTER.BMP | Bin 0 -> 2518 bytes
noatun/modules/winskin/skins/winamp/Makefile.am | 8 +
noatun/modules/winskin/skins/winamp/NUMS_EX.BMP | Bin 0 -> 2482 bytes
noatun/modules/winskin/skins/winamp/PLAYPAUS.BMP | Bin 0 -> 1474 bytes
noatun/modules/winskin/skins/winamp/POSBAR.BMP | Bin 0 -> 4158 bytes
noatun/modules/winskin/skins/winamp/SHUFREP.BMP | Bin 0 -> 23514 bytes
noatun/modules/winskin/skins/winamp/SPEC.BMP | Bin 0 -> 2166 bytes
noatun/modules/winskin/skins/winamp/TEXT.BMP | Bin 0 -> 3886 bytes
noatun/modules/winskin/skins/winamp/TITLEBAR.BMP | Bin 0 -> 89838 bytes
noatun/modules/winskin/skins/winamp/VISCOLOR.TXT | 24 +
noatun/modules/winskin/skins/winamp/VOLUME.BMP | Bin 0 -> 11548 bytes
noatun/modules/winskin/vis/Makefile.am | 39 +
noatun/modules/winskin/vis/WinSkinFFT.mcopclass | 5 +
noatun/modules/winskin/vis/realFFT.cpp | 156 ++
noatun/modules/winskin/vis/realFFT.h | 69 +
noatun/modules/winskin/vis/realFFTFilter.cpp | 88 ++
noatun/modules/winskin/vis/realFFTFilter.h | 49 +
noatun/modules/winskin/vis/visQueue.cpp | 43 +
noatun/modules/winskin/vis/visQueue.h | 32 +
noatun/modules/winskin/vis/winSkinFFT_impl.cpp | 148 ++
noatun/modules/winskin/vis/winSkinFFT_impl.h | 62 +
noatun/modules/winskin/vis/winskinvis.idl | 12 +
noatun/modules/winskin/waBalanceSlider.cpp | 56 +
noatun/modules/winskin/waBalanceSlider.h | 42 +
noatun/modules/winskin/waButton.cpp | 101 ++
noatun/modules/winskin/waButton.h | 62 +
noatun/modules/winskin/waClutterbar.cpp | 11 +
noatun/modules/winskin/waClutterbar.h | 18 +
noatun/modules/winskin/waColor.cpp | 73 +
noatun/modules/winskin/waColor.h | 26 +
noatun/modules/winskin/waDigit.cpp | 89 ++
noatun/modules/winskin/waDigit.h | 48 +
noatun/modules/winskin/waIndicator.cpp | 34 +
noatun/modules/winskin/waIndicator.h | 41 +
noatun/modules/winskin/waInfo.cpp | 173 +++
noatun/modules/winskin/waInfo.h | 53 +
noatun/modules/winskin/waJumpSlider.cpp | 78 +
noatun/modules/winskin/waJumpSlider.h | 52 +
noatun/modules/winskin/waLabel.cpp | 65 +
noatun/modules/winskin/waLabel.h | 39 +
noatun/modules/winskin/waMain.cpp | 13 +
noatun/modules/winskin/waMain.h | 16 +
noatun/modules/winskin/waRegion.cpp | 126 ++
noatun/modules/winskin/waRegion.h | 26 +
noatun/modules/winskin/waShadeMapping.h | 148 ++
noatun/modules/winskin/waSkin.cpp | 800 +++++++++++
noatun/modules/winskin/waSkin.h | 177 +++
noatun/modules/winskin/waSkinManager.cpp | 127 ++
noatun/modules/winskin/waSkinManager.h | 39 +
noatun/modules/winskin/waSkinMapping.h | 148 ++
noatun/modules/winskin/waSkinModel.cpp | 458 ++++++
noatun/modules/winskin/waSkinModel.h | 64 +
noatun/modules/winskin/waSkins.h | 161 +++
noatun/modules/winskin/waSlider.cpp | 209 +++
noatun/modules/winskin/waSlider.h | 82 ++
noatun/modules/winskin/waStatus.cpp | 42 +
noatun/modules/winskin/waStatus.h | 40 +
noatun/modules/winskin/waTitleBar.cpp | 79 +
noatun/modules/winskin/waTitleBar.h | 51 +
noatun/modules/winskin/waVolumeSlider.cpp | 51 +
noatun/modules/winskin/waVolumeSlider.h | 41 +
noatun/modules/winskin/waWidget.cpp | 58 +
noatun/modules/winskin/waWidget.h | 31 +
noatun/modules/winskin/winSkinConfig.cpp | 174 +++
noatun/modules/winskin/winSkinConfig.h | 35 +
noatun/modules/winskin/winSkinVis.cpp | 107 ++
noatun/modules/winskin/winSkinVis.h | 54 +
noatun/modules/winskin/winskin.plugin | 122 ++
412 files changed, 26870 insertions(+)
create mode 100644 noatun/modules/Makefile.am
create mode 100644 noatun/modules/artseffects/ExtraStereo.mcopclass
create mode 100644 noatun/modules/artseffects/ExtraStereoGuiFactory.mcopclass
create mode 100644 noatun/modules/artseffects/Makefile.am
create mode 100644 noatun/modules/artseffects/RawWriter.mcopclass
create mode 100644 noatun/modules/artseffects/VoiceRemoval.mcopclass
create mode 100644 noatun/modules/artseffects/artseffects.idl
create mode 100644 noatun/modules/artseffects/effect.cpp
create mode 100644 noatun/modules/artseffects/extrastereo_impl.cc
create mode 100644 noatun/modules/artseffects/extrastereogui_impl.cc
create mode 100644 noatun/modules/artseffects/extrastereogui_impl.h
create mode 100644 noatun/modules/dcopiface/Makefile.am
create mode 100644 noatun/modules/dcopiface/dcopiface.cpp
create mode 100644 noatun/modules/dcopiface/dcopiface.h
create mode 100644 noatun/modules/dcopiface/dcopiface.plugin
create mode 100644 noatun/modules/excellent/Makefile.am
create mode 100644 noatun/modules/excellent/excellent.plugin
create mode 100644 noatun/modules/excellent/excellentui.rc
create mode 100644 noatun/modules/excellent/noatunui.cpp
create mode 100644 noatun/modules/excellent/userinterface.cpp
create mode 100644 noatun/modules/excellent/userinterface.h
create mode 100644 noatun/modules/htmlexport/Makefile.am
create mode 100644 noatun/modules/htmlexport/TODO
create mode 100644 noatun/modules/htmlexport/htmlexport.cpp
create mode 100644 noatun/modules/htmlexport/htmlexport.h
create mode 100644 noatun/modules/htmlexport/htmlexport.plugin
create mode 100644 noatun/modules/infrared/Makefile.am
create mode 100644 noatun/modules/infrared/README
create mode 100644 noatun/modules/infrared/infrared.cpp
create mode 100644 noatun/modules/infrared/infrared.h
create mode 100644 noatun/modules/infrared/infrared.plugin
create mode 100644 noatun/modules/infrared/irprefs.cpp
create mode 100644 noatun/modules/infrared/irprefs.h
create mode 100644 noatun/modules/infrared/lirc.cpp
create mode 100644 noatun/modules/infrared/lirc.h
create mode 100644 noatun/modules/kaiman/Makefile.am
create mode 100644 noatun/modules/kaiman/README
create mode 100644 noatun/modules/kaiman/SKIN-SPECS
create mode 100644 noatun/modules/kaiman/kaiman.plugin
create mode 100644 noatun/modules/kaiman/kaimanui.rc
create mode 100644 noatun/modules/kaiman/noatunui.cpp
create mode 100644 noatun/modules/kaiman/pref.cpp
create mode 100644 noatun/modules/kaiman/pref.h
create mode 100644 noatun/modules/kaiman/skins/Makefile.am
create mode 100644 noatun/modules/kaiman/skins/car-preset/Makefile.am
create mode 100644 noatun/modules/kaiman/skins/car-preset/README
create mode 100644 noatun/modules/kaiman/skins/car-preset/btn_exit.png
create mode 100644 noatun/modules/kaiman/skins/car-preset/btn_iconify.png
create mode 100644 noatun/modules/kaiman/skins/car-preset/btn_list.png
create mode 100644 noatun/modules/kaiman/skins/car-preset/btn_next.png
create mode 100644 noatun/modules/kaiman/skins/car-preset/btn_p1.png
create mode 100644 noatun/modules/kaiman/skins/car-preset/btn_p2.png
create mode 100644 noatun/modules/kaiman/skins/car-preset/btn_p3.png
create mode 100644 noatun/modules/kaiman/skins/car-preset/btn_p4.png
create mode 100644 noatun/modules/kaiman/skins/car-preset/btn_p5.png
create mode 100644 noatun/modules/kaiman/skins/car-preset/btn_p6.png
create mode 100644 noatun/modules/kaiman/skins/car-preset/btn_play.png
create mode 100644 noatun/modules/kaiman/skins/car-preset/btn_prev.png
create mode 100644 noatun/modules/kaiman/skins/car-preset/btn_sml.png
create mode 100644 noatun/modules/kaiman/skins/car-preset/btn_stop.png
create mode 100644 noatun/modules/kaiman/skins/car-preset/btn_voldn.png
create mode 100644 noatun/modules/kaiman/skins/car-preset/btn_volup.png
create mode 100644 noatun/modules/kaiman/skins/car-preset/digbig.png
create mode 100644 noatun/modules/kaiman/skins/car-preset/digmed.png
create mode 100644 noatun/modules/kaiman/skins/car-preset/letters.png
create mode 100644 noatun/modules/kaiman/skins/car-preset/main.png
create mode 100644 noatun/modules/kaiman/skins/car-preset/monoster.png
create mode 100644 noatun/modules/kaiman/skins/car-preset/posbar.png
create mode 100644 noatun/modules/kaiman/skins/car-preset/random.png
create mode 100644 noatun/modules/kaiman/skins/car-preset/repeat.png
create mode 100644 noatun/modules/kaiman/skins/car-preset/skindata
create mode 100644 noatun/modules/kaiman/skins/car-preset/status.png
create mode 100644 noatun/modules/kaiman/skins/car-preset/volume.png
create mode 100644 noatun/modules/kaiman/skins/circle/Makefile.am
create mode 100644 noatun/modules/kaiman/skins/circle/README
create mode 100644 noatun/modules/kaiman/skins/circle/back.png
create mode 100644 noatun/modules/kaiman/skins/circle/back_mask.png
create mode 100644 noatun/modules/kaiman/skins/circle/back_sm.png
create mode 100644 noatun/modules/kaiman/skins/circle/back_sm_mask.png
create mode 100644 noatun/modules/kaiman/skins/circle/bar_pos.png
create mode 100644 noatun/modules/kaiman/skins/circle/bar_vol.png
create mode 100644 noatun/modules/kaiman/skins/circle/btn_exit.png
create mode 100644 noatun/modules/kaiman/skins/circle/btn_iconify.png
create mode 100644 noatun/modules/kaiman/skins/circle/btn_list.png
create mode 100644 noatun/modules/kaiman/skins/circle/btn_mode.png
create mode 100644 noatun/modules/kaiman/skins/circle/btn_next.png
create mode 100644 noatun/modules/kaiman/skins/circle/btn_play.png
create mode 100644 noatun/modules/kaiman/skins/circle/btn_pref.png
create mode 100644 noatun/modules/kaiman/skins/circle/btn_prev.png
create mode 100644 noatun/modules/kaiman/skins/circle/btn_repeat.png
create mode 100644 noatun/modules/kaiman/skins/circle/btn_shuffle.png
create mode 100644 noatun/modules/kaiman/skins/circle/btn_sm_exit.png
create mode 100644 noatun/modules/kaiman/skins/circle/btn_sm_iconify.png
create mode 100644 noatun/modules/kaiman/skins/circle/btn_sm_mode.png
create mode 100644 noatun/modules/kaiman/skins/circle/btn_sm_next.png
create mode 100644 noatun/modules/kaiman/skins/circle/btn_sm_play.png
create mode 100644 noatun/modules/kaiman/skins/circle/btn_sm_prev.png
create mode 100644 noatun/modules/kaiman/skins/circle/btn_sm_stop.png
create mode 100644 noatun/modules/kaiman/skins/circle/btn_stop.png
create mode 100644 noatun/modules/kaiman/skins/circle/dig.png
create mode 100644 noatun/modules/kaiman/skins/circle/digsml.png
create mode 100644 noatun/modules/kaiman/skins/circle/letters.png
create mode 100644 noatun/modules/kaiman/skins/circle/skindata
create mode 100644 noatun/modules/kaiman/skins/circle/skindata_alt
create mode 100644 noatun/modules/kaiman/skins/circle/status.png
create mode 100644 noatun/modules/kaiman/skins/k9/Makefile.am
create mode 100644 noatun/modules/kaiman/skins/k9/README
create mode 100644 noatun/modules/kaiman/skins/k9/conf.jpg
create mode 100644 noatun/modules/kaiman/skins/k9/conf.png
create mode 100644 noatun/modules/kaiman/skins/k9/eject.jpg
create mode 100644 noatun/modules/kaiman/skins/k9/icon.jpg
create mode 100644 noatun/modules/kaiman/skins/k9/icon.png
create mode 100644 noatun/modules/kaiman/skins/k9/kill.jpg
create mode 100644 noatun/modules/kaiman/skins/k9/kill.png
create mode 100644 noatun/modules/kaiman/skins/k9/knine-nfont.jpg
create mode 100644 noatun/modules/kaiman/skins/k9/knine-nfont.png
create mode 100644 noatun/modules/kaiman/skins/k9/knine-nfont2.jpg
create mode 100644 noatun/modules/kaiman/skins/k9/knine-nfont2.png
create mode 100644 noatun/modules/kaiman/skins/k9/knine-normal2.jpg
create mode 100644 noatun/modules/kaiman/skins/k9/knine-normal2.png
create mode 100644 noatun/modules/kaiman/skins/k9/knine-vfont.jpg
create mode 100644 noatun/modules/kaiman/skins/k9/knine-vfont.png
create mode 100644 noatun/modules/kaiman/skins/k9/long2.jpg
create mode 100644 noatun/modules/kaiman/skins/k9/mask.png
create mode 100644 noatun/modules/kaiman/skins/k9/newtext.jpg
create mode 100644 noatun/modules/kaiman/skins/k9/newtext.png
create mode 100644 noatun/modules/kaiman/skins/k9/next.jpg
create mode 100644 noatun/modules/kaiman/skins/k9/pause.jpg
create mode 100644 noatun/modules/kaiman/skins/k9/play.jpg
create mode 100644 noatun/modules/kaiman/skins/k9/pos_item.jpg
create mode 100644 noatun/modules/kaiman/skins/k9/repeat.jpg
create mode 100644 noatun/modules/kaiman/skins/k9/repeat.png
create mode 100644 noatun/modules/kaiman/skins/k9/reverse.jpg
create mode 100644 noatun/modules/kaiman/skins/k9/shuffle.jpg
create mode 100644 noatun/modules/kaiman/skins/k9/shuffle.png
create mode 100644 noatun/modules/kaiman/skins/k9/skindata
create mode 100644 noatun/modules/kaiman/skins/k9/small-k.jpg
create mode 100644 noatun/modules/kaiman/skins/k9/small-k.png
create mode 100644 noatun/modules/kaiman/skins/k9/square.jpg
create mode 100644 noatun/modules/kaiman/skins/k9/square.png
create mode 100644 noatun/modules/kaiman/skins/k9/status.jpg
create mode 100644 noatun/modules/kaiman/skins/k9/status.png
create mode 100644 noatun/modules/kaiman/skins/k9/stop.jpg
create mode 100644 noatun/modules/kaiman/skins/k9/trans-pos.png
create mode 100644 noatun/modules/kaiman/skins/k9/trans-slide.png
create mode 100644 noatun/modules/kaiman/style.cpp
create mode 100644 noatun/modules/kaiman/style.h
create mode 100644 noatun/modules/kaiman/userinterface.cpp
create mode 100644 noatun/modules/kaiman/userinterface.h
create mode 100644 noatun/modules/keyz/Makefile.am
create mode 100644 noatun/modules/keyz/keyz.cpp
create mode 100644 noatun/modules/keyz/keyz.h
create mode 100644 noatun/modules/keyz/keyz.plugin
create mode 100644 noatun/modules/kjofol-skin/ChangeLog
create mode 100644 noatun/modules/kjofol-skin/Makefile.am
create mode 100644 noatun/modules/kjofol-skin/helpers.cpp
create mode 100644 noatun/modules/kjofol-skin/kjbackground.cpp
create mode 100644 noatun/modules/kjofol-skin/kjbackground.h
create mode 100644 noatun/modules/kjofol-skin/kjbutton.cpp
create mode 100644 noatun/modules/kjofol-skin/kjbutton.h
create mode 100644 noatun/modules/kjofol-skin/kjequalizer.cpp
create mode 100644 noatun/modules/kjofol-skin/kjequalizer.h
create mode 100644 noatun/modules/kjofol-skin/kjfont.cpp
create mode 100644 noatun/modules/kjofol-skin/kjfont.h
create mode 100644 noatun/modules/kjofol-skin/kjguisettingswidget.ui
create mode 100644 noatun/modules/kjofol-skin/kjloader.cpp
create mode 100644 noatun/modules/kjofol-skin/kjloader.h
create mode 100644 noatun/modules/kjofol-skin/kjofolui.plugin
create mode 100644 noatun/modules/kjofol-skin/kjprefs.cpp
create mode 100644 noatun/modules/kjofol-skin/kjprefs.h
create mode 100644 noatun/modules/kjofol-skin/kjseeker.cpp
create mode 100644 noatun/modules/kjofol-skin/kjseeker.h
create mode 100644 noatun/modules/kjofol-skin/kjskinselectorwidget.ui
create mode 100644 noatun/modules/kjofol-skin/kjsliders.cpp
create mode 100644 noatun/modules/kjofol-skin/kjsliders.h
create mode 100644 noatun/modules/kjofol-skin/kjtextdisplay.cpp
create mode 100644 noatun/modules/kjofol-skin/kjtextdisplay.h
create mode 100644 noatun/modules/kjofol-skin/kjvis.cpp
create mode 100644 noatun/modules/kjofol-skin/kjvis.h
create mode 100644 noatun/modules/kjofol-skin/kjwidget.cpp
create mode 100644 noatun/modules/kjofol-skin/kjwidget.h
create mode 100644 noatun/modules/kjofol-skin/noatunui.cpp
create mode 100644 noatun/modules/kjofol-skin/parser.cpp
create mode 100644 noatun/modules/kjofol-skin/parser.h
create mode 100644 noatun/modules/kjofol-skin/skins/HexoBronx/HexoBronx.rc
create mode 100644 noatun/modules/kjofol-skin/skins/HexoBronx/Makefile.am
create mode 100644 noatun/modules/kjofol-skin/skins/HexoBronx/README.txt
create mode 100644 noatun/modules/kjofol-skin/skins/HexoBronx/active.png
create mode 100644 noatun/modules/kjofol-skin/skins/HexoBronx/eckig_font.png
create mode 100644 noatun/modules/kjofol-skin/skins/HexoBronx/font.png
create mode 100644 noatun/modules/kjofol-skin/skins/HexoBronx/inactive.png
create mode 100644 noatun/modules/kjofol-skin/skins/HexoBronx/mask.png
create mode 100644 noatun/modules/kjofol-skin/skins/HexoBronx/pitch.png
create mode 100644 noatun/modules/kjofol-skin/skins/HexoBronx/splash.png
create mode 100644 noatun/modules/kjofol-skin/skins/HexoBronx/time_font.png
create mode 100644 noatun/modules/kjofol-skin/skins/HexoBronx/volume.png
create mode 100644 noatun/modules/kjofol-skin/skins/HexoBronx/volume_pitch_font.png
create mode 100644 noatun/modules/kjofol-skin/skins/Makefile.am
create mode 100644 noatun/modules/kjofol-skin/skins/kjofol/Makefile.am
create mode 100644 noatun/modules/kjofol-skin/skins/kjofol/kjofol.dck
create mode 100644 noatun/modules/kjofol-skin/skins/kjofol/kjofol.pl
create mode 100644 noatun/modules/kjofol-skin/skins/kjofol/kjofol.rc
create mode 100644 noatun/modules/kjofol-skin/skins/kjofol/kjofol.wsh
create mode 100644 noatun/modules/kjofol-skin/skins/kjofol/sg.png
create mode 100644 noatun/modules/kjofol-skin/skins/kjofol/sg_num.png
create mode 100644 noatun/modules/kjofol-skin/skins/kjofol/sg_seek.bmp
create mode 100644 noatun/modules/kjofol-skin/skins/kjofol/sg_seek.png
create mode 100644 noatun/modules/kjofol-skin/skins/kjofol/sg_text.png
create mode 100644 noatun/modules/kjofol-skin/skins/kjofol/sgdock.png
create mode 100644 noatun/modules/kjofol-skin/skins/kjofol/sgdock2.png
create mode 100644 noatun/modules/kjofol-skin/skins/kjofol/sgdocksk.png
create mode 100644 noatun/modules/kjofol-skin/skins/kjofol/sgdockvp.png
create mode 100644 noatun/modules/kjofol-skin/skins/kjofol/sgeq.png
create mode 100644 noatun/modules/kjofol-skin/skins/kjofol/sgpitch.png
create mode 100644 noatun/modules/kjofol-skin/skins/kjofol/sgpitchp.png
create mode 100644 noatun/modules/kjofol-skin/skins/kjofol/sgplist.png
create mode 100644 noatun/modules/kjofol-skin/skins/kjofol/sgplist2.png
create mode 100644 noatun/modules/kjofol-skin/skins/kjofol/sgpres1.png
create mode 100644 noatun/modules/kjofol-skin/skins/kjofol/sgpres2.png
create mode 100644 noatun/modules/kjofol-skin/skins/kjofol/sgpres3.png
create mode 100644 noatun/modules/kjofol-skin/skins/kjofol/sgvol.png
create mode 100644 noatun/modules/kjofol-skin/skins/kjofol/sgvolnum.png
create mode 100644 noatun/modules/kjofol-skin/skins/kjofol/sgvolpos.png
create mode 100644 noatun/modules/kjofol-skin/skins/kjofol/sgwshad.png
create mode 100644 noatun/modules/kjofol-skin/skins/kjofol/sgwshad2.png
create mode 100644 noatun/modules/kjofol-skin/skins/kjofol/sgwshdsk.png
create mode 100644 noatun/modules/kjofol-skin/skins/kjofol/sgwshvol.png
create mode 100644 noatun/modules/kjofol-skin/skins/kjofol/sgwshvp.png
create mode 100644 noatun/modules/kjofol-skin/skins/phong/Makefile.am
create mode 100644 noatun/modules/kjofol-skin/skins/phong/p_eq.png
create mode 100644 noatun/modules/kjofol-skin/skins/phong/p_main.png
create mode 100644 noatun/modules/kjofol-skin/skins/phong/p_mainback.png
create mode 100644 noatun/modules/kjofol-skin/skins/phong/p_numbers.png
create mode 100644 noatun/modules/kjofol-skin/skins/phong/p_playback.png
create mode 100644 noatun/modules/kjofol-skin/skins/phong/p_playlist.png
create mode 100644 noatun/modules/kjofol-skin/skins/phong/p_propos.png
create mode 100644 noatun/modules/kjofol-skin/skins/phong/p_text.png
create mode 100644 noatun/modules/kjofol-skin/skins/phong/p_volbar.png
create mode 100644 noatun/modules/kjofol-skin/skins/phong/p_volpos.png
create mode 100644 noatun/modules/kjofol-skin/skins/phong/phong.dck
create mode 100644 noatun/modules/kjofol-skin/skins/phong/phong.rc
create mode 100644 noatun/modules/kjofol-skin/skins/phong/phong.wsh
create mode 100644 noatun/modules/kjofol-skin/skins/phong/phong_readme.txt
create mode 100644 noatun/modules/kjofol-skin/skins/vibrocentric/Makefile.am
create mode 100644 noatun/modules/kjofol-skin/skins/vibrocentric/i_base.png
create mode 100644 noatun/modules/kjofol-skin/skins/vibrocentric/i_base2.png
create mode 100644 noatun/modules/kjofol-skin/skins/vibrocentric/i_eq.png
create mode 100644 noatun/modules/kjofol-skin/skins/vibrocentric/i_font.png
create mode 100644 noatun/modules/kjofol-skin/skins/vibrocentric/i_pl.png
create mode 100644 noatun/modules/kjofol-skin/skins/vibrocentric/i_pl2.png
create mode 100644 noatun/modules/kjofol-skin/skins/vibrocentric/i_pro.png
create mode 100644 noatun/modules/kjofol-skin/skins/vibrocentric/i_text.png
create mode 100644 noatun/modules/kjofol-skin/skins/vibrocentric/i_vol.png
create mode 100644 noatun/modules/kjofol-skin/skins/vibrocentric/i_volpos.png
create mode 100644 noatun/modules/kjofol-skin/skins/vibrocentric/vibrocentric.dck
create mode 100644 noatun/modules/kjofol-skin/skins/vibrocentric/vibrocentric.rc
create mode 100644 noatun/modules/kjofol-skin/skins/vibrocentric/vibrocentric.wsh
create mode 100644 noatun/modules/kjofol-skin/skins/vibrocentric/vibrocentric_readme.txt
create mode 100644 noatun/modules/making_plugins
create mode 100644 noatun/modules/marquis/Makefile.am
create mode 100644 noatun/modules/marquis/marquis.cpp
create mode 100644 noatun/modules/marquis/marquis.h
create mode 100644 noatun/modules/marquis/marquis.plugin
create mode 100644 noatun/modules/marquis/plugin.cpp
create mode 100644 noatun/modules/metatag/HANDLED_ITEMS
create mode 100644 noatun/modules/metatag/Makefile.am
create mode 100644 noatun/modules/metatag/edit.cpp
create mode 100644 noatun/modules/metatag/edit.h
create mode 100644 noatun/modules/metatag/metatag.cpp
create mode 100644 noatun/modules/metatag/metatag.h
create mode 100644 noatun/modules/metatag/metatag.plugin
create mode 100644 noatun/modules/monoscope/Makefile.am
create mode 100644 noatun/modules/monoscope/monoscope.cpp
create mode 100644 noatun/modules/monoscope/monoscope.h
create mode 100644 noatun/modules/monoscope/monoscope.plugin
create mode 100644 noatun/modules/net/Makefile.am
create mode 100644 noatun/modules/net/net.cpp
create mode 100644 noatun/modules/net/net.h
create mode 100644 noatun/modules/net/net.plugin
create mode 100644 noatun/modules/noatunui/Makefile.am
create mode 100644 noatun/modules/noatunui/noatunui.cpp
create mode 100644 noatun/modules/noatunui/noatunui.plugin
create mode 100644 noatun/modules/noatunui/userinterface.cpp
create mode 100644 noatun/modules/noatunui/userinterface.h
create mode 100644 noatun/modules/simple/Makefile.am
create mode 100644 noatun/modules/simple/back.xpm
create mode 100644 noatun/modules/simple/forward.xpm
create mode 100644 noatun/modules/simple/noatunui.cpp
create mode 100644 noatun/modules/simple/pause.xpm
create mode 100644 noatun/modules/simple/play.xpm
create mode 100644 noatun/modules/simple/playlist.xpm
create mode 100644 noatun/modules/simple/propertiesdialog.ui
create mode 100644 noatun/modules/simple/propertiesdialog.ui.h
create mode 100644 noatun/modules/simple/simple.plugin
create mode 100644 noatun/modules/simple/simpleui.rc
create mode 100644 noatun/modules/simple/stop.xpm
create mode 100644 noatun/modules/simple/userinterface.cpp
create mode 100644 noatun/modules/simple/userinterface.h
create mode 100644 noatun/modules/simple/volume.xpm
create mode 100644 noatun/modules/splitplaylist/LICENSE
create mode 100644 noatun/modules/splitplaylist/Makefile.am
create mode 100644 noatun/modules/splitplaylist/find.cpp
create mode 100644 noatun/modules/splitplaylist/find.h
create mode 100644 noatun/modules/splitplaylist/playlist.cpp
create mode 100644 noatun/modules/splitplaylist/playlist.h
create mode 100644 noatun/modules/splitplaylist/splitplaylist.cpp
create mode 100644 noatun/modules/splitplaylist/splitplaylist.plugin
create mode 100644 noatun/modules/splitplaylist/splui.rc
create mode 100644 noatun/modules/splitplaylist/view.cpp
create mode 100644 noatun/modules/splitplaylist/view.h
create mode 100644 noatun/modules/systray/Makefile.am
create mode 100644 noatun/modules/systray/cmodule.cpp
create mode 100644 noatun/modules/systray/cmodule.h
create mode 100644 noatun/modules/systray/kitsystemtray.cpp
create mode 100644 noatun/modules/systray/kitsystemtray.h
create mode 100644 noatun/modules/systray/noatunui.cpp
create mode 100644 noatun/modules/systray/systray.cpp
create mode 100644 noatun/modules/systray/systray.h
create mode 100644 noatun/modules/systray/systray.plugin
create mode 100644 noatun/modules/systray/systrayui.rc
create mode 100644 noatun/modules/systray/yhconfig.kcfg
create mode 100644 noatun/modules/systray/yhconfig.kcfgc
create mode 100644 noatun/modules/systray/yhconfigwidget.ui
create mode 100644 noatun/modules/voiceprint/Makefile.am
create mode 100644 noatun/modules/voiceprint/prefs.cpp
create mode 100644 noatun/modules/voiceprint/prefs.h
create mode 100644 noatun/modules/voiceprint/voiceprint.cpp
create mode 100644 noatun/modules/voiceprint/voiceprint.h
create mode 100644 noatun/modules/voiceprint/voiceprint.plugin
create mode 100644 noatun/modules/winskin/Makefile.am
create mode 100644 noatun/modules/winskin/fileInfo.cpp
create mode 100644 noatun/modules/winskin/fileInfo.h
create mode 100644 noatun/modules/winskin/guiSpectrumAnalyser.cpp
create mode 100644 noatun/modules/winskin/guiSpectrumAnalyser.h
create mode 100644 noatun/modules/winskin/mimetypes/Makefile.am
create mode 100644 noatun/modules/winskin/mimetypes/interface/Makefile.am
create mode 100644 noatun/modules/winskin/mimetypes/interface/x-winamp-skin.desktop
create mode 100644 noatun/modules/winskin/plugin.cpp
create mode 100644 noatun/modules/winskin/skinMap.h
create mode 100644 noatun/modules/winskin/skins/Makefile.am
create mode 100644 noatun/modules/winskin/skins/winamp/BALANCE.BMP
create mode 100644 noatun/modules/winskin/skins/winamp/CBUTTONS.BMP
create mode 100644 noatun/modules/winskin/skins/winamp/FONT.BMP
create mode 100644 noatun/modules/winskin/skins/winamp/MAIN.BMP
create mode 100644 noatun/modules/winskin/skins/winamp/MONOSTER.BMP
create mode 100644 noatun/modules/winskin/skins/winamp/Makefile.am
create mode 100644 noatun/modules/winskin/skins/winamp/NUMS_EX.BMP
create mode 100644 noatun/modules/winskin/skins/winamp/PLAYPAUS.BMP
create mode 100644 noatun/modules/winskin/skins/winamp/POSBAR.BMP
create mode 100644 noatun/modules/winskin/skins/winamp/SHUFREP.BMP
create mode 100644 noatun/modules/winskin/skins/winamp/SPEC.BMP
create mode 100644 noatun/modules/winskin/skins/winamp/TEXT.BMP
create mode 100644 noatun/modules/winskin/skins/winamp/TITLEBAR.BMP
create mode 100644 noatun/modules/winskin/skins/winamp/VISCOLOR.TXT
create mode 100644 noatun/modules/winskin/skins/winamp/VOLUME.BMP
create mode 100644 noatun/modules/winskin/vis/Makefile.am
create mode 100644 noatun/modules/winskin/vis/WinSkinFFT.mcopclass
create mode 100644 noatun/modules/winskin/vis/realFFT.cpp
create mode 100644 noatun/modules/winskin/vis/realFFT.h
create mode 100644 noatun/modules/winskin/vis/realFFTFilter.cpp
create mode 100644 noatun/modules/winskin/vis/realFFTFilter.h
create mode 100644 noatun/modules/winskin/vis/visQueue.cpp
create mode 100644 noatun/modules/winskin/vis/visQueue.h
create mode 100644 noatun/modules/winskin/vis/winSkinFFT_impl.cpp
create mode 100644 noatun/modules/winskin/vis/winSkinFFT_impl.h
create mode 100644 noatun/modules/winskin/vis/winskinvis.idl
create mode 100644 noatun/modules/winskin/waBalanceSlider.cpp
create mode 100644 noatun/modules/winskin/waBalanceSlider.h
create mode 100644 noatun/modules/winskin/waButton.cpp
create mode 100644 noatun/modules/winskin/waButton.h
create mode 100644 noatun/modules/winskin/waClutterbar.cpp
create mode 100644 noatun/modules/winskin/waClutterbar.h
create mode 100644 noatun/modules/winskin/waColor.cpp
create mode 100644 noatun/modules/winskin/waColor.h
create mode 100644 noatun/modules/winskin/waDigit.cpp
create mode 100644 noatun/modules/winskin/waDigit.h
create mode 100644 noatun/modules/winskin/waIndicator.cpp
create mode 100644 noatun/modules/winskin/waIndicator.h
create mode 100644 noatun/modules/winskin/waInfo.cpp
create mode 100644 noatun/modules/winskin/waInfo.h
create mode 100644 noatun/modules/winskin/waJumpSlider.cpp
create mode 100644 noatun/modules/winskin/waJumpSlider.h
create mode 100644 noatun/modules/winskin/waLabel.cpp
create mode 100644 noatun/modules/winskin/waLabel.h
create mode 100644 noatun/modules/winskin/waMain.cpp
create mode 100644 noatun/modules/winskin/waMain.h
create mode 100644 noatun/modules/winskin/waRegion.cpp
create mode 100644 noatun/modules/winskin/waRegion.h
create mode 100644 noatun/modules/winskin/waShadeMapping.h
create mode 100644 noatun/modules/winskin/waSkin.cpp
create mode 100644 noatun/modules/winskin/waSkin.h
create mode 100644 noatun/modules/winskin/waSkinManager.cpp
create mode 100644 noatun/modules/winskin/waSkinManager.h
create mode 100644 noatun/modules/winskin/waSkinMapping.h
create mode 100644 noatun/modules/winskin/waSkinModel.cpp
create mode 100644 noatun/modules/winskin/waSkinModel.h
create mode 100644 noatun/modules/winskin/waSkins.h
create mode 100644 noatun/modules/winskin/waSlider.cpp
create mode 100644 noatun/modules/winskin/waSlider.h
create mode 100644 noatun/modules/winskin/waStatus.cpp
create mode 100644 noatun/modules/winskin/waStatus.h
create mode 100644 noatun/modules/winskin/waTitleBar.cpp
create mode 100644 noatun/modules/winskin/waTitleBar.h
create mode 100644 noatun/modules/winskin/waVolumeSlider.cpp
create mode 100644 noatun/modules/winskin/waVolumeSlider.h
create mode 100644 noatun/modules/winskin/waWidget.cpp
create mode 100644 noatun/modules/winskin/waWidget.h
create mode 100644 noatun/modules/winskin/winSkinConfig.cpp
create mode 100644 noatun/modules/winskin/winSkinConfig.h
create mode 100644 noatun/modules/winskin/winSkinVis.cpp
create mode 100644 noatun/modules/winskin/winSkinVis.h
create mode 100644 noatun/modules/winskin/winskin.plugin
(limited to 'noatun/modules')
diff --git a/noatun/modules/Makefile.am b/noatun/modules/Makefile.am
new file mode 100644
index 00000000..90c298d3
--- /dev/null
+++ b/noatun/modules/Makefile.am
@@ -0,0 +1,4 @@
+SUBDIRS = artseffects \
+ dcopiface excellent htmlexport infrared kaiman keyz kjofol-skin \
+ marquis metatag monoscope net noatunui splitplaylist systray \
+ voiceprint winskin simple
diff --git a/noatun/modules/artseffects/ExtraStereo.mcopclass b/noatun/modules/artseffects/ExtraStereo.mcopclass
new file mode 100644
index 00000000..7fb466ec
--- /dev/null
+++ b/noatun/modules/artseffects/ExtraStereo.mcopclass
@@ -0,0 +1,5 @@
+Buildable=true
+Interface=ExtraStereo,Arts::StereoEffect,Arts::SynthModule,Arts::Object
+Language=C++
+Library=libartseffects.la
+Use=directly
\ No newline at end of file
diff --git a/noatun/modules/artseffects/ExtraStereoGuiFactory.mcopclass b/noatun/modules/artseffects/ExtraStereoGuiFactory.mcopclass
new file mode 100644
index 00000000..5b5521ae
--- /dev/null
+++ b/noatun/modules/artseffects/ExtraStereoGuiFactory.mcopclass
@@ -0,0 +1,5 @@
+Buildable=true
+Interface=ExtraStereoGuiFactory,Arts::GuiFactory,Arts::Object
+Library=libartseffects.la
+Language=C++
+CanCreate=ExtraStereo
diff --git a/noatun/modules/artseffects/Makefile.am b/noatun/modules/artseffects/Makefile.am
new file mode 100644
index 00000000..49a5bb99
--- /dev/null
+++ b/noatun/modules/artseffects/Makefile.am
@@ -0,0 +1,25 @@
+INCLUDES= -I$(top_builddir)/arts/gui/common -I$(top_srcdir)/arts/gui/common -I$(kde_includes)/arts $(all_includes)
+lib_LTLIBRARIES = libartseffects.la
+#libartseffectsui.la
+
+libartseffects_la_SOURCES = artseffects.cc extrastereo_impl.cc
+libartseffects_la_COMPILE_FIRST = artseffects.cc
+libartseffects_la_LDFLAGS = $(all_libraries) -module -avoid-version -no-undefined
+libartseffects_la_LIBADD = $(top_builddir)/arts/gui/common/libartsgui_idl.la -lkmedia2_idl -lsoundserver_idl -lartsflow
+
+
+artseffects.mcopclass: artseffects.h
+artseffects.mcoptype: artseffects.h
+artseffects.cc artseffects.h: $(srcdir)/artseffects.idl $(MCOPIDL)
+ $(MCOPIDL) -t -I$(top_builddir)/arts/gui/common -I$(top_srcdir)/arts/gui/common -I$(kde_includes)/arts $(srcdir)/artseffects.idl
+
+CLEANFILES = artsmidi.cc artsmidi.h artsmidi.mcoptype artsmidi.mcopclass
+
+mcoptypedir = $(libdir)/mcop
+mcoptype_DATA = artseffects.mcoptype artseffects.mcopclass
+
+mcopclassdir = $(libdir)/mcop
+mcopclass_DATA = ExtraStereo.mcopclass VoiceRemoval.mcopclass RawWriter.mcopclass ExtraStereoGuiFactory.mcopclass
+
+artseffects.lo: artseffects.h ../../../arts/gui/common/artsgui.h
+extrastereo_impl.lo: ../../../arts/gui/common/artsgui.h artseffects.h
diff --git a/noatun/modules/artseffects/RawWriter.mcopclass b/noatun/modules/artseffects/RawWriter.mcopclass
new file mode 100644
index 00000000..535db20a
--- /dev/null
+++ b/noatun/modules/artseffects/RawWriter.mcopclass
@@ -0,0 +1,4 @@
+Buildable=true
+Interface=RawWriter,Arts::StereoEffect,Arts::SynthModule,Arts::Object
+Language=C++
+Library=libartseffects.la
diff --git a/noatun/modules/artseffects/VoiceRemoval.mcopclass b/noatun/modules/artseffects/VoiceRemoval.mcopclass
new file mode 100644
index 00000000..661029bd
--- /dev/null
+++ b/noatun/modules/artseffects/VoiceRemoval.mcopclass
@@ -0,0 +1,5 @@
+Buildable=true
+Interface=VoiceRemoval,Arts::StereoEffect,Arts::SynthModule,Arts::Object
+Language=C++
+Library=libartseffects.la
+Use=directly
diff --git a/noatun/modules/artseffects/artseffects.idl b/noatun/modules/artseffects/artseffects.idl
new file mode 100644
index 00000000..86fdea16
--- /dev/null
+++ b/noatun/modules/artseffects/artseffects.idl
@@ -0,0 +1,17 @@
+#include
+#include
+
+interface ExtraStereo : Arts::StereoEffect {
+ attribute float intensity;
+};
+
+interface VoiceRemoval : Arts::StereoEffect {
+};
+
+interface RawWriter : Arts::StereoEffect
+{
+};
+
+interface ExtraStereoGuiFactory : Arts::GuiFactory {
+};
+
diff --git a/noatun/modules/artseffects/effect.cpp b/noatun/modules/artseffects/effect.cpp
new file mode 100644
index 00000000..8d1c8b69
--- /dev/null
+++ b/noatun/modules/artseffects/effect.cpp
@@ -0,0 +1 @@
+
diff --git a/noatun/modules/artseffects/extrastereo_impl.cc b/noatun/modules/artseffects/extrastereo_impl.cc
new file mode 100644
index 00000000..3dc92705
--- /dev/null
+++ b/noatun/modules/artseffects/extrastereo_impl.cc
@@ -0,0 +1,153 @@
+#include "artsgui.h"
+#include "artseffects.h"
+#include "stdsynthmodule.h"
+#include
+#include
+#include
+#include
+#include
+#include "debug.h"
+#include
+#include
+
+using namespace Arts;
+
+class ExtraStereo_impl : virtual public ExtraStereo_skel,
+ virtual public StdSynthModule
+{
+ float _intensity;
+// StereoEffectGUI mStereoEffectGUI;
+public:
+ float intensity() { return _intensity; }
+ void intensity(float newValue) {
+ _intensity = newValue;
+// cout << " **** INTENSITY = " << newValue << endl;
+ }
+
+ ExtraStereo_impl() : _intensity(2.0)
+ {
+// mStereoEffectGUI = DynamicCast(server.createObject("Arts::ExtraStereo"));
+// DynamicRequest(mStereoEffectGUI).method("_set_effect").param(*this).invoke();
+
+ }
+ void calculateBlock(unsigned long samples)
+ {
+ unsigned long i;
+
+ for(i = 0; i < samples; i++)
+ {
+ float average = (inleft[i] + inright[i]) / 2.0;
+
+ float outleftnew = average + (inleft[i] - average) * _intensity;
+ if(outleftnew > 1.0) outleft[i] = 1.0;
+ else if(outleftnew < -1.0) outleft[i] = -1.0;
+ else outleft[i] = outleftnew;
+
+ float outrightnew = average + (inright[i] - average) * _intensity;
+ if(outrightnew > 1.0) outright[i] = 1.0;
+ else if(outrightnew < -1.0) outright[i] = -1.0;
+ else outright[i] = outrightnew;
+ }
+ }
+};
+
+
+class VoiceRemoval_impl : virtual public VoiceRemoval_skel,
+ virtual public StdSynthModule
+{
+public:
+
+ VoiceRemoval_impl()
+ {
+
+ }
+ // This is based on the work of Anders Carlsson
+ void calculateBlock(unsigned long samples)
+ {
+ for (unsigned i = 0; i < samples; i++)
+ {
+ float outleftnew=inleft[i]-inright[i];
+ float outrightnew=inright[i]-inleft[i];
+
+ if (inleft[i] < -1.0) outleftnew = -1.0;
+ else if (inleft[i] > 1.0) outleftnew = 1.0;
+
+ if (inright[i] < -1.0) outrightnew = -1.0;
+ else if (inright[i] > 1.0) outrightnew = 1.0;
+ outleft[i] = outleftnew;
+ outright[i] = outrightnew;
+ }
+
+ }
+};
+
+class RawWriter_impl : virtual public RawWriter_skel,
+ virtual public StdSynthModule
+{
+ int mFd;
+public:
+ RawWriter_impl()
+ {
+ std::string file=getenv("HOME");
+ file.append("/arts-write.raw");
+ mFd=::open(file.c_str(), O_RDWR | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR);
+ }
+ ~RawWriter_impl()
+ {
+ ::close(mFd);
+ }
+ // This is based on the work of Anders Carlsson
+ void calculateBlock(unsigned long samples)
+ {
+ for (unsigned i = 0; i < samples; i++)
+ {
+ outleft[i]=inleft[i];
+ outright[i]=inright[i];
+ }
+ unsigned char *buffer=new unsigned char[samples*4];
+ convert_stereo_2float_i16le(samples,
+ inleft, inright, buffer);
+ ::write(mFd, (const void*)buffer, samples*4);
+ delete [] buffer;
+ }
+};
+
+class ExtraStereoGuiFactory_impl : public ExtraStereoGuiFactory_skel
+{
+public:
+ Widget createGui(Object object)
+ {
+ arts_return_val_if_fail(!object.isNull(), Arts::Widget::null());
+
+ ExtraStereo e = DynamicCast(object);
+ arts_return_val_if_fail(!e.isNull(), Arts::Widget::null());
+
+ HBox hbox;
+ hbox.width(80);
+ hbox.height(80);
+ hbox.show();
+
+
+ Poti intense;
+ intense.caption("Intensity");
+ intense.color("red");
+ intense.min(0);
+ intense.max(5);
+ intense.value(e.intensity());
+ intense.parent(hbox);
+ intense.show();
+ connect(intense,"value_changed", e, "intensity");
+
+ hbox._addChild(intense,"intensityWidget");
+
+ return hbox;
+ }
+};
+
+
+REGISTER_IMPLEMENTATION(ExtraStereo_impl);
+REGISTER_IMPLEMENTATION(VoiceRemoval_impl);
+REGISTER_IMPLEMENTATION(RawWriter_impl);
+REGISTER_IMPLEMENTATION(ExtraStereoGuiFactory_impl);
+
+
diff --git a/noatun/modules/artseffects/extrastereogui_impl.cc b/noatun/modules/artseffects/extrastereogui_impl.cc
new file mode 100644
index 00000000..5952c80e
--- /dev/null
+++ b/noatun/modules/artseffects/extrastereogui_impl.cc
@@ -0,0 +1,28 @@
+#include
+#include
+#include "extrastereogui_impl.h"
+
+namespace Arts {
+
+ExtraStereoGUI_impl::ExtraStereoGUI_impl() : QWidget(0)
+{
+ (new QHBoxLayout(this))->setAutoAdd(true);
+ mSlider=new QSlider(0,100,10, 0, Horizontal, this);
+ mSlider->show();
+ show();
+}
+
+void ExtraStereoGUI_impl::changeSlider(int v)
+{
+ effect.intensity((float)v/100.0);
+}
+
+void ExtraStereoGUI_impl::setEffect(StereoEffect newEffect)
+{
+ effect = DynamicCast(newEffect);
+}
+
+REGISTER_IMPLEMENTATION(ExtraStereoGUI_impl);
+
+};
+
diff --git a/noatun/modules/artseffects/extrastereogui_impl.h b/noatun/modules/artseffects/extrastereogui_impl.h
new file mode 100644
index 00000000..56104ae8
--- /dev/null
+++ b/noatun/modules/artseffects/extrastereogui_impl.h
@@ -0,0 +1,26 @@
+#include "artseffects.h"
+#include "stdsynthmodule.h"
+#include
+
+class QSlider;
+
+namespace Arts {
+
+class ExtraStereoGUI_impl : public QWidget, virtual public ExtraStereoGUI_skel
+{
+public:
+ ExtraStereo effect;
+
+ ExtraStereoGUI_impl();
+
+ void setEffect(StereoEffect newEffect);
+
+public slots:
+ void changeSlider(int);
+
+private:
+ QSlider *mSlider;
+};
+
+
+};
diff --git a/noatun/modules/dcopiface/Makefile.am b/noatun/modules/dcopiface/Makefile.am
new file mode 100644
index 00000000..6d55fc72
--- /dev/null
+++ b/noatun/modules/dcopiface/Makefile.am
@@ -0,0 +1,16 @@
+INCLUDES= -I$(top_builddir)/noatun/library -I$(top_srcdir)/noatun/library -I$(kde_includes)/arts $(all_includes)
+kde_module_LTLIBRARIES = noatun_dcopiface.la
+
+noatun_dcopiface_la_SOURCES = dcopiface.cpp dcopiface.skel
+
+noatun_dcopiface_la_LDFLAGS = $(all_libraries) -module -avoid-version -no-undefined
+noatun_dcopiface_la_LIBADD = $(LIB_KFILE) $(top_builddir)/noatun/library/libnoatun.la
+
+noatun_dcopiface_la_METASOURCES = AUTO
+
+noinst_HEADERS = dcopiface.h
+
+noatun_modules_dcopiface_DATA = dcopiface.plugin
+noatun_modules_dcopifacedir = $(kde_datadir)/noatun
+
+dcopiface.lo: ../../library/noatunarts/noatunarts.h
diff --git a/noatun/modules/dcopiface/dcopiface.cpp b/noatun/modules/dcopiface/dcopiface.cpp
new file mode 100644
index 00000000..93ef6160
--- /dev/null
+++ b/noatun/modules/dcopiface/dcopiface.cpp
@@ -0,0 +1,250 @@
+#include "dcopiface.h"
+
+#include
+#include
+#include
+#include
+
+#include
+
+extern "C"
+{
+ KDE_EXPORT NIF *create_plugin()
+ {
+ return new NIF();
+ }
+}
+
+
+NIF::NIF() : Plugin(), DCOPObject("Noatun")
+{
+ mLastVolume = 0;
+// connect(napp->player(), SIGNAL(newSong()), SLOT(newSongPlaying()));
+}
+
+NIF::~NIF()
+{
+ kapp->dcopClient()->emitDCOPSignal("exiting()", QByteArray());
+}
+
+void NIF::toggleListView()
+{
+ napp->player()->toggleListView();
+}
+
+void NIF::handleButtons()
+{
+ napp->player()->handleButtons();
+}
+
+void NIF::removeCurrent()
+{
+ napp->player()->removeCurrent();
+}
+
+void NIF::back()
+{
+ napp->player()->back();
+}
+
+void NIF::stop()
+{
+ napp->player()->stop();
+}
+
+void NIF::play()
+{
+ napp->player()->play();
+}
+
+void NIF::playpause()
+{
+ napp->player()->playpause();
+}
+
+void NIF::forward()
+{
+ napp->player()->forward();
+}
+
+void NIF::skipTo(int msec)
+{
+ napp->player()->skipTo(msec);
+}
+
+void NIF::loop()
+{
+ napp->player()->loop();
+}
+
+void NIF::setVolume(int i)
+{
+ napp->player()->setVolume(i);
+}
+
+int NIF::volume()
+{
+ return napp->player()->volume();
+}
+
+void NIF::volumeUp()
+{
+ napp->player()->setVolume(napp->player()->volume() + 5);
+}
+
+void NIF::volumeDown()
+{
+ napp->player()->setVolume(napp->player()->volume() - 5);
+}
+
+void NIF::toggleMute()
+{
+ int currVol = napp->player()->volume();
+ if (currVol == 0)
+ {
+ napp->player()->setVolume(mLastVolume);
+ }
+ else
+ {
+ mLastVolume = currVol;
+ napp->player()->setVolume(0);
+ }
+}
+
+int NIF::length() // returns -1 if there's no playobject
+{
+ return napp->player()->getLength();
+}
+
+int NIF::position() // returns -1 if there's no playobject
+{
+ return napp->player()->getTime();
+}
+
+int NIF::state()
+{
+ if (napp->player()->isPlaying())
+ return 2;
+ if (napp->player()->isPaused())
+ return 1;
+
+ return 0; // default to stopped
+}
+
+QString NIF::lengthString()
+{
+ return napp->player()->current() ? napp->player()->current().lengthString() : "";
+}
+
+QString NIF::timeString()
+{
+ return napp->player()->lengthString();
+}
+
+QString NIF::title()
+{
+ return napp->player()->current() ? napp->player()->current().title() : "";
+}
+
+void NIF::setCurrentProperty(const QString &key, const QString &value)
+{
+ if (!napp->player()->current()) return;
+
+ napp->player()->current().setProperty(key, value);
+}
+
+QString NIF::currentProperty(const QString &key)
+{
+ if (!napp->player()->current()) return "";
+
+ return napp->player()->current().property(key);
+}
+
+void NIF::clearCurrentProperty(const QString &key)
+{
+ if (!napp->player()->current()) return;
+
+ return napp->player()->current().clearProperty(key);
+}
+
+
+QCString NIF::visStack()
+{
+ return napp->player()->engine()->visualizationStack()->toString().c_str();
+}
+
+QCString NIF::session()
+{
+ return napp->player()->engine()->session()->toString().c_str();
+}
+
+// adds one file to the playlist
+void NIF::addFile(const QString& f, bool autoplay)
+{
+ napp->player()->openFile(f, false, autoplay);
+}
+
+// Adds a bunch of files to the playlist
+void NIF::addFile(const QStringList &f, bool autoplay)
+{
+ for (QStringList::ConstIterator it = f.begin(); it != f.end(); ++it )
+ napp->player()->openFile(*it, false, autoplay);
+}
+
+void NIF::loadPlugin(const QString &spec)
+{
+ napp->libraryLoader()->add(spec);
+}
+
+QStringList NIF::availablePlugins() {
+ QStringList available_spec_files;
+ QValueList available;
+
+ available = napp->libraryLoader()->available();
+
+ QValueList::iterator it;
+ for (it = available.begin();it != available.end();it++) {
+ available_spec_files += (*it).specfile;
+ }
+
+ return available_spec_files;
+}
+
+QStringList NIF::loadedPlugins() {
+ QStringList loaded_spec_files;
+ QValueList loaded;
+
+ loaded = napp->libraryLoader()->loaded();
+
+ QValueList::iterator it;
+ for (it = loaded.begin();it != loaded.end();it++) {
+ loaded_spec_files += (*it).specfile;
+ }
+
+ return loaded_spec_files;
+}
+
+bool NIF::unloadPlugin(const QString &spec)
+{
+ return napp->libraryLoader()->remove(spec);
+}
+
+QStringList NIF::mimeTypes()
+{
+ return napp->mimeTypes();
+}
+
+QCString NIF::version()
+{
+ return napp->version();
+}
+
+void NIF::newSongPlaying()
+{
+ kapp->dcopClient()->emitDCOPSignal("newFile()", QByteArray());
+}
+
+void NIF::clear()
+{
+ napp->playlist()->clear();
+}
diff --git a/noatun/modules/dcopiface/dcopiface.h b/noatun/modules/dcopiface/dcopiface.h
new file mode 100644
index 00000000..4b9fe5e7
--- /dev/null
+++ b/noatun/modules/dcopiface/dcopiface.h
@@ -0,0 +1,104 @@
+#ifndef DCOPIFACE_H
+#define DCOPIFACE_H
+
+#include
+#include
+
+#include
+#include
+
+class KDE_EXPORT NIF : public Plugin, public DCOPObject
+{
+K_DCOP
+
+public:
+ NIF();
+ ~NIF();
+
+private slots:
+ void newSongPlaying();
+
+k_dcop:
+ void toggleListView();
+ void handleButtons();
+ void removeCurrent();
+
+ void back();
+ void stop();
+ void play();
+ void playpause();
+ void forward();
+ void skipTo(int);
+ void loop();
+
+ void setVolume(int);
+ int volume();
+ void volumeUp();
+ void volumeDown();
+ void toggleMute();
+
+ /**
+ * length in milliseconds
+ **/
+ int length();
+ /**
+ * position in milliseconds
+ **/
+ int position();
+
+ /**
+ * 0 stopped
+ * 1 paused
+ * 2 playing
+ **/
+ int state();
+
+ QString lengthString();
+ QString timeString();
+
+ QString title();
+
+ /**
+ * set a property for the current song
+ **/
+ void setCurrentProperty(const QString &key, const QString &value);
+ /**
+ * get a property from the current song
+ **/
+ QString currentProperty(const QString &key);
+ /**
+ * clear a property from the current song
+ **/
+ void clearCurrentProperty(const QString &key);
+
+ QCString visStack();
+ QCString session();
+
+ void addFile(const QString& f, bool autoplay);
+ void addFile(const QStringList &f, bool autoplay);
+
+ void loadPlugin(const QString &specFile);
+ QStringList availablePlugins();
+ QStringList loadedPlugins();
+ bool unloadPlugin(const QString &specFile);
+
+ QStringList mimeTypes();
+ QCString version();
+
+ /**
+ * clear the playlist
+ **/
+ void clear();
+private:
+ int mLastVolume; // remember volume for mute/unmute
+
+#ifdef DOCUMENTATION_BLEH_BLEH_DONT_TRY_COMPILING_THIS
+signals:
+ void exiting();
+ void newFile();
+
+#endif
+};
+
+#endif
+
diff --git a/noatun/modules/dcopiface/dcopiface.plugin b/noatun/modules/dcopiface/dcopiface.plugin
new file mode 100644
index 00000000..d98a661f
--- /dev/null
+++ b/noatun/modules/dcopiface/dcopiface.plugin
@@ -0,0 +1,137 @@
+Filename=noatun_dcopiface.la
+Author=Charles Samuels
+Site=http://www.derkarl.org/noatun
+Email=charles@kde.org
+Type=hidden
+License=Artistic
+Name=DCOP Interface
+Name[af]=Dcop Koppelvlak
+Name[ar]=واجهة DCOP
+Name[az]=DCOP Ara üzü
+Name[bn]=ডিকপ ইন্টারফেস
+Name[br]=Etrefas DCOP
+Name[ca]=Interfície DCOP
+Name[cs]=Rozhraní DCOP
+Name[cy]=Rhyngwyneb DCOP
+Name[da]=DCOP-grænseflade
+Name[de]=DCOP-Schnittstelle
+Name[el]=Διασύνδεση DCOP
+Name[eo]=DCOP-interfaco
+Name[es]=Interfaz de DCOP
+Name[et]=DCOP liides
+Name[eu]=DCOP interfazea
+Name[fa]=واسط DCOP
+Name[fi]=DCOP-rajapinta
+Name[fr]=Interface DCOP
+Name[ga]=Comhéadan DCOP
+Name[gl]=Interface DCOP
+Name[he]=ממשק DCOP
+Name[hi]= डीकॉप इंटरफेस
+Name[hr]=DCOP sučelje
+Name[hu]=DCOP-felület
+Name[is]=DCOP aðgangur
+Name[it]=Interfaccia DCOP
+Name[ja]=DCOP インターフェース
+Name[kk]=DCOP интерфейсі
+Name[km]=ចំណុចប្រទាក់ DCOP
+Name[ko]=DCOP 인터페이스
+Name[lt]=DCOP sąsaja
+Name[lv]=DCOP Starpseja
+Name[mk]=Интерфејс DCOP
+Name[ms]=Antaramuka DCOP
+Name[mt]=Interfaċċja DCOP
+Name[nb]=DCOP-grensesnitt
+Name[nds]=DCOP-Koppelsteed
+Name[ne]=DCOP इन्टरफेस
+Name[nl]=DCOP-interface
+Name[nn]=DCOP-grensesnitt
+Name[pa]=DCOP ਇੰਟਰਫੇਸ
+Name[pl]=Interfejs DCOP
+Name[pt]=Interface do DCOP
+Name[pt_BR]=Interface DCOP
+Name[ro]=Interfaţă DCOP
+Name[ru]=Интерфейс DCOP
+Name[se]=DCOP-lakta
+Name[sk]=Rozhranie DCOP
+Name[sl]=Vmesnik DCOP
+Name[sr]=DCOP интерфејс
+Name[sr@Latn]=DCOP interfejs
+Name[sv]=DCOP-gränssnitt
+Name[ta]=DCOP இடைமுகம்
+Name[tg]=Интерфейси DCOP
+Name[th]=ส่วนติดต่อ DCOP
+Name[tr]=DCOP Arayüzü
+Name[uk]=Інтерфейс DCOP
+Name[uz]=DCOP interfeysi
+Name[uz@cyrillic]=DCOP интерфейси
+Name[xh]=Ujongano lwe DCOP
+Name[zh_CN]=DCOP 接口
+Name[zh_HK]=DCOP 介面
+Name[zh_TW]=DCOP 介面
+Name[zu]=Uxhumano olubhekeneyo lwe DCOP
+Comment=DCOP Interface for Inter-Process Communication
+Comment[af]=Dcop Koppelvlak vir Inter-Process Kommunikasie
+Comment[ar]=واجهة DCOP لإستعراض تواصل عمليات النظام مع بعضها
+Comment[az]=IPC üçün DCOP Ara üzü
+Comment[bg]=Интерфейс за комуникация между процесите
+Comment[bn]=আন্তঃপ্রক্রিয়া যোগাযোগের জন্য ডিকপ ইন্টারফেস
+Comment[bs]=DCOP interfejs za međuprocesnu komunikaciju
+Comment[ca]=Interfície DCOP per la comunicació entre processos
+Comment[cs]=Rozhraní DCOP pro mezi procesovou komunikaci
+Comment[cy]=Rhyngwyneb DCOP ar gyfer Cyfathrebu Rhyngbrosesol
+Comment[da]=DCOP-grænseflade for interproceskommunikation
+Comment[de]=DCOP-Schnittstelle für die Kommunikation zwischen Prozessen
+Comment[el]=Διασύνδεση DCOP για επικοινωνία μεταξύ διεργασιών (IPC)
+Comment[eo]=DCOP-interfaco por interproceza komunikado
+Comment[es]=Interfaz de DCOP para comunicaciones entre procesos (IPC)
+Comment[et]=DCOP liides protsessidevahelise ühenduse loomiseks
+Comment[eu]=DCOP interfazea prozesuen arteko komunikaziorako
+Comment[fa]=واسط DCOP برای ارتباط درون فرایند
+Comment[fi]=DCOP-rajapinta sisäiseen kommunikointiin
+Comment[fr]=Interface DCOP pour les communications entre processus
+Comment[ga]=Comhéadan DCOP le haghaidh cumarsáide idirphróiseas
+Comment[gl]=Interface DCOP para Comuicación Entre Procesos
+Comment[he]=ממשק DCOP לתקשורת בין-תהליכית
+Comment[hi]=इंटर-प्रोसेस कम्यूनिकेशन के लिए डीकॉप इंटरफेस
+Comment[hr]=DCOP sučelje za komunikaciju među procesima
+Comment[hu]=DCOP-felület IPC-hívásokhoz
+Comment[is]=DCOP aðgangur svo ferlin geti talað saman
+Comment[it]=Interfaccia DCOP per le comunicazioni tra processi (IPC)
+Comment[ja]=プロセス間通信に使われる DCOP インターフェース
+Comment[kk]=Процесаралық қатынаудың DCOP интерфейсі
+Comment[km]=ចំណុចប្រទាក់ DCOP សម្រាប់ការទំនាក់ទំនងខាងក្នុងដំណើរការ
+Comment[ko]=프로세스 사이에 통신을 주고 받을 수 있게 해주는 DCOP 인터페이스
+Comment[lt]=DCOP sąsaja tarpprocesiniam ryšiui
+Comment[lv]=DCOP Starpseja Iekšējo-Procesu komunikācijām
+Comment[mk]=Интерфејс DCOP за комуникација помеѓу процесите
+Comment[ms]=Antaramuka DCOP untuk Komunikasi Antara Proses
+Comment[mt]=Interfaċċja DCOP għal komunikazzjoni bejn proċessi (IPC)
+Comment[nb]=DCOP grensesnitt for interprosesskommunikasjon
+Comment[nds]=DCOP-Koppelsteed för Kommunikatschoon twischen Perzessen
+Comment[ne]=आन्तरिक-प्रक्रिया सञ्चारका लागि DCOP इन्टरफेस
+Comment[nl]=DCOP-interface voor interprocescommunicatie
+Comment[nn]=DCOP-grensesnitt for interprosesskommunikasjon
+Comment[pl]=Interfejs DCOP dla Komunikacji Międzyprocesowej (IPC)
+Comment[pt]=Interface do DCOP para a comunicação entre os processos
+Comment[pt_BR]=Interface DCOP para comunicações inter-processos
+Comment[ro]=Interfaţă DCOP pentru comunicaţie interprocese
+Comment[ru]=Интерфейс с DCOP для межпроцессного взаимодействия
+Comment[se]=DCOP-lakta proseassaidgaskkasaš gulahallama dihte
+Comment[sk]=Rozhranie DCOP pre komunikáciu medzi procesmi
+Comment[sl]=Vmesnik DCOP za medprocesno komunikacijo
+Comment[sr]=DCOP интерфејс за међупроцесну комуникацју
+Comment[sr@Latn]=DCOP interfejs za međuprocesnu komunikacju
+Comment[sv]=DCOP-gränssnitt för kommunikation mellan processer
+Comment[ta]=செயல்களுக்கிடைப்பட்ட தகவல் பரிவர்த்தனைக்கான ODBC இடைமுகம்
+Comment[tg]=Интерфейси DCOP барои Алоқаи Ҷараёни Интернет
+Comment[th]=ส่วนติดต่อ DCOP สำหรับการสื่อสารระหว่างโปรเซส
+Comment[tr]=IPC için DCOP Arayüzü
+Comment[uk]=Інтерфейс DCOP для взаємодії процесів (IPC)
+Comment[uz]=Jarayonlararo bogʻlanish uchun DCOP interfeysi
+Comment[uz@cyrillic]=Жараёнлараро боғланиш учун DCOP интерфейси
+Comment[ven]=DCOP Interface ya tshitenwa tsha vhudavhudzani
+Comment[xh]=Ujongano lwe DCOP-lothungelwano lwangaphakathi oluqhubekayo
+Comment[zh_CN]=进程间通信的 DCOP 接口
+Comment[zh_HK]=用於行程間通訊的 DCOP 介面
+Comment[zh_TW]=程序程式間通訊的 DCOP 介面
+Comment[zu]=Uxhumano olubhekene lwe DCOP-lothungelwano lwangaphakathi oluqhubekayo
diff --git a/noatun/modules/excellent/Makefile.am b/noatun/modules/excellent/Makefile.am
new file mode 100644
index 00000000..a2558676
--- /dev/null
+++ b/noatun/modules/excellent/Makefile.am
@@ -0,0 +1,18 @@
+INCLUDES= -I$(top_srcdir)/noatun/library $(all_includes)
+kde_module_LTLIBRARIES = noatun_excellent.la
+
+noatun_excellent_la_SOURCES = noatunui.cpp\
+ userinterface.cpp
+
+noatun_excellent_la_LDFLAGS = $(all_libraries) -module -avoid-version -no-undefined
+noatun_excellent_la_LIBADD = $(LIB_KFILE) \
+ $(top_builddir)/noatun/library/libnoatun.la \
+ $(top_builddir)/noatun/library/libnoatuncontrols.la \
+ -lqtmcop -lkmedia2_idl -lsoundserver_idl
+
+noatun_excellent_la_METASOURCES = AUTO
+
+noinst_HEADERS = userinterface.h
+
+noatun_modules_excellent_DATA = excellent.plugin excellentui.rc
+noatun_modules_excellentdir = $(kde_datadir)/noatun
diff --git a/noatun/modules/excellent/excellent.plugin b/noatun/modules/excellent/excellent.plugin
new file mode 100644
index 00000000..89f747c0
--- /dev/null
+++ b/noatun/modules/excellent/excellent.plugin
@@ -0,0 +1,120 @@
+Filename=noatun_excellent.la
+Author=Neil Stevens
+Site=http://noatun.kde.org/plugins/excellent/
+Email=neil@qualityassistant.com
+Type=userinterface
+License=X11-like
+Name=Excellent
+Name[af]=Uitstekende
+Name[ar]=ممتاز
+Name[az]=Mükəmməl
+Name[ca]=Excel·lent
+Name[cs]=Vynikající
+Name[cy]=Ardderchog
+Name[de]=Hervorragend
+Name[el]=Έξοχο
+Name[eo]=Brila
+Name[es]=Excelente
+Name[et]=Suurepärane
+Name[eu]=Aparta
+Name[fa]=عالی
+Name[fi]=Erinomainen
+Name[ga]=Sármhaith
+Name[gl]=Excelente
+Name[he]=מעולה
+Name[hi]=एक्सेलेंट
+Name[hr]=Odlično
+Name[is]=Frábært
+Name[it]=Eccellente
+Name[ja]=エクセレント
+Name[km]=ល្អឥតខ្ចោះ
+Name[lt]=Puikus
+Name[lv]=Lielisks
+Name[mk]=Одличен
+Name[mt]=Eċċellenti
+Name[nb]=Fantastisk
+Name[nds]=Goot
+Name[ne]=दक्ष
+Name[nn]=Fantastisk
+Name[pa]=ਸਰਵੋਤਮ
+Name[pl]=Doskonały
+Name[pt]=Excelente
+Name[pt_BR]=Excelente
+Name[ro]=Excelent
+Name[ru]=Превосходный
+Name[sk]=Fantastický
+Name[sv]=Utmärkt
+Name[ta]=அற்புதம்
+Name[tg]=Олиҷаноб
+Name[th]=ยอดเยี่ยม
+Name[tr]=Mükemmel
+Name[uk]=Чудовий
+Name[ven]=Zwavhudi
+Name[xh]=Hle kwaphela
+Name[zh_CN]=优秀的
+Name[zh_HK]=極佳的
+Name[zh_TW]=完美的
+Name[zu]=Kuhle kakhulu
+Comment=A very ordinary, and therefore very usable, interface
+Comment[af]='n baie gewone, en daarom baie bruikbaar, koppelvlak
+Comment[ar]=واجهة استخدام عادية ، و بالتالي ممتازة
+Comment[az]=Olduqca bəsit və istifadəli bir axtar üz
+Comment[bg]=Обикновен и поради това много полезен интерфейс
+Comment[bs]=Vrlo uobičajen i zato vrlo upotrebljiv interfejs
+Comment[ca]=Una interfície molt normal, i per tant, molt usable
+Comment[cs]=Velmi obvyklé, and proto velmi použitelné rozhraní
+Comment[cy]=Rhyngwyneb Cyffredin iawn, ac felly defnyddiol iawn
+Comment[da]=En meget ordinær, og derfor meget nyttig, grænseflade
+Comment[de]=Eine ganz normale und folglich sehr brauchbare Oberfläche
+Comment[el]=Ένα πολύ συνηθισμένο, και έτσι πολύ εύχρηστο περιβάλλον
+Comment[eo]=Ordinara kaj do tre uzebla interfaco
+Comment[es]=Una interfaz muy común y por tanto muy fácil de usar
+Comment[et]=Väga tavaline ja lihtsasti kasutatav kasutajaliides
+Comment[eu]=Interfaze arrunta eta oso erabilgarria
+Comment[fa]=یک واسط معمولی، و بنابراین بسیار مفید
+Comment[fi]=Hyvin tavallinen ja käyttökelpoinen käyttöliittymä
+Comment[fr]=Une interface très ordinaire et donc très utilisable
+Comment[ga]=Comhéadan an-choitianta, agus dá bharr sin, an-inúsáidte
+Comment[gl]=Unha interface moi usual e polo tanto moi usábel
+Comment[he]=ממשק מאוד פשוט, ועל כן מאוד שימושי
+Comment[hi]=एक बहुत साधारण, अतः बहुत उपयोगी इंटरफेस
+Comment[hr]=Vrlo obično, i prema tome vrlo upotrebljivo, sučelje
+Comment[hu]=Egy jól ismert, ezért jól használható felület
+Comment[is]=Mjög venjulegt og notanlegt viðmót
+Comment[it]=Un'interfaccia molto ordinaria e molto usabile
+Comment[ja]=非常にありふれているが、だからこそ使いやすいインターフェース
+Comment[kk]=Ең кәдімгі, сондықтан жиі қолданылатын интерфейс
+Comment[km]=ចំណុចប្រទាក់សាមញ្ញបំផុត ហើយក៏ងាយស្រួលប្រើដែរ
+Comment[ko]=아주 평범하고 쓸만한 인터페이스
+Comment[lt]=Labai paprasta ir dėlto labai naudinga sąsaja
+Comment[lv]=Ļoti vienkārša, un tādēļ ļoti izmantojama, starpseja
+Comment[mk]=Мошне обичен, и според тоа мошне корисен интерфејс
+Comment[ms]=Antaramuka yang sangat biasa tetapi berguna
+Comment[mt]=Interfaċċja ordijarja ħafna u għalhekk utli ħafna
+Comment[nb]=Et svært vanlig og brukervennlig grensesnitt
+Comment[nds]=En bannig normaal un dorüm bannig eenfach to bruken Böversiet
+Comment[ne]=साधारण भएकोले धेरै उपयोगि इन्टरफेस
+Comment[nl]=Een heel gewone, en daarom erg bruikbare, interface
+Comment[nn]=Eit svært normalt og difor lettbruka grensesnitt
+Comment[pl]=Bardzo zwyczajny, ale przez to bardzo użyteczny motyw
+Comment[pt]=Uma interface básica e, por isso, muito fácil de usar
+Comment[pt_BR]=Uma interface bem ordinária e portanto muito utilizável
+Comment[ro]=O interfaţă foarte simplă şi foarte utilă
+Comment[ru]=Самый обычный, а потому и очень полезный интерфейс
+Comment[se]=Hui dábálaš ja dannege geavahahtti lakta
+Comment[sk]=Veľmi obyčajné, a preto použiteľné, rozhranie
+Comment[sl]=Zelo običajen in zato zelo uporaben vmesnik
+Comment[sr]=Веома обичан, стога и веома лак за коришћење, интерфејс
+Comment[sr@Latn]=Veoma običan, stoga i veoma lak za korišćenje, interfejs
+Comment[sv]=Ett väldigt vanligt och därför väldigt användbart gränssnitt
+Comment[ta]=மிக எளிய, பயனுள்ள இடைமுகம்
+Comment[tg]=Интерфейси хеле содда ва бинобар бисёр фоиданок
+Comment[th]=ส่วนติดต่อแบบง่ายๆ และด้วยเหตุนั้นก็เลยมีประโยชน์อย่างมาก
+Comment[tr]=Oldukça basit ve kullanışlı bir arayüz
+Comment[uk]=Дуже звичний, і тому дуже зручний, інтерфейс
+Comment[ven]=Zwithu zwazwo, zwo ralo zwa vhuthogwa, interface
+Comment[xh]=Eqheleke kakhulu, neluncedo kakhulu, injongano
+Comment[zh_CN]=非常普通,因而也非常有用的接口
+Comment[zh_HK]=非常普通但是很實用的介面
+Comment[zh_TW]=非常普通但是很實用的介面
+Comment[zu]=Ejwayelekile ngakhoke esebenzisekayo,uxhumano olubhekeneyo
diff --git a/noatun/modules/excellent/excellentui.rc b/noatun/modules/excellent/excellentui.rc
new file mode 100644
index 00000000..f9c43c70
--- /dev/null
+++ b/noatun/modules/excellent/excellentui.rc
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+Main Toolbar
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/noatun/modules/excellent/noatunui.cpp b/noatun/modules/excellent/noatunui.cpp
new file mode 100644
index 00000000..a103268d
--- /dev/null
+++ b/noatun/modules/excellent/noatunui.cpp
@@ -0,0 +1,32 @@
+// noatunui.cpp
+//
+// Copyright (C) 2000 Neil Stevens
+// Copyright (C) 1999 Charles Samuels
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// THE AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+// AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Except as contained in this notice, the name(s) of the author(s) shall not be
+// used in advertising or otherwise to promote the sale, use or other dealings
+// in this Software without prior written authorization from the author(s).
+
+#include "userinterface.h"
+
+extern "C" KDE_EXPORT Plugin *create_plugin()
+{
+ return new Excellent();
+}
diff --git a/noatun/modules/excellent/userinterface.cpp b/noatun/modules/excellent/userinterface.cpp
new file mode 100644
index 00000000..7f218e98
--- /dev/null
+++ b/noatun/modules/excellent/userinterface.cpp
@@ -0,0 +1,394 @@
+// userinterface.cpp
+//
+// Copyright (C) 2001 Neil Stevens
+// Copyright (C) 1999 Charles Samuels
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// THE AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+// AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Except as contained in this notice, the name(s) of the author(s) shall not be
+// used in advertising or otherwise to promote the sale, use or other dealings
+// in this Software without prior written authorization from the author(s).
+
+#ifdef HAVE_CONFIG_H
+#include
+#endif
+
+#include
+#include
+#include
+#include
+#include
+
+#include "userinterface.h"
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+Excellent::Excellent()
+ : KMainWindow(0, "NoatunExcellent")
+ , UserInterface()
+{
+ setAcceptDrops(true);
+
+ KStdAction::quit(napp, SLOT(quit()), actionCollection());
+ KStdAction::open(napp, SLOT(fileOpen()), actionCollection());
+ setStandardToolBarMenuEnabled(true);
+
+ menubarAction = KStdAction::showMenubar(this, SLOT(showMenubar()), actionCollection());
+ KStdAction::preferences(napp, SLOT(preferences()), actionCollection());
+
+ // buttons
+ NoatunStdAction::back(actionCollection(), "back");
+ NoatunStdAction::stop(actionCollection(), "stop");
+ NoatunStdAction::play(actionCollection(), "play");
+ NoatunStdAction::pause(actionCollection(), "pause");
+ NoatunStdAction::forward(actionCollection(), "forward");
+ NoatunStdAction::playlist(actionCollection(), "show_playlist");
+
+ volumeAction = new KToggleAction(i18n("Show &Volume Control"), 0, this, SLOT(showVolumeControl()), actionCollection(), "show_volumecontrol");
+ volumeAction->setCheckedState(i18n("Hide &Volume Control"));
+ NoatunStdAction::effects(actionCollection(), "effects");
+ NoatunStdAction::equalizer(actionCollection(), "equalizer");
+
+ NoatunStdAction::loop(actionCollection(), "loop_style");
+
+ createGUI("excellentui.rc");
+
+ napp->pluginActionMenu()->plug(menuBar(),3);
+ toolBar("mainToolBar")->hide();
+
+ // Who needs Qt Designer?
+ mainFrame = new QHBox(this);
+ mainFrame->setSpacing(KDialog::spacingHint());
+ mainFrame->setMargin(0);
+ slider = new L33tSlider(0, 1000, 10, 0, L33tSlider::Horizontal, mainFrame);
+ slider->setTickmarks(QSlider::NoMarks);
+
+ elapsed = new QLabel(mainFrame);
+ QFont labelFont = elapsed->font();
+ labelFont.setPointSize(24);
+ labelFont.setBold(true);
+ QFontMetrics labelFontMetrics = labelFont;
+ elapsed->setFont(labelFont);
+ elapsed->setAlignment(AlignCenter | AlignVCenter | ExpandTabs);
+ elapsed->setText("--:--");
+ elapsed->setFixedHeight(labelFontMetrics.height());
+ elapsed->setMinimumWidth(elapsed->sizeHint().width());
+
+ // Doing this makes the slider the same heigh as the font. This is just plain wrong...
+ //slider->setFixedHeight(labelFontMetrics.height());
+
+ setCentralWidget(mainFrame);
+
+ total = new QLabel(statusBar());
+ labelFont = total->font();
+ labelFont.setBold(true);
+ total->setFont(labelFont);
+ total->setAlignment(AlignCenter | AlignVCenter | ExpandTabs);
+ total->setText("--:--");
+ total->setMinimumWidth(total->sizeHint().width());
+ total->setText("");
+
+ statusBar()->addWidget(total, 0, true);
+ statusBar()->show();
+
+ connect( napp, SIGNAL(hideYourself()), this, SLOT(hide()) );
+ connect( napp, SIGNAL(showYourself()), this, SLOT(show()) );
+
+ connect(napp->player(), SIGNAL(playing()), this, SLOT(slotPlaying()));
+ connect(napp->player(), SIGNAL(stopped()), this, SLOT(slotStopped()));
+ connect(napp->player(), SIGNAL(paused()), this, SLOT(slotPaused()));
+ napp->player()->handleButtons();
+
+ connect(napp->player(), SIGNAL(timeout()), this, SLOT(slotTimeout()));
+ connect(napp->player(), SIGNAL(loopTypeChange(int)), this, SLOT(slotLoopTypeChanged(int)));
+
+ /* This skipToWrapper is needed to pass milliseconds to Player() as everybody
+ * below the GUI is based on milliseconds instead of some unprecise thingy
+ * like seconds or mille */
+ connect(slider, SIGNAL(userChanged(int)), this, SLOT(skipToWrapper(int)));
+ connect(this, SIGNAL(skipTo(int)), napp->player(), SLOT(skipTo(int)));
+
+ connect(slider, SIGNAL(sliderMoved(int)), SLOT(sliderMoved(int)));
+
+ setCaption("Noatun");
+ setIcon(SmallIcon("noatun"));
+ //slotLoopTypeChanged(Player::None);
+ changeStatusbar();
+ handleLengthString("--:--/--:--");
+
+ setMinimumWidth(250);
+ resize(300, 75);
+
+ KConfig &config = *KGlobal::config();
+
+ toolBar("main")->applySettings(&config, "Excellent main");
+
+ config.setGroup("excellent");
+
+ volumeSlider = 0;
+ volumeAction->setChecked( config.readBoolEntry("volumeShown", false) );
+ showVolumeControl();
+
+ menubarAction->setChecked( config.readBoolEntry("menuShown", true) );
+ showMenubar();
+
+ applyMainWindowSettings(&config, "excellent");
+
+ switch((NET::MappingState)config.readNumEntry("mappingState", (int)NET::Visible))
+ {
+ case NET::Visible:
+ showNormal();
+ break;
+ case NET::Withdrawn:
+ if (napp->libraryLoader()->isLoaded("systray.plugin"))
+ hide();
+ break;
+ case NET::Iconic:
+ showMinimized();
+ break;
+ }
+
+ for (QPtrListIterator i(*children()); i.current(); ++i)
+ (*i)->installEventFilter(this);
+}
+
+Excellent::~Excellent()
+{
+ KConfig &config = *KGlobal::config();
+ saveMainWindowSettings(&config, "excellent");
+ toolBar("main")->saveSettings(&config, "Excellent main");
+ config.setGroup("excellent");
+ config.writeEntry("volumeShown", volumeAction->isChecked());
+ config.writeEntry("menuShown", menubarAction->isChecked());
+ config.writeEntry("width", width());
+ config.writeEntry("height", height());
+ config.sync();
+}
+
+void Excellent::showEvent(QShowEvent *e)
+{
+ KConfig *config = KGlobal::config();
+ config->setGroup("excellent");
+ config->writeEntry("mappingState", NET::Visible);
+ config->sync();
+
+ KMainWindow::showEvent(e);
+}
+
+void Excellent::hideEvent(QHideEvent *e)
+{
+ KConfig *config = KGlobal::config();
+ config->setGroup("excellent");
+ config->writeEntry("mappingState", NET::Withdrawn);
+ config->sync();
+
+ KMainWindow::hideEvent(e);
+}
+
+void Excellent::closeEvent(QCloseEvent *)
+{
+ unload();
+}
+
+void Excellent::dragEnterEvent(QDragEnterEvent *event)
+{
+ // accept uri drops only
+ event->accept(KURLDrag::canDecode(event));
+}
+
+void Excellent::dropEvent(QDropEvent *event)
+{
+ KURL::List uri;
+ if (KURLDrag::decode(event, uri))
+ {
+ for (KURL::List::Iterator i = uri.begin(); i != uri.end(); ++i)
+ napp->player()->openFile(*i, false);
+ }
+}
+
+bool Excellent::eventFilter(QObject *o, QEvent *e)
+{
+ if (e->type() == QEvent::Wheel)
+ {
+ wheelEvent(static_cast(e));
+ return true;
+ }
+ return QWidget::eventFilter(o, e);
+}
+
+void Excellent::wheelEvent(QWheelEvent *e)
+{
+ int delta=e->delta();
+ napp->player()->setVolume(napp->player()->volume() + delta/120*2);
+}
+
+void Excellent::slotPlaying()
+{
+ slider->setEnabled(true);
+ changeStatusbar();
+}
+
+void Excellent::slotStopped()
+{
+ slider->setEnabled(false);
+ if(!napp->player()->current()) return;
+ changeStatusbar();
+ slider->setValue(0);
+ handleLengthString("--:--/--:--");
+}
+
+void Excellent::slotPaused()
+{
+ slider->setEnabled(true);
+ changeStatusbar();
+}
+
+void Excellent::slotTimeout()
+{
+ if(volumeSlider) volumeSlider->setValue(100 - napp->player()->volume());
+
+ if (!slider->currentlyPressed())
+ handleLengthString(napp->player()->lengthString());
+
+ if(!napp->player()->current()) return;
+ if(slider->currentlyPressed()) return;
+
+ slider->setRange(0, (int)napp->player()->getLength() / 1000 );
+ slider->setValue((int)napp->player()->getTime() / 1000 );
+
+ changeStatusbar();
+}
+
+void Excellent::sliderMoved(int seconds)
+{
+ if(napp->player()->current())
+ handleLengthString(napp->player()->lengthString(seconds * 1000));
+}
+
+void Excellent::skipToWrapper(int second) // wrap int to int _and_ seconds to mseconds
+{
+ emit skipTo((int)(second*1000));
+}
+
+void Excellent::slotLoopTypeChanged(int type)
+{
+ static const int time = 2000;
+ switch (type)
+ {
+ case Player::None:
+ statusBar()->message(i18n("No looping"), time);
+ break;
+ case Player::Song:
+ statusBar()->message(i18n("Song looping"), time);
+ break;
+ case Player::Playlist:
+ statusBar()->message(i18n("Playlist looping"), time);
+ break;
+ case Player::Random:
+ statusBar()->message(i18n("Random play"), time);
+ }
+}
+
+void Excellent::showMenubar(void)
+{
+ if(menubarAction->isChecked())
+ {
+ menuBar()->show();
+ }
+ else
+ {
+ KMessageBox::information(this, i18n("Press %1 to show the menubar.").arg(menubarAction->shortcut().toString()), QString::null, "Hide Menu warning");
+ menuBar()->hide();
+ }
+}
+
+void Excellent::showVolumeControl(void)
+{
+ if(volumeAction->isChecked())
+ growVolumeControl();
+ else
+ shrinkVolumeControl();
+}
+
+void Excellent::changeStatusbar(void)
+{
+ if(!napp->player()->current().isNull())
+ statusBar()->message(napp->player()->current().title());
+}
+
+void Excellent::handleLengthString(const QString &text)
+{
+ if(text.right(5) == "00:00" && text.left(5) == "00:00")
+ {
+ elapsed->setText("--:--");
+ total->setText("--:--");
+ }
+ else
+ {
+ // Split the length string in to "current" and "elapsed"
+ QStringList tokens = QStringList::split("/", text);
+
+ elapsed->setText(tokens[0]);
+ total->setText(tokens[1]);
+ }
+}
+
+void Excellent::growVolumeControl(void)
+{
+ volumeSlider = new L33tSlider(0, 100, 10, 0, Vertical, mainFrame);
+ volumeSlider->setValue(100 - napp->player()->volume());
+ volumeSlider->show();
+ connect(volumeSlider, SIGNAL(sliderMoved(int)), SLOT(changeVolume(int)));
+ connect(volumeSlider, SIGNAL(userChanged(int)), SLOT(changeVolume(int)));
+}
+
+void Excellent::shrinkVolumeControl(void)
+{
+ delete volumeSlider;
+ volumeSlider = 0;
+}
+
+void Excellent::changeVolume(int slider)
+{
+ napp->player()->setVolume(100 - slider);
+}
+
+#include "userinterface.moc"
diff --git a/noatun/modules/excellent/userinterface.h b/noatun/modules/excellent/userinterface.h
new file mode 100644
index 00000000..588db6e4
--- /dev/null
+++ b/noatun/modules/excellent/userinterface.h
@@ -0,0 +1,101 @@
+// userinterface.h
+//
+// Copyright (C) 2000, 2001 Neil Stevens
+// Copyright (C) 1999 Charles Samuels
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// THE AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+// AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Except as contained in this notice, the name(s) of the author(s) shall not be
+// used in advertising or otherwise to promote the sale, use or other dealings
+// in this Software without prior written authorization from the author(s).
+
+#ifndef USERINTERFACE_H
+#define USERINTERFACE_H
+
+#include
+#include
+#include
+#include
+
+class KAction;
+class KPopupMenu;
+class KStatusBar;
+class Player;
+class QHBox;
+class QLabel;
+class QSlider;
+class L33tSlider;
+class KToggleAction;
+
+/**
+ * @short Main window class
+ * @author Neil Stevens
+ * @author Charles Samuels
+ */
+class Excellent : public KMainWindow, public UserInterface
+{
+Q_OBJECT
+
+public:
+ Excellent();
+ virtual ~Excellent();
+ void load(const QString& url);
+
+protected:
+ virtual void showEvent(QShowEvent *);
+ virtual void hideEvent(QHideEvent *);
+ virtual void closeEvent(QCloseEvent *);
+ virtual void dragEnterEvent(QDragEnterEvent *);
+ virtual void dropEvent(QDropEvent *);
+ void wheelEvent(QWheelEvent *e);
+ bool eventFilter(QObject *o, QEvent *e);
+
+public slots:
+ void slotPlaying();
+ void slotStopped();
+ void slotPaused();
+
+ void slotTimeout();
+ void sliderMoved(int seconds);
+ void slotLoopTypeChanged(int type);
+ void skipToWrapper(int second);
+
+signals:
+ // emitted by skipToWrapper()
+ void skipTo(int);
+
+private slots:
+ void showVolumeControl(void);
+ void showMenubar(void);
+ void changeStatusbar(void);
+ void changeVolume(int);
+
+ void handleLengthString(const QString &text);
+
+private:
+ void growVolumeControl(void);
+ void shrinkVolumeControl(void);
+
+ QHBox *mainFrame;
+
+ KToggleAction *volumeAction, *menubarAction;
+ L33tSlider *volumeSlider, *slider;
+ QLabel *elapsed, *total;
+};
+
+#endif
diff --git a/noatun/modules/htmlexport/Makefile.am b/noatun/modules/htmlexport/Makefile.am
new file mode 100644
index 00000000..bbea16ab
--- /dev/null
+++ b/noatun/modules/htmlexport/Makefile.am
@@ -0,0 +1,16 @@
+
+INCLUDES= -I$(top_srcdir)/noatun/library $(all_includes)
+kde_module_LTLIBRARIES = noatun_htmlexport.la
+
+noatun_htmlexport_la_SOURCES = htmlexport.cpp
+noinst_HEADERS = htmlexport.h
+
+noatun_htmlexport_la_LDFLAGS = $(all_libraries) -module -avoid-version -no-undefined
+noatun_htmlexport_la_LIBADD = $(LIB_KFILE) $(top_builddir)/noatun/library/libnoatun.la \
+ -lqtmcop -lkmedia2_idl -lsoundserver_idl
+
+noatun_htmlexport_la_METASOURCES = AUTO
+
+
+noatun_modules_htmlexport_DATA = htmlexport.plugin
+noatun_modules_htmlexportdir = $(kde_datadir)/noatun
diff --git a/noatun/modules/htmlexport/TODO b/noatun/modules/htmlexport/TODO
new file mode 100644
index 00000000..6f97ad78
--- /dev/null
+++ b/noatun/modules/htmlexport/TODO
@@ -0,0 +1,3 @@
+Most important TODO items:
+* Read tags before writing the file
+* Clean up the configure dialog and fix remaining issues
diff --git a/noatun/modules/htmlexport/htmlexport.cpp b/noatun/modules/htmlexport/htmlexport.cpp
new file mode 100644
index 00000000..dc48fd8f
--- /dev/null
+++ b/noatun/modules/htmlexport/htmlexport.cpp
@@ -0,0 +1,308 @@
+#include
+#include
+#include
+#include
+#include
+#include "htmlexport.h"
+
+extern "C"
+{
+ KDE_EXPORT Plugin *create_plugin()
+ {
+ return new HTMLExport();
+ }
+}
+
+HTMLExport::HTMLExport(): QObject(0, "HTMLExport"), Plugin()
+{
+ NOATUNPLUGINC(HTMLExport);
+
+ mAction = new KAction(i18n("&Export Playlist..."), "filesaveas", 0,
+ this, SLOT(slotExport()), this, "exportlist");
+ napp->pluginActionMenu()->insert(mAction);
+
+ new Prefs(this);
+ config = KGlobal::config();
+}
+
+HTMLExport::~HTMLExport()
+{
+ napp->pluginActionMenu()->remove(mAction);
+}
+
+void HTMLExport::slotExport()
+{
+ // init readConfig
+ config->setGroup("HTMLExport");
+
+ // get output target
+ KURL url = KFileDialog::getSaveURL(QString::null,
+ "text/html",
+ 0,
+ i18n("Export Playlist"));
+
+ // write into tempfile
+ KTempFile temp;
+ temp.setAutoDelete(true);
+ QFile file(temp.name());
+ file.open(IO_WriteOnly);
+ QTextStream str(&file);
+ str.setCodec(QTextCodec::codecForName("utf8"));
+
+ str << "" << endl;
+ str << "" << endl;
+ str << "" << endl;
+
+ str << endl;
+
+ str << "" << endl;
+ str << "" << endl;
+ str << "\t" << i18n("Noatun Playlist") << "" << endl;
+
+ str << "\t" << endl;
+
+ str << "" << endl;
+ str << endl;
+ str << "" << endl;
+ str << "\t" << i18n("Noatun Playlist") << "
" << endl;
+
+ // Cache the config settings used in the big loop
+ bool link_entries = config->readBoolEntry( "linkEntries" );
+ bool number_entries = config->readBoolEntry( "numberEntries" );
+
+ if (number_entries)
+ str << "\t\t" << endl;
+ else
+ str << "\t\t" << endl;
+
+
+ for (PlaylistItem item = napp->playlist()->getFirst();item;item = napp->playlist()->getAfter(item)) {
+ str << "\t\t\t";
+
+ if (number_entries)
+ str << "
- ";
+
+ if (link_entries)
+ str << "";
+
+ str << htmlEscape(item.title());
+
+ if (link_entries)
+ str << "";
+
+ if (number_entries)
+ str << "
" << endl;
+ else
+ str << "
" << endl;
+ }
+
+ if (number_entries)
+ str << "\t\t
" << endl;
+ else
+ str << "\t\t
" << endl;
+
+ str << "\t" << endl;
+ str << "" << endl;
+
+ file.close();
+ // tempfile -> userdefined file
+ KIO::NetAccess::upload(temp.name(), url, 0);
+}
+
+QString HTMLExport::htmlEscape(const QString &source) {
+ // Escape characters that need to be escaped
+ QString temp = source;
+
+ temp.replace( QRegExp("&"), "&" );
+ temp.replace( QRegExp("<"), "<" );
+ temp.replace( QRegExp(">"), ">" );
+
+ return temp;
+}
+
+QString HTMLExport::getColorByEntry(QString s)
+{
+ QString res;
+ QString tmp;
+ QColor c;
+
+ // init readConfig
+
+ config->setGroup("HTMLExport");
+
+ c = config->readColorEntry( s );
+ tmp = QString::number( c.red(), 16);
+ if (tmp.length()==1) tmp="0"+tmp;
+ res = tmp;
+
+ tmp = QString::number( c.green(), 16);
+ if (tmp.length()==1) tmp="0"+tmp;
+ res += tmp;
+
+ tmp = QString::number( c.blue(), 16);
+ if (tmp.length()==1) tmp="0"+tmp;
+ res += tmp;
+
+ return res;
+
+}
+//////////////////////////////////// Settings ////////////////////////////////////
+
+Prefs::Prefs(QObject *parent)
+ : CModule(i18n("Playlist Export"), i18n("Colors & Settings for HTML Export"), "html", parent)
+{
+
+ // Init Config
+ KConfig *config = KGlobal::config();
+ config->setGroup("HTMLExport");
+
+ // Set default values
+ if ( !config->hasKey( "headColor" ) )
+ config->writeEntry( "headColor", QColor( black ) ) ;
+
+ if ( !config->hasKey( "hoverColor" ) )
+ config->writeEntry( "hoverColor", QColor( black ) );
+
+ if ( !config->hasKey( "bgColor" ) )
+ config->writeEntry( "bgColor", QColor( white ) ) ;
+
+ if ( !config->hasKey( "txtColor" ) )
+ config->writeEntry( "txtColor", QColor( black ) );
+
+ config->sync();
+
+ // Draw Stuff and insert Settings
+ QVBoxLayout *top = new QVBoxLayout(this, KDialog::marginHint(),
+ KDialog::spacingHint() );
+
+ colorBox = new QGroupBox( i18n( "HTML Color Settings" ), this, "colorBox" );
+
+ bgcolorLabel = new QGridLayout( colorBox, 2, 5,
+ KDialog::marginHint(), KDialog::spacingHint() );
+
+ headColorSelect = new KColorButton( colorBox, "headColorSelect" );
+
+ hoverColorSelect = new KColorButton( colorBox, "hoverColorSelect" );
+
+ bgColorSelect = new KColorButton( colorBox, "bgColorSelect" );
+
+ txtColorSelect = new KColorButton( colorBox, "txtColorSelect" );
+
+ txtColorLabel = new QLabel( colorBox, "txtColorLabel" );
+ txtColorLabel->setText( i18n( "Text:" ) );
+ txtColorLabel->setAlignment( int( QLabel::AlignVCenter | QLabel::AlignRight ) );
+
+ bgColorLabel = new QLabel( colorBox, "bgColorLabel" );
+ bgColorLabel->setText( i18n( "Background:" ) );
+ bgColorLabel->setAlignment( int( QLabel::AlignVCenter | QLabel::AlignRight ) );
+
+ headColorLabel = new QLabel( colorBox, "headColorLabel" );
+ headColorLabel->setText( i18n( "Heading:" ) );
+ headColorLabel->setAlignment( int( QLabel::AlignVCenter | QLabel::AlignRight ) );
+
+ hoverColorLabel = new QLabel( colorBox, "hoverColorLabel" );
+ hoverColorLabel->setText( i18n( "Link hover:" ) );
+ hoverColorLabel->setAlignment( int( QLabel::AlignVCenter | QLabel::AlignRight ) );
+
+ bgcolorLabel->setRowStretch(0, 1);
+
+ // Makes the spacing nice
+ bgcolorLabel->setColStretch(1, 2);
+ bgcolorLabel->setColStretch(2, 1);
+ bgcolorLabel->setColStretch(4, 2);
+
+ bgcolorLabel->addWidget( txtColorLabel, 0, 0 );
+ bgcolorLabel->addWidget( txtColorSelect, 0, 1 );
+ bgcolorLabel->addWidget( headColorLabel, 1, 0 );
+ bgcolorLabel->addWidget( headColorSelect, 1, 1 );
+ bgcolorLabel->addWidget( bgColorLabel, 0, 3 );
+ bgcolorLabel->addWidget( bgColorSelect, 0, 4 );
+ bgcolorLabel->addWidget( hoverColorLabel, 1, 3 );
+ bgcolorLabel->addWidget( hoverColorSelect, 1, 4 );
+
+
+ // Set up the Background Image frame
+ bgPicBox = new QHGroupBox( i18n( "Background Image"), this, "bgPicBox" );
+
+ // Set up the URL requestor
+ bgPicPath = new KURLRequester ( bgPicBox, "bgPicPath" );
+ bgPicPath->setShowLocalProtocol(true);
+
+ // Set up the URL requestor's file dialog
+ bgPicPath->setMode(KFile::File | KFile::ExistingOnly);
+ bgPicPath->setFilter("image/gif image/jpeg image/gif image/png image/svg+xml image/tiff");
+
+ linkEntries = new QCheckBox( this, "linkEntries" );
+ linkEntries->setText( i18n( "Hyper&link playlist entries to their URL" ) );
+ linkEntries->setTristate( false );
+
+ numberEntries = new QCheckBox( this, "numberEntries" );
+ numberEntries->setText( i18n( "&Number playlist entries" ) );
+ numberEntries->setTristate( false );
+
+ top->addWidget( colorBox );
+ top->addWidget( bgPicBox );
+ top->addWidget( linkEntries );
+ top->addWidget( numberEntries );
+
+ top->addStretch();
+
+ reopen();
+}
+
+void Prefs::save()
+{
+ KConfig *config = KGlobal::config();
+
+ QString bgRealURL = bgPicPath->url();
+
+ if (bgRealURL[0] == '/')
+ bgRealURL = "file:" + bgRealURL;
+
+ config->setGroup( "HTMLExport" );
+ config->writeEntry( "bgColor", bgColorSelect->color() );
+ config->writeEntry( "txtColor", txtColorSelect->color() );
+ config->writeEntry( "headColor", headColorSelect->color() );
+ config->writeEntry( "hoverColor", hoverColorSelect->color() );
+ config->writePathEntry( "bgImgPath", bgRealURL );
+ config->writeEntry( "linkEntries", linkEntries->isChecked() );
+ config->writeEntry( "numberEntries", numberEntries->isChecked() );
+ config->sync();
+}
+
+void Prefs::reopen()
+{
+ KConfig *config = KGlobal::config();
+ headColorSelect->setColor(config->readColorEntry( "headColor" ) );
+ hoverColorSelect->setColor( config->readColorEntry( "hoverColor" ) );
+ bgColorSelect->setColor( config->readColorEntry( "bgColor" ) );
+ txtColorSelect->setColor( config->readColorEntry( "txtColor" ) );
+ bgPicPath->setURL( config->readPathEntry( "bgImgPath" ) );
+ numberEntries->setChecked( config->readBoolEntry( "numberEntries" ) );
+ linkEntries->setChecked( config->readBoolEntry( "linkEntries" ) );
+}
+#include "htmlexport.moc"
+
diff --git a/noatun/modules/htmlexport/htmlexport.h b/noatun/modules/htmlexport/htmlexport.h
new file mode 100644
index 00000000..a909a5cb
--- /dev/null
+++ b/noatun/modules/htmlexport/htmlexport.h
@@ -0,0 +1,89 @@
+
+#ifndef _HTMLEXPORT_H_
+#define _HTMLEXPORT_H_
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+//#include
+
+#include
+#include
+#include
+#include
+
+class KAction;
+
+class HTMLExport : public QObject, public Plugin
+{
+Q_OBJECT
+NOATUNPLUGIND
+public:
+ HTMLExport();
+ ~HTMLExport();
+
+
+private:
+ QString htmlEscape(const QString &source);
+ QString getColorByEntry(QString s);
+ KConfig *config;
+ KAction *mAction;
+
+private slots:
+ void slotExport();
+
+};
+
+class Prefs : public CModule
+{
+Q_OBJECT
+public:
+ Prefs(QObject *parent);
+ virtual void save();
+ virtual void reopen();
+
+ QGroupBox* colorBox;
+
+ KColorButton* headColorSelect;
+ KColorButton* hoverColorSelect;
+ KColorButton* bgColorSelect;
+ KColorButton* txtColorSelect;
+
+ QLabel* bgColorLabel;
+ QLabel* txtColorLabel;
+ QLabel* headColorLabel;
+ QLabel* hoverColorLabel;
+
+ QCheckBox* linkEntries;
+ QCheckBox* numberEntries;
+
+ QGroupBox* bgPicBox;
+ KURLRequester* bgPicPath;
+
+protected:
+ QGridLayout* bgcolorLabel;
+
+
+signals:
+ void saved();
+};
+
+#endif
+
diff --git a/noatun/modules/htmlexport/htmlexport.plugin b/noatun/modules/htmlexport/htmlexport.plugin
new file mode 100644
index 00000000..97a10fb9
--- /dev/null
+++ b/noatun/modules/htmlexport/htmlexport.plugin
@@ -0,0 +1,124 @@
+Filename=noatun_htmlexport.la
+Author=Malte Starostik
+Email=malte@kde.org
+Type=other
+License=Artistic
+Name=HTML Playlist Export
+Name[bn]=এইচ-টি-এম-এল সঙ্গীত-তালিকা রপ্তানি
+Name[br]=Ezporzh ar roll tonioù e HTML
+Name[bs]=Izvoz liste numera u HTML
+Name[ca]=Exportació del repertori en HTML
+Name[cs]=Export seznamu skladeb do HTML
+Name[cy]=Allforio Rhestr Chwarae HTML
+Name[da]=HTML-spilleliste-eksport
+Name[de]=Export von Wiedergabelisten in HTML
+Name[el]=Εξαγωγή λίστας αναπαραγωγής HTML
+Name[eo]=HTML-ludlisteksporto
+Name[es]=Exportador de listas de reproducción HTML
+Name[et]=Esitusnimekirja eksport HTML-i
+Name[eu]=HTML erreprodukzio-zerrendaren esportazioa
+Name[fa]=صادرات فهرست پخش زنگام
+Name[fi]=HTML-soittolistan vienti
+Name[fr]=Export en HTML des listes de lecture
+Name[ga]=Easpórtáil Seinmliosta mar HTML
+Name[gl]=Exportación de Lista de Reprodución a HTML
+Name[he]=ייצוא לרשימת ניגון בתבנית HTML
+Name[hu]=Lejátszási lista exportálása HTML-fájlba
+Name[is]=Útflutningur á HTML lagalista
+Name[it]=Esportazione HTML delle playlist
+Name[ja]=HTML プレイリストのエクスポート
+Name[kk]=Орындау тізімін HTML-экспорттау
+Name[km]=នាំចេញបញ្ជីចាក់ HTML
+Name[ko]=HTML 재생 목록 내보내기
+Name[lt]=HTML gaidaraščio eksportas
+Name[mk]=Испраќање на листа со нумери како HTML
+Name[nb]=Eksport av HTML-spilleliste
+Name[nds]=Afspeellist-Export na HTML
+Name[ne]=HTML बजाउने सूची निर्यात
+Name[nl]=HTML-afspeellijst-export
+Name[nn]=Eksport av HTML-speleliste
+Name[pa]=HTML ਸੰਗੀਤ-ਸੂਚੀ ਨਿਰਯਾਤ
+Name[pl]=Eksport listy utworów do formatu HTML
+Name[pt]=Exportação de Listas de Músicas em HTML
+Name[pt_BR]=Exportação de listas de reprodução em HTML
+Name[ro]=Exportare HTML listă de redare
+Name[ru]=Экспорт списка песен в HTML
+Name[sk]=Export playlistu do HTML
+Name[sl]=Izvoz predvajalnega seznama v HTML
+Name[sr]=Извожење листе нумера у HTML
+Name[sr@Latn]=Izvoženje liste numera u HTML
+Name[sv]=HTML-spellistexport
+Name[ta]=HTML பாடல் பட்டியல் ஏற்றுமதி
+Name[th]=ส่งออกรายการเล่นเป็น HTML
+Name[tr]=HTML Çalma Listesi Dışarı Aktarma
+Name[uk]=Експорт списку композицій до HTML
+Name[zh_CN]=HTML 播放列表导出
+Name[zh_HK]=HTML 播放清單匯出
+Name[zh_TW]=HTML 播放清單匯出
+Comment=Creates a HTML file from the playlist
+Comment[af]=Skep 'n Html lêer van die liedjielys
+Comment[ar]=ينشئ ملف HTML من لائحة التشغيل
+Comment[az]=Çalma siyahısından bir HTML faylı yarat
+Comment[bg]=Експортиране на списък за изпълнение във файл от тип HTML
+Comment[bn]=সঙ্গীত-তালিকা থেকে একটি এইচ-টি-এম-এল ফাইল তৈরি করে
+Comment[br]=Krouiñ ur restr HTML eus ar roll tonioù
+Comment[bs]=Pravi HTML dokument od liste numera
+Comment[ca]=Crea un fitxer HTML d'una selecció de peces
+Comment[cs]=Vytváří ze seznamu skladeb HTML soubor
+Comment[cy]=Creu ffeil HTML o'r rhestr chwarae
+Comment[da]=Opretter en HTML-fil fra spillelisten
+Comment[de]=Erstellt eine HTML-Datei aus einer Wiedergabeliste
+Comment[el]=Δημιουργεί ένα αρχείο HTML από τη λίστα αναπαραγωγής
+Comment[en_GB]=Creates an HTML file from the playlist
+Comment[eo]=Kreas HTML-dosieron el la ludlisto
+Comment[es]=Crea un archivo HTML a partir de la lista de reproducción
+Comment[et]=HTML-faili loomine nimekirjast
+Comment[eu]=HTML fitxategia erreprodukzio-zerrendatik sortzen du
+Comment[fa]=از فهرست پخش یک پروندۀ زنگام ایجاد میکند
+Comment[fi]=Luo HTML-tiedoston soittolistasta
+Comment[fr]=Crée un fichier HTML à partir de la liste de lecture
+Comment[ga]=Cruthaigh comhad HTML ón seinmliosta
+Comment[gl]=Crea un ficheiro HTML a partires da lista de reprodución
+Comment[he]=יצירת קובץ HTML מתוך רשימת הניגון
+Comment[hi]=प्लेलिस्ट से एचटीएमएल फ़ाइल बनाता है
+Comment[hr]=Stvara od liste pjesama HTML datoteku
+Comment[hu]=Lejátszási lista exportálása HTML-ben
+Comment[is]=Býr til HTML skrá úr lagalistanum
+Comment[it]=Crea un file HTML dalla playlist
+Comment[ja]=プレイリストから HTML を作成
+Comment[kk]=Орындау тізімін HTML-пішімді файлға жазу
+Comment[km]=បង្កើតបញ្ជីឯកសារ HTML ពីបញ្ជីចាក់
+Comment[ko]=재생 목록에서 HTML 파일 만들기
+Comment[lt]=Sukuria HTML failą iš gaidaraščio
+Comment[lv]=Izveido HTML failu no plejlista
+Comment[mk]=Креира датотека HTML од листата со нумери
+Comment[ms]=Bina fail HTML untuk senarai main
+Comment[mt]=Joħloq fajl HTML mill-playlist
+Comment[nb]=Lager en HTML-fil fra spillelisten
+Comment[nds]=Stellt ut de Afspeellist en HTML-Datei op
+Comment[ne]=बजाउने सूचीबाट HTML फाइल सिर्जना गर्दछ
+Comment[nl]=Maakt een HTML-bestand aan op basis van de speellijst
+Comment[nn]=Lagar ei HTML-fil frå spelelista
+Comment[pa]=ਸੰਗੀਤ-ਸੂਚੀ ਤੋਂ ਇੱਕ HTML ਫਾਇਲ ਬਣਾਓ
+Comment[pl]=Tworzy plik HTML z listy nagrań
+Comment[pt]=Cria um ficheiro HTML a partir de uma lista de músicas
+Comment[pt_BR]=Cria um arquivo HTML a partir da lista de reprodução
+Comment[ro]=Creează un fişier HTML dintr-o listă de redare
+Comment[ru]=Создание HTML-файла из списка песен
+Comment[se]=Ráhkada HTML-fiilla čuojahanlisttus
+Comment[sk]=Vytvorí HTML súbor z playlistu
+Comment[sl]=Ustvari datoteko HTML iz predvajalnega seznama
+Comment[sr]=Прави HTML фајл на основу листе нумера
+Comment[sr@Latn]=Pravi HTML fajl na osnovu liste numera
+Comment[sv]=Skapar en HTML-fil av en spellista
+Comment[ta]=பாடல் பட்டியலிலிருந்து HTML ஆவணமொன்றை உருவாக்கின்றது
+Comment[tg]=Аз рӯйхати бозикуниҳо файли HTML-ро офарид
+Comment[th]=สร้างแฟ้ม HTML สำหรับรายการเล่น
+Comment[tr]=Çalma listesinden bir HTML dosyası oluşturur
+Comment[uk]=Створює файл HTML зі списку композицій
+Comment[ven]=Itani faela ya HTML u bva kha mutevhe wa tshitambi
+Comment[xh]=Yenza ifayile ye HTML kuluhlu lomdlalo
+Comment[zh_CN]=从播放列表创建 HTML 文件
+Comment[zh_HK]=從播放清單建立 HTML 檔案
+Comment[zh_TW]=從播放清單建立 HTML 文件檔案
+Comment[zu]=Yenza ifayela ye HTML kuluhlu lomdlalo
diff --git a/noatun/modules/infrared/Makefile.am b/noatun/modules/infrared/Makefile.am
new file mode 100644
index 00000000..bf8a7212
--- /dev/null
+++ b/noatun/modules/infrared/Makefile.am
@@ -0,0 +1,16 @@
+
+INCLUDES= -I$(top_srcdir)/noatun/library $(all_includes)
+kde_module_LTLIBRARIES = noatun_infrared.la
+
+noatun_infrared_la_SOURCES = infrared.cpp lirc.cpp irprefs.cpp
+noinst_HEADERS = infrared.h lirc.h irprefs.h
+
+noatun_infrared_la_LDFLAGS = $(all_libraries) -module -avoid-version -no-undefined
+noatun_infrared_la_LIBADD = $(LIB_KFILE) $(top_builddir)/noatun/library/libnoatun.la \
+ -lqtmcop -lkmedia2_idl -lsoundserver_idl
+
+noatun_infrared_la_METASOURCES = AUTO
+
+
+noatun_modules_infrared_DATA = infrared.plugin
+noatun_modules_infrareddir = $(kde_datadir)/noatun
diff --git a/noatun/modules/infrared/README b/noatun/modules/infrared/README
new file mode 100644
index 00000000..b3fda334
--- /dev/null
+++ b/noatun/modules/infrared/README
@@ -0,0 +1,3 @@
+This plugin enables Noatun to be controlled with an IR remote control.
+You'll need lirc (http://fsinfo.cs.uni-sb.de/~columbus/lirc/) and
+an IR receiver supported by lirc.
diff --git a/noatun/modules/infrared/infrared.cpp b/noatun/modules/infrared/infrared.cpp
new file mode 100644
index 00000000..60ea145c
--- /dev/null
+++ b/noatun/modules/infrared/infrared.cpp
@@ -0,0 +1,120 @@
+
+#include
+
+#include
+#include
+#include
+
+#include
+#include
+
+#include "infrared.h"
+#include "lirc.h"
+#include "irprefs.h"
+
+extern "C"
+{
+ KDE_EXPORT Plugin *create_plugin()
+ {
+ return new InfraRed();
+ }
+}
+
+
+InfraRed::InfraRed()
+ : QObject(),
+ Plugin()
+{
+ NOATUNPLUGINC(InfraRed);
+ m_lirc = new Lirc(this);
+ connect(m_lirc,
+ SIGNAL(commandReceived(const QString &, const QString &, int)),
+ SLOT(slotCommand(const QString &, const QString &, int)));
+
+ IRPrefs::s_lirc = m_lirc;
+ volume=0;
+ QTimer::singleShot(0, this, SLOT(start()));
+}
+
+InfraRed::~InfraRed()
+{
+}
+
+void InfraRed::start()
+{
+ new IRPrefs(this);
+}
+
+void InfraRed::slotCommand(const QString &remote, const QString &button, int repeat)
+{
+ switch (IRPrefs::actionFor(remote, button, repeat))
+ {
+ case IRPrefs::None:
+ break;
+
+ case IRPrefs::Play:
+ napp->player()->play();
+ break;
+
+ case IRPrefs::Stop:
+ napp->player()->stop();
+ break;
+
+ case IRPrefs::Pause:
+ napp->player()->playpause();
+ break;
+
+ case IRPrefs::Mute:
+ if (napp->player()->volume())
+ {
+ volume=napp->player()->volume();
+ napp->player()->setVolume(0);
+ }
+ else
+ {
+ napp->player()->setVolume(volume);
+ }
+ break;
+
+ case IRPrefs::Previous:
+ napp->player()->back();
+ break;
+
+ case IRPrefs::Next:
+ napp->player()->forward();
+ break;
+
+ case IRPrefs::VolumeDown:
+ napp->player()->setVolume(napp->player()->volume() - 4);
+ break;
+
+ case IRPrefs::VolumeUp:
+ napp->player()->setVolume(napp->player()->volume() + 4);
+ break;
+
+ case IRPrefs::SeekBackward: // - 3 seconds
+ napp->player()->skipTo( QMAX(0, napp->player()->getTime() - 3000) );
+ break;
+
+ case IRPrefs::SeekForward: // + 3 seconds
+ napp->player()->skipTo( QMIN(napp->player()->getLength(),
+ napp->player()->getTime() + 3000) );
+ break;
+ case IRPrefs::ShowPlaylist:
+ napp->player()->toggleListView();
+ break;
+ case IRPrefs::NextSection:
+ // This and the next case theoretically shouldn't bypass player()
+ // but I'm making this change as inobtrusive as possible. That
+ // means restricting the change to infrared and not messing around
+ // in libnoatun -- Neil
+ napp->playlist()->nextSection();
+ break;
+ case IRPrefs::PreviousSection:
+ napp->playlist()->previousSection();
+ break;
+ }
+}
+
+#include "infrared.moc"
+
diff --git a/noatun/modules/infrared/infrared.h b/noatun/modules/infrared/infrared.h
new file mode 100644
index 00000000..37e97735
--- /dev/null
+++ b/noatun/modules/infrared/infrared.h
@@ -0,0 +1,30 @@
+
+#ifndef _INFRARED_H_
+#define _INFRARED_H_
+
+#include
+#include
+
+class NoatunPreferences;
+class Lirc;
+
+class InfraRed : public QObject, public Plugin
+{
+Q_OBJECT
+NOATUNPLUGIND
+public:
+ InfraRed();
+ ~InfraRed();
+
+private slots:
+ void slotCommand(const QString &, const QString &, int);
+
+ void start();
+
+private:
+ Lirc *m_lirc;
+ int volume;
+};
+
+#endif
+
diff --git a/noatun/modules/infrared/infrared.plugin b/noatun/modules/infrared/infrared.plugin
new file mode 100644
index 00000000..dab20149
--- /dev/null
+++ b/noatun/modules/infrared/infrared.plugin
@@ -0,0 +1,120 @@
+Filename=noatun_infrared.la
+Author=Malte Starostik
+Email=malte@kde.org
+Type=other
+License=Artistic
+Name=Infrared Control
+Name[af]=Infrared Kontrole
+Name[ar]=تحكم بالأشعة تحت الحمراء
+Name[az]=İnfra Qırmızı İdarə
+Name[bn]=ইনফ্রা-রেড নিয়ন্ত্রণ
+Name[bs]=Infrared kontrola
+Name[ca]=Control per infraroigs
+Name[cs]=Dálkové ovládání
+Name[cy]=Rheolaeth Isgoch
+Name[da]=Infrarød kontrol
+Name[de]=Infrarot-Fernbedienung
+Name[el]=Έλεγχος μέσω υπέρυθρων
+Name[eo]=INfraruĝstirilo
+Name[es]=Control por infrarrojos
+Name[et]=Infrapunaliidese kaudu juhtimine
+Name[eu]=Kontrol infragorria
+Name[fa]= کنترل مادون قرمز
+Name[fi]=Infrapunahallinta
+Name[fr]=Contrôleur infrarouge
+Name[ga]=Rialú Infridhearg
+Name[gl]=Control por Infravermellos
+Name[he]=שליטה בעזרת אינפרא־אדום
+Name[hi]=इन्फ्रारेड नियंत्रण
+Name[hr]=Infra-crvena kontrola
+Name[hu]=Távirányító
+Name[id]=Kontrol infra merah
+Name[is]=Innrauð stýring
+Name[it]=Controllo a infrarossi
+Name[ja]=赤外線コントロール
+Name[kk]=ИҚ тұтқасымен басқару
+Name[km]=ឧបករណ៍ Infrared
+Name[ko]=적외선 제어
+Name[lt]=Infraraudonųjų spindulių valdymas
+Name[lv]=Infrasarkanā Vadība
+Name[mk]=Инфрацрвена контрола
+Name[mt]=Kontroll Infrared
+Name[nb]=Infrarød kontroll
+Name[nds]=Infraroot-Feernbedenen
+Name[ne]=इन्फ्रारेड नियन्त्रण
+Name[nl]=Infraroodbediening
+Name[nn]=Infraraud kontroll
+Name[pa]=ਇੰਫਰਾਰੈੱਡ ਕੰਟਰੋਲ
+Name[pl]=Sterowanie przez podczerwień
+Name[pt]=Controlo de Infra-Vermelhos
+Name[pt_BR]=Controle de Infravermelho
+Name[ro]=Control în infraroşu
+Name[ru]=ИК пульт
+Name[se]=Infrarukses stivrran
+Name[sk]=Diaľkové ovládanie
+Name[sl]=Infrardeči nadzor
+Name[sr]=Инфрацрвена контрола
+Name[sr@Latn]=Infracrvena kontrola
+Name[sv]=Infraröd fjärrkontroll
+Name[ta]=செங்கீழ்க்கதிர்க் கட்டுப்பாடு
+Name[tg]=Идоракунии Инфрасурх
+Name[th]=ตัวควบคุมแบบอินฟราเรด
+Name[tr]=Kızılötesi Kontrol
+Name[uk]=Керуванням інфрачервоним зв'язком
+Name[ven]=Vhulanguli ha Infrared
+Name[xh]=Ulawulo olwakhelwe ngezantsi
+Name[zh_CN]=红外线控制
+Name[zh_HK]=紅外線控制
+Name[zh_TW]=紅外線控制
+Name[zu]=Ulawulo Olunokubomvu
+Comment=Control Noatun with your IR remote
+Comment[bg]=Управление на Noatun с помощта на инфрачервено, дистанционно управление
+Comment[bn]=আপনার ইনফ্রা-রেড রিমোট ব্যবহার করে নোটান নিয়ন্ত্রণ করুন
+Comment[bs]=Kontrolišite Noatun vašim infracrvenim daljinskim upravljačem
+Comment[ca]=Controla Noatun amb el comandament a distància
+Comment[cs]=Ovládejte Noatun svým dálkovým ovladačem
+Comment[cy]=Rheoli Noatun efo'ch Rheolydd Isgoch
+Comment[da]=Kontrollér Noatun med din fjernbetjening
+Comment[de]=Kontrollieren Sie Noatun mit Ihrer Infrarot-Fernbedienung
+Comment[el]=Έλεγχος του Noatun με το IR τηλεκοντρόλ σας
+Comment[eo]=Stiru Noatun per via infraruĝstirilo
+Comment[es]=Controle Noatun con su mando a distancia
+Comment[et]=Noatun juhtimine IR puldi abil
+Comment[eu]=Kontrolatu Noatun urruneko infragorriekin
+Comment[fa]=کنترل Noatun با IR دور شما
+Comment[fi]=Hallitse Noatunia infrapunakauko-ohjaimella
+Comment[fr]=Contrôlez Noatun avec votre télécommande infrarouge
+Comment[ga]=Rialaigh Noatun le do cianrialtán infridhearg
+Comment[gl]=Controlar Noatun co seu IR remoto
+Comment[he]=שליטה ב-Noatun באמצעות שלט אינפרא־אדום
+Comment[hu]=A Noatun kezelése távirányítóval
+Comment[is]=Stjórnaðu Nóatún með fjarstýringunni þinni
+Comment[it]=Controlla Noatun con il tuo telecomando
+Comment[ja]=赤外線リモコンで Noatun をコントロール
+Comment[kk]=Noatun-ды ИҚ тұтқасымен басқару
+Comment[km]=បញ្ជា Noatun ដោយប្រើ IR របស់អ្នកពីចម្ងាយ
+Comment[ko]=적외선 리모콘으로 Noatun 조정하기
+Comment[lt]=Valdykite Noatun pasitelkdami nuotolinį pultą
+Comment[mk]=Го контролира Noatun со вашиот инфрацрвен далечински управувач
+Comment[nb]=Styr Noatun med en infrerød fjernkontroll
+Comment[nds]=Noatun mit Dien Infraroot-Feernbedenen stüern
+Comment[ne]=तपाईँको IR टाढाकोसँग नियन्त्रण नोवटुन
+Comment[nl]=Bedien Noatun met uw infrarood afstandbediening
+Comment[nn]=Styr Noatun med ein infraraud fjernkontroll
+Comment[pl]=Sterowanie Noatun za pomocą pilota podczerwieni
+Comment[pt]=Controle o Noatun com um comando à distância
+Comment[pt_BR]=Controlar o Noatun com seu controle-remoto infravermelho
+Comment[ro]=Controlează Noatun cu telecomanda în infraroşu
+Comment[ru]=Управление Noatun с помощью инфракрасного пульта
+Comment[sk]=Ovládajte Noatun vaším diaľkovým ovládačom
+Comment[sl]=Nadzorujte Noatun z vašim infrardečim daljinskim upravljalcem
+Comment[sr]=Контролишите Noatun вашим ИЦ даљинским управљачем
+Comment[sr@Latn]=Kontrolišite Noatun vašim IC daljinskim upravljačem
+Comment[sv]=Styr Noatun med en infraröd fjärrkontroll
+Comment[ta]=உங்கள் IR கருவியால் Noatun இனைக் கட்டுப்படுத்தவும்
+Comment[th]=ควบคุม Noatun ด้วยตัวรีโมทอินฟราเรดของคุณ
+Comment[tr]=Kızılötesi Uzaktan Kumanda ile Noatun'u Kontrol Edin
+Comment[uk]=Керує Noatun з віддаленого інфрачервоного пульта керування
+Comment[zh_CN]=使用红外线遥控 Noatun
+Comment[zh_HK]=使用紅外線遙控控制 Noatun
+Comment[zh_TW]=使用 Noatun 透過紅外線遙控
diff --git a/noatun/modules/infrared/irprefs.cpp b/noatun/modules/infrared/irprefs.cpp
new file mode 100644
index 00000000..409fa94e
--- /dev/null
+++ b/noatun/modules/infrared/irprefs.cpp
@@ -0,0 +1,311 @@
+
+#include
+#include
+#include
+#include
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include "irprefs.h"
+#include "lirc.h"
+
+class CommandItem : public QListViewItem
+{
+public:
+ CommandItem(QListViewItem *remote, const QString &name,
+ IRPrefs::Action action, int interval)
+ : QListViewItem(remote, name, IRPrefs::actionName(action),
+ interval ? QString().setNum(interval) : QString::null),
+ m_name(remote->text(0) + "::" + name),
+ m_action(action),
+ m_interval(interval)
+ {
+ }
+
+ const QString &name() const { return m_name; }
+ IRPrefs::Action action() const { return m_action; }
+ int interval() const { return m_interval; }
+ void setAction(IRPrefs::Action action)
+ {
+ setText(1, IRPrefs::actionName(action));
+ m_action = action;
+ }
+ void setInterval(int interval)
+ {
+ setText(2, interval ? QString().setNum(interval) : QString::null);
+ m_interval = interval;
+ }
+
+private:
+ QString m_name;
+ IRPrefs::Action m_action;
+ int m_interval;
+};
+
+Lirc *IRPrefs::s_lirc = 0;
+bool IRPrefs::s_configRead = false;
+QMap IRPrefs::s_commands;
+
+IRPrefs::IRPrefs(QObject *parent)
+ : CModule(i18n("Infrared Control"), i18n("Configure Infrared Commands"), "remote", parent)
+{
+ QGridLayout *layout = new QGridLayout(this, 3, 5, KDialog::marginHint(), KDialog::spacingHint());
+ layout->setColStretch(1, 1);
+
+ QLabel *label = new QLabel(i18n("Remote control &commands:"), this);
+ layout->addMultiCellWidget(label, 0, 0, 0, 4);
+
+ label->setBuddy(m_commands = new KListView(this));
+ layout->addMultiCellWidget(m_commands, 1, 1, 0, 4);
+
+ label = new QLabel(i18n("&Action:"), this);
+ layout->addWidget(label, 2, 0);
+
+ label->setBuddy(m_action = new KComboBox(this));
+ m_action->setEnabled(false);
+ layout->addWidget(m_action, 2, 1);
+
+ m_repeat = new QCheckBox(i18n("&Repeat"), this);
+ m_repeat->setEnabled(false);
+ layout->addWidget(m_repeat, 2, 2);
+
+ label = new QLabel(i18n("&Interval:"), this);
+ layout->addWidget(label, 2, 3);
+
+ label->setBuddy(m_interval = new KIntSpinBox(this));
+ m_interval->setMinValue(1);
+ m_interval->setMaxValue(0xff);
+ m_interval->setValue(10);
+ m_interval->setEnabled(false);
+ layout->addWidget(m_interval, 2, 4);
+
+ connect(s_lirc, SIGNAL(remotesRead()), SLOT(reopen()));
+ connect(m_commands,
+ SIGNAL(selectionChanged(QListViewItem *)),
+ SLOT(slotCommandSelected(QListViewItem *)));
+ connect(m_action,
+ SIGNAL(activated(int)),
+ SLOT(slotActionActivated(int)));
+ connect(m_repeat,
+ SIGNAL(toggled(bool)),
+ SLOT(slotRepeatToggled(bool)));
+ connect(m_interval,
+ SIGNAL(valueChanged(int)),
+ SLOT(slotIntervalChanged(int)));
+
+ reopen();
+}
+
+void IRPrefs::save()
+{
+ KConfig *c = kapp->config();
+ KConfigGroupSaver groupSaver(c, "Infrared");
+ c->writeEntry("CommandCount", s_commands.count());
+ int i = 1;
+ for (QMap::ConstIterator it = s_commands.begin(); it != s_commands.end(); ++it)
+ {
+ c->writePathEntry(QString("Command_%1").arg(i), it.key());
+ c->writeEntry(QString("Action_%1").arg(i), (int)((*it).action));
+ c->writeEntry(QString("Interval_%1").arg(i), (*it).interval);
+ ++i;
+ }
+}
+
+void IRPrefs::reopen()
+{
+ readConfig();
+
+ QStringList remotes = s_lirc->remotes();
+ m_commands->clear();
+ while (m_commands->columns()) m_commands->removeColumn(0);
+ if (!remotes.count())
+ {
+ m_commands->addColumn(i18n("Sorry"));
+ m_commands->setSorting(-1);
+ if (s_lirc->isConnected())
+ {
+ new QListViewItem(m_commands, i18n("You do not have any remote control configured."));
+ new QListViewItem(m_commands, i18n("Please make sure lirc is setup correctly."));
+ }
+ else
+ {
+ new QListViewItem(m_commands, i18n("Connection could not be established."));
+ new QListViewItem(m_commands, i18n("Please make sure lirc is setup correctly and lircd is running."));
+ }
+ m_commands->setEnabled(false);
+ return;
+ }
+ m_commands->setEnabled(true);
+ m_commands->addColumn(i18n("Button"));
+ m_commands->addColumn(i18n("Action"));
+ m_commands->addColumn(i18n("Interval"));
+ m_commands->setSorting(0);
+ for (QStringList::ConstIterator it = remotes.begin(); it != remotes.end(); ++it)
+ {
+ QListViewItem *remote = new QListViewItem(m_commands, *it);
+ const QStringList &buttons = s_lirc->buttons(*it);
+ for (QStringList::ConstIterator btn = buttons.begin(); btn != buttons.end(); ++btn)
+ {
+ QString key = *it + "::" + *btn;
+ if (s_commands.contains(key))
+ new CommandItem(remote, *btn, s_commands[key].action, s_commands[key].interval);
+ else
+ new CommandItem(remote, *btn, None, 0);
+ }
+ remote->setOpen(true);
+ }
+
+ m_action->clear();
+ for (int i = 0; ; ++i)
+ {
+ QString action = actionName((Action)i);
+ if (action.isNull())
+ break;
+ if (action.isEmpty())
+ m_action->insertItem(i18n("None"));
+ else
+ m_action->insertItem(action);
+ }
+
+
+}
+
+void IRPrefs::slotCommandSelected(QListViewItem *item)
+{
+ CommandItem *cmd = dynamic_cast(item);
+ if (cmd)
+ {
+ m_action->setCurrentItem((int)(cmd->action()));
+ m_repeat->setChecked(cmd->interval());
+ if (cmd->interval())
+ m_interval->setValue(cmd->interval());
+ else
+ {
+ m_interval->setValue(10);
+ cmd->setInterval(0); // HACKHACKHACK
+ }
+ m_action->setEnabled(true);
+ m_repeat->setEnabled(cmd->action() != None);
+ m_interval->setEnabled(cmd->interval());
+ }
+ else
+ {
+ m_action->setEnabled(false);
+ m_repeat->setEnabled(false);
+ m_interval->setEnabled(false);
+ }
+}
+
+void IRPrefs::slotActionActivated(int action)
+{
+ CommandItem *cmd = dynamic_cast(m_commands->currentItem());
+ if (!cmd)
+ return; // Shouldn't happen
+ cmd->setAction((Action)action);
+ if (cmd->action() == None)
+ {
+ cmd->setInterval(0);
+ m_repeat->setChecked(false);
+ m_repeat->setEnabled(false);
+ m_interval->setEnabled(false);
+ }
+ else
+ {
+ m_repeat->setEnabled(true);
+ m_interval->setEnabled(cmd->interval());
+ }
+ s_commands[cmd->name()].action = cmd->action();
+ s_commands[cmd->name()].interval = 0;
+}
+
+void IRPrefs::slotRepeatToggled(bool value)
+{
+ CommandItem *cmd = dynamic_cast(m_commands->currentItem());
+ if (!cmd)
+ return; // Shouldn't happen
+ cmd->setInterval(value ? 10 : 0);
+ s_commands[cmd->name()].interval = cmd->interval();
+ m_interval->setEnabled(value);
+}
+
+void IRPrefs::slotIntervalChanged(int value)
+{
+ CommandItem *cmd = dynamic_cast(m_commands->currentItem());
+ if (!cmd)
+ return; // Shouldn't happen
+ cmd->setInterval(value);
+ s_commands[cmd->name()].interval = cmd->interval();
+}
+
+const QString IRPrefs::actionName(Action action)
+{
+ switch (action)
+ {
+ case None:
+ return QString("");
+ case Play:
+ return i18n("Play");
+ case Stop:
+ return i18n("Stop");
+ case Previous:
+ return i18n("Back");
+ case Next:
+ return i18n("Next");
+ case VolumeDown:
+ return i18n("Volume Down");
+ case VolumeUp:
+ return i18n("Volume Up");
+ case Mute:
+ return i18n("Mute");
+ case Pause:
+ return i18n("Pause");
+ case SeekBackward:
+ return i18n("Seek Backward");
+ case SeekForward:
+ return i18n("Seek Forward");
+ case ShowPlaylist:
+ return i18n("Show Playlist");
+ case NextSection:
+ return i18n("Next Section");
+ case PreviousSection:
+ return i18n("Previous Section");
+ }
+ return QString::null;
+}
+
+void IRPrefs::readConfig()
+{
+ if (s_configRead)
+ return;
+ KConfig *c = kapp->config();
+ KConfigGroupSaver groupSaver(c, "Infrared");
+ int count = c->readNumEntry("CommandCount");
+ for (int i = 1; i <= count; ++i)
+ {
+ Command cmd;
+ cmd.action = (Action)(c->readNumEntry(QString("Action_%1").arg(i)));
+ cmd.interval = c->readNumEntry(QString("Interval_%1").arg(i));
+ s_commands.insert(c->readPathEntry(QString("Command_%1").arg(i)), cmd);
+ }
+ s_configRead = true;
+}
+
+IRPrefs::Action IRPrefs::actionFor(const QString &remote, const QString &button, int repeat)
+{
+ readConfig();
+ Command cmd = s_commands[remote + "::" + button];
+ if ((cmd.interval == 0 && repeat == 0)
+ || (cmd.interval != 0 && repeat % cmd.interval == 0))
+ return cmd.action;
+ else
+ return None;
+}
+
+#include "irprefs.moc"
+
+
diff --git a/noatun/modules/infrared/irprefs.h b/noatun/modules/infrared/irprefs.h
new file mode 100644
index 00000000..7f813ac8
--- /dev/null
+++ b/noatun/modules/infrared/irprefs.h
@@ -0,0 +1,62 @@
+
+#ifndef _IRPREFS_H_
+#define _IRPREFS_H_
+
+#include
+#include
+
+class QCheckBox;
+class QListViewItem;
+class KListView;
+class KComboBox;
+class KIntSpinBox;
+class Lirc;
+
+class IRPrefs : public CModule
+{
+Q_OBJECT
+public:
+ enum Action
+ {
+ None, Play, Stop, Pause, Mute,
+ Previous, Next, VolumeDown, VolumeUp,
+ SeekBackward, SeekForward, ShowPlaylist,
+ NextSection, PreviousSection
+ };
+
+ IRPrefs(QObject *parent);
+
+ virtual void save();
+
+ static const QString actionName(Action);
+ static Action actionFor(const QString &, const QString &, int);
+
+public slots:
+ static Lirc *s_lirc;
+
+private slots:
+ virtual void reopen();
+ void slotCommandSelected(QListViewItem *);
+ void slotActionActivated(int);
+ void slotRepeatToggled(bool);
+ void slotIntervalChanged(int);
+
+private:
+ static void readConfig();
+
+ KListView *m_commands;
+ KComboBox *m_action;
+ QCheckBox *m_repeat;
+ KIntSpinBox *m_interval;
+
+ struct Command
+ {
+ Action action;
+ int interval;
+ };
+ static bool s_configRead;
+ static QMap s_commands;
+};
+
+#endif
+
diff --git a/noatun/modules/infrared/lirc.cpp b/noatun/modules/infrared/lirc.cpp
new file mode 100644
index 00000000..857c07e2
--- /dev/null
+++ b/noatun/modules/infrared/lirc.cpp
@@ -0,0 +1,173 @@
+
+#include
+#include
+#include
+#include
+
+#include
+
+#include
+#include
+#include
+
+#include "lirc.h"
+
+Lirc::Lirc(QObject *parent)
+ : QObject(parent),
+ m_socket(0)
+{
+ int sock = ::socket(PF_UNIX, SOCK_STREAM, 0);
+ if (sock == -1)
+ {
+ KMessageBox::sorry(0, i18n("Could not create a socket to receive infrared signals. The error is:\n") + strerror(errno));
+ return;
+ }
+ sockaddr_un addr;
+ addr.sun_family = AF_UNIX;
+ strcpy(addr.sun_path, "/dev/lircd");
+ if (::connect(sock, (struct sockaddr *)(&addr), sizeof(addr)) == -1)
+ {
+ KMessageBox::sorry(0, i18n("Could not establish a connection to receive infrared signals. The error is:\n") + strerror(errno));
+ ::close(sock);
+ return;
+ }
+
+ m_socket = new QSocket;
+ m_socket->setSocket(sock);
+ connect(m_socket, SIGNAL(readyRead()), SLOT(slotRead()));
+ update();
+}
+
+Lirc::~Lirc()
+{
+ delete m_socket;
+}
+
+const QStringList Lirc::remotes() const
+{
+ QStringList result;
+ for (Remotes::ConstIterator it = m_remotes.begin(); it != m_remotes.end(); ++it)
+ result.append(it.key());
+ result.sort();
+ return result;
+}
+
+void Lirc::slotRead()
+{
+ while (m_socket->bytesAvailable())
+ {
+ QString line = readLine();
+ if (line == "BEGIN")
+ {
+ // BEGIN
+ //
+ // [SUCCESS|ERROR]
+ // [DATA
+ // n
+ // n lines of data]
+ // END
+ line = readLine();
+ if (line == "SIGHUP")
+ {
+ // Configuration changed
+ do line = readLine();
+ while (!line.isEmpty() && line != "END");
+ update();
+ return;
+ }
+ else if (line == "LIST")
+ {
+ // remote control list
+ if (readLine() != "SUCCESS" || readLine() != "DATA")
+ {
+ do line = readLine();
+ while (!line.isEmpty() && line != "END");
+ return;
+ }
+ QStringList remotes;
+ int count = readLine().toInt();
+ for (int i = 0; i < count; ++i)
+ remotes.append(readLine());
+ do line = readLine();
+ while (!line.isEmpty() && line != "END");
+ if (line.isEmpty())
+ return; // abort on corrupt data
+ for (QStringList::ConstIterator it = remotes.begin(); it != remotes.end(); ++it)
+ sendCommand("LIST " + *it);
+ return;
+ }
+ else if (line.left(4) == "LIST")
+ {
+ // button list
+ if (readLine() != "SUCCESS" || readLine() != "DATA")
+ {
+ do line = readLine();
+ while (!line.isEmpty() && line != "END");
+ return;
+ }
+ QString remote = line.mid(5);
+ QStringList buttons;
+ int count = readLine().toInt();
+ for (int i = 0; i < count; ++i)
+ {
+ //
+ QString btn = readLine();
+ buttons.append(btn.mid(17));
+ }
+ m_remotes.insert(remote, buttons);
+ }
+ do line = readLine();
+ while (!line.isEmpty() && line != "END");
+ emit remotesRead();
+ }
+ else
+ {
+ //