From 8d9006a376383f5c6a6b1d80c6bcdd87e80e2f0e Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Wed, 2 Jan 2019 16:46:29 +0700 Subject: [PATCH 1/3] Add cancel button to ProgressDialog --- .../java/com/tavultesoft/kmea/JSONParser.java | 5 +++++ .../kmea/KMKeyboardDownloaderActivity.java | 22 ++++++++++++++++--- .../kmea/LanguageListActivity.java | 20 ++++++++++++++--- .../KMEA/app/src/main/res/values/strings.xml | 2 +- .../KMEA/app/src/main/res/values/styles.xml | 6 +++++ 5 files changed, 48 insertions(+), 7 deletions(-) diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/JSONParser.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/JSONParser.java index 9d716bb98d..41b0fad63f 100644 --- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/JSONParser.java +++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/JSONParser.java @@ -11,6 +11,7 @@ import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.io.InterruptedIOException; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.URL; @@ -44,6 +45,10 @@ public final class JSONParser { Log.e(logTag, (e.getMessage() == null) ? "UnsupportedEncodingException" : e.getMessage()); jsonObj = null; System.err.println(e); + } catch (InterruptedIOException e) { + // Disregard from cancelling action + Log.e(logTag, (e.getMessage() == null) ? "InterruptedIOException" : e.getMessage()); + jsonObj = null; } catch (IOException e) { Log.e(logTag, (e.getMessage() == null) ? "IOException" : e.getMessage()); jsonObj = null; diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMKeyboardDownloaderActivity.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMKeyboardDownloaderActivity.java index 36a039ea83..be95aae255 100644 --- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMKeyboardDownloaderActivity.java +++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMKeyboardDownloaderActivity.java @@ -74,6 +74,7 @@ public class KMKeyboardDownloaderActivity extends AppCompatActivity { private static String filename; private static ArrayList kbDownloadEventListeners = null; + private static DownloadTask downloadTask = null; @Override public void onCreate(Bundle savedInstanceState) { @@ -154,7 +155,18 @@ public class KMKeyboardDownloaderActivity extends AppCompatActivity { if (showProgressDialog) { progressDialog = new ProgressDialog(context); progressDialog.setMessage(context.getString(R.string.downloading_keyboard)); - progressDialog.setCancelable(false); + progressDialog.setCancelable(true); + progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, context.getString(R.string.label_cancel), + new DialogInterface.OnClickListener() { + + @Override + public void onClick(DialogInterface dialogInterface, int which) { + if (downloadTask != null) { + downloadTask.cancel(true); + } + progressDialog.dismiss(); + } + }); if (!((AppCompatActivity) context).isFinishing()) { progressDialog.show(); } else { @@ -340,6 +352,10 @@ public class KMKeyboardDownloaderActivity extends AppCompatActivity { } } + boolean spin = true; + while (spin) { + wait(500); + } return ret; } @@ -372,8 +388,8 @@ public class KMKeyboardDownloaderActivity extends AppCompatActivity { * @param showProgressDialog */ public static void download(final Context context, final boolean showProgressDialog) { - - new DownloadTask(context, showProgressDialog).execute(); + downloadTask = new DownloadTask(context, showProgressDialog); + downloadTask.execute(); } public static boolean isCustom(String u) { diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/LanguageListActivity.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/LanguageListActivity.java index f70d1b6c24..f889a9f924 100644 --- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/LanguageListActivity.java +++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/LanguageListActivity.java @@ -26,6 +26,7 @@ import com.tavultesoft.kmea.KeyboardEventHandler.OnKeyboardDownloadEventListener import com.tavultesoft.kmea.BuildConfig; import android.annotation.SuppressLint; +import android.content.DialogInterface; import android.support.v7.app.AppCompatActivity; import android.app.ProgressDialog; import android.content.Context; @@ -337,10 +338,23 @@ public final class LanguageListActivity extends AppCompatActivity implements OnK loadFromCache = true; } + loadFromCache = false; // DDW don't commit if (hasConnection && !loadFromCache) { - progressDialog = new ProgressDialog(context); - progressDialog.setMessage(getString(R.string.loading)); - progressDialog.setCancelable(false); + progressDialog = new ProgressDialog(context, R.style.ProgressDialog); + progressDialog.setMessage(getString(R.string.getting_keyboard_catalog)); + progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, context.getString(R.string.label_cancel), + new DialogInterface.OnClickListener() { + + @Override + public void onClick(DialogInterface dialogInterface, int which) { + cancel(true); + progressDialog.dismiss(); + progressDialog = null; + LanguageListActivity.this.finish(); + return; + } + }); + progressDialog.setCancelable(true); if (!((AppCompatActivity) context).isFinishing()) { progressDialog.show(); } else { diff --git a/android/KMEA/app/src/main/res/values/strings.xml b/android/KMEA/app/src/main/res/values/strings.xml index baf64a1f9a..3c65758b8c 100644 --- a/android/KMEA/app/src/main/res/values/strings.xml +++ b/android/KMEA/app/src/main/res/values/strings.xml @@ -33,7 +33,7 @@ Custom Keyboard Downloading keyboard… Keyboard Updates Available - Loading… + Getting keyboard catalog.\nThis may take a while… Updating keyboards… diff --git a/android/KMEA/app/src/main/res/values/styles.xml b/android/KMEA/app/src/main/res/values/styles.xml index 35f8f78201..b44ffde24b 100644 --- a/android/KMEA/app/src/main/res/values/styles.xml +++ b/android/KMEA/app/src/main/res/values/styles.xml @@ -21,6 +21,12 @@ @android:color/white + +