From 686fc4cc2aa0dcfb2feba571a9a793d3b90e47c9 Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Sun, 14 Mar 2021 19:16:57 +1000 Subject: [PATCH] Android: Add hotkey categories/grouping --- .../duckstation/ControllerSettingsActivity.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/ControllerSettingsActivity.java b/android/app/src/main/java/com/github/stenzek/duckstation/ControllerSettingsActivity.java index 2926aefce..16827450c 100644 --- a/android/app/src/main/java/com/github/stenzek/duckstation/ControllerSettingsActivity.java +++ b/android/app/src/main/java/com/github/stenzek/duckstation/ControllerSettingsActivity.java @@ -30,6 +30,7 @@ import com.google.android.material.tabs.TabLayout; import com.google.android.material.tabs.TabLayoutMediator; import java.util.ArrayList; +import java.util.HashMap; public class ControllerSettingsActivity extends AppCompatActivity { @@ -328,10 +329,22 @@ public class ControllerSettingsActivity extends AppCompatActivity { public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { final PreferenceScreen ps = getPreferenceManager().createPreferenceScreen(getContext()); if (mHotkeyInfo != null) { + final HashMap categoryMap = new HashMap<>(); + for (HotkeyInfo hotkeyInfo : mHotkeyInfo) { + PreferenceCategory category = categoryMap.containsKey(hotkeyInfo.getCategory()) ? + categoryMap.get(hotkeyInfo.getCategory()) : null; + if (category == null) { + category = new PreferenceCategory(getContext()); + category.setTitle(hotkeyInfo.getCategory()); + category.setIconSpaceReserved(false); + categoryMap.put(hotkeyInfo.getCategory(), category); + ps.addPreference(category); + } + final ControllerBindingPreference cbp = new ControllerBindingPreference(getContext(), null); cbp.initHotkey(hotkeyInfo); - ps.addPreference(cbp); + category.addPreference(cbp); activity.mPreferences.add(cbp); } }