From 3478e13d3819ee101b4c8cd350cd6758b2737d94 Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Tue, 13 Dec 2022 11:41:11 -0500 Subject: [PATCH] Fix progress dialog deprecation warnings. Moves everything under our own class and ignores the deprecation. Also gives us future ability to re-style all blocking UI dialogs in the future for mat3 compat. --- .../components/SignalProgressDialog.kt | 39 +++++++++++++++++++ .../AdvancedPrivacySettingsFragment.kt | 6 +-- .../detail/DonationReceiptDetailFragment.kt | 7 ++-- .../ConversationListFragment.java | 13 ++++--- .../util/task/ProgressDialogAsyncTask.java | 7 ++-- .../util/task/SnackbarAsyncTask.java | 11 +++--- 6 files changed, 61 insertions(+), 22 deletions(-) create mode 100644 app/src/main/java/org/thoughtcrime/securesms/components/SignalProgressDialog.kt diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/SignalProgressDialog.kt b/app/src/main/java/org/thoughtcrime/securesms/components/SignalProgressDialog.kt new file mode 100644 index 0000000000..272787e15c --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/components/SignalProgressDialog.kt @@ -0,0 +1,39 @@ +@file:Suppress("DEPRECATION") + +package org.thoughtcrime.securesms.components + +import android.app.ProgressDialog +import android.content.Context +import android.content.DialogInterface + +/** + * Wraps a normal progress dialog for showing blocking in-progress UI. + */ +class SignalProgressDialog private constructor(val progressDialog: ProgressDialog) { + + val isShowing: Boolean + get() = progressDialog.isShowing + + fun hide() { + progressDialog.hide() + } + + fun dismiss() { + progressDialog.dismiss() + } + + companion object { + @JvmStatic + @JvmOverloads + fun show( + context: Context, + title: CharSequence? = null, + message: CharSequence? = null, + indeterminate: Boolean = false, + cancelable: Boolean = false, + cancelListener: DialogInterface.OnCancelListener? = null + ): SignalProgressDialog { + return SignalProgressDialog(ProgressDialog.show(context, title, message, indeterminate, cancelable, cancelListener)) + } + } +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/advanced/AdvancedPrivacySettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/advanced/AdvancedPrivacySettingsFragment.kt index 68d2e0739c..c3036fb70c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/advanced/AdvancedPrivacySettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/advanced/AdvancedPrivacySettingsFragment.kt @@ -1,6 +1,5 @@ package org.thoughtcrime.securesms.components.settings.app.privacy.advanced -import android.app.ProgressDialog import android.content.BroadcastReceiver import android.content.Context import android.content.Intent @@ -18,6 +17,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.preference.PreferenceManager import com.google.android.material.dialog.MaterialAlertDialogBuilder import org.thoughtcrime.securesms.R +import org.thoughtcrime.securesms.components.SignalProgressDialog import org.thoughtcrime.securesms.components.settings.DSLConfiguration import org.thoughtcrime.securesms.components.settings.DSLSettingsFragment import org.thoughtcrime.securesms.components.settings.DSLSettingsText @@ -48,7 +48,7 @@ class AdvancedPrivacySettingsFragment : DSLSettingsFragment(R.string.preferences } } - var progressDialog: ProgressDialog? = null + var progressDialog: SignalProgressDialog? = null val statusIcon: CharSequence by lazy { val unidentifiedDeliveryIcon = requireNotNull( @@ -85,7 +85,7 @@ class AdvancedPrivacySettingsFragment : DSLSettingsFragment(R.string.preferences viewModel.state.observe(viewLifecycleOwner) { if (it.showProgressSpinner) { if (progressDialog?.isShowing == false) { - progressDialog = ProgressDialog.show(requireContext(), null, null, true) + progressDialog = SignalProgressDialog.show(requireContext(), null, null, true) } } else { progressDialog?.hide() diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/receipts/detail/DonationReceiptDetailFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/receipts/detail/DonationReceiptDetailFragment.kt index 9cc0ec5c9c..30e4cad399 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/receipts/detail/DonationReceiptDetailFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/receipts/detail/DonationReceiptDetailFragment.kt @@ -1,6 +1,5 @@ package org.thoughtcrime.securesms.components.settings.app.subscription.receipts.detail -import android.app.ProgressDialog import android.content.ActivityNotFoundException import android.content.Intent import android.graphics.Bitmap @@ -16,6 +15,7 @@ import com.google.android.material.button.MaterialButton import org.signal.core.util.concurrent.SimpleTask import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.R +import org.thoughtcrime.securesms.components.SignalProgressDialog import org.thoughtcrime.securesms.components.settings.DSLConfiguration import org.thoughtcrime.securesms.components.settings.DSLSettingsFragment import org.thoughtcrime.securesms.components.settings.DSLSettingsText @@ -31,7 +31,7 @@ import java.util.Locale class DonationReceiptDetailFragment : DSLSettingsFragment(layoutId = R.layout.donation_receipt_detail_fragment) { - private lateinit var progressDialog: ProgressDialog + private lateinit var progressDialog: SignalProgressDialog private val viewModel: DonationReceiptDetailViewModel by viewModels( factoryProducer = { @@ -63,8 +63,7 @@ class DonationReceiptDetailFragment : DSLSettingsFragment(layoutId = R.layout.do } private fun renderPng(record: DonationReceiptRecord, subscriptionName: String) { - progressDialog = ProgressDialog(requireContext()) - progressDialog.show() + progressDialog = SignalProgressDialog.show(requireContext()) val today: String = DateUtils.formatDateWithDayOfWeek(Locale.getDefault(), System.currentTimeMillis()) val amount: String = FiatMoneyUtil.format(resources, record.amount) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java index a82d5671db..37374e618b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java @@ -19,7 +19,6 @@ package org.thoughtcrime.securesms.conversationlist; import android.Manifest; import android.annotation.SuppressLint; import android.app.Activity; -import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; import android.content.res.Configuration; @@ -90,6 +89,7 @@ import org.thoughtcrime.securesms.badges.self.expired.CantProcessSubscriptionPay import org.thoughtcrime.securesms.badges.self.expired.ExpiredBadgeBottomSheetDialogFragment; import org.thoughtcrime.securesms.components.Material3SearchToolbar; import org.thoughtcrime.securesms.components.RatingManager; +import org.thoughtcrime.securesms.components.SignalProgressDialog; import org.thoughtcrime.securesms.components.UnreadPaymentsView; import org.thoughtcrime.securesms.components.menu.ActionItem; import org.thoughtcrime.securesms.components.menu.SignalBottomActionBar; @@ -1035,14 +1035,15 @@ public class ConversationListFragment extends MainFragment implements ActionMode if (!selectedConversations.isEmpty()) { new AsyncTask() { - private ProgressDialog dialog; + private SignalProgressDialog dialog; @Override protected void onPreExecute() { - dialog = ProgressDialog.show(requireActivity(), - context.getString(R.string.ConversationListFragment_deleting), - context.getString(R.string.ConversationListFragment_deleting_selected_conversations), - true, false); + dialog = SignalProgressDialog.show(requireActivity(), + context.getString(R.string.ConversationListFragment_deleting), + context.getString(R.string.ConversationListFragment_deleting_selected_conversations), + true, + false); } @Override diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/task/ProgressDialogAsyncTask.java b/app/src/main/java/org/thoughtcrime/securesms/util/task/ProgressDialogAsyncTask.java index 5f8b69381b..203988549d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/task/ProgressDialogAsyncTask.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/task/ProgressDialogAsyncTask.java @@ -1,17 +1,18 @@ package org.thoughtcrime.securesms.util.task; -import android.app.ProgressDialog; import android.content.Context; import android.os.AsyncTask; import androidx.annotation.CallSuper; +import org.thoughtcrime.securesms.components.SignalProgressDialog; + import java.lang.ref.WeakReference; public abstract class ProgressDialogAsyncTask extends AsyncTask { private final WeakReference contextReference; - private ProgressDialog progress; + private SignalProgressDialog progress; private final String title; private final String message; @@ -29,7 +30,7 @@ public abstract class ProgressDialogAsyncTask extends @Override protected void onPreExecute() { final Context context = contextReference.get(); - if (context != null) progress = ProgressDialog.show(context, title, message, true); + if (context != null) progress = SignalProgressDialog.show(context, title, message, true); } @CallSuper diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/task/SnackbarAsyncTask.java b/app/src/main/java/org/thoughtcrime/securesms/util/task/SnackbarAsyncTask.java index ffba2423d2..24c784dad2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/task/SnackbarAsyncTask.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/task/SnackbarAsyncTask.java @@ -1,7 +1,5 @@ package org.thoughtcrime.securesms.util.task; -import android.app.ProgressDialog; -import android.graphics.Color; import android.os.AsyncTask; import android.view.View; @@ -12,6 +10,7 @@ import androidx.lifecycle.Lifecycle; import com.google.android.material.snackbar.Snackbar; import org.signal.core.util.logging.Log; +import org.thoughtcrime.securesms.components.SignalProgressDialog; public abstract class SnackbarAsyncTask extends AsyncTask @@ -27,8 +26,8 @@ public abstract class SnackbarAsyncTask private final int snackbarDuration; private final boolean showProgress; - private @Nullable Params reversibleParameter; - private @Nullable ProgressDialog progressDialog; + private @Nullable Params reversibleParameter; + private @Nullable SignalProgressDialog progressDialog; public SnackbarAsyncTask(@NonNull Lifecycle lifecycle, @NonNull View view, @@ -49,7 +48,7 @@ public abstract class SnackbarAsyncTask @Override protected void onPreExecute() { - if (this.showProgress) this.progressDialog = ProgressDialog.show(view.getContext(), "", "", true); + if (this.showProgress) this.progressDialog = SignalProgressDialog.show(view.getContext(), "", "", true); else this.progressDialog = null; } @@ -83,7 +82,7 @@ public abstract class SnackbarAsyncTask new AsyncTask() { @Override protected void onPreExecute() { - if (showProgress) progressDialog = ProgressDialog.show(view.getContext(), "", "", true); + if (showProgress) progressDialog = SignalProgressDialog.show(view.getContext(), "", "", true); else progressDialog = null; }