Fix empty chapters label
parent
d77646adf1
commit
3c739eed8e
@ -0,0 +1,50 @@
|
|||||||
|
package org.koitharu.kotatsu.utils
|
||||||
|
|
||||||
|
import androidx.annotation.MainThread
|
||||||
|
import java.util.concurrent.ConcurrentLinkedQueue
|
||||||
|
import kotlin.coroutines.CoroutineContext
|
||||||
|
import kotlinx.coroutines.CoroutineDispatcher
|
||||||
|
import kotlinx.coroutines.Runnable
|
||||||
|
|
||||||
|
class PausingDispatcher(
|
||||||
|
private val dispatcher: CoroutineDispatcher,
|
||||||
|
) : CoroutineDispatcher() {
|
||||||
|
|
||||||
|
@Volatile
|
||||||
|
private var isPaused = false
|
||||||
|
private val queue = ConcurrentLinkedQueue<Task>()
|
||||||
|
|
||||||
|
override fun isDispatchNeeded(context: CoroutineContext): Boolean {
|
||||||
|
return isPaused || super.isDispatchNeeded(context)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun dispatch(context: CoroutineContext, block: Runnable) {
|
||||||
|
if (isPaused) {
|
||||||
|
queue.add(Task(context, block))
|
||||||
|
} else {
|
||||||
|
dispatcher.dispatch(context, block)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@MainThread
|
||||||
|
fun pause() {
|
||||||
|
isPaused = true
|
||||||
|
}
|
||||||
|
|
||||||
|
@MainThread
|
||||||
|
fun resume() {
|
||||||
|
if (!isPaused) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
isPaused = false
|
||||||
|
while (true) {
|
||||||
|
val task = queue.poll() ?: break
|
||||||
|
dispatcher.dispatch(task.context, task.block)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class Task(
|
||||||
|
val context: CoroutineContext,
|
||||||
|
val block: Runnable,
|
||||||
|
)
|
||||||
|
}
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<vector
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:tint="?colorControlNormal"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24">
|
||||||
|
<path
|
||||||
|
android:fillColor="#000"
|
||||||
|
android:pathData="M14,19H18V5H14M6,19H10V5H6V19Z" />
|
||||||
|
</vector>
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<vector
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:tint="?colorControlNormal"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24">
|
||||||
|
<path
|
||||||
|
android:fillColor="#000"
|
||||||
|
android:pathData="M8,5.14V19.14L19,12.14L8,5.14Z" />
|
||||||
|
</vector>
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<menu
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:icon="@drawable/ic_pause"
|
||||||
|
android:id="@+id/action_pause"
|
||||||
|
android:title="Pause"
|
||||||
|
app:showAsAction="ifRoom|withText" />
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:icon="@drawable/ic_resume"
|
||||||
|
android:id="@+id/action_resume"
|
||||||
|
android:title="Resume"
|
||||||
|
app:showAsAction="ifRoom|withText" />
|
||||||
|
|
||||||
|
</menu>
|
||||||
Loading…
Reference in New Issue