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.
This commit is contained in:
Cody Henthorne 2022-12-13 11:41:11 -05:00
parent 5f0d37739a
commit 3478e13d38
6 changed files with 61 additions and 22 deletions

View file

@ -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))
}
}
}

View file

@ -1,6 +1,5 @@
package org.thoughtcrime.securesms.components.settings.app.privacy.advanced package org.thoughtcrime.securesms.components.settings.app.privacy.advanced
import android.app.ProgressDialog
import android.content.BroadcastReceiver import android.content.BroadcastReceiver
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
@ -18,6 +17,7 @@ import androidx.lifecycle.ViewModelProvider
import androidx.preference.PreferenceManager import androidx.preference.PreferenceManager
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.components.SignalProgressDialog
import org.thoughtcrime.securesms.components.settings.DSLConfiguration import org.thoughtcrime.securesms.components.settings.DSLConfiguration
import org.thoughtcrime.securesms.components.settings.DSLSettingsFragment import org.thoughtcrime.securesms.components.settings.DSLSettingsFragment
import org.thoughtcrime.securesms.components.settings.DSLSettingsText 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 statusIcon: CharSequence by lazy {
val unidentifiedDeliveryIcon = requireNotNull( val unidentifiedDeliveryIcon = requireNotNull(
@ -85,7 +85,7 @@ class AdvancedPrivacySettingsFragment : DSLSettingsFragment(R.string.preferences
viewModel.state.observe(viewLifecycleOwner) { viewModel.state.observe(viewLifecycleOwner) {
if (it.showProgressSpinner) { if (it.showProgressSpinner) {
if (progressDialog?.isShowing == false) { if (progressDialog?.isShowing == false) {
progressDialog = ProgressDialog.show(requireContext(), null, null, true) progressDialog = SignalProgressDialog.show(requireContext(), null, null, true)
} }
} else { } else {
progressDialog?.hide() progressDialog?.hide()

View file

@ -1,6 +1,5 @@
package org.thoughtcrime.securesms.components.settings.app.subscription.receipts.detail package org.thoughtcrime.securesms.components.settings.app.subscription.receipts.detail
import android.app.ProgressDialog
import android.content.ActivityNotFoundException import android.content.ActivityNotFoundException
import android.content.Intent import android.content.Intent
import android.graphics.Bitmap 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.concurrent.SimpleTask
import org.signal.core.util.logging.Log import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.components.SignalProgressDialog
import org.thoughtcrime.securesms.components.settings.DSLConfiguration import org.thoughtcrime.securesms.components.settings.DSLConfiguration
import org.thoughtcrime.securesms.components.settings.DSLSettingsFragment import org.thoughtcrime.securesms.components.settings.DSLSettingsFragment
import org.thoughtcrime.securesms.components.settings.DSLSettingsText 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) { 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( private val viewModel: DonationReceiptDetailViewModel by viewModels(
factoryProducer = { factoryProducer = {
@ -63,8 +63,7 @@ class DonationReceiptDetailFragment : DSLSettingsFragment(layoutId = R.layout.do
} }
private fun renderPng(record: DonationReceiptRecord, subscriptionName: String) { private fun renderPng(record: DonationReceiptRecord, subscriptionName: String) {
progressDialog = ProgressDialog(requireContext()) progressDialog = SignalProgressDialog.show(requireContext())
progressDialog.show()
val today: String = DateUtils.formatDateWithDayOfWeek(Locale.getDefault(), System.currentTimeMillis()) val today: String = DateUtils.formatDateWithDayOfWeek(Locale.getDefault(), System.currentTimeMillis())
val amount: String = FiatMoneyUtil.format(resources, record.amount) val amount: String = FiatMoneyUtil.format(resources, record.amount)

View file

@ -19,7 +19,6 @@ package org.thoughtcrime.securesms.conversationlist;
import android.Manifest; import android.Manifest;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.Activity; import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.res.Configuration; 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.badges.self.expired.ExpiredBadgeBottomSheetDialogFragment;
import org.thoughtcrime.securesms.components.Material3SearchToolbar; import org.thoughtcrime.securesms.components.Material3SearchToolbar;
import org.thoughtcrime.securesms.components.RatingManager; import org.thoughtcrime.securesms.components.RatingManager;
import org.thoughtcrime.securesms.components.SignalProgressDialog;
import org.thoughtcrime.securesms.components.UnreadPaymentsView; import org.thoughtcrime.securesms.components.UnreadPaymentsView;
import org.thoughtcrime.securesms.components.menu.ActionItem; import org.thoughtcrime.securesms.components.menu.ActionItem;
import org.thoughtcrime.securesms.components.menu.SignalBottomActionBar; import org.thoughtcrime.securesms.components.menu.SignalBottomActionBar;
@ -1035,14 +1035,15 @@ public class ConversationListFragment extends MainFragment implements ActionMode
if (!selectedConversations.isEmpty()) { if (!selectedConversations.isEmpty()) {
new AsyncTask<Void, Void, Void>() { new AsyncTask<Void, Void, Void>() {
private ProgressDialog dialog; private SignalProgressDialog dialog;
@Override @Override
protected void onPreExecute() { protected void onPreExecute() {
dialog = ProgressDialog.show(requireActivity(), dialog = SignalProgressDialog.show(requireActivity(),
context.getString(R.string.ConversationListFragment_deleting), context.getString(R.string.ConversationListFragment_deleting),
context.getString(R.string.ConversationListFragment_deleting_selected_conversations), context.getString(R.string.ConversationListFragment_deleting_selected_conversations),
true, false); true,
false);
} }
@Override @Override

View file

@ -1,17 +1,18 @@
package org.thoughtcrime.securesms.util.task; package org.thoughtcrime.securesms.util.task;
import android.app.ProgressDialog;
import android.content.Context; import android.content.Context;
import android.os.AsyncTask; import android.os.AsyncTask;
import androidx.annotation.CallSuper; import androidx.annotation.CallSuper;
import org.thoughtcrime.securesms.components.SignalProgressDialog;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
public abstract class ProgressDialogAsyncTask<Params, Progress, Result> extends AsyncTask<Params, Progress, Result> { public abstract class ProgressDialogAsyncTask<Params, Progress, Result> extends AsyncTask<Params, Progress, Result> {
private final WeakReference<Context> contextReference; private final WeakReference<Context> contextReference;
private ProgressDialog progress; private SignalProgressDialog progress;
private final String title; private final String title;
private final String message; private final String message;
@ -29,7 +30,7 @@ public abstract class ProgressDialogAsyncTask<Params, Progress, Result> extends
@Override @Override
protected void onPreExecute() { protected void onPreExecute() {
final Context context = contextReference.get(); 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 @CallSuper

View file

@ -1,7 +1,5 @@
package org.thoughtcrime.securesms.util.task; package org.thoughtcrime.securesms.util.task;
import android.app.ProgressDialog;
import android.graphics.Color;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.view.View; import android.view.View;
@ -12,6 +10,7 @@ import androidx.lifecycle.Lifecycle;
import com.google.android.material.snackbar.Snackbar; import com.google.android.material.snackbar.Snackbar;
import org.signal.core.util.logging.Log; import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.components.SignalProgressDialog;
public abstract class SnackbarAsyncTask<Params> public abstract class SnackbarAsyncTask<Params>
extends AsyncTask<Params, Void, Void> extends AsyncTask<Params, Void, Void>
@ -27,8 +26,8 @@ public abstract class SnackbarAsyncTask<Params>
private final int snackbarDuration; private final int snackbarDuration;
private final boolean showProgress; private final boolean showProgress;
private @Nullable Params reversibleParameter; private @Nullable Params reversibleParameter;
private @Nullable ProgressDialog progressDialog; private @Nullable SignalProgressDialog progressDialog;
public SnackbarAsyncTask(@NonNull Lifecycle lifecycle, public SnackbarAsyncTask(@NonNull Lifecycle lifecycle,
@NonNull View view, @NonNull View view,
@ -49,7 +48,7 @@ public abstract class SnackbarAsyncTask<Params>
@Override @Override
protected void onPreExecute() { 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; else this.progressDialog = null;
} }
@ -83,7 +82,7 @@ public abstract class SnackbarAsyncTask<Params>
new AsyncTask<Void, Void, Void>() { new AsyncTask<Void, Void, Void>() {
@Override @Override
protected void onPreExecute() { protected void onPreExecute() {
if (showProgress) progressDialog = ProgressDialog.show(view.getContext(), "", "", true); if (showProgress) progressDialog = SignalProgressDialog.show(view.getContext(), "", "", true);
else progressDialog = null; else progressDialog = null;
} }