Move SourceSettingsButton to Presentation domain
This commit is contained in:
parent
67575fe3df
commit
64d1ef89a6
2 changed files with 45 additions and 36 deletions
|
|
@ -25,7 +25,6 @@ import androidx.compose.material.icons.filled.Close
|
||||||
import androidx.compose.material.icons.filled.PushPin
|
import androidx.compose.material.icons.filled.PushPin
|
||||||
import androidx.compose.material.icons.filled.Search
|
import androidx.compose.material.icons.filled.Search
|
||||||
import androidx.compose.material.icons.outlined.PushPin
|
import androidx.compose.material.icons.outlined.PushPin
|
||||||
import androidx.compose.material.icons.outlined.Settings
|
|
||||||
import androidx.compose.material3.AlertDialog
|
import androidx.compose.material3.AlertDialog
|
||||||
import androidx.compose.material3.Icon
|
import androidx.compose.material3.Icon
|
||||||
import androidx.compose.material3.IconButton
|
import androidx.compose.material3.IconButton
|
||||||
|
|
@ -56,16 +55,11 @@ import androidx.compose.ui.text.input.ImeAction
|
||||||
import androidx.compose.ui.text.input.VisualTransformation
|
import androidx.compose.ui.text.input.VisualTransformation
|
||||||
import androidx.compose.ui.text.style.TextOverflow
|
import androidx.compose.ui.text.style.TextOverflow
|
||||||
import androidx.compose.ui.unit.dp
|
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.presentation.browse.components.BaseSourceItem
|
||||||
import eu.kanade.tachiyomi.ui.browse.extension.details.ExtensionDetailsScreen
|
import eu.kanade.presentation.browse.components.SourceSettingsButton
|
||||||
import eu.kanade.tachiyomi.ui.browse.source.SourcesScreenModel
|
import eu.kanade.tachiyomi.ui.browse.source.SourcesScreenModel
|
||||||
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceScreenModel.Listing
|
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceScreenModel.Listing
|
||||||
import eu.kanade.tachiyomi.util.system.LocaleHelper
|
import eu.kanade.tachiyomi.util.system.LocaleHelper
|
||||||
import exh.source.EH_SOURCE_ID
|
|
||||||
import exh.source.EXH_SOURCE_ID
|
|
||||||
import kotlinx.collections.immutable.ImmutableList
|
import kotlinx.collections.immutable.ImmutableList
|
||||||
import tachiyomi.domain.source.model.Pin
|
import tachiyomi.domain.source.model.Pin
|
||||||
import tachiyomi.domain.source.model.Source
|
import tachiyomi.domain.source.model.Source
|
||||||
|
|
@ -83,7 +77,6 @@ import tachiyomi.presentation.core.util.clearFocusOnSoftKeyboardHide
|
||||||
import tachiyomi.presentation.core.util.plus
|
import tachiyomi.presentation.core.util.plus
|
||||||
import tachiyomi.presentation.core.util.runOnEnterKeyPressed
|
import tachiyomi.presentation.core.util.runOnEnterKeyPressed
|
||||||
import tachiyomi.presentation.core.util.secondaryItemAlpha
|
import tachiyomi.presentation.core.util.secondaryItemAlpha
|
||||||
import tachiyomi.source.local.LocalSource
|
|
||||||
import tachiyomi.source.local.isLocal
|
import tachiyomi.source.local.isLocal
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -389,13 +382,9 @@ private fun SourceItem(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
// SY <--
|
// SY <--
|
||||||
// AM (BROWSE) -->
|
// KMK -->
|
||||||
if (source.id != LocalSource.ID) {
|
SourceSettingsButton(source = source)
|
||||||
SourceSettingsButton(
|
// KMK <--
|
||||||
source = source,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
// <-- AM (BROWSE)
|
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -423,27 +412,6 @@ private fun SourcePinButton(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// AM (BROWSE) -->
|
|
||||||
@Composable
|
|
||||||
private fun SourceSettingsButton(
|
|
||||||
source: Source,
|
|
||||||
) {
|
|
||||||
// Avoid E-Hentai & ExHentai which is built-in & not actually installed extensions
|
|
||||||
if (source.id == EH_SOURCE_ID || source.id == EXH_SOURCE_ID) return
|
|
||||||
val navigator = LocalNavigator.currentOrThrow
|
|
||||||
IconButton(onClick = {
|
|
||||||
if (source.installedExtension !== null)
|
|
||||||
navigator.push(ExtensionDetailsScreen(source.installedExtension!!.pkgName))
|
|
||||||
}) {
|
|
||||||
Icon(
|
|
||||||
imageVector = Icons.Outlined.Settings,
|
|
||||||
tint = MaterialTheme.colorScheme.primary,
|
|
||||||
contentDescription = stringResource(MR.strings.label_settings),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// <-- AM (BROWSE)
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun SourceOptionsDialog(
|
fun SourceOptionsDialog(
|
||||||
source: Source,
|
source: Source,
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
package eu.kanade.presentation.browse.components
|
||||||
|
|
||||||
|
import androidx.compose.material.icons.Icons
|
||||||
|
import androidx.compose.material.icons.outlined.Settings
|
||||||
|
import androidx.compose.material3.Icon
|
||||||
|
import androidx.compose.material3.IconButton
|
||||||
|
import androidx.compose.material3.MaterialTheme
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
import cafe.adriel.voyager.navigator.LocalNavigator
|
||||||
|
import cafe.adriel.voyager.navigator.currentOrThrow
|
||||||
|
import eu.kanade.domain.source.model.installedExtension
|
||||||
|
import eu.kanade.tachiyomi.ui.browse.extension.details.ExtensionDetailsScreen
|
||||||
|
import exh.source.EH_SOURCE_ID
|
||||||
|
import exh.source.EXH_SOURCE_ID
|
||||||
|
import tachiyomi.domain.source.model.Source
|
||||||
|
import tachiyomi.i18n.MR
|
||||||
|
import tachiyomi.presentation.core.i18n.stringResource
|
||||||
|
import tachiyomi.source.local.LocalSource
|
||||||
|
|
||||||
|
// KMK -->
|
||||||
|
@Composable
|
||||||
|
fun SourceSettingsButton(
|
||||||
|
source: Source,
|
||||||
|
@Suppress("UNUSED_PARAMETER") modifier: Modifier = Modifier
|
||||||
|
) {
|
||||||
|
// Avoid E-Hentai & ExHentai which is built-in & not actually installed extensions
|
||||||
|
if (source.id == LocalSource.ID || source.id == EH_SOURCE_ID || source.id == EXH_SOURCE_ID) return
|
||||||
|
val navigator = LocalNavigator.currentOrThrow
|
||||||
|
IconButton(onClick = {
|
||||||
|
if (source.installedExtension !== null)
|
||||||
|
navigator.push(ExtensionDetailsScreen(source.installedExtension!!.pkgName))
|
||||||
|
}) {
|
||||||
|
Icon(
|
||||||
|
imageVector = Icons.Outlined.Settings,
|
||||||
|
tint = MaterialTheme.colorScheme.primary,
|
||||||
|
contentDescription = stringResource(MR.strings.label_settings),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// KMK <--
|
||||||
Loading…
Reference in a new issue