diff options
author | Jan Holthuis <jholthuis@mixxx.org> | 2021-12-20 18:51:23 +0100 |
---|---|---|
committer | Jan Holthuis <jholthuis@mixxx.org> | 2022-01-11 19:53:42 +0100 |
commit | ffa89953da15f723c03afb35b719d5d161ab4173 (patch) | |
tree | 95e0d16b963498dc578cd31b9d5286868c74b529 | |
parent | 5f49f762e0328412292cae375b2f0d7f3240d002 (diff) |
QML: Implement LibraryControl for QML library
-rw-r--r-- | res/qml/Library.qml | 80 | ||||
-rw-r--r-- | res/qml/LibraryControl.qml | 134 | ||||
-rw-r--r-- | res/qml/LibraryControlLoadSelectedTrackHandler.qml | 34 |
3 files changed, 184 insertions, 64 deletions
diff --git a/res/qml/Library.qml b/res/qml/Library.qml index 8311c2ee47..547a9c4b4d 100644 --- a/res/qml/Library.qml +++ b/res/qml/Library.qml @@ -1,5 +1,6 @@ import "." as Skin import Mixxx 0.1 as Mixxx +import QtQml.Models 2.12 import QtQuick 2.12 import "Theme" @@ -8,70 +9,9 @@ Item { color: Theme.deckBackgroundColor anchors.fill: parent - Mixxx.ControlProxy { - id: focusedWidgetControl - - group: "[Library]" - key: "focused_widget" - Component.onCompleted: value = 3 - } - - Mixxx.ControlProxy { - group: "[Playlist]" - key: "SelectTrackKnob" - onValueChanged: { - listView.moveSelection(value); - } - } - - Mixxx.ControlProxy { - group: "[Playlist]" - key: "SelectPrevTrack" - onValueChanged: { - if (value != 0) - listView.moveSelection(-1); - - } - } - - Mixxx.ControlProxy { - group: "[Playlist]" - key: "SelectNextTrack" - onValueChanged: { - if (value != 0) - listView.moveSelection(1); - - } - } - - Mixxx.ControlProxy { - group: "[Library]" - key: "MoveVertical" - onValueChanged: { - if (focusedWidgetControl.value == 3) - listView.moveSelection(value); - - } - } - - Mixxx.ControlProxy { - group: "[Library]" - key: "MoveUp" - onValueChanged: { - if (value != 0 && focusedWidgetControl.value == 3) - listView.moveSelection(-1); - - } - } - - Mixxx.ControlProxy { - group: "[Library]" - key: "MoveDown" - onValueChanged: { - if (value != 0 && focusedWidgetControl.value == 3) - listView.moveSelection(1); - - } + LibraryControl { + onMoveSelection: listView.moveSelection(offset) + onLoadSelectedTrack: listView.loadSelectedTrack(group, play) } ListView { @@ -90,6 +30,18 @@ Item { currentIndex = newIndex; } + function loadSelectedTrack(group, play) { + const url = model.get(currentIndex).fileUrl; + if (!url) + return ; + + const player = Mixxx.PlayerManager.getPlayer(group); + if (!player) + return ; + + player.loadTrackFromLocationUrl(url, play); + } + anchors.fill: parent anchors.margins: 10 clip: true diff --git a/res/qml/LibraryControl.qml b/res/qml/LibraryControl.qml new file mode 100644 index 0000000000..64cea6dacc --- /dev/null +++ b/res/qml/LibraryControl.qml @@ -0,0 +1,134 @@ +import Mixxx 0.1 as Mixxx +import QtQuick 2.12 + +Item { + id: root + + property bool focused: focusedWidgetControl.value == 3 + + signal moveSelection(int offset) + signal loadSelectedTrack(string group, bool play) + + Mixxx.ControlProxy { + id: focusedWidgetControl + + group: "[Library]" + key: "focused_widget" + Component.onCompleted: value = 3 + } + + Mixxx.ControlProxy { + group: "[Playlist]" + key: "SelectTrackKnob" + onValueChanged: { + if (value != 0) + root.moveSelection(value); + + } + } + + Mixxx.ControlProxy { + group: "[Playlist]" + key: "SelectPrevTrack" + onValueChanged: { + if (value != 0) + root.moveSelection(-1); + + } + } + + Mixxx.ControlProxy { + group: "[Playlist]" + key: "SelectNextTrack" + onValueChanged: { + if (value != 0) + root.moveSelection(1); + + } + } + + Mixxx.ControlProxy { + group: "[Library]" + key: "MoveVertical" + onValueChanged: { + if (root.focused && value != 0) + root.moveSelection(value); + + } + } + + Mixxx.ControlProxy { + group: "[Library]" + key: "MoveUp" + onValueChanged: { + if (root.focused && value != 0) + root.moveSelection(-1); + + } + } + + Mixxx.ControlProxy { + group: "[Library]" + key: "MoveDown" + onValueChanged: { + if (root.focused && value != 0) + root.moveSelection(1); + + } + } + + Mixxx.ControlProxy { + id: numDecksControl + + group: "[Master]" + key: "num_decks" + } + + Instantiator { + model: numDecksControl.value + + delegate: LibraryControlLoadSelectedTrackHandler { + group: "[Channel" + (index + 1) + "]" + enabled: root.focused + onLoadTrackRequested: root.loadSelectedTrack(group, play) + } + + } + + Mixxx.ControlProxy { + id: numPreviewDecksControl + + group: "[Master]" + key: "num_preview_decks" + } + + Instantiator { + model: numPreviewDecksControl.value + + delegate: LibraryControlLoadSelectedTrackHandler { + group: "[PreviewDeck" + (index + 1) + "]" + enabled: root.focused + onLoadTrackRequested: root.loadSelectedTrack(group, play) + } + + } + + Mixxx.ControlProxy { + id: numSamplersControl + + group: "[Master]" + key: "num_samplers" + } + + Instantiator { + model: numSamplersControl.value + + delegate: LibraryControlLoadSelectedTrackHandler { + group: "[Sampler" + (index + 1) + "]" + enabled: root.focused + onLoadTrackRequested: root.loadSelectedTrack(group, play) + } + + } + +} diff --git a/res/qml/LibraryControlLoadSelectedTrackHandler.qml b/res/qml/LibraryControlLoadSelectedTrackHandler.qml new file mode 100644 index 0000000000..7c90f8428b --- /dev/null +++ b/res/qml/LibraryControlLoadSelectedTrackHandler.qml @@ -0,0 +1,34 @@ +import Mixxx 0.1 as Mixxx +import QtQuick 2.12 + +Item { + id: root + + property string group // required + property bool enabled: true + + signal loadTrackRequested(bool play) + + Mixxx.ControlProxy { + group: root.group + key: "LoadSelectedTrack" + onValueChanged: { + if (value == 0 || !root.enabled) + return ; + + root.loadTrackRequested(false); + } + } + + Mixxx.ControlProxy { + group: root.group + key: "LoadSelectedTrackAndPlay" + onValueChanged: { + if (value == 0 || !root.enabled) + return ; + + root.loadTrackRequested(true); + } + } + +} |