From ceca75ef4bd8683a49471039db2ed23c8e7b0bba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kuba=20Szczodrzy=C5=84ski?= Date: Fri, 24 Mar 2023 21:46:23 +0100 Subject: [PATCH] [UI/Timetable] Add option to sync current week. --- .../ui/timetable/TimetableDayFragment.kt | 16 +++++++++ .../ui/timetable/TimetableFragment.kt | 18 ++++++++++ .../main/res/layout/timetable_no_lessons.xml | 34 ++++++++++++++----- app/src/main/res/values/strings.xml | 3 +- 4 files changed, 61 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/timetable/TimetableDayFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/timetable/TimetableDayFragment.kt index b65f4319..d2016b29 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/timetable/TimetableDayFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/timetable/TimetableDayFragment.kt @@ -40,6 +40,7 @@ import pl.szczodrzynski.edziennik.data.db.full.EventFull import pl.szczodrzynski.edziennik.data.db.full.LessonFull import pl.szczodrzynski.edziennik.databinding.TimetableDayFragmentBinding import pl.szczodrzynski.edziennik.databinding.TimetableLessonBinding +import pl.szczodrzynski.edziennik.databinding.TimetableNoLessonsBinding import pl.szczodrzynski.edziennik.databinding.TimetableNoTimetableBinding import pl.szczodrzynski.edziennik.ext.Intent import pl.szczodrzynski.edziennik.ext.JsonObject @@ -63,6 +64,7 @@ import pl.szczodrzynski.edziennik.utils.Colors import pl.szczodrzynski.edziennik.utils.managers.NoteManager import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time +import pl.szczodrzynski.edziennik.utils.models.Week import pl.szczodrzynski.edziennik.utils.mutableLazy import kotlin.coroutines.CoroutineContext import kotlin.math.max @@ -182,6 +184,20 @@ class TimetableDayFragment : LazyFragment(), CoroutineScope { b.root.removeAllViews() b.root.addView(view) viewsRemoved = true + + val b = TimetableNoLessonsBinding.bind(view) + val weekStart = date.weekStart.stringY_m_d + b.noLessonsSync.onClick { + it.isEnabled = false + EdziennikTask.syncProfile( + profileId = App.profileId, + featureTypes = setOf(FeatureType.TIMETABLE), + arguments = JsonObject( + "weekStart" to weekStart + ) + ).enqueue(activity) + } + b.noLessonsSync.isVisible = date.weekDay !in Week.SATURDAY..Week.SUNDAY } return } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/timetable/TimetableFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/timetable/TimetableFragment.kt index b9e6c5f7..2e037526 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/timetable/TimetableFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/timetable/TimetableFragment.kt @@ -27,8 +27,11 @@ import kotlinx.coroutines.launch import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.MainActivity import pl.szczodrzynski.edziennik.R +import pl.szczodrzynski.edziennik.data.api.edziennik.EdziennikTask +import pl.szczodrzynski.edziennik.data.db.enums.FeatureType import pl.szczodrzynski.edziennik.data.db.enums.MetadataType import pl.szczodrzynski.edziennik.databinding.FragmentTimetableV2Binding +import pl.szczodrzynski.edziennik.ext.JsonObject import pl.szczodrzynski.edziennik.ext.getSchoolYearConstrains import pl.szczodrzynski.edziennik.ext.getStudentData import pl.szczodrzynski.edziennik.ui.dialogs.settings.TimetableConfigDialog @@ -178,6 +181,21 @@ class TimetableFragment : Fragment(), CoroutineScope { b.tabLayout.setCurrentItem(items.indexOfFirst { it.value == selectedDate?.value ?: today }, false) activity.navView.bottomSheet.prependItems( + BottomSheetPrimaryItem(true) + .withTitle(R.string.menu_timetable_sync) + .withIcon(CommunityMaterial.Icon.cmd_calendar_sync_outline) + .withOnClickListener { + activity.bottomSheet.close() + val date = pageSelection ?: Date.getToday() + val weekStart = date.weekStart.stringY_m_d + EdziennikTask.syncProfile( + profileId = App.profileId, + featureTypes = setOf(FeatureType.TIMETABLE), + arguments = JsonObject( + "weekStart" to weekStart + ) + ).enqueue(activity) + }, BottomSheetPrimaryItem(true) .withTitle(R.string.timetable_select_day) .withIcon(SzkolnyFont.Icon.szf_calendar_today_outline) diff --git a/app/src/main/res/layout/timetable_no_lessons.xml b/app/src/main/res/layout/timetable_no_lessons.xml index e113ad35..60e98a82 100644 --- a/app/src/main/res/layout/timetable_no_lessons.xml +++ b/app/src/main/res/layout/timetable_no_lessons.xml @@ -2,13 +2,29 @@ ~ Copyright (c) Kuba Szczodrzyński 2019-11-15. --> - \ No newline at end of file + android:id="@+id/noTimetableLayout" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:gravity="center" + android:orientation="vertical"> + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4620f9b2..e4204e21 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1241,7 +1241,7 @@ Skontaktuj się z wychowawcą w celu udostępnienia planu lekcji. Plan lekcji nie został opublikowany przez szkołę. Brak planu lekcji - Wybierz dzień + Przejdź do daty Pobieranie planu lekcji na wybrany tydzień… Dzisiaj Synchronizuj wszystko @@ -1552,4 +1552,5 @@ Rejestracja Wszystkie lekcje: Wyświetl nazwę przedmiotu zamiast rodzaju + Odśwież wybrany tydzień