From 249dcda34ee34dae7c2d69d9f0f1e929f98f9e1a Mon Sep 17 00:00:00 2001 From: akwizgran Date: Tue, 11 Feb 2020 10:58:32 +0000 Subject: [PATCH] Use tinted icon for plugin settings dialog. --- .../contact/add/remote/NicknameFragment.java | 9 ++------- .../briar/android/conversation/ImageActivity.java | 9 ++------- .../android/navdrawer/PluginViewController.java | 3 ++- .../briarproject/briar/android/util/UiUtils.java | 13 ++++++++++++- 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/NicknameFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/NicknameFragment.java index 634c45462..aec20a01d 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/NicknameFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/NicknameFragment.java @@ -3,7 +3,6 @@ package org.briarproject.briar.android.contact.add.remote; import android.content.Context; import android.content.DialogInterface.OnClickListener; import android.content.Intent; -import android.graphics.drawable.Drawable; import android.os.Bundle; import android.text.Editable; import android.view.LayoutInflater; @@ -38,12 +37,10 @@ import androidx.lifecycle.ViewModelProviders; import static android.view.View.INVISIBLE; import static android.view.View.VISIBLE; import static android.widget.Toast.LENGTH_LONG; -import static androidx.core.content.ContextCompat.getColor; -import static androidx.core.content.ContextCompat.getDrawable; -import static androidx.core.graphics.drawable.DrawableCompat.setTint; import static java.util.Objects.requireNonNull; import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_AUTHOR_NAME_LENGTH; import static org.briarproject.bramble.util.StringUtils.utf8IsTooLong; +import static org.briarproject.briar.android.util.UiUtils.getDialogIcon; @MethodsNotNullByDefault @ParametersNotNullByDefault @@ -199,9 +196,7 @@ public class NicknameFragment extends BaseFragment { private void showWarningDialog(String name1, String name2) { Context ctx = requireContext(); Builder b = new Builder(ctx, R.style.BriarDialogTheme); - Drawable icon = getDrawable(ctx, R.drawable.alerts_and_states_error); - setTint(requireNonNull(icon), getColor(ctx, R.color.color_primary)); - b.setIcon(icon); + b.setIcon(getDialogIcon(ctx, R.drawable.alerts_and_states_error)); b.setTitle(getString(R.string.duplicate_link_dialog_title)); b.setMessage( getString(R.string.duplicate_link_dialog_text_3, name1, name2)); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageActivity.java index 749ef495c..10d2da314 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageActivity.java @@ -2,7 +2,6 @@ package org.briarproject.briar.android.conversation; import android.content.DialogInterface.OnClickListener; import android.content.Intent; -import android.graphics.drawable.Drawable; import android.os.Bundle; import android.transition.Fade; import android.transition.Transition; @@ -35,8 +34,6 @@ import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; import androidx.appcompat.app.AlertDialog.Builder; import androidx.appcompat.widget.Toolbar; -import androidx.core.content.ContextCompat; -import androidx.core.graphics.drawable.DrawableCompat; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentStatePagerAdapter; @@ -59,6 +56,7 @@ import static com.google.android.material.snackbar.Snackbar.LENGTH_LONG; import static java.util.Objects.requireNonNull; import static org.briarproject.briar.android.activity.RequestCodes.REQUEST_SAVE_ATTACHMENT; import static org.briarproject.briar.android.util.UiUtils.formatDateAbsolute; +import static org.briarproject.briar.android.util.UiUtils.getDialogIcon; @MethodsNotNullByDefault @ParametersNotNullByDefault @@ -278,10 +276,7 @@ public class ImageActivity extends BriarActivity Builder builder = new Builder(this, R.style.BriarDialogTheme); builder.setTitle(getString(R.string.dialog_title_save_image)); builder.setMessage(getString(R.string.dialog_message_save_image)); - Drawable icon = ContextCompat.getDrawable(this, R.drawable.ic_security); - DrawableCompat.setTint(requireNonNull(icon), - ContextCompat.getColor(this, R.color.color_primary)); - builder.setIcon(icon); + builder.setIcon(getDialogIcon(this, R.drawable.ic_security)); builder.setPositiveButton(R.string.save_image, okListener); builder.setNegativeButton(R.string.cancel, null); builder.show(); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/PluginViewController.java b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/PluginViewController.java index 828cdf0a3..3f551b1ee 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/PluginViewController.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/PluginViewController.java @@ -31,6 +31,7 @@ import static org.briarproject.bramble.api.plugin.TorConstants.REASON_BATTERY; import static org.briarproject.bramble.api.plugin.TorConstants.REASON_COUNTRY_BLOCKED; import static org.briarproject.bramble.api.plugin.TorConstants.REASON_MOBILE_DATA; import static org.briarproject.briar.android.navdrawer.NavDrawerViewModel.TRANSPORT_IDS; +import static org.briarproject.briar.android.util.UiUtils.getDialogIcon; class PluginViewController { @@ -187,7 +188,7 @@ class PluginViewController { AlertDialog.Builder b = new AlertDialog.Builder(activity, R.style.BriarDialogTheme); b.setTitle(R.string.tor_override_settings_title); - b.setIcon(R.drawable.ic_settings_black_24dp); + b.setIcon(getDialogIcon(activity, R.drawable.ic_settings_black_24dp)); b.setMessage(message); b.setPositiveButton(R.string.tor_override_settings_confirm, (dialog, which) -> diff --git a/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java b/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java index 2c9d12700..bf3805232 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java @@ -6,6 +6,7 @@ import android.app.KeyguardManager; import android.content.Context; import android.content.DialogInterface.OnClickListener; import android.content.Intent; +import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.PowerManager; import android.text.Html; @@ -43,6 +44,7 @@ import java.util.Locale; import androidx.annotation.AttrRes; import androidx.annotation.ColorInt; import androidx.annotation.ColorRes; +import androidx.annotation.DrawableRes; import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; import androidx.annotation.UiThread; @@ -81,7 +83,10 @@ import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM; import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_NO; import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_YES; import static androidx.appcompat.app.AppCompatDelegate.setDefaultNightMode; +import static androidx.core.content.ContextCompat.getColor; +import static androidx.core.content.ContextCompat.getDrawable; import static androidx.core.content.ContextCompat.getSystemService; +import static androidx.core.graphics.drawable.DrawableCompat.setTint; import static androidx.core.view.ViewCompat.LAYOUT_DIRECTION_RTL; import static java.util.Objects.requireNonNull; import static java.util.concurrent.TimeUnit.DAYS; @@ -383,7 +388,7 @@ public class UiUtils { /** * Same as {@link #observeOnce(LiveData, LifecycleOwner, Observer)}, * but without a {@link LifecycleOwner}. - * + *

* Warning: Do NOT call from objects that have a lifecycle. */ @UiThread @@ -413,4 +418,10 @@ public class UiUtils { // Name is unknown return isoCode; } + + public static Drawable getDialogIcon(Context ctx, @DrawableRes int resId) { + Drawable icon = getDrawable(ctx, resId); + setTint(requireNonNull(icon), getColor(ctx, R.color.color_primary)); + return icon; + } }