// This file is part of Deja-vu.
//
// Deja-vu is free software: you can redistribute it and/or modify it
// under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Deja-vu is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Deja-vu. If not, see .
//
use std::sync::{Arc, Mutex};
use serde::{Deserialize, Serialize};
use crate::system::{
disk::{Disk, PartitionTableType},
drivers::Driver,
};
#[derive(Default, Debug, Copy, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum Mode {
#[default]
ScanDisks,
InstallDrivers,
SelectDisks,
SelectTableType,
Confirm,
PreClone,
Clone,
SelectParts,
PostClone,
Done,
Failed,
}
#[derive(Debug, Default)]
pub struct CloneSettings {
pub disk_index_dest: Option,
pub disk_index_source: Option,
pub disk_list: Arc>>,
pub part_index_boot: Option,
pub part_index_os: Option,
pub driver: Option,
pub table_type: Option,
}
impl CloneSettings {
pub fn new(disk_list: Arc>>) -> Self {
CloneSettings {
disk_list,
..Default::default()
}
}
}