Cleaner feedback dialog

This commit is contained in:
MEEPofFaith
2024-04-16 17:55:55 -07:00
parent 8f8bd67d4b
commit e155bf7101
3 changed files with 62 additions and 38 deletions

View File

@@ -185,8 +185,9 @@ mod.scripts.disable = Your device does not support mods with scripts. You must d
mod.dependencies.error = [scarlet]Mods are missing dependencies
mod.dependencies.download = Download
mod.dependencies.success = Successfully downloaded all dependencies
mod.dependencies.failure = Failed to download some dependencies:
mod.dependencies.status = Import Results
mod.dependencies.success = Successfully downloaded:
mod.dependencies.failure = Failed to download:
about.button = About
name = Name:

View File

@@ -429,13 +429,9 @@ public class UI implements ApplicationListener, Loadable{
}
public void showInfoOnHidden(String info, Runnable listener){
showInfoOnHidden(info, Align.center, listener);
}
public void showInfoOnHidden(String info, int align, Runnable listener){
new Dialog(""){{
getCell(cont).growX();
cont.margin(15).add(info).width(400f).wrap().get().setAlignment(align, align);
cont.margin(15).add(info).width(400f).wrap().get().setAlignment(Align.center, Align.center);
buttons.button("@ok", this::hide).size(110, 50).pad(4);
hidden(listener);
closeOnBack();

View File

@@ -615,7 +615,7 @@ public class Mods implements Loadable{
cont.row();
cont.image().width(300f).pad(2).colspan(2).height(4f).color(Color.scarlet);
cont.row();
cont.add("@mod.errors").wrap().growX().center().get().setAlignment(Align.center);
cont.add("@mod.errors").wrap().growX().center().labelAlign(Align.center);
cont.row();
cont.pane(p -> {
mods.each(m -> m.enabled() && m.hasContentErrors(), m -> {
@@ -655,18 +655,18 @@ public class Mods implements Loadable{
cont.margin(15);
cont.add("@mod.dependencies.error");
cont.row();
cont.image().width(300f).pad(2).colspan(2).height(4f).color(Color.scarlet);
cont.image().width(300f).pad(2).height(4f).color(Color.scarlet);
cont.row();
cont.pane(p -> {
mods.each(LoadedMod::hasUnmetDependencies, mod -> {
p.add(mod.name).wrap().growX().left().get().setAlignment(Align.left);
p.add(mod.name).wrap().growX().left().labelAlign(Align.left);
p.row();
p.table(d -> {
mod.missingDependencies.each(dep -> {
d.add(" " + dep).wrap().growX().left().get().setAlignment(Align.left);
d.add(dep).wrap().growX().left().labelAlign(Align.left);
d.row();
});
}).growX().padBottom(8f);
}).growX().padBottom(8f).padLeft(12f);
p.row();
});
}).fillX();
@@ -677,40 +677,67 @@ public class Mods implements Loadable{
b.button("@ok", this::hide).size(150, 50);
b.button("@mod.dependencies.download", () -> {
hide();
Seq<String> missingDeps = new Seq<>();
Seq<String> toImport = new Seq<>();
mods.each(LoadedMod::hasUnmetDependencies, mod -> {
mod.missingDependencies.each(missingDeps::addUnique);
mod.missingDependencies.each(toImport::addUnique);
});
int toImport = missingDeps.size;
ui.mods.importDependencies(missingDeps);
if(missingDeps.isEmpty()){
ui.showInfoOnHidden(Core.bundle.get("mod.dependencies.success") + "\n\n" + Core.bundle.get("mods.reloadexit"), () -> {
Log.info("Exiting to reload mods.");
Core.app.exit();
});
}else{
String[] fail = {Core.bundle.get("mod.dependencies.failure")};
missingDeps.each(d -> fail[0] += "\n " + d);
boolean imported = missingDeps.size < toImport; //Mods were loaded
if(imported){
fail[0] += "\n\n" + Core.bundle.get("mods.reloadexit");
}
ui.showInfoOnHidden(fail[0], Align.left, () -> {
if(imported){
Log.info("Exiting to reload mods.");
Core.app.exit();
}
});
}
Seq<String> remaining = toImport.copy();
ui.mods.importDependencies(remaining);
toImport.removeAll(remaining);
displayDependencyImportStatus(remaining, toImport);
}).size(150, 50);
});
}}.show();
}
}
private void displayDependencyImportStatus(Seq<String> failed, Seq<String> success){
new Dialog(""){{
setFillParent(true);
cont.margin(15);
cont.add("@mod.dependencies.status").center();
cont.row();
cont.image().width(300f).pad(2).height(4f).color(Color.lightGray);
cont.row();
cont.pane(p -> {
if(success.any()){
p.add("@mod.dependencies.success").wrap().fillX().left().labelAlign(Align.left);
p.row();
p.table(t -> {
success.each(d -> {
t.add(d).wrap().growX().left().labelAlign(Align.left);
t.row();
});
}).growX().padBottom(8f).padLeft(12f);
p.row();
}
if(failed.any()){
p.add("@mod.dependencies.failure").wrap().fillX().left().labelAlign(Align.left);
p.row();
p.table(t -> {
failed.each(d -> {
t.add(d).wrap().growX().left().labelAlign(Align.left);
t.row();
});
}).growX().padBottom(8f).padLeft(12f);
}
}).fillX();
if(success.any()){
cont.image().width(300f).pad(2).height(4f).color(Color.lightGray);
cont.row();
cont.add("@mods.reloadexit").center();
hidden(() -> {
Log.info("Exiting to reload mods after dependency auto-import.");
Core.app.exit();
});
}
}}.show();
}
private void reload(){
ui.showInfoOnHidden("@mods.reloadexit", () -> {
Log.info("Exiting to reload mods.");