/* * Copyright 2016 (c) Anna Schumaker. */ #include #include #include 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); }