[gnome-todo] empty-list-widget: Add button to add more tasks
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-todo] empty-list-widget: Add button to add more tasks
- Date: Tue, 13 Apr 2021 15:00:27 +0000 (UTC)
commit abb45b1f88d69808deb8d81fff679cf72821c96c
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Tue Apr 13 11:50:41 2021 -0300
empty-list-widget: Add button to add more tasks
It's a simple extra widget that emits the (newly introduced) 'add-tasks'
signal, which will be used by GtdTaskListView to switch back to the task
list.
src/gui/gtd-empty-list-widget.c | 48 +++++++++++++++++++++++++++++++++++++---
src/gui/gtd-empty-list-widget.ui | 12 ++++++++++
2 files changed, 57 insertions(+), 3 deletions(-)
---
diff --git a/src/gui/gtd-empty-list-widget.c b/src/gui/gtd-empty-list-widget.c
index 2b69739c..045ad0af 100644
--- a/src/gui/gtd-empty-list-widget.c
+++ b/src/gui/gtd-empty-list-widget.c
@@ -26,6 +26,7 @@ struct _GtdEmptyListWidget
{
GtkBox parent;
+ GtkWidget *add_button;
GtkWidget *subtitle_label;
GtkWidget *title_label;
@@ -34,6 +35,15 @@ struct _GtdEmptyListWidget
G_DEFINE_TYPE (GtdEmptyListWidget, gtd_empty_list_widget, GTK_TYPE_BOX)
+enum
+{
+ ADD_TASKS,
+ N_SIGNALS,
+};
+
+static guint signals[N_SIGNALS] = { 0, };
+
+
/* Icons that will be randomly picked */
const gchar *messages[] =
{
@@ -55,12 +65,13 @@ const gchar *subtitles[] =
static void
update_message (GtdEmptyListWidget *self)
{
- const gchar *title_text, *subtitle_text;
+ const gchar *title_text, *subtitle_text, *button_text;
if (self->is_empty)
{
- title_text = _("No tasks found");
- subtitle_text = _("You can add tasks using the <b>+</b> above");
+ title_text = _("Tasks Will Appear Here");
+ subtitle_text = "";
+ button_text = _("Add Tasks…");
}
else
{
@@ -71,12 +82,33 @@ update_message (GtdEmptyListWidget *self)
title_text = gettext (messages[message_index]);
subtitle_text = gettext (subtitles[subtitle_index]);
+ button_text = _("Add More Tasks…");
}
gtk_label_set_markup (GTK_LABEL (self->title_label), title_text);
gtk_label_set_markup (GTK_LABEL (self->subtitle_label), subtitle_text);
+ gtk_button_set_label (GTK_BUTTON (self->add_button), button_text);
+
+ gtk_widget_set_visible (self->subtitle_label, !self->is_empty);
+}
+
+
+/*
+ * Callbacks
+ */
+
+static void
+on_add_button_clicked_cb (GtkButton *button,
+ GtdEmptyListWidget *self)
+{
+ g_signal_emit (self, signals[ADD_TASKS], 0);
}
+
+/*
+ * GObject overrides
+ */
+
static void
gtd_empty_list_widget_get_property (GObject *object,
guint prop_id,
@@ -104,11 +136,21 @@ gtd_empty_list_widget_class_init (GtdEmptyListWidgetClass *klass)
object_class->get_property = gtd_empty_list_widget_get_property;
object_class->set_property = gtd_empty_list_widget_set_property;
+ signals[ADD_TASKS] = g_signal_new ("add-tasks",
+ GTD_TYPE_EMPTY_LIST_WIDGET,
+ G_SIGNAL_RUN_LAST,
+ 0, NULL, NULL, NULL,
+ G_TYPE_NONE,
+ 0);
+
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/todo/ui/gtd-empty-list-widget.ui");
+ gtk_widget_class_bind_template_child (widget_class, GtdEmptyListWidget, add_button);
gtk_widget_class_bind_template_child (widget_class, GtdEmptyListWidget, subtitle_label);
gtk_widget_class_bind_template_child (widget_class, GtdEmptyListWidget, title_label);
+ gtk_widget_class_bind_template_callback (widget_class, on_add_button_clicked_cb);
+
gtk_widget_class_set_css_name (widget_class, "emptylistwidget");
}
diff --git a/src/gui/gtd-empty-list-widget.ui b/src/gui/gtd-empty-list-widget.ui
index 850672e8..e6958484 100644
--- a/src/gui/gtd-empty-list-widget.ui
+++ b/src/gui/gtd-empty-list-widget.ui
@@ -42,6 +42,18 @@
</style>
</object>
</child>
+
+ <!-- Add Tasks button -->
+ <child>
+ <object class="GtkButton" id="add_button">
+ <property name="margin-top">24</property>
+ <signal name="clicked" handler="on_add_button_clicked_cb" object="GtdEmptyListWidget"
swapped="no" />
+ <style>
+ <class name="suggested-action"/>
+ </style>
+ </object>
+ </child>
+
</object>
</child>
</object>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]