Add icon to jump directly to ExtensionDetailsScreen from SourcesScreen

# Conflicts:
#	app/src/main/java/eu/kanade/presentation/browse/SourcesScreen.kt
This commit is contained in:
Cuong M. Tran 2024-01-19 13:18:45 +07:00
parent 906012cd40
commit 48437205cd
No known key found for this signature in database
GPG key ID: 733AA7624B9315C2
2 changed files with 41 additions and 0 deletions

View file

@ -4,6 +4,7 @@ import androidx.compose.ui.graphics.ImageBitmap
import androidx.compose.ui.graphics.asImageBitmap
import androidx.core.graphics.drawable.toBitmap
import eu.kanade.tachiyomi.extension.ExtensionManager
import eu.kanade.tachiyomi.extension.model.Extension
import tachiyomi.domain.source.model.Source
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
@ -14,3 +15,14 @@ val Source.icon: ImageBitmap?
?.toBitmap()
?.asImageBitmap()
}
// AM (BROWSE) -->
// Add an extra property to Source for it to get access to ExtensionManager
val Source.installedExtension: Extension.Installed
get() {
return Injekt.get<ExtensionManager>()
.installedExtensionsFlow
.value
.find { ext -> ext.sources.any { it.id == id } }!!
}
// <-- AM (BROWSE)

View file

@ -25,6 +25,7 @@ import androidx.compose.material.icons.filled.Close
import androidx.compose.material.icons.filled.PushPin
import androidx.compose.material.icons.filled.Search
import androidx.compose.material.icons.outlined.PushPin
import androidx.compose.material.icons.outlined.Settings
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
@ -55,8 +56,12 @@ import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.VisualTransformation
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import cafe.adriel.voyager.navigator.LocalNavigator
import cafe.adriel.voyager.navigator.currentOrThrow
import eu.kanade.domain.source.model.installedExtension
import eu.kanade.presentation.browse.components.BaseSourceItem
import eu.kanade.tachiyomi.ui.browse.source.SourcesScreenModel
import eu.kanade.tachiyomi.ui.browse.extension.details.ExtensionDetailsScreen
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceScreenModel.Listing
import eu.kanade.tachiyomi.util.system.LocaleHelper
import kotlinx.collections.immutable.ImmutableList
@ -76,6 +81,7 @@ import tachiyomi.presentation.core.util.clearFocusOnSoftKeyboardHide
import tachiyomi.presentation.core.util.plus
import tachiyomi.presentation.core.util.runOnEnterKeyPressed
import tachiyomi.presentation.core.util.secondaryItemAlpha
import tachiyomi.source.local.LocalSource
import tachiyomi.source.local.isLocal
@Composable
@ -381,6 +387,13 @@ private fun SourceItem(
)
}
// SY <--
// AM (BROWSE) -->
if (source.id != LocalSource.ID) {
SourceSettingsButton(
source = source,
)
}
// <-- AM (BROWSE)
},
)
}
@ -408,6 +421,22 @@ private fun SourcePinButton(
}
}
// AM (BROWSE) -->
@Composable
private fun SourceSettingsButton(
source: Source,
) {
val navigator = LocalNavigator.currentOrThrow
IconButton(onClick = { navigator.push(ExtensionDetailsScreen(source.installedExtension.pkgName)) }) {
Icon(
imageVector = Icons.Outlined.Settings,
tint = MaterialTheme.colorScheme.primary,
contentDescription = stringResource(MR.strings.label_settings),
)
}
}
// <-- AM (BROWSE)
@Composable
fun SourceOptionsDialog(
source: Source,