more subvol fixes

This commit is contained in:
Ward from fusion-voyager-3 2024-08-19 03:44:09 +03:00
parent e9da6a8dc9
commit fe275d8e7a

View File

@ -14,7 +14,7 @@ const MINIMUM_ROOT_BYTE_SIZE: f64 = 39000000000.0;
#[derive(Clone)] #[derive(Clone)]
struct PartitionRow { struct PartitionRow {
widget: adw::ActionRow, widget: adw::ActionRow,
used: Rc<std::cell::RefCell<bool>>, used: Rc<std::cell::RefCell<i8>>,
never: Rc<std::cell::RefCell<bool>>, never: Rc<std::cell::RefCell<bool>>,
} }
@ -193,7 +193,7 @@ fn create_efi_row(
.build(); .build();
prow prow
}, },
used: Rc::new(RefCell::new(false)), used: Rc::new(RefCell::new(0)),
never: Rc::new(RefCell::new(true)), never: Rc::new(RefCell::new(true)),
} }
} else if used_partition_array_refcell } else if used_partition_array_refcell
@ -216,7 +216,7 @@ fn create_efi_row(
.build(); .build();
prow prow
}, },
used: Rc::new(RefCell::new(true)), used: Rc::new(RefCell::new(1)),
never: Rc::new(RefCell::new(false)), never: Rc::new(RefCell::new(false)),
} }
} else if partition.part_fs != "vfat" { } else if partition.part_fs != "vfat" {
@ -230,7 +230,7 @@ fn create_efi_row(
.build(); .build();
prow prow
}, },
used: Rc::new(RefCell::new(false)), used: Rc::new(RefCell::new(0)),
never: Rc::new(RefCell::new(true)), never: Rc::new(RefCell::new(true)),
} }
} else if partition.part_size < MINIMUM_EFI_BYTE_SIZE { } else if partition.part_size < MINIMUM_EFI_BYTE_SIZE {
@ -244,7 +244,7 @@ fn create_efi_row(
.build(); .build();
prow prow
}, },
used: Rc::new(RefCell::new(false)), used: Rc::new(RefCell::new(0)),
never: Rc::new(RefCell::new(true)), never: Rc::new(RefCell::new(true)),
} }
} else { } else {
@ -262,7 +262,7 @@ fn create_efi_row(
.build(); .build();
prow prow
}, },
used: Rc::new(RefCell::new(false)), used: Rc::new(RefCell::new(0)),
never: Rc::new(RefCell::new(false)), never: Rc::new(RefCell::new(false)),
} }
}; };
@ -347,7 +347,7 @@ fn create_boot_row(
.build(); .build();
prow prow
}, },
used: Rc::new(RefCell::new(false)), used: Rc::new(RefCell::new(0)),
never: Rc::new(RefCell::new(true)), never: Rc::new(RefCell::new(true)),
} }
} else if used_partition_array_refcell } else if used_partition_array_refcell
@ -370,7 +370,7 @@ fn create_boot_row(
.build(); .build();
prow prow
}, },
used: Rc::new(RefCell::new(true)), used: Rc::new(RefCell::new(1)),
never: Rc::new(RefCell::new(false)), never: Rc::new(RefCell::new(false)),
} }
} else if partition.part_fs != "ext4" { } else if partition.part_fs != "ext4" {
@ -384,7 +384,7 @@ fn create_boot_row(
.build(); .build();
prow prow
}, },
used: Rc::new(RefCell::new(false)), used: Rc::new(RefCell::new(0)),
never: Rc::new(RefCell::new(true)), never: Rc::new(RefCell::new(true)),
} }
} else if partition.part_size < MINIMUM_BOOT_BYTE_SIZE { } else if partition.part_size < MINIMUM_BOOT_BYTE_SIZE {
@ -398,7 +398,7 @@ fn create_boot_row(
.build(); .build();
prow prow
}, },
used: Rc::new(RefCell::new(false)), used: Rc::new(RefCell::new(0)),
never: Rc::new(RefCell::new(true)), never: Rc::new(RefCell::new(true)),
} }
} else { } else {
@ -416,7 +416,7 @@ fn create_boot_row(
.build(); .build();
prow prow
}, },
used: Rc::new(RefCell::new(false)), used: Rc::new(RefCell::new(0)),
never: Rc::new(RefCell::new(false)), never: Rc::new(RefCell::new(false)),
} }
}; };
@ -501,7 +501,7 @@ fn create_root_row(
.build(); .build();
prow prow
}, },
used: Rc::new(RefCell::new(false)), used: Rc::new(RefCell::new(0)),
never: Rc::new(RefCell::new(true)), never: Rc::new(RefCell::new(true)),
} }
} else if used_partition_array_refcell } else if used_partition_array_refcell
@ -524,7 +524,7 @@ fn create_root_row(
.build(); .build();
prow prow
}, },
used: Rc::new(RefCell::new(true)), used: Rc::new(RefCell::new(1)),
never: Rc::new(RefCell::new(false)), never: Rc::new(RefCell::new(false)),
} }
} else if partition.part_fs == "vfat" } else if partition.part_fs == "vfat"
@ -543,7 +543,7 @@ fn create_root_row(
.build(); .build();
prow prow
}, },
used: Rc::new(RefCell::new(false)), used: Rc::new(RefCell::new(0)),
never: Rc::new(RefCell::new(true)), never: Rc::new(RefCell::new(true)),
} }
} else if partition.part_size < MINIMUM_ROOT_BYTE_SIZE { } else if partition.part_size < MINIMUM_ROOT_BYTE_SIZE {
@ -557,7 +557,7 @@ fn create_root_row(
.build(); .build();
prow prow
}, },
used: Rc::new(RefCell::new(false)), used: Rc::new(RefCell::new(0)),
never: Rc::new(RefCell::new(true)), never: Rc::new(RefCell::new(true)),
} }
} else { } else {
@ -575,7 +575,7 @@ fn create_root_row(
.build(); .build();
prow prow
}, },
used: Rc::new(RefCell::new(false)), used: Rc::new(RefCell::new(0)),
never: Rc::new(RefCell::new(false)), never: Rc::new(RefCell::new(false)),
} }
}; };
@ -658,7 +658,7 @@ fn create_mount_row(
.build(); .build();
prow prow
}, },
used: Rc::new(RefCell::new(false)), used: Rc::new(RefCell::new(0)),
never: Rc::new(RefCell::new(true)), never: Rc::new(RefCell::new(true)),
} }
} else if used_partition_array_refcell } else if used_partition_array_refcell
@ -681,7 +681,7 @@ fn create_mount_row(
.build(); .build();
prow prow
}, },
used: Rc::new(RefCell::new(true)), used: Rc::new(RefCell::new(1)),
never: Rc::new(RefCell::new(false)), never: Rc::new(RefCell::new(false)),
} }
} else { } else {
@ -699,7 +699,7 @@ fn create_mount_row(
.build(); .build();
prow prow
}, },
used: Rc::new(RefCell::new(false)), used: Rc::new(RefCell::new(0)),
never: Rc::new(RefCell::new(false)), never: Rc::new(RefCell::new(false)),
} }
}; };
@ -767,7 +767,7 @@ fn post_check_drive_mount(row: &DriveMountRow, partition_row_struct: &PartitionR
if partition.part_fs != "linux-swap" { if partition.part_fs != "linux-swap" {
partition_row_struct.widget.set_sensitive(false); partition_row_struct.widget.set_sensitive(false);
} }
} else if *partition_row_struct.used.borrow() == false } else if *partition_row_struct.used.borrow() != 1
&& *partition_row_struct.never.borrow() == false && *partition_row_struct.never.borrow() == false
{ {
partition_row_struct.widget.set_sensitive(true); partition_row_struct.widget.set_sensitive(true);
@ -814,17 +814,19 @@ fn post_check_drive_mount(row: &DriveMountRow, partition_row_struct: &PartitionR
.iter() .iter()
.any(|e| part_name == e && part_name != &row.partition()) .any(|e| part_name == e && part_name != &row.partition())
{ {
partition_row_struct.widget.set_sensitive(false);
(*partition_row_struct.used.borrow_mut()) = true;
if subvol_partition_array if subvol_partition_array
.iter() .iter()
.any(|e| e == part_name) .any(|e| e == part_name)
{ {
partition_row_struct.widget.set_sensitive(true); partition_row_struct.widget.set_sensitive(true);
(*partition_row_struct.used.borrow_mut()) = 2;
} else {
partition_row_struct.widget.set_sensitive(false);
(*partition_row_struct.used.borrow_mut()) = 1;
} }
} else if *partition_row_struct.never.borrow() == false { } else if *partition_row_struct.never.borrow() == false {
partition_row_struct.widget.set_sensitive(true); partition_row_struct.widget.set_sensitive(true);
(*partition_row_struct.used.borrow_mut()) = false; (*partition_row_struct.used.borrow_mut()) = 0;
} }
} }
)); ));