fix: show categories in tabs
ci/woodpecker/push/docs Pipeline was successful Details
ci/woodpecker/push/jfmod Pipeline was successful Details

This commit is contained in:
Johannes Frohnmeyer 2023-08-21 15:09:30 +02:00
parent a5d12468ed
commit a7ba696bb9
Signed by: Johannes
GPG Key ID: E76429612C2929F4
2 changed files with 23 additions and 17 deletions

View File

@ -50,13 +50,20 @@ public class TinyConfigScreen extends ScreenWithSaveHook {
private boolean reload = false;
public TinyConfigScreen(ConfigCategory config, Screen parent) {
this(config, parent, shouldConsiderTabs(config));
}
public TinyConfigScreen(ConfigCategory config, Screen parent, boolean considerTabs) {
super(getTitle(config.getTranslationPrefix()));
this.parent = parent;
this.config = config;
this.widgets = new LinkedList<>();
this.placeholder = new Placeholder<>(null);
this.considerTabs = considerTabs;
}
this.considerTabs = config.getEntries().isEmpty()
private static boolean shouldConsiderTabs(ConfigCategory config) {
return config.getEntries().isEmpty()
&& config.getPresets().keySet().stream().allMatch(s -> s.equals(CategoryBuilder.CONFIG_PRESET_DEFAULT))
&& config.getReferencedConfigs().isEmpty()
&& config.getCategories().size() > 1
@ -127,12 +134,13 @@ public class TinyConfigScreen extends ScreenWithSaveHook {
}
wasTabs = useTabs;
tabs = !useTabs ? List.of() : config.getCategories()
.values()
.stream()
.map(c -> new TinyConfigTab(this, c, textRenderer, false))
.toList();
if (tabs.isEmpty()) tabs = List.of(new TinyConfigTab(this, config, textRenderer, true));
tabs = useTabs
? config.getCategories()
.values()
.stream()
.map(c -> new TinyConfigTab(this, c, textRenderer, false))
.toList()
: List.of(new TinyConfigTab(this, config, textRenderer, true));
}
private boolean tabsWouldOverflow(Collection<ConfigCategory> categories) {

View File

@ -39,16 +39,14 @@ public class TinyConfigTab implements Tab {
this.list.addText(Text.translatable(tooltipPath));
}
if (isRoot) {
for (Map.Entry<String, ConfigCategory> entry : config.getCategories().entrySet()) {
this.list.addReference(TinyConfigScreen.getTitle(entry.getValue().getTranslationPrefix()),
() -> new TinyConfigScreen(entry.getValue(), screen));
}
} else {
if (!config.getPresets().isEmpty()) {
this.list.addReference(Text.translatable("libjf-config-v1.presets"),
() -> new PresetsScreen(screen, config, screen::afterSelectPreset));
}
if (!isRoot && !config.getPresets().isEmpty()) {
this.list.addReference(Text.translatable("libjf-config-v1.presets"),
() -> new PresetsScreen(screen, config, screen::afterSelectPreset));
}
for (Map.Entry<String, ConfigCategory> entry : config.getCategories().entrySet()) {
this.list.addReference(TinyConfigScreen.getTitle(entry.getValue().getTranslationPrefix()),
() -> new TinyConfigScreen(entry.getValue(), screen, false));
}
for (WidgetState<?> info : widgets) {
MutableText name = Text.translatable(config.getTranslationPrefix() + info.entry.getName());