native_dialog/builder/
message.rs

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