From be0c8f2c964fecdff19fef9cb8a53c64957663c4 Mon Sep 17 00:00:00 2001 From: Zakhar Timoshenko Date: Sun, 3 Oct 2021 20:13:05 +0300 Subject: [PATCH] Add manga status label to details screen --- .../kotatsu/details/ui/DetailsFragment.kt | 31 ++++++++++++++++++- .../main/res/drawable/ic_state_finished.xml | 5 +++ .../main/res/drawable/ic_state_ongoing.xml | 6 ++++ .../main/res/drawable/ic_state_unknown.xml | 5 +++ .../layout-w600dp-land/fragment_details.xml | 17 +++++++++- .../layout-w600dp-port/fragment_details.xml | 17 +++++++++- app/src/main/res/layout/fragment_details.xml | 17 +++++++++- app/src/main/res/values-ru/strings.xml | 3 ++ app/src/main/res/values/strings.xml | 3 ++ 9 files changed, 100 insertions(+), 4 deletions(-) create mode 100644 app/src/main/res/drawable/ic_state_finished.xml create mode 100644 app/src/main/res/drawable/ic_state_ongoing.xml create mode 100644 app/src/main/res/drawable/ic_state_unknown.xml diff --git a/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsFragment.kt b/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsFragment.kt index a427f2b3e..bf43e2220 100644 --- a/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsFragment.kt @@ -5,6 +5,7 @@ import android.text.Spanned import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.core.content.res.ResourcesCompat import androidx.core.graphics.Insets import androidx.core.net.toUri import androidx.core.text.parseAsHtml @@ -23,13 +24,13 @@ import org.koitharu.kotatsu.base.ui.widgets.ChipsView import org.koitharu.kotatsu.core.model.Manga import org.koitharu.kotatsu.core.model.MangaHistory import org.koitharu.kotatsu.core.model.MangaSource +import org.koitharu.kotatsu.core.model.MangaState import org.koitharu.kotatsu.databinding.FragmentDetailsBinding import org.koitharu.kotatsu.favourites.ui.categories.select.FavouriteCategoriesDialog import org.koitharu.kotatsu.reader.ui.ReaderActivity import org.koitharu.kotatsu.reader.ui.ReaderState import org.koitharu.kotatsu.utils.FileSizeUtils import org.koitharu.kotatsu.utils.ext.* -import kotlin.random.Random class DetailsFragment : BaseFragment(), View.OnClickListener, View.OnLongClickListener { @@ -52,6 +53,8 @@ class DetailsFragment : BaseFragment(), View.OnClickList private fun onMangaUpdated(manga: Manga) { with(binding) { + + // Main imageViewCover.newImageRequest(manga.largeCoverUrl ?: manga.coverUrl) .referer(manga.publicUrl) .fallback(R.drawable.ic_placeholder) @@ -66,6 +69,28 @@ class DetailsFragment : BaseFragment(), View.OnClickList textViewDescription.text = manga.description?.parseAsHtml()?.takeUnless(Spanned::isBlank) ?: getString(R.string.no_description) + when (manga.state) { + MangaState.FINISHED -> { + textViewState.apply { + text = resources.getString(R.string.state_finished) + drawableStart = ResourcesCompat.getDrawable(resources, R.drawable.ic_state_finished, context.theme) + } + } + MangaState.ONGOING -> { + textViewState.apply { + text = resources.getString(R.string.state_ongoing) + drawableStart = ResourcesCompat.getDrawable(resources, R.drawable.ic_state_ongoing, context.theme) + } + } + else -> { + textViewState.apply { + text = resources.getString(R.string.state_unknown) + drawableStart = ResourcesCompat.getDrawable(resources, R.drawable.ic_state_unknown, context.theme) + } + } + } + + // Info containers if (manga.chapters?.isNotEmpty() == true) { chaptersContainer.isVisible = true textViewChapters.text = manga.chapters.let { @@ -96,10 +121,14 @@ class DetailsFragment : BaseFragment(), View.OnClickList } else { sizeContainer.isVisible = false } + + // Buttons buttonFavorite.setOnClickListener(this@DetailsFragment) buttonRead.setOnClickListener(this@DetailsFragment) buttonRead.setOnLongClickListener(this@DetailsFragment) buttonRead.isEnabled = !manga.chapters.isNullOrEmpty() + + // Chips bindTags(manga) } } diff --git a/app/src/main/res/drawable/ic_state_finished.xml b/app/src/main/res/drawable/ic_state_finished.xml new file mode 100644 index 000000000..84c2e8961 --- /dev/null +++ b/app/src/main/res/drawable/ic_state_finished.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_state_ongoing.xml b/app/src/main/res/drawable/ic_state_ongoing.xml new file mode 100644 index 000000000..4b642a0d2 --- /dev/null +++ b/app/src/main/res/drawable/ic_state_ongoing.xml @@ -0,0 +1,6 @@ + + + + diff --git a/app/src/main/res/drawable/ic_state_unknown.xml b/app/src/main/res/drawable/ic_state_unknown.xml new file mode 100644 index 000000000..1b82bf426 --- /dev/null +++ b/app/src/main/res/drawable/ic_state_unknown.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/layout-w600dp-land/fragment_details.xml b/app/src/main/res/layout-w600dp-land/fragment_details.xml index f1b1f770c..c8bdefeb2 100644 --- a/app/src/main/res/layout-w600dp-land/fragment_details.xml +++ b/app/src/main/res/layout-w600dp-land/fragment_details.xml @@ -6,6 +6,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="vertical" + android:clipToPadding="false" app:layout_behavior="@string/appbar_scrolling_view_behavior"> + + diff --git a/app/src/main/res/layout-w600dp-port/fragment_details.xml b/app/src/main/res/layout-w600dp-port/fragment_details.xml index e9d6d8eed..d23a53352 100644 --- a/app/src/main/res/layout-w600dp-port/fragment_details.xml +++ b/app/src/main/res/layout-w600dp-port/fragment_details.xml @@ -6,6 +6,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="vertical" + android:clipToPadding="false" app:layout_behavior="@string/appbar_scrolling_view_behavior"> + + diff --git a/app/src/main/res/layout/fragment_details.xml b/app/src/main/res/layout/fragment_details.xml index de9d42076..e3a49813b 100644 --- a/app/src/main/res/layout/fragment_details.xml +++ b/app/src/main/res/layout/fragment_details.xml @@ -6,6 +6,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="vertical" + android:clipToPadding="false" app:layout_behavior="@string/appbar_scrolling_view_behavior"> + + @@ -277,12 +292,12 @@ android:layout_height="wrap_content" android:indeterminate="true" android:visibility="gone" - app:showAnimationBehavior="inward" app:hideAnimationBehavior="outward" app:layout_constraintBottom_toTopOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" + app:showAnimationBehavior="inward" tools:visibility="visible" /> diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 862eb79f5..040b32e6b 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -237,4 +237,7 @@ Авторизация в %s не поддерживается Вы выйдете из всех источников, в которых Вы авторизованы Жанры + Завершено + Онгоинг + Неизвестно \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e09f1ba22..d79933964 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -240,4 +240,7 @@ Authorization on %s is not supported You will be logged out from all sources that you are authorized in Genres + Finished + Ongoing + Unknown \ No newline at end of file