Explorar o código

为网络导入添加错误状态

HapeLee hai 5 meses
pai
achega
139dd76f3e

+ 3 - 16
app/src/main/java/io/legado/app/ui/book/toc/TocScreen.kt

@@ -17,7 +17,6 @@ import androidx.compose.animation.scaleOut
 import androidx.compose.animation.slideInVertically
 import androidx.compose.animation.slideInVertically
 import androidx.compose.animation.slideOutVertically
 import androidx.compose.animation.slideOutVertically
 import androidx.compose.animation.togetherWith
 import androidx.compose.animation.togetherWith
-import androidx.compose.foundation.BorderStroke
 import androidx.compose.foundation.ExperimentalFoundationApi
 import androidx.compose.foundation.ExperimentalFoundationApi
 import androidx.compose.foundation.combinedClickable
 import androidx.compose.foundation.combinedClickable
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Box
@@ -51,9 +50,7 @@ import androidx.compose.material.icons.filled.VerticalAlignBottom
 import androidx.compose.material.icons.filled.VerticalAlignTop
 import androidx.compose.material.icons.filled.VerticalAlignTop
 import androidx.compose.material.icons.outlined.DownloadForOffline
 import androidx.compose.material.icons.outlined.DownloadForOffline
 import androidx.compose.material.icons.rounded.LocationOn
 import androidx.compose.material.icons.rounded.LocationOn
-import androidx.compose.material3.Checkbox
 import androidx.compose.material3.ExperimentalMaterial3Api
 import androidx.compose.material3.ExperimentalMaterial3Api
-import io.legado.app.ui.widget.components.progressIndicator.AppCircularProgressIndicator
 import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
 import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
 import androidx.compose.material3.FloatingActionButtonMenu
 import androidx.compose.material3.FloatingActionButtonMenu
 import androidx.compose.material3.FloatingActionButtonMenuItem
 import androidx.compose.material3.FloatingActionButtonMenuItem
@@ -108,7 +105,6 @@ 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.card.TextCard
 import io.legado.app.ui.widget.components.divider.PillDivider
 import io.legado.app.ui.widget.components.divider.PillDivider
 import io.legado.app.ui.widget.components.divider.PillHeaderDivider
 import io.legado.app.ui.widget.components.divider.PillHeaderDivider
-import io.legado.app.ui.widget.components.icon.AppIcon
 import io.legado.app.ui.widget.components.lazylist.FastScrollLazyColumn
 import io.legado.app.ui.widget.components.lazylist.FastScrollLazyColumn
 import io.legado.app.ui.widget.components.list.TopFloatingStickyItem
 import io.legado.app.ui.widget.components.list.TopFloatingStickyItem
 import io.legado.app.ui.widget.components.menuItem.RoundDropdownMenu
 import io.legado.app.ui.widget.components.menuItem.RoundDropdownMenu
