use crate::domain::ConnectionId;
#[derive(Debug, Clone)]
pub enum ConfirmIntent {
QuitNoConnection,
DeleteConnection(ConnectionId),
ExecuteWrite {
sql: String,
blocked: bool,
},
CsvExport {
export_query: String,
file_name: String,
row_count: Option<usize>,
},
DisableReadOnly,
}
#[derive(Debug, Clone)]
pub struct ConfirmDialogState {
title: String,
message: String,
intent: Option<ConfirmIntent>,
}
impl ConfirmDialogState {
pub fn open(
&mut self,
title: impl Into<String>,
message: impl Into<String>,
intent: ConfirmIntent,
) {
self.title = title.into();
self.message = message.into();
self.intent = Some(intent);
}
pub fn title(&self) -> &str {
&self.title
}
pub fn message(&self) -> &str {
&self.message
}
pub fn intent(&self) -> Option<&ConfirmIntent> {
self.intent.as_ref()
}
pub fn take_intent(&mut self) -> Option<ConfirmIntent> {
self.intent.take()
}
}
impl Default for ConfirmDialogState {
fn default() -> Self {
Self {
title: "Confirm".to_string(),
message: String::new(),
intent: None,
}
}
}