From 7e8caadc4b5eaed06b6dd9134356cd35ab264ea9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Mon, 23 Sep 2024 12:21:57 -0700 Subject: [PATCH 1/4] Update installer.metainfo.xml.in --- data/installer.metainfo.xml.in | 1 + 1 file changed, 1 insertion(+) diff --git a/data/installer.metainfo.xml.in b/data/installer.metainfo.xml.in index 8b4a569f6..590b3e27c 100644 --- a/data/installer.metainfo.xml.in +++ b/data/installer.metainfo.xml.in @@ -65,6 +65,7 @@ Screen Reader ignores each view’s title text + Second step of VariantWidget not focused From 93024689e4c30c4e719742d2d9a3c791927d4917 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Tue, 24 Sep 2024 08:29:15 -0700 Subject: [PATCH 2/4] Replace width_chars with clamp (#798) --- src/Views/AbstractInstallerView.vala | 6 +++++- src/Views/CheckView.vala | 3 --- src/Views/DiskView.vala | 2 -- src/Views/DriversView.vala | 1 - src/Views/EncryptView.vala | 7 +------ src/Views/ErrorView.vala | 4 ---- src/Views/SuccessView.vala | 3 --- src/Widgets/DecryptMenu.vala | 1 - src/Widgets/DescriptionRow.vala | 1 - src/Widgets/InstallTypeGrid.vala | 1 - 10 files changed, 6 insertions(+), 23 deletions(-) diff --git a/src/Views/AbstractInstallerView.vala b/src/Views/AbstractInstallerView.vala index 7ffb33f9e..3fc30fe14 100644 --- a/src/Views/AbstractInstallerView.vala +++ b/src/Views/AbstractInstallerView.vala @@ -25,13 +25,17 @@ public abstract class AbstractInstallerView : Adw.NavigationPage { content_area = new Gtk.Box (VERTICAL, 24); + var content_clamp = new Adw.Clamp () { + child = content_area + }; + var box = new Gtk.Box (HORIZONTAL, 12) { homogeneous = true, hexpand = true, vexpand = true, }; box.append (title_area); - box.append (content_area); + box.append (content_clamp); action_box_end = new Gtk.Box (HORIZONTAL, 6) { halign = END, diff --git a/src/Views/CheckView.vala b/src/Views/CheckView.vala index 9f2ac71af..06d26a501 100644 --- a/src/Views/CheckView.vala +++ b/src/Views/CheckView.vala @@ -182,15 +182,12 @@ public class Installer.CheckView : AbstractInstallerView { }; var title_label = new Gtk.Label (title) { - hexpand = true, - max_width_chars = 1, wrap = true, xalign = 0 }; title_label.add_css_class (Granite.STYLE_CLASS_H3_LABEL); var description_label = new Gtk.Label (description) { - max_width_chars = 1, // Make Gtk wrap, but not expand the window use_markup = true, wrap = true, xalign = 0 diff --git a/src/Views/DiskView.vala b/src/Views/DiskView.vala index 6d92fa70a..4ad9bc1ee 100644 --- a/src/Views/DiskView.vala +++ b/src/Views/DiskView.vala @@ -50,7 +50,6 @@ public class Installer.DiskView : AbstractInstallerView { var install_desc_label = new Gtk.Label ( _("This will erase all data on the selected drive. If you have not backed your data up, you can cancel the installation and use Demo Mode.") ) { - max_width_chars = 45, wrap = true, xalign = 0 }; @@ -70,7 +69,6 @@ public class Installer.DiskView : AbstractInstallerView { load_spinner.start (); var load_label = new Gtk.Label (_("Getting the current configuration…")) { - max_width_chars = 45, wrap = true }; load_label.add_css_class (Granite.STYLE_CLASS_H3_LABEL); diff --git a/src/Views/DriversView.vala b/src/Views/DriversView.vala index c5cee996f..07f9bb3b7 100644 --- a/src/Views/DriversView.vala +++ b/src/Views/DriversView.vala @@ -28,7 +28,6 @@ var title_label = new Gtk.Label (title); var description_label = new Gtk.Label (_("Broadcom® Wi-Fi adapters, NVIDIA® graphics, and some virtual machines may not function properly without additional drivers. Most devices do not require additional drivers.")) { - max_width_chars = 1, // Make Gtk wrap, but not expand the window wrap = true, xalign = 0 }; diff --git a/src/Views/EncryptView.vala b/src/Views/EncryptView.vala index 9694527c5..cc6e8af06 100644 --- a/src/Views/EncryptView.vala +++ b/src/Views/EncryptView.vala @@ -52,8 +52,6 @@ public class EncryptView : AbstractInstallerView { var title_label = new Gtk.Label (title); var details_label = new Gtk.Label (_("Encrypt this device's drive if required for added protection, but be sure you understand:")) { - hexpand = true, - max_width_chars = 1, // Make Gtk wrap, but not expand the window wrap = true, xalign = 0 }; @@ -88,9 +86,7 @@ public class EncryptView : AbstractInstallerView { var description = new Gtk.Label ( _("If you forget the encryption password, you will not be able to recover data. This is a unique password for this device, not the password for your user account.") ) { - hexpand = true, margin_bottom = 12, - max_width_chars = 1, // Make Gtk wrap, but not expand the window use_markup = true, wrap = true, xalign = 0 @@ -278,9 +274,8 @@ public class EncryptView : AbstractInstallerView { construct { label_widget = new Gtk.Label (label) { - halign = END, + hexpand = true, justify = RIGHT, - max_width_chars = 55, use_markup = true, wrap = true, xalign = 1 diff --git a/src/Views/ErrorView.vala b/src/Views/ErrorView.vala index bffdfc6bf..b66bf2fcd 100644 --- a/src/Views/ErrorView.vala +++ b/src/Views/ErrorView.vala @@ -34,7 +34,6 @@ public class ErrorView : AbstractInstallerView { var description_label = new Gtk.Label (_("Installing %s failed, possibly due to a hardware error. The device may not restart properly. You can try the following:").printf (Utils.get_pretty_name ())) { margin_bottom = 12, - max_width_chars = 1, // Make Gtk wrap, but not expand the window wrap = true, xalign = 0 }; @@ -45,7 +44,6 @@ public class ErrorView : AbstractInstallerView { var try_label = new Gtk.Label (_("Try the installation again")) { hexpand = true, - max_width_chars = 1, // Make Gtk wrap, but not expand the window wrap = true, xalign = 0 }; @@ -55,7 +53,6 @@ public class ErrorView : AbstractInstallerView { }; var launch_label = new Gtk.Label (_("Use Demo Mode and try to manually recover")) { - max_width_chars = 1, // Make Gtk wrap, but not expand the window wrap = true, xalign = 0 }; @@ -65,7 +62,6 @@ public class ErrorView : AbstractInstallerView { }; var restart_label = new Gtk.Label (_("Restart the device and boot from another drive")) { - max_width_chars = 1, // Make Gtk wrap, but not expand the window wrap = true, xalign = 0 }; diff --git a/src/Views/SuccessView.vala b/src/Views/SuccessView.vala index 8384ef50b..32d9b9770 100644 --- a/src/Views/SuccessView.vala +++ b/src/Views/SuccessView.vala @@ -30,15 +30,12 @@ public class SuccessView : AbstractInstallerView { var title_label = new Gtk.Label (title); var primary_label = new Gtk.Label (_("%s has been installed").printf (Utils.get_pretty_name ())) { - hexpand = true, - max_width_chars = 1, wrap = true, xalign = 0 }; primary_label.add_css_class (Granite.STYLE_CLASS_H3_LABEL); secondary_label = new Gtk.Label (null) { - max_width_chars = 1, // Make Gtk wrap, but not expand the window use_markup = true, wrap = true, xalign = 0 diff --git a/src/Widgets/DecryptMenu.vala b/src/Widgets/DecryptMenu.vala index 43d3bf41d..5eb1b1ff9 100644 --- a/src/Widgets/DecryptMenu.vala +++ b/src/Widgets/DecryptMenu.vala @@ -69,7 +69,6 @@ public class Installer.DecryptMenu: Gtk.Popover { var secondary_label = new Gtk.Label (_("Enter the partition's encryption password and set a device name for the decrypted partition.")); secondary_label.halign = Gtk.Align.START; - secondary_label.max_width_chars = 50; secondary_label.selectable = true; secondary_label.wrap = true; secondary_label.xalign = 0; diff --git a/src/Widgets/DescriptionRow.vala b/src/Widgets/DescriptionRow.vala index 057189132..a9ace185e 100644 --- a/src/Widgets/DescriptionRow.vala +++ b/src/Widgets/DescriptionRow.vala @@ -26,7 +26,6 @@ public class DescriptionRow : Gtk.Box { var description_label = new Gtk.Label (description) { hexpand = true, - max_width_chars = 1, // Make Gtk wrap, but not expand the window use_markup = true, wrap = true, xalign = 0 diff --git a/src/Widgets/InstallTypeGrid.vala b/src/Widgets/InstallTypeGrid.vala index da04f8635..b82bfbade 100644 --- a/src/Widgets/InstallTypeGrid.vala +++ b/src/Widgets/InstallTypeGrid.vala @@ -44,7 +44,6 @@ public class Installer.InstallTypeButton : Gtk.CheckButton { title_label.add_css_class (Granite.STYLE_CLASS_H3_LABEL); var subtitle_label = new Gtk.Label (subtitle) { - max_width_chars = 1, // Make Gtk wrap, but not expand the window wrap = true, xalign = 0 }; From 96efd52fc31932a0dacb32ac9a0a14093f1a3eee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Tue, 24 Sep 2024 08:36:25 -0700 Subject: [PATCH 3/4] Widgets: Rename PartitionBar to PartitionBlock (#808) --- po/POTFILES | 2 +- src/Views/PartitioningView.vala | 8 ++++---- src/Widgets/DiskBar.vala | 12 ++++++------ .../{PartitionBar.vala => PartitionBlock.vala} | 8 +++----- src/Widgets/PartitionMenu.vala | 4 ++-- src/meson.build | 2 +- 6 files changed, 17 insertions(+), 19 deletions(-) rename src/Widgets/{PartitionBar.vala => PartitionBlock.vala} (93%) diff --git a/po/POTFILES b/po/POTFILES index f8584d027..c36219ab9 100644 --- a/po/POTFILES +++ b/po/POTFILES @@ -23,6 +23,6 @@ src/Widgets/DecryptMenu.vala src/Widgets/DiskBar.vala src/Widgets/DiskGrid.vala src/Widgets/InstallTypeGrid.vala -src/Widgets/PartitionBar.vala +src/Widgets/PartitionBlock.vala src/Widgets/PartitionMenu.vala src/Widgets/VariantWidget.vala diff --git a/src/Views/PartitioningView.vala b/src/Views/PartitioningView.vala index 3b6b8d0d8..6c030a8f7 100644 --- a/src/Views/PartitioningView.vala +++ b/src/Views/PartitioningView.vala @@ -172,9 +172,9 @@ public class Installer.PartitioningView : AbstractInstallerView { unowned string path = disk.device_path; - var partitions = new Gee.ArrayList (); + var partitions = new Gee.ArrayList (); foreach (unowned InstallerDaemon.Partition part in disk.partitions) { - var partition = new PartitionBar (part, path, sector_size, false, this.set_mount, this.unset_mount, this.mount_is_set); + var partition = new PartitionBlock (part, path, sector_size, false, this.set_mount, this.unset_mount, this.mount_is_set); partition.decrypted.connect (on_partition_decrypted); partitions.add (partition); } @@ -225,9 +225,9 @@ public class Installer.PartitioningView : AbstractInstallerView { unowned string path = disk.device_path; - var partitions = new Gee.ArrayList (); + var partitions = new Gee.ArrayList (); foreach (unowned InstallerDaemon.Partition part in disk.partitions) { - var partition = new PartitionBar (part, path, sector_size, true, this.set_mount, this.unset_mount, this.mount_is_set); + var partition = new PartitionBlock (part, path, sector_size, true, this.set_mount, this.unset_mount, this.mount_is_set); partition.decrypted.connect (on_partition_decrypted); partitions.add (partition); } diff --git a/src/Widgets/DiskBar.vala b/src/Widgets/DiskBar.vala index a0c3a26ec..7981c4891 100644 --- a/src/Widgets/DiskBar.vala +++ b/src/Widgets/DiskBar.vala @@ -9,11 +9,11 @@ public class Installer.DiskBar: Gtk.Box { public string disk_name { get; construct; } public string disk_path { get; construct; } public uint64 size { get; construct; } - public Gee.ArrayList partitions { get; construct; } + public Gee.ArrayList partitions { get; construct; } private Gtk.Box legend_box; - public DiskBar (string disk_name, string disk_path, uint64 size, Gee.ArrayList partitions) { + public DiskBar (string disk_name, string disk_path, uint64 size, Gee.ArrayList partitions) { Object ( disk_name: disk_name, disk_path: disk_path, @@ -37,7 +37,7 @@ public class Installer.DiskBar: Gtk.Box { halign = START }; - foreach (PartitionBar p in partitions) { + foreach (PartitionBlock p in partitions) { add_legend ( p.partition.device_path, p.get_partition_size () * 512, @@ -48,7 +48,7 @@ public class Installer.DiskBar: Gtk.Box { } uint64 used = 0; - foreach (PartitionBar partition in partitions) { + foreach (PartitionBlock partition in partitions) { used += partition.get_partition_size (); } @@ -110,10 +110,10 @@ public class Installer.DiskBar: Gtk.Box { } private class PartitionContainer : Gtk.Widget { - public Gee.ArrayList partitions { get; construct; } + public Gee.ArrayList partitions { get; construct; } public uint64 size { get; construct; } - public PartitionContainer (uint64 size, Gee.ArrayList partitions) { + public PartitionContainer (uint64 size, Gee.ArrayList partitions) { Object ( partitions: partitions, size: size diff --git a/src/Widgets/PartitionBar.vala b/src/Widgets/PartitionBlock.vala similarity index 93% rename from src/Widgets/PartitionBar.vala rename to src/Widgets/PartitionBlock.vala index 0ae7c8743..24ac56531 100644 --- a/src/Widgets/PartitionBar.vala +++ b/src/Widgets/PartitionBlock.vala @@ -5,7 +5,7 @@ * Authored by: Michael Aaron Murphy */ -public class Installer.PartitionBar : Gtk.Box { +public class Installer.PartitionBlock : Adw.Bin { public signal void decrypted (InstallerDaemon.LuksCredentials credential); public Icon? icon { get; set; default = null; } @@ -17,7 +17,7 @@ public class Installer.PartitionBar : Gtk.Box { public string? volume_group { get; private set; } public Gtk.Popover menu { get; private set; } - public PartitionBar ( + public PartitionBlock ( InstallerDaemon.Partition partition, string parent_path, uint64 sector_size, @@ -56,13 +56,11 @@ public class Installer.PartitionBar : Gtk.Box { volume_group = (partition.filesystem == LVM) ? partition.current_lvm_volume_group : null; var image = new Gtk.Image () { - hexpand = true, halign = END, valign = END }; - append (image); - hexpand = true; + child = image; tooltip_text = partition.device_path; add_css_class (partition.filesystem.to_string ()); diff --git a/src/Widgets/PartitionMenu.vala b/src/Widgets/PartitionMenu.vala index 4fa4b446d..b10a319ec 100644 --- a/src/Widgets/PartitionMenu.vala +++ b/src/Widgets/PartitionMenu.vala @@ -38,11 +38,11 @@ public class Installer.PartitionMenu : Gtk.Popover { private Gtk.Label custom_label; private Gtk.Label type_label; // A reference to the parent which owns this menu. - private PartitionBar partition_bar; + private PartitionBlock partition_bar; public PartitionMenu (string path, string parent, InstallerDaemon.FileSystem fs, bool lvm, SetMount set_mount, UnsetMount unset_mount, - MountSetFn mount_set, PartitionBar partition_bar) { + MountSetFn mount_set, PartitionBlock partition_bar) { this.partition_bar = partition_bar; original_filesystem = fs; is_lvm = lvm; diff --git a/src/meson.build b/src/meson.build index e9dcca0cb..504555f76 100644 --- a/src/meson.build +++ b/src/meson.build @@ -26,7 +26,7 @@ vala_files = [ 'Widgets/DiskBar.vala', 'Widgets/DiskGrid.vala', 'Widgets/InstallTypeGrid.vala', - 'Widgets/PartitionBar.vala', + 'Widgets/PartitionBlock.vala', 'Widgets/PartitionMenu.vala', 'Widgets/Terminal.vala', 'Widgets/VariantWidget.vala', From 660a60f8afbdf32d2f07c11a4cde6d2d6ce7cc12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Tue, 24 Sep 2024 08:42:34 -0700 Subject: [PATCH 4/4] PartitioningView: add test disk/partition data (#812) --- src/Views/PartitioningView.vala | 56 ++++++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/src/Views/PartitioningView.vala b/src/Views/PartitioningView.vala index 6c030a8f7..09a2e76f5 100644 --- a/src/Views/PartitioningView.vala +++ b/src/Views/PartitioningView.vala @@ -159,7 +159,11 @@ public class Installer.PartitioningView : AbstractInstallerView { InstallerDaemon.DiskInfo? disks = null; try { - disks = yield Daemon.get_default ().get_disks (true); + if (!Installer.App.test_mode) { + disks = yield Daemon.get_default ().get_disks (true); + } else { + disks = get_test_diskinfo (); + } } catch (Error e) { critical ("Unable to get disks: %s", e.message); load_stack.set_visible_child_name ("disk"); @@ -343,4 +347,54 @@ public class Installer.PartitioningView : AbstractInstallerView { array[index] = array[array.size - 1]; return array.remove_at (array.size - 1); } + + private InstallerDaemon.DiskInfo get_test_diskinfo () { + InstallerDaemon.Disk[] physical_disks = {}; + InstallerDaemon.Disk[] logical_disks = {}; + + InstallerDaemon.Partition[] partitions = {}; + + var usage_1 = Distinst.PartitionUsage () { + tag = 1, + value = 30312 + }; + + partitions += InstallerDaemon.Partition () { + device_path = "/dev/nvme0n1p1", + filesystem = InstallerDaemon.FileSystem.FAT32, + start_sector = 4096, + end_sector = 542966, + sectors_used = usage_1, + current_lvm_volume_group = "" + }; + + var usage_2 = Distinst.PartitionUsage () { + tag = 0, + value = 0 + }; + + partitions += InstallerDaemon.Partition () { + device_path = "/dev/nvme0n1p2", + filesystem = InstallerDaemon.FileSystem.LVM, + start_sector = 542968, + end_sector = 976769070, + sectors_used = usage_2, + current_lvm_volume_group = "data" + }; + + physical_disks += InstallerDaemon.Disk () { + name = "Samsung SSD 970 EVO 500GB", + device_path = "/dev/nvme0n1", + sectors = 976773168, + sector_size = 512, + rotational = false, + removable = false, + partitions = partitions + }; + + return InstallerDaemon.DiskInfo () { + physical_disks = physical_disks, + logical_disks = logical_disks + }; + } }