[config-ui-tiny] refresh widget cache after preset selection
ci/woodpecker/push/docs Pipeline was successful Details
ci/woodpecker/push/jfmod Pipeline was successful Details
ci/woodpecker/tag/docs Pipeline was successful Details
ci/woodpecker/tag/jfmod Pipeline was successful Details

This commit is contained in:
Johannes Frohnmeyer 2023-03-22 15:01:55 +01:00
parent fbbb2fb166
commit ce3a9126b5
Signed by: Johannes
GPG Key ID: E76429612C2929F4
3 changed files with 13 additions and 4 deletions

View File

@ -39,7 +39,7 @@ public class TinyConfigScreen extends Screen {
} }
private final Screen parent; private final Screen parent;
private final ConfigCategory config; private final ConfigCategory config;
public final List<WidgetState<?>> widgets; public final List<WidgetState<?>> widgets; // Filled in from TinyConfigTab
private final Placeholder<EntryListWidget> placeholder; private final Placeholder<EntryListWidget> placeholder;
private final TabManager tabManager = new TabManager(a -> selectTab(((TinyConfigTabWrapper)a).getTab()), a -> {}); private final TabManager tabManager = new TabManager(a -> selectTab(((TinyConfigTabWrapper)a).getTab()), a -> {});
private List<TinyConfigTab> tabs; private List<TinyConfigTab> tabs;
@ -107,7 +107,7 @@ public class TinyConfigScreen extends Screen {
if (tabs.size() == 1 && !config.getPresets().isEmpty()) { if (tabs.size() == 1 && !config.getPresets().isEmpty()) {
this.addDrawableChild(ButtonWidget.builder(Text.translatable("libjf-config-v1.presets"), this.addDrawableChild(ButtonWidget.builder(Text.translatable("libjf-config-v1.presets"),
button -> Objects.requireNonNull(client).setScreen(new PresetsScreen(this, config))) button -> Objects.requireNonNull(client).setScreen(new PresetsScreen(this, config, this::afterSelectPreset)))
.dimensions(4, 6, 80, 20) .dimensions(4, 6, 80, 20)
.build()); .build());
} }
@ -120,6 +120,12 @@ public class TinyConfigScreen extends Screen {
reload = true; reload = true;
} }
public void afterSelectPreset() {
for (WidgetState<?> widget : widgets) {
widget.updateCache();
}
}
private void selectTab(TinyConfigTab tab) { private void selectTab(TinyConfigTab tab) {
placeholder.setChild(tab.getList()); placeholder.setChild(tab.getList());
} }

View File

@ -41,7 +41,7 @@ public class TinyConfigTab implements Tab {
} else { } else {
if (!config.getPresets().isEmpty()) { if (!config.getPresets().isEmpty()) {
this.list.addReference(Text.translatable("libjf-config-v1.presets"), this.list.addReference(Text.translatable("libjf-config-v1.presets"),
() -> new PresetsScreen(screen, config)); () -> new PresetsScreen(screen, config, screen::afterSelectPreset));
} }
} }
for (WidgetState<?> info : widgets) { for (WidgetState<?> info : widgets) {

View File

@ -16,12 +16,14 @@ import java.util.Objects;
public class PresetsScreen extends Screen { public class PresetsScreen extends Screen {
private final Screen parent; private final Screen parent;
private final ConfigCategory config; private final ConfigCategory config;
private final Runnable afterSelect;
private PresetListWidget list; private PresetListWidget list;
public PresetsScreen(Screen parent, ConfigCategory config) { public PresetsScreen(Screen parent, ConfigCategory config, Runnable afterSelect) {
super(Text.translatable("libjf-config-v1.presets")); super(Text.translatable("libjf-config-v1.presets"));
this.parent = parent; this.parent = parent;
this.config = config; this.config = config;
this.afterSelect = afterSelect;
} }
@Override @Override
@ -34,6 +36,7 @@ public class PresetsScreen extends Screen {
LibJf.LOGGER.info("Preset selected: " + entry.getKey()); LibJf.LOGGER.info("Preset selected: " + entry.getKey());
entry.getValue().run(); entry.getValue().run();
config.fix(); config.fix();
afterSelect.run();
Objects.requireNonNull(client).setScreen(parent); Objects.requireNonNull(client).setScreen(parent);
}) })
.dimensions(width / 2 - 100, 0, 200, 20) .dimensions(width / 2 - 100, 0, 200, 20)