gui/sidebar: Add a function for updating playlist text

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2016-08-30 14:13:02 -04:00
parent b3efd9d84d
commit 1291a0d139
3 changed files with 21 additions and 24 deletions

View File

@ -10,12 +10,6 @@
#include <gui/queue.h>
#include <gui/sidebar.h>
enum playlist_sidebar_columns {
P_SB_IMAGE,
P_SB_NAME,
P_SB_TYPE,
};
static bool p_filter_enable = true;
static bool p_init_done = false;
@ -27,22 +21,6 @@ static inline void __playlist_filter_get_iter(GtkTreeIter *iter, GtkTreeIter *ch
child, iter);
}
static void __playlist_set_size(GtkTreeIter *iter, const gchar *name)
{
enum playlist_type_t type = gui_sidebar_iter_type(iter);
unsigned int size = playlist_size(type, name);
const gchar *fmt = "%s\n%d track%s";
gchar *text;
if (playlist_cur() == playlist_get(type, name))
fmt = "<b>%s\n%d track%s</b>";
text = g_markup_printf_escaped(fmt, name, size, (size == 1) ? "" : "s");
gtk_tree_store_set(gui_sidebar_store(), iter, P_SB_NAME, text, -1);
g_free(text);
}
void __playlist_row_activated(GtkTreeView *treeview, GtkTreePath *path,
GtkTreeViewColumn *col, gpointer data)
{
@ -62,7 +40,7 @@ void __playlist_row_activated(GtkTreeView *treeview, GtkTreePath *path,
name = gui_sidebar_iter_name(&child);
playlist_select(gui_sidebar_iter_type(&child), name);
__playlist_set_size(&child, name);
gui_sidebar_iter_update(&child);
g_free(name);
name = playlist_get_name(type, id);
@ -80,7 +58,7 @@ static bool __playlist_queue_set_size(struct queue *queue, GtkTreeIter *iter)
if (match)
match = string_match(name, gq->gq_text);
if (match)
__playlist_set_size(iter, name);
gui_sidebar_iter_update(iter);
g_free(name);
return match;

View File

@ -281,6 +281,22 @@ void gui_sidebar_iter_append_child(GtkTreeIter *iter, struct playlist *playlist,
__gui_sidebar_set_playlist(&new, playlist, image);
}
void gui_sidebar_iter_update(GtkTreeIter *iter)
{
enum playlist_type_t type = gui_sidebar_iter_type(iter);
gchar *name, *text;
if (type >= PL_MAX_TYPE)
return;
name = gui_sidebar_iter_name(iter);
text = __gui_sidebar_size_str(playlist_get(type, name));
gtk_tree_store_set(gui_sidebar_store(), iter, SB_NAME, text, -1);
g_free(name);
g_free(text);
}
gboolean gui_sidebar_iter_find(GtkTreeIter *iter, const gchar *name,
enum playlist_type_t type)
{

View File

@ -38,6 +38,9 @@ void gui_sidebar_iter_sort_child(GtkTreeIter *, struct playlist *,
void gui_sidebar_iter_append_child(GtkTreeIter *, struct playlist *,
const gchar *);
/* Called to update the playlist at the current iterator. */
void gui_sidebar_iter_update(GtkTreeIter *);
/*
* Called to find a playlist with the given name and type,
* starting from the current iterator position.