feat: add alert dialog for opening failures
This commit is contained in:
parent
ef898dfb76
commit
a19aa8206b
2 changed files with 55 additions and 6 deletions
11
src/main.rs
11
src/main.rs
|
@ -7,7 +7,7 @@ use std::{borrow::Cow, path::PathBuf, time::Duration};
|
|||
|
||||
use color_eyre::eyre::{OptionExt, Result, bail};
|
||||
use gobject::GtkZiplineFolder;
|
||||
use relm::{Dialog, DialogInput, Toast, ToastInput};
|
||||
use relm::{Dialog, DialogInput, StandaloneDialog, Toast, ToastInput};
|
||||
use relm4::{
|
||||
Component, ComponentController, Controller, RelmApp, Sender,
|
||||
adw::{self, prelude::*},
|
||||
|
@ -400,11 +400,10 @@ fn main() -> Result<()> {
|
|||
|
||||
color_eyre::install()?;
|
||||
|
||||
// TODO: show dialog in case these error
|
||||
let config = get_config()?;
|
||||
|
||||
let app = RelmApp::new("net.uku3lig.Tyrolienne");
|
||||
app.run_async::<Tyrolienne>(config);
|
||||
match get_config() {
|
||||
Ok(config) => RelmApp::new("net.uku3lig.Tyrolienne").run_async::<Tyrolienne>(config),
|
||||
Err(e) => RelmApp::new("net.uku3lig.Tyrolienne").run::<StandaloneDialog>(e.to_string()),
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
|
50
src/relm.rs
50
src/relm.rs
|
@ -148,3 +148,53 @@ impl SimpleComponent for Toast {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub struct StandaloneDialog;
|
||||
|
||||
impl SimpleComponent for StandaloneDialog {
|
||||
type Init = String;
|
||||
type Input = ();
|
||||
type Output = ();
|
||||
type Root = adw::ApplicationWindow;
|
||||
type Widgets = ();
|
||||
|
||||
fn init_root() -> Self::Root {
|
||||
adw::ApplicationWindow::builder()
|
||||
.title("Tyrolienne")
|
||||
.default_width(400)
|
||||
.default_height(300)
|
||||
.build()
|
||||
}
|
||||
|
||||
fn init(
|
||||
init: Self::Init,
|
||||
root: Self::Root,
|
||||
_sender: relm4::ComponentSender<Self>,
|
||||
) -> relm4::ComponentParts<Self> {
|
||||
let dialog = adw::AlertDialog::builder()
|
||||
.heading("Could not open Tyrolienne")
|
||||
.body(init)
|
||||
.close_response("close")
|
||||
.build();
|
||||
dialog.add_response("close", "Close");
|
||||
|
||||
dialog.connect_closed(clone!(
|
||||
#[strong]
|
||||
root,
|
||||
move |_| root.close()
|
||||
));
|
||||
|
||||
root.connect_show(clone!(
|
||||
#[strong]
|
||||
dialog,
|
||||
#[strong]
|
||||
root,
|
||||
move |_| dialog.present(Some(&root))
|
||||
));
|
||||
|
||||
relm4::ComponentParts {
|
||||
model: StandaloneDialog,
|
||||
widgets: (),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue