From ae3cd173edb818a086b991079ab178aa8c70b004 Mon Sep 17 00:00:00 2001 From: heliguy Date: Fri, 19 Jul 2024 11:17:42 -0400 Subject: [PATCH] Make sorting UI better --- data/icons/font-x-generic-symbolic.svg | 4 +++ data/icons/harddisk-symbolic.svg | 2 ++ data/icons/tag-outline-symbolic.svg | 2 ++ data/icons/view-sort-ascending-symbolic.svg | 7 ++++ data/icons/view-sort-descending-symbolic.svg | 7 ++++ src/user_data_page/data_subpage.py | 3 +- src/user_data_page/user_data_page.blp | 37 +++++++++++--------- src/user_data_page/user_data_page.py | 17 ++++++--- src/warehouse.gresource.xml | 5 +++ 9 files changed, 61 insertions(+), 23 deletions(-) create mode 100644 data/icons/font-x-generic-symbolic.svg create mode 100644 data/icons/harddisk-symbolic.svg create mode 100644 data/icons/tag-outline-symbolic.svg create mode 100644 data/icons/view-sort-ascending-symbolic.svg create mode 100644 data/icons/view-sort-descending-symbolic.svg diff --git a/data/icons/font-x-generic-symbolic.svg b/data/icons/font-x-generic-symbolic.svg new file mode 100644 index 0000000..4978a46 --- /dev/null +++ b/data/icons/font-x-generic-symbolic.svg @@ -0,0 +1,4 @@ + + + + diff --git a/data/icons/harddisk-symbolic.svg b/data/icons/harddisk-symbolic.svg new file mode 100644 index 0000000..75214bd --- /dev/null +++ b/data/icons/harddisk-symbolic.svg @@ -0,0 +1,2 @@ + + diff --git a/data/icons/tag-outline-symbolic.svg b/data/icons/tag-outline-symbolic.svg new file mode 100644 index 0000000..2ed4768 --- /dev/null +++ b/data/icons/tag-outline-symbolic.svg @@ -0,0 +1,2 @@ + + diff --git a/data/icons/view-sort-ascending-symbolic.svg b/data/icons/view-sort-ascending-symbolic.svg new file mode 100644 index 0000000..bd303f0 --- /dev/null +++ b/data/icons/view-sort-ascending-symbolic.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/data/icons/view-sort-descending-symbolic.svg b/data/icons/view-sort-descending-symbolic.svg new file mode 100644 index 0000000..c620c7d --- /dev/null +++ b/data/icons/view-sort-descending-symbolic.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/user_data_page/data_subpage.py b/src/user_data_page/data_subpage.py index 8d2d2b6..2563ced 100644 --- a/src/user_data_page/data_subpage.py +++ b/src/user_data_page/data_subpage.py @@ -66,11 +66,10 @@ class DataSubpage(Gtk.ScrolledWindow): self.ready_to_sort_size = True self.flow_box.invalidate_sort() - def generate_list(self, flatpaks, data, sort_mode): + def generate_list(self, flatpaks, data): self.boxes.clear() self.ready_to_sort_size = False self.finished_boxes = 0 - self.sort_mode = sort_mode self.total_items = len(data) self.subtitle.set_label(_("{} Items").format(self.total_items)) if flatpaks: diff --git a/src/user_data_page/user_data_page.blp b/src/user_data_page/user_data_page.blp index 6efc79f..749fd5d 100644 --- a/src/user_data_page/user_data_page.blp +++ b/src/user_data_page/user_data_page.blp @@ -119,52 +119,57 @@ Popover sort_pop { homogeneous: true; spacing: 3; ToggleButton asc { + active: true; styles ["flat"] - label: _("Ascending"); can-focus: bind asc.active inverted; can-target: bind asc.active inverted; + Adw.ButtonContent { + icon-name: "view-sort-ascending-symbolic"; + label: _("Ascending"); + } } ToggleButton dsc { styles ["flat"] - label: _("Descending"); active: bind asc.active inverted bidirectional; can-focus: bind dsc.active inverted; can-target: bind dsc.active inverted; + Adw.ButtonContent { + icon-name: "view-sort-descending-symbolic"; + label: _("Descending"); + } } } Separator { } Box sort_list { - orientation: vertical; + homogeneous: true; + spacing: 3; ToggleButton sort_name { + active: true; styles ["flat"] can-focus: bind sort_name.active inverted; can-target: bind sort_name.active inverted; - Label { - styles ["body"] - halign: start; - label: _("Sort By Name"); + Adw.ButtonContent { + icon-name: "font-x-generic-symbolic"; + label: _("Name"); } } ToggleButton sort_id { styles ["flat"] can-focus: bind sort_id.active inverted; can-target: bind sort_id.active inverted; - Label { - styles ["body"] - halign: start; - label: _("Sort By ID"); + Adw.ButtonContent { + icon-name: "tag-outline-symbolic"; + label: _("ID"); } } ToggleButton sort_size { - active: true; can-focus: bind sort_size.active inverted; can-target: bind sort_size.active inverted; styles ["flat"] - Label { - styles ["body"] - halign: start; - label: _("Sort By Size"); + Adw.ButtonContent { + icon-name: "harddisk-symbolic"; + label: _("Size"); } } } diff --git a/src/user_data_page/user_data_page.py b/src/user_data_page/user_data_page.py index 30ae3de..66f8e8e 100644 --- a/src/user_data_page/user_data_page.py +++ b/src/user_data_page/user_data_page.py @@ -28,7 +28,7 @@ class UserDataPage(Adw.BreakpointBin): # This must be set to the created object from within the class's __init__ method instance = None - def sort_handler(self, button): + def sort_handler(self, button, should_sort=True): if not button.get_active(): return @@ -58,8 +58,9 @@ class UserDataPage(Adw.BreakpointBin): self.adp.sort_mode = "size" self.ldp.sort_mode = "size" - self.adp.flow_box.invalidate_sort() - self.ldp.flow_box.invalidate_sort() + if should_sort: + self.adp.flow_box.invalidate_sort() + self.ldp.flow_box.invalidate_sort() # def bpt_handler(self, _, is_applied): # if is_applied and self.adj.get_value() == 0: @@ -94,10 +95,16 @@ class UserDataPage(Adw.BreakpointBin): self.ldp.spinner.set_visible(True) self.ldp.flow_box.remove_all() + self.sort_handler(self.asc, False) + self.sort_handler(self.dsc, False) + self.sort_handler(self.sort_name, False) + self.sort_handler(self.sort_id, False) + self.sort_handler(self.sort_size, False) + def end_loading(self, *args): def callback(*args): - self.adp.generate_list(self.data_flatpaks, self.active_data, "size") - self.ldp.generate_list([], self.leftover_data, "name") + self.adp.generate_list(self.data_flatpaks, self.active_data) + self.ldp.generate_list([], self.leftover_data) Gio.Task.new(None, None, callback).run_in_thread(self.sort_data) diff --git a/src/warehouse.gresource.xml b/src/warehouse.gresource.xml index 775fd45..fdccf7a 100644 --- a/src/warehouse.gresource.xml +++ b/src/warehouse.gresource.xml @@ -54,5 +54,10 @@ ../data/icons/vertical-arrows-long-symbolic.svg ../data/icons/dot-symbolic.svg ../data/icons/folder-templates-symbolic.svg + ../data/icons/view-sort-ascending-symbolic.svg + ../data/icons/view-sort-descending-symbolic.svg + ../data/icons/font-x-generic-symbolic.svg + ../data/icons/tag-outline-symbolic.svg + ../data/icons/harddisk-symbolic.svg