[SCM] kdeconnect packaging branch, master, updated. debian/0.9g-1-1183-g9d69498
Maximiliano Curia
maxy at moszumanska.debian.org
Fri Oct 14 14:26:40 UTC 2016
Gitweb-URL: http://git.debian.org/?p=pkg-kde/kde-extras/kdeconnect.git;a=commitdiff;h=ba129a1
The following commit has been merged in the master branch:
commit ba129a1542b550bf57c91181b1e7e3aa065832fc
Author: Albert Vaca <albertvaka at gmail.com>
Date: Wed Jul 24 23:51:06 2013 +0200
PauseMusicPackageInterface now supports MPRIS
Other small improvements
---
daemon/linkproviders/avahitcplinkprovider.cpp | 1 -
daemon/networkpackage.cpp | 10 +++--
.../clipboardpackageinterface.cpp | 6 ++-
.../packageinterfaces/clipboardpackageinterface.h | 2 +-
.../pausemusicpackageinterface.cpp | 52 +++++++++++++++++-----
.../packageinterfaces/pausemusicpackageinterface.h | 5 ++-
6 files changed, 57 insertions(+), 19 deletions(-)
diff --git a/daemon/linkproviders/avahitcplinkprovider.cpp b/daemon/linkproviders/avahitcplinkprovider.cpp
index 3b3f5f9..0203361 100644
--- a/daemon/linkproviders/avahitcplinkprovider.cpp
+++ b/daemon/linkproviders/avahitcplinkprovider.cpp
@@ -53,7 +53,6 @@ void AvahiTcpLinkProvider::newConnection()
NetworkPackage::createIdentityPackage(&np);
int written = socket->write(np.serialize());
- qDebug() << np.serialize();
qDebug() << "AvahiTcpLinkProvider sent package." << written << " bytes written, waiting for reply";
}
diff --git a/daemon/networkpackage.cpp b/daemon/networkpackage.cpp
index 79c8ee0..255ef36 100644
--- a/daemon/networkpackage.cpp
+++ b/daemon/networkpackage.cpp
@@ -54,10 +54,12 @@ QByteArray NetworkPackage::serialize() const
bool ok;
QJson::Serializer serializer;
QByteArray json = serializer.serialize(variant,&ok);
- if (!ok) qDebug() << "Serialization error:" << serializer.errorMessage();
- json.append('
');
-
- qDebug() << "utlims chars:" << (int)(json[json.size()-1]) << (int)(json[json.size()-2]) << (int)(json[json.size()-3]);
+ if (!ok) {
+ qDebug() << "Serialization error:" << serializer.errorMessage();
+ } else {
+ qDebug() << "Serialized package:" << json;
+ json.append('
');
+ }
return json;
}
diff --git a/daemon/packageinterfaces/clipboardpackageinterface.cpp b/daemon/packageinterfaces/clipboardpackageinterface.cpp
index d63f926..201fa9e 100644
--- a/daemon/packageinterfaces/clipboardpackageinterface.cpp
+++ b/daemon/packageinterfaces/clipboardpackageinterface.cpp
@@ -27,11 +27,13 @@
ClipboardPackageInterface::ClipboardPackageInterface() {
clipboard = QApplication::clipboard();
ignore_next_clipboard_change = false;
- connect(clipboard,SIGNAL(changed(QClipboard::Mode)),this,SLOT(clipboardChanged()));
+ connect(clipboard,SIGNAL(changed(QClipboard::Mode)),this,SLOT(clipboardChanged(QClipboard::Mode)));
}
-void ClipboardPackageInterface::clipboardChanged()
+void ClipboardPackageInterface::clipboardChanged(QClipboard::Mode mode)
{
+ if (mode != QClipboard::QClipboard::Clipboard) return;
+
if (ignore_next_clipboard_change) {
ignore_next_clipboard_change = false;
return;
diff --git a/daemon/packageinterfaces/clipboardpackageinterface.h b/daemon/packageinterfaces/clipboardpackageinterface.h
index 0b12a2e..bc896d7 100644
--- a/daemon/packageinterfaces/clipboardpackageinterface.h
+++ b/daemon/packageinterfaces/clipboardpackageinterface.h
@@ -41,7 +41,7 @@ public Q_SLOTS:
virtual bool receivePackage(const Device& device, const NetworkPackage& np);
private Q_SLOTS:
- void clipboardChanged();
+ void clipboardChanged(QClipboard::Mode mode);
private:
bool ignore_next_clipboard_change;
diff --git a/daemon/packageinterfaces/pausemusicpackageinterface.cpp b/daemon/packageinterfaces/pausemusicpackageinterface.cpp
index fff3270..f3e55bc 100644
--- a/daemon/packageinterfaces/pausemusicpackageinterface.cpp
+++ b/daemon/packageinterfaces/pausemusicpackageinterface.cpp
@@ -21,12 +21,16 @@
#include "pausemusicpackageinterface.h"
#include <QDebug>
+#include <QDBusConnection>
+#include <QDBusInterface>
+#include <qdbusconnectioninterface.h>
+#include <QDBusReply>
+#include <QDBusMessage>
PauseMusicPackageInterface::PauseMusicPackageInterface()
{
//TODO: Be able to change this from settings
pauseWhen = PauseWhenRinging;
- paused = false;
}
@@ -36,7 +40,7 @@ bool PauseMusicPackageInterface::receivePackage (const Device& device, const Net
bool pauseConditionFulfilled = false;
- //TODO: I have manually tested it and it works for both cases, but I should somehow write a test for this logic
+ //TODO: I have manually tested it and it works for both "pauseWhen" cases, but I should somehow write a test for this logic
if (pauseWhen == PauseWhenRinging) {
if (np.type() == PACKAGE_TYPE_NOTIFICATION) {
if (np.get<QString>("notificationType") != "ringing") return false;
@@ -53,15 +57,43 @@ bool PauseMusicPackageInterface::receivePackage (const Device& device, const Net
qDebug() << "PauseMusicPackageReceiver - PauseCondition:" << pauseConditionFulfilled;
- if (pauseConditionFulfilled && !paused) {
- //TODO: Use KDE DBUS API
- system("qdbus org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Pause");
- } if (!pauseConditionFulfilled && paused) {
- //FIXME: Play does not work, using PlayPause
- system("qdbus org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause");
- }
+ if (pauseConditionFulfilled) {
+ //TODO: Make this async
+ //Search for interfaces currently playing
+ QStringList interfaces = QDBusConnection::sessionBus().interface()->registeredServiceNames().value();
+ Q_FOREACH (const QString& iface, interfaces) {
+ if (iface.startsWith("org.mpris.MediaPlayer2")) {
+ QDBusInterface *dbusInterface = new QDBusInterface(iface, "/org/mpris/MediaPlayer2", "org.freedesktop.DBus.Properties", QDBusConnection::sessionBus(), this);
+ QDBusInterface *mprisInterface = new QDBusInterface(iface, "/org/mpris/MediaPlayer2", "org.mpris.MediaPlayer2.Player", QDBusConnection::sessionBus(), this);
+
+ QString status = (qvariant_cast<QDBusVariant>(dbusInterface->call(QDBus::Block,"Get","org.mpris.MediaPlayer2.Player","PlaybackStatus").arguments().first()).variant()).toString();
+ if (status == "Playing") {
+ if (!pausedSources.contains(iface)) {
+ pausedSources.insert(iface);
+ mprisInterface->call(QDBus::Block,"Pause");
+ }
+ }
- paused = pauseConditionFulfilled;
+ delete dbusInterface;
+ delete mprisInterface;
+ }
+ }
+ } if (!pauseConditionFulfilled) {
+ //TODO: Make this async
+ Q_FOREACH (const QString& iface, pausedSources) {
+ QDBusInterface *mprisInterface = new QDBusInterface(iface, "/org/mpris/MediaPlayer2", "org.mpris.MediaPlayer2.Player", QDBusConnection::sessionBus(), this);
+ //FIXME: Calling play does not work in spotify
+ //mprisInterface->call(QDBus::Block,"Play");
+ //Workaround: Using playpause instead (checking first if it is already playing)
+ QDBusInterface *dbusInterface = new QDBusInterface(iface, "/org/mpris/MediaPlayer2", "org.freedesktop.DBus.Properties", QDBusConnection::sessionBus(), this);
+ QString status = (qvariant_cast<QDBusVariant>(dbusInterface->call(QDBus::Block,"Get","org.mpris.MediaPlayer2.Player","PlaybackStatus").arguments().first()).variant()).toString();
+ if (status == "Paused") mprisInterface->call(QDBus::Block,"PlayPause");
+ delete dbusInterface;
+ //End of workaround
+ delete mprisInterface;
+ }
+ pausedSources.clear();
+ }
return true;
diff --git a/daemon/packageinterfaces/pausemusicpackageinterface.h b/daemon/packageinterfaces/pausemusicpackageinterface.h
index 6e7e433..1793538 100644
--- a/daemon/packageinterfaces/pausemusicpackageinterface.h
+++ b/daemon/packageinterfaces/pausemusicpackageinterface.h
@@ -23,6 +23,9 @@
#include "packageinterface.h"
+#include <QSet>
+#include <QString>
+
class PauseMusicPackageInterface
: public PackageInterface
{
@@ -33,7 +36,7 @@ public:
private:
enum PauseCondtions { PauseWhenTalking, PauseWhenRinging, NeverPause };
PauseCondtions pauseWhen;
- bool paused;
+ QSet<QString> pausedSources;
};
--
kdeconnect packaging
More information about the pkg-kde-commits
mailing list