diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..2c1b613 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,95 @@ +# Common settings that generally should always be used with your language specific settings + +# Auto detect text files and perform LF normalization +# http://davidlaing.com/2012/09/19/customise-your-gitattributes-to-become-a-git-ninja/ +* text=auto + +# +# The above will handle all files NOT found below +# + +# Documents +*.doc diff=astextplain +*.DOC diff=astextplain +*.docx diff=astextplain +*.DOCX diff=astextplain +*.dot diff=astextplain +*.DOT diff=astextplain +*.pdf diff=astextplain +*.PDF diff=astextplain +*.rtf diff=astextplain +*.RTF diff=astextplain +*.md text +*.tex text +*.adoc text +*.textile text +*.mustache text +*.csv text +*.tab text +*.tsv text +*.sql text + +# Graphics +*.png binary +*.jpg binary +*.jpeg binary +*.gif binary +*.tif binary +*.tiff binary +*.ico binary +# SVG treated as an asset (binary) by default. If you want to treat it as text, +# comment-out the following line and uncomment the line after. +*.svg binary +#*.svg text +*.eps binary + +# +# Exclude files from exporting +# + +.gitattributes export-ignore +.gitignore export-ignore + +#sources +*.c text diff=cpp +*.cc text diff=cpp +*.cxx text diff=cpp +*.cpp text diff=cpp +*.c++ text diff=cpp +*.hpp text diff=cpp +*.h text diff=cpp +*.h++ text diff=cpp +*.hh text diff=cpp + +# Compiled Object files +*.slo binary +*.lo binary +*.o binary +*.obj binary + +# Precompiled Headers +*.gch binary +*.pch binary + +# Compiled Dynamic libraries +*.so binary +*.dylib binary +*.dll binary + +# Compiled Static libraries +*.lai binary +*.la binary +*.a binary +*.lib binary + +# Executables +*.exe binary +*.out binary +*.app binary + +#Qt Specific +*.qml text + +#Linux Shell Scripts +#Windows Subsystem for Linux will not run CLRF files. +*.sh text eof=lf diff --git a/advancedSettings.pro b/advancedSettings.pro index fd7a986..b41ec3c 100644 --- a/advancedSettings.pro +++ b/advancedSettings.pro @@ -119,39 +119,16 @@ unix:DESTDIR = bin/linux/AdvancedSettings DISTFILES += \ src/res/sounds/alarm01.wav \ - src/res/qml/ptt_notification.png \ - src/res/battery_0.png \ - src/res/battery_1.png \ - src/res/battery_2.png \ - src/res/battery_3.png \ - src/res/battery_4.png \ - src/res/battery_5.png \ - src/res/thumbicon.png \ - src/res/qml/backarrow.svg \ - src/res/qml/check.svg \ - src/res/qml/mic_off.svg \ - src/res/qml/mic_on.svg \ - src/res/qml/ptt_notification.svg \ - src/res/qml/speaker_off.svg \ - src/res/qml/speaker_on.svg \ + src/res/img/audio/microphone/ptt_notification.png \ + src/res/img/audio/microphone/ptt_notification.svg \ + src/res/img/battery/* \ + src/res/img/icons/* \ 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 \ - src/res/qml/mainwidget.qml \ - src/res/qml/MyComboBox.qml \ - src/res/qml/MyDialogOkCancelPopup.qml \ - src/res/qml/MyDialogOkPopup.qml \ - src/res/qml/MyPushButton.qml \ - src/res/qml/MyPushButton2.qml \ - src/res/qml/MyResources.qml \ - src/res/qml/MySlider.qml \ - src/res/qml/MyStackViewPage.qml \ - src/res/qml/MyText.qml \ - src/res/qml/MyTextField.qml \ - src/res/qml/MyToggleButton.qml \ src/res/qml/PlayspacePage.qml \ src/res/qml/PttControllerConfigDialog.qml \ src/res/qml/RevivePage.qml \ @@ -161,7 +138,14 @@ DISTFILES += \ src/res/qml/SteamVRPage.qml \ src/res/qml/utilities_page/* \ src/res/qml/utilities_page/media_keys/* \ - 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/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/common/* \ + +RESOURCES += src/res/resources.qrc diff --git a/build_scripts/linux/format b/build_scripts/linux/format.sh old mode 100755 new mode 100644 similarity index 100% rename from build_scripts/linux/format rename to build_scripts/linux/format.sh diff --git a/build_scripts/linux/verify_formatting b/build_scripts/linux/verify_formatting.sh old mode 100755 new mode 100644 similarity index 100% rename from build_scripts/linux/verify_formatting rename to build_scripts/linux/verify_formatting.sh diff --git a/docs/screenshots/AudioPage.png b/docs/screenshots/AudioPage.png index 9b3bd13..eedc31c 100644 Binary files a/docs/screenshots/AudioPage.png and b/docs/screenshots/AudioPage.png differ diff --git a/src/main.cpp b/src/main.cpp index cbc85c6..19d7670 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -425,7 +425,7 @@ int main( int argc, char* argv[] ) QString path = QStandardPaths::locate( QStandardPaths::AppDataLocation, - QStringLiteral( "res/qml/mainwidget.qml" ) ); + QStringLiteral( "res/qml/common/mainwidget.qml" ) ); QQmlComponent component( &qmlEngine, QUrl::fromLocalFile( path ) ); auto errors = component.errors(); diff --git a/src/overlaycontroller.cpp b/src/overlaycontroller.cpp index 3f884b5..485003d 100644 --- a/src/overlaycontroller.cpp +++ b/src/overlaycontroller.cpp @@ -332,9 +332,9 @@ void OverlayController::SetWidget( QQuickItem* quickItem, m_ulOverlayHandle, vr::VROverlayFlags_SendVRSmoothScrollEvents, true ); - QString thumbIconPath - = QStandardPaths::locate( QStandardPaths::AppDataLocation, - QStringLiteral( "res/thumbicon.png" ) ); + QString thumbIconPath = QStandardPaths::locate( + QStandardPaths::AppDataLocation, + QStringLiteral( "res/img/icons/thumbicon.png" ) ); if ( QFile::exists( thumbIconPath ) ) { vr::VROverlay()->SetOverlayFromFile( diff --git a/src/res/qml/utilities_page/media_keys/outline_play_pause_white_24dp.svg b/src/res/img/audio/media_keys/outline_play_pause_white_24dp.svg similarity index 100% rename from src/res/qml/utilities_page/media_keys/outline_play_pause_white_24dp.svg rename to src/res/img/audio/media_keys/outline_play_pause_white_24dp.svg diff --git a/src/res/qml/utilities_page/media_keys/outline_skip_next_white_24dp.svg b/src/res/img/audio/media_keys/outline_skip_next_white_24dp.svg similarity index 100% rename from src/res/qml/utilities_page/media_keys/outline_skip_next_white_24dp.svg rename to src/res/img/audio/media_keys/outline_skip_next_white_24dp.svg diff --git a/src/res/qml/utilities_page/media_keys/outline_skip_previous_white_24dp.svg b/src/res/img/audio/media_keys/outline_skip_previous_white_24dp.svg similarity index 100% rename from src/res/qml/utilities_page/media_keys/outline_skip_previous_white_24dp.svg rename to src/res/img/audio/media_keys/outline_skip_previous_white_24dp.svg diff --git a/src/res/qml/utilities_page/media_keys/outline_stop_white_24dp.svg b/src/res/img/audio/media_keys/outline_stop_white_24dp.svg similarity index 100% rename from src/res/qml/utilities_page/media_keys/outline_stop_white_24dp.svg rename to src/res/img/audio/media_keys/outline_stop_white_24dp.svg diff --git a/src/res/qml/mic_off.svg b/src/res/img/audio/microphone/mic_off.svg similarity index 100% rename from src/res/qml/mic_off.svg rename to src/res/img/audio/microphone/mic_off.svg diff --git a/src/res/qml/mic_on.svg b/src/res/img/audio/microphone/mic_on.svg similarity index 100% rename from src/res/qml/mic_on.svg rename to src/res/img/audio/microphone/mic_on.svg diff --git a/src/res/qml/ptt_notification.png b/src/res/img/audio/microphone/ptt_notification.png similarity index 100% rename from src/res/qml/ptt_notification.png rename to src/res/img/audio/microphone/ptt_notification.png diff --git a/src/res/qml/ptt_notification.svg b/src/res/img/audio/microphone/ptt_notification.svg similarity index 100% rename from src/res/qml/ptt_notification.svg rename to src/res/img/audio/microphone/ptt_notification.svg diff --git a/src/res/qml/speaker_off.svg b/src/res/img/audio/speaker/speaker_off.svg similarity index 100% rename from src/res/qml/speaker_off.svg rename to src/res/img/audio/speaker/speaker_off.svg diff --git a/src/res/qml/speaker_on.svg b/src/res/img/audio/speaker/speaker_on.svg similarity index 100% rename from src/res/qml/speaker_on.svg rename to src/res/img/audio/speaker/speaker_on.svg diff --git a/src/res/battery_0.png b/src/res/img/battery/battery_0.png similarity index 100% rename from src/res/battery_0.png rename to src/res/img/battery/battery_0.png diff --git a/src/res/battery_1.png b/src/res/img/battery/battery_1.png similarity index 100% rename from src/res/battery_1.png rename to src/res/img/battery/battery_1.png diff --git a/src/res/battery_2.png b/src/res/img/battery/battery_2.png similarity index 100% rename from src/res/battery_2.png rename to src/res/img/battery/battery_2.png diff --git a/src/res/battery_3.png b/src/res/img/battery/battery_3.png similarity index 100% rename from src/res/battery_3.png rename to src/res/img/battery/battery_3.png diff --git a/src/res/battery_4.png b/src/res/img/battery/battery_4.png similarity index 100% rename from src/res/battery_4.png rename to src/res/img/battery/battery_4.png diff --git a/src/res/battery_5.png b/src/res/img/battery/battery_5.png similarity index 100% rename from src/res/battery_5.png rename to src/res/img/battery/battery_5.png diff --git a/src/res/qml/backarrow.svg b/src/res/img/common/backarrow.svg similarity index 100% rename from src/res/qml/backarrow.svg rename to src/res/img/common/backarrow.svg diff --git a/src/res/qml/check.svg b/src/res/img/common/check.svg similarity index 100% rename from src/res/qml/check.svg rename to src/res/img/common/check.svg diff --git a/src/res/thumbicon.png b/src/res/img/icons/thumbicon.png similarity index 100% rename from src/res/thumbicon.png rename to src/res/img/icons/thumbicon.png diff --git a/src/res/qml/AccessibilityPage.qml b/src/res/qml/AccessibilityPage.qml index 7e59d8b..0a458eb 100644 --- a/src/res/qml/AccessibilityPage.qml +++ b/src/res/qml/AccessibilityPage.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 "common" MyStackViewPage { diff --git a/src/res/qml/AudioPage.qml b/src/res/qml/AudioPage.qml deleted file mode 100644 index d8ea895..0000000 --- a/src/res/qml/AudioPage.qml +++ /dev/null @@ -1,741 +0,0 @@ -import QtQuick 2.7 -import QtQuick.Controls 2.0 -import QtQuick.Layouts 1.3 -import matzman666.advsettings 1.0 - - -MyStackViewPage { - width: 1200 - headerText: "Audio Settings" - - property bool componentCompleted: false - - - MyDialogOkPopup { - id: audioMessageDialog - function showMessage(title, text) { - dialogTitle = title - dialogText = text - open() - } - } - - 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) - } - } - } - - 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 - } - } - } - - PttControllerConfigDialog { - id: pttControllerConfigDialog - pttControllerConfigClass: AudioTabController - } - - 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() - } - } - - - 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 { - 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 { - 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) - } - } - } - } - - 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) - } - } - } - } - 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) - } - } - } - } - - 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) - } - } - } - } - 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) - } - } - } - MyToggleButton { - id: audioMuteProximitySensorToggle - Layout.preferredWidth: 600 - text: "Proximity Sensor Mutes/Unmutes Microphone" - onClicked: { - AudioTabController.setMicProximitySensorCanMute(checked, false) - } - } - 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) - } - } - } - 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 - - 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: { - 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 - 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.currentIndex = AudioTabController.mirrorDeviceIndex + 1 - } - 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 - 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 - audioMicNameCombo.currentIndex = AudioTabController.micDeviceIndex - } - reloadPttProfiles() - reloadAudioProfiles() - audioPttEnabledToggle.checked = AudioTabController.pttEnabled - audioPttLeftControllerToggle.checked = AudioTabController.pttLeftControllerEnabled - audioPttRightControllerToggle.checked = AudioTabController.pttRightControllerEnabled - audioPttShowNotificationToggle.checked = AudioTabController.pttShowNotification - audioPttReverseToggle.checked = AudioTabController.micReversePtt - audioDefaultProfileToggle.checked = AudioTabController.audioProfileDefault - componentCompleted = true - } - - Connections { - target: AudioTabController - onPlaybackDeviceIndexChanged: { - audioPlaybackNameCombo.currentIndex = index - } - onMirrorDeviceIndexChanged: { - if (index < 0) { - audioMirrorNameCombo.currentIndex = 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.currentIndex = index + 1 - } - } - onMirrorVolumeChanged: { - audioMirrorVolumeSlider.value = AudioTabController.mirrorVolume - } - onMirrorMutedChanged: { - audioMirrorMuteToggle.checked = AudioTabController.mirrorMuted - } - onMicDeviceIndexChanged: { - if (index < 0) { - audioMicNameCombo.currentIndex = 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 - audioMicNameCombo.currentIndex = index - } - } - onMicVolumeChanged: { - audioMicVolumeSlider.value = AudioTabController.micVolume - } - onMicMutedChanged: { - audioMicMuteToggle.checked = AudioTabController.micMuted - } - onMicProximitySensorCanMuteChanged: { - audioMuteProximitySensorToggle.checked = AudioTabController.micProximitySensorCanMute - } - onMicReversePttChanged: { - audioPttReverseToggle.checked = AudioTabController.micReversePtt - } - onPttEnabledChanged: { - audioPttEnabledToggle.checked = AudioTabController.pttEnabled - } - onPttActiveChanged: { - - } - onPttShowNotificationChanged: { - audioPttShowNotificationToggle.checked = AudioTabController.pttShowNotification - } - onPttLeftControllerEnabledChanged: { - audioPttLeftControllerToggle.checked = AudioTabController.pttLeftControllerEnabled - } - onPttRightControllerEnabledChanged: { - audioPttRightControllerToggle.checked = AudioTabController.pttRightControllerEnabled - } - onAudioProfileDefaultChanged: { - audioDefaultProfileToggle.checked = AudioTabController.audioProfileDefault - } - onPttProfilesUpdated: { - reloadPttProfiles() - } - onAudioProfilesUpdated: { - reloadAudioProfiles() - } - onAudioProfileAdded:{ - audioProfileComboBox.currentIndex = AudioTabController.getAudioProfileCount() - } - onPttProfileAdded:{ - pttProfileComboBox.currentIndex = AudioTabController.getPttProfileCount() - } - onDefaultProfileDisplay:{ - audioProfileComboBox.currentIndex = AudioTabController.getDefaultAudioProfileIndex() + 1 - } - - - 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 - 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.currentIndex = AudioTabController.mirrorDeviceIndex + 1 - } - } - 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 - audioMicMuteToggle.enabled = false - } else { - audioMicVolumeMinusButton.enabled = true - audioMicVolumeSlider.enabled = true - audioMicVolumePlusButton.enabled = true - audioMicMuteToggle.enabled = true - audioMicVolumeSlider.value = AudioTabController.micVolume - audioMicMuteToggle.checked = AudioTabController.micMuted - audioMicNameCombo.currentIndex = AudioTabController.micDeviceIndex - } - } - } - } - - 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/ChaperonePage.qml b/src/res/qml/ChaperonePage.qml index 6fbe5ef..a7e60a2 100644 --- a/src/res/qml/ChaperonePage.qml +++ b/src/res/qml/ChaperonePage.qml @@ -4,6 +4,7 @@ import QtQuick.Layouts 1.3 import QtQuick.Dialogs 1.2 import matzman666.advsettings 1.0 import "." // QTBUG-34418, singletons require explicit import to load qmldir file +import "common" MyStackViewPage { headerText: "Chaperone Settings" diff --git a/src/res/qml/ChaperoneWarningsPage.qml b/src/res/qml/ChaperoneWarningsPage.qml index 1064838..426b45b 100644 --- a/src/res/qml/ChaperoneWarningsPage.qml +++ b/src/res/qml/ChaperoneWarningsPage.qml @@ -4,6 +4,7 @@ import QtQuick.Layouts 1.3 import QtQuick.Dialogs 1.2 import matzman666.advsettings 1.0 import "." // QTBUG-34418, singletons require explicit import to load qmldir file +import "common" MyStackViewPage { headerText: "Chaperone Proximity Warning Settings" diff --git a/src/res/qml/FixFloorPage.qml b/src/res/qml/FixFloorPage.qml index aa1704f..6e2889a 100644 --- a/src/res/qml/FixFloorPage.qml +++ b/src/res/qml/FixFloorPage.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 "common" MyStackViewPage { diff --git a/src/res/qml/PlayspacePage.qml b/src/res/qml/PlayspacePage.qml index bd58685..a60b094 100644 --- a/src/res/qml/PlayspacePage.qml +++ b/src/res/qml/PlayspacePage.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 "common" MyStackViewPage { diff --git a/src/res/qml/RevivePage.qml b/src/res/qml/RevivePage.qml index 46f1c93..b85783b 100644 --- a/src/res/qml/RevivePage.qml +++ b/src/res/qml/RevivePage.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 "common" MyStackViewPage { headerText: "Revive Settings" diff --git a/src/res/qml/RootPage.qml b/src/res/qml/RootPage.qml index 1a02e6b..8f59a1b 100644 --- a/src/res/qml/RootPage.qml +++ b/src/res/qml/RootPage.qml @@ -3,7 +3,9 @@ import QtQuick.Controls 2.0 import QtQuick.Layouts 1.3 import matzman666.advsettings 1.0 import "." // QTBUG-34418, singletons require explicit import to load qmldir file +import "common" import "utilities_page" +import "audio_page" MyStackViewPage { id: rootPage @@ -342,7 +344,7 @@ MyStackViewPage { Layout.leftMargin: 12 checkable: true contentItem: Image { - source: parent.checked ? "mic_off.svg" : "mic_on.svg" + source: parent.checked ? "qrc:/microphone/off" : "qrc:/microphone/on" sourceSize.width: 32 sourceSize.height: 32 anchors.fill: parent diff --git a/src/res/qml/SettingsPage.qml b/src/res/qml/SettingsPage.qml index 9f067e2..250edf3 100644 --- a/src/res/qml/SettingsPage.qml +++ b/src/res/qml/SettingsPage.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 "common" MyStackViewPage { headerText: "Application Settings" diff --git a/src/res/qml/StatisticsPage.qml b/src/res/qml/StatisticsPage.qml index 5d2773e..fb18b40 100644 --- a/src/res/qml/StatisticsPage.qml +++ b/src/res/qml/StatisticsPage.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 "common" MyStackViewPage { diff --git a/src/res/qml/SteamVRPage.qml b/src/res/qml/SteamVRPage.qml index 4119631..7230f55 100644 --- a/src/res/qml/SteamVRPage.qml +++ b/src/res/qml/SteamVRPage.qml @@ -2,6 +2,7 @@ import QtQuick 2.7 import QtQuick.Controls 2.0 import QtQuick.Layouts 1.3 import matzman666.advsettings 1.0 +import "common" MyStackViewPage { id: myStackViewPage1 diff --git a/src/res/qml/audio_page/AudioPage.qml b/src/res/qml/audio_page/AudioPage.qml new file mode 100644 index 0000000..54c6efa --- /dev/null +++ b/src/res/qml/audio_page/AudioPage.qml @@ -0,0 +1,36 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 +import matzman666.advsettings 1.0 +import "../common" +import "device_selector" +import "proximity" +import "push_to_talk" +import "profiles" + +MyStackViewPage { + width: 1200 + headerText: "Audio Settings" + + content: ColumnLayout { + spacing: 24 + + AudioDeviceSelector { + } + + MirrorVolumeSlider { + } + + MicVolumeSlider { + } + ColumnLayout { + spacing: 18 + ProximityToggle { + } + PttButtons { + } + ProfileButtons { + } + } + } +} 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..34b8861 --- /dev/null +++ b/src/res/qml/audio_page/device_selector/AudioDeviceSelector.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" + +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 (deviceIndex >= 0) { + AudioTabController.setPlaybackDeviceIndex(deviceIndex, false) + } + setShownAudioDevice(index) + } + } + Component.onCompleted: { + audioPlaybackNameCombo.devices = getAudioDeviceList() + setShownAudioDevice(AudioTabController.playbackDeviceIndex) + } + + Connections { + target: AudioTabController + onPlaybackDeviceIndexChanged: { + 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 { + deviceIndex = index + } + } +} 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..53e8613 --- /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" + +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 (deviceIndex >= 0) { + 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) + } + } +} 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..a9971a6 --- /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" + +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 ? "qrc:/microphone/off" : "qrc:/microphone/on" + 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/MirrorDeviceSelector.qml b/src/res/qml/audio_page/device_selector/MirrorDeviceSelector.qml new file mode 100644 index 0000000..d27acde --- /dev/null +++ b/src/res/qml/audio_page/device_selector/MirrorDeviceSelector.qml @@ -0,0 +1,74 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 +import matzman666.advsettings 1.0 +import "../../common" + +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: deviceText + Layout.preferredWidth: 260 + } + MyComboBox { + id: selector + Layout.maximumWidth: 850 + Layout.minimumWidth: 850 + Layout.preferredWidth: 850 + onActivated: { + 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 + } + } +} 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..b90199a --- /dev/null +++ b/src/res/qml/audio_page/device_selector/MirrorVolumeSlider.qml @@ -0,0 +1,129 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 +import matzman666.advsettings 1.0 +import "../../common" +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 ? "qrc:/speaker/off" : "qrc:/speaker/on" + 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 + } + 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 + } + } + } +} 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..7067252 --- /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" + +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..1753410 --- /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" + +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..1b03952 --- /dev/null +++ b/src/res/qml/audio_page/dialog_boxes/AudioNewProfileDialog.qml @@ -0,0 +1,70 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 +import matzman666.advsettings 1.0 +import "../../common" + +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.") + } + } + } + Connections { + target: AudioTabController + onAudioProfileDefaultChanged: { + defaultProfileToggle = AudioTabController.audioProfileDefault + } + } + + 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..ad28477 --- /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" + +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..a2d293f --- /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" + +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() + } +} 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..b7c3d84 --- /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" +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 + } +} 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..d6734c8 --- /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" + +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 + } + } +} 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..37e84e6 --- /dev/null +++ b/src/res/qml/audio_page/push_to_talk/PttButtons.qml @@ -0,0 +1,97 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 +import matzman666.advsettings 1.0 +import "../../common" + +ColumnLayout { + 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) + } + } + } + + Component.onCompleted: { + audioPttEnabledToggle.checked = AudioTabController.pttEnabled + audioPttLeftControllerToggle.checked = AudioTabController.pttLeftControllerEnabled + audioPttRightControllerToggle.checked = AudioTabController.pttRightControllerEnabled + audioPttShowNotificationToggle.checked = AudioTabController.pttShowNotification + audioPttReverseToggle.checked = AudioTabController.micReversePtt + } + Connections { + target: AudioTabController + onPttEnabledChanged: { + audioPttEnabledToggle.checked = AudioTabController.pttEnabled + } + onPttLeftControllerEnabledChanged: { + audioPttLeftControllerToggle.checked = AudioTabController.pttLeftControllerEnabled + } + onPttRightControllerEnabledChanged: { + audioPttRightControllerToggle.checked = AudioTabController.pttRightControllerEnabled + } + onMicReversePttChanged: { + audioPttReverseToggle.checked = AudioTabController.micReversePtt + } + onPttShowNotificationChanged: { + audioPttShowNotificationToggle.checked = AudioTabController.pttShowNotification + } + } +} diff --git a/src/res/qml/LineSeparator.qml b/src/res/qml/common/LineSeparator.qml similarity index 100% rename from src/res/qml/LineSeparator.qml rename to src/res/qml/common/LineSeparator.qml diff --git a/src/res/qml/MyComboBox.qml b/src/res/qml/common/MyComboBox.qml similarity index 100% rename from src/res/qml/MyComboBox.qml rename to src/res/qml/common/MyComboBox.qml diff --git a/src/res/qml/MyDialogOkCancelPopup.qml b/src/res/qml/common/MyDialogOkCancelPopup.qml similarity index 100% rename from src/res/qml/MyDialogOkCancelPopup.qml rename to src/res/qml/common/MyDialogOkCancelPopup.qml diff --git a/src/res/qml/MyDialogOkPopup.qml b/src/res/qml/common/MyDialogOkPopup.qml similarity index 100% rename from src/res/qml/MyDialogOkPopup.qml rename to src/res/qml/common/MyDialogOkPopup.qml diff --git a/src/res/qml/MyPushButton.qml b/src/res/qml/common/MyPushButton.qml similarity index 100% rename from src/res/qml/MyPushButton.qml rename to src/res/qml/common/MyPushButton.qml diff --git a/src/res/qml/MyPushButton2.qml b/src/res/qml/common/MyPushButton2.qml similarity index 100% rename from src/res/qml/MyPushButton2.qml rename to src/res/qml/common/MyPushButton2.qml diff --git a/src/res/qml/MyResources.qml b/src/res/qml/common/MyResources.qml similarity index 100% rename from src/res/qml/MyResources.qml rename to src/res/qml/common/MyResources.qml diff --git a/src/res/qml/MySlider.qml b/src/res/qml/common/MySlider.qml similarity index 100% rename from src/res/qml/MySlider.qml rename to src/res/qml/common/MySlider.qml diff --git a/src/res/qml/MyStackViewPage.qml b/src/res/qml/common/MyStackViewPage.qml similarity index 95% rename from src/res/qml/MyStackViewPage.qml rename to src/res/qml/common/MyStackViewPage.qml index b30140a..02a741a 100644 --- a/src/res/qml/MyStackViewPage.qml +++ b/src/res/qml/common/MyStackViewPage.qml @@ -2,6 +2,8 @@ import QtQuick 2.7 import QtQuick.Controls 2.0 import QtQuick.Layouts 1.2 import "." // QTBUG-34418, singletons require explicit import to load qmldir file +// Needed for MyResources in the default folder. +import ".." Rectangle { color: "#1b2939" @@ -24,7 +26,7 @@ Rectangle { enabled: headerShowBackButton opacity: headerShowBackButton ? 1.0 : 0.0 contentItem: Image { - source: "backarrow.svg" + source: "qrc:/common/backarrow" sourceSize.width: 50 sourceSize.height: 50 anchors.fill: parent diff --git a/src/res/qml/MyText.qml b/src/res/qml/common/MyText.qml similarity index 100% rename from src/res/qml/MyText.qml rename to src/res/qml/common/MyText.qml diff --git a/src/res/qml/MyTextField.qml b/src/res/qml/common/MyTextField.qml similarity index 100% rename from src/res/qml/MyTextField.qml rename to src/res/qml/common/MyTextField.qml diff --git a/src/res/qml/MyToggleButton.qml b/src/res/qml/common/MyToggleButton.qml similarity index 92% rename from src/res/qml/MyToggleButton.qml rename to src/res/qml/common/MyToggleButton.qml index 0dd6961..99126d5 100644 --- a/src/res/qml/MyToggleButton.qml +++ b/src/res/qml/common/MyToggleButton.qml @@ -1,7 +1,8 @@ import QtQuick 2.7 import QtQuick.Controls 2.0 import "." // QTBUG-34418, singletons require explicit import to load qmldir file - +// Needed for MyResources in the default folder. +import ".." CheckBox { checkState: Qt.Checked @@ -30,7 +31,7 @@ CheckBox { height: 28 x: (parent.width - width) / 2 y: (parent.height - height) / 2 - source: "check.svg" + source: "qrc:/common/box_checkmark" sourceSize.width: width sourceSize.height: height visible: parent.parent.checked diff --git a/src/res/qml/PttControllerConfigDialog.qml b/src/res/qml/common/PttControllerConfigDialog.qml similarity index 100% rename from src/res/qml/PttControllerConfigDialog.qml rename to src/res/qml/common/PttControllerConfigDialog.qml diff --git a/src/res/qml/mainwidget.qml b/src/res/qml/common/mainwidget.qml similarity index 97% rename from src/res/qml/mainwidget.qml rename to src/res/qml/common/mainwidget.qml index e5f8f54..3853a84 100644 --- a/src/res/qml/mainwidget.qml +++ b/src/res/qml/common/mainwidget.qml @@ -1,7 +1,9 @@ import QtQuick 2.7 import QtQuick.Controls 2.0 import QtQuick.Layouts 1.0 -import "utilities_page" +import ".." +import "../utilities_page" +import "../audio_page" Rectangle { id: root diff --git a/src/res/qml/qmldir b/src/res/qml/qmldir index ec338c0..0c28c5d 100644 --- a/src/res/qml/qmldir +++ b/src/res/qml/qmldir @@ -1 +1 @@ -singleton MyResources 1.0 MyResources.qml \ No newline at end of file +singleton MyResources 1.0 common/MyResources.qml diff --git a/src/res/qml/utilities_page/UtilitiesPage.qml b/src/res/qml/utilities_page/UtilitiesPage.qml index 146d60d..bbbe178 100644 --- a/src/res/qml/utilities_page/UtilitiesPage.qml +++ b/src/res/qml/utilities_page/UtilitiesPage.qml @@ -6,7 +6,7 @@ import "media_keys" import "alarm_clock" import "desktop_size" import "keyboard_utils" -import ".." +import "../common" MyStackViewPage { headerText: "Utilities" diff --git a/src/res/qml/utilities_page/alarm_clock/AlarmGroupBox.qml b/src/res/qml/utilities_page/alarm_clock/AlarmGroupBox.qml index 445c25f..0a24306 100644 --- a/src/res/qml/utilities_page/alarm_clock/AlarmGroupBox.qml +++ b/src/res/qml/utilities_page/alarm_clock/AlarmGroupBox.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 "../.." +import "../../common" GroupBox { id: alarmGroupBox diff --git a/src/res/qml/utilities_page/desktop_size/SteamDesktopGroupBox.qml b/src/res/qml/utilities_page/desktop_size/SteamDesktopGroupBox.qml index b43a0c2..e05cfd7 100644 --- a/src/res/qml/utilities_page/desktop_size/SteamDesktopGroupBox.qml +++ b/src/res/qml/utilities_page/desktop_size/SteamDesktopGroupBox.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 "../.." +import "../../common" GroupBox { id: steamDesktopGroupBox diff --git a/src/res/qml/utilities_page/keyboard_utils/KeyboardGroupBox.qml b/src/res/qml/utilities_page/keyboard_utils/KeyboardGroupBox.qml index 9100064..6d912af 100644 --- a/src/res/qml/utilities_page/keyboard_utils/KeyboardGroupBox.qml +++ b/src/res/qml/utilities_page/keyboard_utils/KeyboardGroupBox.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 "../.." +import "../../common" GroupBox { id: keyboardGroupBox diff --git a/src/res/qml/utilities_page/media_keys/MediaButton.qml b/src/res/qml/utilities_page/media_keys/MediaButton.qml index 6536290..c1f94bc 100644 --- a/src/res/qml/utilities_page/media_keys/MediaButton.qml +++ b/src/res/qml/utilities_page/media_keys/MediaButton.qml @@ -2,8 +2,7 @@ import QtQuick 2.7 import QtQuick.Controls 2.0 import QtQuick.Layouts 1.3 import matzman666.advsettings 1.0 -// Necessary for the project specific Components. -import "../.." +import "../../common" MyPushButton2 { // Public properties diff --git a/src/res/qml/utilities_page/media_keys/MediaControllerKeys.qml b/src/res/qml/utilities_page/media_keys/MediaControllerKeys.qml index 0e0f094..14b6ffc 100644 --- a/src/res/qml/utilities_page/media_keys/MediaControllerKeys.qml +++ b/src/res/qml/utilities_page/media_keys/MediaControllerKeys.qml @@ -2,8 +2,7 @@ import QtQuick 2.7 import QtQuick.Controls 2.0 import QtQuick.Layouts 1.3 import matzman666.advsettings 1.0 -// Necessary for the project specific Components. -import "../.." +import "../../common" GroupBox { id: mediaKeysGroupBox @@ -26,10 +25,10 @@ GroupBox { } RowLayout { - property string playPauseButtonPath: "outline_play_pause_white_24dp.svg" - property string stopButtonPath: "outline_stop_white_24dp.svg" - property string previousButtonPath: "outline_skip_previous_white_24dp.svg" - property string nextButtonPath: "outline_skip_next_white_24dp.svg" + property string playPauseButtonPath: "qrc:/media_keys/play_pause" + property string stopButtonPath: "qrc:/media_keys/stop" + property string previousButtonPath: "qrc:/media_keys/previous" + property string nextButtonPath: "qrc:/media_keys/next" MediaButton { id: previousSongButton diff --git a/src/res/resources.qrc b/src/res/resources.qrc new file mode 100644 index 0000000..6fb7946 --- /dev/null +++ b/src/res/resources.qrc @@ -0,0 +1,20 @@ + + + img/common/backarrow.svg + img/common/check.svg + + + img/audio/microphone/mic_on.svg + img/audio/microphone/mic_off.svg + + + img/audio/speaker/speaker_on.svg + img/audio/speaker/speaker_off.svg + + + img/audio/media_keys/outline_play_pause_white_24dp.svg + img/audio/media_keys/outline_skip_next_white_24dp.svg + img/audio/media_keys/outline_skip_previous_white_24dp.svg + img/audio/media_keys/outline_stop_white_24dp.svg + + \ No newline at end of file diff --git a/src/tabcontrollers/AudioTabController.cpp b/src/tabcontrollers/AudioTabController.cpp index 6e30b62..9dcfedf 100644 --- a/src/tabcontrollers/AudioTabController.cpp +++ b/src/tabcontrollers/AudioTabController.cpp @@ -72,7 +72,8 @@ void AudioTabController::initStage2( OverlayController* var_parent, { QString notifIconPath = QStandardPaths::locate( QStandardPaths::AppDataLocation, - QStringLiteral( "/res/qml/ptt_notification.png" ) ); + QStringLiteral( + "/res/img/audio/microphone/ptt_notification.png" ) ); if ( QFile::exists( notifIconPath ) ) { vr::VROverlay()->SetOverlayFromFile( diff --git a/src/tabcontrollers/UtilitiesTabController.cpp b/src/tabcontrollers/UtilitiesTabController.cpp index 0296873..f4effb0 100644 --- a/src/tabcontrollers/UtilitiesTabController.cpp +++ b/src/tabcontrollers/UtilitiesTabController.cpp @@ -274,7 +274,7 @@ void UtilitiesTabController::modAlarmTimeMinute( int value, bool notify ) QString getBatteryIconPath( int batteryState ) { - QString batteryPrefix = "/res/battery_"; + QString batteryPrefix = "/res/img/battery/battery_"; return QStandardPaths::locate( QStandardPaths::AppDataLocation, batteryPrefix + QString::number( batteryState ) + ".png" );