Skip to content
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3983,6 +3983,7 @@ if(QML)
PRIVATE
src/qml/asyncimageprovider.cpp
src/qml/qmlapplication.cpp
src/qml/qmlapplicationproxy.cpp
src/qml/qmlautoreload.cpp
src/qml/qmlbatteryproxy.cpp
src/qml/qmlbeatsmodel.cpp
Expand Down
107 changes: 107 additions & 0 deletions res/qml/ApplicationMenuCommands.qml
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
import Mixxx 1.0 as Mixxx
import QtQuick
import QtQuick.Controls
import QtQuick.Dialogs
import QtQuick.Window

Item {
id: root

required property ApplicationWindow applicationWindow
readonly property bool fullScreen: applicationWindow.visibility === Window.FullScreen
property int pendingDeck: 1

signal showDeveloperToolsRequested

function loadTrackToDeck(deck) {
pendingDeck = deck;
const playControl = [deck1PlayControl, deck2PlayControl, deck3PlayControl, deck4PlayControl][deck - 1];
if (playControl && playControl.value > 0) {
confirmLoadDialog.text = qsTr("Deck %1 is currently playing a track.\nAre you sure you want to load a new track?").arg(deck);
confirmLoadDialog.open();
} else {
openTrackFileDialog();
}
}
function openTrackFileDialog() {
trackFileDialog.title = qsTr("Load track to Deck %1").arg(pendingDeck);
trackFileDialog.currentFolder = Mixxx.PlayerManager.initialTrackDirectoryUrl;
Qt.callLater(function() {
trackFileDialog.open();
});
}
function toggleFullScreen() {
applicationWindow.visibility = applicationWindow.visibility === Window.FullScreen ? Window.Windowed : Window.FullScreen;
}
function showAbout() {
aboutDialog.open();
}
function showKeywheel() {
keywheelDialog.open();
}

FileDialog {
id: trackFileDialog

fileMode: FileDialog.OpenFile
nameFilters: Mixxx.PlayerManager.supportedAudioFileNameFilters

onAccepted: Mixxx.PlayerManager.loadLocationUrlToDeck(selectedFile, root.pendingDeck)
}
MessageDialog {
id: confirmLoadDialog

buttons: MessageDialog.Yes | MessageDialog.No
title: Mixxx.Application.applicationName

onAccepted: root.openTrackFileDialog()
}
MessageDialog {
id: aboutDialog

buttons: MessageDialog.Ok
informativeText: qsTr("%1\n%2").arg(Mixxx.Application.platform).arg("https://mixxx.org")
text: qsTr("%1 %2").arg(Mixxx.Application.applicationName).arg(Mixxx.Application.version)
title: qsTr("About %1").arg(Mixxx.Application.applicationName)
}
Dialog {
id: keywheelDialog

height: Math.min(620, root.applicationWindow.height - 80)
modal: false
standardButtons: Dialog.Close
title: qsTr("Keywheel")
width: height
x: Math.round((root.applicationWindow.width - width) / 2)
y: Math.round((root.applicationWindow.height - height) / 2)

contentItem: Image {
fillMode: Image.PreserveAspectFit
source: "../images/keywheel/keywheel.svg"
}
}
Mixxx.ControlProxy {
id: deck1PlayControl

group: "[Channel1]"
key: "play"
}
Mixxx.ControlProxy {
id: deck2PlayControl

group: "[Channel2]"
key: "play"
}
Mixxx.ControlProxy {
id: deck3PlayControl

group: "[Channel3]"
key: "play"
}
Mixxx.ControlProxy {
id: deck4PlayControl

group: "[Channel4]"
key: "play"
}
}
20 changes: 20 additions & 0 deletions res/qml/LibraryScanSummaryDialog.qml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import Mixxx 1.0 as Mixxx
import QtQuick
import QtQuick.Dialogs

MessageDialog {
id: root

buttons: MessageDialog.Ok

Connections {
function onLibraryScanSummaryAvailable(title, text, informativeText) {
root.title = title;
root.text = text;
root.informativeText = informativeText;
root.open();
}

target: Mixxx.Library
}
}
Loading
Loading