diff --git a/meson.build b/meson.build index dc50dedb..9f1369a8 100644 --- a/meson.build +++ b/meson.build @@ -92,6 +92,7 @@ libtranslationlayer_so = shared_library('translation_layer_main', [ 'src/api-impl-jni/widgets/WrapperWidget.c', 'src/api-impl-jni/widgets/android_widget_TextView.c', 'src/api-impl-jni/widgets/android_widget_LinearLayout.c', + 'src/api-impl-jni/widgets/android_widget_Progressbar.c', 'src/api-impl-jni/widgets/android_view_SurfaceView.c', 'src/api-impl-jni/views/AndroidLayout.c', 'src/api-impl-jni/views/android_view_View.c', diff --git a/src/api-impl-jni/generated_headers/android_widget_ProgressBar.h b/src/api-impl-jni/generated_headers/android_widget_ProgressBar.h new file mode 100644 index 00000000..95b3012d --- /dev/null +++ b/src/api-impl-jni/generated_headers/android_widget_ProgressBar.h @@ -0,0 +1,221 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class android_widget_ProgressBar */ + +#ifndef _Included_android_widget_ProgressBar +#define _Included_android_widget_ProgressBar +#ifdef __cplusplus +extern "C" { +#endif +#undef android_widget_ProgressBar_NO_ID +#define android_widget_ProgressBar_NO_ID -1L +#undef android_widget_ProgressBar_NOT_FOCUSABLE +#define android_widget_ProgressBar_NOT_FOCUSABLE 0L +#undef android_widget_ProgressBar_FOCUSABLE +#define android_widget_ProgressBar_FOCUSABLE 1L +#undef android_widget_ProgressBar_FOCUSABLE_MASK +#define android_widget_ProgressBar_FOCUSABLE_MASK 1L +#undef android_widget_ProgressBar_FITS_SYSTEM_WINDOWS +#define android_widget_ProgressBar_FITS_SYSTEM_WINDOWS 2L +#undef android_widget_ProgressBar_VISIBLE +#define android_widget_ProgressBar_VISIBLE 0L +#undef android_widget_ProgressBar_INVISIBLE +#define android_widget_ProgressBar_INVISIBLE 4L +#undef android_widget_ProgressBar_GONE +#define android_widget_ProgressBar_GONE 8L +#undef android_widget_ProgressBar_VISIBILITY_MASK +#define android_widget_ProgressBar_VISIBILITY_MASK 12L +#undef android_widget_ProgressBar_ENABLED +#define android_widget_ProgressBar_ENABLED 0L +#undef android_widget_ProgressBar_DISABLED +#define android_widget_ProgressBar_DISABLED 32L +#undef android_widget_ProgressBar_ENABLED_MASK +#define android_widget_ProgressBar_ENABLED_MASK 32L +#undef android_widget_ProgressBar_WILL_NOT_DRAW +#define android_widget_ProgressBar_WILL_NOT_DRAW 128L +#undef android_widget_ProgressBar_DRAW_MASK +#define android_widget_ProgressBar_DRAW_MASK 128L +#undef android_widget_ProgressBar_SCROLLBARS_NONE +#define android_widget_ProgressBar_SCROLLBARS_NONE 0L +#undef android_widget_ProgressBar_SCROLLBARS_HORIZONTAL +#define android_widget_ProgressBar_SCROLLBARS_HORIZONTAL 256L +#undef android_widget_ProgressBar_SCROLLBARS_VERTICAL +#define android_widget_ProgressBar_SCROLLBARS_VERTICAL 512L +#undef android_widget_ProgressBar_SCROLLBARS_MASK +#define android_widget_ProgressBar_SCROLLBARS_MASK 768L +#undef android_widget_ProgressBar_FILTER_TOUCHES_WHEN_OBSCURED +#define android_widget_ProgressBar_FILTER_TOUCHES_WHEN_OBSCURED 1024L +#undef android_widget_ProgressBar_OPTIONAL_FITS_SYSTEM_WINDOWS +#define android_widget_ProgressBar_OPTIONAL_FITS_SYSTEM_WINDOWS 2048L +#undef android_widget_ProgressBar_FADING_EDGE_NONE +#define android_widget_ProgressBar_FADING_EDGE_NONE 0L +#undef android_widget_ProgressBar_FADING_EDGE_HORIZONTAL +#define android_widget_ProgressBar_FADING_EDGE_HORIZONTAL 4096L +#undef android_widget_ProgressBar_FADING_EDGE_VERTICAL +#define android_widget_ProgressBar_FADING_EDGE_VERTICAL 8192L +#undef android_widget_ProgressBar_FADING_EDGE_MASK +#define android_widget_ProgressBar_FADING_EDGE_MASK 12288L +#undef android_widget_ProgressBar_CLICKABLE +#define android_widget_ProgressBar_CLICKABLE 16384L +#undef android_widget_ProgressBar_DRAWING_CACHE_ENABLED +#define android_widget_ProgressBar_DRAWING_CACHE_ENABLED 32768L +#undef android_widget_ProgressBar_SAVE_DISABLED +#define android_widget_ProgressBar_SAVE_DISABLED 65536L +#undef android_widget_ProgressBar_SAVE_DISABLED_MASK +#define android_widget_ProgressBar_SAVE_DISABLED_MASK 65536L +#undef android_widget_ProgressBar_WILL_NOT_CACHE_DRAWING +#define android_widget_ProgressBar_WILL_NOT_CACHE_DRAWING 131072L +#undef android_widget_ProgressBar_FOCUSABLE_IN_TOUCH_MODE +#define android_widget_ProgressBar_FOCUSABLE_IN_TOUCH_MODE 262144L +#undef android_widget_ProgressBar_DRAWING_CACHE_QUALITY_LOW +#define android_widget_ProgressBar_DRAWING_CACHE_QUALITY_LOW 524288L +#undef android_widget_ProgressBar_DRAWING_CACHE_QUALITY_HIGH +#define android_widget_ProgressBar_DRAWING_CACHE_QUALITY_HIGH 1048576L +#undef android_widget_ProgressBar_DRAWING_CACHE_QUALITY_AUTO +#define android_widget_ProgressBar_DRAWING_CACHE_QUALITY_AUTO 0L +#undef android_widget_ProgressBar_DRAWING_CACHE_QUALITY_MASK +#define android_widget_ProgressBar_DRAWING_CACHE_QUALITY_MASK 1572864L +#undef android_widget_ProgressBar_LONG_CLICKABLE +#define android_widget_ProgressBar_LONG_CLICKABLE 2097152L +#undef android_widget_ProgressBar_DUPLICATE_PARENT_STATE +#define android_widget_ProgressBar_DUPLICATE_PARENT_STATE 4194304L +#undef android_widget_ProgressBar_SCROLLBARS_INSIDE_OVERLAY +#define android_widget_ProgressBar_SCROLLBARS_INSIDE_OVERLAY 0L +#undef android_widget_ProgressBar_SCROLLBARS_INSIDE_INSET +#define android_widget_ProgressBar_SCROLLBARS_INSIDE_INSET 16777216L +#undef android_widget_ProgressBar_SCROLLBARS_OUTSIDE_OVERLAY +#define android_widget_ProgressBar_SCROLLBARS_OUTSIDE_OVERLAY 33554432L +#undef android_widget_ProgressBar_SCROLLBARS_OUTSIDE_INSET +#define android_widget_ProgressBar_SCROLLBARS_OUTSIDE_INSET 50331648L +#undef android_widget_ProgressBar_SCROLLBARS_INSET_MASK +#define android_widget_ProgressBar_SCROLLBARS_INSET_MASK 16777216L +#undef android_widget_ProgressBar_SCROLLBARS_OUTSIDE_MASK +#define android_widget_ProgressBar_SCROLLBARS_OUTSIDE_MASK 33554432L +#undef android_widget_ProgressBar_SCROLLBARS_STYLE_MASK +#define android_widget_ProgressBar_SCROLLBARS_STYLE_MASK 50331648L +#undef android_widget_ProgressBar_KEEP_SCREEN_ON +#define android_widget_ProgressBar_KEEP_SCREEN_ON 67108864L +#undef android_widget_ProgressBar_SOUND_EFFECTS_ENABLED +#define android_widget_ProgressBar_SOUND_EFFECTS_ENABLED 134217728L +#undef android_widget_ProgressBar_HAPTIC_FEEDBACK_ENABLED +#define android_widget_ProgressBar_HAPTIC_FEEDBACK_ENABLED 268435456L +#undef android_widget_ProgressBar_PARENT_SAVE_DISABLED +#define android_widget_ProgressBar_PARENT_SAVE_DISABLED 536870912L +#undef android_widget_ProgressBar_PARENT_SAVE_DISABLED_MASK +#define android_widget_ProgressBar_PARENT_SAVE_DISABLED_MASK 536870912L +#undef android_widget_ProgressBar_FOCUSABLES_ALL +#define android_widget_ProgressBar_FOCUSABLES_ALL 0L +#undef android_widget_ProgressBar_FOCUSABLES_TOUCH_MODE +#define android_widget_ProgressBar_FOCUSABLES_TOUCH_MODE 1L +#undef android_widget_ProgressBar_FOCUS_BACKWARD +#define android_widget_ProgressBar_FOCUS_BACKWARD 1L +#undef android_widget_ProgressBar_FOCUS_FORWARD +#define android_widget_ProgressBar_FOCUS_FORWARD 2L +#undef android_widget_ProgressBar_FOCUS_LEFT +#define android_widget_ProgressBar_FOCUS_LEFT 17L +#undef android_widget_ProgressBar_FOCUS_UP +#define android_widget_ProgressBar_FOCUS_UP 33L +#undef android_widget_ProgressBar_FOCUS_RIGHT +#define android_widget_ProgressBar_FOCUS_RIGHT 66L +#undef android_widget_ProgressBar_FOCUS_DOWN +#define android_widget_ProgressBar_FOCUS_DOWN 130L +#undef android_widget_ProgressBar_MEASURED_SIZE_MASK +#define android_widget_ProgressBar_MEASURED_SIZE_MASK 16777215L +#undef android_widget_ProgressBar_MEASURED_STATE_MASK +#define android_widget_ProgressBar_MEASURED_STATE_MASK -16777216L +#undef android_widget_ProgressBar_MEASURED_HEIGHT_STATE_SHIFT +#define android_widget_ProgressBar_MEASURED_HEIGHT_STATE_SHIFT 16L +#undef android_widget_ProgressBar_MEASURED_STATE_TOO_SMALL +#define android_widget_ProgressBar_MEASURED_STATE_TOO_SMALL 16777216L +#undef android_widget_ProgressBar_PFLAG2_DRAG_CAN_ACCEPT +#define android_widget_ProgressBar_PFLAG2_DRAG_CAN_ACCEPT 1L +#undef android_widget_ProgressBar_PFLAG2_DRAG_HOVERED +#define android_widget_ProgressBar_PFLAG2_DRAG_HOVERED 2L +#undef android_widget_ProgressBar_LAYOUT_DIRECTION_LTR +#define android_widget_ProgressBar_LAYOUT_DIRECTION_LTR 0L +#undef android_widget_ProgressBar_LAYOUT_DIRECTION_RTL +#define android_widget_ProgressBar_LAYOUT_DIRECTION_RTL 1L +#undef android_widget_ProgressBar_LAYOUT_DIRECTION_INHERIT +#define android_widget_ProgressBar_LAYOUT_DIRECTION_INHERIT 2L +#undef android_widget_ProgressBar_LAYOUT_DIRECTION_LOCALE +#define android_widget_ProgressBar_LAYOUT_DIRECTION_LOCALE 3L +#undef android_widget_ProgressBar_PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT +#define android_widget_ProgressBar_PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT 2L +#undef android_widget_ProgressBar_PFLAG2_LAYOUT_DIRECTION_MASK +#define android_widget_ProgressBar_PFLAG2_LAYOUT_DIRECTION_MASK 12L +#undef android_widget_ProgressBar_PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL +#define android_widget_ProgressBar_PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL 16L +#undef android_widget_ProgressBar_PFLAG2_LAYOUT_DIRECTION_RESOLVED +#define android_widget_ProgressBar_PFLAG2_LAYOUT_DIRECTION_RESOLVED 32L +#undef android_widget_ProgressBar_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK +#define android_widget_ProgressBar_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK 48L +#undef android_widget_ProgressBar_STATUS_BAR_HIDDEN +#define android_widget_ProgressBar_STATUS_BAR_HIDDEN 1L +#undef android_widget_ProgressBar_STATUS_BAR_VISIBLE +#define android_widget_ProgressBar_STATUS_BAR_VISIBLE 0L +#undef android_widget_ProgressBar_SYSTEM_UI_FLAG_FULLSCREEN +#define android_widget_ProgressBar_SYSTEM_UI_FLAG_FULLSCREEN 4L +#undef android_widget_ProgressBar_SYSTEM_UI_FLAG_HIDE_NAVIGATION +#define android_widget_ProgressBar_SYSTEM_UI_FLAG_HIDE_NAVIGATION 2L +#undef android_widget_ProgressBar_SYSTEM_UI_FLAG_IMMERSIVE +#define android_widget_ProgressBar_SYSTEM_UI_FLAG_IMMERSIVE 2048L +#undef android_widget_ProgressBar_SYSTEM_UI_FLAG_IMMERSIVE_STICKY +#define android_widget_ProgressBar_SYSTEM_UI_FLAG_IMMERSIVE_STICKY 4096L +#undef android_widget_ProgressBar_SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN +#define android_widget_ProgressBar_SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 1024L +#undef android_widget_ProgressBar_SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION +#define android_widget_ProgressBar_SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 512L +#undef android_widget_ProgressBar_SYSTEM_UI_FLAG_LAYOUT_STABLE +#define android_widget_ProgressBar_SYSTEM_UI_FLAG_LAYOUT_STABLE 256L +#undef android_widget_ProgressBar_SYSTEM_UI_FLAG_LOW_PROFILE +#define android_widget_ProgressBar_SYSTEM_UI_FLAG_LOW_PROFILE 1L +#undef android_widget_ProgressBar_SYSTEM_UI_FLAG_VISIBLE +#define android_widget_ProgressBar_SYSTEM_UI_FLAG_VISIBLE 0L +#undef android_widget_ProgressBar_SYSTEM_UI_LAYOUT_FLAGS +#define android_widget_ProgressBar_SYSTEM_UI_LAYOUT_FLAGS 1536L +#undef android_widget_ProgressBar_TEXT_ALIGNMENT_CENTER +#define android_widget_ProgressBar_TEXT_ALIGNMENT_CENTER 4L +#undef android_widget_ProgressBar_TEXT_ALIGNMENT_GRAVITY +#define android_widget_ProgressBar_TEXT_ALIGNMENT_GRAVITY 1L +#undef android_widget_ProgressBar_TEXT_ALIGNMENT_INHERIT +#define android_widget_ProgressBar_TEXT_ALIGNMENT_INHERIT 0L +#undef android_widget_ProgressBar_TEXT_ALIGNMENT_TEXT_END +#define android_widget_ProgressBar_TEXT_ALIGNMENT_TEXT_END 3L +#undef android_widget_ProgressBar_TEXT_ALIGNMENT_TEXT_START +#define android_widget_ProgressBar_TEXT_ALIGNMENT_TEXT_START 2L +#undef android_widget_ProgressBar_TEXT_ALIGNMENT_VIEW_END +#define android_widget_ProgressBar_TEXT_ALIGNMENT_VIEW_END 6L +#undef android_widget_ProgressBar_TEXT_ALIGNMENT_VIEW_START +#define android_widget_ProgressBar_TEXT_ALIGNMENT_VIEW_START 5L +#undef android_widget_ProgressBar_TEXT_DIRECTION_ANY_RTL +#define android_widget_ProgressBar_TEXT_DIRECTION_ANY_RTL 2L +#undef android_widget_ProgressBar_TEXT_DIRECTION_FIRST_STRONG +#define android_widget_ProgressBar_TEXT_DIRECTION_FIRST_STRONG 1L +#undef android_widget_ProgressBar_TEXT_DIRECTION_INHERIT +#define android_widget_ProgressBar_TEXT_DIRECTION_INHERIT 0L +#undef android_widget_ProgressBar_TEXT_DIRECTION_LOCALE +#define android_widget_ProgressBar_TEXT_DIRECTION_LOCALE 5L +#undef android_widget_ProgressBar_TEXT_DIRECTION_LTR +#define android_widget_ProgressBar_TEXT_DIRECTION_LTR 3L +#undef android_widget_ProgressBar_TEXT_DIRECTION_RTL +#define android_widget_ProgressBar_TEXT_DIRECTION_RTL 4L +/* + * Class: android_widget_ProgressBar + * Method: native_constructor + * Signature: (Landroid/content/Context;Landroid/util/AttributeSet;)J + */ +JNIEXPORT jlong JNICALL Java_android_widget_ProgressBar_native_1constructor + (JNIEnv *, jobject, jobject, jobject); + +/* + * Class: android_widget_ProgressBar + * Method: native_setProgress + * Signature: (JF)V + */ +JNIEXPORT void JNICALL Java_android_widget_ProgressBar_native_1setProgress + (JNIEnv *, jobject, jlong, jfloat); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/widgets/android_widget_Progressbar.c b/src/api-impl-jni/widgets/android_widget_Progressbar.c new file mode 100644 index 00000000..7ce0b777 --- /dev/null +++ b/src/api-impl-jni/widgets/android_widget_Progressbar.c @@ -0,0 +1,24 @@ +#include +#include + +#include "../defines.h" +#include "../util.h" + +#include "WrapperWidget.h" + +#include "../generated_headers/android_widget_ProgressBar.h" + +JNIEXPORT jlong JNICALL Java_android_widget_ProgressBar_native_1constructor(JNIEnv *env, jobject this, jobject context, jobject attrs) +{ + GtkWidget *wrapper = g_object_ref(wrapper_widget_new()); + GtkWidget *progress_bar = gtk_progress_bar_new(); + wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), progress_bar); + gtk_widget_set_name(progress_bar, "ProgressBar"); + return _INTPTR(progress_bar); +} + +JNIEXPORT void JNICALL Java_android_widget_ProgressBar_native_1setProgress(JNIEnv *env, jobject this, jlong widget_ptr, jfloat progress) +{ + GtkProgressBar *progress_bar = GTK_PROGRESS_BAR(_PTR(widget_ptr)); + gtk_progress_bar_set_fraction(progress_bar, progress); +} diff --git a/src/api-impl/android/widget/ProgressBar.java b/src/api-impl/android/widget/ProgressBar.java index dbf93d92..d174e6d8 100644 --- a/src/api-impl/android/widget/ProgressBar.java +++ b/src/api-impl/android/widget/ProgressBar.java @@ -7,6 +7,10 @@ import android.util.AttributeSet; import android.view.View; public class ProgressBar extends View { + + private int max = 100; + private int progress = 0; + public ProgressBar(Context context, AttributeSet attrs) { super(context, attrs); } @@ -15,6 +19,10 @@ public class ProgressBar extends View { super(context); } + @Override + protected native long native_constructor(Context context, AttributeSet attrs); + private native void native_setProgress(long widget, float fraction); + public synchronized void setIndeterminate(boolean indeterminate) {} public Drawable getProgressDrawable() { @@ -37,17 +45,23 @@ public class ProgressBar extends View { }; } - public void setMax(int max) {} - - public int getMax() { - return 100; + public void setMax(int max) { + this.max = max; + native_setProgress(widget, progress / (float)max); } - public void setProgress(int progress) {} + public int getMax() { + return max; + } + + public void setProgress(int progress) { + this.progress = progress; + native_setProgress(widget, progress / (float)max); + } public void setSecondaryProgress(int secondaryProgress) {} public int getProgress() { - return 0; + return progress; } }