Skip to main content

blocking_dialog/linux/
alert.rs

1// SPDX-FileCopyrightText: 2026 Manuel Quarneti <mq1@ik.me>
2// SPDX-License-Identifier: MIT OR Apache-2.0
3
4use crate::{BlockingAlertDialog, BlockingDialogError, BlockingDialogLevel};
5use raw_window_handle::{HasDisplayHandle, HasWindowHandle};
6use rfd::{MessageDialog, MessageLevel};
7
8fn get_rfd_dialog_level(level: BlockingDialogLevel) -> MessageLevel {
9    match level {
10        BlockingDialogLevel::Info => MessageLevel::Info,
11        BlockingDialogLevel::Warning => MessageLevel::Warning,
12        BlockingDialogLevel::Error => MessageLevel::Error,
13    }
14}
15
16impl<'a, W: HasWindowHandle + HasDisplayHandle> BlockingAlertDialog<'a, W> {
17    pub fn show(&self) -> Result<(), BlockingDialogError> {
18        let _ = MessageDialog::new()
19            .set_level(get_rfd_dialog_level(self.level))
20            .set_title(self.title)
21            .set_description(self.message)
22            .set_parent(&self.window)
23            .show();
24
25        Ok(())
26    }
27}