(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
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);
}

View File

@@ -1110,7 +1110,7 @@ public final class CMatchUI
}
@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);
}

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;
}

View File

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

View File

@@ -62,7 +62,7 @@ public enum ProtocolMethod {
showErrorDialog (Mode.SERVER, Void.TYPE, String.class, String.class),
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),
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),
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),

View File

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

View File

@@ -36,7 +36,7 @@ public interface IGuiBase {
void showBugReportDialog(String title, String text, boolean showExitAppBtn);
void showImageDialog(ISkinImage image, String message, String title);
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> order(String title, String top, int remainingObjectsMin, int remainingObjectsMax, List<T> sourceChoices, List<T> destChoices);
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);
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 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);

View File

@@ -69,19 +69,19 @@ public class SOptionPane {
}
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) {
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) {
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) {
return GuiBase.getInterface().showInputDialog(message, title, icon, initialInput, 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, isNumeric);
}
private SOptionPane() {