Add parent class for view configs

This commit is contained in:
arkon 2020-04-17 20:10:29 -04:00
parent d9f44c1f7d
commit 678c004a64
3 changed files with 29 additions and 6 deletions

View file

@ -0,0 +1,24 @@
package eu.kanade.tachiyomi.ui.reader.viewer
import com.tfcporciuncula.flow.Preference
import eu.kanade.tachiyomi.util.lang.launchInUI
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.drop
import kotlinx.coroutines.flow.onEach
abstract class ViewerConfig {
var imagePropertyChangedListener: (() -> Unit)? = null
fun <T> Preference<T>.register(
valueAssignment: (T) -> Unit,
onChanged: (T) -> Unit = {}
) {
asFlow()
.onEach { valueAssignment(it) }
.drop(1)
.distinctUntilChanged()
.onEach { onChanged(it) }
.launchInUI()
}
}

View file

@ -4,17 +4,17 @@ import com.f2prateek.rx.preferences.Preference
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.util.lang.addTo
import rx.subscriptions.CompositeSubscription
import eu.kanade.tachiyomi.ui.reader.viewer.ViewerConfig
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
/**
* Configuration used by pager viewers.
*/
class PagerConfig(private val viewer: PagerViewer, preferences: PreferencesHelper = Injekt.get()) {
private val subscriptions = CompositeSubscription()
var imagePropertyChangedListener: (() -> Unit)? = null
class PagerConfig(private val viewer: PagerViewer, preferences: PreferencesHelper = Injekt.get()) :
ViewerConfig() {
var tappingEnabled = true
private set

View file

@ -4,17 +4,16 @@ import com.f2prateek.rx.preferences.Preference
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.util.lang.addTo
import rx.subscriptions.CompositeSubscription
import eu.kanade.tachiyomi.ui.reader.viewer.ViewerConfig
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
/**
* Configuration used by webtoon viewers.
*/
class WebtoonConfig(preferences: PreferencesHelper = Injekt.get()) {
private val subscriptions = CompositeSubscription()
var imagePropertyChangedListener: (() -> Unit)? = null
class WebtoonConfig(preferences: PreferencesHelper = Injekt.get()) : ViewerConfig() {
var tappingEnabled = true
private set