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 @@ + + + + + &File + + + + + &Go + + + + + + + &Settings + + + + + + + + + + + + + +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 << "

  1. "; + + if (link_entries) + str << ""; + + str << htmlEscape(item.title()); + + if (link_entries) + str << ""; + + if (number_entries) + str << "
  2. " << 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 + { + //