Reorganize content into tabs of controller preferences#14006
Reorganize content into tabs of controller preferences#14006ronso0 merged 12 commits intomixxxdj:mainfrom
Conversation
Show only the tabs, which have valid content in the current context Sort tabs that settingsTab is shown by default, if controller settings are defined in mapping Moved controller tabs below info and warning section Made hyperlink warning label clickable and warning text select- and copy-able Made warning label collapsing in height Hide 'Mapping Info' fields if there is no content
|
Umm, looking at So if the screenshots reflect the current state of this PR and UX (correct tabstops etc.) is the same this LGTM 👍 |
Added tabstop section Unified some names Simplified top level frame/grid structure to a single grid
b0a87f9 to
e1f8a6b
Compare
|
I reordered the .ui file in GUI order. |
|
I'll take a look asap, can build again with a libhidapi backport. |
ronso0
left a comment
There was a problem hiding this comment.
my first review, will take another look soonish
|
A regression I noticed is that now the Input/Output tabs can't use the entire height of the dialog as before, mapping and device info will always occupy space at the top. One solution would be to allow collapsing groupboxes.
|
|
Btw on second thought, maybe that's intentional 🤷♂️ |
I also noticed this, but this is not new in this PR. |
Added methods to count and find the first visible tab.
ronso0
left a comment
There was a problem hiding this comment.
Thanks, I'll do a test with some HID and MIDI gear... next year ; )
…ducing a boolean variable
@ronso0 Did you already found the time to test this? |
|
Sorry, this got shifted down in my TODO list. |
There was a problem hiding this comment.
LGTM otherwise!
I opened JoergAtGithub#3 with some fixes:
- Screens tab was always visible when built with QML off
- finally managed to fix the random layout changes / v-stretch of the device / mapping info groupboxes
(this took hours, literally... sometimes Qt widget/layout props are a PITA) - nits
Tested with MIDI Through and Traktor S4mk3 (HID).
All looking good now with the fixup PR.

| int firstVisibleTabIndex = getIndexOfFirstVisibleTabs(); | ||
| if (firstVisibleTabIndex >= 0) { | ||
| m_ui.controllerTabs->setCurrentIndex(firstVisibleTabIndex); | ||
| } |
There was a problem hiding this comment.
Ux nit: when changing mappings, this would always reset to first visible tab.
We could save and (try to) restore the last selected tab.
This might be helpful for eg. quickly compare screens of two mappings.
There was a problem hiding this comment.
I see your use case. But I think another use case is more important:
If a (new) user steps/scrolls through the list of mappings. Than it's likely that there was a mapping without controller settings beneth them. This means Midi In becomes the default - an expert setting, not intendend for average users. For them we introduced the controller settings, which should appear as default therefore.
|
|
||
| // Store the index of the input and output mappings tabs | ||
| m_inputMappingsTabIndex = m_ui.controllerTabs->indexOf(m_ui.inputMappingsTab); | ||
| m_outputMappingsTabIndex = m_ui.controllerTabs->indexOf(m_ui.outputMappingsTab); | ||
| m_settingsTabIndex = m_ui.controllerTabs->indexOf(m_ui.settingsTab); | ||
| m_screensTabIndex = m_ui.controllerTabs->indexOf(m_ui.screensTab); |
There was a problem hiding this comment.
All tabs are visible by default (indices are correct), so let's move this to the top of the ctor, above the first call of slotShowMapping()?
There was a problem hiding this comment.
I don't see any side effects, just saying..
When slotUpdate() is called to actually show the preferences indices are set.
DlgPrefController layout fixes
|
Okay, let's merge it then. |
This is a preparatory GUI cleanup, prior to the addition of further properties in additional tabs.
Before:

This PR:
