[SCM] kdeconnect packaging branch, master, updated. debian/0.9g-1-1183-g9d69498

Maximiliano Curia maxy at moszumanska.debian.org
Fri Oct 14 14:27:19 UTC 2016


Gitweb-URL: http://git.debian.org/?p=pkg-kde/kde-extras/kdeconnect.git;a=commitdiff;h=e9f31ab

The following commit has been merged in the master branch:
commit e9f31abd98aad673b4cc66f400bf9cf380efeb6f
Author: Albert Vaca <albertvaka at gmail.com>
Date:   Thu Jan 23 21:08:23 2014 +0100

    PauseMusic plugin can now mute system instead of pause
---
 kded/plugins/pausemusic/pausemusic_config.cpp |  7 ++-
 kded/plugins/pausemusic/pausemusic_config.ui  | 24 +++++++++-
 kded/plugins/pausemusic/pausemusicplugin.cpp  | 68 +++++++++++++++++++--------
 3 files changed, 76 insertions(+), 23 deletions(-)

diff --git a/kded/plugins/pausemusic/pausemusic_config.cpp b/kded/plugins/pausemusic/pausemusic_config.cpp
index 9d470ea..d32dc43 100644
--- a/kded/plugins/pausemusic/pausemusic_config.cpp
+++ b/kded/plugins/pausemusic/pausemusic_config.cpp
@@ -40,6 +40,7 @@ PauseMusicConfig::PauseMusicConfig(QWidget *parent, const QVariantList& )
 
     connect(m_ui->rad_ringing, SIGNAL(toggled(bool)), this, SLOT(changed()));
     connect(m_ui->rad_talking, SIGNAL(toggled(bool)), this, SLOT(changed()));
+    connect(m_ui->check_mute, SIGNAL(toggled(bool)), this, SLOT(changed()));
 }
 
 PauseMusicConfig::~PauseMusicConfig()
@@ -52,7 +53,7 @@ void PauseMusicConfig::defaults()
     KCModule::defaults();
     m_ui->rad_talking->setChecked(false);
     m_ui->rad_ringing->setChecked(true);
-
+    m_ui->check_mute->setChecked(false);
     Q_EMIT changed(true);
 }
 
@@ -63,7 +64,8 @@ void PauseMusicConfig::load()
     bool talking = m_cfg->group("pause_condition").readEntry("talking_only", false);
     m_ui->rad_talking->setChecked(talking);
     m_ui->rad_ringing->setChecked(!talking);
-
+    bool use_mute = m_cfg->group("use_mute").readEntry("use_mute", false);
+    m_ui->check_mute->setChecked(use_mute);
     Q_EMIT changed(false);
 }
 
@@ -71,6 +73,7 @@ void PauseMusicConfig::load()
 void PauseMusicConfig::save()
 {
     m_cfg->group("pause_condition").writeEntry("talking_only", m_ui->rad_talking->isChecked());
+    m_cfg->group("use_mute").writeEntry("use_mute", m_ui->check_mute->isChecked());
     KCModule::save();
 
     Q_EMIT changed(false);
diff --git a/kded/plugins/pausemusic/pausemusic_config.ui b/kded/plugins/pausemusic/pausemusic_config.ui
index 8c4f5ff..8b05073 100644
--- a/kded/plugins/pausemusic/pausemusic_config.ui
+++ b/kded/plugins/pausemusic/pausemusic_config.ui
@@ -9,8 +9,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>252</width>
-    <height>175</height>
+    <width>406</width>
+    <height>155</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -47,6 +47,26 @@
     </widget>
    </item>
    <item>
+    <spacer name="verticalSpacer_2">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>40</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item>
+    <widget class="QCheckBox" name="check_mute">
+     <property name="text">
+      <string>Mute system instead of pause</string>
+     </property>
+    </widget>
+   </item>
+   <item>
     <spacer name="verticalSpacer">
      <property name="orientation">
       <enum>Qt::Vertical</enum>
diff --git a/kded/plugins/pausemusic/pausemusicplugin.cpp b/kded/plugins/pausemusic/pausemusicplugin.cpp
index f902560..04f7a72 100644
--- a/kded/plugins/pausemusic/pausemusicplugin.cpp
+++ b/kded/plugins/pausemusic/pausemusicplugin.cpp
@@ -34,10 +34,24 @@
 K_PLUGIN_FACTORY( KdeConnectPluginFactory, registerPlugin< PauseMusicPlugin >(); )
 K_EXPORT_PLUGIN( KdeConnectPluginFactory("kdeconnect_pausemusic", "kdeconnect_pausemusic") )
 
+//TODO: Port this away from KMix to use only Pulseaudio
+bool isKMixMuted() {
+    QDBusInterface kmixInterface("org.kde.kmix", "/Mixers", "org.kde.KMix.MixSet");
+    QString mixer = kmixInterface.property("currentMasterMixer").toString();
+    QString control = kmixInterface.property("currentMasterControl").toString();
+    mixer.replace(':','_');
+    control.replace(':','_');
+
+    QDBusInterface mixerInterface("org.kde.kmix", "/Mixers/"+mixer+"/"+control, "org.kde.KMix.Control");
+    if (mixerInterface.property("mute").toBool()) return true;
+    return (mixerInterface.property("volume").toInt() == 0);
+}
+
+
 PauseMusicPlugin::PauseMusicPlugin(QObject* parent, const QVariantList& args)
     : KdeConnectPlugin(parent, args)
 {
-
+    QDBusInterface kmixInterface("org.kde.kmix", "/kmix/KMixWindow/actions/mute", "org.qtproject.Qt.QAction");
 }
 
 bool PauseMusicPlugin::receivePackage(const NetworkPackage& np)
@@ -57,33 +71,49 @@ bool PauseMusicPlugin::receivePackage(const NetworkPackage& np)
     }
 
     bool pauseConditionFulfilled = !np.get<bool>("isCancel");
