core/playlist: Remove remaining dynamic playlist code

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
Anna Schumaker 2016-04-27 08:57:45 -04:00 committed by Anna Schumaker
parent 2ff7113668
commit 90e0b3ed78
2 changed files with 1 additions and 97 deletions

View File

@ -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]);
}

View File

@ -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),
);