-
-
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
Improve UX in controller mapping editing workflow #3278
Conversation
still WIP, doesn't built yet. |
It looks like you have accidentally added BACK files. Can you amend and force push to revert it? |
yes, it's still WIP, I'll let you know when it can be tested. I had the descriptio written and didn't want to open a bug |
If I continue to polish the described workflow this will introduce new translation strings for the additional dialogs. |
Did we even push all new translations from 2.3 to Transifex yet? If not, it'd say it's definitely okay to add new strings. |
I got this into a working state incl. the option to 'Always overwrite during this session'. But working on this reveals some issues, and not sure if I should follow this route for 2.3: for the current implememtation I suggest we either go with a) not add " (edited)" to user presets b) use a simple QInputDialog for both the file name and the display name to ensure in c++ that presets are saved to the controllers folder only what do you think? |
@Holzhaus What's you're opinion?
|
Sounds good. |
That sounds like bug we should fix. |
Yep, but I didn't yet figure out where that could happen. Maybe when presets are enumerated? since it affects the combobox as well as the preset short name.
So I'll work on b) to not revert all of your work ;) |
@Holzhaus This is ready, please take a look.
After closing the dialogs surrounding whitespaces and all characters except alphanumerical characters and _-+() are removed. |
ping @Holzhaus |
@ronso0 Yeah, I've seen it, sorry! After working on windows CI my motivation to review PRs vanished. Since that this is off the table now, I'll have a look tomorrow. |
Thank you. One issue I noticed: If I run the MIDI mapping assistant while the controller is disabled (the default if I attach a new controller), the MIDI assistant doesn't receive messages. We either need to disable the learning assistant button when the controller is not enabled or we auto-enable the controller when starting the MIDI assistant. Another minor issue: It would be helpful if we listed the XML file in the |
Thought about that, too. Actually we have the User Preset Folde shortcut, but for completeness an xml link would be good.
Is that a regression from thi sPR? |
All that was tested with dev mode and MIDI through port0. |
Yes, all of that works. But after picking a control, the MIDI assistant doesn't pick up the MIDI messages when turning a knob or pressing a button on my controller. I guess because the controller is not enabled (i.e. the MIDI port is not open). It's not a regression from the PR, just wanted to point that out. |
ah okay |
so this here is ready? |
Yes. |
DlgPrefController::DlgPrefController(QWidget* parent, Controller* controller, | ||
ControllerManager* controllerManager, | ||
UserSettingsPointer pConfig) | ||
const QString kPresetExt(".midi.xml"); |
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.
Oops, this should go into an anonymous namespace.
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.
This aims to improve the UX both when editing a built-in controller mapping and when continously working on a user mapping.
The reason for this is that I had some headaches with the new workflow which always adds the " (edited)" suffix automatically.
After having saved an edited built-in preset to the user preset folder Mixxx would silently save further changes to MyController (edited).midi.xml (which is okay). But after manually renaming the preset file and loading that user preset Mixxx would not save further changes to that file but create yet another ... (edited) file. This happening unnoticed can create unclear situations in the user preset folder, for example when editing the xml file or when trying to transfer an repeatedly edited preset.
A simple solution would be showing a popup that tells the user about the new file location.
A little more advanced approach ist to ask the user for a
file name
for saving the preset in the user preset folder, as well as fordisplay name
.I abandoned the more detailed workflow with a QFieInputDialog I proposed earlier since it may lead to confusing situations, like saving a preset outside the user preset folder.
Edit a built-in mapping, click Apply
This is done quickly if you don't want to change the default name: click
Save
, clickOkay
Save As ...
QFileInputDialog to choose the file location in the user preset folder, suggest current name= don't add " (edited)" suffix, user presets already have a distinct icon and an own section in the preset dropbox
Choose preset display name
simple QInputDialog, suggest current display name. If file name was modified suggest the new file name (strip xml suffix)Edit a user mapping, click Apply
This is also done quickly if you want to stick with the current name.
QDialog to choose
Overwrite
Save As ...