[gnome-todo] task-list-view: Add list selector behaviors



commit 45ed64884f0edd20f91bbe38be7911d11649fc91
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Sun Apr 26 18:06:30 2020 -0300

    task-list-view: Add list selector behaviors

 src/task-list-view/gtd-task-list-view.c | 53 ++++++++++++++++++++++++++++++++-
 src/task-list-view/gtd-task-list-view.h | 14 ++++++++-
 2 files changed, 65 insertions(+), 2 deletions(-)
---
diff --git a/src/task-list-view/gtd-task-list-view.c b/src/task-list-view/gtd-task-list-view.c
index 848cc79..49811a8 100644
--- a/src/task-list-view/gtd-task-list-view.c
+++ b/src/task-list-view/gtd-task-list-view.c
@@ -108,6 +108,7 @@ typedef struct
   GtdTaskRow             *active_row;
   GtkSizeGroup           *due_date_sizegroup;
   GtkSizeGroup           *tasklist_name_sizegroup;
+  GtdTaskListSelectorBehavior task_list_selector_behavior;
 } GtdTaskListViewPrivate;
 
 struct _GtdTaskListView
@@ -1166,6 +1167,7 @@ gtd_task_list_view_init (GtdTaskListView *self)
 
   self->priv = priv;
 
+  priv->task_list_selector_behavior = GTD_TASK_LIST_SELECTOR_BEHAVIOR_AUTOMATIC;
   priv->task_to_row = g_hash_table_new (NULL, NULL);
 
   priv->can_toggle = TRUE;
@@ -1283,7 +1285,8 @@ gtd_task_list_view_set_model (GtdTaskListView *view,
 
   schedule_scroll_to_bottom (view);
 
-  gtd_new_task_row_set_show_list_selector (GTD_NEW_TASK_ROW (priv->new_task_row), !GTD_IS_TASK_LIST (model));
+  if (priv->task_list_selector_behavior == GTD_TASK_LIST_SELECTOR_BEHAVIOR_AUTOMATIC)
+    gtd_new_task_row_set_show_list_selector (GTD_NEW_TASK_ROW (priv->new_task_row), !GTD_IS_TASK_LIST 
(model));
 
   if (!GTD_IS_TASK_LIST (model))
     return;
@@ -1600,3 +1603,51 @@ gtd_task_list_view_set_handle_subtasks (GtdTaskListView *self,
 
   g_object_notify (G_OBJECT (self), "handle-subtasks");
 }
+
+
+GtdTaskListSelectorBehavior
+gtd_task_list_view_get_task_list_selector_behavior (GtdTaskListView *self)
+{
+  GtdTaskListViewPrivate *priv;
+
+  g_return_val_if_fail (GTD_IS_TASK_LIST_VIEW (self), -1);
+
+  priv = gtd_task_list_view_get_instance_private (self);
+
+  return priv->task_list_selector_behavior;
+}
+
+void
+gtd_task_list_view_set_task_list_selector_behavior (GtdTaskListView             *self,
+                                                    GtdTaskListSelectorBehavior  behavior)
+{
+  GtdTaskListViewPrivate *priv;
+
+  g_return_if_fail (GTD_IS_TASK_LIST_VIEW (self));
+
+  priv = gtd_task_list_view_get_instance_private (self);
+
+  if (priv->task_list_selector_behavior == behavior)
+    return;
+
+  priv->task_list_selector_behavior = behavior;
+
+  switch (behavior)
+    {
+    case GTD_TASK_LIST_SELECTOR_BEHAVIOR_AUTOMATIC:
+      if (priv->model)
+        {
+          gtd_new_task_row_set_show_list_selector (GTD_NEW_TASK_ROW (priv->new_task_row),
+                                                   !GTD_IS_TASK_LIST (priv->model));
+        }
+      break;
+
+    case GTD_TASK_LIST_SELECTOR_BEHAVIOR_ALWAYS_SHOW:
+      gtd_new_task_row_set_show_list_selector (GTD_NEW_TASK_ROW (priv->new_task_row), TRUE);
+      break;
+
+    case GTD_TASK_LIST_SELECTOR_BEHAVIOR_ALWAYS_HIDE:
+      gtd_new_task_row_set_show_list_selector (GTD_NEW_TASK_ROW (priv->new_task_row), FALSE);
+      break;
+    }
+}
diff --git a/src/task-list-view/gtd-task-list-view.h b/src/task-list-view/gtd-task-list-view.h
index 0f2f3bf..a5912da 100644
--- a/src/task-list-view/gtd-task-list-view.h
+++ b/src/task-list-view/gtd-task-list-view.h
@@ -1,6 +1,6 @@
 /* gtd-task-list-view.h
  *
- * Copyright (C) 2015 Georges Basile Stavracas Neto <georges stavracas gmail com>
+ * Copyright (C) 2015-2020 Georges Basile Stavracas Neto <georges stavracas gmail com>
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -29,6 +29,13 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (GtdTaskListView, gtd_task_list_view, GTD, TASK_LIST_VIEW, GtkBox)
 
+typedef enum
+{
+  GTD_TASK_LIST_SELECTOR_BEHAVIOR_AUTOMATIC,
+  GTD_TASK_LIST_SELECTOR_BEHAVIOR_ALWAYS_SHOW,
+  GTD_TASK_LIST_SELECTOR_BEHAVIOR_ALWAYS_HIDE,
+} GtdTaskListSelectorBehavior;
+
 /**
  * GtdTaskListViewFilterFunc:
  * @task: a #GtdTask
@@ -112,6 +119,11 @@ gboolean                  gtd_task_list_view_get_handle_subtasks (GtdTaskListVie
 void                      gtd_task_list_view_set_handle_subtasks (GtdTaskListView       *self,
                                                                   gboolean               handle_subtasks);
 
+GtdTaskListSelectorBehavior gtd_task_list_view_get_task_list_selector_behavior (GtdTaskListView             
*self);
+
+void                        gtd_task_list_view_set_task_list_selector_behavior (GtdTaskListView             
*self,
+                                                                                GtdTaskListSelectorBehavior  
behavior);
+
 G_END_DECLS
 
 #endif /* GTD_TASK_LIST_VIEW_H */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]