Skip to content

QML: controllers settings - #14697

Merged
JoergAtGithub merged 2 commits into
mixxxdj:mainfrom
acolombier:feat/qml-settings-controllers
Jun 27, 2026
Merged

QML: controllers settings#14697
JoergAtGithub merged 2 commits into
mixxxdj:mainfrom
acolombier:feat/qml-settings-controllers

Conversation

@acolombier

@acolombier acolombier commented Apr 25, 2025

Copy link
Copy Markdown
Member

Point n click to come in a separate PR

Depends on #14606

Partially fixes #14538

TODO:

  • View reset is too slow
  • Don't use grid and make design responsive
  • Scroll the whole view to improve small device experience

@github-actions github-actions Bot added controller mappings packaging controller backend developer experience Issues, bugs and PRs related to the development process, development environment & developer docs labels May 4, 2025
@acolombier
acolombier force-pushed the feat/qml-settings-controllers branch from 6d60804 to 1475706 Compare May 5, 2025 01:07

@Swiftb0y Swiftb0y left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

also couple thoughts, not a fully review though

Comment thread src/util/singleton.h
Comment thread src/controllers/legacycontrollersettings.h
Comment thread src/controllers/controllermappinginfo.h Outdated
Comment thread s4_mk3.png Outdated
Comment thread res/controllers/Dummy Device Screen.hid.xml Outdated
@acolombier
acolombier force-pushed the feat/qml-settings-controllers branch from 1475706 to 7c166da Compare May 9, 2025 19:19
@acolombier
acolombier force-pushed the feat/qml-settings-controllers branch from 7c166da to 9724bea Compare May 18, 2025 23:40
@acolombier
acolombier force-pushed the feat/qml-settings-controllers branch from 9724bea to 8e3e57b Compare May 28, 2025 19:03
@acolombier

Copy link
Copy Markdown
Member Author

No doubt that this will need more polishing to consider it production ready, but I'd like to get this first batch polished and out now!

@acolombier
acolombier marked this pull request as ready for review May 28, 2025 19:04

@JoergAtGithub JoergAtGithub left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The copyrighted image res/qml/images/controllers/ni_traktor_s4_mk3.png needs to be removed!
And the CI must be Pass of course.

@acolombier

acolombier commented May 29, 2025

Copy link
Copy Markdown
Member Author

The copyrighted image res/qml/images/controllers/ni_traktor_s4_mk3.png needs to be removed!

This is licensed under CC. It comes from here. I have only reduced the resolution and truncated the shadow. From what I can see, only issues could be with the attribution clause. Are you okay if I put a LICENSE file under res/qml/images/controllers which provides details for this? THis can then be used to referenced different license used by multiple visual (obviously we would only accept CC-compatible licenses)

Just to compare, adding a visual really lift up the UX IMHO, thus why I really would like to find a solution to bundle visuals.
image
image

@acolombier
acolombier force-pushed the feat/qml-settings-controllers branch 3 times, most recently from ed6128d to 1601acd Compare May 29, 2025 12:11
@JoergAtGithub

Copy link
Copy Markdown
Member

The copyrighted image res/qml/images/controllers/ni_traktor_s4_mk3.png needs to be removed!

This is licensed under CC. It comes from here. I have only reduced the resolution and truncated the shadow. From what I can see, only issues could be with the attribution clause. Are you okay if I put a LICENSE file under res/qml/images/controllers which provides details for this? THis can then be used to referenced different license used by multiple visual (obviously we would only accept CC-compatible licenses)

The picture on wikimedia is obviously a copy of the official product picture from https://www.native-instruments.com/fileadmin/ni_media/dj/Traktor_Kontrol_S5/images/TRAKTOR_KONTROL_S2_MK3_website_comparison_chart_S4.png but it's marked as "own work". Every light and reflection is the same.
Unless we have a written permission from Native Instruments, we must not use it! Maybe Native Instruments has general terms for the use of product picture by dealers etc., that also allows this use?
In any way, our Contributor Aggreement mandates that any contribution "includes complete details of any third-party license or other restriction".

@JoergAtGithub

Copy link
Copy Markdown
Member

It would be legally completely ok, if you take a photo of your own controller in a slightly different setting and upload it instead!

@acolombier
acolombier force-pushed the feat/qml-settings-controllers branch from 1601acd to 89d2c6e Compare May 29, 2025 12:52
@acolombier

Copy link
Copy Markdown
Member Author

It would be legally completely ok, if you take a photo of your own controller in a slightly different setting and upload it instead!

Okay, I've done just that. It's not pretty but we could always improve later, with a better picture.

@JoergAtGithub
JoergAtGithub dismissed their stale review May 29, 2025 13:00

Thank you! I'm sorry, that I had to intervene here, and to block what was the visually much more appealing solution.

@acolombier
acolombier force-pushed the feat/qml-settings-controllers branch 4 times, most recently from d9e9acc to 982902d Compare May 30, 2025 10:21
@acolombier
acolombier force-pushed the feat/qml-settings-controllers branch from 9b9f25c to 11e4603 Compare January 10, 2026 23:41
@acolombier acolombier removed controller mappings build code quality packaging developer experience Issues, bugs and PRs related to the development process, development environment & developer docs labels Jan 10, 2026
@acolombier
acolombier force-pushed the feat/qml-settings-controllers branch from 11e4603 to 583a7bc Compare February 7, 2026 14:20
@acolombier
acolombier force-pushed the feat/qml-settings-controllers branch 3 times, most recently from 9f6801c to 2ab22a8 Compare February 7, 2026 22:00
@github-actions github-actions Bot added the build label Feb 7, 2026
@acolombier

