Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 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 Expand Up @@ -4572,6 +4573,9 @@ elseif(UNIX AND NOT APPLE AND NOT EMSCRIPTEN AND NOT ANDROID)
endif()
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS DBus REQUIRED)
target_link_libraries(mixxx-lib PUBLIC Qt${QT_VERSION_MAJOR}::DBus)
if(QML)
target_link_libraries(mixxx-qml-lib PRIVATE Qt${QT_VERSION_MAJOR}::DBus)
endif()
elseif(WIN32)
if(Qt_IS_STATIC)
target_link_libraries(
Expand Down
9 changes: 9 additions & 0 deletions res/qml/AboutDialog.qml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import Mixxx 1.0 as Mixxx
import QtQuick.Dialogs

MessageDialog {
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)
}
102 changes: 102 additions & 0 deletions res/qml/ApplicationMenuCommands.qml
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
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()
}
AboutDialog {
id: aboutDialog
}
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