From ef912e066bafabc909d17a10dcb6d0d18d3f6953 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 26 Aug 2020 12:29:46 +0200 Subject: [PATCH 1/3] Remove unused resource --- .../disclaimer_top_banner_foreground.xml | 38 ------------------- 1 file changed, 38 deletions(-) delete mode 100644 vector/src/main/res/drawable/disclaimer_top_banner_foreground.xml diff --git a/vector/src/main/res/drawable/disclaimer_top_banner_foreground.xml b/vector/src/main/res/drawable/disclaimer_top_banner_foreground.xml deleted file mode 100644 index c031da1e5b..0000000000 --- a/vector/src/main/res/drawable/disclaimer_top_banner_foreground.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - From 9f3f981ab07fdf0813b860415949a459cc585a09 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 26 Aug 2020 12:30:26 +0200 Subject: [PATCH 2/3] Use cached Views --- .../im/vector/app/core/preference/PushRulePreference.kt | 3 +-- .../app/core/preference/VectorEditTextPreference.kt | 2 +- .../im/vector/app/core/preference/VectorPreference.kt | 8 ++++---- .../app/core/preference/VectorPreferenceCategory.kt | 2 +- .../vector/app/core/preference/VectorSwitchPreference.kt | 2 +- 5 files changed, 8 insertions(+), 9 deletions(-) diff --git a/vector/src/main/java/im/vector/app/core/preference/PushRulePreference.kt b/vector/src/main/java/im/vector/app/core/preference/PushRulePreference.kt index 87584a9db0..9c4878ef06 100755 --- a/vector/src/main/java/im/vector/app/core/preference/PushRulePreference.kt +++ b/vector/src/main/java/im/vector/app/core/preference/PushRulePreference.kt @@ -20,7 +20,6 @@ import android.content.Context import android.util.AttributeSet import android.view.View import android.widget.RadioGroup -import android.widget.TextView import androidx.preference.PreferenceViewHolder import im.vector.app.R import org.matrix.android.sdk.api.pushrules.RuleSetKey @@ -162,7 +161,7 @@ class PushRulePreference : VectorPreference { override fun onBindViewHolder(holder: PreferenceViewHolder) { super.onBindViewHolder(holder) - holder.itemView.findViewById(android.R.id.summary)?.visibility = View.GONE + holder.findViewById(android.R.id.summary)?.visibility = View.GONE holder.itemView.setOnClickListener(null) holder.itemView.setOnLongClickListener(null) diff --git a/vector/src/main/java/im/vector/app/core/preference/VectorEditTextPreference.kt b/vector/src/main/java/im/vector/app/core/preference/VectorEditTextPreference.kt index 840e5fa510..348fcffc9b 100644 --- a/vector/src/main/java/im/vector/app/core/preference/VectorEditTextPreference.kt +++ b/vector/src/main/java/im/vector/app/core/preference/VectorEditTextPreference.kt @@ -45,7 +45,7 @@ class VectorEditTextPreference : EditTextPreference { override fun onBindViewHolder(holder: PreferenceViewHolder) { // display the title in multi-line to avoid ellipsis. try { - holder.itemView.findViewById(android.R.id.title)?.isSingleLine = false + (holder.findViewById(android.R.id.title) as? TextView)?.isSingleLine = false } catch (e: Exception) { Timber.e(e, "onBindView") } diff --git a/vector/src/main/java/im/vector/app/core/preference/VectorPreference.kt b/vector/src/main/java/im/vector/app/core/preference/VectorPreference.kt index 4a9bb6a6f5..dd887dba67 100755 --- a/vector/src/main/java/im/vector/app/core/preference/VectorPreference.kt +++ b/vector/src/main/java/im/vector/app/core/preference/VectorPreference.kt @@ -84,15 +84,15 @@ open class VectorPreference : Preference { // display the title in multi-line to avoid ellipsis. try { - val title = itemView.findViewById(android.R.id.title) - val summary = itemView.findViewById(android.R.id.summary) + val title = holder.findViewById(android.R.id.title) as? TextView + val summary = holder.findViewById(android.R.id.summary) as? TextView if (title != null) { title.isSingleLine = false title.setTypeface(null, mTypeface) } - if (title !== summary) { - summary.setTypeface(null, mTypeface) + summary?.setTypeface(null, mTypeface) + } // cancel existing animation (find a way to resume if happens during anim?) diff --git a/vector/src/main/java/im/vector/app/core/preference/VectorPreferenceCategory.kt b/vector/src/main/java/im/vector/app/core/preference/VectorPreferenceCategory.kt index e61cde8ebd..eb59da640d 100644 --- a/vector/src/main/java/im/vector/app/core/preference/VectorPreferenceCategory.kt +++ b/vector/src/main/java/im/vector/app/core/preference/VectorPreferenceCategory.kt @@ -45,7 +45,7 @@ class VectorPreferenceCategory : PreferenceCategory { override fun onBindViewHolder(holder: PreferenceViewHolder) { super.onBindViewHolder(holder) - val titleTextView = holder.itemView.findViewById(android.R.id.title) + val titleTextView = holder.findViewById(android.R.id.title) as? TextView titleTextView?.setTypeface(null, Typeface.BOLD) titleTextView?.setTextColor(ThemeUtils.getColor(context, R.attr.riotx_text_primary)) diff --git a/vector/src/main/java/im/vector/app/core/preference/VectorSwitchPreference.kt b/vector/src/main/java/im/vector/app/core/preference/VectorSwitchPreference.kt index c97991bfcb..346e8488b9 100644 --- a/vector/src/main/java/im/vector/app/core/preference/VectorSwitchPreference.kt +++ b/vector/src/main/java/im/vector/app/core/preference/VectorSwitchPreference.kt @@ -58,7 +58,7 @@ class VectorSwitchPreference : SwitchPreference { override fun onBindViewHolder(holder: PreferenceViewHolder) { // display the title in multi-line to avoid ellipsis. - holder.itemView.findViewById(android.R.id.title)?.isSingleLine = false + (holder.findViewById(android.R.id.title) as? TextView)?.isSingleLine = false // cancel existing animation (find a way to resume if happens during anim?) currentHighlightAnimator?.cancel() From 249f268fb52b949926a1dad4089b8d27547453bb Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 26 Aug 2020 12:55:49 +0200 Subject: [PATCH 3/3] Fix bad color for settings icon on Android < 24 (#1786) --- CHANGES.md | 1 + .../app/core/preference/VectorPreference.kt | 17 +++++++++++++++++ .../settings/VectorSettingsRootFragment.kt | 13 ++++++++++++- 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index a9f2e896aa..f7682028e1 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -9,6 +9,7 @@ Improvements 🙌: Bugfix 🐛: - Display name not shown under Settings/General (#1926) + - Fix bad color for settings icon on Android < 24 (#1786) Translations 🗣: - diff --git a/vector/src/main/java/im/vector/app/core/preference/VectorPreference.kt b/vector/src/main/java/im/vector/app/core/preference/VectorPreference.kt index dd887dba67..a40ddef6ab 100755 --- a/vector/src/main/java/im/vector/app/core/preference/VectorPreference.kt +++ b/vector/src/main/java/im/vector/app/core/preference/VectorPreference.kt @@ -20,12 +20,15 @@ import android.animation.Animator import android.animation.ArgbEvaluator import android.animation.ValueAnimator import android.content.Context +import android.content.res.ColorStateList import android.graphics.Color import android.graphics.Typeface import android.util.AttributeSet import android.view.View +import android.widget.ImageView import android.widget.TextView import androidx.core.animation.doOnEnd +import androidx.core.widget.ImageViewCompat import androidx.preference.Preference import androidx.preference.PreferenceViewHolder import im.vector.app.R @@ -76,6 +79,12 @@ open class VectorPreference : Preference { notifyChanged() } + var tintIcon = false + set(value) { + field = value + notifyChanged() + } + var currentHighlightAnimator: Animator? = null override fun onBindViewHolder(holder: PreferenceViewHolder) { @@ -93,6 +102,14 @@ open class VectorPreference : Preference { summary?.setTypeface(null, mTypeface) + if (tintIcon) { + // Tint icons (See #1786) + val icon = holder.findViewById(android.R.id.icon) as? ImageView + + icon?.let { + val color = ThemeUtils.getColor(context, R.attr.riotx_header_panel_text_secondary) + ImageViewCompat.setImageTintList(it, ColorStateList.valueOf(color)) + } } // cancel existing animation (find a way to resume if happens during anim?) diff --git a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsRootFragment.kt b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsRootFragment.kt index d2ec1a1543..3f3811ce76 100644 --- a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsRootFragment.kt +++ b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsRootFragment.kt @@ -16,7 +16,9 @@ package im.vector.app.features.settings +import android.os.Build import im.vector.app.R +import im.vector.app.core.preference.VectorPreference import javax.inject.Inject class VectorSettingsRootFragment @Inject constructor() : VectorSettingsBaseFragment() { @@ -25,6 +27,15 @@ class VectorSettingsRootFragment @Inject constructor() : VectorSettingsBaseFragm override val preferenceXmlRes = R.xml.vector_settings_root override fun bindPref() { - // Nothing to do + // Tint icon on API < 24 + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { + tintIcons() + } + } + + private fun tintIcons() { + for (i in 0 until preferenceScreen.preferenceCount) { + (preferenceScreen.getPreference(i) as? VectorPreference)?.let { it.tintIcon = true } + } } }