You've already forked android_translation_layer
mirror of
https://gitlab.com/android_translation_layer/android_translation_layer.git
synced 2025-10-27 11:48:10 -07:00
ProgressBar: use GtkSpinner for indeterminate mode
This commit is contained in:
@@ -215,6 +215,14 @@ JNIEXPORT jlong JNICALL Java_android_widget_ProgressBar_native_1constructor
|
|||||||
JNIEXPORT void JNICALL Java_android_widget_ProgressBar_native_1setProgress
|
JNIEXPORT void JNICALL Java_android_widget_ProgressBar_native_1setProgress
|
||||||
(JNIEnv *, jobject, jlong, jfloat);
|
(JNIEnv *, jobject, jlong, jfloat);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: android_widget_ProgressBar
|
||||||
|
* Method: setIndeterminate
|
||||||
|
* Signature: (Z)V
|
||||||
|
*/
|
||||||
|
JNIEXPORT void JNICALL Java_android_widget_ProgressBar_setIndeterminate
|
||||||
|
(JNIEnv *, jobject, jboolean);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -11,14 +11,31 @@
|
|||||||
JNIEXPORT jlong JNICALL Java_android_widget_ProgressBar_native_1constructor(JNIEnv *env, jobject this, jobject context, jobject attrs)
|
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 *wrapper = g_object_ref(wrapper_widget_new());
|
||||||
|
GtkWidget *box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
|
||||||
GtkWidget *progress_bar = gtk_progress_bar_new();
|
GtkWidget *progress_bar = gtk_progress_bar_new();
|
||||||
wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), progress_bar);
|
GtkWidget *spinner = gtk_spinner_new();
|
||||||
gtk_widget_set_name(progress_bar, "ProgressBar");
|
wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), box);
|
||||||
return _INTPTR(progress_bar);
|
gtk_box_append(GTK_BOX(box), progress_bar);
|
||||||
|
gtk_box_append(GTK_BOX(box), spinner);
|
||||||
|
gtk_widget_set_name(box, "ProgressBar");
|
||||||
|
gtk_widget_set_visible(spinner, FALSE);
|
||||||
|
return _INTPTR(box);
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_android_widget_ProgressBar_native_1setProgress(JNIEnv *env, jobject this, jlong widget_ptr, jfloat progress)
|
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));
|
GtkWidget *box = GTK_WIDGET(_PTR(widget_ptr));
|
||||||
|
GtkProgressBar *progress_bar = GTK_PROGRESS_BAR(gtk_widget_get_first_child(box));
|
||||||
gtk_progress_bar_set_fraction(progress_bar, progress);
|
gtk_progress_bar_set_fraction(progress_bar, progress);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL Java_android_widget_ProgressBar_setIndeterminate(JNIEnv *env, jobject this, jboolean indeterminate)
|
||||||
|
{
|
||||||
|
GtkWidget *box = GTK_WIDGET(_PTR(_GET_LONG_FIELD(this, "widget")));
|
||||||
|
GtkProgressBar *progress_bar = GTK_PROGRESS_BAR(gtk_widget_get_first_child(box));
|
||||||
|
GtkSpinner *spinner = GTK_SPINNER(gtk_widget_get_last_child(box));
|
||||||
|
|
||||||
|
gtk_spinner_set_spinning(spinner, indeterminate);
|
||||||
|
gtk_widget_set_visible(GTK_WIDGET(progress_bar), !indeterminate);
|
||||||
|
gtk_widget_set_visible(GTK_WIDGET(spinner), indeterminate);
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package android.widget;
|
package android.widget;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.res.TypedArray;
|
||||||
import android.graphics.Canvas;
|
import android.graphics.Canvas;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
@@ -14,6 +15,9 @@ public class ProgressBar extends View {
|
|||||||
public ProgressBar(Context context, AttributeSet attrs, int defStyle) {
|
public ProgressBar(Context context, AttributeSet attrs, int defStyle) {
|
||||||
super(context, attrs, defStyle);
|
super(context, attrs, defStyle);
|
||||||
haveComplexMeasure = true;
|
haveComplexMeasure = true;
|
||||||
|
TypedArray a = context.obtainStyledAttributes(attrs, com.android.internal.R.styleable.ProgressBar, defStyle, 0);
|
||||||
|
setIndeterminate(a.getBoolean(com.android.internal.R.styleable.ProgressBar_indeterminate, false));
|
||||||
|
a.recycle();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ProgressBar(Context context, AttributeSet attrs) {
|
public ProgressBar(Context context, AttributeSet attrs) {
|
||||||
@@ -28,7 +32,7 @@ public class ProgressBar extends View {
|
|||||||
protected native long native_constructor(Context context, AttributeSet attrs);
|
protected native long native_constructor(Context context, AttributeSet attrs);
|
||||||
private native void native_setProgress(long widget, float fraction);
|
private native void native_setProgress(long widget, float fraction);
|
||||||
|
|
||||||
public synchronized void setIndeterminate(boolean indeterminate) {}
|
public native void setIndeterminate(boolean indeterminate);
|
||||||
|
|
||||||
public Drawable getProgressDrawable() {
|
public Drawable getProgressDrawable() {
|
||||||
return new Drawable() {
|
return new Drawable() {
|
||||||
|
|||||||
Reference in New Issue
Block a user