From 3f69ba4e3b474aca41d8fe1eb2bedc564c665c5d Mon Sep 17 00:00:00 2001 From: sspanak Date: Mon, 3 Feb 2025 10:22:49 +0200 Subject: [PATCH] reordered the Appearance settings a bit --- .../screens/appearance/AppearanceScreen.java | 21 ++++++++----------- .../screens/appearance/ItemAlignment.java | 4 ++-- .../appearance/ItemLayoutChangeReactive.java | 5 +++++ .../appearance/ItemNumpadFnKeyScale.java | 8 ++++--- .../appearance/ItemNumpadKeyHeight.java | 4 ++-- .../screens/appearance/ItemNumpadShape.java | 4 ++-- .../appearance/ItemSelectLayoutType.java | 19 +++++++++++------ .../screens/appearance/ItemShowArrows.java | 4 ++-- .../screens/appearance/ItemWidth.java | 4 ++-- .../main/res/xml/prefs_screen_appearance.xml | 8 +++---- 10 files changed, 46 insertions(+), 35 deletions(-) create mode 100644 app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemLayoutChangeReactive.java diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/AppearanceScreen.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/AppearanceScreen.java index dbf54ce2..9319372b 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/AppearanceScreen.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/AppearanceScreen.java @@ -32,21 +32,18 @@ public class AppearanceScreen extends BaseScreenFragment { ItemShowArrows showArrows = new ItemShowArrows(findPreference(ItemShowArrows.NAME), activity.getSettings()); ItemNumpadFnKeyScale fnKeyWidth = new ItemNumpadFnKeyScale(findPreference(ItemNumpadFnKeyScale.NAME), activity.getSettings()); + ItemSelectLayoutType selectLayout = new ItemSelectLayoutType(findPreference(ItemSelectLayoutType.NAME), activity) + .addOnChangeItem(alignment) + .addOnChangeItem(fnKeyWidth) + .addOnChangeItem(keyboardWidth) + .addOnChangeItem(numpadKeyHeight) + .addOnChangeItem(numpadShape) + .addOnChangeItem(showArrows); + ItemDropDown[] items = { new ItemSelectTheme(findPreference(ItemSelectTheme.NAME), activity), - new ItemSelectLayoutType( - findPreference(ItemSelectLayoutType.NAME), - activity, - (layout) -> { // on layout change - numpadKeyHeight.onLayoutChange(layout); - alignment.onLayoutChange(layout); - keyboardWidth.onLayoutChange(layout); - numpadShape.onLayoutChange(layout); - showArrows.onLayoutChange(layout); - fnKeyWidth.onLayoutChange(layout); - } - ), new ItemSelectSettingsFontSize(findPreference(ItemSelectSettingsFontSize.NAME), this), + selectLayout, numpadKeyHeight, alignment, keyboardWidth, diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemAlignment.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemAlignment.java index 1dc10336..fa4ac11e 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemAlignment.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemAlignment.java @@ -11,7 +11,7 @@ import io.github.sspanak.tt9.R; import io.github.sspanak.tt9.preferences.items.ItemDropDown; import io.github.sspanak.tt9.preferences.settings.SettingsStore; -public class ItemAlignment extends ItemDropDown { +public class ItemAlignment extends ItemDropDown implements ItemLayoutChangeReactive { public static final String NAME = "pref_numpad_alignment"; private final SettingsStore settings; @@ -41,7 +41,7 @@ public class ItemAlignment extends ItemDropDown { return this; } - void onLayoutChange(int mainViewLayout) { + public void onLayoutChange(int mainViewLayout) { if (item != null) { item.setVisible(mainViewLayout != SettingsStore.LAYOUT_STEALTH); item.setIconSpaceReserved(false); diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemLayoutChangeReactive.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemLayoutChangeReactive.java new file mode 100644 index 00000000..5ce3ab94 --- /dev/null +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemLayoutChangeReactive.java @@ -0,0 +1,5 @@ +package io.github.sspanak.tt9.preferences.screens.appearance; + +public interface ItemLayoutChangeReactive { + void onLayoutChange(int mainViewLayout); +} diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemNumpadFnKeyScale.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemNumpadFnKeyScale.java index e40f3e9f..5793df86 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemNumpadFnKeyScale.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemNumpadFnKeyScale.java @@ -7,7 +7,7 @@ import java.util.LinkedHashMap; import io.github.sspanak.tt9.preferences.items.ItemDropDown; import io.github.sspanak.tt9.preferences.settings.SettingsStore; -public class ItemNumpadFnKeyScale extends ItemDropDown { +public class ItemNumpadFnKeyScale extends ItemDropDown implements ItemLayoutChangeReactive { public static final String NAME = "pref_numpad_fn_key_width"; private final SettingsStore settings; @@ -26,8 +26,10 @@ public class ItemNumpadFnKeyScale extends ItemDropDown { LinkedHashMap options = new LinkedHashMap<>(); options.put("1", "100 %"); options.put("0.85", "115 %"); + options.put("0.75", "125 %"); options.put("0.675", "135 %"); - options.put("0.477", "150 %"); // whatever... + options.put("0.576", "145 %"); + options.put("0.477", "155 %"); // whatever... super.populate(options); super.setValue(getClosestOption(settings.getNumpadFnKeyScale(), options)); @@ -53,7 +55,7 @@ public class ItemNumpadFnKeyScale extends ItemDropDown { return closest; } - void onLayoutChange(int mainViewLayout) { + public void onLayoutChange(int mainViewLayout) { if (item != null) { item.setVisible(mainViewLayout == SettingsStore.LAYOUT_NUMPAD); item.setIconSpaceReserved(false); diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemNumpadKeyHeight.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemNumpadKeyHeight.java index 4f606824..99af4a52 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemNumpadKeyHeight.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemNumpadKeyHeight.java @@ -7,7 +7,7 @@ import java.util.LinkedHashMap; import io.github.sspanak.tt9.preferences.items.ItemDropDown; import io.github.sspanak.tt9.preferences.settings.SettingsStore; -public class ItemNumpadKeyHeight extends ItemDropDown { +public class ItemNumpadKeyHeight extends ItemDropDown implements ItemLayoutChangeReactive { public static final String NAME = "pref_numpad_key_height"; private final SettingsStore settings; @@ -41,7 +41,7 @@ public class ItemNumpadKeyHeight extends ItemDropDown { return this; } - void onLayoutChange(int mainViewLayout) { + public void onLayoutChange(int mainViewLayout) { if (item != null) { item.setVisible(mainViewLayout == SettingsStore.LAYOUT_NUMPAD); item.setIconSpaceReserved(false); diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemNumpadShape.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemNumpadShape.java index 643b2b53..99132c05 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemNumpadShape.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemNumpadShape.java @@ -10,7 +10,7 @@ import io.github.sspanak.tt9.R; import io.github.sspanak.tt9.preferences.items.ItemDropDown; import io.github.sspanak.tt9.preferences.settings.SettingsStore; -public class ItemNumpadShape extends ItemDropDown { +public class ItemNumpadShape extends ItemDropDown implements ItemLayoutChangeReactive { static final String NAME = "pref_numpad_shape"; private final SettingsStore settings; @@ -40,7 +40,7 @@ public class ItemNumpadShape extends ItemDropDown { return this; } - void onLayoutChange(int mainViewLayout) { + public void onLayoutChange(int mainViewLayout) { if (item != null) { item.setVisible(mainViewLayout == SettingsStore.LAYOUT_NUMPAD); item.setIconSpaceReserved(false); diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemSelectLayoutType.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemSelectLayoutType.java index 5d228c2e..b5febeb6 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemSelectLayoutType.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemSelectLayoutType.java @@ -1,26 +1,26 @@ package io.github.sspanak.tt9.preferences.screens.appearance; +import androidx.annotation.NonNull; import androidx.preference.DropDownPreference; import androidx.preference.Preference; +import java.util.ArrayList; import java.util.LinkedHashMap; import io.github.sspanak.tt9.R; import io.github.sspanak.tt9.preferences.PreferencesActivity; import io.github.sspanak.tt9.preferences.items.ItemDropDown; import io.github.sspanak.tt9.preferences.settings.SettingsUI; -import io.github.sspanak.tt9.util.ConsumerCompat; public class ItemSelectLayoutType extends ItemDropDown { public static final String NAME = "pref_layout_type"; private final PreferencesActivity activity; - private final ConsumerCompat onChange; + private final ArrayList onChangeReactiveItems = new ArrayList<>(); - public ItemSelectLayoutType(DropDownPreference item, PreferencesActivity activity, ConsumerCompat onChange) { + public ItemSelectLayoutType(DropDownPreference item, PreferencesActivity activity) { super(item); this.activity = activity; - this.onChange = onChange; } public ItemDropDown populate() { @@ -36,11 +36,18 @@ public class ItemSelectLayoutType extends ItemDropDown { return this; } + public ItemSelectLayoutType addOnChangeItem(@NonNull ItemLayoutChangeReactive reactiveItem) { + onChangeReactiveItems.add(reactiveItem); + return this; + } + @Override protected boolean onClick(Preference preference, Object newKey) { - if (onChange != null) { - onChange.accept(Integer.parseInt(newKey.toString())); + int newLayout = Integer.parseInt(newKey.toString()); + for (ItemLayoutChangeReactive item : onChangeReactiveItems) { + item.onLayoutChange(newLayout); } + return super.onClick(preference, newKey); } } diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemShowArrows.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemShowArrows.java index e08ea8e3..b337bb7d 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemShowArrows.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemShowArrows.java @@ -5,7 +5,7 @@ import androidx.preference.SwitchPreferenceCompat; import io.github.sspanak.tt9.preferences.items.ItemSwitch; import io.github.sspanak.tt9.preferences.settings.SettingsStore; -public class ItemShowArrows extends ItemSwitch { +public class ItemShowArrows extends ItemSwitch implements ItemLayoutChangeReactive { public final static String NAME = "pref_arrow_keys_visible"; private final SettingsStore settings; @@ -26,7 +26,7 @@ public class ItemShowArrows extends ItemSwitch { } - void onLayoutChange(int mainViewLayout) { + public void onLayoutChange(int mainViewLayout) { if (item != null) { item.setVisible(mainViewLayout == SettingsStore.LAYOUT_NUMPAD); item.setIconSpaceReserved(false); diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemWidth.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemWidth.java index bc9e4490..b99de8fc 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemWidth.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemWidth.java @@ -7,7 +7,7 @@ import java.util.LinkedHashMap; import io.github.sspanak.tt9.preferences.items.ItemDropDown; import io.github.sspanak.tt9.preferences.settings.SettingsStore; -public class ItemWidth extends ItemDropDown { +public class ItemWidth extends ItemDropDown implements ItemLayoutChangeReactive { public static final String NAME = "pref_numpad_width"; private final SettingsStore settings; @@ -35,7 +35,7 @@ public class ItemWidth extends ItemDropDown { return this; } - void onLayoutChange(int mainViewLayout) { + public void onLayoutChange(int mainViewLayout) { if (item != null) { item.setEnabled(mainViewLayout != SettingsStore.LAYOUT_STEALTH); } diff --git a/app/src/main/res/xml/prefs_screen_appearance.xml b/app/src/main/res/xml/prefs_screen_appearance.xml index 70ed5db9..03408013 100644 --- a/app/src/main/res/xml/prefs_screen_appearance.xml +++ b/app/src/main/res/xml/prefs_screen_appearance.xml @@ -31,14 +31,14 @@ app:key="pref_numpad_key_height" app:title="@string/pref_numpad_key_height" /> + + - -