Changed card tinting method to use strings rather than raw integers to prevent mix-up of colours on app update; added migration strategy to convert old raw integer colours into string values

This commit is contained in:
Deniz Düzgören
2019-08-09 21:18:27 +02:00
parent c2561b8354
commit 60831aa2b2
6 changed files with 107 additions and 41 deletions
@@ -19,6 +19,7 @@ import com.google.android.material.card.MaterialCardView
class CardAdapter(private var mSubst: List<Subst>) : RecyclerView.Adapter<CardAdapter.CardViewHolder>() {
private var colour = 0
private var colourString = ""
private var colorCheck = ""
class CardViewHolder (view: View) : RecyclerView.ViewHolder(view), View.OnClickListener {
@@ -83,46 +84,47 @@ class CardAdapter(private var mSubst: List<Subst>) : RecyclerView.Adapter<CardAd
if (!psa) {
try {
colorCheck = holder.mCourse.text.toString().toLowerCase().substring(0, 3)
colour = when (colorCheck) {
"deu", "dep", "daz", "fda" -> prefs.getInt("bgGerman", 0)
"mat", "map" -> prefs.getInt("bgMaths", 0)
"eng", "enp", "ena" -> prefs.getInt("bgEnglish", 0)
"spo", "spp", "spth" -> prefs.getInt("bgPhysEd", 0)
"pol", "pop" -> prefs.getInt("bgPolitics", 0)
"dar", "dap" -> prefs.getInt("bgTheatre", 0)
"phy", "php" -> prefs.getInt("bgPhysics", 0)
"bio", "bip", "nw1", "nw2", "nw3", "nw4" -> prefs.getInt("bgBiology", 0)
"che", "chp" -> prefs.getInt("bgChemistry", 0)
"phi", "psp" -> prefs.getInt("bgPhilosophy", 0)
"laa", "laf", "lat" -> prefs.getInt("bgLatin", 0)
"spa", "spf" -> prefs.getInt("bgSpanish", 0)
"fra", "frf", "frz" -> prefs.getInt("bgFrench", 0)
"inf" -> prefs.getInt("bgCompsci", 0)
"ges" -> prefs.getInt("bgHistory", 0)
"rel" -> prefs.getInt("bgReligion", 0)
"geg" -> prefs.getInt("bgGeography", 0)
"kun" -> prefs.getInt("bgArts", 0)
"mus" -> prefs.getInt("bgMusic", 0)
"tue" -> prefs.getInt("bgTurkish", 0)
"chi" -> prefs.getInt("bgChinese", 0)
"gll" -> prefs.getInt("bgGLL", 0)
"wat" -> prefs.getInt("bgWAT", 0)
"för" -> prefs.getInt("bgForder", 0)
"met", "wpb" -> prefs.getInt("bgWP", 0)
else -> 0
colourString = when (colorCheck) {
"deu", "dep", "daz", "fda" -> prefs.getString("cardGerman", "") ?: ""
"mat", "map" -> prefs.getString("cardMaths", "") ?: ""
"eng", "enp", "ena" -> prefs.getString("cardEnglish", "") ?: ""
"spo", "spp", "spth" -> prefs.getString("cardPhysEd", "") ?: ""
"pol", "pop" -> prefs.getString("cardPolitics", "") ?: ""
"dar", "dap" -> prefs.getString("cardTheatre", "") ?: ""
"phy", "php" -> prefs.getString("cardPhysics", "") ?: ""
"bio", "bip", "nw1", "nw2", "nw3", "nw4" -> prefs.getString("cardBiology", "") ?: ""
"che", "chp" -> prefs.getString("cardChemistry", "") ?: ""
"phi", "psp" -> prefs.getString("cardPhilosophy", "") ?: ""
"laa", "laf", "lat" -> prefs.getString("cardLatin", "") ?: ""
"spa", "spf" -> prefs.getString("cardSpanish", "") ?: ""
"fra", "frf", "frz" -> prefs.getString("cardFrench", "") ?: ""
"inf" -> prefs.getString("cardCompsci", "") ?: ""
"ges" -> prefs.getString("cardHistory", "") ?: ""
"rel" -> prefs.getString("cardReligion", "") ?: ""
"geg" -> prefs.getString("cardGeography", "") ?: ""
"kun" -> prefs.getString("cardArts", "") ?: ""
"mus" -> prefs.getString("cardMusic", "") ?: ""
"tue" -> prefs.getString("cardTurkish", "") ?: ""
"chi" -> prefs.getString("cardChinese", "") ?: ""
"gll" -> prefs.getString("cardGLL", "") ?: ""
"wat" -> prefs.getString("cardWAT", "") ?: ""
"för" -> prefs.getString("cardForder", "") ?: ""
"met", "wpb" -> prefs.getString("cardWP", "") ?: ""
else -> ""
}
} catch (e: StringIndexOutOfBoundsException) {
try {
colorCheck = holder.mCourse.text.toString().toLowerCase().substring(0, 2)
colour = when (colorCheck) {
"nw" -> prefs.getInt("bgBiology", 0)
"wp" -> prefs.getInt("bgWP", 0)
else -> 0
colourString = when (colorCheck) {
"nw" -> prefs.getString("cardBiology", "") ?: ""
"wp" -> prefs.getString("cardWP", "") ?: ""
else -> ""
}
} catch (e2: StringIndexOutOfBoundsException) {
colour = 0
colourString = ""
}
}
colour = MiscData.getColourForString(colourString)
if (colour != 0) {
holder.mCard.setCardBackgroundColor(ContextCompat.getColor(holder.mCourse.context, colour))
} else {