[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 ConfigCategory config;
public final List<WidgetState<?>> widgets;
public final List<WidgetState<?>> widgets; // Filled in from TinyConfigTab
private final Placeholder<EntryListWidget> placeholder;
private final TabManager tabManager = new TabManager(a -> selectTab(((TinyConfigTabWrapper)a).getTab()), a -> {});
private List<TinyConfigTab> tabs;
@ -107,7 +107,7 @@ public class TinyConfigScreen extends Screen {
if (tabs.size() == 1 && !config.getPresets().isEmpty()) {
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)
.build());
}
@ -120,6 +120,12 @@ public class TinyConfigScreen extends Screen {
reload = true;
}
public void afterSelectPreset() {
for (WidgetState<?> widget : widgets) {
widget.updateCache();
}
}
private void selectTab(TinyConfigTab tab) {
placeholder.setChild(tab.getList());
}

View File

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

View File

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