summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Branson <andrew.branson@cern.ch>2015-04-17 16:56:00 +0200
committerAndrew Branson <andrew.branson@cern.ch>2015-04-17 19:11:42 +0200
commit8da20a7c3088aee2b04d45feeee8ca0753dc260e (patch)
tree70dc3a2d091ca82f77a9a20e3ce7f1cddd825526
parentd9f2e79eff8744bd5bd422133117693d42ee52da (diff)
Test MPRIS volume control to see if the setting changes when we alter
it. If it fails, use system volume instead, if enabled by config property.
-rw-r--r--app/qml/pages/ManagerPage.qml10
-rw-r--r--app/translations/pebble-es.ts70
-rw-r--r--app/translations/pebble-pl.ts70
-rw-r--r--app/translations/pebble.ts70
-rw-r--r--daemon/manager.cpp2
-rw-r--r--daemon/musicmanager.cpp109
-rw-r--r--daemon/musicmanager.h5
-rw-r--r--daemon/settings.h3
8 files changed, 236 insertions, 103 deletions
diff --git a/app/qml/pages/ManagerPage.qml b/app/qml/pages/ManagerPage.qml
index 894797d..0c393a3 100644
--- a/app/qml/pages/ManagerPage.qml
+++ b/app/qml/pages/ManagerPage.qml
@@ -11,6 +11,7 @@ Page {
path: "/org/pebbled/settings"
property bool silentWhenConnected: false
property bool transliterateMessage: false
+ property bool useSystemVolume: true
property bool incomingCallNotification: true
property bool notificationsCommhistoryd: true
property bool notificationsMissedCall: true
@@ -133,6 +134,15 @@ Page {
}
}
TextSwitch {
+ text: qsTr("Alter system volume")
+ description: qsTr("Pebble music volume buttons change the system volume when the music player cannot")
+ checked: settings.useSystemVolume
+ automaticCheck: true
+ onClicked: {
+ settings.useSystemVolume = !settings.useSystemVolume;
+ }
+ }
+ TextSwitch {
text: qsTr("Transliterate messages")
description: qsTr("Messages are transliterated to ASCII before sending to Pebble")
checked: settings.transliterateMessage
diff --git a/app/translations/pebble-es.ts b/app/translations/pebble-es.ts
index 6bdb778..7ee4e71 100644
--- a/app/translations/pebble-es.ts
+++ b/app/translations/pebble-es.ts
@@ -174,154 +174,164 @@
<context>
<name>ManagerPage</name>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="34"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="35"/>
<source>Pebble Appstore</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="38"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="39"/>
<source>About</source>
<translation>Acerca de</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="49"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="50"/>
<source>Pebble Manager</source>
<translation></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="56"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="57"/>
<source>Waiting for watch...
If it can&apos;t be found please check it&apos;s available and paired in Bluetooth settings.</source>
<translation>Buscando el reloj
Si esto tarda mucho, comprueba que el reloj esté emparejado correctamente.</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="77"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="78"/>
<source>Service</source>
<translation>Servicio</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="84"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="85"/>
<source>Enabled</source>
<translation>Habilitado</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="85"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="86"/>
<source>Automatic startup</source>
<translation>Inicio automático</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="85"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="86"/>
<source>Manual startup</source>
<translation>Inicio manual</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="91"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="92"/>
<source>Active</source>
<translation>Activo</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="92"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="93"/>
<source>Running</source>
<translation>Ejecutándose</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="92"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="93"/>
<source>Dead</source>
<translation>Detenido</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="98"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="99"/>
<source>Connection</source>
<translation>Conexión</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="99"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="100"/>
<source>Connected</source>
<translation>Conectado</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="99"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="100"/>
<source>Disconnected</source>
<translation>Desconectado</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="112"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="113"/>
<source>Settings</source>
<translation>Configuración</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="119"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="120"/>
<source>Forward phone calls</source>
<translation>Transferir llamadas</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="127"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="128"/>
<source>Silent when connected</source>
<translation>Modo silencio automático</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="128"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="129"/>
<source>Sets phone profile to &quot;silent&quot; when Pebble is connected</source>
<translation>Activa el modo silencio cuando se conecte un Pebble</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="136"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="137"/>
+ <source>Alter system volume</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/ManagerPage.qml" line="138"/>
+ <source>Pebble music volume buttons change the system volume when the music player cannot</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/ManagerPage.qml" line="146"/>
<source>Transliterate messages</source>
<translation>Transliterar mensajes</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="137"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="147"/>
<source>Messages are transliterated to ASCII before sending to Pebble</source>
<translation>Codifica los mensajes entrates a ASCII antes de enviarlos a Pebble</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="146"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="156"/>
<source>Notifications</source>
<translation>Notificaciones</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="154"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="164"/>
<source>Messaging</source>
<translation>Mensajería</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="155"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="165"/>
<source>SMS and IM</source>
<translation>SMS y chat</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="164"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="174"/>
<source>Missed call</source>
<translation>Llamadas perdidas</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="173"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="183"/>
<source>Emails</source>
<translation>Correos electrónicos</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="182"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="192"/>
<source>Mitakuuluu</source>
<translation></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="191"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="201"/>
<source>Twitter</source>
<translation>Twitter</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="201"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="211"/>
<source>Facebook</source>
<translation>Facebook</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="210"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="220"/>
<source>Other notifications</source>
<translation>Resto de notificaciones</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="219"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="229"/>
<source>All notifications</source>
<translation>Todas las notificaciones</translation>
</message>
diff --git a/app/translations/pebble-pl.ts b/app/translations/pebble-pl.ts
index ebe4f1a..1999ab6 100644
--- a/app/translations/pebble-pl.ts
+++ b/app/translations/pebble-pl.ts
@@ -194,154 +194,164 @@
<context>
<name>ManagerPage</name>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="34"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="35"/>
<source>Pebble Appstore</source>
<translation>Pebble Appstore</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="38"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="39"/>
<source>About</source>
<translation>Informacje</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="49"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="50"/>
<source>Pebble Manager</source>
<translation>Pebble Manager</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="56"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="57"/>
<source>Waiting for watch...
If it can&apos;t be found please check it&apos;s available and paired in Bluetooth settings.</source>
<translation>Oczekiwanie na zegarek...
Jeśli nie zostaje znaleziony sprawdź czy jest w zasięgu i czy jest sparowany w ustawieniach Bluetooth.</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="77"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="78"/>
<source>Service</source>
<translation>Usługa</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="84"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="85"/>
<source>Enabled</source>
<translation>Włączona</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="85"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="86"/>
<source>Automatic startup</source>
<translation>Start automatyczny</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="85"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="86"/>
<source>Manual startup</source>
<translation>Start ręczny</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="91"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="92"/>
<source>Active</source>
<translation>Aktywna</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="92"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="93"/>
<source>Running</source>
<translation>Pracuje</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="92"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="93"/>
<source>Dead</source>
<translation>Martwa</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="98"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="99"/>
<source>Connection</source>
<translation>Połączenie</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="99"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="100"/>
<source>Connected</source>
<translation>Połączony</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="99"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="100"/>
<source>Disconnected</source>
<translation>Rozłączony</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="112"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="113"/>
<source>Settings</source>
<translation>Ustawienia</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="119"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="120"/>
<source>Forward phone calls</source>
<translation>Przekazuj telefony</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="127"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="128"/>
<source>Silent when connected</source>
<translation>Cichy gdy połączony</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="128"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="129"/>
<source>Sets phone profile to &quot;silent&quot; when Pebble is connected</source>
<translation>Ustawia &quot;cichy&quot; profil telefonu gdy Pebble jest połączony</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="136"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="137"/>
+ <source>Alter system volume</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/ManagerPage.qml" line="138"/>
+ <source>Pebble music volume buttons change the system volume when the music player cannot</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/ManagerPage.qml" line="146"/>
<source>Transliterate messages</source>
<translation>Transliteracja wiadomości</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="137"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="147"/>
<source>Messages are transliterated to ASCII before sending to Pebble</source>
<translation>Wiadomości są transliterowane do ASCII przed wysłaniem do Pebble</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="146"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="156"/>
<source>Notifications</source>
<translation>Powiadomienia</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="154"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="164"/>
<source>Messaging</source>
<translation>Wiadomości</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="155"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="165"/>
<source>SMS and IM</source>
<translation>SMS i IM</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="164"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="174"/>
<source>Missed call</source>
<translation>Ominięte telefony</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="173"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="183"/>
<source>Emails</source>
<translation>Emaile</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="182"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="192"/>
<source>Mitakuuluu</source>
<translation>Mitakuuluu</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="191"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="201"/>
<source>Twitter</source>
<translation>Twitter</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="201"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="211"/>
<source>Facebook</source>
<translation>Facebook</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="210"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="220"/>
<source>Other notifications</source>
<translation>Pozostałe powiadomienia</translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="219"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="229"/>
<source>All notifications</source>
<translation>Wszystkie powiadomienia</translation>
</message>
diff --git a/app/translations/pebble.ts b/app/translations/pebble.ts
index 24f2352..9d7ffe1 100644
--- a/app/translations/pebble.ts
+++ b/app/translations/pebble.ts
@@ -162,153 +162,163 @@
<context>
<name>ManagerPage</name>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="34"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="35"/>
<source>Pebble Appstore</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="38"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="39"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="49"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="50"/>
<source>Pebble Manager</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="56"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="57"/>
<source>Waiting for watch...
If it can&apos;t be found please check it&apos;s available and paired in Bluetooth settings.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="77"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="78"/>
<source>Service</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="84"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="85"/>
<source>Enabled</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="85"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="86"/>
<source>Automatic startup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="85"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="86"/>
<source>Manual startup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="91"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="92"/>
<source>Active</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="92"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="93"/>
<source>Running</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="92"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="93"/>
<source>Dead</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="98"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="99"/>
<source>Connection</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="99"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="100"/>
<source>Connected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="99"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="100"/>
<source>Disconnected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="112"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="113"/>
<source>Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="119"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="120"/>
<source>Forward phone calls</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="127"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="128"/>
<source>Silent when connected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="128"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="129"/>
<source>Sets phone profile to &quot;silent&quot; when Pebble is connected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="136"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="137"/>
+ <source>Alter system volume</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/ManagerPage.qml" line="138"/>
+ <source>Pebble music volume buttons change the system volume when the music player cannot</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/ManagerPage.qml" line="146"/>
<source>Transliterate messages</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="137"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="147"/>
<source>Messages are transliterated to ASCII before sending to Pebble</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="146"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="156"/>
<source>Notifications</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="154"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="164"/>
<source>Messaging</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="155"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="165"/>
<source>SMS and IM</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="164"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="174"/>
<source>Missed call</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="173"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="183"/>
<source>Emails</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="182"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="192"/>
<source>Mitakuuluu</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="191"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="201"/>
<source>Twitter</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="201"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="211"/>
<source>Facebook</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="210"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="220"/>
<source>Other notifications</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/ManagerPage.qml" line="219"/>
+ <location filename="../qml/pages/ManagerPage.qml" line="229"/>
<source>All notifications</source>
<translation type="unfinished"></translation>
</message>
diff --git a/daemon/manager.cpp b/daemon/manager.cpp
index 02a4021..567316e 100644
--- a/daemon/manager.cpp
+++ b/daemon/manager.cpp
@@ -16,7 +16,7 @@ Manager::Manager(Settings *settings, QObject *parent) :
bank(new BankManager(watch, upload, apps, this)),
voice(new VoiceCallManager(settings, this)),
notifications(new NotificationManager(settings, this)),
- music(new MusicManager(watch, this)),
+ music(new MusicManager(watch, settings, this)),
datalog(new DataLogManager(watch, this)),
appmsg(new AppMsgManager(apps, watch, this)),
js(new JSKitManager(watch, apps, appmsg, settings, this)),
diff --git a/daemon/musicmanager.cpp b/daemon/musicmanager.cpp
index b9b217f..f51daeb 100644
--- a/daemon/musicmanager.cpp
+++ b/daemon/musicmanager.cpp
@@ -1,10 +1,11 @@
#include <QDBusConnection>
#include <QDBusConnectionInterface>
#include "musicmanager.h"
+#include "settings.h"
-MusicManager::MusicManager(WatchConnector *watch, QObject *parent)
+MusicManager::MusicManager(WatchConnector *watch, Settings *settings, QObject *parent)
: QObject(parent), l(metaObject()->className()),
- watch(watch), _watcher(new QDBusServiceWatcher(this)), _pulseBus(NULL), _maxVolume(0)
+ watch(watch), _watcher(new QDBusServiceWatcher(this)), _pulseBus(NULL), settings(settings),_maxVolume(0), mprisVolumeWorks(true)
{
QDBusConnection bus = QDBusConnection::sessionBus();
QDBusConnectionInterface *bus_iface = bus.interface();
@@ -54,6 +55,7 @@ MusicManager::MusicManager(WatchConnector *watch, QObject *parent)
QDBusReply<QDBusVariant> volumeMaxReply = _pulseBus->call(call);
if (volumeMaxReply.isValid()) {
_maxVolume = volumeMaxReply.value().variant().toUInt();
+ qCDebug(l) << "Max volume: " << _maxVolume;
}
else {
qCWarning(l) << "Could not read volume max, cannot adjust volume: " << volumeMaxReply.error().message();
@@ -68,13 +70,17 @@ MusicManager::MusicManager(WatchConnector *watch, QObject *parent)
// If the watch disconnects, we will send the current metadata when it comes back.
connect(watch, &WatchConnector::connectedChanged,
this, &MusicManager::handleWatchConnected);
+
+ qCDebug(l) << "Constructor done";
}
MusicManager::~MusicManager()
{
- qCDebug(l) << "Disconnecting from PulseAudio P2P DBus";
- QDBusConnection::disconnectFromBus("org.PulseAudio1");
- delete(_pulseBus);
+ if (_pulseBus != NULL) {
+ qCDebug(l) << "Disconnecting from PulseAudio P2P DBus";
+ QDBusConnection::disconnectFromBus("org.PulseAudio1");
+ delete(_pulseBus);
+ }
}
void MusicManager::switchToService(const QString &service)
@@ -89,6 +95,56 @@ void MusicManager::switchToService(const QString &service)
_watcher->setWatchedServices(QStringList(_curService));
}
}
+
+ // Check if this service has working volume control
+ mprisVolumeWorks = false;
+
+ if (_curService.isEmpty()) return;
+
+ // Read current volume level from MPRIS
+ QDBusConnection bus = QDBusConnection::sessionBus();
+ QDBusMessage call = QDBusMessage::createMethodCall(_curService, "/org/mpris/MediaPlayer2",
+ "org.freedesktop.DBus.Properties", "Get");
+ call << "org.mpris.MediaPlayer2.Player" << "Volume";
+ QDBusReply<QDBusVariant> volumeReply = bus.call(call);
+ if (!volumeReply.isValid()) {
+ qCWarning(l) << volumeReply.error().message();
+ return;
+ }
+ double volume = volumeReply.value().variant().toDouble();
+ // Tweak it by 10% and set it
+ double newVolume = volume + (volume == 1.0?-0.1:0.1);
+ qCDebug(l) << "Volume control test: changing " << volume << " to " << newVolume;
+ call = QDBusMessage::createMethodCall(_curService, "/org/mpris/MediaPlayer2",
+ "org.freedesktop.DBus.Properties", "Set");
+ call << "org.mpris.MediaPlayer2.Player" << "Volume" << QVariant::fromValue(QDBusVariant(newVolume));
+ QDBusError err = QDBusConnection::sessionBus().call(call);
+ if (err.isValid()) {
+ qCWarning(l) << err.message();
+ }
+
+ // Read the new volume level to check if it's changed
+ call = QDBusMessage::createMethodCall(_curService, "/org/mpris/MediaPlayer2",
+ "org.freedesktop.DBus.Properties", "Get");
+ call << "org.mpris.MediaPlayer2.Player" << "Volume";
+ volumeReply = bus.call(call);
+ double actualNewVolume = volumeReply.value().variant().toDouble();
+ qCDebug(l) << "Volume control test: new volume read as " << actualNewVolume;
+ if (actualNewVolume == newVolume) { // !!MPRIS vol works!!
+ qCDebug(l) << "Volume control test: MPRIS volume control worked. Restoring old volume level and enabling MPRIS volume control";
+ mprisVolumeWorks = true;
+ call = QDBusMessage::createMethodCall(_curService, "/org/mpris/MediaPlayer2",
+ "org.freedesktop.DBus.Properties", "Set");
+ call << "org.mpris.MediaPlayer2.Player" << "Volume" << QVariant::fromValue(QDBusVariant(volume));
+ err = QDBusConnection::sessionBus().call(call);
+ if (err.isValid()) {
+ qCWarning(l) << err.message();
+ }
+ return;
+ }
+ else if (actualNewVolume == volume){
+ qCDebug(l) << "Volume control test: MPRIS volume control has no effect.";
+ }
}
void MusicManager::fetchMetadataFromService()
@@ -146,7 +202,7 @@ void MusicManager::handleMusicControl(WatchConnector::MusicControl operation)
qCDebug(l) << "operation from watch:" << operation;
if (_curService.isEmpty() &&
- operation != WatchConnector::musicVOLUME_UP && operation != WatchConnector::musicVOLUME_DOWN) {
+ ((operation != WatchConnector::musicVOLUME_UP && operation != WatchConnector::musicVOLUME_DOWN) || mprisVolumeWorks)) {
qCDebug(l) << "can't do any music operation, no mpris interface active";
return;
}
@@ -169,8 +225,37 @@ void MusicManager::handleMusicControl(WatchConnector::MusicControl operation)
break;
case WatchConnector::musicVOLUME_UP:
- case WatchConnector::musicVOLUME_DOWN:
- if (_pulseBus != NULL) {
+ case WatchConnector::musicVOLUME_DOWN: {
+ QVariant useSystemVolumeVar = settings->property("useSystemVolume");
+ bool useSystemVolume = (useSystemVolumeVar.isValid() && useSystemVolumeVar.toBool());
+ qCDebug(l) << "useSystemVolume: " << useSystemVolume;
+ if (mprisVolumeWorks || !useSystemVolume) {
+ QDBusConnection bus = QDBusConnection::sessionBus();
+ QDBusMessage call = QDBusMessage::createMethodCall(_curService, "/org/mpris/MediaPlayer2",
+ "org.freedesktop.DBus.Properties", "Get");
+ call << "org.mpris.MediaPlayer2.Player" << "Volume";
+ QDBusReply<QDBusVariant> volumeReply = bus.call(call);
+ if (volumeReply.isValid()) {
+ double volume = volumeReply.value().variant().toDouble();
+ if (operation == WatchConnector::musicVOLUME_UP) {
+ volume += 0.1;
+ }
+ else {
+ volume -= 0.1;
+ }
+ qCDebug(l) << "Setting volume" << volume;
+
+ call = QDBusMessage::createMethodCall(_curService, "/org/mpris/MediaPlayer2", "org.freedesktop.DBus.Properties", "Set");
+ call << "org.mpris.MediaPlayer2.Player" << "Volume" << QVariant::fromValue(QDBusVariant(volume));
+
+ QDBusError err = QDBusConnection::sessionBus().call(call);
+ if (err.isValid()) {
+ qCWarning(l) << err.message();
+ }
+ } else {
+ qCWarning(l) << volumeReply.error().message();
+ }
+ } else if (_pulseBus != NULL) {
// Query current volume
QDBusMessage call = QDBusMessage::createMethodCall("com.Meego.MainVolume2", "/com/meego/mainvolume2",
"org.freedesktop.DBus.Properties", "Get");
@@ -210,9 +295,11 @@ void MusicManager::handleMusicControl(WatchConnector::MusicControl operation)
qCWarning(l) << volumeReply.error().message();
}
}
- break;
-
-
+ else {
+ qCDebug(l) << "No volume control mechanism";
+ }
+ break;
+ }
case WatchConnector::musicGET_NOW_PLAYING:
sendCurrentMprisMetadata();
break;
diff --git a/daemon/musicmanager.h b/daemon/musicmanager.h
index 4ad03a8..087dd2a 100644
--- a/daemon/musicmanager.h
+++ b/daemon/musicmanager.h
@@ -5,6 +5,7 @@
#include <QDBusContext>
#include <QDBusServiceWatcher>
#include "watchconnector.h"
+#include "settings.h"
class MusicManager : public QObject, protected QDBusContext
{
@@ -12,7 +13,7 @@ class MusicManager : public QObject, protected QDBusContext
QLoggingCategory l;
public:
- explicit MusicManager(WatchConnector *watch, QObject *parent = 0);
+ explicit MusicManager(WatchConnector *watch, Settings *settings, QObject *parent = 0);
virtual ~MusicManager();
private:
@@ -33,7 +34,9 @@ private:
QString _curService;
QVariantMap _curMetadata;
QDBusConnection *_pulseBus;
+ Settings *settings;
uint _maxVolume;
+ bool mprisVolumeWorks;
};
#endif // MUSICMANAGER_H
diff --git a/daemon/settings.h b/daemon/settings.h
index 90e25e2..688b211 100644
--- a/daemon/settings.h
+++ b/daemon/settings.h
@@ -9,6 +9,7 @@ class Settings : public MDConfGroup
Q_PROPERTY(bool silentWhenConnected MEMBER silentWhenConnected NOTIFY silentWhenConnectedChanged)
Q_PROPERTY(bool transliterateMessage MEMBER transliterateMessage NOTIFY transliterateMessageChanged)
+ Q_PROPERTY(bool useSystemVolume MEMBER useSystemVolume NOTIFY useSystemVolumeChanged)
Q_PROPERTY(bool incomingCallNotification MEMBER incomingCallNotification NOTIFY incomingCallNotificationChanged)
Q_PROPERTY(bool notificationsCommhistoryd MEMBER notificationsCommhistoryd NOTIFY notificationsCommhistorydChanged)
Q_PROPERTY(bool notificationsMissedCall MEMBER notificationsMissedCall NOTIFY notificationsMissedCallChanged)
@@ -22,6 +23,7 @@ class Settings : public MDConfGroup
bool silentWhenConnected;
bool transliterateMessage;
+ bool useSystemVolume;
bool incomingCallNotification;
bool notificationsCommhistoryd;
bool notificationsMissedCall;
@@ -41,6 +43,7 @@ public:
signals:
void silentWhenConnectedChanged();
void transliterateMessageChanged();
+ void useSystemVolumeChanged();
void incomingCallNotificationChanged();
void notificationsCommhistorydChanged();
void notificationsMissedCallChanged();