@@ -350,16 +346,12 @@ fun TocScreen(
                         0 -> {
                         0 -> {
                             RoundDropdownMenuItem(
                             RoundDropdownMenuItem(
                                 text = "使用替换规则",
                                 text = "使用替换规则",
-                                trailingIcon = {
-                                    Checkbox(checked = useReplace, onCheckedChange = null)
-                                },
+                                isSelected = useReplace,
                                 onClick = { viewModel.toggleUseReplace() }
                                 onClick = { viewModel.toggleUseReplace() }
                             )
                             )
                             RoundDropdownMenuItem(
                             RoundDropdownMenuItem(
                                 text = "显示字数",
                                 text = "显示字数",
-                                trailingIcon = {
-                                    Checkbox(checked = showWordCount, onCheckedChange = null)
-                                },
+                                isSelected = showWordCount,
                                 onClick = { viewModel.toggleShowWordCount() }
                                 onClick = { viewModel.toggleShowWordCount() }
                             )
                             )
                             RoundDropdownMenuItem(
                             RoundDropdownMenuItem(
@@ -407,12 +399,7 @@ fun TocScreen(
                                 )
                                 )
                                 RoundDropdownMenuItem(
                                 RoundDropdownMenuItem(
                                     text = "拆分超长章节",
                                     text = "拆分超长章节",
-                                    trailingIcon = {
-                                        Checkbox(
-                                            checked = viewModel.isSplitLongChapter,
-                                            onCheckedChange = null
-                                        )
-                                    },
+                                    isSelected = viewModel.isSplitLongChapter,
                                     onClick = {
                                     onClick = {
                                         viewModel.toggleSplitLongChapter()
                                         viewModel.toggleSplitLongChapter()
                                         dismiss()
                                         dismiss()

+ 29 - 0
app/src/main/java/io/legado/app/ui/widget/components/importComponents/ImportComponents.kt

@@ -29,6 +29,7 @@ import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.setValue
 import androidx.compose.runtime.setValue
+import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.platform.LocalConfiguration
 import androidx.compose.ui.platform.LocalConfiguration
 import androidx.compose.ui.res.stringResource
 import androidx.compose.ui.res.stringResource
@@ -47,6 +48,7 @@ import io.legado.app.ui.widget.components.button.SmallIconButton
 import io.legado.app.ui.widget.components.card.GlassCard
 import io.legado.app.ui.widget.components.card.GlassCard
 import io.legado.app.ui.widget.components.card.SelectionItemCard
 import io.legado.app.ui.widget.components.card.SelectionItemCard
 import io.legado.app.ui.widget.components.modalBottomSheet.AppModalBottomSheet
 import io.legado.app.ui.widget.components.modalBottomSheet.AppModalBottomSheet
+import io.legado.app.ui.widget.components.progressIndicator.AppCircularProgressIndicator
 import io.legado.app.ui.widget.components.settingItem.SwitchSettingItem
 import io.legado.app.ui.widget.components.settingItem.SwitchSettingItem
 import io.legado.app.ui.widget.components.text.AppText
 import io.legado.app.ui.widget.components.text.AppText
 import io.legado.app.utils.GSON
 import io.legado.app.utils.GSON
@@ -72,6 +74,7 @@ fun SourceInputDialog(
                 AppTextField(
                 AppTextField(
                     value = text,
                     value = text,
                     onValueChange = { text = it },
                     onValueChange = { text = it },
+                    backgroundColor = LegadoTheme.colorScheme.onSheetContent,
                     label = hint,
                     label = hint,
                     modifier = Modifier.fillMaxWidth(),
                     modifier = Modifier.fillMaxWidth(),
                     maxLines = 5
                     maxLines = 5
@@ -118,6 +121,32 @@ fun <T> BatchImportDialog(
     itemTitle: (data: T) -> String,
     itemTitle: (data: T) -> String,
     itemSubtitle: (data: T) -> String? = { null }
     itemSubtitle: (data: T) -> String? = { null }
 ) {
 ) {
+    AppAlertDialog(
+        data = importState as? BaseImportUiState.Loading,
+        onDismissRequest = onDismissRequest,
+        title = stringResource(R.string.loading),
+        content = {
+            Box(
+                modifier = Modifier
+                    .fillMaxWidth()
+                    .padding(vertical = 16.dp),
+                contentAlignment = Alignment.Center
+            ) {
+                AppCircularProgressIndicator()
+            }
+        }
+    )
+
+    AppAlertDialog(
+        data = importState as? BaseImportUiState.Error,
+        onDismissRequest = onDismissRequest,
+        title = stringResource(R.string.error),
+        onConfirm = { onDismissRequest() },
+        content = { error ->
+            AppText(error.msg)
+        }
+    )
+
     val show = importState is BaseImportUiState.Success<T>
     val show = importState is BaseImportUiState.Success<T>
 
 
     var cachedState by remember { mutableStateOf<BaseImportUiState.Success<T>?>(null) }
     var cachedState by remember { mutableStateOf<BaseImportUiState.Success<T>?>(null) }