diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/attendance/AttendanceFragment.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/attendance/AttendanceFragment.kt index cdbde507..cde53322 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/attendance/AttendanceFragment.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/attendance/AttendanceFragment.kt @@ -8,6 +8,7 @@ import android.view.MenuItem import android.view.View import android.view.ViewGroup import eu.davidea.flexibleadapter.FlexibleAdapter +import eu.davidea.flexibleadapter.common.FlexibleItemDecoration import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager import eu.davidea.flexibleadapter.items.AbstractFlexibleItem import io.github.wulkanowy.R @@ -66,6 +67,10 @@ class AttendanceFragment : BaseSessionFragment(), AttendanceView, MainView.MainC attendanceRecycler.run { layoutManager = SmoothScrollLinearLayoutManager(context) adapter = attendanceAdapter + addItemDecoration(FlexibleItemDecoration(context) + .withDefaultDivider() + .withDrawDividerOnLastItem(false) + ) } attendanceSwipe.setOnRefreshListener { presenter.onSwipeRefresh() } attendancePreviousButton.setOnClickListener { presenter.onPreviousDay() } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/exam/ExamFragment.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/exam/ExamFragment.kt index dcafeb2e..c433f873 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/exam/ExamFragment.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/exam/ExamFragment.kt @@ -8,6 +8,7 @@ import android.view.View.INVISIBLE import android.view.View.VISIBLE import android.view.ViewGroup import eu.davidea.flexibleadapter.FlexibleAdapter +import eu.davidea.flexibleadapter.common.FlexibleItemDecoration import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager import eu.davidea.flexibleadapter.items.AbstractFlexibleItem import io.github.wulkanowy.R @@ -56,6 +57,10 @@ class ExamFragment : BaseSessionFragment(), ExamView, MainView.MainChildView, Ma examRecycler.run { layoutManager = SmoothScrollLinearLayoutManager(context) adapter = examAdapter + addItemDecoration(FlexibleItemDecoration(context) + .withDefaultDivider(R.layout.item_exam) + .withDrawDividerOnLastItem(false) + ) } examSwipe.setOnRefreshListener { presenter.onSwipeRefresh() } examPreviousButton.setOnClickListener { presenter.onPreviousWeek() } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/grade/details/GradeDetailsFragment.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/grade/details/GradeDetailsFragment.kt index 01b18f4b..7a7ac0b5 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/grade/details/GradeDetailsFragment.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/grade/details/GradeDetailsFragment.kt @@ -78,6 +78,9 @@ class GradeDetailsFragment : BaseSessionFragment(), GradeDetailsView, GradeView. gradeDetailsRecycler.run { layoutManager = SmoothScrollLinearLayoutManager(context) adapter = gradeDetailsAdapter + addItemDecoration(GradeDetailsHeaderItemDecoration(context) + .withDefaultDivider(R.layout.header_grade_details) + ) } gradeDetailsSwipe.setOnRefreshListener { presenter.onSwipeRefresh() } } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/grade/details/GradeDetailsHeader.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/grade/details/GradeDetailsHeader.kt index 0515208e..e5f6e824 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/grade/details/GradeDetailsHeader.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/grade/details/GradeDetailsHeader.kt @@ -38,6 +38,7 @@ class GradeDetailsHeader( gradeHeaderAverage.text = average gradeHeaderNumber.text = number gradeHeaderNote.visibility = if (newGrades > 0) VISIBLE else GONE + gradeHeaderContainer.isEnabled = isExpandable isViewExpandable = isExpandable } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/grade/details/GradeDetailsHeaderItemDecoration.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/grade/details/GradeDetailsHeaderItemDecoration.kt new file mode 100644 index 00000000..39a911e6 --- /dev/null +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/grade/details/GradeDetailsHeaderItemDecoration.kt @@ -0,0 +1,38 @@ +package io.github.wulkanowy.ui.modules.grade.details + +import android.content.Context +import android.graphics.Canvas +import androidx.recyclerview.widget.RecyclerView +import eu.davidea.flexibleadapter.common.FlexibleItemDecoration + +class GradeDetailsHeaderItemDecoration(context: Context) : FlexibleItemDecoration(context) { + + override fun drawVertical(canvas: Canvas, parent: RecyclerView) { + canvas.save() + val left: Int + val right: Int + if (parent.clipToPadding) { + left = parent.paddingLeft + right = parent.width - parent.paddingRight + canvas.clipRect(left, parent.paddingTop, right, + parent.height - parent.paddingBottom) + } else { + left = 0 + right = parent.width + } + + val itemCount = parent.childCount + for (i in 1 until itemCount) { + val child = parent.getChildAt(i) + val viewHolder = parent.getChildViewHolder(child) + if (shouldDrawDivider(viewHolder)) { + parent.getDecoratedBoundsWithMargins(child, mBounds) + val bottom = mBounds.top + Math.round(child.translationY) + val top = bottom - mDivider.intrinsicHeight + mDivider.setBounds(left, top, right, bottom) + mDivider.draw(canvas) + } + } + canvas.restore() + } +} diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/homework/HomeworkFragment.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/homework/HomeworkFragment.kt index 4d9b7470..f2240bf7 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/homework/HomeworkFragment.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/homework/HomeworkFragment.kt @@ -5,6 +5,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import eu.davidea.flexibleadapter.FlexibleAdapter +import eu.davidea.flexibleadapter.common.FlexibleItemDecoration import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager import eu.davidea.flexibleadapter.items.AbstractFlexibleItem import io.github.wulkanowy.R @@ -51,6 +52,10 @@ class HomeworkFragment : BaseSessionFragment(), HomeworkView, MainView.TitledVie homeworkRecycler.run { layoutManager = SmoothScrollLinearLayoutManager(context) adapter = homeworkAdapter + addItemDecoration(FlexibleItemDecoration(context) + .withDefaultDivider() + .withDrawDividerOnLastItem(false) + ) } homeworkSwipe.setOnRefreshListener { presenter.onSwipeRefresh() } homeworkPreviousButton.setOnClickListener { presenter.onPreviousDay() } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/message/tab/MessageTabFragment.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/message/tab/MessageTabFragment.kt index b808ed78..a7173064 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/message/tab/MessageTabFragment.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/message/tab/MessageTabFragment.kt @@ -8,6 +8,7 @@ import android.view.View.INVISIBLE import android.view.View.VISIBLE import android.view.ViewGroup import eu.davidea.flexibleadapter.FlexibleAdapter +import eu.davidea.flexibleadapter.common.FlexibleItemDecoration import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager import eu.davidea.flexibleadapter.items.AbstractFlexibleItem import io.github.wulkanowy.R @@ -66,6 +67,10 @@ class MessageTabFragment : BaseSessionFragment(), MessageTabView, MessageView.Me messageTabRecycler.run { layoutManager = SmoothScrollLinearLayoutManager(context) adapter = tabAdapter + addItemDecoration(FlexibleItemDecoration(context) + .withDefaultDivider() + .withDrawDividerOnLastItem(false) + ) } messageTabSwipe.setOnRefreshListener { presenter.onSwipeRefresh() } } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/note/NoteFragment.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/note/NoteFragment.kt index 9ae8f83a..d5a2b0e6 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/note/NoteFragment.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/note/NoteFragment.kt @@ -7,6 +7,7 @@ import android.view.View.GONE import android.view.View.VISIBLE import android.view.ViewGroup import eu.davidea.flexibleadapter.FlexibleAdapter +import eu.davidea.flexibleadapter.common.FlexibleItemDecoration import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager import eu.davidea.flexibleadapter.items.AbstractFlexibleItem import io.github.wulkanowy.R @@ -53,6 +54,10 @@ class NoteFragment : BaseSessionFragment(), NoteView, MainView.TitledView { noteRecycler.run { layoutManager = SmoothScrollLinearLayoutManager(context) adapter = noteAdapter + addItemDecoration(FlexibleItemDecoration(context) + .withDefaultDivider() + .withDrawDividerOnLastItem(false) + ) } noteSwipe.setOnRefreshListener { presenter.onSwipeRefresh() } } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetableFragment.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetableFragment.kt index 7019415e..1f83dc0a 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetableFragment.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/timetable/TimetableFragment.kt @@ -8,6 +8,7 @@ import android.view.MenuItem import android.view.View import android.view.ViewGroup import eu.davidea.flexibleadapter.FlexibleAdapter +import eu.davidea.flexibleadapter.common.FlexibleItemDecoration import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager import eu.davidea.flexibleadapter.items.AbstractFlexibleItem import io.github.wulkanowy.R @@ -69,6 +70,10 @@ class TimetableFragment : BaseSessionFragment(), TimetableView, MainView.MainChi timetableRecycler.run { layoutManager = SmoothScrollLinearLayoutManager(context) adapter = timetableAdapter + addItemDecoration(FlexibleItemDecoration(context) + .withDefaultDivider() + .withDrawDividerOnLastItem(false) + ) } timetableSwipe.setOnRefreshListener { presenter.onSwipeRefresh() } timetablePreviousButton.setOnClickListener { presenter.onPreviousDay() } diff --git a/app/src/main/res/layout/header_exam.xml b/app/src/main/res/layout/header_exam.xml index 25faab32..e5b5af3d 100644 --- a/app/src/main/res/layout/header_exam.xml +++ b/app/src/main/res/layout/header_exam.xml @@ -1,5 +1,6 @@ + android:paddingBottom="10dp" + tools:context=".ui.modules.exam.ExamHeader"> + android:paddingBottom="10dp" + tools:context=".ui.modules.grade.details.GradeDetailsHeader"> + tools:ignore="contentDescription" /> diff --git a/app/src/main/res/layout/item_account.xml b/app/src/main/res/layout/item_account.xml index bd844b5f..844dd2c9 100644 --- a/app/src/main/res/layout/item_account.xml +++ b/app/src/main/res/layout/item_account.xml @@ -1,6 +1,7 @@ + android:paddingRight="24dp" + tools:context=".ui.modules.account.AccountItem"> + android:paddingBottom="7dp" + tools:context=".ui.modules.attendance.AttendanceItem"> + tools:ignore="all" /> + tools:ignore="all" /> + tools:ignore="contentDescription" /> diff --git a/app/src/main/res/layout/item_exam.xml b/app/src/main/res/layout/item_exam.xml index cd44fb33..801e1dea 100644 --- a/app/src/main/res/layout/item_exam.xml +++ b/app/src/main/res/layout/item_exam.xml @@ -1,9 +1,10 @@ + android:background="?attr/selectableItemBackground" + tools:context=".ui.modules.exam.ExamItem"> + android:paddingLeft="12dp" + android:paddingTop="7dp" + android:paddingEnd="12dp" + android:paddingRight="12dp" + android:paddingBottom="7dp" + tools:context=".ui.modules.grade.details.GradeDetailsItem"> @@ -57,14 +58,14 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/gradeItemValue" - android:layout_marginEnd="20dp" - android:layout_marginLeft="10dp" - android:layout_marginRight="20dp" android:layout_marginStart="10dp" - android:layout_toEndOf="@+id/gradeItemDate" - android:layout_toLeftOf="@id/gradeItemNote" - android:layout_toRightOf="@+id/gradeItemDate" + android:layout_marginLeft="10dp" + android:layout_marginEnd="20dp" + android:layout_marginRight="20dp" android:layout_toStartOf="@id/gradeItemNote" + android:layout_toLeftOf="@id/gradeItemNote" + android:layout_toEndOf="@+id/gradeItemDate" + android:layout_toRightOf="@+id/gradeItemDate" android:text="@string/grade_weight" android:textSize="12sp" /> @@ -76,5 +77,5 @@ android:layout_alignParentRight="true" android:layout_marginTop="10dp" app:srcCompat="@drawable/ic_all_round_note_24dp" - tool:ignore="contentDescription" /> + tools:ignore="contentDescription" /> diff --git a/app/src/main/res/layout/item_homework.xml b/app/src/main/res/layout/item_homework.xml index 5aac8150..4e90a582 100644 --- a/app/src/main/res/layout/item_homework.xml +++ b/app/src/main/res/layout/item_homework.xml @@ -1,9 +1,10 @@ + android:background="?attr/selectableItemBackground" + tools:context=".ui.modules.homework.HomeworkItem"> + android:padding="16dp" + tools:context=".ui.modules.login.studentselect.LoginStudentSelectItem"> + android:paddingBottom="10dp" + tools:context=".ui.modules.message.MessageItem"> + tools:text="@tools:sample/full_names" /> + tools:text="@tools:sample/date/mmddyy" /> + tools:text="@tools:sample/lorem" /> diff --git a/app/src/main/res/layout/item_more.xml b/app/src/main/res/layout/item_more.xml index 0324c1f0..07eb3344 100644 --- a/app/src/main/res/layout/item_more.xml +++ b/app/src/main/res/layout/item_more.xml @@ -1,6 +1,7 @@ + android:paddingBottom="8dp" + tools:context=".ui.modules.more.MoreItem"> + android:background="?attr/selectableItemBackground" + tools:context=".ui.modules.note.NoteItem"> + android:paddingBottom="7dp" + tools:context=".ui.modules.timetable.TimetableItem"> + tools:ignore="all" /> + tools:ignore="RelativeOverlap" /> + tools:ignore="RelativeOverlap" /> + tools:ignore="contentDescription" />