gui/sidebar: Store the row expanded setting for later use
I want to use this to track if the user has expanded or collapsed any of the sidebar rows. Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
c9e9e3a340
commit
dc53ae271b
|
@ -27,6 +27,18 @@ void __playlist_row_activated(GtkTreeView *treeview, GtkTreePath *path,
|
|||
__gui_playlist_update_size(playlist_cur());
|
||||
}
|
||||
|
||||
void __playlist_row_collapsed(GtkTreeView *treeview, GtkTreeIter *iter,
|
||||
GtkTreePath *path, gpointer data)
|
||||
{
|
||||
gui_sidebar_filter_row_expanded(iter, false);
|
||||
}
|
||||
|
||||
void __playlist_row_expanded(GtkTreeView *treeview, GtkTreeIter *iter,
|
||||
GtkTreePath *path, gpointer data)
|
||||
{
|
||||
gui_sidebar_filter_row_expanded(iter, true);
|
||||
}
|
||||
|
||||
static void *__playlist_init(struct queue *queue, void *data)
|
||||
{
|
||||
struct playlist *playlist = (struct playlist *)data;
|
||||
|
|
|
@ -83,6 +83,14 @@ static inline void __gui_sidebar_filter_iter_convert(GtkTreeIter *iter,
|
|||
child, iter);
|
||||
}
|
||||
|
||||
static gchar *__gui_sidebar_filter_iter_name(GtkTreeIter *iter)
|
||||
{
|
||||
GtkTreeIter child;
|
||||
|
||||
__gui_sidebar_filter_iter_convert(iter, &child);
|
||||
return gui_sidebar_iter_name(&child);
|
||||
}
|
||||
|
||||
static gboolean __gui_sidebar_visible_func(GtkTreeModel *model,
|
||||
GtkTreeIter *iter,
|
||||
gpointer data)
|
||||
|
@ -317,6 +325,17 @@ void gui_sidebar_filter_path_select(GtkTreePath *path)
|
|||
g_free(name);
|
||||
}
|
||||
|
||||
void gui_sidebar_filter_row_expanded(GtkTreeIter *iter, bool expanded)
|
||||
{
|
||||
gchar *name = __gui_sidebar_filter_iter_name(iter);
|
||||
gchar *setting = g_strdup_printf("gui.sidebar.expand.%s", name);
|
||||
|
||||
settings_set(setting, expanded);
|
||||
|
||||
g_free(setting);
|
||||
g_free(name);
|
||||
}
|
||||
|
||||
gboolean gui_sidebar_iter_find(GtkTreeIter *iter, const gchar *name,
|
||||
enum playlist_type_t type)
|
||||
{
|
||||
|
|
|
@ -44,6 +44,9 @@ void gui_sidebar_iter_update(GtkTreeIter *);
|
|||
/* Called to set the playlist at the given iterator as the default. */
|
||||
void gui_sidebar_filter_path_select(GtkTreePath *);
|
||||
|
||||
/* Called when a playlist treeview row is expanded or collapsed. */
|
||||
void gui_sidebar_filter_row_expanded(GtkTreeIter *, bool);
|
||||
|
||||
/*
|
||||
* Called to find a playlist with the given name and type,
|
||||
* starting from the current iterator position.
|
||||
|
|
|
@ -749,6 +749,8 @@ audio-volume-medium</property>
|
|||
<property name="enable_tree_lines">True</property>
|
||||
<signal name="key-press-event" handler="__gui_sidebar_keypress" swapped="no"/>
|
||||
<signal name="row-activated" handler="__playlist_row_activated" swapped="no"/>
|
||||
<signal name="row-collapsed" handler="__playlist_row_collapsed" swapped="no"/>
|
||||
<signal name="row-expanded" handler="__playlist_row_expanded" swapped="no"/>
|
||||
<child internal-child="selection">
|
||||
<object class="GtkTreeSelection" id="treeview-selection3">
|
||||
<signal name="changed" handler="__gui_sidebar_selection_changed" swapped="no"/>
|
||||
|
|
|
@ -179,6 +179,52 @@ static void test_sidebar_pos()
|
|||
g_assert_cmpuint(gtk_paned_get_position(gui_sidebar()), ==, 250);
|
||||
}
|
||||
|
||||
static void test_sidebar_expand()
|
||||
{
|
||||
GtkTreeModel *model = GTK_TREE_MODEL(gui_sidebar_filter());
|
||||
GtkTreeIter iter;
|
||||
|
||||
g_assert_true(gtk_tree_model_get_iter_first(model, &iter));
|
||||
|
||||
g_assert_false( settings_has("gui.sidebar.expand.Collection"));
|
||||
gui_sidebar_filter_row_expanded(&iter, true);
|
||||
g_assert_cmpuint(settings_get("gui.sidebar.expand.Collection"), ==, 1);
|
||||
g_assert_true( settings_has("gui.sidebar.expand.Collection"));
|
||||
gui_sidebar_filter_row_expanded(&iter, false);
|
||||
g_assert_cmpuint(settings_get("gui.sidebar.expand.Collection"), ==, 0);
|
||||
|
||||
gtk_tree_model_iter_next(model, &iter);
|
||||
gtk_tree_model_iter_next(model, &iter);
|
||||
gtk_tree_model_iter_next(model, &iter);
|
||||
|
||||
g_assert_false( settings_has("gui.sidebar.expand.Playlists"));
|
||||
gui_sidebar_filter_row_expanded(&iter, true);
|
||||
g_assert_cmpuint(settings_get("gui.sidebar.expand.Playlists"), ==, 1);
|
||||
g_assert_true( settings_has("gui.sidebar.expand.Playlists"));
|
||||
gui_sidebar_filter_row_expanded(&iter, false);
|
||||
g_assert_cmpuint(settings_get("gui.sidebar.expand.Playlists"), ==, 0);
|
||||
|
||||
gtk_tree_model_iter_next(model, &iter);
|
||||
gtk_tree_model_iter_next(model, &iter);
|
||||
|
||||
g_assert_false( settings_has("gui.sidebar.expand.Dynamic"));
|
||||
gui_sidebar_filter_row_expanded(&iter, true);
|
||||
g_assert_cmpuint(settings_get("gui.sidebar.expand.Dynamic"), ==, 1);
|
||||
g_assert_true( settings_has("gui.sidebar.expand.Dynamic"));
|
||||
gui_sidebar_filter_row_expanded(&iter, false);
|
||||
g_assert_cmpuint(settings_get("gui.sidebar.expand.Dynamic"), ==, 0);
|
||||
|
||||
gtk_tree_model_iter_next(model, &iter);
|
||||
gtk_tree_model_iter_next(model, &iter);
|
||||
|
||||
g_assert_false( settings_has("gui.sidebar.expand.Library"));
|
||||
gui_sidebar_filter_row_expanded(&iter, true);
|
||||
g_assert_cmpuint(settings_get("gui.sidebar.expand.Library"), ==, 1);
|
||||
g_assert_true( settings_has("gui.sidebar.expand.Library"));
|
||||
gui_sidebar_filter_row_expanded(&iter, false);
|
||||
g_assert_cmpuint(settings_get("gui.sidebar.expand.Library"), ==, 0);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int ret;
|
||||
|
@ -195,6 +241,7 @@ int main(int argc, char **argv)
|
|||
g_test_add_func("/Gui/Sidebar", test_sidebar);
|
||||
g_test_add_func("/Gui/Sidebar/Selection", test_sidebar_selection);
|
||||
g_test_add_func("/Gui/Sidebar/Pos", test_sidebar_pos);
|
||||
g_test_add_func("/Gui/Sidebar/Expand", test_sidebar_expand);
|
||||
ret = g_test_run();
|
||||
|
||||
core_deinit();
|
||||
|
|
Loading…
Reference in New Issue