From 12c0c6f2ec560603b1110de221fe7a2e4ca8b2d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kuba=20Szczodrzy=C5=84ski?= Date: Mon, 26 Dec 2022 14:43:42 +0100 Subject: [PATCH] [UI] Always show event subject dropdown for university school. --- app/build.gradle | 1 + .../pl/szczodrzynski/edziennik/config/AppData.kt | 1 + .../edziennik/data/db/dao/ProfileDao.kt | 3 +++ .../szczodrzynski/edziennik/ext/ViewExtensions.kt | 10 ++++++++++ .../edziennik/ui/event/EventManualDialog.kt | 13 +++++++++++++ app/src/main/res/layout/dialog_event_manual_v2.xml | 3 +++ app/src/main/res/raw/app_data.json | 6 ++++-- 7 files changed, 35 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index c6e8ef86..0ceae1a1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -156,6 +156,7 @@ dependencies { implementation "androidx.navigation:navigation-fragment-ktx:2.5.2" implementation "androidx.recyclerview:recyclerview:1.2.1" implementation "androidx.room:room-runtime:2.4.3" + implementation "androidx.room:room-ktx:2.4.3" implementation "androidx.work:work-runtime-ktx:2.7.1" kapt "androidx.room:room-compiler:2.4.3" diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/config/AppData.kt b/app/src/main/java/pl/szczodrzynski/edziennik/config/AppData.kt index b2aa8797..a0fa7c27 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/config/AppData.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/config/AppData.kt @@ -59,6 +59,7 @@ data class AppData( val lessonHeight: Int, val enableMarkAsReadAnnouncements: Boolean, val enableNoticePoints: Boolean, + val eventManualShowSubjectDropdown: Boolean, ) data class EventType( diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/dao/ProfileDao.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/dao/ProfileDao.kt index ef5a3655..f83a8e76 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/dao/ProfileDao.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/dao/ProfileDao.kt @@ -28,6 +28,9 @@ interface ProfileDao { @Query("SELECT * FROM profiles WHERE profileId = :profileId") fun getByIdNow(profileId: Int): Profile? + @Query("SELECT * FROM profiles WHERE profileId = :profileId") + suspend fun getByIdSuspend(profileId: Int): Profile? + @get:Query("SELECT * FROM profiles WHERE profileId >= 0 ORDER BY profileId") val all: LiveData> diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ext/ViewExtensions.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ext/ViewExtensions.kt index 3a0468ef..ddf49975 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ext/ViewExtensions.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ext/ViewExtensions.kt @@ -8,6 +8,7 @@ import android.content.Context import android.content.res.Resources import android.graphics.Rect import android.view.View +import android.view.ViewGroup import android.view.WindowManager import android.widget.* import androidx.annotation.StringRes @@ -161,3 +162,12 @@ val SwipeRefreshLayout.onScrollListener: RecyclerView.OnScrollListener } } +fun View.removeFromParent() { + (parent as? ViewGroup)?.removeView(this) +} + +fun View.appendView(child: View) { + val parent = parent as? ViewGroup ?: return + val index = parent.indexOfChild(this) + parent.addView(child, index + 1) +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/event/EventManualDialog.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/event/EventManualDialog.kt index 1ba200a8..49553e9a 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/event/EventManualDialog.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/event/EventManualDialog.kt @@ -19,7 +19,9 @@ import kotlinx.coroutines.withContext import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode +import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.R +import pl.szczodrzynski.edziennik.config.AppData import pl.szczodrzynski.edziennik.data.api.edziennik.EdziennikTask import pl.szczodrzynski.edziennik.data.api.events.ApiTaskAllFinishedEvent import pl.szczodrzynski.edziennik.data.api.events.ApiTaskErrorEvent @@ -35,9 +37,11 @@ import pl.szczodrzynski.edziennik.data.db.full.EventFull import pl.szczodrzynski.edziennik.data.db.full.LessonFull import pl.szczodrzynski.edziennik.databinding.DialogEventManualV2Binding import pl.szczodrzynski.edziennik.ext.JsonObject +import pl.szczodrzynski.edziennik.ext.appendView import pl.szczodrzynski.edziennik.ext.getStudentData import pl.szczodrzynski.edziennik.ext.onChange import pl.szczodrzynski.edziennik.ext.onClick +import pl.szczodrzynski.edziennik.ext.removeFromParent import pl.szczodrzynski.edziennik.ext.setText import pl.szczodrzynski.edziennik.ext.setTintColor import pl.szczodrzynski.edziennik.ui.dialogs.base.BindingDialog @@ -117,6 +121,15 @@ class EventManualDialog( } override suspend fun onShow() { + val data = withContext(Dispatchers.IO) { + val profile = app.db.profileDao().getByIdSuspend(profileId) ?: return@withContext null + AppData.get(profile.loginStoreType) + } + if (data?.uiConfig?.eventManualShowSubjectDropdown == true) { + b.subjectDropdownLayout.removeFromParent() + b.timeDropdownLayout.appendView(b.subjectDropdownLayout) + } + b.showMore.onClick { // TODO iconics is broken it.apply { refreshDrawableState() diff --git a/app/src/main/res/layout/dialog_event_manual_v2.xml b/app/src/main/res/layout/dialog_event_manual_v2.xml index e8451616..7d5bda4f 100644 --- a/app/src/main/res/layout/dialog_event_manual_v2.xml +++ b/app/src/main/res/layout/dialog_event_manual_v2.xml @@ -13,6 +13,7 @@ android:layout_height="match_parent">