-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Reorganize content into tabs of controller preferences #14006
Reorganize content into tabs of controller preferences #14006
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
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM otherwise. Thank you.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. Waiting for CI. @ronso0 do you have interest to take a quick look at the .ui
changes?
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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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:
![grafik](https://private-user-images.githubusercontent.com/64457745/394031776-93ca7d75-d91e-47e7-9509-5c752332cf6b.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg5NzYyNjgsIm5iZiI6MTczODk3NTk2OCwicGF0aCI6Ii82NDQ1Nzc0NS8zOTQwMzE3NzYtOTNjYTdkNzUtZDkxZS00N2U3LTk1MDktNWM3NTIzMzJjZjZiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDAwNTI0OFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTkzNDVmNmNhNzI4OWIwZjQ4NDVlMjZjMTg1YmMyZDM1YjFjNTg5MWVlNDA3ODM2MDMwMDdhMGI1MjU2ZGJjZDYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.upaZfvT4ndOGYA-_8xQ1I64h96YOOUD1_cuBD14LetU)
This PR:
![grafik](https://private-user-images.githubusercontent.com/64457745/394031086-f3089b98-2b99-4d57-bace-406caefa80b2.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg5NzYyNjgsIm5iZiI6MTczODk3NTk2OCwicGF0aCI6Ii82NDQ1Nzc0NS8zOTQwMzEwODYtZjMwODliOTgtMmI5OS00ZDU3LWJhY2UtNDA2Y2FlZmE4MGIyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDAwNTI0OFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTVjNzNlZTc4ODRmMWIwMzk1OTBiYjM0ZDRiODJkNzMzZjk5Y2VjMmE2YTA3NmVkM2U0MThjYmRlNTRmNjI5MmMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.jYR5l6E4nmpTuqi6YNA6gFgzcZQOcb266zsp_lBWYPQ)