diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-03-17 18:53:56 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-03-17 18:53:56 +0000 |
| commit | 11707f82f34b5083c691a1a3e67bb83f82fd079c (patch) | |
| tree | 2a20a6735659d6ebd642e815701e1936c68079d9 /src/plugins/General/dbuscontrol/dbusadaptor.cpp | |
| parent | 4482829287e10dbac28fa50e1c32b55fe35ad378 (diff) | |
| download | qmmp-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/General/dbuscontrol/dbusadaptor.cpp')
| -rw-r--r-- | src/plugins/General/dbuscontrol/dbusadaptor.cpp | 58 |
1 files changed, 46 insertions, 12 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)); -} |
