From 7f1f2d0039bb10e2709c1a43a8f87a22a85f7ec1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kuba=20Szczodrzy=C5=84ski?= Date: Mon, 6 Jan 2020 17:30:38 +0100 Subject: [PATCH] [API/Mobidziennik] Implement Lesson Ranges. Make Cancelled lesson use old* variables. --- .../pl/szczodrzynski/edziennik/Extensions.kt | 27 +++- .../data/api/MobidziennikApiTimetable.kt | 124 ++++-------------- 2 files changed, 51 insertions(+), 100 deletions(-) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/Extensions.kt b/app/src/main/java/pl/szczodrzynski/edziennik/Extensions.kt index 51289c6d..7633756a 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/Extensions.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/Extensions.kt @@ -16,12 +16,10 @@ import android.text.* import android.text.style.ForegroundColorSpan import android.text.style.StrikethroughSpan import android.text.style.StyleSpan +import android.util.* import android.util.Base64 import android.util.Base64.NO_WRAP import android.util.Base64.encodeToString -import android.util.LongSparseArray -import android.util.SparseArray -import android.util.TypedValue import android.view.View import android.widget.CheckBox import android.widget.CompoundButton @@ -55,6 +53,7 @@ import java.util.* import java.util.zip.CRC32 import javax.crypto.Mac import javax.crypto.spec.SecretKeySpec +import kotlin.Pair fun List.byId(id: Long) = firstOrNull { it.id == id } @@ -284,6 +283,13 @@ fun LongSparseArray.values(): List { return result } +fun SparseArray<*>.keys(): List { + val result = mutableListOf() + forEach { key, _ -> + result += key + } + return result +} fun SparseArray.values(): List { val result = mutableListOf() forEach { _, value -> @@ -292,6 +298,21 @@ fun SparseArray.values(): List { return result } +fun SparseIntArray.keys(): List { + val result = mutableListOf() + forEach { key, _ -> + result += key + } + return result +} +fun SparseIntArray.values(): List { + val result = mutableListOf() + forEach { _, value -> + result += value + } + return result +} + fun List>.keys(): List { val result = mutableListOf() forEach { pair -> diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/api/MobidziennikApiTimetable.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/api/MobidziennikApiTimetable.kt index 502c90e4..9afcd453 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/api/MobidziennikApiTimetable.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/api/MobidziennikApiTimetable.kt @@ -4,11 +4,15 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.data.api +import android.util.SparseArray +import androidx.core.util.set import pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.DataMobidziennik import pl.szczodrzynski.edziennik.data.api.models.DataRemoveModel +import pl.szczodrzynski.edziennik.data.db.modules.lessonrange.LessonRange import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata import pl.szczodrzynski.edziennik.data.db.modules.timetable.Lesson import pl.szczodrzynski.edziennik.fixName +import pl.szczodrzynski.edziennik.keys import pl.szczodrzynski.edziennik.singleOrNull import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time @@ -28,11 +32,16 @@ class MobidziennikApiTimetable(val data: DataMobidziennik, rows: List) { dataStart.stepForward(0, 0, 1) } + val lessonRanges = SparseArray