From d3e5c6ee703cf14891e7c0ec332a014e5d07c138 Mon Sep 17 00:00:00 2001 From: Nikita Travkin Date: Tue, 19 Sep 2023 17:37:14 +0500 Subject: [PATCH] api-impl,libandroid: Add some stubs, mostly --- src/api-impl/android/app/AlertDialog.java | 10 +++++ src/api-impl/android/app/Dialog.java | 4 ++ src/api-impl/android/app/ProgressDialog.java | 8 +++- src/api-impl/android/content/Intent.java | 19 +++++++++ .../android/hardware/input/InputManager.java | 10 +++++ src/api-impl/android/view/InputDevice.java | 42 ++++++++++++++++++- src/api-impl/android/view/Window.java | 4 ++ src/libandroid/native_window.c | 7 ++++ 8 files changed, 102 insertions(+), 2 deletions(-) diff --git a/src/api-impl/android/app/AlertDialog.java b/src/api-impl/android/app/AlertDialog.java index 0cdc8e9e..ee20c976 100644 --- a/src/api-impl/android/app/AlertDialog.java +++ b/src/api-impl/android/app/AlertDialog.java @@ -14,6 +14,10 @@ public class AlertDialog extends Dialog implements DialogInterface { super(context, 0); } + public AlertDialog(Context context, int themeResId) { + super(context, themeResId); + } + public void setMessage(CharSequence message) { System.out.println("AlertDialog setMessage called with: '" + message + "'"); nativeSetMessage(nativePtr, String.valueOf(message)); @@ -41,6 +45,12 @@ public class AlertDialog extends Dialog implements DialogInterface { return this; } + public AlertDialog.Builder setNegativeButton (CharSequence text, DialogInterface.OnClickListener listener) { + System.out.println("AlertDialog.Builder setNegativeButton called with text: '" + text + "'"); + return this; + } + + public AlertDialog.Builder setCancelable(boolean cancelable) { return this; } diff --git a/src/api-impl/android/app/Dialog.java b/src/api-impl/android/app/Dialog.java index 08d1e874..69eae951 100644 --- a/src/api-impl/android/app/Dialog.java +++ b/src/api-impl/android/app/Dialog.java @@ -38,6 +38,10 @@ public class Dialog { nativeSetTitle(nativePtr, String.valueOf(title)); } + public void setTitle(int titleId) { + nativeSetTitle(nativePtr, context.getString(titleId)); + } + public void setOwnerActivity(Activity activity) {} public void setCancelable(boolean cancelable) {} diff --git a/src/api-impl/android/app/ProgressDialog.java b/src/api-impl/android/app/ProgressDialog.java index c7e140ba..dba0000e 100644 --- a/src/api-impl/android/app/ProgressDialog.java +++ b/src/api-impl/android/app/ProgressDialog.java @@ -2,9 +2,15 @@ package android.app; import android.content.Context; -public class ProgressDialog extends Dialog { +public class ProgressDialog extends AlertDialog { + + public ProgressDialog(Context context) { + super(context, 0); + } public ProgressDialog(Context context, int themeResId) { super(context, themeResId); } + + public void setIndeterminate(boolean indeterminate) {} } diff --git a/src/api-impl/android/content/Intent.java b/src/api-impl/android/content/Intent.java index 282fdd2d..73d2c952 100644 --- a/src/api-impl/android/content/Intent.java +++ b/src/api-impl/android/content/Intent.java @@ -164,6 +164,18 @@ public class Intent { return this; } + public Intent putExtras (Intent src) { + // FIXME HACK + this.extras = src.getExtras(); + return this; + } + + public Intent putExtras (Bundle extras) { + // FIXME HACK + this.extras = extras; + return this; + } + public Intent setClass(Context packageContext, Class cls) { setComponent(new ComponentName(packageContext, cls)); return this; @@ -177,6 +189,13 @@ public class Intent { return data; } + public String getDataString () { + if (data == null) + return ""; + + return data.toString(); + } + public boolean getBooleanExtra(String name, boolean defaultValue) { return defaultValue; } diff --git a/src/api-impl/android/hardware/input/InputManager.java b/src/api-impl/android/hardware/input/InputManager.java index 70e5f397..ad2fd158 100644 --- a/src/api-impl/android/hardware/input/InputManager.java +++ b/src/api-impl/android/hardware/input/InputManager.java @@ -1,6 +1,7 @@ package android.hardware.input; import android.os.Handler; +import android.view.InputDevice; public class InputManager { public static interface InputDeviceListener { @@ -11,4 +12,13 @@ public class InputManager { public void registerInputDeviceListener(InputManager.InputDeviceListener listener, Handler handler) { } + + public int[] getInputDeviceIds () { + return InputDevice.getDeviceIds(); + } + + public InputDevice getInputDevice (int id) { + return InputDevice.getDevice(id); + } + } diff --git a/src/api-impl/android/view/InputDevice.java b/src/api-impl/android/view/InputDevice.java index 3c6b0432..fd5a4337 100644 --- a/src/api-impl/android/view/InputDevice.java +++ b/src/api-impl/android/view/InputDevice.java @@ -1,15 +1,55 @@ package android.view; +import java.util.List; +import java.util.ArrayList; + public class InputDevice { public static final int SOURCE_CLASS_BUTTON = 0x00000001; + public static final int SOURCE_CLASS_JOYSTICK = 0x00000010; + public static final int SOURCE_CLASS_GAMEPAD = 0x00000400 | SOURCE_CLASS_BUTTON; public static final int SOURCE_KEYBOARD = 0x00000100 | SOURCE_CLASS_BUTTON; + public static int[] getDeviceIds() { return new int[] {0}; // might work? } public static InputDevice getDevice(int id) { - return null; + return new InputDevice(); } + + /* + * FIXME: We pretend we can do literally everything here... + */ + + public boolean[] hasKeys(int... keys) { + boolean[] ret = new boolean[keys.length]; + for (int i = 0; i < keys.length; i++) { + ret[i] = true; + } + return ret; + } + + public ListgetMotionRanges() { + MotionRange[] ranges = new MotionRange[32]; + + for (int i = 0; i < ranges.length; i++) { + ranges[i] = new MotionRange(i); + } + + return new ArrayList(); + } + + public class MotionRange { + int axis; + + public MotionRange(int axis) { + this.axis = axis; + } + + public int getAxis() { + return this.axis; + } + }; } diff --git a/src/api-impl/android/view/Window.java b/src/api-impl/android/view/Window.java index 18671172..8b63b31f 100644 --- a/src/api-impl/android/view/Window.java +++ b/src/api-impl/android/view/Window.java @@ -1,5 +1,7 @@ package android.view; +import android.view.SurfaceHolder; + public class Window { public static final int FEATURE_OPTIONS_PANEL = 0; @@ -72,4 +74,6 @@ public class Window { } public void setAttributes(WindowManager.LayoutParams params) {} + + public void takeSurface(SurfaceHolder.Callback2 callback) {} } diff --git a/src/libandroid/native_window.c b/src/libandroid/native_window.c index 55882536..6c72f2a3 100644 --- a/src/libandroid/native_window.c +++ b/src/libandroid/native_window.c @@ -538,3 +538,10 @@ XrResult bionic_xrCreateInstance(XrInstanceCreateInfo *createInfo, XrInstance *i createInfo->enabledExtensionNames = enabled_exts; return xr_lazy_call("xrCreateInstance", createInfo, instance); } + +typedef void* ANativeActivity; + +void ANativeActivity_setWindowFormat(ANativeActivity *activity, int32_t format) +{ + printf("STUB: %s called\n", __func__); +}