core/playlist: Remove remaining dynamic playlist code
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
parent
2ff7113668
commit
90e0b3ed78
|
@ -4,46 +4,18 @@
|
|||
#include <core/playlist.h>
|
||||
#include <core/playlists/system.h>
|
||||
|
||||
static struct queue playlist_q;
|
||||
static enum playlist_t playlist_cur;
|
||||
static const gchar *playlist_names[5] =
|
||||
{ "Favorites", "Hidden", "Unplayed", "Most Played", "Least Played" };
|
||||
|
||||
|
||||
static void __playlist_fill_dynamic(enum playlist_t plist)
|
||||
{
|
||||
unsigned int count = 0, average = 0;
|
||||
struct db_entry *track, *next;
|
||||
|
||||
if (plist == PL_MOST_PLAYED || plist == PL_LEAST_PLAYED)
|
||||
average = track_db_average_plays();
|
||||
|
||||
db_for_each(track, next, track_db_get()) {
|
||||
count = TRACK(track)->tr_count;
|
||||
if (plist == PL_UNPLAYED && count == 0)
|
||||
queue_add(&playlist_q, TRACK(track));
|
||||
else if (plist == PL_MOST_PLAYED && count > average)
|
||||
queue_add(&playlist_q, TRACK(track));
|
||||
else if (plist == PL_LEAST_PLAYED && count <= average && count > 0)
|
||||
queue_add(&playlist_q, TRACK(track));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void playlist_init(struct queue_ops *ops)
|
||||
{
|
||||
queue_init(&playlist_q, Q_ENABLED | Q_REPEAT, ops);
|
||||
queue_sort(&playlist_q, COMPARE_ARTIST, true);
|
||||
queue_sort(&playlist_q, COMPARE_YEAR, false);
|
||||
queue_sort(&playlist_q, COMPARE_TRACK, false);
|
||||
queue_set_flag(&playlist_q, Q_NO_SORT);
|
||||
|
||||
pl_system_init(ops);
|
||||
}
|
||||
|
||||
void playlist_deinit()
|
||||
{
|
||||
queue_deinit(&playlist_q);
|
||||
pl_system_deinit();
|
||||
}
|
||||
|
||||
|
@ -77,19 +49,9 @@ bool playlist_has(enum playlist_t plist, struct track *track)
|
|||
void playlist_select(enum playlist_t plist)
|
||||
{
|
||||
playlist_cur = plist;
|
||||
|
||||
if (playlist_get_queue(plist) != &playlist_q)
|
||||
return;
|
||||
|
||||
queue_clear(&playlist_q);
|
||||
queue_set_flag(&playlist_q, Q_ADD_FRONT);
|
||||
__playlist_fill_dynamic(plist);
|
||||
queue_unset_flag(&playlist_q, Q_ADD_FRONT);
|
||||
queue_resort(&playlist_q);
|
||||
}
|
||||
|
||||
struct queue *playlist_get_queue(enum playlist_t plist)
|
||||
{
|
||||
struct queue *ret = pl_system.pl_get_queue(playlist_names[plist]);
|
||||
return ret ? ret : &playlist_q;
|
||||
return pl_system.pl_get_queue(playlist_names[plist]);
|
||||
}
|
||||
|
|
|
@ -114,63 +114,6 @@ static void test_remove()
|
|||
test_equal(queue_size(q), 0);
|
||||
}
|
||||
|
||||
static void test_dynamic()
|
||||
{
|
||||
struct db_entry *dbe, *next;
|
||||
unsigned int i, average = 0;
|
||||
//struct track *track;
|
||||
struct queue *q;
|
||||
|
||||
/* Set play count to (track_number - 1) (average = 6) */
|
||||
db_for_each(dbe, next, track_db_get()) {
|
||||
for (i = 1; i < TRACK(dbe)->tr_track; i++)
|
||||
track_played(TRACK(dbe));
|
||||
average += TRACK(dbe)->tr_count;
|
||||
}
|
||||
average /= track_db_get()->db_size;
|
||||
|
||||
/* Only one unplayed track (tr_track == 1) */
|
||||
playlist_update(PL_UNPLAYED);
|
||||
while (idle_run_task()) {}
|
||||
q = playlist_get_queue(PL_UNPLAYED);
|
||||
test_equal(playlist_add(PL_UNPLAYED, track_get(1)), (bool)false);
|
||||
test_equal(playlist_remove(PL_UNPLAYED, queue_at(q, 0)), (bool)true);
|
||||
test_equal(playlist_add(PL_UNPLAYED, track_get(0)), (bool)true);
|
||||
test_equal(queue_size(q), 1);
|
||||
test_equal(queue_at(q, 0)->tr_track, 1);
|
||||
test_equal(queue_at(q, 0)->tr_count, 0);
|
||||
|
||||
/* Six tracks have tr_count <= average && tr_count > 0 */
|
||||
playlist_update(PL_LEAST_PLAYED);
|
||||
while (idle_run_task()) {}
|
||||
q = playlist_get_queue(PL_LEAST_PLAYED);
|
||||
playlist_select(PL_LEAST_PLAYED);
|
||||
test_equal(playlist_add(PL_LEAST_PLAYED, track_get(0)), (bool)false);
|
||||
test_equal(queue_size(q), 6);
|
||||
/*for (i = 0; i < queue_size(q); i++) {
|
||||
track = queue_at(q, i);
|
||||
test_loop_equal(track->tr_track, i + 2, i);
|
||||
test_loop_equal(track->tr_count, i + 1, i);
|
||||
test_loop_equal(playlist_remove(PL_LEAST_PLAYED, track),
|
||||
(bool)false, i);
|
||||
} test_loop_passed();*/
|
||||
|
||||
/* Six tracks have tr_count > average */
|
||||
playlist_update(PL_MOST_PLAYED);
|
||||
while (idle_run_task()) {}
|
||||
q = playlist_get_queue(PL_MOST_PLAYED);
|
||||
playlist_select(PL_MOST_PLAYED);
|
||||
test_equal(playlist_add(PL_MOST_PLAYED, track_get(0)), (bool)false);
|
||||
test_equal(queue_size(q), 6);
|
||||
/*for (i = 0; i < queue_size(q); i++) {
|
||||
track = queue_at(q, i);
|
||||
test_loop_equal(track->tr_track, i + 8, i);
|
||||
test_loop_equal(track->tr_count, i + 7, i);
|
||||
test_loop_equal(playlist_remove(PL_MOST_PLAYED, track),
|
||||
(bool)false, i);
|
||||
} test_loop_passed();*/
|
||||
}
|
||||
|
||||
static void test_deinit()
|
||||
{
|
||||
struct queue *q = playlist_get_queue(PL_UNPLAYED);
|
||||
|
@ -187,6 +130,5 @@ DECLARE_UNIT_TESTS(
|
|||
UNIT_TEST("Playlist Initialization", test_init),
|
||||
UNIT_TEST("Playlist Add Track", test_add),
|
||||
UNIT_TEST("Playlist Remove Track", test_remove),
|
||||
UNIT_TEST("Playlist Dynamic Generation", test_dynamic),
|
||||
UNIT_TEST("Playlist Deinit", test_deinit),
|
||||
);
|
||||
|
|
Loading…
Reference in New Issue