refactor: implemented #84
This commit is contained in:
parent
b1b3455f8e
commit
7fead37513
4 changed files with 35 additions and 52 deletions
|
@ -20,6 +20,7 @@ relm4 = { version = "0.5", features = ["macros", "libadwaita"] }
|
||||||
gtk = { package = "gtk4", version = "0.5", features = ["v4_8"] }
|
gtk = { package = "gtk4", version = "0.5", features = ["v4_8"] }
|
||||||
adw = { package = "libadwaita", version = "0.2", features = ["v1_2"] }
|
adw = { package = "libadwaita", version = "0.2", features = ["v1_2"] }
|
||||||
rfd = { version = "0.11", features = ["xdg-portal"], default-features = false }
|
rfd = { version = "0.11", features = ["xdg-portal"], default-features = false }
|
||||||
|
open = "3.2.0"
|
||||||
|
|
||||||
anime-launcher-sdk = { path = "anime-launcher-sdk" }
|
anime-launcher-sdk = { path = "anime-launcher-sdk" }
|
||||||
|
|
||||||
|
@ -34,5 +35,3 @@ anyhow = "1.0"
|
||||||
cached = { version = "0.42", features = ["proc_macro"] }
|
cached = { version = "0.42", features = ["proc_macro"] }
|
||||||
serde_json = "1"
|
serde_json = "1"
|
||||||
md-5 = { version = "0.10", features = ["asm"] }
|
md-5 = { version = "0.10", features = ["asm"] }
|
||||||
|
|
||||||
open = "3.2.0"
|
|
||||||
|
|
|
@ -206,11 +206,9 @@ impl SimpleComponent for FirstRunApp {
|
||||||
|
|
||||||
dialog.set_response_appearance("save", adw::ResponseAppearance::Suggested);
|
dialog.set_response_appearance("save", adw::ResponseAppearance::Suggested);
|
||||||
|
|
||||||
#[allow(unused_must_use)]
|
|
||||||
dialog.connect_response(Some("save"), |_, _| {
|
dialog.connect_response(Some("save"), |_, _| {
|
||||||
match open::that(crate::DEBUG_FILE.as_os_str()) {
|
if let Err(err) = open::that(crate::DEBUG_FILE.as_os_str()) {
|
||||||
Ok(()) => {},
|
tracing::error!("Failed to open debug file: {err}");
|
||||||
Err(err) => tracing::error!("Failed to open debug file: {}", err)
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -24,8 +24,6 @@ use crate::ui::components::*;
|
||||||
use super::preferences::main::*;
|
use super::preferences::main::*;
|
||||||
use super::about::*;
|
use super::about::*;
|
||||||
|
|
||||||
use open::*;
|
|
||||||
|
|
||||||
relm4::new_action_group!(WindowActionGroup, "win");
|
relm4::new_action_group!(WindowActionGroup, "win");
|
||||||
|
|
||||||
relm4::new_stateless_action!(LauncherFolder, WindowActionGroup, "launcher_folder");
|
relm4::new_stateless_action!(LauncherFolder, WindowActionGroup, "launcher_folder");
|
||||||
|
@ -528,56 +526,48 @@ impl SimpleComponent for App {
|
||||||
// TODO: reduce code somehow
|
// TODO: reduce code somehow
|
||||||
|
|
||||||
group.add_action::<LauncherFolder>(&RelmAction::new_stateless(clone!(@strong sender => move |_| {
|
group.add_action::<LauncherFolder>(&RelmAction::new_stateless(clone!(@strong sender => move |_| {
|
||||||
match open::that(LAUNCHER_FOLDER.as_path()) {
|
if let Err(err) = open::that(LAUNCHER_FOLDER.as_path()) {
|
||||||
Ok(()) => {},
|
sender.input(AppMsg::Toast {
|
||||||
Err(err) => {
|
title: tr("launcher-folder-opening-error"),
|
||||||
sender.input(AppMsg::Toast {
|
description: Some(err.to_string())
|
||||||
title: tr("launcher-folder-opening-error"),
|
});
|
||||||
description: Some(err.to_string())
|
|
||||||
});
|
tracing::error!("Failed to open launcher folder: {err}");
|
||||||
tracing::error!("Failed to open launcher folder: {err}");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
})));
|
})));
|
||||||
|
|
||||||
group.add_action::<GameFolder>(&RelmAction::new_stateless(clone!(@strong sender => move |_| {
|
group.add_action::<GameFolder>(&RelmAction::new_stateless(clone!(@strong sender => move |_| {
|
||||||
match open::that(&CONFIG.game.path) {
|
if let Err(err) = open::that(&CONFIG.game.path) {
|
||||||
Ok(()) => {},
|
sender.input(AppMsg::Toast {
|
||||||
Err(err) => {
|
title: tr("game-folder-opening-error"),
|
||||||
sender.input(AppMsg::Toast {
|
description: Some(err.to_string())
|
||||||
title: tr("game-folder-opening-error"),
|
});
|
||||||
description: Some(err.to_string())
|
|
||||||
});
|
tracing::error!("Failed to open game folder: {err}");
|
||||||
tracing::error!("Failed to open game folder: {err}");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
})));
|
})));
|
||||||
|
|
||||||
group.add_action::<ConfigFile>(&RelmAction::new_stateless(clone!(@strong sender => move |_| {
|
group.add_action::<ConfigFile>(&RelmAction::new_stateless(clone!(@strong sender => move |_| {
|
||||||
if let Some(file) = anime_launcher_sdk::consts::config_file() {
|
if let Some(file) = anime_launcher_sdk::consts::config_file() {
|
||||||
match open::that(file) {
|
if let Err(err) = open::that(file) {
|
||||||
Ok(()) => {},
|
sender.input(AppMsg::Toast {
|
||||||
Err(err) => {
|
title: tr("config-file-opening-error"),
|
||||||
sender.input(AppMsg::Toast {
|
description: Some(err.to_string())
|
||||||
title: tr("config-file-opening-error"),
|
});
|
||||||
description: Some(err.to_string())
|
|
||||||
});
|
tracing::error!("Failed to open config file: {err}");
|
||||||
tracing::error!("Failed to open config file: {err}");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})));
|
})));
|
||||||
|
|
||||||
group.add_action::<DebugFile>(&RelmAction::new_stateless(clone!(@strong sender => move |_| {
|
group.add_action::<DebugFile>(&RelmAction::new_stateless(clone!(@strong sender => move |_| {
|
||||||
match open::that(crate::DEBUG_FILE.as_os_str()) {
|
if let Err(err) = open::that(crate::DEBUG_FILE.as_os_str()) {
|
||||||
Ok(()) => {},
|
sender.input(AppMsg::Toast {
|
||||||
Err(err) => {
|
title: tr("debug-file-opening-error"),
|
||||||
sender.input(AppMsg::Toast {
|
description: Some(err.to_string())
|
||||||
title: tr("debug-file-opening-error"),
|
});
|
||||||
description: Some(err.to_string())
|
|
||||||
});
|
tracing::error!("Failed to open debug file: {err}");
|
||||||
tracing::error!("Failed to open debug file: {err}");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
})));
|
})));
|
||||||
|
|
||||||
|
@ -1275,11 +1265,9 @@ impl App {
|
||||||
|
|
||||||
dialog.set_response_appearance("save", adw::ResponseAppearance::Suggested);
|
dialog.set_response_appearance("save", adw::ResponseAppearance::Suggested);
|
||||||
|
|
||||||
#[allow(unused_must_use)]
|
|
||||||
dialog.connect_response(Some("save"), |_, _| {
|
dialog.connect_response(Some("save"), |_, _| {
|
||||||
match open::that(crate::DEBUG_FILE.as_os_str()) {
|
if let Err(err) = open::that(crate::DEBUG_FILE.as_os_str()) {
|
||||||
Ok(()) => {},
|
tracing::error!("Failed to open debug file: {err}");
|
||||||
Err(err) => tracing::error!("Failed to open debug file: {}", err),
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -164,11 +164,9 @@ impl SimpleAsyncComponent for PreferencesApp {
|
||||||
|
|
||||||
dialog.set_response_appearance("save", adw::ResponseAppearance::Suggested);
|
dialog.set_response_appearance("save", adw::ResponseAppearance::Suggested);
|
||||||
|
|
||||||
#[allow(unused_must_use)]
|
|
||||||
dialog.connect_response(Some("save"), |_, _| {
|
dialog.connect_response(Some("save"), |_, _| {
|
||||||
match open::that(crate::DEBUG_FILE.as_os_str()) {
|
if let Err(err) = open::that(crate::DEBUG_FILE.as_os_str()) {
|
||||||
Ok(()) => {},
|
tracing::error!("Failed to open debug file: {err}");
|
||||||
Err(err) => tracing::error!("Failed to open debug file: {}", err)
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue