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) + } + } + } +}