Commit graph

1451 commits

Author SHA1 Message Date
Alexander Capehart
f2d44b40bf
info: note playback state wipe in 3.0.2
Indicate that the playback state will be wiped in 3.0.2 due to the new
queue system.
2023-01-20 15:37:48 -07:00
Alexander Capehart
900bcd142e
list: disable complex diffing for now
Disable the new instructions-based system for now.

The way I was doing reflection was likely far too unsafe and prone to
bugs. I'll want to do it some other way.
2023-01-20 15:16:04 -07:00
Weblate (bot)
8e9a22ccf3
Translations update from Hosted Weblate (#328)
* Translated using Weblate (Spanish)

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/es/

* Translated using Weblate (Korean)

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/ko/

* Translated using Weblate (Russian)

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/ru/

* Translated using Weblate (Korean)

Currently translated at 100.0% (27 of 27 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/ko/

* Translated using Weblate (Czech)

Currently translated at 100.0% (245 of 245 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/cs/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (256 of 256 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/zh_Hans/

* Translated using Weblate (Czech)

Currently translated at 100.0% (256 of 256 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/cs/

* Translated using Weblate (German)

Currently translated at 99.6% (255 of 256 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/de/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (256 of 256 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/es/

* Translated using Weblate (Italian)

Currently translated at 97.6% (250 of 256 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/it/

* Translated using Weblate (German)

Currently translated at 100.0% (256 of 256 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/de/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (256 of 256 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/es/

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (256 of 256 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/uk/

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (256 of 256 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/uk/

* Translated using Weblate (Lithuanian)

Currently translated at 100.0% (256 of 256 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/lt/

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (27 of 27 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/uk/

Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: Hoseok Seo <ddinghoya@gmail.com>
Co-authored-by: kirill blaze <kirillblaze2@gmail.com>
Co-authored-by: Fjuro <ifjuro@proton.me>
Co-authored-by: Eric <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: Ettore Atalan <atalanttore@googlemail.com>
Co-authored-by: Alessandro <alessandro.cocco@outlook.com>
Co-authored-by: qwerty287 <ndev@web.de>
Co-authored-by: BMN <weblate@yopmail.com>
Co-authored-by: Dan <denqwerta@gmail.com>
Co-authored-by: Vaclovas lntas <vaclovas1999@gmail.com>
2023-01-20 03:02:33 +00:00
Alexander Capehart
34653425ee
detail: fix unintended code change 2023-01-19 19:56:14 -07:00
Alexander Capehart
28bb4e61c4
detail: fix crash when playing genre song
Fix an issue where the genre detail view would crash when playing a
song.
2023-01-19 19:53:33 -07:00
Alexander Capehart
b7726607ff
music: re-add song de-duplication
Re-add song deduplication, which apparently was lost at some point in
3.0.0's development cycle.
2023-01-19 07:39:32 -07:00
Alexander Capehart
018e2ef310
playback: fix nonfunctional notif action setting
Fix an issue where the playback notification would not update afer the
setting changes...again.
2023-01-18 17:24:11 -07:00
Alexander Capehart
a5971cbccd
music: bump cache db version
Fixed several issues regarding music loading between 3.0.0 and 3.1.0,
should update the cache so that I don't get stale complaints.
2023-01-18 16:49:26 -07:00
Alexander Capehart
0c69a35e80
detail: diff instead of replace when resorting
Completely rework the detail list implementations so that resorting the
song list causes a replace operation instead of a diff operation.

This finally makes the list experience consistent across the app.
2023-01-18 16:47:50 -07:00
Alexander Capehart
f7bf12c4a5
widget: fix round mode issue
Fix a problem where round mode would not round the widget bar, as it
normally would.
2023-01-17 15:07:37 -07:00
Alexander Capehart
2c2b560195
settings: redocument 2023-01-17 15:06:16 -07:00
Alexander Capehart
0f265cc2a4
settings: fix incorrect divider use
Fix incorrect divider setups in the settings UI.
2023-01-17 14:55:54 -07:00
Alexander Capehart
9e1f6af21e
list: switch to header divider
Switch to item decorations to manage header dividers.

This is much more reliable than encoding it in-data. Only cost comes in
that it forces me to backport yet another component since I still can't
update MDC after over half a year.
2023-01-17 14:37:33 -07:00
Alexander Capehart
fb93b82b2b
ui: redesign headers
Redesign the header component to be more aligned with M3 guidelines.

This includes moving the divider to the top when reasonable, using a
smaller font size, and using a tinted coloration to separate itself
from the list contents.
2023-01-16 19:35:16 -07:00
Alexander Capehart
ad9d2f2d9e
list: move instructions into recycler
Move the instructions enum (which is only concerned with recyclerview
semantics) into the list.recycler module instead of list.
2023-01-16 17:47:07 -07:00
Alexander Capehart
d38da9b892
list: make list instructions generic
Make list instructions generic in preparation for the detail list
update.

Detail views need their own instructions datatype, so this is meant to
allow that to be implemented without issue.
2023-01-16 17:45:03 -07:00
Alexander Capehart
4a7bc4e511
settings: split up ui
Split up the settings ui into four categories.

This should reduce the visual load on the user as Auxio continues to
accrue possible configuration options.

Resolves #323.
2023-01-16 16:14:51 -07:00
Alexander Capehart
e7ff7293c0
home: replace list only when resorting
Leverage the new UpdateInstructions system to allow the home view to
diff the lists on music updates, and then replace the lists on
resorting events.

This just improves quality-of-life overall.
2023-01-16 11:20:19 -07:00
Alexander Capehart
6e02929982
music: reorganize music folders dialog
Reorganize the music folders dialog to be more visually straightforward
than prior, primarily by grouping the folder elements into the same
visual region.

Resolves #318.
2023-01-16 10:18:55 -07:00
Alexander Capehart
a0aaec98d0
music: extend non-standard artists to id3v2
Just pre-emptively add support for TXXX variations of the non-standard
vorbis artist fields to the ID3v2 parser.

I'd imagine the naming convention will be similar between them, so why
not.
2023-01-16 09:33:20 -07:00
Alexander Capehart
bfbf805adc
list: remove synclistdiffer
Forgot to remove this now useless class.
2023-01-15 20:32:46 -07:00
Alexander Capehart
df98bb535f
list: rework diffing abstraction
Make all adapters relying on diffing unified into a DiffAdapter
superclass that can then accurately respond to the new
UpdateInstructions data.

UpdateInstructions is still not fully used everywhere, but will be
soon.
2023-01-15 20:31:50 -07:00
Weblate (bot)
b524beb0ac
Translations update from Hosted Weblate (#315)
* Translated using Weblate (Spanish)

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/es/

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/uk/

* Translated using Weblate (Chinese (Traditional))

Currently translated at 22.9% (56 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/zh_Hant/

* Translated using Weblate (Turkish)

Currently translated at 68.4% (167 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/tr/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (27 of 27 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/tr/

* Translated using Weblate (Chinese (Traditional))

Currently translated at 96.2% (26 of 27 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/zh_Hant/

* Translated using Weblate (German)

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/de/

* Translated using Weblate (Turkish)

Currently translated at 70.0% (171 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/tr/

* Translated using Weblate (Portuguese (Portugal))

Currently translated at 99.5% (243 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/pt_PT/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/tr/

* Translated using Weblate (French)

Currently translated at 52.8% (129 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/fr/

* Translated using Weblate (French)

Currently translated at 96.2% (26 of 27 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/fr/

* Translated using Weblate (Italian)

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/it/

Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: BMN <weblate@yopmail.com>
Co-authored-by: p4ssen <244045932@qq.com>
Co-authored-by: Bai <batuhanakkurt000@gmail.com>
Co-authored-by: Ettore Atalan <atalanttore@googlemail.com>
Co-authored-by: metezd <itoldyouthat@protonmail.com>
Co-authored-by: ssantos <ssantos@web.de>
Co-authored-by: Ömer Faruk Çakmak <omerfarukckmk@protonmail.com>
Co-authored-by: Max Vyr <maxvy@proton.me>
Co-authored-by: Translator-3000 <weblate.m1d0h@8shield.net>
2023-01-15 03:58:20 +00:00
Alexander Capehart
5f9169fb78
music: add non-standard artist fields
Add non-standard ARTISTS/ALBUMARTIST fields to reasonable places in the
ID3v2 and Vorbis parsers.

Turns out these are stupidly common when multi-artist information is
used in order to maximize player compatibility. More or less, TPE1 and
ARTIST will be filled in with delimited values, while ARTISTS will be
filled in with native multi-value information.

This is stupid and insane, but I want to prioritize a good out of box
experience without much user fiddling, so I may as well implement
these.

Currently, I'm only adding the non-standard fields that I know exist.
This doesn't include hypothetical but unencountered fields like
TXXX:ALBUMARTISTS.
2023-01-14 20:52:43 -07:00
Alexander Capehart
176f0cc465
list: add update instructions framework
Add the basic framework that should allow for different types of list
updates in different situations.
2023-01-14 19:55:09 -07:00
Alexander Capehart
5988908b56
playback: add ability to play/shuffle selection
Add the ability to play or shuffle a selection.

This finally allows "arbitrary" playback to be created from any
combination of songs/albums/artist/genres, rather than just from
pre-defined options.

Resolves #313.
2023-01-10 08:12:47 -07:00
Alexander Capehart
692839e8fe
playback: re-add state persistence
Re-add state persistence with support for the new queue.

This should finally finish the new queue system.
2023-01-09 13:53:37 -07:00
Alexander Capehart
9bd78bc855
music: add uid and raw tests
Add tests for the relatively simple Music.UID and Raw data classes
(excluding Song.Raw).

This should make sure most of the grouping code works, making the
library tests theoretically much simpler.
2023-01-08 10:32:22 -07:00
Alexander Capehart
0199d2f343
playback: refactor queue persistence
Refactor the queue saved state system to make it easier to imlement in
the playback state database.
2023-01-08 09:52:56 -07:00
Alexander Capehart
82a9c08666
playback: re-add queue sanitization
Add library-change sanitization to the queue.

It is hard to describe how unbeliveably difficult this was. It's so
hard to wrap your head around this system and I really would have never
used it if it was not for ExoPlayer's insistence on it's busted
ShuffleOrder code.

Re-enabling state persistence should be easier following this.
2023-01-07 15:47:12 -07:00
Alexander Capehart
bef4dca0ce
playback: fix queue moves
Fix moving items with the new queue system.

This took a bit of thinking, but I think this is the correct way to
implement this in a future-proof manner.
2023-01-07 12:01:43 -07:00
Alexander Capehart
5adc87550e
music: make package for auxillary music info
Like the library package, move out tag information (Date/Album.Type)
into a separate package.

Date never really made sense as base-package information.
2023-01-07 09:33:05 -07:00
Alexander Capehart
a2b51825e8
music: add tests for album types
Add tests for Album.Type.

Other tests for the music library will be done separately.
2023-01-07 09:21:15 -07:00
Alexander Capehart
dc73f96ba8
list: clear selection before navigating back
When the back button is pressed, clear the current selection before
navigating back.

This is something I was planning to do but then completely forgot about
when implementing multi-select.

Resolves #316.
2023-01-07 08:19:12 -07:00
Alexander Capehart
6fa53ab873
playback: mostly hide playback mode details
Mostly hide the code that handles starting playback based on a given
mode into their respective ViewModels.

Again, makes testing easier.
2023-01-06 20:00:18 -07:00
Alexander Capehart
ac9f50c0a0
settings: do not use sharedpreference listener
Switch back to using settings-specific listeners rather than the
SharedPreference listener.

Again, this is due to the need to decouple android code from settings.
It also allows us to fully obscure the details of what settings we are
actually working with.
2023-01-06 19:20:56 -07:00
Alexander Capehart
1b19b698a1
settings: decouple
Decouple the settings god object into feature-specific settings.

This should make testing settings-dependent code much easier, as it no
longer requires a context.
2023-01-06 16:17:57 -07:00
Alexander Capehart
3502af33e7
music: add support for date-encoding years
Add support for date-encoding years such as "YYYYMMDD".

This is a semi-common timestamp edge-case, it seems, primarily due to
taggers wanting to encode date information in older tag formats.
2023-01-06 13:47:18 -07:00
Alexander Capehart
a29875b5bf
music: decouple library from musicstore/indexer
De-couple the library data structure (and library grouping) from
MusicStore and Indexer.

This should make library creation *much* easier to test.
2023-01-06 12:04:27 -07:00
Alexander Capehart
a5ea4af5c4
music: finish parsing tests
Finish ParsingUtil tests.
2023-01-05 20:08:12 -07:00
Alexander Capehart
782b570b38
music: add texttags tests
Add tests for the TextTags processing wrapper.
2023-01-05 14:24:30 -07:00
Alexander Capehart
502dd8ccc4
actions: add testing step
Add a testing command to the CI workflow.
2023-01-05 12:56:46 -07:00
Alexander Capehart
a5e78e614f
music: complete non-android date tests
Complete the date tests that don't require a context.
2023-01-05 12:55:15 -07:00
Alexander Capehart
78e3739a68
testing: add unit test framework
Add junit/espresso alongside a few basic tests.

I am nowhere near close to being "done" with this at all.
2023-01-05 12:27:37 -07:00
Alexander Capehart
a10cf1e0c3
music: fix enqueueing
Fix enqueuing issues encountered during testing.
2023-01-05 11:38:32 -07:00
Alexander Capehart
743220d0aa
replaygain: revert back to copy no-op
Turns out using isActive to indicate that the AudioProcessor is a no-op
is too unreliable due to how they are managed internally.

Instead, I really do just have to use a copy. Once again ExoPlayer
picks the most absurd possible design choices for no good reason.

Resolves #293.
2023-01-05 11:15:06 -07:00
Alexander Capehart
c0f1b9423f
music: band-aid queue move issues
Band-aid certain types of queue moves that will fail to cauase the
index to correct. Just do this by assuming all queue moves are swaps
and then forgetting about it.

I'll need to figure out how to "properly" do this eventually.
2023-01-05 10:04:19 -07:00
Weblate (bot)
41dd9bf695
Translations update from Hosted Weblate (#308)
* music: allow editing past queue items

Allow past and currently playing queue items to be edited, instead of
just future queue items.

This was a somewhat requested feature that was impossible with the
prior queue system. With some fixes, the new queue system can now be
used to do this.

This even works with edge cases like removing the currently playing
song. Albeit, it's likely that more bug fixes and testing will be
needed.

Resolves #223.

* Translated using Weblate (Spanish)

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/es/

* Translated using Weblate (Lithuanian)

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/lt/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/zh_Hans/

* Translated using Weblate (Czech)

Currently translated at 100.0% (27 of 27 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/cs/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (27 of 27 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/es/

* Translated using Weblate (Lithuanian)

Currently translated at 100.0% (27 of 27 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/lt/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (27 of 27 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/zh_Hans/

* Translated using Weblate (Czech)

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/cs/

* Translated using Weblate (Croatian)

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/hr/

* Translated using Weblate (Ukrainian)

Currently translated at 26.2% (64 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/uk/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/es/

* Translated using Weblate (Russian)

Currently translated at 99.5% (243 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/ru/

* Translated using Weblate (Ukrainian)

Currently translated at 51.6% (126 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/uk/

* Translated using Weblate (Ukrainian)

Currently translated at 96.2% (26 of 27 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/uk/

* Translated using Weblate (Ukrainian)

Currently translated at 70.9% (173 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/uk/

* Translated using Weblate (Ukrainian)

Currently translated at 72.5% (177 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/uk/

* Translated using Weblate (German)

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/de/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/pt_BR/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/pt_BR/

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/uk/

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (27 of 27 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/uk/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/pt_BR/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (27 of 27 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/pt_BR/

* Translated using Weblate (German)

Currently translated at 100.0% (27 of 27 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/de/

Co-authored-by: Alexander Capehart <alex@oxycblt.org>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: Vaclovas lntas <vaclovas1999@gmail.com>
Co-authored-by: Eric <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: Fjuro <ifjuro@proton.me>
Co-authored-by: Milo Ivir <mail@milotype.de>
Co-authored-by: BMN <weblate@yopmail.com>
Co-authored-by: kirill blaze <kirillblaze2@gmail.com>
Co-authored-by: Ettore Atalan <atalanttore@googlemail.com>
Co-authored-by: Edmundo Nocchi <edmundonocchii@gmail.com>
Co-authored-by: santiago046 <comehere665@gmail.com>
Co-authored-by: qwerty287 <ndev@web.de>
Co-authored-by: Alexander Capehart <oxycblt@abstractr.net>
2023-01-05 09:33:46 -07:00
Alexander Capehart
3f0a532a2d
music: allow editing past queue items
Allow past and currently playing queue items to be edited, instead of
just future queue items.

This was a somewhat requested feature that was impossible with the
prior queue system. With some fixes, the new queue system can now be
used to do this.

This even works with edge cases like removing the currently playing
song. Albeit, it's likely that more bug fixes and testing will be
needed.

Resolves #223.
2023-01-05 09:31:48 -07:00
Alexander Capehart
16513e6547
playback: implement new queue system
Implement a new heap-based queue system into the app.

Unlike the prior queue, this one no longer keeps one canonical queue
and then simply swaps between shuffled and ordered queues by
re-grabbing the song list currently being played. Instead, the same
"heap" of songs is used throughout, with only the way they are
interpreted changing.

This enables a bunch of near functionality that would not be possible
with the prior queue system, but is also really unstable and needs a
lot more testing.

Currently this commit disables state saving at the moment. It will be
re-enabled when the new queue can be reliably restored.
2023-01-04 19:24:30 -07:00