diff --git a/app/build.gradle b/app/build.gradle
index fdb3afe..b95dbe9 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -10,8 +10,8 @@ android {
applicationId "com.denizd.substitutionplan"
minSdkVersion 21
targetSdkVersion 28
- versionCode 26
- versionName "2.2.3"
+ versionCode 27
+ versionName "2.2.4"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 1b3c1b5..1285c7c 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -5,7 +5,6 @@
-
) : RecyclerView.Adapter() {
@@ -63,7 +64,7 @@ class CardAdapter(private var mSubst: List) : RecyclerView.Adapter) : RecyclerView.Adapter 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)
- colourString = when (colorCheck) {
- "nw" -> prefs.getString("cardBiology", "") ?: ""
- "wp" -> prefs.getString("cardWP", "") ?: ""
- else -> ""
- }
- } catch (e2: StringIndexOutOfBoundsException) {
- colourString = ""
- }
+ colourString = getColourString(holder.mCourse.text.toString())
+ val colourPrefsInt = if (colourString.isNotEmpty()) {
+ prefs.getString("card$colourString", "") ?: ""
+ } else {
+ ""
}
- colour = MiscData.getColourForString(colourString)
+ colour = MiscData.getColourForString(colourPrefsInt)
if (colour != 0) {
holder.mCard.setCardBackgroundColor(ContextCompat.getColor(holder.mCourse.context, colour))
} else {
@@ -133,7 +98,7 @@ class CardAdapter(private var mSubst: List) : RecyclerView.Adapter) : RecyclerView.Adapter R.color.colorTextLight
else -> R.color.colorText
}
- }
- holder.mImageView.setColorFilter(ContextCompat.getColor(holder.mImageView.context, textColor))
- holder.mGroup.setTextColor(ContextCompat.getColor(holder.mImageView.context, textColor))
- holder.mDate.setTextColor(ContextCompat.getColor(holder.mImageView.context, textColor))
- holder.mTime.setTextColor(ContextCompat.getColor(holder.mImageView.context, textColor))
- holder.mCourse.setTextColor(ContextCompat.getColor(holder.mImageView.context, textColor))
- holder.mRoom.setTextColor(ContextCompat.getColor(holder.mImageView.context, textColor))
- holder.mAdditional.setTextColor(ContextCompat.getColor(holder.mImageView.context, textColor))
+ })
+ holder.mImageView.setColorFilter(textColor)
+ holder.mGroup.setTextColor(textColor)
+ holder.mDate.setTextColor(textColor)
+ holder.mTime.setTextColor(textColor)
+ holder.mCourse.setTextColor(textColor)
+ holder.mRoom.setTextColor(textColor)
+ holder.mAdditional.setTextColor(textColor)
}
override fun getItemCount(): Int = mSubst.size
@@ -158,4 +123,49 @@ class CardAdapter(private var mSubst: List) : RecyclerView.Adapter "German"
+ "mat", "map" -> "Maths"
+ "eng", "enp", "ena" -> "English"
+ "spo", "spp", "spth" -> "PhysEd"
+ "pol", "pop" -> "ics"
+ "dar", "dap" -> "Theatre"
+ "phy", "php" -> "Physics"
+ "bio", "bip", "nw1", "nw2", "nw3", "nw4" -> "Biology"
+ "che", "chp" -> "Chemistry"
+ "phi", "psp" -> "Philosophy"
+ "laa", "laf", "lat" -> "Latin"
+ "spa", "spf" -> "Spanish"
+ "fra", "frf", "frz" -> "French"
+ "inf" -> "Compsci"
+ "ges" -> "History"
+ "rel" -> "Religion"
+ "geg" -> "Geography"
+ "kun" -> "Arts"
+ "mus" -> "Music"
+ "tue" -> "Turkish"
+ "chi" -> "Chinese"
+ "gll" -> "GLL"
+ "wat" -> "WAT"
+ "för" -> "Forder"
+ "met", "wpb" -> "WP"
+ else -> ""
+ }
+ } catch (e: StringIndexOutOfBoundsException) {
+ try {
+ colorCheck = course.toLowerCase(Locale.ROOT).substring(0, 2)
+ when (colorCheck) {
+ "nw" -> "Biology"
+ "wp" -> "WP"
+ else -> ""
+ }
+ } catch (e2: StringIndexOutOfBoundsException) {
+ ""
+ }
+ }
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/com/denizd/substitutionplan/DataFetcher.kt b/app/src/main/java/com/denizd/substitutionplan/DataFetcher.kt
index ee2f110..438c39d 100644
--- a/app/src/main/java/com/denizd/substitutionplan/DataFetcher.kt
+++ b/app/src/main/java/com/denizd/substitutionplan/DataFetcher.kt
@@ -15,7 +15,6 @@ import androidx.core.content.ContextCompat
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import com.google.android.material.snackbar.Snackbar
import org.jsoup.Jsoup
-import java.lang.IndexOutOfBoundsException
import kotlin.collections.ArrayList
class DataFetcher(isplan: Boolean, ismenu: Boolean, isjobservice: Boolean, context: Context, application: Application, parentview: View?) : AsyncTask() {
@@ -53,7 +52,7 @@ class DataFetcher(isplan: Boolean, ismenu: Boolean, isjobservice: Boolean, conte
if (menu) {
val docFood = Jsoup.connect(foodUrl).get()
currentFoodTime = docFood.select("h1")[0].text()
- if (currentFoodTime != prefs.getString("timeFood", "")) {
+ if (currentFoodTime != prefs.getString("timeFoodNew", "")) {
val foodRepository = FoodRepository(mApplication)
val foodElements = docFood.select("th")
foodRepository.deleteAll()
@@ -76,14 +75,14 @@ class DataFetcher(isplan: Boolean, ismenu: Boolean, isjobservice: Boolean, conte
}
foodRepository.insert(Food(s, priority))
}
- edit.putString("timeFood", currentFoodTime).apply()
+ edit.putString("timeFoodNew", currentFoodTime).apply()
}
}
if (plan) {
val doc = Jsoup.connect(substUrl).get()
currentTime = doc.select("h1")[0].text()
- if (currentTime != prefs.getString("time", "")) {
+ if (currentTime != prefs.getString("timeNew", "")) {
val substRepo = SubstRepository(mApplication)
val rows = doc.select("tr")
val paragraphs = doc.select("p")
@@ -117,9 +116,7 @@ class DataFetcher(isplan: Boolean, ismenu: Boolean, isjobservice: Boolean, conte
courseS.add(cols[3].text())
roomS.add(cols[4].text())
additionalS.add(cols[5].text())
-
- val drawable = MiscData.getIcon(courseS[i])
- val subst = Subst(drawable, groupS[i], dateS[i], timeS[i], courseS[i],
+ val subst = Subst(groupS[i], dateS[i], timeS[i], courseS[i],
roomS[i], additionalS[i], priority)
priority--
// substViewModel.insertSubst(subst)
@@ -191,7 +188,7 @@ class DataFetcher(isplan: Boolean, ismenu: Boolean, isjobservice: Boolean, conte
manager.notify(1, notification)
}
}
- edit.putString("time", currentTime).apply()
+ edit.putString("timeNew", currentTime).apply()
}
}
diff --git a/app/src/main/java/com/denizd/substitutionplan/Main.kt b/app/src/main/java/com/denizd/substitutionplan/Main.kt
index 4ffce55..0a71013 100644
--- a/app/src/main/java/com/denizd/substitutionplan/Main.kt
+++ b/app/src/main/java/com/denizd/substitutionplan/Main.kt
@@ -107,7 +107,7 @@ class Main : AppCompatActivity(R.layout.app_bar_main) {
if (!prefs.getBoolean("autoRefresh", false) && prefs.getInt("firstTimeOpening", 0) != 0) {
try {
val sb = StringBuilder()
- val updated = sb.append(getText(R.string.lastUpdated)).append(prefs.getString("time", "")).toString()
+ val updated = sb.append(getText(R.string.lastUpdated)).append(prefs.getString("timeNew", "")).toString()
Snackbar.make(contextView, updated, Snackbar.LENGTH_LONG).show()
} catch (e: IllegalArgumentException) {}
@@ -238,7 +238,7 @@ class Main : AppCompatActivity(R.layout.app_bar_main) {
val dialogView = LayoutInflater.from(context).inflate(R.layout.simple_dialog, null)
dialogView.findViewById(R.id.textviewtitle).text = getString(R.string.information)
val sb = StringBuilder()
- val dialogText = sb.append(getText(R.string.lastUpdated)).append((prefs.getString("time", "") ?: "") + ".\n\n").append(prefs.getString("informational", ""))
+ val dialogText = sb.append(getText(R.string.lastUpdated)).append((prefs.getString("timeNew", "") ?: "") + ".\n\n").append(prefs.getString("informational", ""))
dialogView.findViewById(R.id.dialogtext).text = dialogText
dialog.setView(dialogView).show()
}
diff --git a/app/src/main/java/com/denizd/substitutionplan/MiscData.kt b/app/src/main/java/com/denizd/substitutionplan/MiscData.kt
index 9f9d7b9..785e9ec 100644
--- a/app/src/main/java/com/denizd/substitutionplan/MiscData.kt
+++ b/app/src/main/java/com/denizd/substitutionplan/MiscData.kt
@@ -1,9 +1,21 @@
package com.denizd.substitutionplan
import android.content.SharedPreferences
+import java.util.*
object MiscData {
+ val languageIndependentCourses = arrayOf("German", "English", "French", "Spanish", "Latin", "Turkish", "Chinese", "Arts", "Music",
+ "Theatre", "Geography", "History", "Politics", "Philosophy", "Religion", "Maths", "Biology", "Chemistry",
+ "Physics", "CompSci", "PhysEd", "GLL", "WAT", "Forder", "WP")
+ val colourNames = arrayOf("default", "red", "orange", "yellow", "green", "teal", "cyan", "blue", "purple", "pink",
+ "brown", "grey", "pureWhite", "salmon", "tangerine", "banana", "flora", "spindrift", "sky", "orchid",
+ "lavender", "carnation", "brown2", "pureBlack")
+ private val colourIntegers = intArrayOf(0, R.color.bgRed, R.color.bgOrange, R.color.bgYellow, R.color.bgGreen,
+ R.color.bgTeal, R.color.bgCyan, R.color.bgBlue, R.color.bgPurple, R.color.bgPink, R.color.bgBrown, R.color.bgGrey,
+ R.color.bgPureWhite, R.color.bgSalmon, R.color.bgTangerine, R.color.bgBanana, R.color.bgFlora, R.color.bgSpindrift,
+ R.color.bgSky, R.color.bgOrchid, R.color.bgLavender, R.color.bgCarnation, R.color.bgBrown2, R.color.bgPureBlack)
+
fun emoji(unicode: Int): String { return String(Character.toChars(unicode)) }
fun getColourForString(name: String): Int {
@@ -35,8 +47,8 @@ object MiscData {
}
}
- fun getIcon(course: String): Int {
- return with (course.toLowerCase()) {
+ fun getIconForCourse(course: String): Int {
+ return with (course.toLowerCase(Locale.ROOT)) {
when {
contains("deu") || contains("dep") || contains("daz") -> R.drawable.ic_german
contains("mat") || contains("map") -> R.drawable.ic_maths
@@ -69,22 +81,12 @@ object MiscData {
}
fun transferOldColourIntsToString(prefs: SharedPreferences) {
- val colourIntegers = intArrayOf(0, R.color.bgRed, R.color.bgOrange, R.color.bgYellow, R.color.bgGreen,
- R.color.bgTeal, R.color.bgCyan, R.color.bgBlue, R.color.bgPurple, R.color.bgPink, R.color.bgBrown, R.color.bgGrey,
- R.color.bgPureWhite, R.color.bgSalmon, R.color.bgTangerine, R.color.bgBanana, R.color.bgFlora, R.color.bgSpindrift,
- R.color.bgSky, R.color.bgOrchid, R.color.bgLavender, R.color.bgCarnation, R.color.bgBrown2, R.color.bgPureBlack)
- val colourStrings = arrayOf("default", "red", "orange", "yellow", "green", "teal", "cyan", "blue", "purple", "pink",
- "brown", "grey", "pureWhite", "salmon", "tangerine", "banana", "flora", "spindrift", "sky", "orchid",
- "lavender", "carnation", "brown2", "pureBlack")
- val courses = arrayOf("German", "English", "French", "Spanish", "Latin", "Turkish", "Chinese", "Arts", "Music",
- "Theatre", "Geography", "History", "Politics", "Philosophy", "Religion", "Maths", "Biology", "Chemistry",
- "Physics", "CompSci", "PhysEd", "GLL", "WAT", "Forder", "WP")
var colour = ""
val edit = prefs.edit()
- for (course in courses) {
+ for (course in languageIndependentCourses) {
for (i in 0 until colourIntegers.size) {
if (prefs.getInt("bg$course", 0) == colourIntegers[i]) {
- colour = colourStrings[i]
+ colour = colourNames[i]
break
}
colour = ""
diff --git a/app/src/main/java/com/denizd/substitutionplan/SettingsFragment.kt b/app/src/main/java/com/denizd/substitutionplan/SettingsFragment.kt
index f946395..59ef748 100644
--- a/app/src/main/java/com/denizd/substitutionplan/SettingsFragment.kt
+++ b/app/src/main/java/com/denizd/substitutionplan/SettingsFragment.kt
@@ -291,7 +291,7 @@ class SettingsFragment : Fragment(R.layout.content_settings), View.OnClickListen
private fun getColourList(): ArrayList {
val colours = ArrayList()
- val coursesNoLang = arrayOf("German", "English", "French", "Spanish", "Latin", "Turkish", "Chinese", "Arts", "Music", "Theatre", "Geography", "History", "Politics", "Philosophy", "Religion", "Maths", "Biology", "Chemistry", "Physics", "CompSci", "PhysEd", "GLL", "WAT", "Forder", "WP")
+ val coursesNoLang = MiscData.languageIndependentCourses
val courses = arrayOf(getString(R.string.courseDeu), getString(R.string.courseEng), getString(R.string.courseFra), getString(R.string.courseSpa), getString(R.string.courseLat), getString(R.string.courseTue), getString(R.string.courseChi), getString(R.string.courseKun), getString(R.string.courseMus), getString(R.string.courseDar), getString(R.string.courseGeg), getString(R.string.courseGes), getString(R.string.coursePol), getString(R.string.coursePhi), getString(R.string.courseRel), getString(R.string.courseMat), getString(R.string.courseBio), getString(R.string.courseChe), getString(R.string.coursePhy), getString(R.string.courseInf), getString(R.string.courseSpo), getString(R.string.courseGll), getString(R.string.courseWat), getString(R.string.courseFor), getString(R.string.courseWp))
val coursesIcons = intArrayOf(R.drawable.ic_german, R.drawable.ic_english, R.drawable.ic_french, R.drawable.ic_spanish, R.drawable.ic_latin, R.drawable.ic_turkish, R.drawable.ic_chinese, R.drawable.ic_arts, R.drawable.ic_music, R.drawable.ic_drama, R.drawable.ic_geography, R.drawable.ic_history, R.drawable.ic_politics, R.drawable.ic_philosophy, R.drawable.ic_religion, R.drawable.ic_maths, R.drawable.ic_biology, R.drawable.ic_chemistry, R.drawable.ic_physics, R.drawable.ic_compsci, R.drawable.ic_pe, R.drawable.ic_gll, R.drawable.ic_wat, R.drawable.ic_help, R.drawable.ic_pencil)
@@ -322,10 +322,7 @@ class SettingsFragment : Fragment(R.layout.content_settings), View.OnClickListen
picker.findViewById(R.id.spindrift), picker.findViewById(R.id.sky), picker.findViewById(R.id.orchid),
picker.findViewById(R.id.lavender), picker.findViewById(R.id.carnation), picker.findViewById(R.id.brown2),
picker.findViewById(R.id.pureBlack))
-
- val colours = arrayOf("default", "red", "orange", "yellow", "green", "teal", "cyan", "blue", "purple", "pink",
- "brown", "grey", "pureWhite", "salmon", "tangerine", "banana", "flora", "spindrift", "sky", "orchid",
- "lavender", "carnation", "brown2", "pureBlack")
+ val colours = MiscData.colourNames
for (i2 in 0 until buttons.size) {
buttons[i2].setOnClickListener {
@@ -401,6 +398,17 @@ class SettingsFragment : Fragment(R.layout.content_settings), View.OnClickListen
edit.putBoolean("testUrls", currentTest).apply()
Toast.makeText(mContext, "Test URLs set to $currentTest", Toast.LENGTH_LONG).show()
}
+ "_DEVCHANNEL" -> {
+ val subbed = if (prefs.getBoolean("subscribedToFBDebugChannel", false)) {
+ FirebaseMessaging.getInstance().unsubscribeFromTopic("substitutions-debug")
+ "Unsubscribed from"
+ } else {
+ FirebaseMessaging.getInstance().subscribeToTopic("substitutions-debug")
+ "Subscribed to"
+ }
+ edit.putBoolean("subscribedToFBDebugChannel", !prefs.getBoolean("subscribedToFBDebugChannel", false)).apply()
+ Toast.makeText(mContext, "$subbed Firebase development channel", Toast.LENGTH_LONG).show()
+ }
else -> Toast.makeText(mContext, getString(R.string.invalidCode), Toast.LENGTH_LONG).show()
}
}
diff --git a/app/src/main/java/com/denizd/substitutionplan/Subst.kt b/app/src/main/java/com/denizd/substitutionplan/Subst.kt
index 780a887..5841603 100644
--- a/app/src/main/java/com/denizd/substitutionplan/Subst.kt
+++ b/app/src/main/java/com/denizd/substitutionplan/Subst.kt
@@ -4,7 +4,7 @@ import androidx.room.Entity
import androidx.room.PrimaryKey
@Entity(tableName = "subst_table")
-public class Subst(val icon: Int, val group: String, val date: String, val time: String, val course: String, val room: String, val additional: String, val priority: Int) {
+public class Subst(val group: String, val date: String, val time: String, val course: String, val room: String, val additional: String, val priority: Int) {
@PrimaryKey(autoGenerate = true)
var id: Int = 0
diff --git a/app/src/main/java/com/denizd/substitutionplan/SubstDatabase.kt b/app/src/main/java/com/denizd/substitutionplan/SubstDatabase.kt
index e8a19c4..246ac2a 100644
--- a/app/src/main/java/com/denizd/substitutionplan/SubstDatabase.kt
+++ b/app/src/main/java/com/denizd/substitutionplan/SubstDatabase.kt
@@ -5,7 +5,7 @@ import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
-@Database(entities = [Subst::class, Food::class], version = 4, exportSchema = false)
+@Database(entities = [Subst::class, Food::class], version = 5, exportSchema = false)
public abstract class SubstDatabase : RoomDatabase() {
abstract fun substDao(): SubstDao
diff --git a/build.gradle b/build.gradle
index 6110f96..21dd935 100644
--- a/build.gradle
+++ b/build.gradle
@@ -10,7 +10,7 @@ buildscript {
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.5.0-beta02'
+ classpath 'com.android.tools.build:gradle:3.5.0-rc03'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.3.0'
classpath 'io.fabric.tools:gradle:1.31.0'