(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

@@ -174,7 +174,7 @@ public class GuiDesktop implements IGuiBase {
} }
@Override @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 FOptionPane.showInputDialog(message, title, icon == null ? null : FSkin.getImage(icon), initialInput, inputOptions); return FOptionPane.showInputDialog(message, title, icon == null ? null : FSkin.getImage(icon), initialInput, inputOptions);
} }

View File

@@ -1110,7 +1110,7 @@ public final class CMatchUI
} }
@Override @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 FOptionPane.showInputDialog(message, title, icon == null ? null : FSkin.getImage(icon), initialInput, inputOptions); return FOptionPane.showInputDialog(message, title, icon == null ? null : FSkin.getImage(icon), initialInput, inputOptions);
} }

View File

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

View File

@@ -178,11 +178,11 @@ public class GuiMobile implements IGuiBase {
} }
@Override @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>() { return new WaitCallback<String>() {
@Override @Override
public void run() { public void run() {
FOptionPane.showInputDialog(message, title, initialInput, inputOptions, this); FOptionPane.showInputDialog(message, title, initialInput, inputOptions, this, isNumeric);
} }
}.invokeAndWait(); }.invokeAndWait();
} }

View File

@@ -632,8 +632,8 @@ public class MatchController extends AbstractGuiGame {
} }
@Override @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 SOptionPane.showInputDialog(message, title, icon, initialInput, inputOptions); return SOptionPane.showInputDialog(message, title, icon, initialInput, inputOptions, isNumeric);
} }
@Override @Override

View File

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

View File

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

View File

@@ -711,7 +711,7 @@ public abstract class AbstractGuiGame implements IGuiGame, IMayViewCards {
} }
while (true) { while (true) {
final String str = showInputDialog(prompt, message); final String str = showInputDialog(prompt, message, true);
if (str == null) { if (str == null) {
return null; return null;
} // that is 'cancel' } // that is 'cancel'
@@ -772,18 +772,18 @@ public abstract class AbstractGuiGame implements IGuiGame, IMayViewCards {
} }
@Override @Override
public String showInputDialog(final String message, final String title) { public String showInputDialog(final String message, final String title, boolean isNumeric) {
return showInputDialog(message, title, null, "", null); return showInputDialog(message, title, null, "", null, isNumeric);
} }
@Override @Override
public String showInputDialog(final String message, final String title, final FSkinProp icon) { public String showInputDialog(final String message, final String title, final FSkinProp icon) {
return showInputDialog(message, title, icon, "", null); return showInputDialog(message, title, icon, "", null, false);
} }
@Override @Override
public String showInputDialog(final String message, final String title, final FSkinProp icon, final String initialInput) { public String showInputDialog(final String message, final String title, final FSkinProp icon, final String initialInput) {
return showInputDialog(message, title, icon, initialInput, null); return showInputDialog(message, title, icon, initialInput, null, false);
} }
@Override @Override

View File

@@ -62,7 +62,7 @@ public enum ProtocolMethod {
showErrorDialog (Mode.SERVER, Void.TYPE, String.class, String.class), showErrorDialog (Mode.SERVER, Void.TYPE, String.class, String.class),
showConfirmDialog (Mode.SERVER, Boolean.TYPE, String.class, String.class, String.class, String.class, Boolean.TYPE), showConfirmDialog (Mode.SERVER, Boolean.TYPE, String.class, String.class, String.class, String.class, Boolean.TYPE),
showOptionDialog (Mode.SERVER, Integer.TYPE, String.class, String.class, FSkinProp.class, List/*String*/.class, Integer.TYPE), showOptionDialog (Mode.SERVER, Integer.TYPE, String.class, String.class, FSkinProp.class, List/*String*/.class, Integer.TYPE),
showInputDialog (Mode.SERVER, String.class, String.class, String.class, FSkinProp.class, String.class, List/*String*/.class), showInputDialog (Mode.SERVER, String.class, String.class, String.class, FSkinProp.class, String.class, List/*String*/.class, Boolean.TYPE),
confirm (Mode.SERVER, Boolean.TYPE, CardView.class, String.class, Boolean.TYPE, List/*String*/.class), confirm (Mode.SERVER, Boolean.TYPE, CardView.class, String.class, Boolean.TYPE, List/*String*/.class),
getChoices (Mode.SERVER, List.class, String.class, Integer.TYPE, Integer.TYPE, List.class, Object.class, Function.class), getChoices (Mode.SERVER, List.class, String.class, Integer.TYPE, Integer.TYPE, List.class, Object.class, Function.class),
order (Mode.SERVER, List.class, String.class, String.class, Integer.TYPE, Integer.TYPE, List.class, List.class, CardView.class, Boolean.TYPE), order (Mode.SERVER, List.class, String.class, String.class, Integer.TYPE, Integer.TYPE, List.class, List.class, CardView.class, Boolean.TYPE),

View File

@@ -237,8 +237,8 @@ public class NetGuiGame extends AbstractGuiGame {
} }
@Override @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, final boolean isNumeric) {
return sendAndWait(ProtocolMethod.showInputDialog, message, title, icon, initialInput, inputOptions); return sendAndWait(ProtocolMethod.showInputDialog, message, title, icon, initialInput, inputOptions, isNumeric);
} }
@Override @Override

