aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-03-18 14:12:04 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-03-18 14:12:04 +0000
commit95e35ef7c6517cfce52ecefa29eba972055eeaa6 (patch)
tree1501df613692a2b64dfc6c720c0079e426343fbd
parentadc59ac93bf343c88eb664fdb4004fbd7823805c (diff)
downloadqmmp-95e35ef7c6517cfce52ecefa29eba972055eeaa6.tar.gz
qmmp-95e35ef7c6517cfce52ecefa29eba972055eeaa6.tar.bz2
qmmp-95e35ef7c6517cfce52ecefa29eba972055eeaa6.zip
dbus plugin: some new functions
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@280 90c681e8-e032-0410-971d-27865f9a5e38
-rw-r--r--src/plugins/General/dbuscontrol/dbusadaptor.cpp23
-rw-r--r--src/plugins/General/dbuscontrol/dbusadaptor.h8
-rw-r--r--src/plugins/General/dbuscontrol/dbuscontrol.cpp16
-rw-r--r--src/plugins/General/dbuscontrol/dbuscontrol.h5
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