aboutsummaryrefslogtreecommitdiffstats
path: root/ports/servoshell/desktop/dialog.rs
diff options
context:
space:
mode:
Diffstat (limited to 'ports/servoshell/desktop/dialog.rs')
-rw-r--r--ports/servoshell/desktop/dialog.rs79
1 files changed, 32 insertions, 47 deletions
diff --git a/ports/servoshell/desktop/dialog.rs b/ports/servoshell/desktop/dialog.rs
index 3b277b6a424..b1cd00deff4 100644
--- a/ports/servoshell/desktop/dialog.rs
+++ b/ports/servoshell/desktop/dialog.rs
@@ -9,7 +9,10 @@ use egui::Modal;
use egui_file_dialog::{DialogState, FileDialog as EguiFileDialog};
use log::warn;
use servo::ipc_channel::ipc::IpcSender;
-use servo::{AuthenticationRequest, FilterPattern, PermissionRequest, PromptResult};
+use servo::{
+ AlertResponse, AuthenticationRequest, ConfirmResponse, FilterPattern, PermissionRequest,
+ PromptResponse, SimpleDialog,
+};
pub enum Dialog {
File {
@@ -17,19 +20,8 @@ pub enum Dialog {
multiple: bool,
response_sender: IpcSender<Option<Vec<PathBuf>>>,
},
- Alert {
- message: String,
- sender: IpcSender<()>,
- },
- OkCancel {
- message: String,
- sender: IpcSender<PromptResult>,
- },
- Input {
- message: String,
- input_text: String,
- sender: IpcSender<Option<String>>,
- },
+ #[allow(clippy::enum_variant_names, reason = "spec terminology")]
+ SimpleDialog(SimpleDialog),
Authentication {
username: String,
password: String,
@@ -76,24 +68,8 @@ impl Dialog {
}
}
- pub fn new_alert_dialog(message: String, sender: IpcSender<()>) -> Self {
- Dialog::Alert { message, sender }
- }
-
- pub fn new_okcancel_dialog(message: String, sender: IpcSender<PromptResult>) -> Self {
- Dialog::OkCancel { message, sender }
- }
-
- pub fn new_input_dialog(
- message: String,
- default: String,
- sender: IpcSender<Option<String>>,
- ) -> Self {
- Dialog::Input {
- message,
- input_text: default,
- sender,
- }
+ pub fn new_simple_dialog(dialog: SimpleDialog) -> Self {
+ Self::SimpleDialog(dialog)
}
pub fn new_authentication_dialog(authentication_request: AuthenticationRequest) -> Self {
@@ -165,9 +141,12 @@ impl Dialog {
DialogState::Closed => false,
}
},
- Dialog::Alert { message, sender } => {
+ Dialog::SimpleDialog(SimpleDialog::Alert {
+ message,
+ response_sender,
+ }) => {
let mut is_open = true;
- let modal = Modal::new("alert".into());
+ let modal = Modal::new("Alert".into());
modal.show(ctx, |ui| {
make_dialog_label(message, ui, None);
egui::Sides::new().show(
@@ -176,7 +155,7 @@ impl Dialog {
|ui| {
if ui.button("Close").clicked() {
is_open = false;
- if let Err(e) = sender.send(()) {
+ if let Err(e) = response_sender.send(AlertResponse::Ok) {
warn!("Failed to send alert dialog response: {}", e);
}
}
@@ -185,9 +164,12 @@ impl Dialog {
});
is_open
},
- Dialog::OkCancel { message, sender } => {
+ Dialog::SimpleDialog(SimpleDialog::Confirm {
+ message,
+ response_sender,
+ }) => {
let mut is_open = true;
- let modal = Modal::new("OkCancel".into());
+ let modal = Modal::new("Confirm".into());
modal.show(ctx, |ui| {
make_dialog_label(message, ui, None);
egui::Sides::new().show(
@@ -196,13 +178,13 @@ impl Dialog {
|ui| {
if ui.button("Ok").clicked() {
is_open = false;
- if let Err(e) = sender.send(PromptResult::Primary) {
+ if let Err(e) = response_sender.send(ConfirmResponse::Ok) {
warn!("Failed to send alert dialog response: {}", e);
}
}
if ui.button("Cancel").clicked() {
is_open = false;
- if let Err(e) = sender.send(PromptResult::Secondary) {
+ if let Err(e) = response_sender.send(ConfirmResponse::Cancel) {
warn!("Failed to send alert dialog response: {}", e);
}
}
@@ -211,27 +193,30 @@ impl Dialog {
});
is_open
},
- Dialog::Input {
+ Dialog::SimpleDialog(SimpleDialog::Prompt {
message,
- input_text,
- sender,
- } => {
+ // The `default` field gets reused as the input buffer.
+ default: input,
+ response_sender,
+ }) => {
let mut is_open = true;
- Modal::new("input".into()).show(ctx, |ui| {
- make_dialog_label(message, ui, Some(input_text));
+ Modal::new("Prompt".into()).show(ctx, |ui| {
+ make_dialog_label(message, ui, Some(input));
egui::Sides::new().show(
ui,
|_ui| {},
|ui| {
if ui.button("Ok").clicked() {
is_open = false;
- if let Err(e) = sender.send(Some(input_text.clone())) {
+ if let Err(e) =
+ response_sender.send(PromptResponse::Ok(input.clone()))
+ {
warn!("Failed to send input dialog response: {}", e);
}
}
if ui.button("Cancel").clicked() {
is_open = false;
- if let Err(e) = sender.send(None) {
+ if let Err(e) = response_sender.send(PromptResponse::Cancel) {
warn!("Failed to send input dialog response: {}", e);
}
}