[gnome-todo] sidebar: Add a stack and the Archive listbox



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]