Pass theme list & its entries around by reference rather than copying them.
Fix bug in async icon loading that caused icons to be loaded multiple times.
Original PR by @LiquidFenrir
icon and name get extracted from the dlc data
requires libctru from commit 5f13628dac75206f0c97d29a7427ce8284d910f1 or older (added the am commands necessary to find the dlc data)
Makefile changed to reflect the macro change in unreleased libctru
* icons are black, but it's a start
* after testing, info_buffer in load_smdh_icon is for some reason all 0
* working! same speed as pre-threading (I think)
but the icons lag behind a bit.
Still, should allow for infinite themes
* not needed anymore
* fix icons not being loaded when switching modes
* stop trying to load icons if there arent enough entries
* swapping logic almost there...
* only need to update when on the main screen
* fix blind spot and typo
* allow optimizations maybe?
maybe will break stuff. just revert if it's the case
* fix blind spot when going up after cycling
* add swapping when changing 1 screen at a time (left/right)
* not needed anymore, since icon ids are fixed
* simpler scrolling
* dont reload everything when cycling
* other method for storing ids, maybe better logic later
* fix crash
* attempt at better and clearer algorithm for swapping
* optimization, swapping still broken but this was needed
* fix cycling/using left resulting in reversed icons
* fix icons scrolling in reverse
and fix the bug that introduced (same as switch-case method): scroll not following the selected entry when using left/right
* don't break when using left/right near the top/end
* correctly return from failed realloc during entries load
* move freeing the entries and killing the icon updating thread to exit_function
* fix icons being shifted the wrong value when cycling
* only exit using the shutdown screen method when needed
* show simple loading screen for themes and splashes
* only have the thread when needed
should consume less battery for people with low amount of splashes and themes
* fix instructions showing over the "no X found" screen
* fix instructions showing over confirm text
* fix overlapping and going out of bounds with few entries
* add quitting preview and qr mode with B
* add touchscreen controls
* cleaner BETWEEN macro
* only allow changing screens with touchscreen when arrows are visible
* tabs vs spaces
* fix selecting an entry that's not there using the touchscreen
and allow holding for selecting individual entries (not using the arrows)
* fix crash when deleting all entries and downloading one with QR
* add indicator for already installed themes/splashes
threaded as not to slow down initial loading too much, and imo cool effect as they load
* optimization for theme installed check
* make icon swapping thread higher priority to prevent problems with searching the installed themes/splashes
* add indicator with number of themes and selected theme
* add X to reload icons if it breaks
* add touchscreen controls:
- toggle shuffle
- toggle preview
- reload icons
- switch modes
- enable QR
* more usable thread args
* fix crash when closing the application too close to launch
* add hack to solve the scrolling problem.
Warning: will cause some lag for about 1-2 seconds, so I recommend using the jump menu
this will be removed once the bug is figured out
* less magic numbers
* part 2: installing themes
* fix simple theme install
that wasnt such a good idea
* fix shuffle count
* fix shuffle theme install
* change padding name
* first step of rewriting: at least it compiles™
* fix tabs/spaces
* fix dabort on load
* fix preview crash
* sorting isnt done outside of loading
* step one of making remake_file useless
* camera/qr code cleanup
* fix dabort when folder is empty, and bring back preview optimization
* fix button for switching modes and show mode when folder is empty
* fix scanning qrs
* no more splash discrimination
* add debug helpers
* fix theme installing
turns out that wasnt such a good idea
* fix battery icon
* mistake
* themeplaza compatibility
* make use of load_data
* don't drink and copy-paste, kids
* fix user-agent
* remove useless
* cleanup includes
* not even used
* add splash buttons
* upgrade buttons drawing
* fix controls while preview is up
* improve positions
* make use of the return value for safety
* get rid of warnings
(sizeof(wchar_t) is the same as sizeof(u32), so no problem there)
* dynamic preview loading
fix crash when too many themes have previews available
* fix icon filename
* update pp2d to fix preview problem
* several improvements:
- rely on a single header for simple/common headers
- cleaned up main by putting the interface drawing function in its own file
- load previews from .zip themes (may cause some loading times when launching
- only need 1 shuffle image thanks to pp2d's blending abilities
* not needed anymore
* fix preview color and position
* forgot
* add proper icon loading
thanks steveice10 for bannertool which this was pretty much taken from
* only add proper themes to the list
* add slightly more space between the icon and the name
* not monospace, the little movement every blink is annoying
* fix typo