summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomasz Sterna <tomek@xiaoka.com>2015-04-19 18:49:07 +0200
committerTomasz Sterna <tomek@xiaoka.com>2015-04-19 18:49:07 +0200
commit929fc1263bf54df5120c8551a5b9cecd053d87ea (patch)
treed6293c4a69d8563eff90f76b9eb69a4a42d5a3cb
parentec074ada19ed8855a8006ca66c709a8303906932 (diff)
parent6da5f1039ed113dcf11b0347e6d2dbd5432c3d33 (diff)
Merge pull request #50 from abranson/volume
Switch music volume controls to alter the system volume.
-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.cpp184
-rw-r--r--daemon/musicmanager.h7
-rw-r--r--daemon/settings.h3
8 files changed, 273 insertions, 143 deletions
diff --git a/app/qml/pages/ManagerPage.qml b/app/qml/pages/ManagerPage.qml
index 894797d..7fb7369 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("Control main volume")
+ description: qsTr("Pebble music volume buttons change the main phone volume directly instead of through the music player.")
+ 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 1eb9c75..fa2c566 100644
--- a/app/translations/pebble-es.ts
+++ b/app/translations/pebble-es.ts
@@ -192,154 +192,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>Control main volume</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/ManagerPage.qml" line="138"/>
+ <source>Pebble music volume buttons change the main phone volume directly instead of through the music player.</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 98f3f49..dfa4357 100644
--- a/app/translations/pebble-pl.ts
+++ b/app/translations/pebble-pl.ts
@@ -212,154 +212,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>Control main volume</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/ManagerPage.qml" line="138"/>
+ <source>Pebble music volume buttons change the main phone volume directly instead of through the music player.</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 0e7e892..f1679e1 100644
--- a/app/translations/pebble.ts
+++ b/app/translations/pebble.ts
@@ -180,153 +180,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>Control main volume</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/ManagerPage.qml" line="138"/>
+ <source>Pebble music volume buttons change the main phone volume directly instead of through the music player.</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 385abbf..11ff6fd 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))
+ watch(watch), _watcher(new QDBusServiceWatcher(this)), _pulseBus(NULL), settings(settings),_maxVolume(0)
{
QDBusConnection bus = QDBusConnection::sessionBus();
QDBusConnectionInterface *bus_iface = bus.interface();
@@ -33,6 +34,33 @@ MusicManager::MusicManager(WatchConnector *watch, QObject *parent)
bus.connect("", "/org/mpris/MediaPlayer2", "org.freedesktop.DBus.Properties", "PropertiesChanged",
this, SLOT(handleMprisPropertiesChanged(QString,QMap<QString,QVariant>,QStringList)));
+ // Locate and connect to the PulseAudio DBus to control system volume
+ // Look up PulseAudio P2P Bus address
+ QDBusMessage call = QDBusMessage::createMethodCall("org.PulseAudio1", "/org/pulseaudio/server_lookup1", "org.freedesktop.DBus.Properties", "Get" );
+ call << "org.PulseAudio.ServerLookup1" << "Address";
+ QDBusReply<QDBusVariant> lookupReply = bus.call(call);
+ if (lookupReply.isValid()) {
+ //
+ qCDebug(l) << "PulseAudio Bus address: " << lookupReply.value().variant().toString();
+ _pulseBus = new QDBusConnection(QDBusConnection::connectToPeer(lookupReply.value().variant().toString(), "org.PulseAudio1"));
+ }
+ else {
+ qCDebug(l) << "Cannot find PulseAudio Bus address, cannot control system volume.";
+ }
+
+ // Query max volume
+ call = QDBusMessage::createMethodCall("com.Meego.MainVolume2", "/com/meego/mainvolume2",
+ "org.freedesktop.DBus.Properties", "Get");
+ call << "com.Meego.MainVolume2" << "StepCount";
+ 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();
+ }
+
// Now set up the Pebble endpoint handler for music control commands
watch->setEndpointHandler(WatchConnector::watchMUSIC_CONTROL, [this](const QByteArray& data) {
handleMusicControl(WatchConnector::MusicControl(data.at(0)));
@@ -44,6 +72,15 @@ MusicManager::MusicManager(WatchConnector *watch, QObject *parent)
this, &MusicManager::handleWatchConnected);
}
+MusicManager::~MusicManager()
+{
+ if (_pulseBus != NULL) {
+ qCDebug(l) << "Disconnecting from PulseAudio P2P DBus";
+ QDBusConnection::disconnectFromBus("org.PulseAudio1");
+ delete(_pulseBus);
+ }
+}
+
void MusicManager::switchToService(const QString &service)
{
if (_curService != service) {
@@ -111,66 +148,111 @@ void MusicManager::callMprisMethod(const QString &method)
void MusicManager::handleMusicControl(WatchConnector::MusicControl operation)
{
qCDebug(l) << "operation from watch:" << operation;
-
- if (_curService.isEmpty()) {
- qCDebug(l) << "can't do any music operation, no mpris interface active";
- return;
- }
-
- switch (operation) {
- case WatchConnector::musicPLAY_PAUSE:
- callMprisMethod("PlayPause");
- break;
- case WatchConnector::musicPAUSE:
- callMprisMethod("Pause");
- break;
- case WatchConnector::musicPLAY:
- callMprisMethod("Play");
- break;
- case WatchConnector::musicNEXT:
- callMprisMethod("Next");
- break;
- case WatchConnector::musicPREVIOUS:
- callMprisMethod("Previous");
- break;
-
- case WatchConnector::musicVOLUME_UP:
- case WatchConnector::musicVOLUME_DOWN: {
- 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);
+ QVariant useSystemVolumeVar = settings->property("useSystemVolume");
+ bool useSystemVolume = (useSystemVolumeVar.isValid() && useSystemVolumeVar.toBool());
+
+ // System volume controls
+ if (useSystemVolume && _pulseBus != NULL &&
+ (operation == WatchConnector::musicVOLUME_UP || operation == WatchConnector::musicVOLUME_DOWN)) {
+ // Query current volume
+ QDBusMessage call = QDBusMessage::createMethodCall("com.Meego.MainVolume2", "/com/meego/mainvolume2",
+ "org.freedesktop.DBus.Properties", "Get");
+ call << "com.Meego.MainVolume2" << "CurrentStep";
+
+ QDBusReply<QDBusVariant> volumeReply = _pulseBus->call(call);
if (volumeReply.isValid()) {
- double volume = volumeReply.value().variant().toDouble();
- if (operation == WatchConnector::musicVOLUME_UP) {
- volume += 0.1;
+ // Decide the new value for volume, taking limits into account
+ uint volume = volumeReply.value().variant().toUInt();
+ uint newVolume;
+ qCDebug(l) << "Current volume: " << volumeReply.value().variant().toUInt();
+ if (operation == WatchConnector::musicVOLUME_UP && volume < _maxVolume-1 ) {
+ newVolume = volume + 1;
+ }
+ else if (operation == WatchConnector::musicVOLUME_DOWN && volume > 0) {
+ newVolume = volume - 1;
}
else {
- volume -= 0.1;
+ qCDebug(l) << "Volume already at limit";
+ newVolume = volume;
}
- 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));
+ // If we have a new volume level, change it
+ if (newVolume != volume) {
+ qCDebug(l) << "Setting volume: " << newVolume;
- QDBusError err = QDBusConnection::sessionBus().call(call);
- if (err.isValid()) {
- qCWarning(l) << err.message();
+ call = QDBusMessage::createMethodCall("com.Meego.MainVolume2", "/com/meego/mainvolume2",
+ "org.freedesktop.DBus.Properties", "Set");
+ call << "com.Meego.MainVolume2" << "CurrentStep" << QVariant::fromValue(QDBusVariant(newVolume));
+
+ QDBusError err = _pulseBus->call(call);
+ if (err.isValid()) {
+ qCWarning(l) << err.message();
+ }
}
- } else {
- qCWarning(l) << volumeReply.error().message();
}
+ }
+
+ //Don't allow any music operations if there's no MPRIS player, unless we are allowed to control the system volume and it's a volume command
+ else if (_curService.isEmpty()) {
+ qCDebug(l) << "can't do any music operation, no mpris interface active";
+ return;
+ }
+ else {
+ switch (operation) {
+ case WatchConnector::musicPLAY_PAUSE:
+ callMprisMethod("PlayPause");
+ break;
+ case WatchConnector::musicPAUSE:
+ callMprisMethod("Pause");
+ break;
+ case WatchConnector::musicPLAY:
+ callMprisMethod("Play");
+ break;
+ case WatchConnector::musicNEXT:
+ callMprisMethod("Next");
+ break;
+ case WatchConnector::musicPREVIOUS:
+ callMprisMethod("Previous");
+ break;
+
+ case WatchConnector::musicVOLUME_UP:
+ case WatchConnector::musicVOLUME_DOWN: {
+ 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();
+ }
+ break;
}
- break;
- case WatchConnector::musicGET_NOW_PLAYING:
- sendCurrentMprisMetadata();
- break;
+ case WatchConnector::musicGET_NOW_PLAYING:
+ sendCurrentMprisMetadata();
+ break;
- default:
- qCWarning(l) << "Operation" << operation << "not supported";
- break;
+ default:
+ qCWarning(l) << "Operation" << operation << "not supported";
+ break;
+ }
}
}
diff --git a/daemon/musicmanager.h b/daemon/musicmanager.h
index 14aa6fb..81947e9 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,8 @@ 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:
void switchToService(const QString &service);
@@ -31,6 +33,9 @@ private:
QDBusServiceWatcher *_watcher;
QString _curService;
QVariantMap _curMetadata;
+ QDBusConnection *_pulseBus;
+ Settings *settings;
+ uint _maxVolume;
};
#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();