diff --git a/app/src/debug/res/drawable/ic_banner_foreground.xml b/app/src/debug/res/drawable/ic_banner_foreground.xml new file mode 100644 index 0000000000..4e8dfde5b9 --- /dev/null +++ b/app/src/debug/res/drawable/ic_banner_foreground.xml @@ -0,0 +1,23 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/debug/res/mipmap/ic_ani_banner.xml b/app/src/debug/res/mipmap/ic_ani_banner.xml new file mode 100644 index 0000000000..e9cc7ece64 --- /dev/null +++ b/app/src/debug/res/mipmap/ic_ani_banner.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 9458212ceb..ef98c87e4d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -33,12 +33,17 @@ + + + + + diff --git a/app/src/main/java/eu/kanade/presentation/browse/anime/GlobalAnimeSearchScreen.kt b/app/src/main/java/eu/kanade/presentation/browse/anime/GlobalAnimeSearchScreen.kt index 54c87954a4..6c940d8479 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/anime/GlobalAnimeSearchScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/anime/GlobalAnimeSearchScreen.kt @@ -4,6 +4,10 @@ import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.runtime.Composable import androidx.compose.runtime.State +import androidx.compose.ui.Modifier +import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.focus.focusProperties +import androidx.compose.ui.focus.focusRequester import eu.kanade.presentation.browse.GlobalSearchErrorResultItem import eu.kanade.presentation.browse.GlobalSearchLoadingResultItem import eu.kanade.presentation.browse.GlobalSearchResultItem @@ -30,6 +34,7 @@ fun GlobalAnimeSearchScreen( onClickItem: (Anime) -> Unit, onLongClickItem: (Anime) -> Unit, ) { + val contentFocus = FocusRequester() Scaffold( topBar = { scrollBehavior -> GlobalAnimeSearchToolbar( @@ -44,6 +49,10 @@ fun GlobalAnimeSearchScreen( onlyShowHasResults = state.onlyShowHasResults, onToggleResults = onToggleResults, scrollBehavior = scrollBehavior, + modifier = Modifier + .focusProperties { + down = contentFocus + }, ) }, ) { paddingValues -> @@ -54,6 +63,7 @@ fun GlobalAnimeSearchScreen( onClickSource = onClickSource, onClickItem = onClickItem, onLongClickItem = onLongClickItem, + modifier = Modifier.focusRequester(contentFocus), ) } } @@ -66,10 +76,12 @@ internal fun GlobalSearchContent( onClickSource: (AnimeCatalogueSource) -> Unit, onClickItem: (Anime) -> Unit, onLongClickItem: (Anime) -> Unit, + modifier: Modifier = Modifier, fromSourceId: Long? = null, ) { LazyColumn( contentPadding = contentPadding, + modifier = modifier, ) { items.forEach { (source, result) -> item(key = source.id) { diff --git a/app/src/main/java/eu/kanade/presentation/browse/anime/components/GlobalAnimeSearchToolbar.kt b/app/src/main/java/eu/kanade/presentation/browse/anime/components/GlobalAnimeSearchToolbar.kt index e7219ef1e9..fcd915787e 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/anime/components/GlobalAnimeSearchToolbar.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/anime/components/GlobalAnimeSearchToolbar.kt @@ -45,6 +45,7 @@ fun GlobalAnimeSearchToolbar( onlyShowHasResults: Boolean, onToggleResults: () -> Unit, scrollBehavior: TopAppBarScrollBehavior, + modifier: Modifier = Modifier, ) { Column(modifier = Modifier.background(MaterialTheme.colorScheme.surface)) { Box { @@ -67,7 +68,7 @@ fun GlobalAnimeSearchToolbar( } Row( - modifier = Modifier + modifier = modifier .horizontalScroll(rememberScrollState()) .padding(horizontal = MaterialTheme.padding.small), horizontalArrangement = Arrangement.spacedBy(MaterialTheme.padding.small), diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/widget/BasePreferenceWidget.kt b/app/src/main/java/eu/kanade/presentation/more/settings/widget/BasePreferenceWidget.kt index bba72cf98e..010fc5c556 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/widget/BasePreferenceWidget.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/widget/BasePreferenceWidget.kt @@ -50,7 +50,7 @@ internal fun BasePreferenceWidget( modifier = modifier .highlightBackground(highlighted) .sizeIn(minHeight = minHeight) - .clickable(enabled = onClick != null, onClick = { onClick?.invoke() }) + .then(if (onClick != null) Modifier.clickable(onClick = onClick) else Modifier) .fillMaxWidth(), verticalAlignment = Alignment.CenterVertically, ) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/DisplayExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/DisplayExtensions.kt index f051ccbc86..f493726ca3 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/system/DisplayExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/DisplayExtensions.kt @@ -26,6 +26,7 @@ fun Context.prepareTabletUiContext(): Context { val configuration = resources.configuration val expected = when (Injekt.get().tabletUiMode().get()) { TabletUiMode.AUTOMATIC -> + isTvBox(this) || configuration.smallestScreenWidthDp >= when (configuration.orientation) { Configuration.ORIENTATION_PORTRAIT -> TABLET_UI_MIN_SCREEN_WIDTH_PORTRAIT_DP else -> TABLET_UI_MIN_SCREEN_WIDTH_LANDSCAPE_DP diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/TvUtils.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/TvUtils.kt index 9a49bbaa96..630b2b7204 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/system/TvUtils.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/TvUtils.kt @@ -12,6 +12,7 @@ fun isTvBox(context: Context): Boolean { // TV for sure if ( + pm.hasSystemFeature(PackageManager.FEATURE_LEANBACK) || context.getSystemService(UiModeManager::class.java) .getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION ) { diff --git a/app/src/main/res/drawable/ic_banner_foreground.xml b/app/src/main/res/drawable/ic_banner_foreground.xml new file mode 100644 index 0000000000..9fa1f25622 --- /dev/null +++ b/app/src/main/res/drawable/ic_banner_foreground.xml @@ -0,0 +1,20 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap/ic_ani_banner.xml b/app/src/main/res/mipmap/ic_ani_banner.xml new file mode 100644 index 0000000000..13d2591edd --- /dev/null +++ b/app/src/main/res/mipmap/ic_ani_banner.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file