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/playlist.h>
|
||||||
#include <core/playlists/system.h>
|
#include <core/playlists/system.h>
|
||||||
|
|
||||||
static struct queue playlist_q;
|
|
||||||
static enum playlist_t playlist_cur;
|
static enum playlist_t playlist_cur;
|
||||||
static const gchar *playlist_names[5] =
|
static const gchar *playlist_names[5] =
|
||||||
{ "Favorites", "Hidden", "Unplayed", "Most Played", "Least Played" };
|
{ "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)
|
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);
|
pl_system_init(ops);
|
||||||
}
|
}
|
||||||
|
|
||||||
void playlist_deinit()
|
void playlist_deinit()
|
||||||
{
|
{
|
||||||
queue_deinit(&playlist_q);
|
|
||||||
pl_system_deinit();
|
pl_system_deinit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,19 +49,9 @@ bool playlist_has(enum playlist_t plist, struct track *track)
|
||||||
void playlist_select(enum playlist_t plist)
|
void playlist_select(enum playlist_t plist)
|
||||||
{
|
{
|
||||||
playlist_cur = 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 *playlist_get_queue(enum playlist_t plist)
|
||||||
{
|
{
|
||||||
struct queue *ret = pl_system.pl_get_queue(playlist_names[plist]);
|
return pl_system.pl_get_queue(playlist_names[plist]);
|
||||||
return ret ? ret : &playlist_q;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -114,63 +114,6 @@ static void test_remove()
|
||||||
test_equal(queue_size(q), 0);
|
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()
|
static void test_deinit()
|
||||||
{
|
{
|
||||||
struct queue *q = playlist_get_queue(PL_UNPLAYED);
|
struct queue *q = playlist_get_queue(PL_UNPLAYED);
|
||||||
|
@ -187,6 +130,5 @@ DECLARE_UNIT_TESTS(
|
||||||
UNIT_TEST("Playlist Initialization", test_init),
|
UNIT_TEST("Playlist Initialization", test_init),
|
||||||
UNIT_TEST("Playlist Add Track", test_add),
|
UNIT_TEST("Playlist Add Track", test_add),
|
||||||
UNIT_TEST("Playlist Remove Track", test_remove),
|
UNIT_TEST("Playlist Remove Track", test_remove),
|
||||||
UNIT_TEST("Playlist Dynamic Generation", test_dynamic),
|
|
||||||
UNIT_TEST("Playlist Deinit", test_deinit),
|
UNIT_TEST("Playlist Deinit", test_deinit),
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in New Issue