(Android) enable numpad for getInteger prompt on supported platform

This commit is contained in:
Anthony Calosa
2023-04-28 19:03:24 +08:00
parent 8d87a952de
commit 7db9f85bf9
13 changed files with 34 additions and 29 deletions

View File

@@ -4,6 +4,7 @@ import com.badlogic.gdx.Application;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input.Keys;
import com.badlogic.gdx.Input;
import com.badlogic.gdx.InputProcessor;
import com.badlogic.gdx.controllers.Controller;
import com.badlogic.gdx.controllers.ControllerAdapter;
@@ -1069,7 +1070,7 @@ public class Forge implements ApplicationListener {
System.out.println(message);
}
public static void startKeyInput(KeyInputAdapter adapter) {
public static void startKeyInput(KeyInputAdapter adapter, boolean numeric) {
if (keyInputAdapter == adapter) {
return;
}
@@ -1077,7 +1078,7 @@ public class Forge implements ApplicationListener {
keyInputAdapter.onInputEnd(); //make sure previous adapter is ended
}
keyInputAdapter = adapter;
Gdx.input.setOnscreenKeyboardVisible(true);
Gdx.input.setOnscreenKeyboardVisible(true, numeric ? Input.OnscreenKeyboardType.NumberPad : Input.OnscreenKeyboardType.Default);
}
public static boolean endKeyInput() {

View File

@@ -178,11 +178,11 @@ public class GuiMobile implements IGuiBase {
}
@Override
public String showInputDialog(final String message, final String title, final FSkinProp icon, final String initialInput, final List<String> inputOptions) {
public String showInputDialog(final String message, final String title, final FSkinProp icon, final String initialInput, final List<String> inputOptions, boolean isNumeric) {
return new WaitCallback<String>() {
@Override
public void run() {
FOptionPane.showInputDialog(message, title, initialInput, inputOptions, this);
FOptionPane.showInputDialog(message, title, initialInput, inputOptions, this, isNumeric);
}
}.invokeAndWait();
}

View File

@@ -632,8 +632,8 @@ public class MatchController extends AbstractGuiGame {
}
@Override
public String showInputDialog(final String message, final String title, final FSkinProp icon, final String initialInput, final List<String> inputOptions) {
return SOptionPane.showInputDialog(message, title, icon, initialInput, inputOptions);
public String showInputDialog(final String message, final String title, final FSkinProp icon, final String initialInput, final List<String> inputOptions, boolean isNumeric) {
return SOptionPane.showInputDialog(message, title, icon, initialInput, inputOptions, isNumeric);
}
@Override

View File

@@ -156,17 +156,18 @@ public class FOptionPane extends FDialog {
}
public static void showInputDialog(final String title, final Callback<String> callback) {
showInputDialog(null, title, "", null, callback);
showInputDialog(null, title, "", null, callback, false);
}
public static <T> void showInputDialog(final String title, final T initialInput, final Callback<T> callback) {
showInputDialog(null, title, initialInput, null, callback);
showInputDialog(null, title, initialInput, null, callback, false);
}
public static <T> void showInputDialog(final String message, final String title, final T initialInput, final List<T> inputOptions, final Callback<T> callback) {
public static <T> void showInputDialog(final String message, final String title, final T initialInput, final List<T> inputOptions, final Callback<T> callback, final boolean isNumeric) {
final FDisplayObject inputField;
final FTextField txtInput;
final FComboBox<T> cbInput;
if (inputOptions == null) {
txtInput = new FTextField(initialInput.toString());
txtInput.setIsNumeric(isNumeric);
cbInput = null;
inputField = txtInput;
}

View File

@@ -52,7 +52,7 @@ public class FTextField extends FDisplayObject implements ITextField {
protected FSkinFont font, renderedFont;
private int alignment;
private int selStart, selLength;
private boolean isEditing, readOnly;
private boolean isEditing, readOnly, isNumeric;
private final FPopupMenu contextMenu = new FPopupMenu() {
@Override
@@ -165,6 +165,9 @@ public class FTextField extends FDisplayObject implements ITextField {
public boolean isReadOnly() {
return readOnly;
}
public void setIsNumeric(boolean isNumeric0) {
isNumeric = isNumeric0;
}
public void setReadOnly(boolean readOnly0) {
readOnly = readOnly0;
}
@@ -353,7 +356,7 @@ public class FTextField extends FDisplayObject implements ITextField {
public void onInputEnd() {
endEdit();
}
});
}, isNumeric);
isEditing = true;
return true;
}