diff options
| author | pml68 <contact@pml68.dev> | 2025-03-31 00:57:02 +0200 |
|---|---|---|
| committer | pml68 <contact@pml68.dev> | 2025-03-31 00:58:24 +0200 |
| commit | d0e05b960cc626b7406582d61cc9a7cae485b915 (patch) | |
| tree | 3735269efee53ef8104768c1c728bf7b57fa33a5 /src/dialogs.rs | |
| parent | ci: add dependabot config file [skip ci] (diff) | |
| download | iced-builder-d0e05b960cc626b7406582d61cc9a7cae485b915.tar.gz | |
feat: remove GTK3 dependency
Diffstat (limited to 'src/dialogs.rs')
| -rw-r--r-- | src/dialogs.rs | 68 |
1 files changed, 40 insertions, 28 deletions
diff --git a/src/dialogs.rs b/src/dialogs.rs index 5954ff5..08513fd 100644 --- a/src/dialogs.rs +++ b/src/dialogs.rs @@ -1,35 +1,47 @@ -use rfd::{ - AsyncMessageDialog, MessageButtons, MessageDialog, MessageDialogResult, - MessageLevel, -}; +use iced::{Element, Task}; +use iced_dialog::button; -pub async fn error_dialog(description: impl Into<String>) { - let _ = AsyncMessageDialog::new() - .set_level(MessageLevel::Error) - .set_buttons(MessageButtons::Ok) - .set_title("Oops! Something went wrong.") - .set_description(description) - .show() - .await; +use crate::Message; +use crate::types::{DialogAction, DialogButtons}; + +pub const UNSAVED_CHANGES_TITLE: &str = "Unsaved changes"; +pub const WARNING_TITLE: &str = "Heads up!"; +pub const ERROR_TITLE: &str = "Oops! Something went wrong."; + +pub fn ok_button<'a>() -> Element<'a, Message> { + button("Ok").on_press(Message::DialogOk).into() } -pub async fn warning_dialog(description: impl Into<String>) { - let _ = AsyncMessageDialog::new() - .set_level(MessageLevel::Warning) - .set_buttons(MessageButtons::Ok) - .set_title("Heads up!") - .set_description(description) - .show() - .await; +pub fn cancel_button<'a>() -> Element<'a, Message> { + button("Cancel").on_press(Message::DialogCancel).into() } -pub fn unsaved_changes_dialog(description: impl Into<String>) -> bool { - let result = MessageDialog::new() - .set_level(MessageLevel::Warning) - .set_buttons(MessageButtons::OkCancel) - .set_title("Unsaved changes") - .set_description(description) - .show(); +pub fn error_dialog(description: impl Into<String>) -> Task<Message> { + Task::done(Message::OpenDialog( + ERROR_TITLE, + description.into(), + DialogButtons::Ok, + DialogAction::None, + )) +} + +pub fn warning_dialog(description: impl Into<String>) -> Task<Message> { + Task::done(Message::OpenDialog( + WARNING_TITLE, + description.into(), + DialogButtons::Ok, + DialogAction::None, + )) +} - matches!(result, MessageDialogResult::Ok) +pub fn unsaved_changes_dialog( + description: impl Into<String>, + action: DialogAction, +) -> Task<Message> { + Task::done(Message::OpenDialog( + UNSAVED_CHANGES_TITLE, + description.into(), + DialogButtons::OkCancel, + action, + )) } |