Copy link
Copy Markdown
Member Author

This PR should now be ready and the next one to focus on as part of the QML effort.

@JoergAtGithub JoergAtGithub left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

QML does not start up at all with this PR:

warning [Main] file:///D:/mixxx/res/qml/main.qml:641:5: Type Skin.Settings unavailable
warning [Main] file:///D:/mixxx/res/qml/Settings.qml:281:21: Type Settings.Controller unavailable
warning [Main] file:///D:/mixxx/res/qml/Settings/Controller.qml:4:1: Cannot load library D:\mixxx\build\x64__portable\Qt6\qml\QtQuick\Dialogs\qtquickdialogsplugin.dll: Das angegebene Modul wurde nicht gefunden.
critical [Main] Failed to load QML file "D:/mixxx/res/qml/main.qml"

@acolombier

acolombier commented May 4, 2026

Copy link
Copy Markdown
Member Author

Not entirely sure what is wrong. The DLL is there and correctly installed. I assume referenced DLL are missing, but not sure how to find this out

@acolombier

Copy link
Copy Markdown
Member Author

I believe I might have fixed it, but not entirely sure, could you give it another go please?

Comment thread CMakeLists.txt Outdated
@acolombier

acolombier commented Jun 5, 2026

Copy link
Copy Markdown
Member Author

@JoergAtGithub I had to make one more change to get the platform plug-in to copy correctly. Now, the controller screen preview works well. It still need some polish, but this could come in a later stage
image

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR implements a new QML-based “Controllers” settings page (cards + per-controller settings + optional screen preview) and updates build/packaging to include the Qt Quick Dialogs module required by the new UI.

Changes:

  • Add new QML components for controller cards, controller mapping link/info bubble, controller settings delegates, and controller screen previews.
  • Update the Controllers settings category to use a responsive, scrollable layout with per-device cards and actions.
  • Extend build/packaging (CMake + Debian build deps) to ship Qt Quick Dialogs (and related runtime artifacts).

Reviewed changes

Copilot reviewed 16 out of 17 changed files in this pull request and generated 15 comments.

Show a summary per file
File Description
tools/debian_buildenv.sh Add Debian buildenv dependency for Qt Quick Dialogs module.
packaging/debian/control.in Add Debian Build-Depends entry for Qt Quick Dialogs module.
CMakeLists.txt Add Qt Quick Dialogs component + runtime/install handling (incl. vcpkg paths).
res/qml/Settings/InfoBubble.qml New clickable “info” bubble component.
res/qml/Settings/ControllerSettings.qml New settings-tree renderer with delegates per setting type (enum/color/bool/number/file).
res/qml/Settings/ControllerScreens.qml New controller screen preview strip (VideoOutput-based).
res/qml/Settings/ControllerMappingLink.qml New clickable mapping metadata link presentation.
res/qml/Settings/ControllerCard.qml New controller card UI, mapping selector, and embedded settings/screens area.
res/qml/Settings/Controller.qml Replace placeholder Controllers page with full card-based UI + save/reset/cancel actions.
res/qml/Settings.qml Adjust Settings popup padding.
res/qml/EmbeddedBackground.qml Tweak embedded background radius/border ordering.
res/qml/ComboBox.qml Redesign ComboBox visuals + add footer items support in popup.
res/qml/Button.qml Loosen QML import versions for QtQuick/Controls.
res/qml/ActionPopup.qml Add Facing enum support (left/right) and adjust arrow/margins accordingly.
res/controllers/DummyDeviceDefaultScreen.qml Formatting/structure changes + Theme import; update demo screen UI content.
res/controllers/Dummy Device Screen.hid.xml Add a new integer setting option for the dummy device mapping.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread res/qml/Settings/Controller.qml
Comment thread res/qml/Settings/ControllerSettings.qml
Comment thread res/qml/ComboBox.qml Outdated
Comment thread res/qml/ComboBox.qml
Comment thread res/qml/Settings/ControllerScreens.qml Outdated
Comment thread res/qml/Settings/Controller.qml Outdated
Comment thread res/qml/Settings/Controller.qml Outdated
Comment thread res/qml/Settings/Controller.qml Outdated
Comment thread res/qml/Settings/ControllerCard.qml Outdated
Comment thread res/qml/Settings/ControllerScreens.qml
@JoergAtGithub

JoergAtGithub commented Jun 11, 2026

Copy link
Copy Markdown
Member

This installs now and I can run it again, but it always crashs when I select the "Dummy Device Screen" mapping:

grafik

Mixxx is not operational at all after this - not like a normal Javascript error.

@acolombier

Copy link
Copy Markdown
Member Author

This problem doesn't look specific to QML. I suspect you can reproduce the same problem with your Z2 and the Dummy mapping on main, could you confirm? If not, could you share the logs please?

@JoergAtGithub JoergAtGithub left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This crashs also with main. I opened #16644 for this.
As this crash is unrelated to this PR, please squash the fixups!

@acolombier

acolombier commented Jun 23, 2026

Copy link
Copy Markdown
Member Author

Done!
Next stop: #15362

@acolombier

Copy link
Copy Markdown
Member Author

@JoergAtGithub did you merge this PR? Somehow it doesn't seem to show...

image

@JoergAtGithub

Copy link
Copy Markdown
Member

Yes I did!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

build controller backend controller mappings developer experience Issues, bugs and PRs related to the development process, development environment & developer docs packaging qml

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

Settings -> Controllers

4 participants