From 0229f25fc353209338dde48dfd8487486c2e42a9 Mon Sep 17 00:00:00 2001 From: Connor McLaughlin <stenzek@gmail.com> Date: Sat, 29 May 2021 20:51:53 +1000 Subject: [PATCH] Android: Show patch code categories in list --- android/app/src/cpp/android_host_interface.cpp | 7 +++++-- .../stenzek/duckstation/EmulationActivity.java | 2 +- .../github/stenzek/duckstation/PatchCode.java | 17 ++++++++++++++++- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/android/app/src/cpp/android_host_interface.cpp b/android/app/src/cpp/android_host_interface.cpp index b850aef33..8f890041b 100644 --- a/android/app/src/cpp/android_host_interface.cpp +++ b/android/app/src/cpp/android_host_interface.cpp @@ -1029,7 +1029,8 @@ extern "C" jint JNI_OnLoad(JavaVM* vm, void* reserved) env->GetMethodID(s_EmulationActivity_class, "hasInputDeviceVibration", "(I)Z")) == nullptr || (s_EmulationActivity_method_setInputDeviceVibration = env->GetMethodID(s_EmulationActivity_class, "setInputDeviceVibration", "(IFF)V")) == nullptr || - (s_PatchCode_constructor = env->GetMethodID(s_PatchCode_class, "<init>", "(ILjava/lang/String;Z)V")) == nullptr || + (s_PatchCode_constructor = + env->GetMethodID(s_PatchCode_class, "<init>", "(ILjava/lang/String;Ljava/lang/String;Z)V")) == nullptr || (s_GameListEntry_constructor = env->GetMethodID(s_GameListEntry_class, "<init>", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JLjava/lang/String;Ljava/lang/" @@ -1628,12 +1629,14 @@ DEFINE_JNI_ARGS_METHOD(jobject, AndroidHostInterface_getPatchCodeList, jobject o { const CheatCode& cc = cl->GetCode(i); + jstring group_str = cc.group.empty() ? nullptr : env->NewStringUTF(cc.group.c_str()); jstring desc_str = env->NewStringUTF(cc.description.c_str()); jobject java_cc = - env->NewObject(s_PatchCode_class, s_PatchCode_constructor, static_cast<jint>(i), desc_str, cc.enabled); + env->NewObject(s_PatchCode_class, s_PatchCode_constructor, static_cast<jint>(i), group_str, desc_str, cc.enabled); env->SetObjectArrayElement(arr, i, java_cc); env->DeleteLocalRef(java_cc); env->DeleteLocalRef(desc_str); + env->DeleteLocalRef(group_str); } return arr; diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/EmulationActivity.java b/android/app/src/main/java/com/github/stenzek/duckstation/EmulationActivity.java index adef26f01..9928abb81 100644 --- a/android/app/src/main/java/com/github/stenzek/duckstation/EmulationActivity.java +++ b/android/app/src/main/java/com/github/stenzek/duckstation/EmulationActivity.java @@ -581,7 +581,7 @@ public class EmulationActivity extends AppCompatActivity implements SurfaceHolde boolean[] itemsChecked = new boolean[codes.length]; for (int i = 0; i < codes.length; i++) { final PatchCode cc = codes[i]; - items[i] = cc.getDescription(); + items[i] = cc.getDisplayText(); itemsChecked[i] = cc.isEnabled(); } diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/PatchCode.java b/android/app/src/main/java/com/github/stenzek/duckstation/PatchCode.java index d22157ae1..c8de67096 100644 --- a/android/app/src/main/java/com/github/stenzek/duckstation/PatchCode.java +++ b/android/app/src/main/java/com/github/stenzek/duckstation/PatchCode.java @@ -1,12 +1,16 @@ package com.github.stenzek.duckstation; public class PatchCode { + private static final String UNGROUPED_NAME = "Ungrouped"; + private int mIndex; + private String mGroup; private String mDescription; private boolean mEnabled; - public PatchCode(int index, String description, boolean enabled) { + public PatchCode(int index, String group, String description, boolean enabled) { mIndex = index; + mGroup = group; mDescription = description; mEnabled = enabled; } @@ -15,6 +19,10 @@ public class PatchCode { return mIndex; } + public String getGroup() { + return mGroup; + } + public String getDescription() { return mDescription; } @@ -22,4 +30,11 @@ public class PatchCode { public boolean isEnabled() { return mEnabled; } + + public String getDisplayText() { + if (mGroup == null || mGroup.equals(UNGROUPED_NAME)) + return mDescription; + else + return String.format("(%s) %s", mGroup, mDescription); + } }