core/playlist: Move playlist_add() out of the playlist namespace
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
parent
82ed2f2dc0
commit
0e3d6251d3
|
@ -21,6 +21,9 @@ public:
|
||||||
struct set_iter it;
|
struct set_iter it;
|
||||||
|
|
||||||
clear();
|
clear();
|
||||||
|
if (!ent)
|
||||||
|
return;
|
||||||
|
|
||||||
queue_set_flag(this, Q_ADD_FRONT);
|
queue_set_flag(this, Q_ADD_FRONT);
|
||||||
|
|
||||||
set_for_each(&ent->ie_set, &it)
|
set_for_each(&ent->ie_set, &it)
|
||||||
|
@ -125,16 +128,16 @@ void playlist_deinit()
|
||||||
db_deinit(&playlist_db);
|
db_deinit(&playlist_db);
|
||||||
}
|
}
|
||||||
|
|
||||||
void playlist :: add(struct track *track, const std::string &name)
|
void playlist_add(const gchar *name, struct track *track)
|
||||||
{
|
{
|
||||||
if (!( (name == "Banned") || (name == "Favorites") ))
|
if (!track || !name || !__playlist_is_static(name))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!playlist_has(name.c_str(), track)) {
|
if (!playlist_has(name, track)) {
|
||||||
index_insert(&playlist_db, name.c_str(), track->tr_dbe.dbe_index);
|
index_insert(&playlist_db, name, track->tr_dbe.dbe_index);
|
||||||
if (cur_plist == name)
|
if (cur_plist == name)
|
||||||
queue_add(&playlist_q, track);
|
queue_add(&playlist_q, track);
|
||||||
if (name == "Banned")
|
if (string_compare(name, "Banned") == 0)
|
||||||
queue_remove_all(collection_get_queue(), track);
|
queue_remove_all(collection_get_queue(), track);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,7 +41,7 @@ public:
|
||||||
|
|
||||||
tab_selected_ids(ids);
|
tab_selected_ids(ids);
|
||||||
for (unsigned int i = 0; i < ids.size(); i++)
|
for (unsigned int i = 0; i < ids.size(); i++)
|
||||||
playlist :: add(track_get(ids[i]), "Banned");
|
playlist_add("Banned", track_get(ids[i]));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -127,7 +127,7 @@ static void on_ban()
|
||||||
struct track *track = audio :: current_track();
|
struct track *track = audio :: current_track();
|
||||||
if (o_ban->get_active()) {
|
if (o_ban->get_active()) {
|
||||||
if (!playlist_has("Banned", track)) {
|
if (!playlist_has("Banned", track)) {
|
||||||
playlist :: add(track, "Banned");
|
playlist_add("Banned", track);
|
||||||
audio :: next();
|
audio :: next();
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
|
@ -138,7 +138,7 @@ static void on_favorite()
|
||||||
{
|
{
|
||||||
struct track *track = audio :: current_track();
|
struct track *track = audio :: current_track();
|
||||||
if (o_fav->get_active())
|
if (o_fav->get_active())
|
||||||
playlist :: add(track, "Favorites");
|
playlist_add("Favorites", track);
|
||||||
else
|
else
|
||||||
playlist :: del(track, "Favorites");
|
playlist :: del(track, "Favorites");
|
||||||
}
|
}
|
||||||
|
|
|
@ -226,7 +226,7 @@ bool Tab :: tab_add_to_playlist(const std::string &playlist)
|
||||||
|
|
||||||
tab_selected_ids(ids);
|
tab_selected_ids(ids);
|
||||||
for (unsigned int i = 0; i < ids.size(); i++)
|
for (unsigned int i = 0; i < ids.size(); i++)
|
||||||
playlist :: add(track_get(ids[i]), playlist);
|
playlist_add(playlist.c_str(), track_get(ids[i]));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,17 +26,6 @@ extern "C" {
|
||||||
namespace playlist
|
namespace playlist
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
|
||||||
* Add a track to a playlist.
|
|
||||||
*
|
|
||||||
* Tracks added to the Banned playlist will be removed from
|
|
||||||
* the library queue.
|
|
||||||
*
|
|
||||||
* @param track The track to add.
|
|
||||||
* @param name The name of the playlist to add to.
|
|
||||||
*/
|
|
||||||
void add(struct track *, const std::string &);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove a track from a playlist.
|
* Remove a track from a playlist.
|
||||||
*
|
*
|
||||||
|
@ -65,6 +54,10 @@ void playlist_init(struct queue_ops *);
|
||||||
void playlist_deinit();
|
void playlist_deinit();
|
||||||
|
|
||||||
|
|
||||||
|
/* Called to add a track to a playlist. */
|
||||||
|
void playlist_add(const gchar *, struct track *);
|
||||||
|
|
||||||
|
|
||||||
/* Called to check if a specific track is in the playlist. */
|
/* Called to check if a specific track is in the playlist. */
|
||||||
bool playlist_has(const gchar *, struct track *);
|
bool playlist_has(const gchar *, struct track *);
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#include <core/collection.h>
|
#include <core/collection.h>
|
||||||
#include <core/filter.h>
|
#include <core/filter.h>
|
||||||
|
#include <core/idle.h>
|
||||||
#include <core/tags/tags.h>
|
#include <core/tags/tags.h>
|
||||||
}
|
}
|
||||||
#include <core/playlist.h>
|
#include <core/playlist.h>
|
||||||
|
@ -35,6 +36,48 @@ static void test_init()
|
||||||
list = g_slist_next(list);
|
list = g_slist_next(list);
|
||||||
test_equal(GPOINTER_TO_INT(list->data), COMPARE_TRACK);
|
test_equal(GPOINTER_TO_INT(list->data), COMPARE_TRACK);
|
||||||
|
|
||||||
|
/* Add tracks to the collection. */
|
||||||
|
collection_add("tests/Music/Hyrule Symphony/");
|
||||||
|
while (idle_run_task());
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_add()
|
||||||
|
{
|
||||||
|
struct queue *c = collection_get_queue();
|
||||||
|
struct queue *q = playlist_get_queue();
|
||||||
|
struct track *track = track_get(0);
|
||||||
|
|
||||||
|
playlist_add(NULL, track);
|
||||||
|
test_equal(playlist_has(NULL, track), false);
|
||||||
|
|
||||||
|
playlist_add("Favorites", NULL);
|
||||||
|
test_equal(playlist_has("Favorites", NULL), false);
|
||||||
|
|
||||||
|
playlist_add("No Playlist", track);
|
||||||
|
test_equal(playlist_has("No Playlist", track), false);
|
||||||
|
|
||||||
|
test_equal(playlist_has("Favorites", track), false);
|
||||||
|
playlist_add("Favorites", track);
|
||||||
|
test_equal(playlist_has("Favorites", track), true);
|
||||||
|
test_equal(queue_size(q), 0);
|
||||||
|
|
||||||
|
playlist_select("Favorites");
|
||||||
|
test_equal(queue_size(q), 1);
|
||||||
|
playlist_add("Favorites", track);
|
||||||
|
test_equal(queue_size(q), 1);
|
||||||
|
playlist_add("Favorites", track_get(1));
|
||||||
|
test_equal(queue_size(q), 2);
|
||||||
|
|
||||||
|
track = track_get(2);
|
||||||
|
playlist_select("Banned");
|
||||||
|
test_equal(queue_size(q), 0);
|
||||||
|
test_equal(queue_size(c), 13);
|
||||||
|
test_equal(playlist_has("Banned", track), false);
|
||||||
|
playlist_add("Banned", track);
|
||||||
|
test_equal(playlist_has("Banned", track), true);
|
||||||
|
test_equal(queue_size(q), 1);
|
||||||
|
test_equal(queue_size(c), 12);
|
||||||
|
|
||||||
playlist_deinit();
|
playlist_deinit();
|
||||||
collection_deinit();
|
collection_deinit();
|
||||||
tags_deinit();
|
tags_deinit();
|
||||||
|
@ -71,7 +114,7 @@ static void test_queue()
|
||||||
test_equal(queue_size(q), (unsigned)12);
|
test_equal(queue_size(q), (unsigned)12);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_add()
|
static void test_add_old()
|
||||||
{
|
{
|
||||||
queue *l = collection_get_queue();
|
queue *l = collection_get_queue();
|
||||||
queue *q = playlist_get_queue();
|
queue *q = playlist_get_queue();
|
||||||
|
@ -79,19 +122,19 @@ static void test_add()
|
||||||
|
|
||||||
playlist_select("Favorites");
|
playlist_select("Favorites");
|
||||||
|
|
||||||
playlist :: add(track_get(5), "Banned");
|
playlist_add("Banned", track_get(5));
|
||||||
ent = playlist :: get_tracks("Banned");
|
ent = playlist :: get_tracks("Banned");
|
||||||
test_equal(set_size(&ent->ie_set), (size_t)5);
|
test_equal(set_size(&ent->ie_set), (size_t)5);
|
||||||
test_equal(queue_size(q), (unsigned)8);
|
test_equal(queue_size(q), (unsigned)8);
|
||||||
test_equal(queue_size(l), (unsigned)19);
|
test_equal(queue_size(l), (unsigned)19);
|
||||||
|
|
||||||
playlist :: add(track_get(16), "Favorites");
|
playlist_add("Favorites", track_get(16));
|
||||||
playlist :: add(track_get(5), "Favorites");
|
playlist_add("Favorites", track_get(5));
|
||||||
ent = playlist :: get_tracks("Favorites");
|
ent = playlist :: get_tracks("Favorites");
|
||||||
test_equal(set_size(&ent->ie_set), (size_t)9);
|
test_equal(set_size(&ent->ie_set), (size_t)9);
|
||||||
test_equal(queue_size(q), (unsigned)9);
|
test_equal(queue_size(q), (unsigned)9);
|
||||||
|
|
||||||
playlist :: add(track_get(6), "No Playlist");
|
playlist_add("No Playlist", track_get(6));
|
||||||
test_equal(playlist :: get_tracks("No Playlist"), IDX_NULL);
|
test_equal(playlist :: get_tracks("No Playlist"), IDX_NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,8 +195,9 @@ static void test_deinit()
|
||||||
|
|
||||||
DECLARE_UNIT_TESTS(
|
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 Queue", test_queue),
|
UNIT_TEST("Playlist Queue", test_queue),
|
||||||
UNIT_TEST("Playlist Add", test_add),
|
UNIT_TEST("Playlist Add", test_add_old),
|
||||||
UNIT_TEST("Playlist Delete", test_delete),
|
UNIT_TEST("Playlist Delete", test_delete),
|
||||||
UNIT_TEST("Playlist Has", test_has),
|
UNIT_TEST("Playlist Has", test_has),
|
||||||
UNIT_TEST("Playlist Deinit", test_deinit),
|
UNIT_TEST("Playlist Deinit", test_deinit),
|
||||||
|
|
Loading…
Reference in New Issue