From eafd8784130f2f650ee5f62e6c8c36be3804005b Mon Sep 17 00:00:00 2001 From: Zakhar Timoshenko Date: Wed, 17 Jan 2024 22:22:37 +0300 Subject: [PATCH] Approximate reading time preview --- .../kotatsu/details/ui/DetailsFragment.kt | 16 +++++++ .../main/res/drawable-v23/tabs_background.xml | 2 +- app/src/main/res/drawable/ic_timelapse.xml | 11 +++++ app/src/main/res/drawable/tabs_background.xml | 2 +- app/src/main/res/layout/fragment_details.xml | 47 ++++++++++++++++++- app/src/main/res/values/plurals.xml | 8 ++++ app/src/main/res/values/strings.xml | 1 + 7 files changed, 84 insertions(+), 3 deletions(-) create mode 100644 app/src/main/res/drawable/ic_timelapse.xml diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsFragment.kt b/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsFragment.kt index af835d174..31b7e39ca 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsFragment.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsFragment.kt @@ -201,10 +201,26 @@ class DetailsFragment : private fun onChaptersChanged(chapters: List?) { val infoLayout = requireViewBinding().infoLayout + val tv = requireViewBinding().approximateReadTime if (chapters.isNullOrEmpty()) { infoLayout.textViewChapters.isVisible = false + tv.text = "..." } else { val count = chapters.countChaptersByBranch() + + // FIXME MAXIMUM HARDCODE!!! To do calculation with user's page read speed and his favourites/history mangas average pages in chapter + // Impossible task, I guess. Good luck on this. + val averageTime: Int = 20 * 10 * (count) // 20 pages, 10 seconds per page + val hours = averageTime / 3600 + val minutes = averageTime % 3600 / 60 + + tv.text = buildString { + append(resources.getQuantityString(R.plurals.hour, hours, hours)) + append(" ") + append(resources.getQuantityString(R.plurals.minute, minutes, minutes)) + } + + // Info infoLayout.textViewChapters.isVisible = true val chaptersText = resources.getQuantityString(R.plurals.chapters, count, count) infoLayout.textViewChapters.text = chaptersText diff --git a/app/src/main/res/drawable-v23/tabs_background.xml b/app/src/main/res/drawable-v23/tabs_background.xml index e70169f07..6af119a77 100644 --- a/app/src/main/res/drawable-v23/tabs_background.xml +++ b/app/src/main/res/drawable-v23/tabs_background.xml @@ -4,7 +4,7 @@ - + diff --git a/app/src/main/res/drawable/ic_timelapse.xml b/app/src/main/res/drawable/ic_timelapse.xml new file mode 100644 index 000000000..0000b4da4 --- /dev/null +++ b/app/src/main/res/drawable/ic_timelapse.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/tabs_background.xml b/app/src/main/res/drawable/tabs_background.xml index b16a0e6d7..ddcb09e18 100644 --- a/app/src/main/res/drawable/tabs_background.xml +++ b/app/src/main/res/drawable/tabs_background.xml @@ -4,7 +4,7 @@ - + diff --git a/app/src/main/res/layout/fragment_details.xml b/app/src/main/res/layout/fragment_details.xml index 4ef675031..0e8af1ad6 100644 --- a/app/src/main/res/layout/fragment_details.xml +++ b/app/src/main/res/layout/fragment_details.xml @@ -139,6 +139,51 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/info_layout" /> + + + + + + + + + + + + + + + app:layout_constraintTop_toBottomOf="@id/approximate_read_time_layout" />