aboutsummaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-03-17 18:53:56 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-03-17 18:53:56 +0000
commit11707f82f34b5083c691a1a3e67bb83f82fd079c (patch)
tree2a20a6735659d6ebd642e815701e1936c68079d9 /src/plugins
parent4482829287e10dbac28fa50e1c32b55fe35ad378 (diff)
downloadqmmp-11707f82f34b5083c691a1a3e67bb83f82fd079c.tar.gz
qmmp-11707f82f34b5083c691a1a3e67bb83f82fd079c.tar.bz2
qmmp-11707f82f34b5083c691a1a3e67bb83f82fd079c.zip
dbus plugin changes: volume and balance control
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@275 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/General/dbuscontrol/dbusadaptor.cpp58
-rw-r--r--src/plugins/General/dbuscontrol/dbusadaptor.h15
-rw-r--r--src/plugins/General/dbuscontrol/dbuscontrol.cpp24
-rw-r--r--src/plugins/General/dbuscontrol/dbuscontrol.h7
4 files changed, 86 insertions, 18 deletions
diff --git a/src/plugins/General/dbuscontrol/dbusadaptor.cpp b/src/plugins/General/dbuscontrol/dbusadaptor.cpp
index 23646b5bb..730ab5ee3 100644
--- a/src/plugins/General/dbuscontrol/dbusadaptor.cpp
+++ b/src/plugins/General/dbuscontrol/dbusadaptor.cpp
@@ -17,49 +17,83 @@
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
+
+#include <qmmpui/control.h>
+
#include "dbusadaptor.h"
-DBUSAdaptor::DBUSAdaptor(QObject *parent)
- : QDBusAbstractAdaptor(parent)
+DBUSAdaptor::DBUSAdaptor(Control *ctrl, QObject *parent)
+ : QDBusAbstractAdaptor(parent)
{
+ m_control = ctrl;
setAutoRelaySignals(TRUE);
}
DBUSAdaptor::~DBUSAdaptor()
+{}
+
+int DBUSAdaptor::volume()
+{
+ int left, right;
+ QMetaObject::invokeMethod(parent(), "leftVolume", Q_RETURN_ARG(int, left));
+ QMetaObject::invokeMethod(parent(), "rightVolume", Q_RETURN_ARG(int, right));
+ return qMax(left, right);
+}
+
+void DBUSAdaptor::setVolume(int volume)
+{
+ volume = qMin(volume, 100);
+ volume = qMax(volume, 0);
+ int bal = balance();
+ int left = volume-qMax(bal,0)*volume/100;
+ int right = volume+qMin(bal,0)*volume/100;
+ QMetaObject::invokeMethod(m_control, "setVolume", Q_ARG(int, left), Q_ARG(int, right));
+}
+
+int DBUSAdaptor::balance()
{
+ int left, right;
+ QMetaObject::invokeMethod(parent(), "leftVolume", Q_RETURN_ARG(int, left));
+ QMetaObject::invokeMethod(parent(), "rightVolume", Q_RETURN_ARG(int, right));
+ return (right-left)*100/qMax(left, right);
+}
+
+void DBUSAdaptor::setBalance(int bal)
+{
+ bal = qMin(bal,100);
+ bal = qMax(bal,-100);
+ int left = volume()-qMax(bal,0)*volume()/100;
+ int right = volume()+qMin(bal,0)*volume()/100;
+ QMetaObject::invokeMethod(m_control, "setVolume", Q_ARG(int, left), Q_ARG(int, right));
}
void DBUSAdaptor::play()
{
- QMetaObject::invokeMethod(parent(), "play");
+ QMetaObject::invokeMethod(m_control, "play");
}
void DBUSAdaptor::stop()
{
- QMetaObject::invokeMethod(parent(), "stop");
+ QMetaObject::invokeMethod(m_control, "stop");
}
void DBUSAdaptor::next()
{
- QMetaObject::invokeMethod(parent(), "next");
+ QMetaObject::invokeMethod(m_control, "next");
}
void DBUSAdaptor::previous()
{
- QMetaObject::invokeMethod(parent(), "previous");
+ QMetaObject::invokeMethod(m_control, "previous");
}
void DBUSAdaptor::pause()
{
- QMetaObject::invokeMethod(parent(), "pause");
+ QMetaObject::invokeMethod(m_control, "pause");
}
void DBUSAdaptor::exit()
{
- QMetaObject::invokeMethod(parent(), "exit");
+ QMetaObject::invokeMethod(m_control, "exit");
}
-void DBUSAdaptor::setVolume(int left, int right)
-{
- QMetaObject::invokeMethod(parent(), "setVolume", Q_ARG(int, left), Q_ARG(int, right));
-}
diff --git a/src/plugins/General/dbuscontrol/dbusadaptor.h b/src/plugins/General/dbuscontrol/dbusadaptor.h
index b1b5fa50d..942e0b9ec 100644
--- a/src/plugins/General/dbuscontrol/dbusadaptor.h
+++ b/src/plugins/General/dbuscontrol/dbusadaptor.h
@@ -22,6 +22,8 @@
#include <QtDBus>
+class Control;
+
/**
@author Ilya Kotov <forkotov02@hotmail.ru>
*/
@@ -29,11 +31,19 @@ class DBUSAdaptor : public QDBusAbstractAdaptor
{
Q_OBJECT
Q_CLASSINFO("D-Bus Interface", "org.qmmp.dbus")
+Q_PROPERTY(int volume READ volume WRITE setVolume)
+Q_PROPERTY(int balance READ balance WRITE setBalance)
+
public:
- DBUSAdaptor(QObject *parent = 0);
+ DBUSAdaptor(Control *ctrl, QObject *parent = 0);
~DBUSAdaptor();
+ int volume();
+ void setVolume(int);
+ int balance();
+ void setBalance(int);
+
public slots:
void play();
void stop();
@@ -41,8 +51,9 @@ public slots:
void previous();
void pause();
void exit();
- void setVolume(int, int);
+private:
+ Control *m_control;
};
#endif
diff --git a/src/plugins/General/dbuscontrol/dbuscontrol.cpp b/src/plugins/General/dbuscontrol/dbuscontrol.cpp
index 6cd766063..e2e673b21 100644
--- a/src/plugins/General/dbuscontrol/dbuscontrol.cpp
+++ b/src/plugins/General/dbuscontrol/dbuscontrol.cpp
@@ -26,16 +26,17 @@
DBUSControl::DBUSControl(Control *control, QObject *parent)
: General(parent)
{
- m_adaptor = new DBUSAdaptor(control);
+ new DBUSAdaptor(control, this);
QDBusConnection connection = QDBusConnection::sessionBus();
- connection.registerObject("/Qmmp", control);
+ connection.registerObject("/Qmmp", this);
connection.registerService("org.qmmp.dbus");
+ m_left = 0;
+ m_right = 0;
}
DBUSControl::~DBUSControl()
{
- delete m_adaptor;
}
void DBUSControl::setState(const uint &state)
@@ -60,3 +61,20 @@ void DBUSControl::setState(const uint &state)
void DBUSControl::setSongInfo(const SongInfo&)
{
}
+
+void DBUSControl::setVolume(int left, int right)
+{
+ m_left = left;
+ m_right = right;
+}
+
+int DBUSControl::leftVolume()
+{
+ return m_left;
+}
+
+int DBUSControl::rightVolume()
+{
+ return m_right;
+}
+
diff --git a/src/plugins/General/dbuscontrol/dbuscontrol.h b/src/plugins/General/dbuscontrol/dbuscontrol.h
index a14c37759..58bac24ce 100644
--- a/src/plugins/General/dbuscontrol/dbuscontrol.h
+++ b/src/plugins/General/dbuscontrol/dbuscontrol.h
@@ -40,10 +40,15 @@ public:
void setState(const uint& state);
void setSongInfo(const SongInfo &song);
+ void setVolume(int left, int right);
+
+public slots:
+ int leftVolume();
+ int rightVolume();
private:
DBUSAdaptor *m_adaptor;
-
+ int m_left, m_right;
};
#endif