diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetableItem.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetableItem.kt index 8dd48abd..5b35b85d 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetableItem.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetableItem.kt @@ -5,6 +5,7 @@ import android.graphics.Paint import android.view.View import android.view.View.GONE import android.view.View.VISIBLE +import android.widget.TextView import eu.davidea.flexibleadapter.FlexibleAdapter import eu.davidea.flexibleadapter.items.AbstractFlexibleItem import eu.davidea.flexibleadapter.items.IFlexible @@ -32,31 +33,26 @@ class TimetableItem(val lesson: Timetable, private val showWholeClassPlan: Strin @SuppressLint("SetTextI18n") override fun bindViewHolder(adapter: FlexibleAdapter>, holder: ViewHolder, position: Int, payloads: MutableList?) { when (itemViewType) { - R.layout.item_timetable_small -> { - with(holder) { - timetableSmallItemNumber.text = lesson.number.toString() - timetableSmallItemSubject.text = lesson.subject - timetableSmallItemTimeStart.text = lesson.start.toFormattedString("HH:mm") - timetableSmallItemRoom.text = lesson.room - timetableSmallItemTeacher.text = lesson.teacher - } - } - R.layout.item_timetable -> { - updateFields(holder) - - with(holder) { - timetableItemSubject.paintFlags = - if (lesson.canceled) timetableItemSubject.paintFlags or Paint.STRIKE_THRU_TEXT_FLAG - else timetableItemSubject.paintFlags and Paint.STRIKE_THRU_TEXT_FLAG.inv() - } - - updateDescription(holder) - updateColors(holder) - } + R.layout.item_timetable_small -> bindSmallView(holder) + R.layout.item_timetable -> bindNormalView(holder) } } - private fun updateFields(holder: ViewHolder) { + private fun bindSmallView(holder: ViewHolder) { + with(holder) { + timetableSmallItemNumber.text = lesson.number.toString() + timetableSmallItemSubject.text = lesson.subject + timetableSmallItemTimeStart.text = lesson.start.toFormattedString("HH:mm") + timetableSmallItemRoom.text = lesson.room + timetableSmallItemTeacher.text = lesson.teacher + + updateSubjectStyle(timetableSmallItemSubject) + updateSmallDescription(this) + updateSmallColors(this) + } + } + + private fun bindNormalView(holder: ViewHolder) { with(holder) { timetableItemNumber.text = lesson.number.toString() timetableItemSubject.text = lesson.subject @@ -64,74 +60,114 @@ class TimetableItem(val lesson: Timetable, private val showWholeClassPlan: Strin timetableItemTeacher.text = lesson.teacher timetableItemTimeStart.text = lesson.start.toFormattedString("HH:mm") timetableItemTimeFinish.text = lesson.end.toFormattedString("HH:mm") + + updateSubjectStyle(timetableItemSubject) + updateNormalDescription(this) + updateNormalColors(this) } } - private fun updateDescription(holder: ViewHolder) { + private fun updateSubjectStyle(subjectView: TextView) { + subjectView.paintFlags = if (lesson.canceled) subjectView.paintFlags or Paint.STRIKE_THRU_TEXT_FLAG + else subjectView.paintFlags and Paint.STRIKE_THRU_TEXT_FLAG.inv() + } + + private fun updateSmallDescription(holder: ViewHolder) { with(holder) { if (lesson.info.isNotBlank() && !lesson.changes) { - updateDescriptionNoChanges(this) + timetableSmallItemDescription.visibility = VISIBLE + timetableSmallItemDescription.text = lesson.info + + timetableSmallItemRoom.visibility = GONE + timetableSmallItemTeacher.visibility = GONE + + timetableSmallItemDescription.setTextColor(holder.view.context.getThemeAttrColor( + if (lesson.canceled) R.attr.colorPrimary + else R.attr.colorTimetableChange + )) + } else { + timetableSmallItemDescription.visibility = GONE + timetableSmallItemRoom.visibility = VISIBLE + timetableSmallItemTeacher.visibility = VISIBLE + } + } + } + + private fun updateNormalDescription(holder: ViewHolder) { + with(holder) { + if (lesson.info.isNotBlank() && !lesson.changes) { + timetableItemDescription.visibility = VISIBLE + timetableItemDescription.text = lesson.info + + timetableItemRoom.visibility = GONE + timetableItemTeacher.visibility = GONE + + timetableItemDescription.setTextColor(holder.view.context.getThemeAttrColor( + if (lesson.canceled) R.attr.colorPrimary + else R.attr.colorTimetableChange + )) } else { timetableItemDescription.visibility = GONE - timetableItemRoom.visibility = VISIBLE timetableItemTeacher.visibility = VISIBLE } } } - private fun updateDescriptionNoChanges(holder: ViewHolder) { - with(holder) { - timetableItemDescription.visibility = VISIBLE - timetableItemDescription.text = lesson.info - - timetableItemRoom.visibility = GONE - timetableItemTeacher.visibility = GONE - - timetableItemDescription.setTextColor(holder.view.context.getThemeAttrColor( - if (lesson.canceled) R.attr.colorPrimary - else R.attr.colorTimetableChange - )) - } - } - - private fun updateColors(holder: ViewHolder) { + private fun updateSmallColors(holder: ViewHolder) { with(holder) { if (lesson.canceled) { - timetableItemNumber.setTextColor(holder.view.context.getThemeAttrColor(R.attr.colorPrimary)) - timetableItemSubject.setTextColor(holder.view.context.getThemeAttrColor(R.attr.colorPrimary)) + updateNumberAndSubjectCanceledColor(timetableSmallItemNumber, timetableSmallItemSubject) } else { - updateNumberColor(this) - updateSubjectColor(this) - updateRoomColor(this) - updateTeacherColor(this) + updateNumberColor(timetableSmallItemNumber) + updateSubjectColor(timetableSmallItemSubject) + updateRoomColor(timetableSmallItemRoom) + updateTeacherColor(timetableSmallItemTeacher) } } } - private fun updateNumberColor(holder: ViewHolder) { - holder.timetableItemNumber.setTextColor(holder.view.context.getThemeAttrColor( + private fun updateNormalColors(holder: ViewHolder) { + with(holder) { + if (lesson.canceled) { + updateNumberAndSubjectCanceledColor(timetableItemNumber, timetableItemSubject) + } else { + updateNumberColor(timetableItemNumber) + updateSubjectColor(timetableItemSubject) + updateRoomColor(timetableItemRoom) + updateTeacherColor(timetableItemTeacher) + } + } + } + + private fun updateNumberAndSubjectCanceledColor(numberView: TextView, subjectView: TextView) { + numberView.setTextColor(numberView.context.getThemeAttrColor(R.attr.colorPrimary)) + subjectView.setTextColor(subjectView.context.getThemeAttrColor(R.attr.colorPrimary)) + } + + private fun updateNumberColor(numberView: TextView) { + numberView.setTextColor(numberView.context.getThemeAttrColor( if (lesson.changes || lesson.info.isNotBlank()) R.attr.colorTimetableChange else android.R.attr.textColorPrimary )) } - private fun updateSubjectColor(holder: ViewHolder) { - holder.timetableItemSubject.setTextColor(holder.view.context.getThemeAttrColor( + private fun updateSubjectColor(subjectView: TextView) { + subjectView.setTextColor(subjectView.context.getThemeAttrColor( if (lesson.subjectOld.isNotBlank() && lesson.subjectOld != lesson.subject) R.attr.colorTimetableChange else android.R.attr.textColorPrimary )) } - private fun updateRoomColor(holder: ViewHolder) { - holder.timetableItemRoom.setTextColor(holder.view.context.getThemeAttrColor( + private fun updateRoomColor(roomView: TextView) { + roomView.setTextColor(roomView.context.getThemeAttrColor( if (lesson.roomOld.isNotBlank() && lesson.roomOld != lesson.room) R.attr.colorTimetableChange else android.R.attr.textColorSecondary )) } - private fun updateTeacherColor(holder: ViewHolder) { - holder.timetableItemTeacher.setTextColor(holder.view.context.getThemeAttrColor( + private fun updateTeacherColor(teacherTextView: TextView) { + teacherTextView.setTextColor(teacherTextView.context.getThemeAttrColor( if (lesson.teacherOld.isNotBlank() && lesson.teacherOld != lesson.teacher) R.attr.colorTimetableChange else android.R.attr.textColorSecondary )) @@ -153,7 +189,8 @@ class TimetableItem(val lesson: Timetable, private val showWholeClassPlan: Strin return result } - class ViewHolder(val view: View, adapter: FlexibleAdapter<*>) : FlexibleViewHolder(view, adapter), LayoutContainer { + class ViewHolder(val view: View, adapter: FlexibleAdapter<*>) : + FlexibleViewHolder(view, adapter), LayoutContainer { override val containerView: View get() = contentView } diff --git a/app/src/main/res/layout/item_timetable_small.xml b/app/src/main/res/layout/item_timetable_small.xml index 39e84ae0..7a5ab033 100644 --- a/app/src/main/res/layout/item_timetable_small.xml +++ b/app/src/main/res/layout/item_timetable_small.xml @@ -24,11 +24,11 @@ android:layout_alignTop="@id/timetableSmallItemNumber" android:layout_marginStart="8dp" android:layout_marginLeft="8dp" + android:layout_marginTop="1dp" android:layout_toEndOf="@id/timetableSmallItemNumber" android:layout_toRightOf="@id/timetableSmallItemNumber" - android:maxLines="1" android:textColor="?android:textColorSecondary" - android:textSize="15sp" + android:textSize="13sp" tools:text="11:11" /> - + android:textSize="13sp" + tools:text="Agata" /> + + diff --git a/app/src/main/res/layout/item_widget_timetable_small.xml b/app/src/main/res/layout/item_widget_timetable_small.xml index fb75a751..61d03725 100644 --- a/app/src/main/res/layout/item_widget_timetable_small.xml +++ b/app/src/main/res/layout/item_widget_timetable_small.xml @@ -13,6 +13,7 @@ + - + tools:text="Agata" /> + android:layout_marginStart="10dp" + android:layout_marginLeft="10dp" + android:layout_marginEnd="10dp" + android:layout_marginRight="10dp" + android:ellipsize="end" + android:maxLines="1" + android:singleLine="true" + android:textColor="@android:color/black" + android:textSize="15sp" + android:visibility="visible" + tools:text="@tools:sample/lorem/random" /> - + tools:text="Agata" /> + android:layout_marginStart="10dp" + android:layout_marginLeft="10dp" + android:layout_marginEnd="10dp" + android:layout_marginRight="10dp" + android:ellipsize="end" + android:maxLines="1" + android:singleLine="true" + android:textColor="@android:color/white" + android:textSize="15sp" + android:visibility="visible" + tools:text="@tools:sample/lorem/random" />