diff --git a/data/io.github.alainm23.planify.gresource.xml b/data/io.github.alainm23.planify.gresource.xml index 6b38fcff0..0d6340082 100644 --- a/data/io.github.alainm23.planify.gresource.xml +++ b/data/io.github.alainm23.planify.gresource.xml @@ -96,6 +96,8 @@ resources/icons/funnel-outline-symbolic.svg resources/icons/external-link-symbolic.svg resources/icons/delay-symbolic.svg + resources/icons/go-up-symbolic.svg + resources/icons/go-next-symbolic.svg @@ -166,6 +168,8 @@ resources/icons/funnel-outline-symbolic.svg resources/icons/external-link-symbolic.svg resources/icons/delay-symbolic.svg + resources/icons/go-up-symbolic.svg + resources/icons/go-next-symbolic.svg @@ -236,5 +240,7 @@ resources/icons/funnel-outline-symbolic.svg resources/icons/external-link-symbolic.svg resources/icons/delay-symbolic.svg + resources/icons/go-up-symbolic.svg + resources/icons/go-next-symbolic.svg diff --git a/data/resources/icons/go-next-symbolic.svg b/data/resources/icons/go-next-symbolic.svg new file mode 100644 index 000000000..0ff48beeb --- /dev/null +++ b/data/resources/icons/go-next-symbolic.svg @@ -0,0 +1,4 @@ + + + + diff --git a/data/resources/icons/go-up-symbolic.svg b/data/resources/icons/go-up-symbolic.svg new file mode 100644 index 000000000..a32393d91 --- /dev/null +++ b/data/resources/icons/go-up-symbolic.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/Dialogs/ProjectPicker/ProjectPickerRow.vala b/src/Dialogs/ProjectPicker/ProjectPickerRow.vala index f0e09b569..356bd8e3e 100644 --- a/src/Dialogs/ProjectPicker/ProjectPickerRow.vala +++ b/src/Dialogs/ProjectPicker/ProjectPickerRow.vala @@ -52,7 +52,7 @@ public class Dialogs.ProjectPicker.ProjectPickerRow : Gtk.ListBoxRow { name_label.ellipsize = Pango.EllipsizeMode.END; var selected_icon = new Gtk.Image () { - gicon = new ThemedIcon ("emblem-ok-symbolic"), + gicon = new ThemedIcon ("checkmark-small-symbolic"), pixel_size = 16, hexpand = true, valign = Gtk.Align.CENTER, diff --git a/src/Layouts/ItemRow.vala b/src/Layouts/ItemRow.vala index 9cfcd3668..3264c03e9 100644 --- a/src/Layouts/ItemRow.vala +++ b/src/Layouts/ItemRow.vala @@ -74,10 +74,13 @@ public class Layouts.ItemRow : Layouts.ItemBase { private Widgets.Attachments attachments; private Gtk.Label attachments_count; private Gtk.Box action_box; + private Gtk.Label show_subtasks_label; + private Gtk.Revealer show_subtasks_revealer; private Widgets.SubItems subitems; private Gtk.MenuButton menu_button; private Gtk.Button hide_subtask_button; + private Gtk.Button show_subtasks_button; private Gtk.Revealer hide_subtask_revealer; private Widgets.ContextMenu.MenuItem no_date_item; private Widgets.ContextMenu.MenuItem pinboard_item; @@ -112,6 +115,7 @@ public class Layouts.ItemRow : Layouts.ItemBase { hide_subtask_revealer.reveal_child = false; hide_loading_button.remove_css_class ("no-padding"); hide_loading_revealer.reveal_child = true; + show_subtasks_revealer.reveal_child = subitems.has_children && edit; // Due labels due_box_revealer.reveal_child = false; @@ -144,6 +148,7 @@ public class Layouts.ItemRow : Layouts.ItemBase { hide_subtask_revealer.reveal_child = subitems.has_children; hide_loading_button.add_css_class ("no-padding"); hide_loading_revealer.reveal_child = false; + show_subtasks_revealer.reveal_child = false; check_due (); check_description (); @@ -539,8 +544,30 @@ public class Layouts.ItemRow : Layouts.ItemBase { subitems.present_item (item); subitems.reveal_child = item.collapsed; + show_subtasks_label = new Gtk.Label (null); + + var show_subtasks_box = new Gtk.Box (Gtk.Orientation.HORIZONTAL, 6); + show_subtasks_box.append (new Gtk.Image.from_icon_name ("go-next-symbolic") { + pixel_size = 12 + }); + show_subtasks_box.append (show_subtasks_label); + + show_subtasks_button = new Gtk.Button () { + css_classes = { "flat", "small-button", "hidden-button" }, + child = show_subtasks_box, + margin_start = 16, + margin_bottom = 3, + halign = START + }; + + show_subtasks_revealer = new Gtk.Revealer () { + child = show_subtasks_button, + reveal_child = subitems.has_children && edit + }; + var box = new Gtk.Box (Gtk.Orientation.VERTICAL, 0); box.append (itemrow_box); + box.append (show_subtasks_revealer); box.append (subitems); hide_subtask_button = new Gtk.Button () { @@ -554,6 +581,7 @@ public class Layouts.ItemRow : Layouts.ItemBase { if (item.collapsed) { hide_subtask_button.add_css_class ("opened"); + show_subtasks_button.add_css_class ("opened"); } hide_subtask_revealer = new Gtk.Revealer () { @@ -759,6 +787,11 @@ public class Layouts.ItemRow : Layouts.ItemBase { item.update_local (); })] = hide_subtask_button; + signals_map[show_subtasks_button.clicked.connect (() => { + item.collapsed = !item.collapsed; + item.update_local (); + })] = show_subtasks_button; + signals_map[subitems.children_changes.connect (() => { check_hide_subtask_button (); })] = subitems; @@ -768,8 +801,10 @@ public class Layouts.ItemRow : Layouts.ItemBase { if (item.collapsed) { hide_subtask_button.add_css_class ("opened"); + show_subtasks_button.add_css_class ("opened"); } else { hide_subtask_button.remove_css_class ("opened"); + show_subtasks_button.remove_css_class ("opened"); } })] = item; @@ -916,6 +951,8 @@ public class Layouts.ItemRow : Layouts.ItemBase { pin_button.update_from_item (item); reminder_button.set_reminders (item.reminders); + show_subtasks_label.label = item.collapsed ? _("Hide Sub-tasks") : _("Show Sub-tasks"); + check_due (); check_description (); check_pinboard ();