diff --git a/android/app/src/main/java/io/github/kichikuou/system3/GameActivity.kt b/android/app/src/main/java/io/github/kichikuou/system3/GameActivity.kt index 74a215a..bc3e07a 100644 --- a/android/app/src/main/java/io/github/kichikuou/system3/GameActivity.kt +++ b/android/app/src/main/java/io/github/kichikuou/system3/GameActivity.kt @@ -77,14 +77,15 @@ class GameActivity : SDLActivity() { Launcher.updateGameList() } - private fun textInputDialog(oldVal: String, result: Array) { + private fun textInputDialog(oldVal: String, maxLen: Int, result: Array) { val input = EditText(this) input.inputType = InputType.TYPE_CLASS_TEXT input.setText(oldVal) AlertDialog.Builder(this) + .setMessage(getString(R.string.input_dialog_message, maxLen)) .setView(input) .setPositiveButton(R.string.ok) {_, _ -> - result[0] = input.text.toString() + result[0] = input.text.toString().substring(0, maxLen) } .setNegativeButton(R.string.cancel) {_, _ -> } .setOnDismissListener { @@ -103,9 +104,9 @@ class GameActivity : SDLActivity() { @Suppress("unused") fun midiStop() = midi.stop() @Suppress("unused") fun midiCurrentPosition() = midi.currentPosition() - @Suppress("unused") fun inputString(oldVal: String): String? { + @Suppress("unused") fun inputString(oldVal: String, maxLen: Int): String? { val result = arrayOfNulls(1) - runOnUiThread { textInputDialog(oldVal, result) } + runOnUiThread { textInputDialog(oldVal, maxLen, result) } // Block the calling thread. synchronized(result) { try { diff --git a/android/app/src/main/res/values-ja/strings.xml b/android/app/src/main/res/values-ja/strings.xml index 4c06760..afe6f4f 100644 --- a/android/app/src/main/res/values-ja/strings.xml +++ b/android/app/src/main/res/values-ja/strings.xml @@ -7,6 +7,7 @@ System3 のファイル (*.dat) が見つかりません。 ファイルを選択 エラー + 文字列を入力してください(最大%d文字) インストール中… ZIP からインストール %s を展開中 diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index d4d240c..585392a 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -6,6 +6,7 @@ Cannot find System3 game files (*.dat). Choose a file Error + Enter a string (up to %d characters) Installing… Install from ZIP Extracting %s diff --git a/src/android/nact_android.cpp b/src/android/nact_android.cpp index 13dd68b..4add408 100644 --- a/src/android/nact_android.cpp +++ b/src/android/nact_android.cpp @@ -17,8 +17,8 @@ void NACT::text_dialog() WARNING("Failed to allocate a string"); return; } - jmethodID mid = jni.GetMethodID("inputString", "(" STRING ")" STRING); - jstring jnewstr = (jstring)jni.env()->CallObjectMethod(jni.context(), mid, joldstr); + jmethodID mid = jni.GetMethodID("inputString", "(" STRING "I)" STRING); + jstring jnewstr = (jstring)jni.env()->CallObjectMethod(jni.context(), mid, joldstr, tvar_maxlen); if (!jnewstr) return; const char* newstr_utf8 = jni.env()->GetStringUTFChars(jnewstr, NULL);