summaryrefslogtreecommitdiffstats
path: root/noatun/modules/dcopiface
diff options
context:
space:
mode:
Diffstat (limited to 'noatun/modules/dcopiface')
-rw-r--r--noatun/modules/dcopiface/Makefile.am16
-rw-r--r--noatun/modules/dcopiface/dcopiface.cpp250
-rw-r--r--noatun/modules/dcopiface/dcopiface.h104
-rw-r--r--noatun/modules/dcopiface/dcopiface.plugin137
4 files changed, 507 insertions, 0 deletions
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 <noatun/player.h>
+#include <noatun/app.h>
+#include <noatunarts/noatunarts.h>
+#include <noatun/engine.h>
+
+#include <dcopclient.h>
+
+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<NoatunLibraryInfo> available;
+
+ available = napp->libraryLoader()->available();
+
+ QValueList<NoatunLibraryInfo>::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<NoatunLibraryInfo> loaded;
+
+ loaded = napp->libraryLoader()->loaded();
+
+ QValueList<NoatunLibraryInfo>::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 <noatun/player.h>
+#include <noatun/plugin.h>
+
+#include <dcopobject.h>
+#include <kdemacros.h>
+
+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