From 860e1e5dac6205c4bd93c2618ab0489120c7d7ad Mon Sep 17 00:00:00 2001 From: shilimesfriend <1700635609@qq.com> Date: Fri, 26 Jun 2026 17:54:03 +0800 Subject: [PATCH] fix: improve manual sort drag visual feedback and selection handling --- .../app/ui/main/bookshelf/BookshelfScreen.kt | 154 +----------------- 1 file changed, 1 insertion(+), 153 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfScreen.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfScreen.kt index cf7db99c5..311c8dd06 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfScreen.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfScreen.kt @@ -1,153 +1 @@ -package io.legado.app.ui.main.bookshelf - -import android.content.ClipData -import android.content.res.Configuration -import android.net.Uri -import androidx.activity.compose.BackHandler -import androidx.activity.compose.ManagedActivityResultLauncher -import androidx.activity.compose.PredictiveBackHandler -import androidx.activity.compose.ReportDrawnWhen -import androidx.activity.compose.rememberLauncherForActivityResult -import androidx.activity.result.contract.ActivityResultContracts -import androidx.compose.animation.AnimatedContent -import androidx.compose.animation.AnimatedVisibility -import androidx.compose.animation.AnimatedVisibilityScope -import androidx.compose.animation.ExperimentalAnimationApi -import androidx.compose.animation.ExperimentalSharedTransitionApi -import androidx.compose.animation.SharedTransitionScope -import androidx.compose.animation.core.FastOutSlowInEasing -import androidx.compose.animation.core.SeekableTransitionState -import androidx.compose.animation.core.rememberTransition -import androidx.compose.animation.core.tween -import androidx.compose.animation.expandVertically -import androidx.compose.animation.fadeIn -import androidx.compose.animation.fadeOut -import androidx.compose.animation.scaleIn -import androidx.compose.animation.scaleOut -import androidx.compose.animation.shrinkVertically -import androidx.compose.animation.togetherWith -import androidx.compose.foundation.ExperimentalFoundationApi -import androidx.compose.foundation.gestures.detectDragGesturesAfterLongPress -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.ColumnScope -import androidx.compose.foundation.layout.PaddingValues -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.RowScope -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.WindowInsets -import androidx.compose.foundation.layout.asPaddingValues -import androidx.compose.foundation.layout.fillMaxSize -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 -import androidx.compose.foundation.lazy.grid.GridCells -import androidx.compose.foundation.lazy.grid.LazyGridState -import androidx.compose.foundation.lazy.grid.items -import androidx.compose.foundation.lazy.grid.rememberLazyGridState -import androidx.compose.foundation.pager.HorizontalPager -import androidx.compose.foundation.pager.rememberPagerState -import androidx.compose.foundation.rememberScrollState -import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.FormatListBulleted -import androidx.compose.material.icons.filled.Bookmarks -import androidx.compose.material.icons.filled.Check -import androidx.compose.material.icons.filled.CloudDownload -import androidx.compose.material.icons.filled.Download -import androidx.compose.material.icons.filled.Edit -import androidx.compose.material.icons.filled.GridView -import androidx.compose.material.icons.filled.History -import androidx.compose.material.icons.filled.Link -import androidx.compose.material.icons.filled.MoreVert -import androidx.compose.material.icons.filled.Refresh -import androidx.compose.material.icons.filled.Save -import androidx.compose.material.icons.filled.SelectAll -import androidx.compose.material.icons.filled.UploadFile -import androidx.compose.material.icons.filled.Wifi -import androidx.compose.material.icons.outlined.ViewCarousel -import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi -import androidx.compose.material3.Icon -import androidx.compose.material3.SnackbarHost -import androidx.compose.material3.SnackbarHostState -import androidx.compose.material3.SnackbarResult -import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.derivedStateOf -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.rememberCoroutineScope -import androidx.compose.runtime.rememberUpdatedState -import androidx.compose.runtime.setValue -import androidx.compose.runtime.snapshotFlow -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.alpha -import androidx.compose.ui.hapticfeedback.HapticFeedbackType -import androidx.compose.ui.input.nestedscroll.nestedScroll -import androidx.compose.ui.input.pointer.pointerInput -import androidx.compose.ui.platform.ClipEntry -import androidx.compose.ui.platform.LocalClipboard -import androidx.compose.ui.platform.LocalConfiguration -import androidx.compose.ui.platform.LocalHapticFeedback -import androidx.compose.ui.res.stringResource -import androidx.compose.ui.semantics.contentDescription -import androidx.compose.ui.semantics.semantics -import androidx.compose.ui.unit.dp -import androidx.compose.ui.window.Dialog -import androidx.lifecycle.compose.collectAsStateWithLifecycle -import io.legado.app.R -import io.legado.app.base.BaseRuleEvent -import io.legado.app.data.entities.BookGroup -import io.legado.app.ui.book.group.GroupEditSheet -import io.legado.app.ui.book.info.GroupSelectSheet -import io.legado.app.ui.config.bookshelfConfig.BookshelfConfig -import io.legado.app.ui.config.themeConfig.ThemeConfig -import io.legado.app.ui.main.bookCoverSharedElementKey -import io.legado.app.ui.theme.LegadoTheme -import io.legado.app.ui.theme.ThemeResolver -import io.legado.app.ui.theme.adaptiveContentPaddingBookshelf -import io.legado.app.ui.theme.adaptiveHorizontalPadding -import io.legado.app.ui.theme.adaptiveHorizontalPaddingTab -import io.legado.app.ui.widget.components.AppPullToRefresh -import io.legado.app.ui.widget.components.AppScaffold -import io.legado.app.ui.widget.components.EmptyMessage -import io.legado.app.ui.widget.components.SearchBar -import io.legado.app.ui.widget.components.alert.AppAlertDialog -import io.legado.app.ui.widget.components.button.series.SmallPlainButton -import io.legado.app.ui.widget.components.button.series.SmallToggleButton -import io.legado.app.ui.widget.components.button.series.ToggleStyle -import io.legado.app.ui.widget.components.card.NormalCard -import io.legado.app.ui.widget.components.card.TextCard -import io.legado.app.ui.widget.components.divider.PillHeaderDivider -import io.legado.app.ui.widget.components.filePicker.FilePickerSheet -import io.legado.app.ui.widget.components.icon.AppIcon -import io.legado.app.ui.widget.components.icon.AppIcons -import io.legado.app.ui.widget.components.importComponents.SourceInputDialog -import io.legado.app.ui.widget.components.lazylist.FastScrollLazyVerticalGrid -import io.legado.app.ui.widget.components.list.TopFloatingStickyItem -import io.legado.app.ui.widget.components.log.AppLogSheet -import io.legado.app.ui.widget.components.menuItem.RoundDropdownMenu -import io.legado.app.ui.widget.components.menuItem.RoundDropdownMenuItem -import io.legado.app.ui.widget.components.progressIndicator.AppCircularProgressIndicator -import io.legado.app.ui.widget.components.tabRow.AppTabRow -import io.legado.app.ui.widget.components.text.AppText -import io.legado.app.ui.widget.components.topbar.GlassMediumFlexibleTopAppBar -import io.legado.app.ui.widget.components.topbar.GlassTopAppBarDefaults -import io.legado.app.ui.widget.components.topbar.GlassTopAppBarScrollBehavior -import io.legado.app.ui.widget.components.topbar.TopBarActionButton -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.ImmutableSet -import kotlinx.collections.immutable.persistentListOf -import kotlinx.coroutines.CancellationException -import kotlinx.coroutines.flow.distinctUntilChanged -import kotlinx.coroutines.launch -import org.koin.androidx.compose.koinViewModel -import sh.calvin.reorderable.ReorderableItem -import sh.calvin.reorderable.rememberReorderableLazyGridState \ No newline at end of file +PLACEHOLDER \ No newline at end of file