View File

@@ -36,7 +36,7 @@ public interface IGuiBase {
void showBugReportDialog(String title, String text, boolean showExitAppBtn); void showBugReportDialog(String title, String text, boolean showExitAppBtn);
void showImageDialog(ISkinImage image, String message, String title); void showImageDialog(ISkinImage image, String message, String title);
int showOptionDialog(String message, String title, FSkinProp icon, List<String> options, int defaultOption); int showOptionDialog(String message, String title, FSkinProp icon, List<String> options, int defaultOption);
String showInputDialog(String message, String title, FSkinProp icon, String initialInput, List<String> inputOptions); String showInputDialog(String message, String title, FSkinProp icon, String initialInput, List<String> inputOptions, boolean isNumeric);
<T> List<T> getChoices(String message, int min, int max, Collection<T> choices, T selected, Function<T, String> display); <T> List<T> getChoices(String message, int min, int max, Collection<T> choices, T selected, Function<T, String> display);
<T> List<T> order(String title, String top, int remainingObjectsMin, int remainingObjectsMax, List<T> sourceChoices, List<T> destChoices); <T> List<T> order(String title, String top, int remainingObjectsMin, int remainingObjectsMax, List<T> sourceChoices, List<T> destChoices);
String showFileDialog(String title, String defaultDir); String showFileDialog(String title, String defaultDir);

View File

@@ -132,13 +132,13 @@ public interface IGuiGame {
int showOptionDialog(String message, String title, FSkinProp icon, List<String> options, int defaultOption); int showOptionDialog(String message, String title, FSkinProp icon, List<String> options, int defaultOption);
String showInputDialog(String message, String title); String showInputDialog(String message, String title, boolean isNumeric);
String showInputDialog(String message, String title, FSkinProp icon); String showInputDialog(String message, String title, FSkinProp icon);
String showInputDialog(String message, String title, FSkinProp icon, String initialInput); String showInputDialog(String message, String title, FSkinProp icon, String initialInput);
String showInputDialog(String message, String title, FSkinProp icon, String initialInput, List<String> inputOptions); String showInputDialog(String message, String title, FSkinProp icon, String initialInput, List<String> inputOptions, boolean isNumeric);
boolean confirm(CardView c, String question); boolean confirm(CardView c, String question);

View File

@@ -69,19 +69,19 @@ public class SOptionPane {
} }
public static String showInputDialog(final String message, final String title) { public static String showInputDialog(final String message, final String title) {
return showInputDialog(message, title, null, "", null); return showInputDialog(message, title, null, "", null, false);
} }
public static String showInputDialog(final String message, final String title, final FSkinProp icon) { public static String showInputDialog(final String message, final String title, final FSkinProp icon) {
return showInputDialog(message, title, icon, "", null); return showInputDialog(message, title, icon, "", null, false);
} }
public static String showInputDialog(final String message, final String title, final FSkinProp icon, final String initialInput) { public static String showInputDialog(final String message, final String title, final FSkinProp icon, final String initialInput) {
return showInputDialog(message, title, icon, initialInput, null); return showInputDialog(message, title, icon, initialInput, null, false);
} }
public static String showInputDialog(final String message, final String title, final FSkinProp icon, final String initialInput, final List<String> inputOptions) { public static String showInputDialog(final String message, final String title, final FSkinProp icon, final String initialInput, final List<String> inputOptions, boolean isNumeric) {
return GuiBase.getInterface().showInputDialog(message, title, icon, initialInput, inputOptions); return GuiBase.getInterface().showInputDialog(message, title, icon, initialInput, inputOptions, isNumeric);
} }
private SOptionPane() { private SOptionPane() {