native_dialog/builder/
message.rs

1use raw_window_handle::HasWindowHandle;
2
3use crate::dialog::{MessageAlert, MessageConfirm};
4use crate::utils::UnsafeWindowHandle;
5
6pub use crate::dialog::MessageLevel;
7
8/// Builder for message dialogs.
9#[derive(Debug, Clone, Default)]
10pub struct MessageDialogBuilder {
11    pub title: String,
12    pub text: String,
13    pub level: MessageLevel,
14    pub owner: UnsafeWindowHandle,
15}
16
17impl MessageDialogBuilder {
18    /// Set the title of the dialog.
19    pub fn set_title(mut self, title: impl ToString) -> Self {
20        self.title = title.to_string();
21        self
22    }
23
24    /// Set the message text of the dialog.
25    pub fn set_text(mut self, text: impl ToString) -> Self {
26        self.text = text.to_string();
27        self
28    }
29
30    /// Set the level of the message.
31    pub fn set_level(mut self, level: MessageLevel) -> Self {
32        self.level = level;
33        self
34    }
35
36    /// Sets the owner of the dialog.
37    pub fn set_owner<W: HasWindowHandle>(mut self, window: &W) -> Self {
38        self.owner = UnsafeWindowHandle::new(window);
39        self
40    }
41
42    /// Resets the owner of the dialog to nothing.
43    pub fn reset_owner(mut self) -> Self {
44        self.owner = UnsafeWindowHandle::default();
45        self
46    }
47
48    /// Builds a dialog that alert users with some message.
49    pub fn alert(self) -> MessageAlert {
50        MessageAlert {
51            title: self.title,
52            text: self.text,
53            level: self.level,
54            owner: self.owner,
55        }
56    }
57
58    /// Builds a dialog that let users to choose Yes/No.
59    pub fn confirm(self) -> MessageConfirm {
60        MessageConfirm {
61            title: self.title,
62            text: self.text,
63            level: self.level,
64            owner: self.owner,
65        }
66    }
67}