From 33768028b48fb03ae252fde8c06bb928fcbd66d6 Mon Sep 17 00:00:00 2001 From: Vasily Date: Sun, 27 Jan 2019 14:56:00 +0100 Subject: [PATCH 01/17] Move AudioPage.qml into separate directory This encapsulates the page and separates it and the files it uses from the rest of the application. --- advancedSettings.pro | 2 +- src/res/qml/RootPage.qml | 3 ++- src/res/qml/{ => audio_page}/AudioPage.qml | 2 +- src/res/qml/{ => audio_page}/mic_off.svg | 0 src/res/qml/{ => audio_page}/mic_on.svg | 0 src/res/qml/{ => audio_page}/speaker_off.svg | 0 src/res/qml/{ => audio_page}/speaker_on.svg | 0 src/res/qml/mainwidget.qml | 1 + 8 files changed, 5 insertions(+), 3 deletions(-) rename src/res/qml/{ => audio_page}/AudioPage.qml (99%) rename src/res/qml/{ => audio_page}/mic_off.svg (100%) rename src/res/qml/{ => audio_page}/mic_on.svg (100%) rename src/res/qml/{ => audio_page}/speaker_off.svg (100%) rename src/res/qml/{ => audio_page}/speaker_on.svg (100%) diff --git a/advancedSettings.pro b/advancedSettings.pro index a9485ea..9630f15 100644 --- a/advancedSettings.pro +++ b/advancedSettings.pro @@ -135,7 +135,7 @@ DISTFILES += \ src/res/qml/speaker_on.svg \ src/res/qml/qmldir \ src/res/qml/AccessibilityPage.qml \ - src/res/qml/AudioPage.qml \ + src/res/qml/audio_page/* \ src/res/qml/ChaperonePage.qml \ src/res/qml/ChaperoneWarningsPage.qml \ src/res/qml/FixFloorPage.qml \ diff --git a/src/res/qml/RootPage.qml b/src/res/qml/RootPage.qml index 1a02e6b..af391c7 100644 --- a/src/res/qml/RootPage.qml +++ b/src/res/qml/RootPage.qml @@ -4,6 +4,7 @@ import QtQuick.Layouts 1.3 import matzman666.advsettings 1.0 import "." // QTBUG-34418, singletons require explicit import to load qmldir file import "utilities_page" +import "audio_page" MyStackViewPage { id: rootPage @@ -342,7 +343,7 @@ MyStackViewPage { Layout.leftMargin: 12 checkable: true contentItem: Image { - source: parent.checked ? "mic_off.svg" : "mic_on.svg" + source: parent.checked ? "audio_page/mic_off.svg" : "audio_page/mic_on.svg" sourceSize.width: 32 sourceSize.height: 32 anchors.fill: parent diff --git a/src/res/qml/AudioPage.qml b/src/res/qml/audio_page/AudioPage.qml similarity index 99% rename from src/res/qml/AudioPage.qml rename to src/res/qml/audio_page/AudioPage.qml index d8ea895..8561b21 100644 --- a/src/res/qml/AudioPage.qml +++ b/src/res/qml/audio_page/AudioPage.qml @@ -2,7 +2,7 @@ import QtQuick 2.7 import QtQuick.Controls 2.0 import QtQuick.Layouts 1.3 import matzman666.advsettings 1.0 - +import ".." MyStackViewPage { width: 1200 diff --git a/src/res/qml/mic_off.svg b/src/res/qml/audio_page/mic_off.svg similarity index 100% rename from src/res/qml/mic_off.svg rename to src/res/qml/audio_page/mic_off.svg diff --git a/src/res/qml/mic_on.svg b/src/res/qml/audio_page/mic_on.svg similarity index 100% rename from src/res/qml/mic_on.svg rename to src/res/qml/audio_page/mic_on.svg diff --git a/src/res/qml/speaker_off.svg b/src/res/qml/audio_page/speaker_off.svg similarity index 100% rename from src/res/qml/speaker_off.svg rename to src/res/qml/audio_page/speaker_off.svg diff --git a/src/res/qml/speaker_on.svg b/src/res/qml/audio_page/speaker_on.svg similarity index 100% rename from src/res/qml/speaker_on.svg rename to src/res/qml/audio_page/speaker_on.svg diff --git a/src/res/qml/mainwidget.qml b/src/res/qml/mainwidget.qml index e5f8f54..91953b5 100644 --- a/src/res/qml/mainwidget.qml +++ b/src/res/qml/mainwidget.qml @@ -2,6 +2,7 @@ import QtQuick 2.7 import QtQuick.Controls 2.0 import QtQuick.Layouts 1.0 import "utilities_page" +import "audio_page" Rectangle { id: root From b6ffa8d30df3450bf9df3a016b633a75583f317a Mon Sep 17 00:00:00 2001 From: Vasily Date: Sun, 27 Jan 2019 20:27:15 +0100 Subject: [PATCH 02/17] Move dialog boxes into separate folder Setting the default audio profile has also been moved into the separate dialog box. This should not change anything and no bugs were found in testing, however I have no idea how objects in QML/C++ are initialized or if our current codebase is created with this in mind. --- advancedSettings.pro | 4 +- src/res/qml/audio_page/AudioPage.qml | 125 +----------------- .../dialog_boxes/AudioDeleteProfileDialog.qml | 18 +++ .../dialog_boxes/AudioMessageDialog.qml | 14 ++ .../dialog_boxes/AudioNewProfileDialog.qml | 63 +++++++++ .../dialog_boxes/PttDeleteProfileDialog.qml | 17 +++ .../dialog_boxes/PttNewProfileDialog.qml | 47 +++++++ 7 files changed, 169 insertions(+), 119 deletions(-) create mode 100644 src/res/qml/audio_page/dialog_boxes/AudioDeleteProfileDialog.qml create mode 100644 src/res/qml/audio_page/dialog_boxes/AudioMessageDialog.qml create mode 100644 src/res/qml/audio_page/dialog_boxes/AudioNewProfileDialog.qml create mode 100644 src/res/qml/audio_page/dialog_boxes/PttDeleteProfileDialog.qml create mode 100644 src/res/qml/audio_page/dialog_boxes/PttNewProfileDialog.qml diff --git a/advancedSettings.pro b/advancedSettings.pro index 9630f15..45c0691 100644 --- a/advancedSettings.pro +++ b/advancedSettings.pro @@ -163,4 +163,6 @@ DISTFILES += \ src/res/qml/LineSeparator.qml \ src/res/qml/utilities_page/keyboard_utils/* \ src/res/qml/utilities_page/desktop_size/* \ - src/res/qml/utilities_page/alarm_clock/* + src/res/qml/utilities_page/alarm_clock/* \ + src/res/qml/audio_page/dialog_boxes/* \ + src/res/qml/audio_page/dialog_boxes/AudioDeleteProfileDialog.qml diff --git a/src/res/qml/audio_page/AudioPage.qml b/src/res/qml/audio_page/AudioPage.qml index 8561b21..6a6811c 100644 --- a/src/res/qml/audio_page/AudioPage.qml +++ b/src/res/qml/audio_page/AudioPage.qml @@ -2,7 +2,8 @@ import QtQuick 2.7 import QtQuick.Controls 2.0 import QtQuick.Layouts 1.3 import matzman666.advsettings 1.0 -import ".." +import ".." //common imports +import "dialog_boxes" MyStackViewPage { width: 1200 @@ -11,38 +12,16 @@ MyStackViewPage { property bool componentCompleted: false - MyDialogOkPopup { + AudioMessageDialog { id: audioMessageDialog - function showMessage(title, text) { - dialogTitle = title - dialogText = text - open() - } } - MyDialogOkCancelPopup { + PttDeleteProfileDialog { id: pttDeleteProfileDialog - property int profileIndex: -1 - dialogTitle: "Delete Profile" - dialogText: "Do you really want to delete this ptt profile?" - onClosed: { - if (okClicked) { - AudioTabController.deletePttProfile(profileIndex) - } - } } - MyDialogOkCancelPopup { + AudioDeleteProfileDialog { id: audioDeleteProfileDialog - property int profileIndex: -1 - dialogTitle: "Delete Profile" - dialogText: "Do you really want to delete this audio profile?" - onClosed: { - if (okClicked) { - AudioTabController.deleteAudioProfile(profileIndex) - pttProfileComboBox.currentIndex = 0 - } - } } PttControllerConfigDialog { @@ -50,101 +29,12 @@ MyStackViewPage { pttControllerConfigClass: AudioTabController } - MyDialogOkCancelPopup { + PttNewProfileDialog { id: pttNewProfileDialog - dialogTitle: "Create New PTT Profile" - dialogWidth: 600 - dialogHeight: 220 - dialogContentItem: ColumnLayout { - RowLayout { - Layout.topMargin: 16 - Layout.leftMargin: 16 - Layout.rightMargin: 16 - MyText { - text: "Name: " - } - MyTextField { - id: pttNewProfileName - keyBoardUID: 590 - color: "#cccccc" - text: "" - Layout.fillWidth: true - font.pointSize: 20 - function onInputEvent(input) { - pttNewProfileName.text = input - } - } - } - } - onClosed: { - if (okClicked) { - if (pttNewProfileName.text != "") { - AudioTabController.addPttProfile(pttNewProfileName.text) - - } else { - audioMessageDialog.showMessage("Create New Profile", "ERROR: No name given.") - } - } - } - function openPopup() { - pttNewProfileName.text = "" - open() - } } - - MyDialogOkCancelPopup { + AudioNewProfileDialog { id: audioNewProfileDialog - dialogTitle: "Create New Audio Profile" - dialogWidth: 600 - dialogHeight: 300 - dialogContentItem: ColumnLayout { - RowLayout { - Layout.topMargin: 16 - Layout.leftMargin: 16 - Layout.rightMargin: 16 - MyText { - text: "Name: " - } - MyTextField { - id: audioNewProfileName - keyBoardUID: 590 - color: "#cccccc" - text: "" - Layout.fillWidth: true - font.pointSize: 20 - function onInputEvent(input) { - audioNewProfileName.text = input - } - } - } - RowLayout { - Layout.topMargin: 16 - Layout.leftMargin: 16 - Layout.rightMargin: 16 - MyToggleButton { - id: audioDefaultProfileToggle - Layout.preferredWidth: 250 - text: "Make Default" - onCheckedChanged: { - AudioTabController.setAudioProfileDefault(checked, false) - } - } - } - } - onClosed: { - if (okClicked) { - if (audioNewProfileName.text != "") { - AudioTabController.addAudioProfile(audioNewProfileName.text) - } else { - audioMessageDialog.showMessage("Create New Profile", "ERROR: No name given.") - } - } - } - function openPopup() { - audioNewProfileName.text = "" - open() - } } content: ColumnLayout { @@ -572,7 +462,6 @@ MyStackViewPage { audioPttRightControllerToggle.checked = AudioTabController.pttRightControllerEnabled audioPttShowNotificationToggle.checked = AudioTabController.pttShowNotification audioPttReverseToggle.checked = AudioTabController.micReversePtt - audioDefaultProfileToggle.checked = AudioTabController.audioProfileDefault componentCompleted = true } diff --git a/src/res/qml/audio_page/dialog_boxes/AudioDeleteProfileDialog.qml b/src/res/qml/audio_page/dialog_boxes/AudioDeleteProfileDialog.qml new file mode 100644 index 0000000..32fc49c --- /dev/null +++ b/src/res/qml/audio_page/dialog_boxes/AudioDeleteProfileDialog.qml @@ -0,0 +1,18 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 +import matzman666.advsettings 1.0 +import "../.." //common imports + +MyDialogOkCancelPopup { + id: audioDeleteProfileDialog + property int profileIndex: -1 + dialogTitle: "Delete Profile" + dialogText: "Do you really want to delete this audio profile?" + onClosed: { + if (okClicked) { + AudioTabController.deleteAudioProfile(profileIndex) + pttProfileComboBox.currentIndex = 0 + } + } +} diff --git a/src/res/qml/audio_page/dialog_boxes/AudioMessageDialog.qml b/src/res/qml/audio_page/dialog_boxes/AudioMessageDialog.qml new file mode 100644 index 0000000..c9cc549 --- /dev/null +++ b/src/res/qml/audio_page/dialog_boxes/AudioMessageDialog.qml @@ -0,0 +1,14 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 +import matzman666.advsettings 1.0 +import "../.." //common imports + +MyDialogOkPopup { + id: audioMessageDialog + function showMessage(title, text) { + dialogTitle = title + dialogText = text + open() + } +} diff --git a/src/res/qml/audio_page/dialog_boxes/AudioNewProfileDialog.qml b/src/res/qml/audio_page/dialog_boxes/AudioNewProfileDialog.qml new file mode 100644 index 0000000..af227b3 --- /dev/null +++ b/src/res/qml/audio_page/dialog_boxes/AudioNewProfileDialog.qml @@ -0,0 +1,63 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 +import matzman666.advsettings 1.0 +import "../.." //common imports + +MyDialogOkCancelPopup { + id: audioNewProfileDialog + dialogTitle: "Create New Audio Profile" + dialogWidth: 600 + dialogHeight: 300 + dialogContentItem: ColumnLayout { + RowLayout { + Layout.topMargin: 16 + Layout.leftMargin: 16 + Layout.rightMargin: 16 + MyText { + text: "Name: " + } + MyTextField { + id: audioNewProfileName + keyBoardUID: 590 + color: "#cccccc" + text: "" + Layout.fillWidth: true + font.pointSize: 20 + function onInputEvent(input) { + audioNewProfileName.text = input + } + } + } + RowLayout { + id: test + Layout.topMargin: 16 + Layout.leftMargin: 16 + Layout.rightMargin: 16 + MyToggleButton { + id: audioDefaultProfileToggle + Layout.preferredWidth: 250 + text: "Make Default" + onCheckedChanged: { + AudioTabController.setAudioProfileDefault(checked, false) + } + } + Component.onCompleted: { + audioDefaultProfileToggle.checked = AudioTabController.audioProfileDefault + } + } + } + onClosed: { + if (okClicked) { + if (audioNewProfileName.text != "") { + AudioTabController.addAudioProfile(audioNewProfileName.text) + } else { + audioMessageDialog.showMessage("Create New Profile", "ERROR: No name given.") + } + } + } + function openPopup() { + audioNewProfileName.text = "" + open() + } +} diff --git a/src/res/qml/audio_page/dialog_boxes/PttDeleteProfileDialog.qml b/src/res/qml/audio_page/dialog_boxes/PttDeleteProfileDialog.qml new file mode 100644 index 0000000..9d53ea5 --- /dev/null +++ b/src/res/qml/audio_page/dialog_boxes/PttDeleteProfileDialog.qml @@ -0,0 +1,17 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 +import matzman666.advsettings 1.0 +import "../.." //common imports + +MyDialogOkCancelPopup { + id: pttDeleteProfileDialog + property int profileIndex: -1 + dialogTitle: "Delete Profile" + dialogText: "Do you really want to delete this ptt profile?" + onClosed: { + if (okClicked) { + AudioTabController.deletePttProfile(profileIndex) + } + } +} diff --git a/src/res/qml/audio_page/dialog_boxes/PttNewProfileDialog.qml b/src/res/qml/audio_page/dialog_boxes/PttNewProfileDialog.qml new file mode 100644 index 0000000..45ef8d3 --- /dev/null +++ b/src/res/qml/audio_page/dialog_boxes/PttNewProfileDialog.qml @@ -0,0 +1,47 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 +import matzman666.advsettings 1.0 +import "../.." //common imports + +MyDialogOkCancelPopup { + id: pttNewProfileDialog + dialogTitle: "Create New PTT Profile" + dialogWidth: 600 + dialogHeight: 220 + dialogContentItem: ColumnLayout { + RowLayout { + Layout.topMargin: 16 + Layout.leftMargin: 16 + Layout.rightMargin: 16 + MyText { + text: "Name: " + } + MyTextField { + id: pttNewProfileName + keyBoardUID: 590 + color: "#cccccc" + text: "" + Layout.fillWidth: true + font.pointSize: 20 + function onInputEvent(input) { + pttNewProfileName.text = input + } + } + } + } + onClosed: { + if (okClicked) { + if (pttNewProfileName.text != "") { + AudioTabController.addPttProfile(pttNewProfileName.text) + + } else { + audioMessageDialog.showMessage("Create New Profile", "ERROR: No name given.") + } + } + } + function openPopup() { + pttNewProfileName.text = "" + open() + } +} From cd4a6d699451c7b2ca27fd1d70ef0980d97dbe80 Mon Sep 17 00:00:00 2001 From: Vasily Date: Mon, 28 Jan 2019 21:38:44 +0100 Subject: [PATCH 03/17] Refactor audio device selector into separate file For now the way to go is to have the mirror device and audio device selectors as different components instead of trying to inherit from a single component and filling in the necessary function calls. This is because some function calls are nested inside other components and would be very messy. Perhaps in future commits the selectors will inherit from a single parent. --- advancedSettings.pro | 2 +- src/res/qml/audio_page/AudioPage.qml | 39 +++++--------- .../device_selector/AudioDeviceSelector.qml | 54 +++++++++++++++++++ .../device_selector/MirrorDeviceSelector.qml | 25 +++++++++ 4 files changed, 92 insertions(+), 28 deletions(-) create mode 100644 src/res/qml/audio_page/device_selector/AudioDeviceSelector.qml create mode 100644 src/res/qml/audio_page/device_selector/MirrorDeviceSelector.qml diff --git a/advancedSettings.pro b/advancedSettings.pro index 45c0691..6cf56d6 100644 --- a/advancedSettings.pro +++ b/advancedSettings.pro @@ -165,4 +165,4 @@ DISTFILES += \ src/res/qml/utilities_page/desktop_size/* \ src/res/qml/utilities_page/alarm_clock/* \ src/res/qml/audio_page/dialog_boxes/* \ - src/res/qml/audio_page/dialog_boxes/AudioDeleteProfileDialog.qml + src/res/qml/audio_page/device_selector/* diff --git a/src/res/qml/audio_page/AudioPage.qml b/src/res/qml/audio_page/AudioPage.qml index 6a6811c..5f5af26 100644 --- a/src/res/qml/audio_page/AudioPage.qml +++ b/src/res/qml/audio_page/AudioPage.qml @@ -4,6 +4,7 @@ import QtQuick.Layouts 1.3 import matzman666.advsettings 1.0 import ".." //common imports import "dialog_boxes" +import "device_selector" MyStackViewPage { width: 1200 @@ -40,22 +41,8 @@ MyStackViewPage { content: ColumnLayout { spacing: 24 - RowLayout { - MyText { - text: "Playback Device: " - Layout.preferredWidth: 260 - } - MyComboBox { - id: audioPlaybackNameCombo - Layout.maximumWidth: 850 - Layout.minimumWidth: 850 - Layout.preferredWidth: 850 - onActivated: { - if (componentCompleted) { - AudioTabController.setPlaybackDeviceIndex(currentIndex) - } - } - } + AudioDeviceSelector { + id: audioPlaybackNameCombo } ColumnLayout { @@ -404,16 +391,16 @@ MyStackViewPage { } Component.onCompleted: { - var devs1 = [] + var devs2 = [""] var playbackDeviceCount = AudioTabController.getPlaybackDeviceCount() for (var i = 0; i < playbackDeviceCount; i++) { var name = AudioTabController.getPlaybackDeviceName(i) - devs1.push(name) + devs2.push(name) } - audioPlaybackNameCombo.model = devs1 - audioPlaybackNameCombo.currentIndex = AudioTabController.playbackDeviceIndex + + audioMirrorNameCombo.model = devs2 if (AudioTabController.mirrorDeviceIndex < 0) { audioMirrorNameCombo.currentIndex = 0 @@ -467,9 +454,7 @@ MyStackViewPage { Connections { target: AudioTabController - onPlaybackDeviceIndexChanged: { - audioPlaybackNameCombo.currentIndex = index - } + onMirrorDeviceIndexChanged: { if (index < 0) { audioMirrorNameCombo.currentIndex = 0 @@ -554,16 +539,16 @@ MyStackViewPage { onPlaybackDeviceListChanged: { - var devs1 = [] + var devs2 = [""] var playbackDeviceCount = AudioTabController.getPlaybackDeviceCount() for (var i = 0; i < playbackDeviceCount; i++) { var name = AudioTabController.getPlaybackDeviceName(i) - devs1.push(name) + devs2.push(name) } - audioPlaybackNameCombo.model = devs1 - audioPlaybackNameCombo.currentIndex = AudioTabController.playbackDeviceIndex + + audioMirrorNameCombo.model = devs2 if (AudioTabController.mirrorDeviceIndex < 0) { audioMirrorNameCombo.currentIndex = 0 diff --git a/src/res/qml/audio_page/device_selector/AudioDeviceSelector.qml b/src/res/qml/audio_page/device_selector/AudioDeviceSelector.qml new file mode 100644 index 0000000..17eddd2 --- /dev/null +++ b/src/res/qml/audio_page/device_selector/AudioDeviceSelector.qml @@ -0,0 +1,54 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 +import matzman666.advsettings 1.0 +import "../.." // common imports + +RowLayout { + id: audioPlaybackNameCombo + property string deviceText: "Audio Device: " + + property alias devices: selector.model + property alias deviceIndex: selector.currentIndex + MyText { + text: deviceText + Layout.preferredWidth: 260 + } + MyComboBox { + id: selector + Layout.maximumWidth: 850 + Layout.minimumWidth: 850 + Layout.preferredWidth: 850 + onActivated: { + if (currentIndex >= 0) { + AudioTabController.setPlaybackDeviceIndex(currentIndex, false) + } + } + } + Component.onCompleted: { + audioPlaybackNameCombo.devices = getAudioDeviceList() + audioPlaybackNameCombo.deviceIndex = AudioTabController.playbackDeviceIndex + } + + Connections { + target: AudioTabController + onPlaybackDeviceIndexChanged: { + audioPlaybackNameCombo.deviceIndex = index + } + onPlaybackDeviceListChanged: { + audioPlaybackNameCombo.devices = getAudioDeviceList() + audioPlaybackNameCombo.deviceIndex = AudioTabController.playbackDeviceIndex + } + } + function getAudioDeviceList() { + var devices = [] + var playbackDevicesCount = AudioTabController.getPlaybackDeviceCount() + for (var i = 0; i < playbackDevicesCount; i++) { + var deviceName = AudioTabController.getPlaybackDeviceName(i) + devices.push(deviceName) + } + // Setting the model zeroes out the + // index so we need to set devices first. + return devices + } +} diff --git a/src/res/qml/audio_page/device_selector/MirrorDeviceSelector.qml b/src/res/qml/audio_page/device_selector/MirrorDeviceSelector.qml new file mode 100644 index 0000000..3088d9b --- /dev/null +++ b/src/res/qml/audio_page/device_selector/MirrorDeviceSelector.qml @@ -0,0 +1,25 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 +import matzman666.advsettings 1.0 +import ".." //common imports +import "dialog_boxes" +import "device_selector" + +RowLayout { + MyText { + text: "Mirror Device: " + Layout.preferredWidth: 260 + } + MyComboBox { + id: audioMirrorNameCombo + Layout.maximumWidth: 850 + Layout.minimumWidth: 850 + Layout.preferredWidth: 850 + onActivated: { + if (componentCompleted) { + AudioTabController.setMirrorDeviceIndex(currentIndex - 1) + } + } + } +} From 56d866a2369cca74db7358d3149b282bb044b6a5 Mon Sep 17 00:00:00 2001 From: Vasily Date: Wed, 30 Jan 2019 19:42:32 +0100 Subject: [PATCH 04/17] Refactor mirrorAudio dropdown and move logic into The logic is better abstracted away inside the class. --- src/res/qml/audio_page/AudioPage.qml | 52 +++------------ .../device_selector/AudioDeviceSelector.qml | 20 ++++-- .../device_selector/MirrorDeviceSelector.qml | 63 ++++++++++++++++--- 3 files changed, 80 insertions(+), 55 deletions(-) diff --git a/src/res/qml/audio_page/AudioPage.qml b/src/res/qml/audio_page/AudioPage.qml index 5f5af26..6e28a16 100644 --- a/src/res/qml/audio_page/AudioPage.qml +++ b/src/res/qml/audio_page/AudioPage.qml @@ -47,22 +47,8 @@ MyStackViewPage { ColumnLayout { spacing: 18 - RowLayout { - MyText { - text: "Mirror Device: " - Layout.preferredWidth: 260 - } - MyComboBox { - id: audioMirrorNameCombo - Layout.maximumWidth: 850 - Layout.minimumWidth: 850 - Layout.preferredWidth: 850 - onActivated: { - if (componentCompleted) { - AudioTabController.setMirrorDeviceIndex(currentIndex - 1) - } - } - } + MirrorDeviceSelector { + id: audioMirrorNameCombo } RowLayout { MyText { @@ -391,19 +377,7 @@ MyStackViewPage { } Component.onCompleted: { - - var devs2 = [""] - var playbackDeviceCount = AudioTabController.getPlaybackDeviceCount() - for (var i = 0; i < playbackDeviceCount; i++) { - var name = AudioTabController.getPlaybackDeviceName(i) - - devs2.push(name) - } - - - audioMirrorNameCombo.model = devs2 if (AudioTabController.mirrorDeviceIndex < 0) { - audioMirrorNameCombo.currentIndex = 0 audioMirrorVolumeMinusButton.enabled = false audioMirrorVolumeSlider.enabled = false audioMirrorVolumePlusButton.enabled = false @@ -415,8 +389,8 @@ MyStackViewPage { audioMirrorMuteToggle.enabled = true audioMirrorVolumeSlider.value = AudioTabController.mirrorVolume audioMirrorMuteToggle.checked = AudioTabController.mirrorMuted - audioMirrorNameCombo.currentIndex = AudioTabController.mirrorDeviceIndex + 1 } + var devs3 = [] var micDeviceCount = AudioTabController.getRecordingDeviceCount() for (var i = 0; i < micDeviceCount; i++) { @@ -442,6 +416,8 @@ MyStackViewPage { audioMuteProximitySensorToggle.checked = AudioTabController.micProximitySensorCanMute audioMicNameCombo.currentIndex = AudioTabController.micDeviceIndex } + + reloadPttProfiles() reloadAudioProfiles() audioPttEnabledToggle.checked = AudioTabController.pttEnabled @@ -457,7 +433,7 @@ MyStackViewPage { onMirrorDeviceIndexChanged: { if (index < 0) { - audioMirrorNameCombo.currentIndex = 0 + audioMirrorNameCombo.deviceIndex = 0 audioMirrorVolumeMinusButton.enabled = false audioMirrorVolumeSlider.enabled = false audioMirrorVolumePlusButton.enabled = false @@ -467,7 +443,7 @@ MyStackViewPage { audioMirrorVolumeSlider.enabled = true audioMirrorVolumePlusButton.enabled = true audioMirrorMuteToggle.enabled = true - audioMirrorNameCombo.currentIndex = index + 1 + audioMirrorNameCombo.deviceIndex = index + 1 } } onMirrorVolumeChanged: { @@ -540,18 +516,8 @@ MyStackViewPage { onPlaybackDeviceListChanged: { - var devs2 = [""] - var playbackDeviceCount = AudioTabController.getPlaybackDeviceCount() - for (var i = 0; i < playbackDeviceCount; i++) { - var name = AudioTabController.getPlaybackDeviceName(i) - - devs2.push(name) - } - - - audioMirrorNameCombo.model = devs2 if (AudioTabController.mirrorDeviceIndex < 0) { - audioMirrorNameCombo.currentIndex = 0 + audioMirrorNameCombo.deviceIndex = 0 audioMirrorVolumeMinusButton.enabled = false audioMirrorVolumeSlider.enabled = false audioMirrorVolumePlusButton.enabled = false @@ -563,7 +529,7 @@ MyStackViewPage { audioMirrorMuteToggle.enabled = true audioMirrorVolumeSlider.value = AudioTabController.mirrorVolume audioMirrorMuteToggle.checked = AudioTabController.mirrorMuted - audioMirrorNameCombo.currentIndex = AudioTabController.mirrorDeviceIndex + 1 + audioMirrorNameCombo.deviceIndex = AudioTabController.mirrorDeviceIndex + 1 } } onRecordingDeviceListChanged: { diff --git a/src/res/qml/audio_page/device_selector/AudioDeviceSelector.qml b/src/res/qml/audio_page/device_selector/AudioDeviceSelector.qml index 17eddd2..0313b16 100644 --- a/src/res/qml/audio_page/device_selector/AudioDeviceSelector.qml +++ b/src/res/qml/audio_page/device_selector/AudioDeviceSelector.qml @@ -20,24 +20,25 @@ RowLayout { Layout.minimumWidth: 850 Layout.preferredWidth: 850 onActivated: { - if (currentIndex >= 0) { - AudioTabController.setPlaybackDeviceIndex(currentIndex, false) + if (deviceIndex >= 0) { + AudioTabController.setPlaybackDeviceIndex(deviceIndex, false) } + setShownAudioDevice(index) } } Component.onCompleted: { audioPlaybackNameCombo.devices = getAudioDeviceList() - audioPlaybackNameCombo.deviceIndex = AudioTabController.playbackDeviceIndex + setShownAudioDevice(AudioTabController.playbackDeviceIndex) } Connections { target: AudioTabController onPlaybackDeviceIndexChanged: { - audioPlaybackNameCombo.deviceIndex = index + setShownAudioDevice(index) } onPlaybackDeviceListChanged: { audioPlaybackNameCombo.devices = getAudioDeviceList() - audioPlaybackNameCombo.deviceIndex = AudioTabController.playbackDeviceIndex + setShownAudioDevice(AudioTabController.playbackDeviceIndex) } } function getAudioDeviceList() { @@ -51,4 +52,13 @@ RowLayout { // index so we need to set devices first. return devices } + function setShownAudioDevice(index) { + // If incorrect device, show "None". + if (index < 0) { + deviceIndex = 0 + } + else { + deviceIndex = index + } + } } diff --git a/src/res/qml/audio_page/device_selector/MirrorDeviceSelector.qml b/src/res/qml/audio_page/device_selector/MirrorDeviceSelector.qml index 3088d9b..51dd936 100644 --- a/src/res/qml/audio_page/device_selector/MirrorDeviceSelector.qml +++ b/src/res/qml/audio_page/device_selector/MirrorDeviceSelector.qml @@ -2,24 +2,73 @@ import QtQuick 2.7 import QtQuick.Controls 2.0 import QtQuick.Layouts 1.3 import matzman666.advsettings 1.0 -import ".." //common imports -import "dialog_boxes" -import "device_selector" +import "../.." //common imports RowLayout { + id: audioMirrorNameCombo + // Text shown to the left. + property string deviceText: "Mirror Device: " + + // The entries in the dropdown box. + property alias devices: selector.model + // The current index of the chosen device. + // Add one for use in the dropdown box because of the "None" entry. + property alias deviceIndex: selector.currentIndex MyText { - text: "Mirror Device: " + text: deviceText Layout.preferredWidth: 260 } MyComboBox { - id: audioMirrorNameCombo + id: selector Layout.maximumWidth: 850 Layout.minimumWidth: 850 Layout.preferredWidth: 850 onActivated: { - if (componentCompleted) { - AudioTabController.setMirrorDeviceIndex(currentIndex - 1) + if (deviceIndex >= 0) { + // The mirror device list contains a "None" entry, hence + // we need to subtract one to get the real index. + AudioTabController.setMirrorDeviceIndex(deviceIndex - 1) } } } + Component.onCompleted: { + // Populate dropdown with devices + audioMirrorNameCombo.devices = getAudioDeviceList() + + var mirrorIndex = AudioTabController.mirrorDeviceIndex + setShownAudioDevice(mirrorIndex) + + } + Connections { + target: AudioTabController + onMirrorDeviceIndexChanged: { + setShownAudioDevice(index) + } + onPlaybackDeviceListChanged: { + audioPlaybackNameCombo.devices = getAudioDeviceList() + setShownAudioDevice(AudioTabController.playbackDeviceIndex) + } + } + function getAudioDeviceList() { + var devices = [""] + var playbackDevicesCount = AudioTabController.getPlaybackDeviceCount() + for (var i = 0; i < playbackDevicesCount; i++) { + var deviceName = AudioTabController.getPlaybackDeviceName(i) + devices.push(deviceName) + } + // Setting the model zeroes out the + // index so we need to set devices first. + return devices + } + function setShownAudioDevice(index) { + // If incorrect device, show "None". + if (index < 0) { + deviceIndex = 0 + } + else { + // The mirror device list contains a "None" entry + // hence we need to add one to show the correct entry. + deviceIndex = index + 1 + } + } } From c36e9cd1685af166383d022530a09056f0a8a8b4 Mon Sep 17 00:00:00 2001 From: Vasily Date: Wed, 30 Jan 2019 20:07:27 +0100 Subject: [PATCH 05/17] Move mirror slider into own file The mirror selector is a sub part of the volume slider. This could be changed in the future to have the slider be a top level component that contains both selector and slider. --- src/res/qml/audio_page/AudioPage.qml | 104 +--------------- .../device_selector/MirrorVolumeSlider.qml | 114 ++++++++++++++++++ 2 files changed, 115 insertions(+), 103 deletions(-) create mode 100644 src/res/qml/audio_page/device_selector/MirrorVolumeSlider.qml diff --git a/src/res/qml/audio_page/AudioPage.qml b/src/res/qml/audio_page/AudioPage.qml index 6e28a16..dcd67ea 100644 --- a/src/res/qml/audio_page/AudioPage.qml +++ b/src/res/qml/audio_page/AudioPage.qml @@ -45,73 +45,7 @@ MyStackViewPage { id: audioPlaybackNameCombo } - ColumnLayout { - spacing: 18 - MirrorDeviceSelector { - id: audioMirrorNameCombo - } - RowLayout { - MyText { - text: "Mirror Volume:" - Layout.preferredWidth: 260 - } - - MyPushButton2 { - id: audioMirrorVolumeMinusButton - text: "-" - Layout.preferredWidth: 40 - onClicked: { - audioMirrorVolumeSlider.value -= 0.1 - } - } - - MySlider { - id: audioMirrorVolumeSlider - from: 0.0 - to: 1.0 - stepSize: 0.01 - value: 1.0 - Layout.fillWidth: true - onPositionChanged: { - var val = this.position * 100 - audioMirrorVolumeText.text = Math.round(val) + "%" - } - onValueChanged: { - AudioTabController.setMirrorVolume(this.value.toFixed(2), false) - } - } - - MyPushButton2 { - id: audioMirrorVolumePlusButton - text: "+" - Layout.preferredWidth: 40 - onClicked: { - audioMirrorVolumeSlider.value += 0.1 - } - } - - MyText { - id: audioMirrorVolumeText - text: "100%" - Layout.preferredWidth: 85 - horizontalAlignment: Text.AlignRight - } - - MyPushButton2 { - id: audioMirrorMuteToggle - Layout.leftMargin: 12 - checkable: true - contentItem: Image { - source: parent.checked ? "speaker_off.svg" : "speaker_on.svg" - sourceSize.width: 32 - sourceSize.height: 32 - anchors.fill: parent - } - onCheckedChanged: { - AudioTabController.setMirrorMuted(checked, false) - } - } - } + MirrorVolumeSlider { } ColumnLayout { @@ -377,20 +311,6 @@ MyStackViewPage { } Component.onCompleted: { - if (AudioTabController.mirrorDeviceIndex < 0) { - audioMirrorVolumeMinusButton.enabled = false - audioMirrorVolumeSlider.enabled = false - audioMirrorVolumePlusButton.enabled = false - audioMirrorMuteToggle.enabled = false - } else { - audioMirrorVolumeMinusButton.enabled = true - audioMirrorVolumeSlider.enabled = true - audioMirrorVolumePlusButton.enabled = true - audioMirrorMuteToggle.enabled = true - audioMirrorVolumeSlider.value = AudioTabController.mirrorVolume - audioMirrorMuteToggle.checked = AudioTabController.mirrorMuted - } - var devs3 = [] var micDeviceCount = AudioTabController.getRecordingDeviceCount() for (var i = 0; i < micDeviceCount; i++) { @@ -430,28 +350,6 @@ MyStackViewPage { Connections { target: AudioTabController - - onMirrorDeviceIndexChanged: { - if (index < 0) { - audioMirrorNameCombo.deviceIndex = 0 - audioMirrorVolumeMinusButton.enabled = false - audioMirrorVolumeSlider.enabled = false - audioMirrorVolumePlusButton.enabled = false - audioMirrorMuteToggle.enabled = false - } else { - audioMirrorVolumeMinusButton.enabled = true - audioMirrorVolumeSlider.enabled = true - audioMirrorVolumePlusButton.enabled = true - audioMirrorMuteToggle.enabled = true - audioMirrorNameCombo.deviceIndex = index + 1 - } - } - onMirrorVolumeChanged: { - audioMirrorVolumeSlider.value = AudioTabController.mirrorVolume - } - onMirrorMutedChanged: { - audioMirrorMuteToggle.checked = AudioTabController.mirrorMuted - } onMicDeviceIndexChanged: { if (index < 0) { audioMicNameCombo.currentIndex = 0 diff --git a/src/res/qml/audio_page/device_selector/MirrorVolumeSlider.qml b/src/res/qml/audio_page/device_selector/MirrorVolumeSlider.qml new file mode 100644 index 0000000..981be3c --- /dev/null +++ b/src/res/qml/audio_page/device_selector/MirrorVolumeSlider.qml @@ -0,0 +1,114 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 +import matzman666.advsettings 1.0 +import "../.." //common imports +import "." + +ColumnLayout { + spacing: 18 + MirrorDeviceSelector { + id: audioMirrorNameCombo + } + RowLayout { + MyText { + text: "Mirror Volume:" + Layout.preferredWidth: 260 + } + + MyPushButton2 { + id: audioMirrorVolumeMinusButton + text: "-" + Layout.preferredWidth: 40 + onClicked: { + audioMirrorVolumeSlider.value -= 0.1 + } + } + + MySlider { + id: audioMirrorVolumeSlider + from: 0.0 + to: 1.0 + stepSize: 0.01 + value: 1.0 + Layout.fillWidth: true + onPositionChanged: { + var val = this.position * 100 + audioMirrorVolumeText.text = Math.round(val) + "%" + } + onValueChanged: { + AudioTabController.setMirrorVolume(this.value.toFixed(2), false) + } + } + + MyPushButton2 { + id: audioMirrorVolumePlusButton + text: "+" + Layout.preferredWidth: 40 + onClicked: { + audioMirrorVolumeSlider.value += 0.1 + } + } + + MyText { + id: audioMirrorVolumeText + text: "100%" + Layout.preferredWidth: 85 + horizontalAlignment: Text.AlignRight + } + + MyPushButton2 { + id: audioMirrorMuteToggle + Layout.leftMargin: 12 + checkable: true + contentItem: Image { + source: parent.checked ? "../speaker_off.svg" : "../speaker_on.svg" + sourceSize.width: 32 + sourceSize.height: 32 + anchors.fill: parent + } + onCheckedChanged: { + AudioTabController.setMirrorMuted(checked, false) + } + } + } + Component.onCompleted: { + if (AudioTabController.mirrorDeviceIndex < 0) { + audioMirrorVolumeMinusButton.enabled = false + audioMirrorVolumeSlider.enabled = false + audioMirrorVolumePlusButton.enabled = false + audioMirrorMuteToggle.enabled = false + } else { + audioMirrorVolumeMinusButton.enabled = true + audioMirrorVolumeSlider.enabled = true + audioMirrorVolumePlusButton.enabled = true + audioMirrorMuteToggle.enabled = true + audioMirrorVolumeSlider.value = AudioTabController.mirrorVolume + audioMirrorMuteToggle.checked = AudioTabController.mirrorMuted + } + } + Connections { + target: AudioTabController + onMirrorDeviceIndexChanged: { + if (index < 0) { + audioMirrorNameCombo.deviceIndex = 0 + audioMirrorVolumeMinusButton.enabled = false + audioMirrorVolumeSlider.enabled = false + audioMirrorVolumePlusButton.enabled = false + audioMirrorMuteToggle.enabled = false + } else { + audioMirrorVolumeMinusButton.enabled = true + audioMirrorVolumeSlider.enabled = true + audioMirrorVolumePlusButton.enabled = true + audioMirrorMuteToggle.enabled = true + audioMirrorNameCombo.deviceIndex = index + 1 + } + } + onMirrorVolumeChanged: { + audioMirrorVolumeSlider.value = AudioTabController.mirrorVolume + } + onMirrorMutedChanged: { + audioMirrorMuteToggle.checked = AudioTabController.mirrorMuted + } + } +} From 86599fbd29bf979daf2483be5e9b8e2e25bd5bc2 Mon Sep 17 00:00:00 2001 From: Vasily Date: Thu, 31 Jan 2019 17:57:50 +0100 Subject: [PATCH 06/17] Refactor audioMicNameCombo --- src/res/qml/audio_page/AudioPage.qml | 40 ++---------- .../device_selector/MicDeviceSelector.qml | 64 +++++++++++++++++++ 2 files changed, 68 insertions(+), 36 deletions(-) create mode 100644 src/res/qml/audio_page/device_selector/MicDeviceSelector.qml diff --git a/src/res/qml/audio_page/AudioPage.qml b/src/res/qml/audio_page/AudioPage.qml index dcd67ea..b1761a3 100644 --- a/src/res/qml/audio_page/AudioPage.qml +++ b/src/res/qml/audio_page/AudioPage.qml @@ -46,26 +46,13 @@ MyStackViewPage { } MirrorVolumeSlider { + id: audioMirrorNameCombo } ColumnLayout { spacing: 18 - RowLayout { - MyText { - text: "Microphone: " - Layout.preferredWidth: 260 - } - MyComboBox { - id: audioMicNameCombo - Layout.maximumWidth: 850 - Layout.minimumWidth: 850 - Layout.preferredWidth: 850 - onActivated: { - if (componentCompleted) { - AudioTabController.setMicDeviceIndex(currentIndex) - } - } - } + MicDeviceSelector { + id: audioMicNameCombo } RowLayout { MyText { @@ -129,6 +116,7 @@ MyStackViewPage { } } } + MyToggleButton { id: audioMuteProximitySensorToggle Layout.preferredWidth: 600 @@ -311,15 +299,7 @@ MyStackViewPage { } Component.onCompleted: { - var devs3 = [] - var micDeviceCount = AudioTabController.getRecordingDeviceCount() - for (var i = 0; i < micDeviceCount; i++) { - var name = AudioTabController.getRecordingDeviceName(i) - devs3.push(name) - } - audioMicNameCombo.model = devs3 if (AudioTabController.micDeviceIndex < 0) { - audioMicNameCombo.currentIndex = 0 audioMicVolumeMinusButton.enabled = false audioMicVolumeSlider.enabled = false audioMicVolumePlusButton.enabled = false @@ -334,7 +314,6 @@ MyStackViewPage { audioMicVolumeSlider.value = AudioTabController.micVolume audioMicMuteToggle.checked = AudioTabController.micMuted audioMuteProximitySensorToggle.checked = AudioTabController.micProximitySensorCanMute - audioMicNameCombo.currentIndex = AudioTabController.micDeviceIndex } @@ -352,7 +331,6 @@ MyStackViewPage { target: AudioTabController onMicDeviceIndexChanged: { if (index < 0) { - audioMicNameCombo.currentIndex = 0 audioMicVolumeMinusButton.enabled = false audioMicVolumeSlider.enabled = false audioMicVolumePlusButton.enabled = false @@ -362,7 +340,6 @@ MyStackViewPage { audioMicVolumeSlider.enabled = true audioMicVolumePlusButton.enabled = true audioMicMuteToggle.enabled = true - audioMicNameCombo.currentIndex = index } } onMicVolumeChanged: { @@ -431,15 +408,7 @@ MyStackViewPage { } } onRecordingDeviceListChanged: { - var devs3 = [] - var micDeviceCount = AudioTabController.getRecordingDeviceCount() - for (var i = 0; i < micDeviceCount; i++) { - var name = AudioTabController.getRecordingDeviceName(i) - devs3.push(name) - } - audioMicNameCombo.model = devs3 if (AudioTabController.micDeviceIndex < 0) { - audioMicNameCombo.currentIndex = 0 audioMicVolumeMinusButton.enabled = false audioMicVolumeSlider.enabled = false audioMicVolumePlusButton.enabled = false @@ -451,7 +420,6 @@ MyStackViewPage { audioMicMuteToggle.enabled = true audioMicVolumeSlider.value = AudioTabController.micVolume audioMicMuteToggle.checked = AudioTabController.micMuted - audioMicNameCombo.currentIndex = AudioTabController.micDeviceIndex } } } diff --git a/src/res/qml/audio_page/device_selector/MicDeviceSelector.qml b/src/res/qml/audio_page/device_selector/MicDeviceSelector.qml new file mode 100644 index 0000000..9b77bbb --- /dev/null +++ b/src/res/qml/audio_page/device_selector/MicDeviceSelector.qml @@ -0,0 +1,64 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 +import matzman666.advsettings 1.0 +import "../.." //common imports + +RowLayout { + id: audioMicNameCombo + property string deviceText: "Microphone: " + + // The entries in the dropdown box. + property alias devices: selector.model + // The current index of the chosen device. + // Add one for use in the dropdown box because of the "None" entry. + property alias deviceIndex: selector.currentIndex + MyText { + text: deviceText + Layout.preferredWidth: 260 + } + MyComboBox { + id: selector + Layout.maximumWidth: 850 + Layout.minimumWidth: 850 + Layout.preferredWidth: 850 + onActivated: { + if (componentCompleted) { + AudioTabController.setMicDeviceIndex(currentIndex) + } + } + } + function getAudioDeviceList() { + var devices = [] + var playbackDevicesCount = AudioTabController.getRecordingDeviceCount() + for (var i = 0; i < playbackDevicesCount; i++) { + var deviceName = AudioTabController.getRecordingDeviceName(i) + devices.push(deviceName) + } + // Setting the model zeroes out the + // index so we need to set devices first. + return devices + } + function setShownAudioDevice(index) { + if (index < 0) { + deviceIndex = 0 + } + else { + deviceIndex = index + } + } + Component.onCompleted: { + devices = getAudioDeviceList() + setShownAudioDevice(AudioTabController.micDeviceIndex) + } + Connections { + target: AudioTabController + onMicDeviceIndexChanged: { + setShownAudioDevice(index) + } + onRecordingDeviceListChanged: { + devices = getAudioDeviceList() + setShownAudioDevice(AudioTabController.micDeviceIndex) + } + } +} From 5aa5d84345227e3014bcb45b91f005ddc62b9510 Mon Sep 17 00:00:00 2001 From: Vasily Date: Thu, 31 Jan 2019 18:02:09 +0100 Subject: [PATCH 07/17] Indent PTT controls on AudioPage The PTT controls were grouped in a ColumnLayout with the microphone device and volume controls. Grouping the microphone controls together mirrors what is done with the mirror device controls. --- src/res/qml/audio_page/AudioPage.qml | 84 ++++++++++--------- .../device_selector/MicDeviceSelector.qml | 2 +- 2 files changed, 44 insertions(+), 42 deletions(-) diff --git a/src/res/qml/audio_page/AudioPage.qml b/src/res/qml/audio_page/AudioPage.qml index b1761a3..e6214e1 100644 --- a/src/res/qml/audio_page/AudioPage.qml +++ b/src/res/qml/audio_page/AudioPage.qml @@ -116,7 +116,9 @@ MyStackViewPage { } } } - + } + ColumnLayout { + spacing: 18 MyToggleButton { id: audioMuteProximitySensorToggle Layout.preferredWidth: 600 @@ -252,50 +254,50 @@ MyStackViewPage { } } RowLayout { - spacing: 18 + spacing: 18 - MyPushButton { - id: audioDeleteProfileButton - enabled: true - Layout.preferredWidth: 200 - text: "Delete Profile" - onClicked: { - if (audioProfileComboBox.currentIndex > 0) { - audioDeleteProfileDialog.profileIndex = audioProfileComboBox.currentIndex - 1 - audioDeleteProfileDialog.open() - } - } - } - MyPushButton { - Layout.preferredWidth: 200 - text: "New Profile" - onClicked: { - audioNewProfileDialog.openPopup() - } - } - Item { - Layout.fillWidth: true - } - MyPushButton { - id: pttDeleteProfileButton - enabled: true - Layout.preferredWidth: 200 - text: "Delete Profile" - onClicked: { - if (pttProfileComboBox.currentIndex > 0) { - pttDeleteProfileDialog.profileIndex = pttProfileComboBox.currentIndex - 1 - pttDeleteProfileDialog.open() - } - } - } - MyPushButton { - Layout.preferredWidth: 200 - text: "New Profile" - onClicked: { - pttNewProfileDialog.openPopup() + MyPushButton { + id: audioDeleteProfileButton + enabled: true + Layout.preferredWidth: 200 + text: "Delete Profile" + onClicked: { + if (audioProfileComboBox.currentIndex > 0) { + audioDeleteProfileDialog.profileIndex = audioProfileComboBox.currentIndex - 1 + audioDeleteProfileDialog.open() } } } + MyPushButton { + Layout.preferredWidth: 200 + text: "New Profile" + onClicked: { + audioNewProfileDialog.openPopup() + } + } + Item { + Layout.fillWidth: true + } + MyPushButton { + id: pttDeleteProfileButton + enabled: true + Layout.preferredWidth: 200 + text: "Delete Profile" + onClicked: { + if (pttProfileComboBox.currentIndex > 0) { + pttDeleteProfileDialog.profileIndex = pttProfileComboBox.currentIndex - 1 + pttDeleteProfileDialog.open() + } + } + } + MyPushButton { + Layout.preferredWidth: 200 + text: "New Profile" + onClicked: { + pttNewProfileDialog.openPopup() + } + } + } } Component.onCompleted: { diff --git a/src/res/qml/audio_page/device_selector/MicDeviceSelector.qml b/src/res/qml/audio_page/device_selector/MicDeviceSelector.qml index 9b77bbb..8f0179a 100644 --- a/src/res/qml/audio_page/device_selector/MicDeviceSelector.qml +++ b/src/res/qml/audio_page/device_selector/MicDeviceSelector.qml @@ -23,7 +23,7 @@ RowLayout { Layout.minimumWidth: 850 Layout.preferredWidth: 850 onActivated: { - if (componentCompleted) { + if (deviceIndex >= 0) { AudioTabController.setMicDeviceIndex(currentIndex) } } From 5dc28972aed2d3af5b9a5cc36d4c91cffb4b9194 Mon Sep 17 00:00:00 2001 From: Vasily Date: Thu, 31 Jan 2019 18:55:45 +0100 Subject: [PATCH 08/17] Refactor microphone volume slider into separate file, clean up AudioPage An if statement hadn't been transferred to the mirrorVolume slider, hence it was moved now. --- src/res/qml/audio_page/AudioPage.qml | 138 +----------------- .../device_selector/MicVolumeSlider.qml | 130 +++++++++++++++++ .../device_selector/MirrorVolumeSlider.qml | 15 ++ 3 files changed, 146 insertions(+), 137 deletions(-) create mode 100644 src/res/qml/audio_page/device_selector/MicVolumeSlider.qml diff --git a/src/res/qml/audio_page/AudioPage.qml b/src/res/qml/audio_page/AudioPage.qml index e6214e1..f1f352f 100644 --- a/src/res/qml/audio_page/AudioPage.qml +++ b/src/res/qml/audio_page/AudioPage.qml @@ -10,9 +10,6 @@ MyStackViewPage { width: 1200 headerText: "Audio Settings" - property bool componentCompleted: false - - AudioMessageDialog { id: audioMessageDialog } @@ -49,73 +46,7 @@ MyStackViewPage { id: audioMirrorNameCombo } - ColumnLayout { - spacing: 18 - MicDeviceSelector { - id: audioMicNameCombo - } - RowLayout { - MyText { - text: "Microphone Volume:" - Layout.preferredWidth: 260 - } - - MyPushButton2 { - id: audioMicVolumeMinusButton - text: "-" - Layout.preferredWidth: 40 - onClicked: { - audioMicVolumeSlider.value -= 0.1 - } - } - - MySlider { - id: audioMicVolumeSlider - from: 0.0 - to: 1.0 - stepSize: 0.01 - value: 1.0 - Layout.fillWidth: true - onPositionChanged: { - var val = this.position * 100 - audioMicVolumeText.text = Math.round(val) + "%" - } - onValueChanged: { - AudioTabController.setMicVolume(this.value.toFixed(2)) - } - } - - MyPushButton2 { - id: audioMicVolumePlusButton - text: "+" - Layout.preferredWidth: 40 - onClicked: { - audioMicVolumeSlider.value += 0.1 - } - } - - MyText { - id: audioMicVolumeText - text: "100%" - Layout.preferredWidth: 85 - horizontalAlignment: Text.AlignRight - } - - MyPushButton2 { - id: audioMicMuteToggle - Layout.leftMargin: 12 - checkable: true - contentItem: Image { - source: parent.checked ? "mic_off.svg" : "mic_on.svg" - sourceSize.width: 32 - sourceSize.height: 32 - anchors.fill: parent - } - onCheckedChanged: { - AudioTabController.setMicMuted(checked) - } - } - } + MicVolumeSlider { } ColumnLayout { spacing: 18 @@ -302,23 +233,11 @@ MyStackViewPage { Component.onCompleted: { if (AudioTabController.micDeviceIndex < 0) { - audioMicVolumeMinusButton.enabled = false - audioMicVolumeSlider.enabled = false - audioMicVolumePlusButton.enabled = false - audioMicMuteToggle.enabled = false audioMuteProximitySensorToggle.enabled = false } else { - audioMicVolumeMinusButton.enabled = true - audioMicVolumeSlider.enabled = true - audioMicVolumePlusButton.enabled = true - audioMicMuteToggle.enabled = true audioMuteProximitySensorToggle.enabled = true - audioMicVolumeSlider.value = AudioTabController.micVolume - audioMicMuteToggle.checked = AudioTabController.micMuted audioMuteProximitySensorToggle.checked = AudioTabController.micProximitySensorCanMute } - - reloadPttProfiles() reloadAudioProfiles() audioPttEnabledToggle.checked = AudioTabController.pttEnabled @@ -326,30 +245,10 @@ MyStackViewPage { audioPttRightControllerToggle.checked = AudioTabController.pttRightControllerEnabled audioPttShowNotificationToggle.checked = AudioTabController.pttShowNotification audioPttReverseToggle.checked = AudioTabController.micReversePtt - componentCompleted = true } Connections { target: AudioTabController - onMicDeviceIndexChanged: { - if (index < 0) { - audioMicVolumeMinusButton.enabled = false - audioMicVolumeSlider.enabled = false - audioMicVolumePlusButton.enabled = false - audioMicMuteToggle.enabled = false - } else { - audioMicVolumeMinusButton.enabled = true - audioMicVolumeSlider.enabled = true - audioMicVolumePlusButton.enabled = true - audioMicMuteToggle.enabled = true - } - } - onMicVolumeChanged: { - audioMicVolumeSlider.value = AudioTabController.micVolume - } - onMicMutedChanged: { - audioMicMuteToggle.checked = AudioTabController.micMuted - } onMicProximitySensorCanMuteChanged: { audioMuteProximitySensorToggle.checked = AudioTabController.micProximitySensorCanMute } @@ -389,41 +288,6 @@ MyStackViewPage { onDefaultProfileDisplay:{ audioProfileComboBox.currentIndex = AudioTabController.getDefaultAudioProfileIndex() + 1 } - - - onPlaybackDeviceListChanged: { - - if (AudioTabController.mirrorDeviceIndex < 0) { - audioMirrorNameCombo.deviceIndex = 0 - audioMirrorVolumeMinusButton.enabled = false - audioMirrorVolumeSlider.enabled = false - audioMirrorVolumePlusButton.enabled = false - audioMirrorMuteToggle.enabled = false - } else { - audioMirrorVolumeMinusButton.enabled = true - audioMirrorVolumeSlider.enabled = true - audioMirrorVolumePlusButton.enabled = true - audioMirrorMuteToggle.enabled = true - audioMirrorVolumeSlider.value = AudioTabController.mirrorVolume - audioMirrorMuteToggle.checked = AudioTabController.mirrorMuted - audioMirrorNameCombo.deviceIndex = AudioTabController.mirrorDeviceIndex + 1 - } - } - onRecordingDeviceListChanged: { - if (AudioTabController.micDeviceIndex < 0) { - audioMicVolumeMinusButton.enabled = false - audioMicVolumeSlider.enabled = false - audioMicVolumePlusButton.enabled = false - audioMicMuteToggle.enabled = false - } else { - audioMicVolumeMinusButton.enabled = true - audioMicVolumeSlider.enabled = true - audioMicVolumePlusButton.enabled = true - audioMicMuteToggle.enabled = true - audioMicVolumeSlider.value = AudioTabController.micVolume - audioMicMuteToggle.checked = AudioTabController.micMuted - } - } } } diff --git a/src/res/qml/audio_page/device_selector/MicVolumeSlider.qml b/src/res/qml/audio_page/device_selector/MicVolumeSlider.qml new file mode 100644 index 0000000..d78f8a1 --- /dev/null +++ b/src/res/qml/audio_page/device_selector/MicVolumeSlider.qml @@ -0,0 +1,130 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 +import matzman666.advsettings 1.0 +import "../.." //common imports + +ColumnLayout { + spacing: 18 + MicDeviceSelector { + id: audioMicNameCombo + } + RowLayout { + MyText { + text: "Microphone Volume:" + Layout.preferredWidth: 260 + } + + MyPushButton2 { + id: audioMicVolumeMinusButton + text: "-" + Layout.preferredWidth: 40 + onClicked: { + audioMicVolumeSlider.value -= 0.1 + } + } + + MySlider { + id: audioMicVolumeSlider + from: 0.0 + to: 1.0 + stepSize: 0.01 + value: 1.0 + Layout.fillWidth: true + onPositionChanged: { + var val = this.position * 100 + audioMicVolumeText.text = Math.round(val) + "%" + } + onValueChanged: { + AudioTabController.setMicVolume(this.value.toFixed(2)) + } + } + + MyPushButton2 { + id: audioMicVolumePlusButton + text: "+" + Layout.preferredWidth: 40 + onClicked: { + audioMicVolumeSlider.value += 0.1 + } + } + + MyText { + id: audioMicVolumeText + text: "100%" + Layout.preferredWidth: 85 + horizontalAlignment: Text.AlignRight + } + + MyPushButton2 { + id: audioMicMuteToggle + Layout.leftMargin: 12 + checkable: true + contentItem: Image { + source: parent.checked ? "../mic_off.svg" : "../mic_on.svg" + sourceSize.width: 32 + sourceSize.height: 32 + anchors.fill: parent + } + onCheckedChanged: { + AudioTabController.setMicMuted(checked) + } + } + } + Component.onCompleted: { + if (AudioTabController.micDeviceIndex < 0) { + audioMicVolumeMinusButton.enabled = false + audioMicVolumeSlider.enabled = false + audioMicVolumePlusButton.enabled = false + audioMicMuteToggle.enabled = false + } + else { + audioMicVolumeMinusButton.enabled = true + audioMicVolumeSlider.enabled = true + audioMicVolumePlusButton.enabled = true + audioMicMuteToggle.enabled = true + audioMicVolumeSlider.value = AudioTabController.micVolume + audioMicMuteToggle.checked = AudioTabController.micMuted + } + } + Connections { + target: AudioTabController + onMicDeviceIndexChanged: { + if (index < 0) { + audioMicVolumeMinusButton.enabled = false + audioMicVolumeSlider.enabled = false + audioMicVolumePlusButton.enabled = false + audioMicMuteToggle.enabled = false + } else { + audioMicVolumeMinusButton.enabled = true + audioMicVolumeSlider.enabled = true + audioMicVolumePlusButton.enabled = true + audioMicMuteToggle.enabled = true + } + } + onMicVolumeChanged: { + audioMicVolumeSlider.value = AudioTabController.micVolume + } + onMicMutedChanged: { + audioMicMuteToggle.checked = AudioTabController.micMuted + } + onPlaybackDeviceListChanged: { + + } + onRecordingDeviceListChanged: { + if (AudioTabController.micDeviceIndex < 0) { + audioMicVolumeMinusButton.enabled = false + audioMicVolumeSlider.enabled = false + audioMicVolumePlusButton.enabled = false + audioMicMuteToggle.enabled = false + } else { + audioMicVolumeMinusButton.enabled = true + audioMicVolumeSlider.enabled = true + audioMicVolumePlusButton.enabled = true + audioMicMuteToggle.enabled = true + audioMicVolumeSlider.value = AudioTabController.micVolume + audioMicMuteToggle.checked = AudioTabController.micMuted + } + } + } +} diff --git a/src/res/qml/audio_page/device_selector/MirrorVolumeSlider.qml b/src/res/qml/audio_page/device_selector/MirrorVolumeSlider.qml index 981be3c..8709f4b 100644 --- a/src/res/qml/audio_page/device_selector/MirrorVolumeSlider.qml +++ b/src/res/qml/audio_page/device_selector/MirrorVolumeSlider.qml @@ -110,5 +110,20 @@ ColumnLayout { onMirrorMutedChanged: { audioMirrorMuteToggle.checked = AudioTabController.mirrorMuted } + onPlaybackDeviceListChanged: { + if (AudioTabController.mirrorDeviceIndex < 0) { + audioMirrorVolumeMinusButton.enabled = false + audioMirrorVolumeSlider.enabled = false + audioMirrorVolumePlusButton.enabled = false + audioMirrorMuteToggle.enabled = false + } else { + audioMirrorVolumeMinusButton.enabled = true + audioMirrorVolumeSlider.enabled = true + audioMirrorVolumePlusButton.enabled = true + audioMirrorMuteToggle.enabled = true + audioMirrorVolumeSlider.value = AudioTabController.mirrorVolume + audioMirrorMuteToggle.checked = AudioTabController.mirrorMuted + } + } } } From a29e6baaf7f591ab4c9e71d72a58baae8be1d22b Mon Sep 17 00:00:00 2001 From: Vasily Date: Thu, 31 Jan 2019 19:22:02 +0100 Subject: [PATCH 09/17] Remove id tags from refactored components The ids are not needed within the AudioPage, since everything has been encapsulated inside the components. --- src/res/qml/audio_page/AudioPage.qml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/res/qml/audio_page/AudioPage.qml b/src/res/qml/audio_page/AudioPage.qml index f1f352f..e120358 100644 --- a/src/res/qml/audio_page/AudioPage.qml +++ b/src/res/qml/audio_page/AudioPage.qml @@ -28,22 +28,18 @@ MyStackViewPage { } PttNewProfileDialog { - id: pttNewProfileDialog } AudioNewProfileDialog { - id: audioNewProfileDialog } content: ColumnLayout { spacing: 24 AudioDeviceSelector { - id: audioPlaybackNameCombo } MirrorVolumeSlider { - id: audioMirrorNameCombo } MicVolumeSlider { From fc06c46144a6586ce57dd995a9efc23d0b59e3fa Mon Sep 17 00:00:00 2001 From: Vasily Date: Fri, 1 Feb 2019 19:08:26 +0100 Subject: [PATCH 10/17] Refactor audio proximity enable button into separate file --- src/res/qml/audio_page/AudioPage.qml | 21 ++------------ .../audio_page/proximity/ProximityToggle.qml | 28 +++++++++++++++++++ 2 files changed, 30 insertions(+), 19 deletions(-) create mode 100644 src/res/qml/audio_page/proximity/ProximityToggle.qml diff --git a/src/res/qml/audio_page/AudioPage.qml b/src/res/qml/audio_page/AudioPage.qml index e120358..9c965c3 100644 --- a/src/res/qml/audio_page/AudioPage.qml +++ b/src/res/qml/audio_page/AudioPage.qml @@ -5,6 +5,7 @@ import matzman666.advsettings 1.0 import ".." //common imports import "dialog_boxes" import "device_selector" +import "proximity" MyStackViewPage { width: 1200 @@ -46,13 +47,7 @@ MyStackViewPage { } ColumnLayout { spacing: 18 - MyToggleButton { - id: audioMuteProximitySensorToggle - Layout.preferredWidth: 600 - text: "Proximity Sensor Mutes/Unmutes Microphone" - onClicked: { - AudioTabController.setMicProximitySensorCanMute(checked, false) - } + ProximityToggle { } RowLayout { MyToggleButton { @@ -228,12 +223,6 @@ MyStackViewPage { } Component.onCompleted: { - if (AudioTabController.micDeviceIndex < 0) { - audioMuteProximitySensorToggle.enabled = false - } else { - audioMuteProximitySensorToggle.enabled = true - audioMuteProximitySensorToggle.checked = AudioTabController.micProximitySensorCanMute - } reloadPttProfiles() reloadAudioProfiles() audioPttEnabledToggle.checked = AudioTabController.pttEnabled @@ -245,17 +234,11 @@ MyStackViewPage { Connections { target: AudioTabController - onMicProximitySensorCanMuteChanged: { - audioMuteProximitySensorToggle.checked = AudioTabController.micProximitySensorCanMute - } onMicReversePttChanged: { audioPttReverseToggle.checked = AudioTabController.micReversePtt } onPttEnabledChanged: { audioPttEnabledToggle.checked = AudioTabController.pttEnabled - } - onPttActiveChanged: { - } onPttShowNotificationChanged: { audioPttShowNotificationToggle.checked = AudioTabController.pttShowNotification diff --git a/src/res/qml/audio_page/proximity/ProximityToggle.qml b/src/res/qml/audio_page/proximity/ProximityToggle.qml new file mode 100644 index 0000000..1ce982f --- /dev/null +++ b/src/res/qml/audio_page/proximity/ProximityToggle.qml @@ -0,0 +1,28 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 +import matzman666.advsettings 1.0 +import "../.." //common imports + +MyToggleButton { + id: audioMuteProximitySensorToggle + Layout.preferredWidth: 600 + text: "Proximity Sensor Mutes/Unmutes Microphone" + onClicked: { + AudioTabController.setMicProximitySensorCanMute(checked, false) + } + Component.onCompleted: { + if (AudioTabController.micDeviceIndex < 0) { + audioMuteProximitySensorToggle.enabled = false + } else { + audioMuteProximitySensorToggle.enabled = true + audioMuteProximitySensorToggle.checked = AudioTabController.micProximitySensorCanMute + } + } + Connections { + target: AudioTabController + onMicProximitySensorCanMuteChanged: { + audioMuteProximitySensorToggle.checked = AudioTabController.micProximitySensorCanMute + } + } +} From 394482e63a6866a479eea56f9316c2615c44a7a2 Mon Sep 17 00:00:00 2001 From: Vasily Date: Fri, 1 Feb 2019 19:16:18 +0100 Subject: [PATCH 11/17] Fix regression in profile popups Without the public ids on the pop ups other buttons that used the buttons did not work. --- src/res/qml/audio_page/AudioPage.qml | 5 ++--- .../qml/audio_page/dialog_boxes/AudioNewProfileDialog.qml | 8 ++++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/res/qml/audio_page/AudioPage.qml b/src/res/qml/audio_page/AudioPage.qml index 9c965c3..25f499e 100644 --- a/src/res/qml/audio_page/AudioPage.qml +++ b/src/res/qml/audio_page/AudioPage.qml @@ -29,9 +29,11 @@ MyStackViewPage { } PttNewProfileDialog { + id: pttNewProfileDialog } AudioNewProfileDialog { + id: audioNewProfileDialog } content: ColumnLayout { @@ -249,9 +251,6 @@ MyStackViewPage { onPttRightControllerEnabledChanged: { audioPttRightControllerToggle.checked = AudioTabController.pttRightControllerEnabled } - onAudioProfileDefaultChanged: { - audioDefaultProfileToggle.checked = AudioTabController.audioProfileDefault - } onPttProfilesUpdated: { reloadPttProfiles() } diff --git a/src/res/qml/audio_page/dialog_boxes/AudioNewProfileDialog.qml b/src/res/qml/audio_page/dialog_boxes/AudioNewProfileDialog.qml index af227b3..30f59aa 100644 --- a/src/res/qml/audio_page/dialog_boxes/AudioNewProfileDialog.qml +++ b/src/res/qml/audio_page/dialog_boxes/AudioNewProfileDialog.qml @@ -6,6 +6,7 @@ import "../.." //common imports MyDialogOkCancelPopup { id: audioNewProfileDialog + property alias defaultProfileToggle: test.audioDefaultProfileToggle.checked dialogTitle: "Create New Audio Profile" dialogWidth: 600 dialogHeight: 300 @@ -56,6 +57,13 @@ MyDialogOkCancelPopup { } } } + Connections { + target: AudioTabController + onAudioProfileDefaultChanged: { + defaultProfileToggle = AudioTabController.audioProfileDefault + } + } + function openPopup() { audioNewProfileName.text = "" open() From b810be3eb825e884f08986eec3b9953853498a1c Mon Sep 17 00:00:00 2001 From: Vasily Date: Fri, 1 Feb 2019 19:28:18 +0100 Subject: [PATCH 12/17] Refactor PTT buttons into separate file The PttControllerConfigDialog was not used by anything else, hence it makes sense to move it into a more limited scope. The PttControllerConfigDialog file itself is only used by AudioPage and AccessibilityPage. Since the AccessibilityPage is going to be removed the PttControllerConfigDialog should be moved into the audio_page folder. --- src/res/qml/audio_page/AudioPage.qml | 57 +--------------- .../audio_page/push_to_talk/PttButtons.qml | 68 +++++++++++++++++++ 2 files changed, 70 insertions(+), 55 deletions(-) create mode 100644 src/res/qml/audio_page/push_to_talk/PttButtons.qml diff --git a/src/res/qml/audio_page/AudioPage.qml b/src/res/qml/audio_page/AudioPage.qml index 25f499e..1626c31 100644 --- a/src/res/qml/audio_page/AudioPage.qml +++ b/src/res/qml/audio_page/AudioPage.qml @@ -6,6 +6,7 @@ import ".." //common imports import "dialog_boxes" import "device_selector" import "proximity" +import "push_to_talk" MyStackViewPage { width: 1200 @@ -23,11 +24,6 @@ MyStackViewPage { id: audioDeleteProfileDialog } - PttControllerConfigDialog { - id: pttControllerConfigDialog - pttControllerConfigClass: AudioTabController - } - PttNewProfileDialog { id: pttNewProfileDialog } @@ -51,44 +47,7 @@ MyStackViewPage { spacing: 18 ProximityToggle { } - RowLayout { - MyToggleButton { - id: audioPttEnabledToggle - Layout.preferredWidth: 260 - text: "Push-to-Talk:" - onClicked: { - AudioTabController.pttEnabled = checked - } - } - MyToggleButton { - id: audioPttLeftControllerToggle - text: "Left Controller" - onClicked: { - AudioTabController.setPttLeftControllerEnabled(checked, false) - } - } - MyPushButton { - text: "Configure" - onClicked: { - pttControllerConfigDialog.openPopup(0) - } - } - Item { - Layout.fillWidth: true - } - MyToggleButton { - id: audioPttRightControllerToggle - text: "Right Controller" - onClicked: { - AudioTabController.setPttRightControllerEnabled(checked, false) - } - } - MyPushButton { - text: "Configure" - onClicked: { - pttControllerConfigDialog.openPopup(1) - } - } + PttButtons { } RowLayout { @@ -227,9 +186,6 @@ MyStackViewPage { Component.onCompleted: { reloadPttProfiles() reloadAudioProfiles() - audioPttEnabledToggle.checked = AudioTabController.pttEnabled - audioPttLeftControllerToggle.checked = AudioTabController.pttLeftControllerEnabled - audioPttRightControllerToggle.checked = AudioTabController.pttRightControllerEnabled audioPttShowNotificationToggle.checked = AudioTabController.pttShowNotification audioPttReverseToggle.checked = AudioTabController.micReversePtt } @@ -239,18 +195,9 @@ MyStackViewPage { onMicReversePttChanged: { audioPttReverseToggle.checked = AudioTabController.micReversePtt } - onPttEnabledChanged: { - audioPttEnabledToggle.checked = AudioTabController.pttEnabled - } onPttShowNotificationChanged: { audioPttShowNotificationToggle.checked = AudioTabController.pttShowNotification } - onPttLeftControllerEnabledChanged: { - audioPttLeftControllerToggle.checked = AudioTabController.pttLeftControllerEnabled - } - onPttRightControllerEnabledChanged: { - audioPttRightControllerToggle.checked = AudioTabController.pttRightControllerEnabled - } onPttProfilesUpdated: { reloadPttProfiles() } diff --git a/src/res/qml/audio_page/push_to_talk/PttButtons.qml b/src/res/qml/audio_page/push_to_talk/PttButtons.qml new file mode 100644 index 0000000..bc936b7 --- /dev/null +++ b/src/res/qml/audio_page/push_to_talk/PttButtons.qml @@ -0,0 +1,68 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 +import matzman666.advsettings 1.0 +import "../.." //common imports + +RowLayout { + PttControllerConfigDialog { + id: pttControllerConfigDialog + pttControllerConfigClass: AudioTabController + } + + MyToggleButton { + id: audioPttEnabledToggle + Layout.preferredWidth: 260 + text: "Push-to-Talk:" + onClicked: { + AudioTabController.pttEnabled = checked + } + } + MyToggleButton { + id: audioPttLeftControllerToggle + text: "Left Controller" + onClicked: { + AudioTabController.setPttLeftControllerEnabled(checked, false) + } + } + MyPushButton { + text: "Configure" + onClicked: { + pttControllerConfigDialog.openPopup(0) + } + } + Item { + Layout.fillWidth: true + } + MyToggleButton { + id: audioPttRightControllerToggle + text: "Right Controller" + onClicked: { + AudioTabController.setPttRightControllerEnabled(checked, false) + } + } + MyPushButton { + text: "Configure" + onClicked: { + pttControllerConfigDialog.openPopup(1) + } + } + Component.onCompleted: { + audioPttEnabledToggle.checked = AudioTabController.pttEnabled + audioPttLeftControllerToggle.checked = AudioTabController.pttLeftControllerEnabled + audioPttRightControllerToggle.checked = AudioTabController.pttRightControllerEnabled + + } + Connections { + target: AudioTabController + onPttEnabledChanged: { + audioPttEnabledToggle.checked = AudioTabController.pttEnabled + } + onPttLeftControllerEnabledChanged: { + audioPttLeftControllerToggle.checked = AudioTabController.pttLeftControllerEnabled + } + onPttRightControllerEnabledChanged: { + audioPttRightControllerToggle.checked = AudioTabController.pttRightControllerEnabled + } + } +} From bcd14cdddf958de7bd81302ccd75586bf3d4afb6 Mon Sep 17 00:00:00 2001 From: Vasily Date: Fri, 1 Feb 2019 19:40:26 +0100 Subject: [PATCH 13/17] Remove unneeded property from AudioNewProfileDialog The line was an invalid alias, crashing the application on launch. --- src/res/qml/audio_page/dialog_boxes/AudioNewProfileDialog.qml | 1 - 1 file changed, 1 deletion(-) diff --git a/src/res/qml/audio_page/dialog_boxes/AudioNewProfileDialog.qml b/src/res/qml/audio_page/dialog_boxes/AudioNewProfileDialog.qml index 30f59aa..d899de1 100644 --- a/src/res/qml/audio_page/dialog_boxes/AudioNewProfileDialog.qml +++ b/src/res/qml/audio_page/dialog_boxes/AudioNewProfileDialog.qml @@ -6,7 +6,6 @@ import "../.." //common imports MyDialogOkCancelPopup { id: audioNewProfileDialog - property alias defaultProfileToggle: test.audioDefaultProfileToggle.checked dialogTitle: "Create New Audio Profile" dialogWidth: 600 dialogHeight: 300 From e0bff66cecd1d1d3e31e56490ac7635cb06eb274 Mon Sep 17 00:00:00 2001 From: Vasily Date: Fri, 1 Feb 2019 19:49:12 +0100 Subject: [PATCH 14/17] Move other PTT buttons into the PttButtons component The other components were not organized together with the remaining Ptt buttons. This creates unnecessary separation between related buttons. --- src/res/qml/audio_page/AudioPage.qml | 26 ---- .../audio_page/push_to_talk/PttButtons.qml | 118 +++++++++++------- 2 files changed, 73 insertions(+), 71 deletions(-) diff --git a/src/res/qml/audio_page/AudioPage.qml b/src/res/qml/audio_page/AudioPage.qml index 1626c31..a54af80 100644 --- a/src/res/qml/audio_page/AudioPage.qml +++ b/src/res/qml/audio_page/AudioPage.qml @@ -49,25 +49,7 @@ MyStackViewPage { } PttButtons { } - RowLayout { - MyToggleButton { - id: audioPttShowNotificationToggle - Layout.leftMargin: 350 - text: "Show notification in HMD" - onCheckedChanged: { - AudioTabController.setPttShowNotification(checked, false) - } - } - MyToggleButton { - id: audioPttReverseToggle - Layout.leftMargin: 118 - text: "Push-to-Mute" - onClicked: { - AudioTabController.setMicReversePtt(checked, false) - } - } - } RowLayout { spacing: 10 @@ -186,18 +168,10 @@ MyStackViewPage { Component.onCompleted: { reloadPttProfiles() reloadAudioProfiles() - audioPttShowNotificationToggle.checked = AudioTabController.pttShowNotification - audioPttReverseToggle.checked = AudioTabController.micReversePtt } Connections { target: AudioTabController - onMicReversePttChanged: { - audioPttReverseToggle.checked = AudioTabController.micReversePtt - } - onPttShowNotificationChanged: { - audioPttShowNotificationToggle.checked = AudioTabController.pttShowNotification - } onPttProfilesUpdated: { reloadPttProfiles() } diff --git a/src/res/qml/audio_page/push_to_talk/PttButtons.qml b/src/res/qml/audio_page/push_to_talk/PttButtons.qml index bc936b7..9378cde 100644 --- a/src/res/qml/audio_page/push_to_talk/PttButtons.qml +++ b/src/res/qml/audio_page/push_to_talk/PttButtons.qml @@ -3,55 +3,77 @@ import QtQuick.Controls 2.0 import QtQuick.Layouts 1.3 import matzman666.advsettings 1.0 import "../.." //common imports +ColumnLayout { + RowLayout { + PttControllerConfigDialog { + id: pttControllerConfigDialog + pttControllerConfigClass: AudioTabController + } -RowLayout { - PttControllerConfigDialog { - id: pttControllerConfigDialog - pttControllerConfigClass: AudioTabController + MyToggleButton { + id: audioPttEnabledToggle + Layout.preferredWidth: 260 + text: "Push-to-Talk:" + onClicked: { + AudioTabController.pttEnabled = checked + } + } + MyToggleButton { + id: audioPttLeftControllerToggle + text: "Left Controller" + onClicked: { + AudioTabController.setPttLeftControllerEnabled(checked, false) + } + } + MyPushButton { + text: "Configure" + onClicked: { + pttControllerConfigDialog.openPopup(0) + } + } + Item { + Layout.fillWidth: true + } + MyToggleButton { + id: audioPttRightControllerToggle + text: "Right Controller" + onClicked: { + AudioTabController.setPttRightControllerEnabled(checked, false) + } + } + MyPushButton { + text: "Configure" + onClicked: { + pttControllerConfigDialog.openPopup(1) + } + } + } + RowLayout { + + MyToggleButton { + id: audioPttShowNotificationToggle + Layout.leftMargin: 350 + text: "Show notification in HMD" + onCheckedChanged: { + AudioTabController.setPttShowNotification(checked, false) + } + } + MyToggleButton { + id: audioPttReverseToggle + Layout.leftMargin: 118 + text: "Push-to-Mute" + onClicked: { + AudioTabController.setMicReversePtt(checked, false) + } + } } - MyToggleButton { - id: audioPttEnabledToggle - Layout.preferredWidth: 260 - text: "Push-to-Talk:" - onClicked: { - AudioTabController.pttEnabled = checked - } - } - MyToggleButton { - id: audioPttLeftControllerToggle - text: "Left Controller" - onClicked: { - AudioTabController.setPttLeftControllerEnabled(checked, false) - } - } - MyPushButton { - text: "Configure" - onClicked: { - pttControllerConfigDialog.openPopup(0) - } - } - Item { - Layout.fillWidth: true - } - MyToggleButton { - id: audioPttRightControllerToggle - text: "Right Controller" - onClicked: { - AudioTabController.setPttRightControllerEnabled(checked, false) - } - } - MyPushButton { - text: "Configure" - onClicked: { - pttControllerConfigDialog.openPopup(1) - } - } Component.onCompleted: { - audioPttEnabledToggle.checked = AudioTabController.pttEnabled - audioPttLeftControllerToggle.checked = AudioTabController.pttLeftControllerEnabled - audioPttRightControllerToggle.checked = AudioTabController.pttRightControllerEnabled - + audioPttEnabledToggle.checked = AudioTabController.pttEnabled + audioPttLeftControllerToggle.checked = AudioTabController.pttLeftControllerEnabled + audioPttRightControllerToggle.checked = AudioTabController.pttRightControllerEnabled + audioPttShowNotificationToggle.checked = AudioTabController.pttShowNotification + audioPttReverseToggle.checked = AudioTabController.micReversePtt } Connections { target: AudioTabController @@ -64,5 +86,11 @@ RowLayout { onPttRightControllerEnabledChanged: { audioPttRightControllerToggle.checked = AudioTabController.pttRightControllerEnabled } + onMicReversePttChanged: { + audioPttReverseToggle.checked = AudioTabController.micReversePtt + } + onPttShowNotificationChanged: { + audioPttShowNotificationToggle.checked = AudioTabController.pttShowNotification + } } } From 083e85cf59d190c27e87038b2811a75ef4b30958 Mon Sep 17 00:00:00 2001 From: Vasily Date: Fri, 1 Feb 2019 20:15:51 +0100 Subject: [PATCH 15/17] Refactor profile buttons and popups The popups have been moved inside the scope of the ProfileButtons. Since the popups open based on the location of their parents, they are currently opening underneath where they used to open. Since the profiles and ptt settings do not work anyway, this is seen as acceptable. --- advancedSettings.pro | 3 + src/res/qml/audio_page/AudioPage.qml | 180 +---------------- .../audio_page/profiles/ProfileButtons.qml | 185 ++++++++++++++++++ 3 files changed, 190 insertions(+), 178 deletions(-) create mode 100644 src/res/qml/audio_page/profiles/ProfileButtons.qml diff --git a/advancedSettings.pro b/advancedSettings.pro index 6cf56d6..2987a38 100644 --- a/advancedSettings.pro +++ b/advancedSettings.pro @@ -166,3 +166,6 @@ DISTFILES += \ src/res/qml/utilities_page/alarm_clock/* \ src/res/qml/audio_page/dialog_boxes/* \ src/res/qml/audio_page/device_selector/* + src/res/qml/audio_page/proximity/* + src/res/qml/audio_page/push_to_talk/* + src/res/qml/audio_page/profiles/* diff --git a/src/res/qml/audio_page/AudioPage.qml b/src/res/qml/audio_page/AudioPage.qml index a54af80..dbec66b 100644 --- a/src/res/qml/audio_page/AudioPage.qml +++ b/src/res/qml/audio_page/AudioPage.qml @@ -3,35 +3,15 @@ import QtQuick.Controls 2.0 import QtQuick.Layouts 1.3 import matzman666.advsettings 1.0 import ".." //common imports -import "dialog_boxes" import "device_selector" import "proximity" import "push_to_talk" +import "profiles" MyStackViewPage { width: 1200 headerText: "Audio Settings" - AudioMessageDialog { - id: audioMessageDialog - } - - PttDeleteProfileDialog { - id: pttDeleteProfileDialog - } - - AudioDeleteProfileDialog { - id: audioDeleteProfileDialog - } - - PttNewProfileDialog { - id: pttNewProfileDialog - } - - AudioNewProfileDialog { - id: audioNewProfileDialog - } - content: ColumnLayout { spacing: 24 @@ -49,164 +29,8 @@ MyStackViewPage { } PttButtons { } - - RowLayout { - spacing: 10 - - MyText { - Layout.preferredWidth: 150 - text: "Audio Profile:" - - } - - MyComboBox { - id: audioProfileComboBox - Layout.preferredWidth: 250 - model: [""] - onCurrentIndexChanged: { - if (currentIndex > 0) { - audioApplyProfileButton.enabled = true - audioDeleteProfileButton.enabled = true - } else { - audioApplyProfileButton.enabled = false - audioDeleteProfileButton.enabled = false - } - } - } - - MyPushButton { - id: audioApplyProfileButton - enabled: true - Layout.preferredWidth: 150 - text: "Apply" - onClicked: { - if (audioProfileComboBox.currentIndex > 0) { - AudioTabController.applyAudioProfile(audioProfileComboBox.currentIndex - 1) - } - } - } - - MyText { - text: "PTT Profile:" - Layout.preferredWidth: 150 - } - - MyComboBox { - id: pttProfileComboBox - Layout.preferredWidth: 250 - model: [""] - onCurrentIndexChanged: { - if (currentIndex > 0) { - pttApplyProfileButton.enabled = true - pttDeleteProfileButton.enabled = true - } else { - pttApplyProfileButton.enabled = false - pttDeleteProfileButton.enabled = false - } - } - } - - MyPushButton { - id: pttApplyProfileButton - enabled: true - Layout.preferredWidth: 150 - text: "Apply" - onClicked: { - if (pttProfileComboBox.currentIndex > 0) { - AudioTabController.applyPttProfile(pttProfileComboBox.currentIndex - 1) - } - } - } - } - RowLayout { - spacing: 18 - - MyPushButton { - id: audioDeleteProfileButton - enabled: true - Layout.preferredWidth: 200 - text: "Delete Profile" - onClicked: { - if (audioProfileComboBox.currentIndex > 0) { - audioDeleteProfileDialog.profileIndex = audioProfileComboBox.currentIndex - 1 - audioDeleteProfileDialog.open() - } - } - } - MyPushButton { - Layout.preferredWidth: 200 - text: "New Profile" - onClicked: { - audioNewProfileDialog.openPopup() - } - } - Item { - Layout.fillWidth: true - } - MyPushButton { - id: pttDeleteProfileButton - enabled: true - Layout.preferredWidth: 200 - text: "Delete Profile" - onClicked: { - if (pttProfileComboBox.currentIndex > 0) { - pttDeleteProfileDialog.profileIndex = pttProfileComboBox.currentIndex - 1 - pttDeleteProfileDialog.open() - } - } - } - MyPushButton { - Layout.preferredWidth: 200 - text: "New Profile" - onClicked: { - pttNewProfileDialog.openPopup() - } + ProfileButtons { } } - } - - Component.onCompleted: { - reloadPttProfiles() - reloadAudioProfiles() - } - - Connections { - target: AudioTabController - onPttProfilesUpdated: { - reloadPttProfiles() - } - onAudioProfilesUpdated: { - reloadAudioProfiles() - } - onAudioProfileAdded:{ - audioProfileComboBox.currentIndex = AudioTabController.getAudioProfileCount() - } - onPttProfileAdded:{ - pttProfileComboBox.currentIndex = AudioTabController.getPttProfileCount() - } - onDefaultProfileDisplay:{ - audioProfileComboBox.currentIndex = AudioTabController.getDefaultAudioProfileIndex() + 1 - } - } - } - - function reloadPttProfiles() { - var profiles = [""] - var profileCount = AudioTabController.getPttProfileCount() - for (var i = 0; i < profileCount; i++) { - profiles.push(AudioTabController.getPttProfileName(i)) - } - pttProfileComboBox.currentIndex = 0 - pttProfileComboBox.model = profiles - } - - function reloadAudioProfiles(){ - var profiles = [""] - var profileCount = AudioTabController.getAudioProfileCount() - for (var i = 0; i < profileCount; i++) { - profiles.push(AudioTabController.getAudioProfileName(i)) - } - audioProfileComboBox.currentIndex = 0; - audioProfileComboBox.model = profiles } } diff --git a/src/res/qml/audio_page/profiles/ProfileButtons.qml b/src/res/qml/audio_page/profiles/ProfileButtons.qml new file mode 100644 index 0000000..87c6cae --- /dev/null +++ b/src/res/qml/audio_page/profiles/ProfileButtons.qml @@ -0,0 +1,185 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 +import matzman666.advsettings 1.0 +import "../.." //common imports +import "../dialog_boxes" + +ColumnLayout { + AudioMessageDialog { + id: audioMessageDialog + } + + PttDeleteProfileDialog { + id: pttDeleteProfileDialog + } + + AudioDeleteProfileDialog { + id: audioDeleteProfileDialog + } + + PttNewProfileDialog { + id: pttNewProfileDialog + } + + AudioNewProfileDialog { + id: audioNewProfileDialog + } + + RowLayout { + spacing: 10 + + MyText { + Layout.preferredWidth: 150 + text: "Audio Profile:" + } + + MyComboBox { + id: audioProfileComboBox + Layout.preferredWidth: 250 + model: [""] + onCurrentIndexChanged: { + if (currentIndex > 0) { + audioApplyProfileButton.enabled = true + audioDeleteProfileButton.enabled = true + } else { + audioApplyProfileButton.enabled = false + audioDeleteProfileButton.enabled = false + } + } + } + + MyPushButton { + id: audioApplyProfileButton + enabled: true + Layout.preferredWidth: 150 + text: "Apply" + onClicked: { + if (audioProfileComboBox.currentIndex > 0) { + AudioTabController.applyAudioProfile( + audioProfileComboBox.currentIndex - 1) + } + } + } + + MyText { + text: "PTT Profile:" + Layout.preferredWidth: 150 + } + + MyComboBox { + id: pttProfileComboBox + Layout.preferredWidth: 250 + model: [""] + onCurrentIndexChanged: { + if (currentIndex > 0) { + pttApplyProfileButton.enabled = true + pttDeleteProfileButton.enabled = true + } else { + pttApplyProfileButton.enabled = false + pttDeleteProfileButton.enabled = false + } + } + } + + MyPushButton { + id: pttApplyProfileButton + enabled: true + Layout.preferredWidth: 150 + text: "Apply" + onClicked: { + if (pttProfileComboBox.currentIndex > 0) { + AudioTabController.applyPttProfile( + pttProfileComboBox.currentIndex - 1) + } + } + } + } + RowLayout { + spacing: 18 + + MyPushButton { + id: audioDeleteProfileButton + enabled: true + Layout.preferredWidth: 200 + text: "Delete Profile" + onClicked: { + if (audioProfileComboBox.currentIndex > 0) { + audioDeleteProfileDialog.profileIndex = audioProfileComboBox.currentIndex - 1 + audioDeleteProfileDialog.open() + } + } + } + MyPushButton { + Layout.preferredWidth: 200 + text: "New Profile" + onClicked: { + audioNewProfileDialog.openPopup() + } + } + Item { + Layout.fillWidth: true + } + MyPushButton { + id: pttDeleteProfileButton + enabled: true + Layout.preferredWidth: 200 + text: "Delete Profile" + onClicked: { + if (pttProfileComboBox.currentIndex > 0) { + pttDeleteProfileDialog.profileIndex = pttProfileComboBox.currentIndex - 1 + pttDeleteProfileDialog.open() + } + } + } + MyPushButton { + Layout.preferredWidth: 200 + text: "New Profile" + onClicked: { + pttNewProfileDialog.openPopup() + } + } + } + Component.onCompleted: { + reloadPttProfiles() + reloadAudioProfiles() + } + Connections { + target: AudioTabController + onPttProfilesUpdated: { + reloadPttProfiles() + } + onAudioProfilesUpdated: { + reloadAudioProfiles() + } + onAudioProfileAdded: { + audioProfileComboBox.currentIndex = AudioTabController.getAudioProfileCount() + } + onPttProfileAdded: { + pttProfileComboBox.currentIndex = AudioTabController.getPttProfileCount() + } + onDefaultProfileDisplay: { + audioProfileComboBox.currentIndex = AudioTabController.getDefaultAudioProfileIndex( + ) + 1 + } + } + function reloadPttProfiles() { + var profiles = [""] + var profileCount = AudioTabController.getPttProfileCount() + for (var i = 0; i < profileCount; i++) { + profiles.push(AudioTabController.getPttProfileName(i)) + } + pttProfileComboBox.currentIndex = 0 + pttProfileComboBox.model = profiles + } + + function reloadAudioProfiles() { + var profiles = [""] + var profileCount = AudioTabController.getAudioProfileCount() + for (var i = 0; i < profileCount; i++) { + profiles.push(AudioTabController.getAudioProfileName(i)) + } + audioProfileComboBox.currentIndex = 0 + audioProfileComboBox.model = profiles + } +} From b01425d7457a0784439d90598e8029acb909c45b Mon Sep 17 00:00:00 2001 From: Vasily Date: Fri, 1 Feb 2019 20:24:02 +0100 Subject: [PATCH 16/17] Fix qml files not being added in Qt Creator The missing backslashes continued the line, without them the additional lines were not being included in the += call. --- advancedSettings.pro | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/advancedSettings.pro b/advancedSettings.pro index 2987a38..d17cf62 100644 --- a/advancedSettings.pro +++ b/advancedSettings.pro @@ -165,7 +165,7 @@ DISTFILES += \ src/res/qml/utilities_page/desktop_size/* \ src/res/qml/utilities_page/alarm_clock/* \ src/res/qml/audio_page/dialog_boxes/* \ - src/res/qml/audio_page/device_selector/* - src/res/qml/audio_page/proximity/* - src/res/qml/audio_page/push_to_talk/* - src/res/qml/audio_page/profiles/* + src/res/qml/audio_page/device_selector/* \ + src/res/qml/audio_page/proximity/* \ + src/res/qml/audio_page/push_to_talk/* \ + src/res/qml/audio_page/profiles/* \ From 1a1697eafef71556ff4fd9bf100aaca6069d3a39 Mon Sep 17 00:00:00 2001 From: Vasily Date: Fri, 1 Feb 2019 20:40:14 +0100 Subject: [PATCH 17/17] Update AudioPage image Some things have been knocked out of alignment because they were manually adjusted using integer literal values. --- docs/screenshots/AudioPage.png | Bin 109753 -> 70555 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/screenshots/AudioPage.png b/docs/screenshots/AudioPage.png index 9b3bd13305af998105579491909fcf0009ee0351..eedc31c0e91cec5291f99a41c0430e4640816a23 100644 GIT binary patch literal 70555 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 SrB%%n{9}i9vU-B@P5BqWiV*Ms literal 109753 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 A`2YX_