Just
This commit is contained in:
parent
cbca9021d0
commit
e2bd446768
6 changed files with 271 additions and 83 deletions
144
Cargo.lock
generated
144
Cargo.lock
generated
|
@ -233,12 +233,12 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "async-channel"
|
||||
version = "2.1.0"
|
||||
version = "2.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d37875bd9915b7d67c2f117ea2c30a0989874d0b2cb694fe25403c85763c0c9e"
|
||||
checksum = "1ca33f4bc4ed1babef42cad36cc1f51fa88be00420404e5b1e80ab1b18f7678c"
|
||||
dependencies = [
|
||||
"concurrent-queue",
|
||||
"event-listener 3.1.0",
|
||||
"event-listener 4.0.0",
|
||||
"event-listener-strategy",
|
||||
"futures-core",
|
||||
"pin-project-lite",
|
||||
|
@ -246,11 +246,11 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "async-executor"
|
||||
version = "1.7.2"
|
||||
version = "1.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fc5ea910c42e5ab19012bab31f53cb4d63d54c3a27730f9a833a88efcf4bb52d"
|
||||
checksum = "17ae5ebefcc48e7452b4987947920dac9450be1110cadf34d1b8c116bdbaf97c"
|
||||
dependencies = [
|
||||
"async-lock 3.1.1",
|
||||
"async-lock 3.1.2",
|
||||
"async-task",
|
||||
"concurrent-queue",
|
||||
"fastrand 2.0.1",
|
||||
|
@ -276,10 +276,10 @@ version = "2.4.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9b4353121d5644cdf2beb5726ab752e79a8db1ebb52031770ec47db31d245526"
|
||||
dependencies = [
|
||||
"async-channel 2.1.0",
|
||||
"async-channel 2.1.1",
|
||||
"async-executor",
|
||||
"async-io 2.2.0",
|
||||
"async-lock 3.1.1",
|
||||
"async-io 2.2.1",
|
||||
"async-lock 3.1.2",
|
||||
"blocking",
|
||||
"futures-lite 2.0.1",
|
||||
"once_cell",
|
||||
|
@ -307,22 +307,21 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "async-io"
|
||||
version = "2.2.0"
|
||||
version = "2.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "41ed9d5715c2d329bf1b4da8d60455b99b187f27ba726df2883799af9af60997"
|
||||
checksum = "d6d3b15875ba253d1110c740755e246537483f152fa334f91abd7fe84c88b3ff"
|
||||
dependencies = [
|
||||
"async-lock 3.1.1",
|
||||
"async-lock 3.1.2",
|
||||
"cfg-if",
|
||||
"concurrent-queue",
|
||||
"futures-io",
|
||||
"futures-lite 2.0.1",
|
||||
"parking",
|
||||
"polling 3.3.0",
|
||||
"polling 3.3.1",
|
||||
"rustix 0.38.25",
|
||||
"slab",
|
||||
"tracing",
|
||||
"waker-fn",
|
||||
"windows-sys 0.48.0",
|
||||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -336,11 +335,11 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "async-lock"
|
||||
version = "3.1.1"
|
||||
version = "3.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "655b9c7fe787d3b25cc0f804a1a8401790f0c5bc395beb5a64dc77d8de079105"
|
||||
checksum = "dea8b3453dd7cc96711834b75400d671b73e3656975fa68d9f277163b7f7e316"
|
||||
dependencies = [
|
||||
"event-listener 3.1.0",
|
||||
"event-listener 4.0.0",
|
||||
"event-listener-strategy",
|
||||
"pin-project-lite",
|
||||
]
|
||||
|
@ -379,7 +378,7 @@ version = "0.2.5"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9e47d90f65a225c4527103a8d747001fc56e375203592b25ad103e1ca13124c5"
|
||||
dependencies = [
|
||||
"async-io 2.2.0",
|
||||
"async-io 2.2.1",
|
||||
"async-lock 2.8.0",
|
||||
"atomic-waker",
|
||||
"cfg-if",
|
||||
|
@ -610,8 +609,8 @@ version = "1.5.1"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118"
|
||||
dependencies = [
|
||||
"async-channel 2.1.0",
|
||||
"async-lock 3.1.1",
|
||||
"async-channel 2.1.1",
|
||||
"async-lock 3.1.2",
|
||||
"async-task",
|
||||
"fastrand 2.0.1",
|
||||
"futures-io",
|
||||
|
@ -733,7 +732,7 @@ checksum = "7b50b5a44d59a98c55a9eeb518f39bf7499ba19fd98ee7d22618687f3f10adbf"
|
|||
dependencies = [
|
||||
"bitflags 2.4.1",
|
||||
"log",
|
||||
"polling 3.3.0",
|
||||
"polling 3.3.1",
|
||||
"rustix 0.38.25",
|
||||
"slab",
|
||||
"thiserror",
|
||||
|
@ -1685,12 +1684,23 @@ dependencies = [
|
|||
]
|
||||
|
||||
[[package]]
|
||||
name = "event-listener-strategy"
|
||||
version = "0.3.0"
|
||||
name = "event-listener"
|
||||
version = "4.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d96b852f1345da36d551b9473fa1e2b1eb5c5195585c6c018118bc92a8d91160"
|
||||
checksum = "770d968249b5d99410d61f5bf89057f3199a077a04d087092f58e7d10692baae"
|
||||
dependencies = [
|
||||
"event-listener 3.1.0",
|
||||
"concurrent-queue",
|
||||
"parking",
|
||||
"pin-project-lite",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "event-listener-strategy"
|
||||
version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3"
|
||||
dependencies = [
|
||||
"event-listener 4.0.0",
|
||||
"pin-project-lite",
|
||||
]
|
||||
|
||||
|
@ -4303,16 +4313,16 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "polling"
|
||||
version = "3.3.0"
|
||||
version = "3.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e53b6af1f60f36f8c2ac2aad5459d75a5a9b4be1e8cdd40264f315d78193e531"
|
||||
checksum = "cf63fa624ab313c11656b4cda960bfc46c410187ad493c41f6ba2d8c1e991c9e"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"concurrent-queue",
|
||||
"pin-project-lite",
|
||||
"rustix 0.38.25",
|
||||
"tracing",
|
||||
"windows-sys 0.48.0",
|
||||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -6151,9 +6161,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
|
|||
|
||||
[[package]]
|
||||
name = "ureq"
|
||||
version = "2.9.0"
|
||||
version = "2.9.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7830e33f6e25723d41a63f77e434159dad02919f18f55a512b5f16f3b1d77138"
|
||||
checksum = "f8cdd25c339e200129fe4de81451814e5228c9b771d57378817d6117cc2b3f97"
|
||||
dependencies = [
|
||||
"base64",
|
||||
"flate2",
|
||||
|
@ -6683,6 +6693,15 @@ dependencies = [
|
|||
"windows-targets 0.48.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-sys"
|
||||
version = "0.52.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
|
||||
dependencies = [
|
||||
"windows-targets 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-targets"
|
||||
version = "0.42.2"
|
||||
|
@ -6713,6 +6732,21 @@ dependencies = [
|
|||
"windows_x86_64_msvc 0.48.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-targets"
|
||||
version = "0.52.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd"
|
||||
dependencies = [
|
||||
"windows_aarch64_gnullvm 0.52.0",
|
||||
"windows_aarch64_msvc 0.52.0",
|
||||
"windows_i686_gnu 0.52.0",
|
||||
"windows_i686_msvc 0.52.0",
|
||||
"windows_x86_64_gnu 0.52.0",
|
||||
"windows_x86_64_gnullvm 0.52.0",
|
||||
"windows_x86_64_msvc 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_gnullvm"
|
||||
version = "0.42.2"
|
||||
|
@ -6725,6 +6759,12 @@ version = "0.48.5"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_gnullvm"
|
||||
version = "0.52.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea"
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_msvc"
|
||||
version = "0.42.2"
|
||||
|
@ -6737,6 +6777,12 @@ version = "0.48.5"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_msvc"
|
||||
version = "0.52.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_gnu"
|
||||
version = "0.42.2"
|
||||
|
@ -6749,6 +6795,12 @@ version = "0.48.5"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_gnu"
|
||||
version = "0.52.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_msvc"
|
||||
version = "0.42.2"
|
||||
|
@ -6761,6 +6813,12 @@ version = "0.48.5"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_msvc"
|
||||
version = "0.52.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnu"
|
||||
version = "0.42.2"
|
||||
|
@ -6773,6 +6831,12 @@ version = "0.48.5"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnu"
|
||||
version = "0.52.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnullvm"
|
||||
version = "0.42.2"
|
||||
|
@ -6785,6 +6849,12 @@ version = "0.48.5"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnullvm"
|
||||
version = "0.52.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_msvc"
|
||||
version = "0.42.2"
|
||||
|
@ -6798,10 +6868,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
|
||||
|
||||
[[package]]
|
||||
name = "winit"
|
||||
version = "0.29.3"
|
||||
name = "windows_x86_64_msvc"
|
||||
version = "0.52.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "161598019a9da35ab6c34dc46cd13546cba9dbf9816475d4dd9a639455016563"
|
||||
checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
|
||||
|
||||
[[package]]
|
||||
name = "winit"
|
||||
version = "0.29.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d25d662bb83b511acd839534bb2d88521b0bbc81440969cb077d23c4db9e62c7"
|
||||
dependencies = [
|
||||
"ahash",
|
||||
"android-activity",
|
||||
|
|
|
@ -27,6 +27,7 @@ pub fn connect_progress_window(gui_data: &GuiData, progress_receiver: Receiver<P
|
|||
let gui_data = gui_data.clone();
|
||||
|
||||
let future = async move {
|
||||
loop {
|
||||
loop {
|
||||
let item = progress_receiver.try_recv();
|
||||
if let Ok(item) = item {
|
||||
|
@ -44,6 +45,9 @@ pub fn connect_progress_window(gui_data: &GuiData, progress_receiver: Receiver<P
|
|||
ToolType::BadExtensions => process_bar_bad_extensions(&gui_data, &item),
|
||||
ToolType::None => panic!(),
|
||||
}
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
glib::timeout_future(Duration::from_millis(300)).await;
|
||||
}
|
||||
|
|
|
@ -41,7 +41,7 @@ use crate::connect_progress_receiver::connect_progress_gathering;
|
|||
use crate::connect_show_preview::connect_show_preview;
|
||||
use crate::connect_stop::connect_stop_button;
|
||||
use crate::connect_translation::connect_translations;
|
||||
use crate::settings::{load_settings_from_file, reset_settings, save_settings_to_file};
|
||||
use crate::settings::{create_default_settings_files, load_settings_from_file, reset_settings, save_settings_to_file};
|
||||
use czkawka_core::common::{print_version_mode, setup_logger};
|
||||
use czkawka_core::common_dir_traversal::ProgressData;
|
||||
use slint::{ModelRc, VecModel};
|
||||
|
@ -58,7 +58,7 @@ fn main() {
|
|||
|
||||
to_remove_debug(&app);
|
||||
|
||||
reset_settings(&app);
|
||||
create_default_settings_files();
|
||||
load_settings_from_file(&app);
|
||||
|
||||
connect_delete_button(&app);
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
use crate::MainWindow;
|
||||
use std::cmp::{max, min};
|
||||
use std::env;
|
||||
use std::path::PathBuf;
|
||||
use std::path::{Path, PathBuf};
|
||||
|
||||
use crate::common::create_string_standard_list_view_from_pathbuf;
|
||||
use crate::{GuiState, Settings};
|
||||
use czkawka_core::common_items::{DEFAULT_EXCLUDED_DIRECTORIES, DEFAULT_EXCLUDED_ITEMS};
|
||||
use directories_next::ProjectDirs;
|
||||
use home::home_dir;
|
||||
use log::error;
|
||||
use log::{error, info};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use slint::{ComponentHandle, Model};
|
||||
|
||||
|
@ -29,70 +30,150 @@ impl Default for SettingsCustom {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct BasicSettings {
|
||||
#[serde(default = "default_language")]
|
||||
pub language: String,
|
||||
#[serde(default)]
|
||||
pub default_preset: i32,
|
||||
#[serde(default = "default_preset_names")]
|
||||
pub preset_names: Vec<String>,
|
||||
}
|
||||
|
||||
impl Default for BasicSettings {
|
||||
fn default() -> Self {
|
||||
serde_json::from_str("{}").unwrap()
|
||||
}
|
||||
}
|
||||
|
||||
pub fn create_default_settings_files() {
|
||||
let base_config_file = get_base_config_file();
|
||||
if let Some(base_config_file) = base_config_file {
|
||||
if !base_config_file.is_file() {
|
||||
let _ = save_data_to_file(Some(base_config_file), &BasicSettings::default());
|
||||
}
|
||||
}
|
||||
for i in 0..10 {
|
||||
let config_file = get_config_file(i);
|
||||
if let Some(config_file) = config_file {
|
||||
if !config_file.is_file() {
|
||||
let _ = save_data_to_file(Some(config_file), &SettingsCustom::default());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn reset_settings(app: &MainWindow) {
|
||||
set_settings_to_gui(app, &SettingsCustom::default());
|
||||
}
|
||||
|
||||
pub fn load_settings_from_file(app: &MainWindow) {
|
||||
let Some(config_file) = get_config_file() else {
|
||||
error!("Cannot get config file");
|
||||
return;
|
||||
};
|
||||
if !config_file.is_file() {
|
||||
error!("Config file doesn't exists");
|
||||
return;
|
||||
let result_base_settings = load_data_from_file::<BasicSettings>(get_base_config_file());
|
||||
let base_settings;
|
||||
if let Ok(base_settings_temp) = result_base_settings {
|
||||
base_settings = base_settings_temp;
|
||||
} else {
|
||||
info!("Cannot load base settings, using default instead");
|
||||
base_settings = BasicSettings::default();
|
||||
}
|
||||
|
||||
match std::fs::read_to_string(config_file) {
|
||||
Ok(serialized) => match serde_json::from_str(&serialized) {
|
||||
Ok(custom_settings) => {
|
||||
set_settings_to_gui(app, &custom_settings);
|
||||
let results_custom_settings = load_data_from_file::<SettingsCustom>(get_config_file(base_settings.default_preset));
|
||||
let custom_settings;
|
||||
if let Ok(custom_settings_temp) = results_custom_settings {
|
||||
custom_settings = custom_settings_temp;
|
||||
} else {
|
||||
info!("Cannot load custom settings, using default instead");
|
||||
custom_settings = SettingsCustom::default();
|
||||
}
|
||||
|
||||
set_settings_to_gui(app, &custom_settings);
|
||||
set_base_settings_to_gui(app, &base_settings);
|
||||
}
|
||||
|
||||
pub fn save_settings_to_file(app: &MainWindow) {
|
||||
let current_item = app.global::<Settings>().get_settings_preset_idx();
|
||||
let result = save_data_to_file(get_config_file(current_item), &collect_settings(app));
|
||||
|
||||
if let Err(e) = result {
|
||||
error!("{e}");
|
||||
}
|
||||
}
|
||||
|
||||
pub fn load_data_from_file<T>(config_data: Option<PathBuf>) -> Result<T, String>
|
||||
where
|
||||
for<'de> T: Deserialize<'de>,
|
||||
{
|
||||
let Some(config_data) = config_data else {
|
||||
return Err("Cannot get config file".into());
|
||||
};
|
||||
if !config_data.is_file() {
|
||||
return Err("Config file doesn't exists".into());
|
||||
}
|
||||
|
||||
match std::fs::read_to_string(config_data) {
|
||||
Ok(serialized) => match serde_json::from_str(&serialized) {
|
||||
Ok(custom_settings) => Ok(custom_settings),
|
||||
Err(e) => {
|
||||
error!("Cannot deserialize settings: {e}");
|
||||
return Err(format!("Cannot deserialize settings: {e}"));
|
||||
}
|
||||
},
|
||||
Err(e) => {
|
||||
error!("Cannot read config file: {e}");
|
||||
return Err(format!("Cannot read config file: {e}"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn save_settings_to_file(app: &MainWindow) {
|
||||
let Some(config_file) = get_config_file() else {
|
||||
error!("Cannot get config file");
|
||||
return;
|
||||
pub fn save_data_to_file<T>(config_file: Option<PathBuf>, serializable_data: &T) -> Result<(), String>
|
||||
where
|
||||
T: Serialize,
|
||||
{
|
||||
let Some(config_file) = config_file else {
|
||||
return Err("Cannot get config file".into());
|
||||
};
|
||||
// Create dirs if not exists
|
||||
if let Some(parent) = config_file.parent() {
|
||||
if let Err(e) = std::fs::create_dir_all(parent) {
|
||||
error!("Cannot create config folder: {e}");
|
||||
return;
|
||||
return Err(format!("Cannot create config folder: {e}"));
|
||||
}
|
||||
}
|
||||
|
||||
let collected_settings = collect_settings(app);
|
||||
match serde_json::to_string_pretty(&collected_settings) {
|
||||
match serde_json::to_string_pretty(&serializable_data) {
|
||||
Ok(serialized) => {
|
||||
if let Err(e) = std::fs::write(config_file, serialized) {
|
||||
error!("Cannot save config file: {e}");
|
||||
return Err(format!("Cannot save config file: {e}"));
|
||||
}
|
||||
}
|
||||
Err(e) => {
|
||||
error!("Cannot serialize settings: {e}");
|
||||
return Err(format!("Cannot serialize settings: {e}"));
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn get_config_file() -> Option<PathBuf> {
|
||||
pub fn get_base_config_file() -> Option<PathBuf> {
|
||||
let Some(configs) = ProjectDirs::from("pl", "Qarmin", "Krokiet") else {
|
||||
return None;
|
||||
};
|
||||
let config_folder = configs.config_dir();
|
||||
let config_file = config_folder.join("config.json");
|
||||
let base_config_file = config_folder.join("config_general.json");
|
||||
Some(base_config_file)
|
||||
}
|
||||
pub fn get_config_file(number: i32) -> Option<PathBuf> {
|
||||
let number = max(min(number, 9), 0);
|
||||
|
||||
let Some(configs) = ProjectDirs::from("pl", "Qarmin", "Krokiet") else {
|
||||
return None;
|
||||
};
|
||||
let config_folder = configs.config_dir();
|
||||
let config_file = config_folder.join(format!("config_preset_{number}.json"));
|
||||
Some(config_file)
|
||||
}
|
||||
|
||||
pub fn set_base_settings_to_gui(app: &MainWindow, basic_settings: &BasicSettings) {
|
||||
let settings = app.global::<Settings>();
|
||||
// settings.set_language(basic_settings.language.clone());
|
||||
settings.set_settings_preset_idx(basic_settings.default_preset);
|
||||
}
|
||||
pub fn set_settings_to_gui(app: &MainWindow, custom_settings: &SettingsCustom) {
|
||||
let settings = app.global::<Settings>();
|
||||
|
||||
|
@ -131,6 +212,20 @@ pub fn collect_settings(app: &MainWindow) -> SettingsCustom {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn collect_base_settings(app: &MainWindow) -> BasicSettings {
|
||||
let settings = app.global::<Settings>();
|
||||
|
||||
let default_preset = settings.get_settings_preset_idx();
|
||||
let preset_names = settings.get_settings_presets().iter().map(|x| x.to_string()).collect::<Vec<_>>();
|
||||
|
||||
assert_eq!(preset_names.len(), 10);
|
||||
BasicSettings {
|
||||
language: "en".to_string(),
|
||||
default_preset,
|
||||
preset_names,
|
||||
}
|
||||
}
|
||||
|
||||
fn default_included_directories() -> Vec<PathBuf> {
|
||||
let mut included_directories = vec![];
|
||||
if let Ok(current_dir) = env::current_dir() {
|
||||
|
@ -156,3 +251,16 @@ fn default_excluded_directories() -> Vec<PathBuf> {
|
|||
fn default_excluded_items() -> String {
|
||||
DEFAULT_EXCLUDED_ITEMS.to_string()
|
||||
}
|
||||
|
||||
fn default_language() -> String {
|
||||
"en".to_string()
|
||||
}
|
||||
|
||||
fn default_preset_names() -> Vec<String> {
|
||||
vec![
|
||||
"Preset 0", "Preset 1", "Preset 2", "Preset 3", "Preset 4", "Preset 5", "Preset 6", "Preset 7", "Preset 8", "Preset 9",
|
||||
]
|
||||
.iter()
|
||||
.map(|x| x.to_string())
|
||||
.collect::<Vec<_>>()
|
||||
}
|
||||
|
|
|
@ -110,12 +110,12 @@ export component LeftSidePanel {
|
|||
}
|
||||
|
||||
HorizontalLayout {
|
||||
padding-bottom: 2px;
|
||||
padding-right: 3px;
|
||||
alignment: end;
|
||||
Button {
|
||||
height: 50px;
|
||||
width: self.height;
|
||||
min-width: 20px;
|
||||
min-height: 20px;
|
||||
max-height: self.width;
|
||||
preferred-height: self.width;
|
||||
icon: @image-url("../icons/settings.svg");
|
||||
clicked => {
|
||||
active_tab = CurrentTab.Settings;
|
||||
|
|
|
@ -26,7 +26,7 @@ component MinMaxSizeComponent inherits HorizontalLayout {
|
|||
spacing: 20px;
|
||||
Text {
|
||||
horizontal-stretch: 0.0;
|
||||
text:"Items Size";
|
||||
text:"Items Size(Kb)";
|
||||
vertical-alignment: TextVerticalAlignment.center;
|
||||
}
|
||||
HorizontalLayout {
|
||||
|
|
Loading…
Reference in a new issue