From 2e44a81c6979054a4346e338f8d33f9afad2c9a2 Mon Sep 17 00:00:00 2001 From: Alexander Bakker Date: Wed, 13 Mar 2024 20:14:03 +0100 Subject: [PATCH] Use MaterialColors.getColor instead of our own helper I set CompactDividerDecoration to transparant, because that was already effectively the case. I think we can remove this class entirely, but I'll do that in a separate PR. --- .../aegis/helpers/ThemeHelper.java | 23 ------------------- .../aegis/ui/AboutActivity.java | 5 ++-- .../aegis/ui/AegisActivity.java | 4 ++-- .../aegis/ui/dialogs/SimpleWebViewDialog.java | 16 ++++++++++--- .../BackupsPreferencesFragment.java | 4 ++-- .../aegis/ui/views/EntryListView.java | 3 +-- .../aegis/ui/views/IconHolder.java | 4 ++-- 7 files changed, 23 insertions(+), 36 deletions(-) delete mode 100644 app/src/main/java/com/beemdevelopment/aegis/helpers/ThemeHelper.java diff --git a/app/src/main/java/com/beemdevelopment/aegis/helpers/ThemeHelper.java b/app/src/main/java/com/beemdevelopment/aegis/helpers/ThemeHelper.java deleted file mode 100644 index cbef80fe..00000000 --- a/app/src/main/java/com/beemdevelopment/aegis/helpers/ThemeHelper.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.beemdevelopment.aegis.helpers; - -import android.content.res.Resources; -import android.graphics.Color; -import android.util.TypedValue; - -import androidx.annotation.ColorInt; - -import com.beemdevelopment.aegis.R; - -public class ThemeHelper { - private ThemeHelper() { - - } - - public static int getThemeColor(int attributeId, Resources.Theme currentTheme) { - TypedValue typedValue = new TypedValue(); - currentTheme.resolveAttribute(attributeId, typedValue, true); - @ColorInt int color = typedValue.data; - - return color; - } -} diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/AboutActivity.java b/app/src/main/java/com/beemdevelopment/aegis/ui/AboutActivity.java index 1c1fd15e..9da20a0a 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/AboutActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/AboutActivity.java @@ -16,11 +16,11 @@ import androidx.annotation.StringRes; import com.beemdevelopment.aegis.BuildConfig; import com.beemdevelopment.aegis.R; -import com.beemdevelopment.aegis.helpers.ThemeHelper; import com.beemdevelopment.aegis.licenses.GlideLicense; import com.beemdevelopment.aegis.licenses.ProtobufLicense; import com.beemdevelopment.aegis.ui.dialogs.ChangelogDialog; import com.beemdevelopment.aegis.ui.dialogs.LicenseDialog; +import com.google.android.material.color.MaterialColors; import de.psdev.licensesdialog.LicenseResolver; import de.psdev.licensesdialog.LicensesDialog; @@ -148,7 +148,8 @@ public class AboutActivity extends AegisActivity { } private String getThemeColorAsHex(@AttrRes int attributeId) { - return String.format("%06X", (0xFFFFFF & ThemeHelper.getThemeColor(attributeId, getTheme()))); + int color = MaterialColors.getColor(this, attributeId, getClass().getCanonicalName()); + return String.format("%06X", 0xFFFFFF & color); } @Override diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/AegisActivity.java b/app/src/main/java/com/beemdevelopment/aegis/ui/AegisActivity.java index ca4af1d5..7f012701 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/AegisActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/AegisActivity.java @@ -22,11 +22,11 @@ import com.beemdevelopment.aegis.Preferences; import com.beemdevelopment.aegis.R; import com.beemdevelopment.aegis.Theme; import com.beemdevelopment.aegis.ThemeMap; -import com.beemdevelopment.aegis.helpers.ThemeHelper; import com.beemdevelopment.aegis.icons.IconPackManager; import com.beemdevelopment.aegis.vault.VaultManager; import com.beemdevelopment.aegis.vault.VaultRepositoryException; import com.google.android.material.color.DynamicColors; +import com.google.android.material.color.MaterialColors; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; @@ -251,7 +251,7 @@ public abstract class AegisActivity extends AppCompatActivity implements VaultMa if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { int statusBarColor = visibility == View.VISIBLE - ? ThemeHelper.getThemeColor(com.google.android.material.R.attr.colorSurfaceContainer, getTheme()) + ? MaterialColors.getColor(actionModeView, com.google.android.material.R.attr.colorSurfaceContainer) : _statusBarColor; getWindow().setStatusBarColor(statusBarColor); } diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/dialogs/SimpleWebViewDialog.java b/app/src/main/java/com/beemdevelopment/aegis/ui/dialogs/SimpleWebViewDialog.java index cf984aea..8f3f7129 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/dialogs/SimpleWebViewDialog.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/dialogs/SimpleWebViewDialog.java @@ -17,7 +17,7 @@ import androidx.fragment.app.DialogFragment; import com.beemdevelopment.aegis.R; import com.beemdevelopment.aegis.Theme; -import com.beemdevelopment.aegis.helpers.ThemeHelper; +import com.google.android.material.color.MaterialColors; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.common.io.CharStreams; @@ -70,11 +70,21 @@ public abstract class SimpleWebViewDialog extends DialogFragment { } protected String getBackgroundColor() { - return colorToCSS(ThemeHelper.getThemeColor(com.google.android.material.R.attr.colorSurfaceContainerHigh, requireContext().getTheme())); + int color = MaterialColors.getColor( + requireContext(), + com.google.android.material.R.attr.colorSurfaceContainerHigh, + getClass().getCanonicalName() + ); + return colorToCSS(color); } protected String getTextColor() { - return colorToCSS(0xFFFFFF & ThemeHelper.getThemeColor(com.google.android.material.R.attr.colorOnSurface, requireContext().getTheme())); + int color = MaterialColors.getColor( + requireContext(), + com.google.android.material.R.attr.colorOnSurface, + getClass().getCanonicalName() + ); + return colorToCSS(0xFFFFFF & color); } @SuppressLint("DefaultLocale") diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/fragments/preferences/BackupsPreferencesFragment.java b/app/src/main/java/com/beemdevelopment/aegis/ui/fragments/preferences/BackupsPreferencesFragment.java index affe3e6c..a2ec4fd5 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/fragments/preferences/BackupsPreferencesFragment.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/fragments/preferences/BackupsPreferencesFragment.java @@ -19,9 +19,9 @@ import androidx.preference.SwitchPreferenceCompat; import com.beemdevelopment.aegis.Preferences; import com.beemdevelopment.aegis.R; -import com.beemdevelopment.aegis.helpers.ThemeHelper; import com.beemdevelopment.aegis.ui.dialogs.Dialogs; import com.beemdevelopment.aegis.vault.VaultRepositoryException; +import com.google.android.material.color.MaterialColors; public class BackupsPreferencesFragment extends PreferencesFragment { private SwitchPreferenceCompat _androidBackupsPreference; @@ -216,7 +216,7 @@ public class BackupsPreferencesFragment extends PreferencesFragment { message = getString(R.string.backup_status_failed, res.getElapsedSince(requireContext())); } - int color = ThemeHelper.getThemeColor(colorAttr, requireContext().getTheme()); + int color = MaterialColors.getColor(requireContext(), colorAttr, getClass().getCanonicalName()); Spannable spannable = new SpannableString(message); spannable.setSpan(new ForegroundColorSpan(color), 0, message.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); spannable.setSpan(new StyleSpan(Typeface.BOLD), 0, message.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryListView.java b/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryListView.java index 9613b902..10107474 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryListView.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryListView.java @@ -32,7 +32,6 @@ import com.beemdevelopment.aegis.ViewMode; import com.beemdevelopment.aegis.helpers.AnimationsHelper; import com.beemdevelopment.aegis.helpers.MetricsHelper; import com.beemdevelopment.aegis.helpers.SimpleItemTouchHelperCallback; -import com.beemdevelopment.aegis.helpers.ThemeHelper; import com.beemdevelopment.aegis.helpers.UiRefresher; import com.beemdevelopment.aegis.otp.TotpInfo; import com.beemdevelopment.aegis.ui.dialogs.Dialogs; @@ -635,7 +634,7 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener { private class CompactDividerDecoration extends MaterialDividerItemDecoration { public CompactDividerDecoration() { super(requireContext(), DividerItemDecoration.VERTICAL); - setDividerColor(ThemeHelper.getThemeColor(androidx.appcompat.R.attr.divider, requireContext().getTheme())); + setDividerColorResource(requireContext(), android.R.color.transparent); setLastItemDecorated(false); setDividerThickness(MetricsHelper.convertDpToPixels(requireContext(), 0.5f)); } diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/views/IconHolder.java b/app/src/main/java/com/beemdevelopment/aegis/ui/views/IconHolder.java index c1ba540e..ed480981 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/views/IconHolder.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/views/IconHolder.java @@ -8,11 +8,11 @@ import android.widget.TextView; import androidx.recyclerview.widget.RecyclerView; import com.beemdevelopment.aegis.R; -import com.beemdevelopment.aegis.helpers.ThemeHelper; import com.beemdevelopment.aegis.icons.IconPack; import com.beemdevelopment.aegis.icons.IconType; import com.beemdevelopment.aegis.ui.glide.GlideHelper; import com.bumptech.glide.Glide; +import com.google.android.material.color.MaterialColors; import java.io.File; @@ -39,7 +39,7 @@ public class IconHolder extends RecyclerView.ViewHolder { public void loadIcon(Context context) { if (_isCustom) { - int tint = ThemeHelper.getThemeColor(com.google.android.material.R.attr.colorOnSurfaceVariant, context.getTheme()); + int tint = MaterialColors.getColor(itemView, com.google.android.material.R.attr.colorOnSurfaceVariant); GlideHelper.loadResource(Glide.with(context), R.drawable.ic_outline_add_24, tint, _imageView); } else { GlideHelper.loadIconFile(Glide.with(context), _iconFile, _iconType, _imageView);