Minor cleanup
(cherry picked from commit c39a1b7867976bddc85d3bfbffeeb717b8bf4501) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/ui/browse/BrowseController.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrateSourcesTab.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesTab.kt
This commit is contained in:
parent
16ea8aa3b7
commit
9318b0d803
@ -9,9 +9,10 @@ import androidx.compose.ui.res.stringResource
|
|||||||
import eu.kanade.presentation.components.AppBar
|
import eu.kanade.presentation.components.AppBar
|
||||||
import eu.kanade.presentation.components.AppBarActions
|
import eu.kanade.presentation.components.AppBarActions
|
||||||
import eu.kanade.presentation.components.Scaffold
|
import eu.kanade.presentation.components.Scaffold
|
||||||
|
import eu.kanade.presentation.components.TabContent
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun BrowseTabWrapper(tab: BrowseTab) {
|
fun BrowseTabWrapper(tab: TabContent) {
|
||||||
Scaffold(
|
Scaffold(
|
||||||
modifier = Modifier.statusBarsPadding(),
|
modifier = Modifier.statusBarsPadding(),
|
||||||
topBar = {
|
topBar = {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package eu.kanade.presentation.browse
|
package eu.kanade.presentation.components
|
||||||
|
|
||||||
import androidx.annotation.StringRes
|
import androidx.annotation.StringRes
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
@ -15,18 +15,13 @@ import androidx.compose.ui.Modifier
|
|||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import com.google.accompanist.pager.HorizontalPager
|
import com.google.accompanist.pager.HorizontalPager
|
||||||
import com.google.accompanist.pager.rememberPagerState
|
import com.google.accompanist.pager.rememberPagerState
|
||||||
import eu.kanade.presentation.components.AppBar
|
|
||||||
import eu.kanade.presentation.components.AppBarActions
|
|
||||||
import eu.kanade.presentation.components.Scaffold
|
|
||||||
import eu.kanade.presentation.components.TabIndicator
|
|
||||||
import eu.kanade.presentation.components.TabText
|
|
||||||
import eu.kanade.tachiyomi.R
|
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun BrowseScreen(
|
fun TabbedScreen(
|
||||||
|
@StringRes titleRes: Int,
|
||||||
|
tabs: List<TabContent>,
|
||||||
startIndex: Int? = null,
|
startIndex: Int? = null,
|
||||||
tabs: List<BrowseTab>,
|
|
||||||
) {
|
) {
|
||||||
val scope = rememberCoroutineScope()
|
val scope = rememberCoroutineScope()
|
||||||
val state = rememberPagerState()
|
val state = rememberPagerState()
|
||||||
@ -41,7 +36,7 @@ fun BrowseScreen(
|
|||||||
modifier = Modifier.statusBarsPadding(),
|
modifier = Modifier.statusBarsPadding(),
|
||||||
topBar = {
|
topBar = {
|
||||||
AppBar(
|
AppBar(
|
||||||
title = stringResource(R.string.browse),
|
title = stringResource(titleRes),
|
||||||
actions = {
|
actions = {
|
||||||
AppBarActions(tabs[state.currentPage].actions)
|
AppBarActions(tabs[state.currentPage].actions)
|
||||||
},
|
},
|
||||||
@ -76,7 +71,7 @@ fun BrowseScreen(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
data class BrowseTab(
|
data class TabContent(
|
||||||
@StringRes val titleRes: Int,
|
@StringRes val titleRes: Int,
|
||||||
val badgeNumber: Int? = null,
|
val badgeNumber: Int? = null,
|
||||||
val actions: List<AppBar.Action> = emptyList(),
|
val actions: List<AppBar.Action> = emptyList(),
|
@ -26,7 +26,7 @@ import java.util.concurrent.TimeUnit
|
|||||||
class DownloadCache(
|
class DownloadCache(
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
private val provider: DownloadProvider,
|
private val provider: DownloadProvider,
|
||||||
private val sourceManager: SourceManager,
|
private val sourceManager: SourceManager = Injekt.get(),
|
||||||
private val preferences: PreferencesHelper = Injekt.get(),
|
private val preferences: PreferencesHelper = Injekt.get(),
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
@ -22,7 +22,6 @@ import logcat.LogPriority
|
|||||||
import rx.Observable
|
import rx.Observable
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import uy.kohesive.injekt.injectLazy
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is used to manage chapter downloads in the application. It must be instantiated once
|
* This class is used to manage chapter downloads in the application. It must be instantiated once
|
||||||
@ -34,11 +33,10 @@ import uy.kohesive.injekt.injectLazy
|
|||||||
class DownloadManager(
|
class DownloadManager(
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
private val getCategories: GetCategories = Injekt.get(),
|
private val getCategories: GetCategories = Injekt.get(),
|
||||||
|
private val sourceManager: SourceManager = Injekt.get(),
|
||||||
|
private val preferences: PreferencesHelper = Injekt.get(),
|
||||||
) {
|
) {
|
||||||
|
|
||||||
private val sourceManager: SourceManager by injectLazy()
|
|
||||||
private val preferences: PreferencesHelper by injectLazy()
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Downloads provider, used to retrieve the folders where the chapters are or should be stored.
|
* Downloads provider, used to retrieve the folders where the chapters are or should be stored.
|
||||||
*/
|
*/
|
||||||
@ -47,12 +45,12 @@ class DownloadManager(
|
|||||||
/**
|
/**
|
||||||
* Cache of downloaded chapters.
|
* Cache of downloaded chapters.
|
||||||
*/
|
*/
|
||||||
private val cache = DownloadCache(context, provider, sourceManager)
|
private val cache = DownloadCache(context, provider)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Downloader whose only task is to download chapters.
|
* Downloader whose only task is to download chapters.
|
||||||
*/
|
*/
|
||||||
private val downloader = Downloader(context, provider, cache, sourceManager)
|
private val downloader = Downloader(context, provider, cache)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Queue to delay the deletion of a list of chapters until triggered.
|
* Queue to delay the deletion of a list of chapters until triggered.
|
||||||
@ -114,7 +112,7 @@ class DownloadManager(
|
|||||||
download?.let { queue.remove(it) }
|
download?.let { queue.remove(it) }
|
||||||
queue.add(0, toAdd)
|
queue.add(0, toAdd)
|
||||||
reorderQueue(queue)
|
reorderQueue(queue)
|
||||||
if (isPaused()) {
|
if (downloader.isPaused()) {
|
||||||
if (DownloadService.isRunning(context)) {
|
if (DownloadService.isRunning(context)) {
|
||||||
downloader.start()
|
downloader.start()
|
||||||
} else {
|
} else {
|
||||||
@ -123,8 +121,6 @@ class DownloadManager(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun isPaused() = downloader.isPaused()
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reorders the download queue.
|
* Reorders the download queue.
|
||||||
*
|
*
|
||||||
|
@ -36,7 +36,8 @@ import rx.Observable
|
|||||||
import rx.android.schedulers.AndroidSchedulers
|
import rx.android.schedulers.AndroidSchedulers
|
||||||
import rx.schedulers.Schedulers
|
import rx.schedulers.Schedulers
|
||||||
import rx.subscriptions.CompositeSubscription
|
import rx.subscriptions.CompositeSubscription
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.Injekt
|
||||||
|
import uy.kohesive.injekt.api.get
|
||||||
import java.io.BufferedOutputStream
|
import java.io.BufferedOutputStream
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.zip.CRC32
|
import java.util.zip.CRC32
|
||||||
@ -61,13 +62,11 @@ class Downloader(
|
|||||||
private val context: Context,
|
private val context: Context,
|
||||||
private val provider: DownloadProvider,
|
private val provider: DownloadProvider,
|
||||||
private val cache: DownloadCache,
|
private val cache: DownloadCache,
|
||||||
private val sourceManager: SourceManager,
|
private val sourceManager: SourceManager = Injekt.get(),
|
||||||
|
private val chapterCache: ChapterCache = Injekt.get(),
|
||||||
|
private val preferences: PreferencesHelper = Injekt.get(),
|
||||||
) {
|
) {
|
||||||
|
|
||||||
private val chapterCache: ChapterCache by injectLazy()
|
|
||||||
|
|
||||||
private val preferences: PreferencesHelper by injectLazy()
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Store for persisting downloads across restarts.
|
* Store for persisting downloads across restarts.
|
||||||
*/
|
*/
|
||||||
|
@ -6,7 +6,8 @@ import android.view.View
|
|||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.core.os.bundleOf
|
import androidx.core.os.bundleOf
|
||||||
import eu.kanade.presentation.browse.BrowseScreen
|
import eu.kanade.presentation.components.TabbedScreen
|
||||||
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.FullComposeController
|
import eu.kanade.tachiyomi.ui.base.controller.FullComposeController
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.RootController
|
import eu.kanade.tachiyomi.ui.base.controller.RootController
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.requestPermissionsSafe
|
import eu.kanade.tachiyomi.ui.base.controller.requestPermissionsSafe
|
||||||
@ -31,9 +32,9 @@ class BrowseController : FullComposeController<BrowsePresenter>, RootController
|
|||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
override fun ComposeContent() {
|
override fun ComposeContent() {
|
||||||
BrowseScreen(
|
TabbedScreen(
|
||||||
|
titleRes = R.string.browse,
|
||||||
// SY -->
|
// SY -->
|
||||||
startIndex = 2.takeIf { toExtensions },
|
|
||||||
tabs = (
|
tabs = (
|
||||||
if (presenter.feedTabInFront) listOf(
|
if (presenter.feedTabInFront) listOf(
|
||||||
feedTab(router, presenter.feedPresenter),
|
feedTab(router, presenter.feedPresenter),
|
||||||
@ -46,6 +47,7 @@ class BrowseController : FullComposeController<BrowsePresenter>, RootController
|
|||||||
extensionsTab(router, presenter.extensionsPresenter),
|
extensionsTab(router, presenter.extensionsPresenter),
|
||||||
migrateSourcesTab(router, presenter.migrationSourcesPresenter),
|
migrateSourcesTab(router, presenter.migrationSourcesPresenter),
|
||||||
),
|
),
|
||||||
|
startIndex = 2.takeIf { toExtensions },
|
||||||
// SY <--
|
// SY <--
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
package eu.kanade.tachiyomi.ui.browse.extension
|
package eu.kanade.tachiyomi.ui.browse.extension
|
||||||
|
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.outlined.FilterList
|
|
||||||
import androidx.compose.material.icons.outlined.Search
|
import androidx.compose.material.icons.outlined.Search
|
||||||
|
import androidx.compose.material.icons.outlined.Translate
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import com.bluelinelabs.conductor.Router
|
import com.bluelinelabs.conductor.Router
|
||||||
import eu.kanade.presentation.browse.BrowseTab
|
|
||||||
import eu.kanade.presentation.browse.ExtensionScreen
|
import eu.kanade.presentation.browse.ExtensionScreen
|
||||||
import eu.kanade.presentation.components.AppBar
|
import eu.kanade.presentation.components.AppBar
|
||||||
|
import eu.kanade.presentation.components.TabContent
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.extension.model.Extension
|
import eu.kanade.tachiyomi.extension.model.Extension
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.pushController
|
import eu.kanade.tachiyomi.ui.base.controller.pushController
|
||||||
@ -18,7 +18,7 @@ import eu.kanade.tachiyomi.ui.browse.extension.details.ExtensionDetailsControlle
|
|||||||
fun extensionsTab(
|
fun extensionsTab(
|
||||||
router: Router?,
|
router: Router?,
|
||||||
presenter: ExtensionsPresenter,
|
presenter: ExtensionsPresenter,
|
||||||
) = BrowseTab(
|
) = TabContent(
|
||||||
titleRes = R.string.label_extensions,
|
titleRes = R.string.label_extensions,
|
||||||
badgeNumber = presenter.updates.takeIf { it > 0 },
|
badgeNumber = presenter.updates.takeIf { it > 0 },
|
||||||
actions = listOf(
|
actions = listOf(
|
||||||
@ -33,7 +33,7 @@ fun extensionsTab(
|
|||||||
|
|
||||||
AppBar.Action(
|
AppBar.Action(
|
||||||
title = stringResource(R.string.action_filter),
|
title = stringResource(R.string.action_filter),
|
||||||
icon = Icons.Outlined.FilterList,
|
icon = Icons.Outlined.Translate,
|
||||||
onClick = { router?.pushController(ExtensionFilterController()) },
|
onClick = { router?.pushController(ExtensionFilterController()) },
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -5,9 +5,9 @@ import androidx.compose.material.icons.outlined.Add
|
|||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import com.bluelinelabs.conductor.Router
|
import com.bluelinelabs.conductor.Router
|
||||||
import eu.kanade.presentation.browse.BrowseTab
|
|
||||||
import eu.kanade.presentation.browse.FeedScreen
|
import eu.kanade.presentation.browse.FeedScreen
|
||||||
import eu.kanade.presentation.components.AppBar
|
import eu.kanade.presentation.components.AppBar
|
||||||
|
import eu.kanade.presentation.components.TabContent
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.pushController
|
import eu.kanade.tachiyomi.ui.base.controller.pushController
|
||||||
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceController
|
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceController
|
||||||
@ -18,7 +18,7 @@ import eu.kanade.tachiyomi.ui.manga.MangaController
|
|||||||
fun feedTab(
|
fun feedTab(
|
||||||
router: Router?,
|
router: Router?,
|
||||||
presenter: FeedPresenter,
|
presenter: FeedPresenter,
|
||||||
) = BrowseTab(
|
) = TabContent(
|
||||||
titleRes = R.string.feed,
|
titleRes = R.string.feed,
|
||||||
actions = listOf(
|
actions = listOf(
|
||||||
AppBar.Action(
|
AppBar.Action(
|
||||||
|
@ -7,9 +7,9 @@ import androidx.compose.ui.platform.LocalUriHandler
|
|||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import com.bluelinelabs.conductor.Router
|
import com.bluelinelabs.conductor.Router
|
||||||
import eu.kanade.domain.manga.interactor.GetFavorites
|
import eu.kanade.domain.manga.interactor.GetFavorites
|
||||||
import eu.kanade.presentation.browse.BrowseTab
|
|
||||||
import eu.kanade.presentation.browse.MigrateSourceScreen
|
import eu.kanade.presentation.browse.MigrateSourceScreen
|
||||||
import eu.kanade.presentation.components.AppBar
|
import eu.kanade.presentation.components.AppBar
|
||||||
|
import eu.kanade.presentation.components.TabContent
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.pushController
|
import eu.kanade.tachiyomi.ui.base.controller.pushController
|
||||||
@ -24,10 +24,10 @@ import uy.kohesive.injekt.api.get
|
|||||||
fun migrateSourcesTab(
|
fun migrateSourcesTab(
|
||||||
router: Router?,
|
router: Router?,
|
||||||
presenter: MigrationSourcesPresenter,
|
presenter: MigrationSourcesPresenter,
|
||||||
): BrowseTab {
|
): TabContent {
|
||||||
val uriHandler = LocalUriHandler.current
|
val uriHandler = LocalUriHandler.current
|
||||||
|
|
||||||
return BrowseTab(
|
return TabContent(
|
||||||
titleRes = R.string.label_migration,
|
titleRes = R.string.label_migration,
|
||||||
actions = listOf(
|
actions = listOf(
|
||||||
AppBar.Action(
|
AppBar.Action(
|
||||||
|
@ -6,9 +6,9 @@ import androidx.compose.material.icons.outlined.TravelExplore
|
|||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import com.bluelinelabs.conductor.Router
|
import com.bluelinelabs.conductor.Router
|
||||||
import eu.kanade.presentation.browse.BrowseTab
|
|
||||||
import eu.kanade.presentation.browse.SourcesScreen
|
import eu.kanade.presentation.browse.SourcesScreen
|
||||||
import eu.kanade.presentation.components.AppBar
|
import eu.kanade.presentation.components.AppBar
|
||||||
|
import eu.kanade.presentation.components.TabContent
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.pushController
|
import eu.kanade.tachiyomi.ui.base.controller.pushController
|
||||||
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceController
|
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceController
|
||||||
@ -21,7 +21,7 @@ import exh.ui.smartsearch.SmartSearchController
|
|||||||
fun sourcesTab(
|
fun sourcesTab(
|
||||||
router: Router?,
|
router: Router?,
|
||||||
presenter: SourcesPresenter,
|
presenter: SourcesPresenter,
|
||||||
) = BrowseTab(
|
) = TabContent(
|
||||||
// SY -->
|
// SY -->
|
||||||
titleRes = when (presenter.controllerMode) {
|
titleRes = when (presenter.controllerMode) {
|
||||||
SourcesController.Mode.CATALOGUE -> R.string.label_sources
|
SourcesController.Mode.CATALOGUE -> R.string.label_sources
|
||||||
|
Loading…
x
Reference in New Issue
Block a user