[gnome-todo] window: Toggle archive via actions
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-todo] window: Toggle archive via actions
- Date: Sun, 9 Jun 2019 19:52:16 +0000 (UTC)
commit cfe561da1b0a03e1fd9a87e08f85d6f14be358d9
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Sun Jun 9 11:46:24 2019 -0300
window: Toggle archive via actions
src/gtd-window.c | 23 +++++++++++++++++++++++
src/gtd-window.ui | 12 +++++++++++-
src/sidebar/gtd-sidebar.c | 14 +++++++++++++-
src/sidebar/gtd-sidebar.h | 3 +++
4 files changed, 50 insertions(+), 2 deletions(-)
---
diff --git a/src/gtd-window.c b/src/gtd-window.c
index 4de4f0f..704df4c 100644
--- a/src/gtd-window.c
+++ b/src/gtd-window.c
@@ -58,9 +58,11 @@ struct _GtdWindow
{
GtkApplicationWindow application;
+ GtkWidget *back_button;
GtkWidget *cancel_selection_button;
GtkWidget *gear_menu_button;
GtkHeaderBar *headerbar;
+ GtkWidget *new_list_button;
GtkStack *stack;
GtdSidebar *sidebar;
@@ -404,6 +406,21 @@ on_action_activate_panel_activated_cb (GSimpleAction *simple,
gtk_stack_set_visible_child (self->stack, GTK_WIDGET (panel));
}
+static void
+on_action_toggle_archive_activated_cb (GSimpleAction *simple,
+ GVariant *state,
+ gpointer user_data)
+{
+ GtdWindow *self;
+ gboolean archive_visible;
+
+ self = GTD_WINDOW (user_data);
+ archive_visible = g_variant_get_boolean (state);
+
+ gtk_widget_set_visible (self->new_list_button, !archive_visible);
+ gtd_sidebar_set_archive_visible (self->sidebar, archive_visible);
+}
+
static void
on_cancel_selection_button_clicked (GtkWidget *button,
GtdWindow *self)
@@ -682,10 +699,12 @@ gtd_window_class_init (GtdWindowClass *klass)
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/todo/ui/gtd-window.ui");
+ gtk_widget_class_bind_template_child (widget_class, GtdWindow, back_button);
gtk_widget_class_bind_template_child (widget_class, GtdWindow, cancel_selection_button);
gtk_widget_class_bind_template_child (widget_class, GtdWindow, gear_menu_button);
gtk_widget_class_bind_template_child (widget_class, GtdWindow, headerbar);
gtk_widget_class_bind_template_child (widget_class, GtdWindow, notification_widget);
+ gtk_widget_class_bind_template_child (widget_class, GtdWindow, new_list_button);
gtk_widget_class_bind_template_child (widget_class, GtdWindow, sidebar);
gtk_widget_class_bind_template_child (widget_class, GtdWindow, stack);
@@ -704,6 +723,7 @@ gtd_window_init (GtdWindow *self)
{
static const GActionEntry entries[] = {
{ "activate-panel", on_action_activate_panel_activated_cb, "(sv)" },
+ { "toggle-archive", on_action_toggle_archive_activated_cb, "b" },
};
gtk_widget_init_template (GTK_WIDGET (self));
@@ -713,6 +733,9 @@ gtd_window_init (GtdWindow *self)
G_N_ELEMENTS (entries),
self);
+ gtk_actionable_set_action_target_value (GTK_ACTIONABLE (self->back_button),
+ g_variant_new_boolean (FALSE));
+
/* Task list panel */
self->task_list_panel = GTD_PANEL (gtd_task_list_panel_new ());
on_panel_added_cb (gtd_manager_get_default (), self->task_list_panel, self);
diff --git a/src/gtd-window.ui b/src/gtd-window.ui
index 06bd707..080ca8f 100644
--- a/src/gtd-window.ui
+++ b/src/gtd-window.ui
@@ -46,7 +46,7 @@
<child>
<object class="GtkHeaderBar" id="start_headerbar">
<child>
- <object class="GtkMenuButton">
+ <object class="GtkMenuButton" id="new_list_button">
<property name="can_focus">1</property>
<property name="label" translatable="yes">New List</property>
<property name="receives_default">1</property>
@@ -54,6 +54,16 @@
<property name="halign">start</property>
</object>
</child>
+ <child>
+ <object class="GtkButton" id="back_button">
+ <property name="visible" bind-source="new_list_button" bind-property="visible"
bind-flags="sync-create|invert-boolean" />
+ <property name="can_focus">1</property>
+ <property name="receives_default">1</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.toggle-archive</property>
+ <property name="icon-name">go-previous-symbolic</property>
+ </object>
+ </child>
<child type="end">
<object class="GtkMenuButton">
<property name="menu-model">app-menu</property>
diff --git a/src/sidebar/gtd-sidebar.c b/src/sidebar/gtd-sidebar.c
index 512aa31..b16761b 100644
--- a/src/sidebar/gtd-sidebar.c
+++ b/src/sidebar/gtd-sidebar.c
@@ -354,7 +354,7 @@ on_listbox_row_activated_cb (GtkListBox *panels_listbox,
}
else if (row == self->archive_row)
{
- gtk_stack_set_visible_child (self->stack, GTK_WIDGET (self->archive_listbox));
+ gtk_widget_activate_action (GTK_WIDGET (self), "win.toggle-archive", g_variant_new_boolean (TRUE));
}
else
{
@@ -681,3 +681,15 @@ gtd_sidebar_activate (GtdSidebar *self)
first_row = gtk_list_box_get_row_at_index (self->listbox, 0);
g_signal_emit_by_name (first_row, "activate");
}
+
+void
+gtd_sidebar_set_archive_visible (GtdSidebar *self,
+ gboolean show_archive)
+{
+ g_assert (GTD_IS_SIDEBAR (self));
+
+ if (show_archive)
+ gtk_stack_set_visible_child (self->stack, GTK_WIDGET (self->archive_listbox));
+ else
+ gtk_stack_set_visible_child (self->stack, GTK_WIDGET (self->listbox));
+}
diff --git a/src/sidebar/gtd-sidebar.h b/src/sidebar/gtd-sidebar.h
index 9609865..65b81fc 100644
--- a/src/sidebar/gtd-sidebar.h
+++ b/src/sidebar/gtd-sidebar.h
@@ -38,4 +38,7 @@ void gtd_sidebar_set_task_list_panel (GtdSidebar
void gtd_sidebar_activate (GtdSidebar *self);
+void gtd_sidebar_set_archive_visible (GtdSidebar *self,
+ gboolean show_archive);
+
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]