[UI/Timetable] Add option to sync current week.

This commit is contained in:
Kuba Szczodrzyński 2023-03-24 21:46:23 +01:00
parent 21c00bbe53
commit ceca75ef4b
No known key found for this signature in database
GPG Key ID: 43037AC62A600562
4 changed files with 61 additions and 10 deletions

View File

@ -40,6 +40,7 @@ import pl.szczodrzynski.edziennik.data.db.full.EventFull
import pl.szczodrzynski.edziennik.data.db.full.LessonFull import pl.szczodrzynski.edziennik.data.db.full.LessonFull
import pl.szczodrzynski.edziennik.databinding.TimetableDayFragmentBinding import pl.szczodrzynski.edziennik.databinding.TimetableDayFragmentBinding
import pl.szczodrzynski.edziennik.databinding.TimetableLessonBinding import pl.szczodrzynski.edziennik.databinding.TimetableLessonBinding
import pl.szczodrzynski.edziennik.databinding.TimetableNoLessonsBinding
import pl.szczodrzynski.edziennik.databinding.TimetableNoTimetableBinding import pl.szczodrzynski.edziennik.databinding.TimetableNoTimetableBinding
import pl.szczodrzynski.edziennik.ext.Intent import pl.szczodrzynski.edziennik.ext.Intent
import pl.szczodrzynski.edziennik.ext.JsonObject 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.managers.NoteManager
import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Date
import pl.szczodrzynski.edziennik.utils.models.Time import pl.szczodrzynski.edziennik.utils.models.Time
import pl.szczodrzynski.edziennik.utils.models.Week
import pl.szczodrzynski.edziennik.utils.mutableLazy import pl.szczodrzynski.edziennik.utils.mutableLazy
import kotlin.coroutines.CoroutineContext import kotlin.coroutines.CoroutineContext
import kotlin.math.max import kotlin.math.max
@ -182,6 +184,20 @@ class TimetableDayFragment : LazyFragment(), CoroutineScope {
b.root.removeAllViews() b.root.removeAllViews()
b.root.addView(view) b.root.addView(view)
viewsRemoved = true 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 return
} }

View File

@ -27,8 +27,11 @@ import kotlinx.coroutines.launch
import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.App
import pl.szczodrzynski.edziennik.MainActivity import pl.szczodrzynski.edziennik.MainActivity
import pl.szczodrzynski.edziennik.R 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.data.db.enums.MetadataType
import pl.szczodrzynski.edziennik.databinding.FragmentTimetableV2Binding import pl.szczodrzynski.edziennik.databinding.FragmentTimetableV2Binding
import pl.szczodrzynski.edziennik.ext.JsonObject
import pl.szczodrzynski.edziennik.ext.getSchoolYearConstrains import pl.szczodrzynski.edziennik.ext.getSchoolYearConstrains
import pl.szczodrzynski.edziennik.ext.getStudentData import pl.szczodrzynski.edziennik.ext.getStudentData
import pl.szczodrzynski.edziennik.ui.dialogs.settings.TimetableConfigDialog 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) b.tabLayout.setCurrentItem(items.indexOfFirst { it.value == selectedDate?.value ?: today }, false)
activity.navView.bottomSheet.prependItems( 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) BottomSheetPrimaryItem(true)
.withTitle(R.string.timetable_select_day) .withTitle(R.string.timetable_select_day)
.withIcon(SzkolnyFont.Icon.szf_calendar_today_outline) .withIcon(SzkolnyFont.Icon.szf_calendar_today_outline)

View File

@ -2,8 +2,16 @@
~ Copyright (c) Kuba Szczodrzyński 2019-11-15. ~ Copyright (c) Kuba Szczodrzyński 2019-11-15.
--> -->
<androidx.appcompat.widget.AppCompatTextView xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/noTimetableLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
@ -12,3 +20,11 @@
android:text="@string/timetable_no_lessons_title" android:text="@string/timetable_no_lessons_title"
android:textSize="24sp" android:textSize="24sp"
app:drawableTopCompat="@drawable/ic_timetable" /> app:drawableTopCompat="@drawable/ic_timetable" />
<com.google.android.material.button.MaterialButton
android:id="@+id/noLessonsSync"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/refresh" />
</LinearLayout>

View File

@ -1241,7 +1241,7 @@
<string name="timetable_not_public_hint">Skontaktuj się z wychowawcą w celu udostępnienia planu lekcji.</string> <string name="timetable_not_public_hint">Skontaktuj się z wychowawcą w celu udostępnienia planu lekcji.</string>
<string name="timetable_not_public_text">Plan lekcji nie został opublikowany przez szkołę.</string> <string name="timetable_not_public_text">Plan lekcji nie został opublikowany przez szkołę.</string>
<string name="timetable_not_public_title">Brak planu lekcji</string> <string name="timetable_not_public_title">Brak planu lekcji</string>
<string name="timetable_select_day">Wybierz dzień</string> <string name="timetable_select_day">Przejdź do daty</string>
<string name="timetable_syncing_text">Pobieranie planu lekcji na wybrany tydzień…</string> <string name="timetable_syncing_text">Pobieranie planu lekcji na wybrany tydzień…</string>
<string name="timetable_today">Dzisiaj</string> <string name="timetable_today">Dzisiaj</string>
<string name="title_all">Synchronizuj wszystko</string> <string name="title_all">Synchronizuj wszystko</string>
@ -1552,4 +1552,5 @@
<string name="settings_registration_section">Rejestracja</string> <string name="settings_registration_section">Rejestracja</string>
<string name="home_timetable_all_lessons">Wszystkie lekcje:</string> <string name="home_timetable_all_lessons">Wszystkie lekcje:</string>
<string name="agenda_config_subject_important">Wyświetl nazwę przedmiotu zamiast rodzaju</string> <string name="agenda_config_subject_important">Wyświetl nazwę przedmiotu zamiast rodzaju</string>
<string name="menu_timetable_sync">Odśwież wybrany tydzień</string>
</resources> </resources>