71 lines
1.5 KiB
C
71 lines
1.5 KiB
C
/*
|
|
* Copyright 2016 (c) Anna Schumaker.
|
|
*/
|
|
#include <core/idle.h>
|
|
#include <core/playlist.h>
|
|
#include <gui/sidebar.h>
|
|
|
|
static bool __gui_pl_artist_header(GtkTreeIter *iter)
|
|
{
|
|
if (gui_sidebar_iter_first(iter))
|
|
return gui_sidebar_iter_find(iter, "Collection", PL_SYSTEM);
|
|
return false;
|
|
}
|
|
|
|
static bool __gui_pl_artist_init_idle()
|
|
{
|
|
struct db_entry *artist, *next;
|
|
struct playlist *playlist;
|
|
GtkTreeIter iter;
|
|
|
|
if (!__gui_pl_artist_header(&iter))
|
|
return false;
|
|
|
|
db_for_each(artist, next, artist_db_get()) {
|
|
playlist = ARTIST(artist)->ar_playlist;
|
|
gui_sidebar_iter_sort_child(&iter, playlist, "system-users");
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
void gui_pl_artist_init()
|
|
{
|
|
idle_schedule(IDLE_SYNC, __gui_pl_artist_init_idle, NULL);
|
|
}
|
|
|
|
bool gui_pl_artist_add(struct playlist *playlist)
|
|
{
|
|
GtkTreeIter iter;
|
|
|
|
if (!__gui_pl_artist_header(&iter))
|
|
return false;
|
|
|
|
gui_sidebar_iter_sort_child(&iter, playlist, "system-users");
|
|
return true;
|
|
}
|
|
|
|
void gui_pl_artist_update(struct playlist *playlist)
|
|
{
|
|
GtkTreeIter iter, child;
|
|
|
|
if (!__gui_pl_artist_header(&iter))
|
|
return;
|
|
if (!gui_sidebar_iter_down(&iter, &child))
|
|
return;
|
|
if (gui_sidebar_iter_find(&child, playlist->pl_name, playlist->pl_type))
|
|
gui_sidebar_iter_update(&child);
|
|
}
|
|
|
|
void gui_pl_artist_select(struct playlist *playlist)
|
|
{
|
|
GtkTreeIter iter, child;
|
|
|
|
if (!__gui_pl_artist_header(&iter))
|
|
return;
|
|
if (!gui_sidebar_iter_down(&iter, &child))
|
|
return;
|
|
if (gui_sidebar_iter_find(&child, playlist->pl_name, playlist->pl_type))
|
|
gui_sidebar_iter_select(&child);
|
|
}
|