diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/App.java b/app/src/main/java/pl/szczodrzynski/edziennik/App.java index 09926597..37b11cc5 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/App.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/App.java @@ -514,7 +514,7 @@ public class App extends androidx.multidex.MultiDexApplication { } } - if (appConfig.lastAppVersion > BuildConfig.VERSION_CODE) { + /*if (appConfig.lastAppVersion > BuildConfig.VERSION_CODE) { BootReceiver br = new BootReceiver(); Intent i = new Intent(); //i.putExtra("UserChecked", true); @@ -522,7 +522,7 @@ public class App extends androidx.multidex.MultiDexApplication { Toast.makeText(mContext, R.string.warning_older_version_running, Toast.LENGTH_LONG).show(); //Toast.makeText(mContext, "Zaktualizuj aplikacjÄ™.", Toast.LENGTH_LONG).show(); //System.exit(0); - } + }*/ if (appConfig == null) { appConfig = new AppConfig(this); diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/Extensions.kt b/app/src/main/java/pl/szczodrzynski/edziennik/Extensions.kt index c6d05ce8..2dff656b 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/Extensions.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/Extensions.kt @@ -6,21 +6,14 @@ import android.content.Context import android.content.pm.PackageManager import android.os.Build import android.os.Bundle -import android.util.Log import androidx.core.app.ActivityCompat import com.google.gson.JsonArray -import com.google.gson.JsonNull import com.google.gson.JsonObject -import im.wangchao.mhttp.Response -import im.wangchao.mhttp.callback.JsonCallbackHandler -import im.wangchao.mhttp.callback.TextCallbackHandler -import im.wangchao.mhttp.internal.exception.ResponseFailException import pl.szczodrzynski.edziennik.datamodels.Profile import pl.szczodrzynski.edziennik.datamodels.Teacher -import pl.szczodrzynski.navlib.R import pl.szczodrzynski.navlib.crc16 import pl.szczodrzynski.navlib.getColorFromRes -import kotlin.contracts.contract + fun List.byId(id: Long) = firstOrNull { it.id == id } fun List.byNameFirstLast(nameFirstLast: String) = firstOrNull { it.name + " " + it.surname == nameFirstLast } @@ -28,11 +21,19 @@ fun List.byNameLastFirst(nameLastFirst: String) = firstOrNull { it.surn fun List.byNameFDotLast(nameFDotLast: String) = firstOrNull { it.name + "." + it.surname == nameFDotLast } fun List.byNameFDotSpaceLast(nameFDotSpaceLast: String) = firstOrNull { it.name + ". " + it.surname == nameFDotSpaceLast } -fun JsonObject.getString(key: String): String? = get(key).let { if (it.isJsonNull) null else it.asString } -fun JsonObject.getInt(key: String): Int? = get(key).let { if (it.isJsonNull) null else it.asInt } -fun JsonObject.getLong(key: String): Long? = get(key).let { if (it.isJsonNull) null else it.asLong } -fun JsonObject.getJsonObject(key: String): JsonObject? = get(key).let { if (it.isJsonNull) null else it.asJsonObject } -fun JsonObject.getJsonArray(key: String): JsonArray? = get(key).let { if (it.isJsonNull) null else it.asJsonArray } +fun JsonObject.getBoolean(key: String): Boolean? = get(key)?.let { if (it.isJsonNull) null else it.asBoolean } +fun JsonObject.getString(key: String): String? = get(key)?.let { if (it.isJsonNull) null else it.asString } +fun JsonObject.getInt(key: String): Int? = get(key)?.let { if (it.isJsonNull) null else it.asInt } +fun JsonObject.getLong(key: String): Long? = get(key)?.let { if (it.isJsonNull) null else it.asLong } +fun JsonObject.getJsonObject(key: String): JsonObject? = get(key)?.let { if (it.isJsonNull) null else it.asJsonObject } +fun JsonObject.getJsonArray(key: String): JsonArray? = get(key)?.let { if (it.isJsonNull) null else it.asJsonArray } + +fun JsonObject.getBoolean(key: String, defaultValue: Boolean): Boolean = get(key)?.let { if (it.isJsonNull) defaultValue else it.asBoolean } ?: defaultValue +fun JsonObject.getString(key: String, defaultValue: String): String = get(key)?.let { if (it.isJsonNull) defaultValue else it.asString } ?: defaultValue +fun JsonObject.getInt(key: String, defaultValue: Int): Int = get(key)?.let { if (it.isJsonNull) defaultValue else it.asInt } ?: defaultValue +fun JsonObject.getLong(key: String, defaultValue: Long): Long = get(key)?.let { if (it.isJsonNull) defaultValue else it.asLong } ?: defaultValue +fun JsonObject.getJsonObject(key: String, defaultValue: JsonObject): JsonObject = get(key)?.let { if (it.isJsonNull) defaultValue else it.asJsonObject } ?: defaultValue +fun JsonObject.getJsonArray(key: String, defaultValue: JsonArray): JsonArray = get(key)?.let { if (it.isJsonNull) defaultValue else it.asJsonArray } ?: defaultValue fun CharSequence?.isNotNullNorEmpty(): Boolean { return this != null && this.isNotEmpty() @@ -53,6 +54,26 @@ fun Bundle?.getString(key: String, defaultValue: String): String { return this?.getString(key, defaultValue) ?: defaultValue } +fun changeStringCase(s: String): String { + val delimiters = " '-/" + val sb = StringBuilder() + var capNext = true + for (ch in s.toCharArray()) { + var c = ch + c = if (capNext) + Character.toUpperCase(c) + else + Character.toLowerCase(c) + sb.append(c) + capNext = delimiters.indexOf(c) >= 0 + } + return sb.toString() +} + +fun buildFullName(firstName: String?, lastName: String?): String { + return changeStringCase("$firstName $lastName").trim() +} + fun colorFromName(context: Context, name: String?): Int { var crc = crc16(name ?: "") crc = (crc and 0xff) or (crc shr 8) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Profile.kt b/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Profile.kt index 1404e8bf..8fa92771 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Profile.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Profile.kt @@ -47,11 +47,26 @@ open class Profile : IDrawerProfile { var empty = true var archived = false + /** + * The name of the student. + * This doesn't change, no matter if it's a parent or student account. + */ var studentNameLong: String? = null var studentNameShort: String? = null + /** + * The student's number in the class register. + */ var studentNumber = -1 var studentData: JsonObject? = null + /** + * A full name of the account owner. + * If null, then it's a student account. + * If not null, then it's a parent account with this name. + */ + @Ignore + var accountNameLong: String? = null + var registration = REGISTRATION_UNSPECIFIED var gradeColorMode = COLOR_MODE_WEIGHTED @@ -61,7 +76,7 @@ open class Profile : IDrawerProfile { var currentSemester = 1 - var attendancePercentage: Float = 0.toFloat() + var attendancePercentage: Float = 0.0f var dateSemester1Start: Date? = null var dateSemester2Start: Date? = null @@ -192,6 +207,12 @@ open class Profile : IDrawerProfile { getImageHolder(imageView.context).applyTo(imageView) } + fun hasStudentData(key: String): Boolean { + if (studentData == null) + return false + return studentData?.has(key) ?: false + } + fun getStudentData(key: String, defaultValue: String?): String? { if (studentData == null) return defaultValue @@ -229,7 +250,7 @@ open class Profile : IDrawerProfile { return element?.asBoolean ?: defaultValue } - fun putStudentData(key: String, value: String) { + fun putStudentData(key: String, value: String?) { if (studentData == null) studentData = JsonObject() studentData!!.addProperty(key, value)