+    bool use_mute = config->group("use_mute").readEntry("use_mute", false);
 
     if (pauseConditionFulfilled) {
-        //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 mprisInterface(iface, "/org/mpris/MediaPlayer2", "org.mpris.MediaPlayer2.Player");
-                QString status = mprisInterface.property("PlaybackStatus").toString();
-                if (status == "Playing") {
-                    if (!pausedSources.contains(iface)) {
-                        pausedSources.insert(iface);
-                        mprisInterface.asyncCall("Pause");
+        if (use_mute) {
+            QDBusInterface kmixInterface("org.kde.kmix", "/kmix/KMixWindow/actions/mute", "org.qtproject.Qt.QAction");
+            if (isKMixMuted()) {
+                pausedSources.insert("mute");
+                kmixInterface.call("trigger");
+            }
+        } else {
+            //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 mprisInterface(iface, "/org/mpris/MediaPlayer2", "org.mpris.MediaPlayer2.Player");
+                    QString status = mprisInterface.property("PlaybackStatus").toString();
+                    if (status == "Playing") {
+                        if (!pausedSources.contains(iface)) {
+                            pausedSources.insert(iface);
+                            mprisInterface.asyncCall("Pause");
+                        }
                     }
                 }
             }
         }
     } else {
-        Q_FOREACH (const QString& iface, pausedSources) {
-            QDBusInterface mprisInterface(iface, "/org/mpris/MediaPlayer2", "org.mpris.MediaPlayer2.Player");
-            //Calling play does not work for Spotify
-            //mprisInterface->call(QDBus::Block,"Play");
-            //Workaround: Using playpause instead (checking first if it is already playing)
-            QString status = mprisInterface.property("PlaybackStatus").toString();
-            if (status == "Paused") mprisInterface.asyncCall("PlayPause");
-            //End of workaround
+        if (pausedSources.empty()) return false;
+        if (use_mute) {
+             QDBusInterface kmixInterface("org.kde.kmix", "/kmix/KMixWindow/actions/mute", "org.qtproject.Qt.QAction");
+             if (isKMixMuted()) kmixInterface.call("trigger");
+        } else {
+            Q_FOREACH (const QString& iface, pausedSources) {
+                QDBusInterface mprisInterface(iface, "/org/mpris/MediaPlayer2", "org.mpris.MediaPlayer2.Player");
+                //Calling play does not work for Spotify
+                //mprisInterface->call(QDBus::Block,"Play");
+                //Workaround: Using playpause instead (checking first if it is already playing)
+                QString status = mprisInterface.property("PlaybackStatus").toString();
+                if (status == "Paused") mprisInterface.asyncCall("PlayPause");
+                //End of workaround
+            }
         }
         pausedSources.clear();
+
     }
 
     return true;

-- 
kdeconnect packaging



More information about the pkg-kde-commits mailing list