Initial chapter download icon implementation

This commit is contained in:
arkon 2020-12-27 10:13:13 -05:00
parent 1365d553a4
commit 6dd280205b
7 changed files with 128 additions and 15 deletions

View file

@ -0,0 +1,36 @@
package eu.kanade.tachiyomi.ui.manga.chapter
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import android.widget.FrameLayout
import androidx.core.view.isVisible
import eu.kanade.tachiyomi.databinding.ChapterDownloadViewBinding
class ChapterDownloadView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
FrameLayout(context, attrs) {
private val binding: ChapterDownloadViewBinding
init {
binding = ChapterDownloadViewBinding.inflate(LayoutInflater.from(context), this, false)
addView(binding.root)
}
fun setState(state: State) {
binding.downloadIconBorder.isVisible = state == State.DOWNLOAD || state == State.ERROR
binding.downloadIcon.isVisible = state == State.DOWNLOAD || state == State.DOWNLOADING
binding.downloadProgress.isVisible = state == State.DOWNLOADING || state == State.QUEUED
binding.downloadedIcon.isVisible = state == State.DOWNLOADED
}
enum class State {
DOWNLOAD,
QUEUED,
DOWNLOADING,
ERROR,
DOWNLOADED,
}
}

View file

@ -71,13 +71,13 @@ class ChapterHolder(
notifyStatus(item.status) notifyStatus(item.status)
} }
fun notifyStatus(status: Int) = with(binding.downloadText) { private fun notifyStatus(status: Int) = with(binding.download) {
when (status) { when (status) {
Download.QUEUE -> setText(R.string.chapter_queued) Download.QUEUE -> setState(ChapterDownloadView.State.QUEUED)
Download.DOWNLOADING -> setText(R.string.chapter_downloading) Download.DOWNLOADING -> setState(ChapterDownloadView.State.DOWNLOADING)
Download.DOWNLOADED -> setText(R.string.chapter_downloaded) Download.DOWNLOADED -> setState(ChapterDownloadView.State.DOWNLOADED)
Download.ERROR -> setText(R.string.chapter_error) Download.ERROR -> setState(ChapterDownloadView.State.ERROR)
else -> text = "" else -> setState(ChapterDownloadView.State.DOWNLOAD)
} }
} }
} }

View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval"
android:thicknessRatio="2">
<solid android:color="@android:color/transparent" />
<size
android:width="25dp"
android:height="25dp" />
<stroke
android:width="2dp"
android:color="?colorAccent" />
</shape>

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FF000000"
android:pathData="M11,4H13V16L18.5,10.5L19.92,11.92L12,19.84L4.08,11.92L5.5,10.5L11,16V4Z" />
</vector>

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FF000000"
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM10,17l-5,-5 1.41,-1.41L10,14.17l7.59,-7.59L19,8l-9,9z" />
</vector>

View file

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="24dp"
android:layout_height="24dp"
android:background="?selectableItemBackgroundBorderless">
<ImageView
android:id="@+id/download_icon_border"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:srcCompat="@drawable/border_circle"
app:tint="@color/material_on_surface_emphasis_medium"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/download_icon"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="4dp"
app:srcCompat="@drawable/ic_arrow_downward_24dp"
app:tint="@color/material_on_surface_emphasis_medium"
tools:ignore="ContentDescription" />
<com.google.android.material.progressindicator.CircularProgressIndicator
android:id="@+id/download_progress"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:indeterminate="true"
android:padding="0dp"
android:visibility="gone"
app:indicatorColor="@color/material_on_surface_emphasis_medium"
app:indicatorInset="0dp"
app:indicatorSize="24dp"
app:trackThickness="2dp" />
<ImageView
android:id="@+id/downloaded_icon"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:srcCompat="@drawable/ic_check_circle_24dp"
app:tint="@color/material_on_surface_emphasis_medium"
tools:ignore="ContentDescription" />
<!-- chapter_error -->
<!-- chapter_queued-->
</FrameLayout>

View file

@ -31,7 +31,7 @@
android:layout_marginTop="12dp" android:layout_marginTop="12dp"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="1" android:maxLines="1"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toStartOf="@+id/download"
app:layout_constraintStart_toEndOf="@+id/bookmark_icon" app:layout_constraintStart_toEndOf="@+id/bookmark_icon"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:text="Title" /> tools:text="Title" />
@ -45,19 +45,16 @@
android:ellipsize="end" android:ellipsize="end"
android:singleLine="true" android:singleLine="true"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/download_text" app:layout_constraintEnd_toStartOf="@+id/download"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
tools:text="22/02/2016 • Scanlator • Page: 45" /> tools:text="22/02/2016 • Scanlator • Page: 45" />
<TextView <eu.kanade.tachiyomi.ui.manga.chapter.ChapterDownloadView
android:id="@+id/download_text" android:id="@+id/download"
style="@style/TextAppearance.Regular.Caption.Hint"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="8dp" app:layout_constraintTop_toTopOf="parent"
android:textAllCaps="true"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent" />
tools:text="DOWNLOADED" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>