Skip to content

Commit

Permalink
Merge branch 'main' into danirabbit/navigation-view
Browse files Browse the repository at this point in the history
  • Loading branch information
danirabbit authored Sep 24, 2024
2 parents 9409f8f + fe60a17 commit 0795559
Show file tree
Hide file tree
Showing 6 changed files with 81 additions and 41 deletions.
2 changes: 1 addition & 1 deletion po/POTFILES
Original file line number Diff line number Diff line change
Expand Up @@ -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
78 changes: 61 additions & 17 deletions src/Views/PartitioningView.vala
Original file line number Diff line number Diff line change
Expand Up @@ -157,27 +157,26 @@ 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");
return;
}

foreach (unowned InstallerDaemon.Disk disk in disks.physical_disks) {
var sector_size = disk.sector_size;
var size = disk.sectors * sector_size;

unowned string path = disk.device_path;

var partitions = new Gee.ArrayList<PartitionBar> ();
var partitions = new Gee.ArrayList<PartitionBlock> ();
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, disk.device_path, disk.sector_size, false, this.set_mount, this.unset_mount, this.mount_is_set);
partition.decrypted.connect (on_partition_decrypted);
partitions.add (partition);
}

var disk_bar = new DiskBar (disk.name, path, size, (owned) partitions);
var disk_bar = new DiskBar (disk, (owned) partitions);
disk_list.append (disk_bar);
}

Expand Down Expand Up @@ -218,19 +217,14 @@ public class Installer.PartitioningView : AbstractInstallerView {
}

private void add_logical_disk (InstallerDaemon.Disk disk) {
var sector_size = disk.sector_size;
var size = disk.sectors * sector_size;

unowned string path = disk.device_path;

var partitions = new Gee.ArrayList<PartitionBar> ();
var partitions = new Gee.ArrayList<PartitionBlock> ();
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, disk.device_path, disk.sector_size, true, this.set_mount, this.unset_mount, this.mount_is_set);
partition.decrypted.connect (on_partition_decrypted);
partitions.add (partition);
}

var disk_bar = new DiskBar (disk.name, path, size, (owned) partitions);
var disk_bar = new DiskBar (disk, (owned) partitions);
disk_list.append (disk_bar);
}

Expand Down Expand Up @@ -341,4 +335,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
};
}
}
28 changes: 13 additions & 15 deletions src/Widgets/DiskBar.vala
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,15 @@
*/

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<PartitionBar> partitions { get; construct; }
public InstallerDaemon.Disk disk { get; construct; }
public Gee.ArrayList<PartitionBlock> partitions { get; construct; }

private Gtk.Box legend_box;

public DiskBar (string disk_name, string disk_path, uint64 size, Gee.ArrayList<PartitionBar> partitions) {
public DiskBar (InstallerDaemon.Disk disk, Gee.ArrayList<PartitionBlock> partitions) {
Object (
disk_name: disk_name,
disk_path: disk_path,
partitions: partitions,
size: size
disk: disk,
partitions: partitions
);
}

Expand All @@ -27,8 +23,10 @@ public class Installer.DiskBar: Gtk.Box {
}

construct {
var name_label = new Granite.HeaderLabel (disk_name) {
secondary_text = "%s %s".printf (disk_path, GLib.format_size (size))
var size = disk.sectors * disk.sector_size;

var name_label = new Granite.HeaderLabel (disk.name) {
secondary_text = "%s %s".printf (disk.device_path, GLib.format_size (size))
};

var bar = new PartitionContainer (size, partitions);
Expand All @@ -37,7 +35,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,
Expand All @@ -48,7 +46,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 ();
}

Expand Down Expand Up @@ -110,10 +108,10 @@ public class Installer.DiskBar: Gtk.Box {
}

private class PartitionContainer : Gtk.Widget {
public Gee.ArrayList<PartitionBar> partitions { get; construct; }
public Gee.ArrayList<PartitionBlock> partitions { get; construct; }
public uint64 size { get; construct; }

public PartitionContainer (uint64 size, Gee.ArrayList<PartitionBar> partitions) {
public PartitionContainer (uint64 size, Gee.ArrayList<PartitionBlock> partitions) {
Object (
partitions: partitions,
size: size
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
* Authored by: Michael Aaron Murphy <[email protected]>
*/

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; }
Expand All @@ -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,
Expand Down Expand Up @@ -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 ());
Expand Down
4 changes: 2 additions & 2 deletions src/Widgets/PartitionMenu.vala
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion src/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down

0 comments on commit 0795559

Please sign in to comment.