mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-31 14:27:57 +01:00 
			
		
		
		
	Replace clear database FAB with button
Also remove a bunch of unnecessary inset paddings since Scaffold handles it
This commit is contained in:
		| @@ -14,11 +14,8 @@ import androidx.compose.foundation.layout.Column | ||||
| import androidx.compose.foundation.layout.PaddingValues | ||||
| import androidx.compose.foundation.layout.Row | ||||
| import androidx.compose.foundation.layout.Spacer | ||||
| import androidx.compose.foundation.layout.WindowInsets | ||||
| import androidx.compose.foundation.layout.asPaddingValues | ||||
| import androidx.compose.foundation.layout.fillMaxWidth | ||||
| import androidx.compose.foundation.layout.height | ||||
| import androidx.compose.foundation.layout.navigationBars | ||||
| import androidx.compose.foundation.layout.padding | ||||
| import androidx.compose.foundation.layout.size | ||||
| import androidx.compose.foundation.layout.width | ||||
| @@ -62,7 +59,6 @@ import eu.kanade.presentation.components.PreferenceRow | ||||
| import eu.kanade.presentation.components.Scaffold | ||||
| import eu.kanade.presentation.components.ScrollbarLazyColumn | ||||
| import eu.kanade.presentation.util.horizontalPadding | ||||
| import eu.kanade.presentation.util.plus | ||||
| import eu.kanade.tachiyomi.R | ||||
| import eu.kanade.tachiyomi.extension.model.Extension | ||||
| import eu.kanade.tachiyomi.source.ConfigurableSource | ||||
| @@ -131,7 +127,7 @@ fun ExtensionDetailsScreen( | ||||
|  | ||||
| @Composable | ||||
| private fun ExtensionDetails( | ||||
|     paddingValues: PaddingValues, | ||||
|     contentPadding: PaddingValues, | ||||
|     presenter: ExtensionDetailsPresenter, | ||||
|     onClickSourcePreferences: (sourceId: Long) -> Unit, | ||||
| ) { | ||||
| @@ -144,7 +140,7 @@ private fun ExtensionDetails( | ||||
|             var showNsfwWarning by remember { mutableStateOf(false) } | ||||
|  | ||||
|             ScrollbarLazyColumn( | ||||
|                 contentPadding = paddingValues + WindowInsets.navigationBars.asPaddingValues(), | ||||
|                 contentPadding = contentPadding, | ||||
|             ) { | ||||
|                 when { | ||||
|                     extension.isUnofficial -> | ||||
|   | ||||
| @@ -1,9 +1,6 @@ | ||||
| package eu.kanade.presentation.browse | ||||
|  | ||||
| import androidx.compose.foundation.layout.PaddingValues | ||||
| import androidx.compose.foundation.layout.WindowInsets | ||||
| import androidx.compose.foundation.layout.asPaddingValues | ||||
| import androidx.compose.foundation.layout.navigationBars | ||||
| import androidx.compose.foundation.lazy.items | ||||
| import androidx.compose.material3.Switch | ||||
| import androidx.compose.runtime.Composable | ||||
| @@ -17,7 +14,6 @@ import eu.kanade.presentation.components.LazyColumn | ||||
| import eu.kanade.presentation.components.LoadingScreen | ||||
| import eu.kanade.presentation.components.PreferenceRow | ||||
| import eu.kanade.presentation.components.Scaffold | ||||
| import eu.kanade.presentation.util.plus | ||||
| import eu.kanade.tachiyomi.R | ||||
| import eu.kanade.tachiyomi.ui.browse.extension.ExtensionFilterPresenter | ||||
| import eu.kanade.tachiyomi.util.system.LocaleHelper | ||||
| @@ -38,13 +34,13 @@ fun ExtensionFilterScreen( | ||||
|                 scrollBehavior = scrollBehavior, | ||||
|             ) | ||||
|         }, | ||||
|     ) { paddingValues -> | ||||
|     ) { contentPadding -> | ||||
|         when { | ||||
|             presenter.isLoading -> LoadingScreen() | ||||
|             presenter.isEmpty -> EmptyScreen(textResource = R.string.empty_screen) | ||||
|             else -> { | ||||
|                 SourceFilterContent( | ||||
|                     paddingValues = paddingValues, | ||||
|                     contentPadding = contentPadding, | ||||
|                     state = presenter, | ||||
|                     onClickLang = { | ||||
|                         presenter.toggleLanguage(it) | ||||
| @@ -66,12 +62,12 @@ fun ExtensionFilterScreen( | ||||
|  | ||||
| @Composable | ||||
| fun SourceFilterContent( | ||||
|     paddingValues: PaddingValues, | ||||
|     contentPadding: PaddingValues, | ||||
|     state: ExtensionFilterState, | ||||
|     onClickLang: (String) -> Unit, | ||||
| ) { | ||||
|     LazyColumn( | ||||
|         contentPadding = paddingValues + WindowInsets.navigationBars.asPaddingValues(), | ||||
|         contentPadding = contentPadding, | ||||
|     ) { | ||||
|         items( | ||||
|             items = state.items, | ||||
|   | ||||
| @@ -1,9 +1,6 @@ | ||||
| package eu.kanade.presentation.browse | ||||
|  | ||||
| import androidx.compose.foundation.layout.PaddingValues | ||||
| import androidx.compose.foundation.layout.WindowInsets | ||||
| import androidx.compose.foundation.layout.asPaddingValues | ||||
| import androidx.compose.foundation.layout.navigationBars | ||||
| import androidx.compose.foundation.lazy.items | ||||
| import androidx.compose.runtime.Composable | ||||
| import androidx.compose.runtime.LaunchedEffect | ||||
| @@ -16,7 +13,6 @@ import eu.kanade.presentation.components.LoadingScreen | ||||
| import eu.kanade.presentation.components.Scaffold | ||||
| import eu.kanade.presentation.components.ScrollbarLazyColumn | ||||
| import eu.kanade.presentation.manga.components.BaseMangaListItem | ||||
| import eu.kanade.presentation.util.plus | ||||
| import eu.kanade.tachiyomi.R | ||||
| import eu.kanade.tachiyomi.ui.browse.migration.manga.MigrateMangaPresenter | ||||
| import eu.kanade.tachiyomi.ui.browse.migration.manga.MigrateMangaPresenter.Event | ||||
| @@ -40,13 +36,13 @@ fun MigrateMangaScreen( | ||||
|                 scrollBehavior = scrollBehavior, | ||||
|             ) | ||||
|         }, | ||||
|     ) { paddingValues -> | ||||
|     ) { contentPadding -> | ||||
|         when { | ||||
|             presenter.isLoading -> LoadingScreen() | ||||
|             presenter.isEmpty -> EmptyScreen(textResource = R.string.empty_screen) | ||||
|             else -> { | ||||
|                 MigrateMangaContent( | ||||
|                     paddingValues = paddingValues, | ||||
|                     contentPadding = contentPadding, | ||||
|                     state = presenter, | ||||
|                     onClickItem = onClickItem, | ||||
|                     onClickCover = onClickCover, | ||||
| @@ -67,13 +63,13 @@ fun MigrateMangaScreen( | ||||
|  | ||||
| @Composable | ||||
| fun MigrateMangaContent( | ||||
|     paddingValues: PaddingValues, | ||||
|     contentPadding: PaddingValues, | ||||
|     state: MigrateMangaState, | ||||
|     onClickItem: (Manga) -> Unit, | ||||
|     onClickCover: (Manga) -> Unit, | ||||
| ) { | ||||
|     ScrollbarLazyColumn( | ||||
|         contentPadding = paddingValues + WindowInsets.navigationBars.asPaddingValues(), | ||||
|         contentPadding = contentPadding, | ||||
|     ) { | ||||
|         items(state.items) { manga -> | ||||
|             MigrateMangaItem( | ||||
|   | ||||
| @@ -1,9 +1,6 @@ | ||||
| package eu.kanade.presentation.browse | ||||
|  | ||||
| import androidx.compose.foundation.layout.PaddingValues | ||||
| import androidx.compose.foundation.layout.WindowInsets | ||||
| import androidx.compose.foundation.layout.asPaddingValues | ||||
| import androidx.compose.foundation.layout.navigationBars | ||||
| import androidx.compose.foundation.lazy.items | ||||
| import androidx.compose.material3.Checkbox | ||||
| import androidx.compose.material3.Switch | ||||
| @@ -20,7 +17,6 @@ import eu.kanade.presentation.components.LoadingScreen | ||||
| import eu.kanade.presentation.components.PreferenceRow | ||||
| import eu.kanade.presentation.components.Scaffold | ||||
| import eu.kanade.presentation.components.ScrollbarLazyColumn | ||||
| import eu.kanade.presentation.util.plus | ||||
| import eu.kanade.tachiyomi.R | ||||
| import eu.kanade.tachiyomi.ui.browse.source.FilterUiModel | ||||
| import eu.kanade.tachiyomi.ui.browse.source.SourcesFilterPresenter | ||||
| @@ -44,13 +40,13 @@ fun SourcesFilterScreen( | ||||
|                 scrollBehavior = scrollBehavior, | ||||
|             ) | ||||
|         }, | ||||
|     ) { paddingValues -> | ||||
|     ) { contentPadding -> | ||||
|         when { | ||||
|             presenter.isLoading -> LoadingScreen() | ||||
|             presenter.isEmpty -> EmptyScreen(textResource = R.string.source_filter_empty_screen) | ||||
|             else -> { | ||||
|                 SourcesFilterContent( | ||||
|                     paddingValues = paddingValues, | ||||
|                     contentPadding = contentPadding, | ||||
|                     state = presenter, | ||||
|                     onClickLang = onClickLang, | ||||
|                     onClickSource = onClickSource, | ||||
| @@ -71,13 +67,13 @@ fun SourcesFilterScreen( | ||||
|  | ||||
| @Composable | ||||
| fun SourcesFilterContent( | ||||
|     paddingValues: PaddingValues, | ||||
|     contentPadding: PaddingValues, | ||||
|     state: SourcesFilterState, | ||||
|     onClickLang: (String) -> Unit, | ||||
|     onClickSource: (Source) -> Unit, | ||||
| ) { | ||||
|     ScrollbarLazyColumn( | ||||
|         contentPadding = paddingValues + WindowInsets.navigationBars.asPaddingValues(), | ||||
|         contentPadding = contentPadding, | ||||
|     ) { | ||||
|         items( | ||||
|             items = state.items, | ||||
|   | ||||
| @@ -1,8 +1,5 @@ | ||||
| package eu.kanade.presentation.more | ||||
|  | ||||
| import androidx.compose.foundation.layout.WindowInsets | ||||
| import androidx.compose.foundation.layout.asPaddingValues | ||||
| import androidx.compose.foundation.layout.navigationBars | ||||
| import androidx.compose.material.icons.Icons | ||||
| import androidx.compose.material.icons.outlined.CloudOff | ||||
| import androidx.compose.material.icons.outlined.GetApp | ||||
| @@ -53,9 +50,9 @@ fun MoreScreen( | ||||
|                 scrollBehavior = scrollBehavior, | ||||
|             ) | ||||
|         }, | ||||
|     ) { paddingValues -> | ||||
|     ) { contentPadding -> | ||||
|         ScrollbarLazyColumn( | ||||
|             contentPadding = bottomNavPaddingValues + paddingValues + WindowInsets.navigationBars.asPaddingValues(), | ||||
|             contentPadding = contentPadding + bottomNavPaddingValues, | ||||
|         ) { | ||||
|             item { | ||||
|                 LogoHeader() | ||||
|   | ||||
| @@ -2,10 +2,7 @@ package eu.kanade.presentation.more.about | ||||
|  | ||||
| import androidx.compose.foundation.layout.Arrangement | ||||
| import androidx.compose.foundation.layout.Row | ||||
| import androidx.compose.foundation.layout.WindowInsets | ||||
| import androidx.compose.foundation.layout.asPaddingValues | ||||
| import androidx.compose.foundation.layout.fillMaxWidth | ||||
| import androidx.compose.foundation.layout.navigationBars | ||||
| import androidx.compose.material.icons.Icons | ||||
| import androidx.compose.material.icons.outlined.Public | ||||
| import androidx.compose.runtime.Composable | ||||
| @@ -46,9 +43,9 @@ fun AboutScreen( | ||||
|                 scrollBehavior = scrollBehavior, | ||||
|             ) | ||||
|         }, | ||||
|     ) { paddingValues -> | ||||
|     ) { contentPadding -> | ||||
|         ScrollbarLazyColumn( | ||||
|             contentPadding = paddingValues + WindowInsets.navigationBars.asPaddingValues(), | ||||
|             contentPadding = contentPadding, | ||||
|         ) { | ||||
|             item { | ||||
|                 LogoHeader() | ||||
|   | ||||
| @@ -1,9 +1,6 @@ | ||||
| package eu.kanade.presentation.more.about | ||||
|  | ||||
| import androidx.compose.foundation.layout.WindowInsets | ||||
| import androidx.compose.foundation.layout.asPaddingValues | ||||
| import androidx.compose.foundation.layout.fillMaxSize | ||||
| import androidx.compose.foundation.layout.navigationBars | ||||
| import androidx.compose.material3.MaterialTheme | ||||
| import androidx.compose.runtime.Composable | ||||
| import androidx.compose.ui.Modifier | ||||
| @@ -12,7 +9,6 @@ import com.mikepenz.aboutlibraries.ui.compose.LibrariesContainer | ||||
| import com.mikepenz.aboutlibraries.ui.compose.LibraryDefaults | ||||
| import eu.kanade.presentation.components.AppBar | ||||
| import eu.kanade.presentation.components.Scaffold | ||||
| import eu.kanade.presentation.util.plus | ||||
| import eu.kanade.tachiyomi.R | ||||
|  | ||||
| @Composable | ||||
| @@ -27,11 +23,11 @@ fun LicensesScreen( | ||||
|                 scrollBehavior = scrollBehavior, | ||||
|             ) | ||||
|         }, | ||||
|     ) { paddingValues -> | ||||
|     ) { contentPadding -> | ||||
|         LibrariesContainer( | ||||
|             modifier = Modifier | ||||
|                 .fillMaxSize(), | ||||
|             contentPadding = paddingValues + WindowInsets.navigationBars.asPaddingValues(), | ||||
|             contentPadding = contentPadding, | ||||
|             colors = LibraryDefaults.libraryColors( | ||||
|                 backgroundColor = MaterialTheme.colorScheme.background, | ||||
|                 contentColor = MaterialTheme.colorScheme.onBackground, | ||||
|   | ||||
| @@ -1,9 +1,6 @@ | ||||
| package eu.kanade.presentation.more.settings | ||||
|  | ||||
| import androidx.annotation.StringRes | ||||
| import androidx.compose.foundation.layout.WindowInsets | ||||
| import androidx.compose.foundation.layout.asPaddingValues | ||||
| import androidx.compose.foundation.layout.navigationBars | ||||
| import androidx.compose.material.icons.Icons | ||||
| import androidx.compose.material.icons.outlined.Search | ||||
| import androidx.compose.runtime.Composable | ||||
| @@ -14,7 +11,6 @@ import eu.kanade.presentation.components.AppBarActions | ||||
| import eu.kanade.presentation.components.PreferenceRow | ||||
| import eu.kanade.presentation.components.Scaffold | ||||
| import eu.kanade.presentation.components.ScrollbarLazyColumn | ||||
| import eu.kanade.presentation.util.plus | ||||
| import eu.kanade.tachiyomi.R | ||||
|  | ||||
| @Composable | ||||
| @@ -42,9 +38,9 @@ fun SettingsMainScreen( | ||||
|                 scrollBehavior = scrollBehavior, | ||||
|             ) | ||||
|         }, | ||||
|     ) { paddingValues -> | ||||
|     ) { contentPadding -> | ||||
|         ScrollbarLazyColumn( | ||||
|             contentPadding = paddingValues + WindowInsets.navigationBars.asPaddingValues(), | ||||
|             contentPadding = contentPadding, | ||||
|         ) { | ||||
|             sections.map { | ||||
|                 item { | ||||
|   | ||||
| @@ -2,10 +2,7 @@ package eu.kanade.presentation.more.settings | ||||
|  | ||||
| import androidx.compose.foundation.clickable | ||||
| import androidx.compose.foundation.layout.Column | ||||
| import androidx.compose.foundation.layout.WindowInsets | ||||
| import androidx.compose.foundation.layout.asPaddingValues | ||||
| import androidx.compose.foundation.layout.fillMaxWidth | ||||
| import androidx.compose.foundation.layout.navigationBars | ||||
| import androidx.compose.foundation.layout.padding | ||||
| import androidx.compose.foundation.lazy.items | ||||
| import androidx.compose.material3.MaterialTheme | ||||
| @@ -22,7 +19,6 @@ import eu.kanade.presentation.components.Scaffold | ||||
| import eu.kanade.presentation.components.ScrollbarLazyColumn | ||||
| import eu.kanade.presentation.components.SearchToolbar | ||||
| import eu.kanade.presentation.util.horizontalPadding | ||||
| import eu.kanade.presentation.util.plus | ||||
| import eu.kanade.tachiyomi.ui.setting.SettingsController | ||||
| import eu.kanade.tachiyomi.ui.setting.search.SettingsSearchHelper | ||||
| import eu.kanade.tachiyomi.ui.setting.search.SettingsSearchPresenter | ||||
| @@ -53,9 +49,9 @@ fun SettingsSearchScreen( | ||||
|             // TODO: search placeholder | ||||
|             // Text(stringResource(R.string.action_search_settings)) | ||||
|         }, | ||||
|     ) { paddingValues -> | ||||
|     ) { contentPadding -> | ||||
|         ScrollbarLazyColumn( | ||||
|             contentPadding = paddingValues + WindowInsets.navigationBars.asPaddingValues(), | ||||
|             contentPadding = contentPadding, | ||||
|         ) { | ||||
|             items( | ||||
|                 items = results, | ||||
| @@ -75,14 +71,14 @@ private fun SearchResult( | ||||
|     Column( | ||||
|         modifier = Modifier | ||||
|             .fillMaxWidth() | ||||
|             .padding(horizontal = horizontalPadding, vertical = 8.dp) | ||||
|             .clickable { | ||||
|                 // Must pass a new Controller instance to avoid this error | ||||
|                 // https://github.com/bluelinelabs/Conductor/issues/446 | ||||
|                 val controller = result.searchController::class.createInstance() | ||||
|                 controller.preferenceKey = result.key | ||||
|                 onClickResult(controller) | ||||
|             }, | ||||
|             } | ||||
|             .padding(horizontal = horizontalPadding, vertical = 8.dp), | ||||
|     ) { | ||||
|         Text( | ||||
|             text = result.title, | ||||
|   | ||||
| @@ -1,12 +1,10 @@ | ||||
| package eu.kanade.presentation.more.settings.database | ||||
|  | ||||
| import androidx.compose.foundation.lazy.rememberLazyListState | ||||
| import androidx.compose.runtime.Composable | ||||
| import androidx.compose.ui.platform.LocalContext | ||||
| import eu.kanade.presentation.components.Scaffold | ||||
| import eu.kanade.presentation.more.settings.database.components.ClearDatabaseContent | ||||
| import eu.kanade.presentation.more.settings.database.components.ClearDatabaseDeleteDialog | ||||
| import eu.kanade.presentation.more.settings.database.components.ClearDatabaseFloatingActionButton | ||||
| import eu.kanade.presentation.more.settings.database.components.ClearDatabaseToolbar | ||||
| import eu.kanade.tachiyomi.R | ||||
| import eu.kanade.tachiyomi.ui.setting.database.ClearDatabasePresenter | ||||
| @@ -18,7 +16,6 @@ fun ClearDatabaseScreen( | ||||
|     navigateUp: () -> Unit, | ||||
| ) { | ||||
|     val context = LocalContext.current | ||||
|     val lazyListState = rememberLazyListState() | ||||
|     Scaffold( | ||||
|         topBar = { scrollBehavior -> | ||||
|             ClearDatabaseToolbar( | ||||
| @@ -29,23 +26,16 @@ fun ClearDatabaseScreen( | ||||
|                 scrollBehavior = scrollBehavior, | ||||
|             ) | ||||
|         }, | ||||
|         floatingActionButton = { | ||||
|             ClearDatabaseFloatingActionButton( | ||||
|                 isVisible = presenter.selection.isNotEmpty(), | ||||
|                 lazyListState = lazyListState, | ||||
|                 onClickDelete = { | ||||
|                     presenter.dialog = ClearDatabasePresenter.Dialog.Delete(presenter.selection) | ||||
|                 }, | ||||
|             ) | ||||
|         }, | ||||
|     ) { paddingValues -> | ||||
|         ClearDatabaseContent( | ||||
|             state = presenter, | ||||
|             contentPadding = paddingValues, | ||||
|             lazyListState = lazyListState, | ||||
|             onClickSelection = { source -> | ||||
|                 presenter.toggleSelection(source) | ||||
|             }, | ||||
|             onClickDelete = { | ||||
|                 presenter.dialog = ClearDatabasePresenter.Dialog.Delete(presenter.selection) | ||||
|             }, | ||||
|         ) | ||||
|     } | ||||
|     val dialog = presenter.dialog | ||||
|   | ||||
| @@ -1,44 +1,73 @@ | ||||
| package eu.kanade.presentation.more.settings.database.components | ||||
|  | ||||
| import androidx.compose.animation.Crossfade | ||||
| import androidx.compose.foundation.layout.Column | ||||
| import androidx.compose.foundation.layout.PaddingValues | ||||
| import androidx.compose.foundation.layout.WindowInsets | ||||
| import androidx.compose.foundation.layout.asPaddingValues | ||||
| import androidx.compose.foundation.layout.navigationBars | ||||
| import androidx.compose.foundation.lazy.LazyListState | ||||
| import androidx.compose.foundation.layout.fillMaxSize | ||||
| import androidx.compose.foundation.layout.fillMaxWidth | ||||
| import androidx.compose.foundation.layout.padding | ||||
| import androidx.compose.foundation.lazy.items | ||||
| import androidx.compose.material3.Button | ||||
| import androidx.compose.material3.MaterialTheme | ||||
| import androidx.compose.material3.Text | ||||
| import androidx.compose.runtime.Composable | ||||
| import androidx.compose.ui.Modifier | ||||
| import androidx.compose.ui.res.stringResource | ||||
| import androidx.compose.ui.unit.dp | ||||
| import eu.kanade.domain.source.model.Source | ||||
| import eu.kanade.presentation.components.Divider | ||||
| import eu.kanade.presentation.components.EmptyScreen | ||||
| import eu.kanade.presentation.components.FastScrollLazyColumn | ||||
| import eu.kanade.presentation.more.settings.database.ClearDatabaseState | ||||
| import eu.kanade.presentation.util.plus | ||||
| import eu.kanade.tachiyomi.R | ||||
|  | ||||
| @Composable | ||||
| fun ClearDatabaseContent( | ||||
|     state: ClearDatabaseState, | ||||
|     contentPadding: PaddingValues, | ||||
|     lazyListState: LazyListState, | ||||
|     onClickSelection: (Source) -> Unit, | ||||
|     onClickDelete: () -> Unit, | ||||
| ) { | ||||
|     Crossfade(targetState = state.isEmpty.not()) { _state -> | ||||
|         when (_state) { | ||||
|             true -> FastScrollLazyColumn( | ||||
|                 contentPadding = contentPadding + WindowInsets.navigationBars.asPaddingValues(), | ||||
|                 state = lazyListState, | ||||
|             ) { | ||||
|                 items(state.items) { sourceWithCount -> | ||||
|                     ClearDatabaseItem( | ||||
|                         source = sourceWithCount.source, | ||||
|                         count = sourceWithCount.count, | ||||
|                         isSelected = state.selection.contains(sourceWithCount.id), | ||||
|                         onClickSelect = { onClickSelection(sourceWithCount.source) }, | ||||
|                     ) | ||||
|             true -> { | ||||
|                 Column( | ||||
|                     modifier = Modifier | ||||
|                         .padding(contentPadding) | ||||
|                         .fillMaxSize(), | ||||
|                 ) { | ||||
|                     FastScrollLazyColumn( | ||||
|                         modifier = Modifier.weight(1f), | ||||
|                     ) { | ||||
|                         items(state.items) { sourceWithCount -> | ||||
|                             ClearDatabaseItem( | ||||
|                                 source = sourceWithCount.source, | ||||
|                                 count = sourceWithCount.count, | ||||
|                                 isSelected = state.selection.contains(sourceWithCount.id), | ||||
|                                 onClickSelect = { onClickSelection(sourceWithCount.source) }, | ||||
|                             ) | ||||
|                         } | ||||
|                     } | ||||
|  | ||||
|                     Divider() | ||||
|  | ||||
|                     Button( | ||||
|                         modifier = Modifier | ||||
|                             .padding(horizontal = 16.dp, vertical = 8.dp) | ||||
|                             .fillMaxWidth(), | ||||
|                         onClick = onClickDelete, | ||||
|                         enabled = state.selection.isNotEmpty(), | ||||
|                     ) { | ||||
|                         Text( | ||||
|                             text = stringResource(R.string.action_delete), | ||||
|                             color = MaterialTheme.colorScheme.onPrimary, | ||||
|                         ) | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|             false -> EmptyScreen(message = stringResource(R.string.database_clean)) | ||||
|             false -> { | ||||
|                 EmptyScreen(message = stringResource(R.string.database_clean)) | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -1,43 +0,0 @@ | ||||
| package eu.kanade.presentation.more.settings.database.components | ||||
|  | ||||
| import androidx.compose.animation.AnimatedVisibility | ||||
| import androidx.compose.animation.fadeIn | ||||
| import androidx.compose.animation.fadeOut | ||||
| import androidx.compose.foundation.layout.navigationBarsPadding | ||||
| import androidx.compose.foundation.lazy.LazyListState | ||||
| import androidx.compose.material.icons.Icons | ||||
| import androidx.compose.material.icons.outlined.Delete | ||||
| import androidx.compose.material3.Icon | ||||
| import androidx.compose.material3.Text | ||||
| import androidx.compose.runtime.Composable | ||||
| import androidx.compose.ui.Modifier | ||||
| import androidx.compose.ui.res.stringResource | ||||
| import eu.kanade.presentation.components.ExtendedFloatingActionButton | ||||
| import eu.kanade.presentation.util.isScrolledToEnd | ||||
| import eu.kanade.presentation.util.isScrollingUp | ||||
| import eu.kanade.tachiyomi.R | ||||
|  | ||||
| @Composable | ||||
| fun ClearDatabaseFloatingActionButton( | ||||
|     isVisible: Boolean, | ||||
|     lazyListState: LazyListState, | ||||
|     onClickDelete: () -> Unit, | ||||
| ) { | ||||
|     AnimatedVisibility( | ||||
|         visible = isVisible, | ||||
|         enter = fadeIn(), | ||||
|         exit = fadeOut(), | ||||
|     ) { | ||||
|         ExtendedFloatingActionButton( | ||||
|             modifier = Modifier.navigationBarsPadding(), | ||||
|             text = { | ||||
|                 Text(text = stringResource(R.string.action_delete)) | ||||
|             }, | ||||
|             icon = { | ||||
|                 Icon(Icons.Outlined.Delete, contentDescription = "") | ||||
|             }, | ||||
|             onClick = onClickDelete, | ||||
|             expanded = lazyListState.isScrollingUp() || lazyListState.isScrolledToEnd(), | ||||
|         ) | ||||
|     } | ||||
| } | ||||
| @@ -2,14 +2,9 @@ package eu.kanade.presentation.updates | ||||
|  | ||||
| import androidx.activity.compose.BackHandler | ||||
| import androidx.compose.foundation.layout.PaddingValues | ||||
| import androidx.compose.foundation.layout.WindowInsets | ||||
| import androidx.compose.foundation.layout.WindowInsetsSides | ||||
| import androidx.compose.foundation.layout.asPaddingValues | ||||
| import androidx.compose.foundation.layout.calculateEndPadding | ||||
| import androidx.compose.foundation.layout.fillMaxHeight | ||||
| import androidx.compose.foundation.layout.fillMaxWidth | ||||
| import androidx.compose.foundation.layout.navigationBars | ||||
| import androidx.compose.foundation.layout.only | ||||
| import androidx.compose.foundation.lazy.rememberLazyListState | ||||
| import androidx.compose.material.icons.Icons | ||||
| import androidx.compose.material.icons.filled.FlipToBack | ||||
| @@ -112,7 +107,7 @@ fun UpdateScreen( | ||||
|             if (presenter.selectionMode) { | ||||
|                 PaddingValues() | ||||
|             } else { | ||||
|                 bottomNavPaddingValues + WindowInsets.navigationBars.only(WindowInsetsSides.Bottom).asPaddingValues() | ||||
|                 bottomNavPaddingValues | ||||
|             } | ||||
|  | ||||
|         val scope = rememberCoroutineScope() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user