From c2d1e9c2dda3f131cbd875f85cf692b799abc3e7 Mon Sep 17 00:00:00 2001 From: Peter Eisenmann Date: Sat, 30 Apr 2022 21:00:23 +0200 Subject: [PATCH] disk: add empty state (no disks) * add icon to represent no disks * use AdwStatusPage to represent empty state * return alternating dummy disks or no disks in demo-mode --- .../icon/scalable/actions/no-disk-symbolic.svg | 1 + data/resources/os-installer.gresource.xml | 3 ++- data/resources/ui/pages/disk.blp | 9 +++++++++ src/ui/pages/disk.py | 14 +++++++++++--- src/util/provider/disk_provider.py | 3 +++ 5 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 data/resources/icon/scalable/actions/no-disk-symbolic.svg diff --git a/data/resources/icon/scalable/actions/no-disk-symbolic.svg b/data/resources/icon/scalable/actions/no-disk-symbolic.svg new file mode 100644 index 0000000..e715783 --- /dev/null +++ b/data/resources/icon/scalable/actions/no-disk-symbolic.svg @@ -0,0 +1 @@ + diff --git a/data/resources/os-installer.gresource.xml b/data/resources/os-installer.gresource.xml index 3332510..7ad4e38 100644 --- a/data/resources/os-installer.gresource.xml +++ b/data/resources/os-installer.gresource.xml @@ -10,8 +10,9 @@ icon/scalable/actions/globe-symbolic.svg - icon/scalable/actions/question-round-symbolic.svg icon/scalable/actions/language-symbolic.svg + icon/scalable/actions/no-disk-symbolic.svg + icon/scalable/actions/question-round-symbolic.svg icon/scalable/actions/user-symbolic.svg diff --git a/data/resources/ui/pages/disk.blp b/data/resources/ui/pages/disk.blp index f13fea0..ec60397 100644 --- a/data/resources/ui/pages/disk.blp +++ b/data/resources/ui/pages/disk.blp @@ -163,6 +163,15 @@ template DiskPage : Box { } }; } + + StackPage { + name: "no-disks"; + child: + Adw.StatusPage { + title: _("No Disks avaliable"); + description: _("Connect a disk and reload this page."); + }; + } }; } } diff --git a/src/ui/pages/disk.py b/src/ui/pages/disk.py index d42aebc..889600e 100644 --- a/src/ui/pages/disk.py +++ b/src/ui/pages/disk.py @@ -17,7 +17,9 @@ GIGABYTE_FACTOR = 1024 * 1024 * 1024 @Gtk.Template(resource_path='/com/github/p3732/os-installer/ui/pages/disk.ui') class DiskPage(Gtk.Box, Page): __gtype_name__ = __qualname__ - image_name = 'drive-harddisk-system-symbolic' + no_disk_image_name = 'no-disk-symbolic' + default_image_name = 'drive-harddisk-system-symbolic' + image_name = default_image_name can_reload = True disk_label = Gtk.Template.Child() @@ -52,8 +54,14 @@ class DiskPage(Gtk.Box, Page): disks = disk_provider.get_testing_dummy_disks() else: disks = disk_provider.get_disks() - reset_model(self.disk_list_model, disks) - self.list_stack.set_visible_child_name('disks') + if len(disks) == 0: + self.list_stack.set_visible_child_name('no-disks') + self.image_name = self.no_disk_image_name + else: + reset_model(self.disk_list_model, disks) + self.list_stack.set_visible_child_name('disks') + self.image_name = self.default_image_name + global_state.set_title_image(self.image_name) def _setup_partition_list(self, disk_info): self.current_disk = disk_info diff --git a/src/util/provider/disk_provider.py b/src/util/provider/disk_provider.py index 1022f1e..1ad3df5 100644 --- a/src/util/provider/disk_provider.py +++ b/src/util/provider/disk_provider.py @@ -114,6 +114,9 @@ class DiskProvider: return disks def get_testing_dummy_disks(self): + self.flip = not self.flip if hasattr(self, 'flip') and self.flip else True + if self.flip: + return [] smol_partition = DeviceInfo("sm0l partiton", 1000, "/dev/00null") smol_disk = Disk("Dummy", 10000, "/dev/null", ([smol_partition], None))