Lomiri
VolumeControl.qml
1 /*
2  * Copyright (C) 2013-2016 Canonical Ltd.
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; version 3.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  */
16 
17 import QtQuick 2.4
18 import QMenuModel 1.0 as QMenuModel
19 import GlobalShortcut 1.0
20 import Lomiri.Platform 1.0
21 
22 Item {
23  id: root
24  objectName: "volumeControl"
25  visible: false
26 
27  // TODO Work around http://pad.lv/1293478 until qmenumodel knows to cast
28  readonly property int stepUp: 1
29  readonly property int stepDown: -1
30 
31  GlobalShortcut {
32  id: muteShortcut
33  shortcut: Qt.Key_VolumeMute
34  onTriggered: toggleMute()
35  }
36 
37  QMenuModel.QDBusActionGroup {
38  id: actionGroup
39  busType: QMenuModel.DBus.SessionBus
40  busName: "org.ayatana.indicator.sound"
41  objectPath: "/org/ayatana/indicator/sound"
42 
43  property variant actionObject: action("volume")
44  // temporary workaround for lp:1623166
45  property variant muteActionObject: Platform.isPC ? action("mute") : action("silent-mode")
46  }
47 
48  function volumeUp() {
49  actionGroup.actionObject.activate(stepUp);
50  }
51 
52  function volumeDown() {
53  actionGroup.actionObject.activate(stepDown);
54  }
55 
56  function toggleMute() {
57  actionGroup.muteActionObject.activate();
58  }
59 
60  Component.onCompleted: {
61  actionGroup.start();
62  }
63 }