diff options
Diffstat (limited to 'src/plugins')
| -rw-r--r-- | src/plugins/General/dbuscontrol/dbusadaptor.cpp | 23 | ||||
| -rw-r--r-- | src/plugins/General/dbuscontrol/dbusadaptor.h | 8 | ||||
| -rw-r--r-- | src/plugins/General/dbuscontrol/dbuscontrol.cpp | 16 | ||||
| -rw-r--r-- | src/plugins/General/dbuscontrol/dbuscontrol.h | 5 |
4 files changed, 51 insertions, 1 deletions
diff --git a/src/plugins/General/dbuscontrol/dbusadaptor.cpp b/src/plugins/General/dbuscontrol/dbusadaptor.cpp index 7b02caa5d..cdc31a55d 100644 --- a/src/plugins/General/dbuscontrol/dbusadaptor.cpp +++ b/src/plugins/General/dbuscontrol/dbusadaptor.cpp @@ -29,6 +29,8 @@ DBUSAdaptor::DBUSAdaptor(Control *ctrl, QObject *parent) m_control = ctrl; setAutoRelaySignals(TRUE); connect(parent, SIGNAL(stateChanged()), SLOT (processState())); + connect(parent, SIGNAL(volumeChanged()), SLOT (processVolume())); + connect(parent, SIGNAL(timeChanged()), SLOT (processTime())); } DBUSAdaptor::~DBUSAdaptor() @@ -119,6 +121,11 @@ bool DBUSAdaptor::isStopped() return qobject_cast<DBUSControl *>(parent())->state() == General::Stopped; } +int DBUSAdaptor::elapsedTime() +{ + return qobject_cast<DBUSControl *>(parent())->elapsedTime(); +} + void DBUSAdaptor::play() { QMetaObject::invokeMethod(m_control, "play"); @@ -154,6 +161,13 @@ void DBUSAdaptor::exit() QMetaObject::invokeMethod(m_control, "exit"); } +void DBUSAdaptor::seek(int time) +{ + if ((time < 0) || (time > length())) + return; + QMetaObject::invokeMethod(m_control, "seek", Q_ARG(int, time)); +} + void DBUSAdaptor::processState() { uint state = qobject_cast<DBUSControl *>(parent())->state(); @@ -165,3 +179,12 @@ void DBUSAdaptor::processState() emit paused(); } +void DBUSAdaptor::processVolume() +{ + emit volumeChanged(volume(), balance()); +} + +void DBUSAdaptor::processTime() +{ + emit timeChanged(elapsedTime()); +} diff --git a/src/plugins/General/dbuscontrol/dbusadaptor.h b/src/plugins/General/dbuscontrol/dbusadaptor.h index e02142b9b..225de2aca 100644 --- a/src/plugins/General/dbuscontrol/dbusadaptor.h +++ b/src/plugins/General/dbuscontrol/dbusadaptor.h @@ -43,6 +43,8 @@ Q_PROPERTY(QString genre READ genre) Q_PROPERTY(bool isPlaying READ isPlaying) Q_PROPERTY(bool isPaused READ isPaused) Q_PROPERTY(bool isStopped READ isStopped) +Q_PROPERTY(int elapsedTime READ elapsedTime) + public: DBUSAdaptor(Control *ctrl, QObject *parent = 0); @@ -63,11 +65,14 @@ public: bool isPlaying(); bool isPaused(); bool isStopped(); + int elapsedTime(); signals: void started(); void paused(); void stopped(); + void volumeChanged(int vol, int bal); + void timeChanged(int newTime); public slots: void play(); @@ -77,9 +82,12 @@ public slots: void pause(); void toggleVisibility(); void exit(); + void seek(int time); private slots: void processState(); + void processVolume(); + void processTime(); private: Control *m_control; diff --git a/src/plugins/General/dbuscontrol/dbuscontrol.cpp b/src/plugins/General/dbuscontrol/dbuscontrol.cpp index 2b2214846..c2925db3b 100644 --- a/src/plugins/General/dbuscontrol/dbuscontrol.cpp +++ b/src/plugins/General/dbuscontrol/dbuscontrol.cpp @@ -32,6 +32,7 @@ DBUSControl::DBUSControl(Control *control, QObject *parent) connection.registerService("org.qmmp.dbus"); m_left = 0; m_right = 0; + m_time = 0; m_state = General::Stopped; } @@ -56,7 +57,8 @@ void DBUSControl::setState(const uint &state) } case General::Stopped: { - m_song = SongInfo(); + m_song.clear(); + m_time = 0; break; } } @@ -71,6 +73,13 @@ void DBUSControl::setVolume(int left, int right) { m_left = left; m_right = right; + emit volumeChanged(); +} + +void DBUSControl::setTime(int time) +{ + m_time = time; + emit timeChanged(); } SongInfo *DBUSControl::info() @@ -83,6 +92,11 @@ uint DBUSControl::state() return m_state; } +int DBUSControl::elapsedTime() +{ + return m_time; +} + int DBUSControl::leftVolume() { return m_left; diff --git a/src/plugins/General/dbuscontrol/dbuscontrol.h b/src/plugins/General/dbuscontrol/dbuscontrol.h index 40ff4f3f0..b75ccc000 100644 --- a/src/plugins/General/dbuscontrol/dbuscontrol.h +++ b/src/plugins/General/dbuscontrol/dbuscontrol.h @@ -42,12 +42,16 @@ public: void setState(const uint& state); void setSongInfo(const SongInfo &song); void setVolume(int left, int right); + void setTime(int time); //helper functions SongInfo *info(); uint state(); + int elapsedTime(); signals: void stateChanged(); + void timeChanged(); + void volumeChanged(); public slots: int leftVolume(); @@ -58,6 +62,7 @@ private: int m_left, m_right; SongInfo m_song; uint m_state; + int m_time; }; #endif |
