Hide lesson number when is eduOne (#2498)

This commit is contained in:
Rafał Borcz 2024-03-21 21:19:49 +01:00 committed by GitHub
parent c9a42a6cf6
commit 5a77d1e940
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 20 additions and 12 deletions

View File

@ -27,7 +27,7 @@ class TimetableAdapter @Inject constructor() :
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
val inflater = LayoutInflater.from(parent.context) val inflater = LayoutInflater.from(parent.context)
return when (TimetableItemType.values()[viewType]) { return when (TimetableItemType.entries[viewType]) {
TimetableItemType.SMALL -> SmallViewHolder( TimetableItemType.SMALL -> SmallViewHolder(
ItemTimetableSmallBinding.inflate(inflater, parent, false) ItemTimetableSmallBinding.inflate(inflater, parent, false)
) )
@ -79,6 +79,7 @@ class TimetableAdapter @Inject constructor() :
with(binding) { with(binding) {
timetableSmallItemNumber.text = lesson.number.toString() timetableSmallItemNumber.text = lesson.number.toString()
timetableSmallItemNumber.isVisible = item.isLessonNumberVisible
timetableSmallItemSubject.text = lesson.subject timetableSmallItemSubject.text = lesson.subject
timetableSmallItemTimeStart.text = lesson.start.toFormattedString("HH:mm") timetableSmallItemTimeStart.text = lesson.start.toFormattedString("HH:mm")
timetableSmallItemRoom.text = lesson.room timetableSmallItemRoom.text = lesson.room
@ -97,6 +98,7 @@ class TimetableAdapter @Inject constructor() :
with(binding) { with(binding) {
timetableItemNumber.text = lesson.number.toString() timetableItemNumber.text = lesson.number.toString()
timetableItemNumber.isVisible = item.isLessonNumberVisible
timetableItemSubject.text = lesson.subject timetableItemSubject.text = lesson.subject
timetableItemGroup.text = lesson.group timetableItemGroup.text = lesson.group
timetableItemRoom.text = lesson.room timetableItemRoom.text = lesson.room

View File

@ -7,12 +7,14 @@ sealed class TimetableItem(val type: TimetableItemType) {
data class Small( data class Small(
val lesson: Timetable, val lesson: Timetable,
val isLessonNumberVisible: Boolean,
val onClick: (Timetable) -> Unit, val onClick: (Timetable) -> Unit,
) : TimetableItem(TimetableItemType.SMALL) ) : TimetableItem(TimetableItemType.SMALL)
data class Normal( data class Normal(
val lesson: Timetable, val lesson: Timetable,
val showGroupsInPlan: Boolean, val showGroupsInPlan: Boolean,
val isLessonNumberVisible: Boolean,
val timeLeft: TimeLeft?, val timeLeft: TimeLeft?,
val onClick: (Timetable) -> Unit, val onClick: (Timetable) -> Unit,
) : TimetableItem(TimetableItemType.NORMAL) ) : TimetableItem(TimetableItemType.NORMAL)

View File

@ -57,6 +57,7 @@ class TimetablePresenter @Inject constructor(
private var initialDate: LocalDate? = null private var initialDate: LocalDate? = null
private var isWeekendHasLessons: Boolean = false private var isWeekendHasLessons: Boolean = false
private var isEduOne: Boolean = false
var currentDate: LocalDate? = null var currentDate: LocalDate? = null
private set private set
@ -149,6 +150,7 @@ class TimetablePresenter @Inject constructor(
val student = studentRepository.getCurrentStudent() val student = studentRepository.getCurrentStudent()
val semester = semesterRepository.getCurrentSemester(student) val semester = semesterRepository.getCurrentSemester(student)
isEduOne = student.isEduOne
checkInitialAndCurrentDate(semester) checkInitialAndCurrentDate(semester)
timetableRepository.getTimetable( timetableRepository.getTimetable(
student = student, student = student,
@ -234,9 +236,8 @@ class TimetablePresenter @Inject constructor(
if (prefRepository.showWholeClassPlan == TimetableMode.ONLY_CURRENT_GROUP) { if (prefRepository.showWholeClassPlan == TimetableMode.ONLY_CURRENT_GROUP) {
it.isStudentPlan it.isStudentPlan
} else true } else true
}.sortedWith( }
compareBy({ item -> item.number }, { item -> !item.isStudentPlan }) .sortedWith(compareBy({ item -> item.start }, { item -> !item.isStudentPlan }))
)
var prevNum = when (prefRepository.showTimetableGaps) { var prevNum = when (prefRepository.showTimetableGaps) {
BETWEEN_AND_BEFORE_LESSONS -> 0 BETWEEN_AND_BEFORE_LESSONS -> 0
@ -257,13 +258,15 @@ class TimetablePresenter @Inject constructor(
lesson = it, lesson = it,
showGroupsInPlan = prefRepository.showGroupsInPlan, showGroupsInPlan = prefRepository.showGroupsInPlan,
timeLeft = filteredItems.getTimeLeftForLesson(it, i), timeLeft = filteredItems.getTimeLeftForLesson(it, i),
onClick = ::onTimetableItemSelected onClick = ::onTimetableItemSelected,
isLessonNumberVisible = !isEduOne
) )
add(normalLesson) add(normalLesson)
} else { } else {
val smallLesson = TimetableItem.Small( val smallLesson = TimetableItem.Small(
lesson = it, lesson = it,
onClick = ::onTimetableItemSelected onClick = ::onTimetableItemSelected,
isLessonNumberVisible = !isEduOne
) )
add(smallLesson) add(smallLesson)
} }

View File

@ -46,11 +46,8 @@ class TimetableWidgetFactory(
) : RemoteViewsService.RemoteViewsFactory { ) : RemoteViewsService.RemoteViewsFactory {
private var items = emptyList<TimetableWidgetItem>() private var items = emptyList<TimetableWidgetItem>()
private var timetableCanceledColor: Int? = null private var timetableCanceledColor: Int? = null
private var textColor: Int? = null private var textColor: Int? = null
private var timetableChangeColor: Int? = null private var timetableChangeColor: Int? = null
override fun getLoadingView() = null override fun getLoadingView() = null
@ -81,7 +78,7 @@ class TimetableWidgetFactory(
val lessons = getLessons(student, semester, date) val lessons = getLessons(student, semester, date)
val lastSync = timetableRepository.getLastRefreshTimestamp(semester, date, date) val lastSync = timetableRepository.getLastRefreshTimestamp(semester, date, date)
createItems(lessons, lastSync) createItems(lessons, lastSync, !student.isEduOne)
} }
.onFailure { .onFailure {
items = listOf(TimetableWidgetItem.Error(it)) items = listOf(TimetableWidgetItem.Error(it))
@ -106,12 +103,13 @@ class TimetableWidgetFactory(
): List<Timetable> { ): List<Timetable> {
val timetable = timetableRepository.getTimetable(student, semester, date, date, false) val timetable = timetableRepository.getTimetable(student, semester, date, date, false)
val lessons = timetable.toFirstResult().dataOrThrow.lessons val lessons = timetable.toFirstResult().dataOrThrow.lessons
return lessons.sortedBy { it.number } return lessons.sortedBy { it.start }
} }
private fun createItems( private fun createItems(
lessons: List<Timetable>, lessons: List<Timetable>,
lastSync: Instant?, lastSync: Instant?,
isEduOne: Boolean
): List<TimetableWidgetItem> { ): List<TimetableWidgetItem> {
var prevNum = when (prefRepository.showTimetableGaps) { var prevNum = when (prefRepository.showTimetableGaps) {
BETWEEN_AND_BEFORE_LESSONS -> 0 BETWEEN_AND_BEFORE_LESSONS -> 0
@ -127,7 +125,7 @@ class TimetableWidgetFactory(
) )
add(emptyItem) add(emptyItem)
} }
add(TimetableWidgetItem.Normal(it)) add(TimetableWidgetItem.Normal(it, isEduOne))
prevNum = it.number prevNum = it.number
} }
add(TimetableWidgetItem.Synchronized(lastSync ?: Instant.MIN)) add(TimetableWidgetItem.Synchronized(lastSync ?: Instant.MIN))
@ -155,9 +153,11 @@ class TimetableWidgetFactory(
val lessonStartTime = lesson.start.toFormattedString(TIME_FORMAT_STYLE) val lessonStartTime = lesson.start.toFormattedString(TIME_FORMAT_STYLE)
val lessonEndTime = lesson.end.toFormattedString(TIME_FORMAT_STYLE) val lessonEndTime = lesson.end.toFormattedString(TIME_FORMAT_STYLE)
val lessonNumberVisibility = if (item.isLessonNumberVisible) VISIBLE else GONE
val remoteViews = RemoteViews(context.packageName, R.layout.item_widget_timetable).apply { val remoteViews = RemoteViews(context.packageName, R.layout.item_widget_timetable).apply {
setTextViewText(R.id.timetableWidgetItemNumber, lesson.number.toString()) setTextViewText(R.id.timetableWidgetItemNumber, lesson.number.toString())
setViewVisibility(R.id.timetableWidgetItemNumber, lessonNumberVisibility)
setTextViewText(R.id.timetableWidgetItemTimeStart, lessonStartTime) setTextViewText(R.id.timetableWidgetItemTimeStart, lessonStartTime)
setTextViewText(R.id.timetableWidgetItemTimeFinish, lessonEndTime) setTextViewText(R.id.timetableWidgetItemTimeFinish, lessonEndTime)
setTextViewText(R.id.timetableWidgetItemSubject, lesson.subject) setTextViewText(R.id.timetableWidgetItemSubject, lesson.subject)

View File

@ -7,6 +7,7 @@ sealed class TimetableWidgetItem(val type: TimetableWidgetItemType) {
data class Normal( data class Normal(
val lesson: Timetable, val lesson: Timetable,
val isLessonNumberVisible: Boolean,
) : TimetableWidgetItem(TimetableWidgetItemType.NORMAL) ) : TimetableWidgetItem(TimetableWidgetItemType.NORMAL)
data class Empty( data class Empty(