Merge "Add the progress dialog for Bulk edit dialog" into rvc-dev
diff --git a/src/com/android/providers/media/PermissionActivity.java b/src/com/android/providers/media/PermissionActivity.java
index 0845fdd..041d89f 100644
--- a/src/com/android/providers/media/PermissionActivity.java
+++ b/src/com/android/providers/media/PermissionActivity.java
@@ -25,6 +25,7 @@
import android.app.Activity;
import android.app.AlertDialog;
+import android.app.ProgressDialog;
import android.content.ContentProviderOperation;
import android.content.ContentResolver;
import android.content.ContentValues;
@@ -43,6 +44,7 @@
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
+import android.os.Handler;
import android.provider.MediaStore;
import android.provider.MediaStore.MediaColumns;
import android.text.TextUtils;
@@ -95,8 +97,11 @@
private String volumeName;
private ApplicationInfo appInfo;
+ private ProgressDialog progressDialog;
private TextView titleView;
+ private static final Long LEAST_SHOW_PROGRESS_TIME_MS = 300L;
+
private static final String VERB_WRITE = "write";
private static final String VERB_TRASH = "trash";
private static final String VERB_UNTRASH = "untrash";
@@ -174,6 +179,8 @@
titleView = (TextView) findViewByPredicate(dialog.getWindow().getDecorView(), (view) -> {
return (view instanceof TextView) && view.isImportantForAccessibility();
});
+
+ progressDialog = new ProgressDialog(this);
}
private void onPositiveAction(DialogInterface dialog, int which) {
@@ -181,6 +188,8 @@
((AlertDialog) dialog).getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
((AlertDialog) dialog).getButton(AlertDialog.BUTTON_NEGATIVE).setEnabled(false);
+ progressDialog.show();
+ final long startTime = System.currentTimeMillis();
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
@@ -230,7 +239,18 @@
@Override
protected void onPostExecute(Void result) {
setResult(Activity.RESULT_OK);
- finish();
+ // Don't dismiss the progress dialog too quick, it will cause bad UX.
+ final long duration = System.currentTimeMillis() - startTime;
+ if (duration > LEAST_SHOW_PROGRESS_TIME_MS) {
+ progressDialog.dismiss();
+ finish();
+ } else {
+ Handler handler = new Handler(getMainLooper());
+ handler.postDelayed(() -> {
+ progressDialog.dismiss();
+ finish();
+ }, LEAST_SHOW_PROGRESS_TIME_MS - duration);
+ }
}
}.execute();
}