[android] Dynamic UI scaling
Allows the user to pick a UI scale at runtime. They will be prompted on first startup and manually via Settings → Change Interface Scale. They can disable the dialog showing up on startup once they see it the second time, on the first go the option is hidden to avoid users blindly picking something bad and then being unable to find the dialog anymore.
Since it interferes with the UI scale changing, this also now handles full-screening the application directly instead of letting Qt do it through the window full screen state. That reduces the flickering involved when opening a document by a lot as well, which is nice.
Note that this needs !2835 (merged) for the welcome page to resize itself properly, it has a bug that prevents it from shrinking.
Test Plan
- Start the application on Android. Observe that you get a scaling dialog after the splash screen closes. It has no "ask again" checkbox.
- Change the slider, observe how the interface scale changes. Close it by hitting OK.
- Summon the dialog again via Settings → Change Interface Scale. See that it now has an "ask again" checkbox.
- Restart Krita. Observe that the dialog comes up after the splash screen depending on how the "ask again" checkbox was set.
- In Settings → Configure Krita → General → Window, turn off High-DPI scaling. Restart Krita. Observe no scaling dialog is accessible. Turn the setting back on again and see that it's back.
- Toggle full screen on Android, observe that it works.
- Open a document on Android, observe that it opens without as much flickering.
- Run it on a different system, observe that it works as before.
Formalities Checklist
- I confirmed this builds.
- I confirmed Krita ran and the relevant functions work.
- I tested the relevant unit tests and can confirm they are not broken. (If not possible, don't hesitate to ask for help!)
- I made sure my commits build individually and have good descriptions as per KDE guidelines.
- I made sure my code conforms to the standards set in the HACKING file.
- I can confirm the code is licensed and attributed appropriately, and that unattributed code is mine, as per KDE Licensing Policy.
- Does the patch add a user-visible feature? If yes, is there a documentation MR ready for it at Krita Documentation Repository?
Reminder: the reviewer is responsible for merging the patch, this is to ensure at the least two people can build the patch. In case a patch breaks the build, both the author and the reviewer should be contacted to fix the build. If this is not possible, the commits shall be reverted, and a notification with the reasoning and any relevant logs shall be sent to the mailing list, kimageshop@kde.org.