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());
|
__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)
|
static void *__playlist_init(struct queue *queue, void *data)
|
||||||
{
|
{
|
||||||
struct playlist *playlist = (struct playlist *)data;
|
struct playlist *playlist = (struct playlist *)data;
|
||||||
|
|
|
@ -83,6 +83,14 @@ static inline void __gui_sidebar_filter_iter_convert(GtkTreeIter *iter,
|
||||||
child, 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,
|
static gboolean __gui_sidebar_visible_func(GtkTreeModel *model,
|
||||||
GtkTreeIter *iter,
|
GtkTreeIter *iter,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
|
@ -317,6 +325,17 @@ void gui_sidebar_filter_path_select(GtkTreePath *path)
|
||||||
g_free(name);
|
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,
|
gboolean gui_sidebar_iter_find(GtkTreeIter *iter, const gchar *name,
|
||||||
enum playlist_type_t type)
|
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. */
|
/* Called to set the playlist at the given iterator as the default. */
|
||||||
void gui_sidebar_filter_path_select(GtkTreePath *);
|
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,
|
* Called to find a playlist with the given name and type,
|
||||||
* starting from the current iterator position.
|
* starting from the current iterator position.
|
||||||
|
|
|
@ -749,6 +749,8 @@ audio-volume-medium</property>
|
||||||
<property name="enable_tree_lines">True</property>
|
<property name="enable_tree_lines">True</property>
|
||||||
<signal name="key-press-event" handler="__gui_sidebar_keypress" swapped="no"/>
|
<signal name="key-press-event" handler="__gui_sidebar_keypress" swapped="no"/>
|
||||||
<signal name="row-activated" handler="__playlist_row_activated" 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">
|
<child internal-child="selection">
|
||||||
<object class="GtkTreeSelection" id="treeview-selection3">
|
<object class="GtkTreeSelection" id="treeview-selection3">
|
||||||
<signal name="changed" handler="__gui_sidebar_selection_changed" swapped="no"/>
|
<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);
|
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 main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int ret;
|
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", test_sidebar);
|
||||||
g_test_add_func("/Gui/Sidebar/Selection", test_sidebar_selection);
|
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/Pos", test_sidebar_pos);
|
||||||
|
g_test_add_func("/Gui/Sidebar/Expand", test_sidebar_expand);
|
||||||
ret = g_test_run();
|
ret = g_test_run();
|
||||||
|
|
||||||
core_deinit();
|
core_deinit();
|
||||||
|
|
Loading…
Reference in New Issue