From 146892e948b38ca8ae7ca718d332a242ba103c57 Mon Sep 17 00:00:00 2001 From: TrianguloY Date: Mon, 29 Jan 2024 23:12:56 +0100 Subject: [PATCH] improved ProgressDialog --- .../urlchecker/modules/companions/Hosts.java | 11 +++++----- .../utilities/wrappers/ProgressDialog.java | 20 +++++++++++++++++-- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/trianguloy/urlchecker/modules/companions/Hosts.java b/app/src/main/java/com/trianguloy/urlchecker/modules/companions/Hosts.java index 294edb5..1a0cd78 100644 --- a/app/src/main/java/com/trianguloy/urlchecker/modules/companions/Hosts.java +++ b/app/src/main/java/com/trianguloy/urlchecker/modules/companions/Hosts.java @@ -46,11 +46,12 @@ public class Hosts { .setTitle(R.string.mHosts_buildTitle) .setMessage(R.string.mHosts_buildDesc) .setNegativeButton(android.R.string.cancel, null) - .setPositiveButton(android.R.string.ok, (dialog, which) -> { - var progress = new ProgressDialog(cntx, cntx.getString(R.string.mHosts_buildProgress)); - progress.setMessage(cntx.getString(R.string.mHosts_buildInit)); - new Thread(() -> _build(progress, onFinished)).start(); - }); + .setPositiveButton(android.R.string.ok, (dialog, which) -> + ProgressDialog.run(cntx, R.string.mHosts_buildProgress, progress -> { + progress.setMessage(cntx.getString(R.string.mHosts_buildInit)); + _build(progress, onFinished); + }) + ); if (showEditor) builder .setNeutralButton(R.string.json_edit, (dialog, which) -> data.showEditor()); diff --git a/app/src/main/java/com/trianguloy/urlchecker/utilities/wrappers/ProgressDialog.java b/app/src/main/java/com/trianguloy/urlchecker/utilities/wrappers/ProgressDialog.java index d1efd89..47a6e49 100644 --- a/app/src/main/java/com/trianguloy/urlchecker/utilities/wrappers/ProgressDialog.java +++ b/app/src/main/java/com/trianguloy/urlchecker/utilities/wrappers/ProgressDialog.java @@ -2,16 +2,31 @@ package com.trianguloy.urlchecker.utilities.wrappers; import android.app.Activity; +import com.trianguloy.urlchecker.utilities.methods.JavaUtils; + /** * A wrapper around {@link android.app.ProgressDialog} with more useful functions */ public class ProgressDialog extends android.app.ProgressDialog { + + /** + * Usage: + *
+     *     ProgressDialog.run(cntx, R.string.text, progress -> {
+     *         // do things
+     *     });
+     * 
+ */ + public static void run(Activity context, int title, JavaUtils.Consumer consumer) { + new ProgressDialog(context, title, consumer); + } + private final Activity cntx; /** * Constructs and shows the dialog */ - public ProgressDialog(Activity context, String title) { + private ProgressDialog(Activity context, int title, JavaUtils.Consumer consumer) { super(context); cntx = context; setTitle(title); // can't be changed later @@ -20,8 +35,9 @@ public class ProgressDialog extends android.app.ProgressDialog { setCancelable(false); // disable cancelable by default setCanceledOnTouchOutside(false); - // show immediately + // show & start show(); + new Thread(() -> consumer.accept(this)).start(); } /**