* Broke the "prepare" methods up into smaller methods
* Removed the usage of linked lists and replaced them with arrays. Given
that themes won't be added/removed throughout the execution of the
program, we don't need to be able to dynamically add or remove elements
to the list. In addition, once you got to ~50 themes, it took about .2
seconds to iterate through the entire list, which, while it may not
sound like much, is a huge time sink when you're going through a list.
Being able to randomly access any element in the list at the same speed
is hugely beneficial. The downside to this is we need to keep track of
the number of themes/splashes at all times, and, for splashes, have to
do some weird type magic in order to properly iterate over it. However,
these negatives are outweighed by the speed improvements.
Combination of quality of life improvements, bugfixes and splash support:
* unzip_file now works with any file, not just a theme
* Made linked list nodes generic so they work for both splashes and themes
* Fixed bug in previous commit with deleting the zip file once it was unzipped
* All zips in /Splashes/ are now extracted, as with /Themes/
* Splashes are all added to the linked list properly
* Splashes can be installed given a path, but only works on Luma. Undecided as to whether or not I'm going to change this.
TODO:
* Automatically change the luma configuration to enable splash screens
* MAYBE add support for other CFWs (if there's an interest). Maybe set a folder to extract splashes to in some kind of user settings?