[gnome-todo] sidebar: Add a stack and the Archive listbox
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-todo] sidebar: Add a stack and the Archive listbox
- Date: Sun, 9 Jun 2019 19:51:10 +0000 (UTC)
commit e3bebcf55897b15c06c9ed4c0106cb085607b66e
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Sat Jun 8 21:50:54 2019 -0300
sidebar: Add a stack and the Archive listbox
src/sidebar/gtd-sidebar.c | 25 ++++++++------
src/sidebar/gtd-sidebar.ui | 81 ++++++++++++++++++++++++++++++++++++++++++----
2 files changed, 90 insertions(+), 16 deletions(-)
---
diff --git a/src/sidebar/gtd-sidebar.c b/src/sidebar/gtd-sidebar.c
index 0f0153d..fda3444 100644
--- a/src/sidebar/gtd-sidebar.c
+++ b/src/sidebar/gtd-sidebar.c
@@ -39,7 +39,10 @@ struct _GtdSidebar
{
GtkBox parent;
+ GtkListBox *archive_listbox;
+ GtkListBoxRow *archive_row;
GtkListBox *listbox;
+ GtkStack *stack;
GtkStack *panel_stack;
GtdPanel *task_list_panel;
@@ -95,13 +98,10 @@ static void
add_task_list (GtdSidebar *self,
GtdTaskList *list)
{
- GtkWidget *row;
-
g_debug ("Adding task list '%s'", gtd_task_list_get_name (list));
- row = gtd_sidebar_list_row_new (list);
-
- gtk_list_box_prepend (self->listbox, row);
+ gtk_list_box_prepend (self->listbox, gtd_sidebar_list_row_new (list));
+ gtk_list_box_prepend (self->archive_listbox, gtd_sidebar_list_row_new (list));
}
static void
@@ -121,13 +121,10 @@ static void
add_provider (GtdSidebar *self,
GtdProvider *provider)
{
- GtkWidget *row;
-
g_debug ("Adding provider '%s'", gtd_provider_get_name (provider));
- row = gtd_sidebar_provider_row_new (provider);
-
- gtk_list_box_prepend (self->listbox, row);
+ gtk_list_box_prepend (self->listbox, gtd_sidebar_provider_row_new (provider));
+ gtk_list_box_prepend (self->archive_listbox, gtd_sidebar_provider_row_new (provider));
}
static gint
@@ -338,6 +335,10 @@ on_listbox_row_activated_cb (GtkListBox *panels_listbox,
/* Show the task list panel */
gtk_stack_set_visible_child (self->panel_stack, GTK_WIDGET (self->task_list_panel));
}
+ else if (row == self->archive_row)
+ {
+ gtk_stack_set_visible_child (self->stack, GTK_WIDGET (self->archive_listbox));
+ }
else
{
g_assert_not_reached ();
@@ -563,7 +564,11 @@ gtd_sidebar_class_init (GtdSidebarClass *klass)
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/todo/ui/sidebar/gtd-sidebar.ui");
+ gtk_widget_class_bind_template_child (widget_class, GtdSidebar, archive_listbox);
+ gtk_widget_class_bind_template_child (widget_class, GtdSidebar, archive_row);
gtk_widget_class_bind_template_child (widget_class, GtdSidebar, listbox);
+ gtk_widget_class_bind_template_child (widget_class, GtdSidebar, stack);
+
gtk_widget_class_bind_template_callback (widget_class, on_listbox_row_activated_cb);
gtk_widget_class_set_css_name (widget_class, "sidebar");
diff --git a/src/sidebar/gtd-sidebar.ui b/src/sidebar/gtd-sidebar.ui
index ce02f14..7fa1523 100644
--- a/src/sidebar/gtd-sidebar.ui
+++ b/src/sidebar/gtd-sidebar.ui
@@ -8,13 +8,82 @@
<property name="min-content-width">300</property>
<property name="hscrollbar-policy">never</property>
<child>
- <object class="GtkListBox" id="listbox">
+ <object class="GtkStack" id="stack">
<property name="expand">1</property>
- <property name="selection_mode">browse</property>
- <signal name="row-activated" handler="on_listbox_row_activated_cb" object="GtdSidebar"
swapped="no"/>
- <style>
- <class name="sidebar"/>
- </style>
+
+ <!-- Main Listbox -->
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">main</property>
+ <property name="child">
+ <object class="GtkListBox" id="listbox">
+ <property name="expand">1</property>
+ <property name="selection_mode">browse</property>
+ <signal name="row-activated" handler="on_listbox_row_activated_cb" object="GtdSidebar"
swapped="no"/>
+ <style>
+ <class name="sidebar"/>
+ </style>
+
+ <!-- Archive row -->
+ <child>
+ <object class="GtkListBoxRow" id="archive_row">
+ <property name="can_focus">1</property>
+ <child>
+ <object class="GtkBox">
+ <property name="margin">10</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkImage">
+ <property name="icon-name">folder-symbolic</property>
+ <property name="pixel-size">16</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="hexpand">1</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Archive</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="icon-name">go-next-symbolic</property>
+ <property name="pixel-size">16</property>
+ <style>
+ <class name="sidebar-icon"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+
+ </object>
+ </property>
+ </object>
+ </child>
+
+ <!-- Archived lists -->
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">archive</property>
+ <property name="child">
+ <object class="GtkListBox" id="archive_listbox">
+ <property name="expand">1</property>
+ <property name="selection_mode">browse</property>
+ <signal name="row-activated" handler="on_listbox_row_activated_cb" object="GtdSidebar"
swapped="no"/>
+ <style>
+ <class name="sidebar"/>
+ </style>
+ </object>
+ </property>
+ </object>
+ </child>
+
</object>
</child>
</object>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]