From 368a5cca003af30eec81360d477327429138608c Mon Sep 17 00:00:00 2001 From: YTKAB0BP Date: Fri, 22 Nov 2024 20:29:19 +0300 Subject: [PATCH] Fix legacy enums support --- .../fragment/ProfileListFragment.java | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/ru/ytkab0bp/slicebeam/fragment/ProfileListFragment.java b/app/src/main/java/ru/ytkab0bp/slicebeam/fragment/ProfileListFragment.java index 00a3cf7..a4548a6 100644 --- a/app/src/main/java/ru/ytkab0bp/slicebeam/fragment/ProfileListFragment.java +++ b/app/src/main/java/ru/ytkab0bp/slicebeam/fragment/ProfileListFragment.java @@ -580,7 +580,12 @@ public abstract class ProfileListFragment extends Fragment { labels[i] = Slic3rLocalization.getString(def.enumLabels[i]); } } - builder.setSingleChoiceItems(labels, Arrays.asList(values).indexOf(opt(def, eIndex)), (dialog, which) -> { + String val = opt(def, eIndex); + int i = Arrays.asList(values).indexOf(val); + if (i == -1 && val.matches("^\\d+$")) { + i = Integer.parseInt(val); + } + builder.setSingleChoiceItems(labels, i, (dialog, which) -> { updateConfigField(def, eIndex, values[which]); // TODO: Update only value recyclerView.getAdapter().notifyItemChanged(boundIndex); @@ -700,7 +705,21 @@ public abstract class ProfileListFragment extends Fragment { ((PreferenceItem) simpleItem).setTitle(null); } } else { - ((PreferenceItem) simpleItem).setValueProvider(() -> def.type == ConfigOptionDef.ConfigOptionType.ENUM ? Slic3rLocalization.getString(def.enumLabels[Arrays.asList(def.enumValues).indexOf(opt(def, eIndex))]) : opt(def, eIndex)); + ((PreferenceItem) simpleItem).setValueProvider(() -> { + if (def.type == ConfigOptionDef.ConfigOptionType.ENUM) { + String v = opt(def, eIndex); + int i = Arrays.asList(def.enumValues).indexOf(v); + if (i != -1) { + return Slic3rLocalization.getString(def.enumLabels[i]); + } else if (v.matches("^\\d+$")) { + return Slic3rLocalization.getString(def.enumLabels[Integer.parseInt(v)]); + } else { + return v; + } + } else { + return opt(def, eIndex); + } + }); } } switch (def.type) {