diff --git a/app/src/main/java/io/legado/app/ui/book/cache/manage/BookCacheManageScreen.kt b/app/src/main/java/io/legado/app/ui/book/cache/manage/BookCacheManageScreen.kt index 619bdfcd2..04fac49e5 100644 --- a/app/src/main/java/io/legado/app/ui/book/cache/manage/BookCacheManageScreen.kt +++ b/app/src/main/java/io/legado/app/ui/book/cache/manage/BookCacheManageScreen.kt @@ -23,10 +23,9 @@ import androidx.compose.material.icons.filled.PlayArrow import androidx.compose.material.icons.filled.Refresh import androidx.compose.material.icons.filled.Stop import androidx.compose.material3.Checkbox -import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.FloatingActionButton -import androidx.compose.material3.LinearProgressIndicator +import io.legado.app.ui.widget.components.progressIndicator.AppCircularProgressIndicator import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue @@ -145,7 +144,7 @@ private fun BookCacheManageScreen( horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center, ) { - CircularProgressIndicator() + AppCircularProgressIndicator() } } else { LazyColumn( diff --git a/app/src/main/java/io/legado/app/ui/book/import/local/ImportBookScreen.kt b/app/src/main/java/io/legado/app/ui/book/import/local/ImportBookScreen.kt index b9c9434a0..115982a25 100644 --- a/app/src/main/java/io/legado/app/ui/book/import/local/ImportBookScreen.kt +++ b/app/src/main/java/io/legado/app/ui/book/import/local/ImportBookScreen.kt @@ -31,8 +31,8 @@ import androidx.compose.material.icons.filled.Folder import androidx.compose.material.icons.filled.FolderOpen import androidx.compose.material.icons.outlined.Book import androidx.compose.material.icons.outlined.Description -import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api +import io.legado.app.ui.widget.components.progressIndicator.AppCircularProgressIndicator import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField @@ -200,7 +200,7 @@ private fun ImportBookContent( ) { when { state.items.isEmpty() && state.isLoading -> { - CircularProgressIndicator(modifier = Modifier.fillMaxSize().wrapContentSize(Alignment.Center)) + AppCircularProgressIndicator(modifier = Modifier.fillMaxSize().wrapContentSize(Alignment.Center)) } state.items.isEmpty() -> { diff --git a/app/src/main/java/io/legado/app/ui/book/import/remote/RemoteBookScreen.kt b/app/src/main/java/io/legado/app/ui/book/import/remote/RemoteBookScreen.kt index d19be498e..63544bace 100644 --- a/app/src/main/java/io/legado/app/ui/book/import/remote/RemoteBookScreen.kt +++ b/app/src/main/java/io/legado/app/ui/book/import/remote/RemoteBookScreen.kt @@ -40,8 +40,8 @@ import androidx.compose.material.icons.outlined.AddCircleOutline import androidx.compose.material.icons.outlined.Book import androidx.compose.material.icons.outlined.CloudSync import androidx.compose.material.icons.outlined.Description -import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api +import io.legado.app.ui.widget.components.progressIndicator.AppCircularProgressIndicator import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -326,7 +326,7 @@ fun RemoteBookScreen( ) { if (uiState.items.isEmpty()) { if (uiState.isLoading) { - CircularProgressIndicator(modifier = Modifier.fillMaxSize().wrapContentSize(Alignment.Center)) + AppCircularProgressIndicator(modifier = Modifier.fillMaxSize().wrapContentSize(Alignment.Center)) } else { EmptyMessage( modifier = Modifier diff --git a/app/src/main/java/io/legado/app/ui/book/info/BookInfoScreen.kt b/app/src/main/java/io/legado/app/ui/book/info/BookInfoScreen.kt index e135eab6c..b6e8fcb56 100644 --- a/app/src/main/java/io/legado/app/ui/book/info/BookInfoScreen.kt +++ b/app/src/main/java/io/legado/app/ui/book/info/BookInfoScreen.kt @@ -36,8 +36,8 @@ import androidx.compose.material.icons.filled.Share import androidx.compose.material.icons.filled.Timeline import androidx.compose.material.icons.outlined.Book import androidx.compose.material3.CardDefaults -import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ElevatedCard +import io.legado.app.ui.widget.components.progressIndicator.AppCircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.ExtendedFloatingActionButton @@ -183,10 +183,7 @@ private fun BookInfoScreenContent( val book = state.book if (book == null) { Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) { - CircularProgressIndicator( - color = LegadoTheme.colorScheme.primary, - trackColor = LegadoTheme.colorScheme.surfaceContainerHighest, - ) + AppCircularProgressIndicator() } } else { Box(modifier = Modifier.fillMaxSize()) { @@ -1053,10 +1050,7 @@ private fun BookInfoDialogs( onDismissRequest = {}, content = { Box(modifier = Modifier.fillMaxWidth(), contentAlignment = Alignment.Center) { - CircularProgressIndicator( - color = LegadoTheme.colorScheme.primary, - trackColor = LegadoTheme.colorScheme.surfaceContainerHighest, - ) + AppCircularProgressIndicator() } } ) diff --git a/app/src/main/java/io/legado/app/ui/book/info/BookInfoSheets.kt b/app/src/main/java/io/legado/app/ui/book/info/BookInfoSheets.kt index 8d28281c3..b0439abf7 100644 --- a/app/src/main/java/io/legado/app/ui/book/info/BookInfoSheets.kt +++ b/app/src/main/java/io/legado/app/ui/book/info/BookInfoSheets.kt @@ -32,9 +32,8 @@ import androidx.compose.material.icons.filled.Refresh import androidx.compose.material.icons.outlined.FolderZip import androidx.compose.material.icons.outlined.Image import androidx.compose.material.icons.outlined.Settings -import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.Icon -import androidx.compose.material3.LinearProgressIndicator +import io.legado.app.ui.widget.components.progressIndicator.AppCircularProgressIndicator import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.DisposableEffect @@ -234,7 +233,7 @@ fun ChangeCoverSheet( } ) { if (isSearching) { - LinearProgressIndicator(modifier = Modifier.fillMaxWidth()) + AppLinearProgressIndicator(modifier = Modifier.fillMaxWidth()) Spacer(modifier = Modifier.height(12.dp)) } LazyVerticalGrid(columns = GridCells.Fixed(3), horizontalArrangement = Arrangement.spacedBy(12.dp), verticalArrangement = Arrangement.spacedBy(12.dp)) { @@ -588,7 +587,7 @@ fun ChangeSourceSheet( onDismissRequest = {}, content = { Box(modifier = Modifier.fillMaxWidth(), contentAlignment = Alignment.Center) { - CircularProgressIndicator() + AppCircularProgressIndicator() } } ) diff --git a/app/src/main/java/io/legado/app/ui/book/manage/BookshelfManageScreen.kt b/app/src/main/java/io/legado/app/ui/book/manage/BookshelfManageScreen.kt index 79a64cf4e..8d9eca087 100644 --- a/app/src/main/java/io/legado/app/ui/book/manage/BookshelfManageScreen.kt +++ b/app/src/main/java/io/legado/app/ui/book/manage/BookshelfManageScreen.kt @@ -41,10 +41,10 @@ import androidx.compose.material.icons.filled.SkipNext import androidx.compose.material.icons.filled.Stop import androidx.compose.material.icons.filled.Upload import androidx.compose.material3.Checkbox -import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.FloatingActionButtonMenu import androidx.compose.material3.FloatingActionButtonMenuItem +import io.legado.app.ui.widget.components.progressIndicator.AppCircularProgressIndicator import androidx.compose.material3.Icon import androidx.compose.material3.RadioButton import androidx.compose.material3.Text @@ -962,7 +962,7 @@ private fun BookshelfManageScreen( verticalArrangement = Arrangement.spacedBy(12.dp), ) { if (state.isChangingSource) { - CircularProgressIndicator() + AppCircularProgressIndicator() } AppText( text = state.changeSourceError ?: state.changeSourceProgress ?: "准备中", diff --git a/app/src/main/java/io/legado/app/ui/book/search/SearchScreen.kt b/app/src/main/java/io/legado/app/ui/book/search/SearchScreen.kt index 065c10d40..eb33451bc 100644 --- a/app/src/main/java/io/legado/app/ui/book/search/SearchScreen.kt +++ b/app/src/main/java/io/legado/app/ui/book/search/SearchScreen.kt @@ -27,8 +27,8 @@ import androidx.compose.material.icons.filled.History import androidx.compose.material.icons.filled.Layers import androidx.compose.material.icons.filled.PlayArrow import androidx.compose.material.icons.filled.Stop -import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api +import io.legado.app.ui.widget.components.progressIndicator.AppCircularProgressIndicator import androidx.compose.material3.Text import androidx.compose.material3.TopAppBarDefaults import io.legado.app.ui.widget.components.topbar.GlassMediumFlexibleTopAppBar @@ -685,7 +685,7 @@ private fun SearchResultFooter( modifier = Modifier.size(18.dp), contentAlignment = Alignment.Center ) { - CircularProgressIndicator() + AppCircularProgressIndicator() } AppText(text = stringResource(R.string.is_loading)) } diff --git a/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentScreen.kt b/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentScreen.kt index 32b97862a..ee0cc3af4 100644 --- a/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentScreen.kt +++ b/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentScreen.kt @@ -37,8 +37,8 @@ import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import io.legado.app.ui.widget.components.AppFloatingActionButton import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon -import androidx.compose.material3.LinearProgressIndicator import androidx.compose.material3.ListItem +import io.legado.app.ui.widget.components.progressIndicator.AppLinearProgressIndicator import androidx.compose.material3.ListItemDefaults import androidx.compose.material3.animateFloatingActionButton import androidx.compose.runtime.Composable @@ -175,7 +175,7 @@ fun SearchContentScreen( } AnimatedVisibility(visible = isSearching) { - LinearProgressIndicator(modifier = Modifier.fillMaxWidth()) + AppLinearProgressIndicator(modifier = Modifier.fillMaxWidth()) } } }, diff --git a/app/src/main/java/io/legado/app/ui/book/toc/TocScreen.kt b/app/src/main/java/io/legado/app/ui/book/toc/TocScreen.kt index ee19e3e7a..fb7e8dd17 100644 --- a/app/src/main/java/io/legado/app/ui/book/toc/TocScreen.kt +++ b/app/src/main/java/io/legado/app/ui/book/toc/TocScreen.kt @@ -52,8 +52,8 @@ import androidx.compose.material.icons.filled.VerticalAlignTop import androidx.compose.material.icons.outlined.DownloadForOffline import androidx.compose.material.icons.rounded.LocationOn import androidx.compose.material3.Checkbox -import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api +import io.legado.app.ui.widget.components.progressIndicator.AppCircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.FloatingActionButtonMenu import androidx.compose.material3.FloatingActionButtonMenuItem @@ -944,10 +944,8 @@ private fun StatusIcon( } "LOADING" -> { - CircularProgressIndicator( - modifier = Modifier.size(24.dp), - strokeWidth = 2.dp, - color = LegadoTheme.colorScheme.secondary + AppCircularProgressIndicator( + modifier = Modifier.size(24.dp) ) } 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 dc7972e02..7c2e8ef96 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 @@ -66,8 +66,8 @@ 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.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api +import io.legado.app.ui.widget.components.progressIndicator.AppCircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -1194,7 +1194,7 @@ private fun BookshelfOverlays( modifier = Modifier.padding(24.dp), horizontalAlignment = Alignment.CenterHorizontally ) { - CircularProgressIndicator() + AppCircularProgressIndicator() uiState.loadingText?.let { AppText( text = it, diff --git a/app/src/main/java/io/legado/app/ui/main/explore/ExploreScreen.kt b/app/src/main/java/io/legado/app/ui/main/explore/ExploreScreen.kt index d5e3d9ac4..23051211f 100644 --- a/app/src/main/java/io/legado/app/ui/main/explore/ExploreScreen.kt +++ b/app/src/main/java/io/legado/app/ui/main/explore/ExploreScreen.kt @@ -1,6 +1,7 @@ package io.legado.app.ui.main.explore import androidx.appcompat.app.AppCompatActivity +import androidx.compose.animation.AnimatedContent import androidx.compose.animation.animateColorAsState import androidx.compose.animation.core.FastOutSlowInEasing import androidx.compose.animation.core.animateFloatAsState @@ -27,8 +28,8 @@ import androidx.compose.material.icons.filled.Group import androidx.compose.material.icons.filled.Refresh import androidx.compose.material.icons.filled.Search import androidx.compose.material.icons.filled.VerticalAlignTop -import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api +import io.legado.app.ui.widget.components.progressIndicator.AppCircularProgressIndicator import androidx.compose.material3.Icon import androidx.compose.material3.ListItem import androidx.compose.material3.ListItemDefaults @@ -75,6 +76,7 @@ import io.legado.app.ui.widget.components.list.TopFloatingStickyItem import io.legado.app.ui.widget.components.menuItem.MenuItemIcon 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.AppContainedLoadingIndicator import io.legado.app.ui.widget.components.text.AppText import io.legado.app.utils.startActivity import kotlinx.coroutines.flow.collect @@ -356,20 +358,24 @@ fun ExploreSourceHeader( ) }, trailingContent = { - if (loadingKinds) { - CircularProgressIndicator( - modifier = Modifier.size(18.dp), - strokeWidth = 2.dp - ) - } else { - Icon( - imageVector = Icons.Default.ChevronRight, - contentDescription = null, - modifier = Modifier - .rotate(rotation) - .size(20.dp), - tint = MaterialTheme.colorScheme.onSurfaceVariant - ) + AnimatedContent( + targetState = loadingKinds, + label = "LoadingSwitch" + ) { loading -> + if (loading) { + AppContainedLoadingIndicator( + modifier = Modifier.size(18.dp) + ) + } else { + Icon( + imageVector = Icons.Default.ChevronRight, + contentDescription = null, + modifier = Modifier + .rotate(rotation) + .size(20.dp), + tint = MaterialTheme.colorScheme.onSurfaceVariant + ) + } } RoundDropdownMenu(expanded = showMenu, onDismissRequest = { showMenu = false }) { PillHeaderDivider(title = item.bookSourceName) diff --git a/app/src/main/java/io/legado/app/ui/rss/article/RssStartPage.kt b/app/src/main/java/io/legado/app/ui/rss/article/RssStartPage.kt index 81807cda2..bcb6e10d4 100644 --- a/app/src/main/java/io/legado/app/ui/rss/article/RssStartPage.kt +++ b/app/src/main/java/io/legado/app/ui/rss/article/RssStartPage.kt @@ -17,8 +17,8 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.statusBars import androidx.compose.foundation.layout.windowInsetsPadding -import androidx.compose.material3.LinearProgressIndicator import androidx.compose.runtime.Composable +import io.legado.app.ui.widget.components.progressIndicator.AppLinearProgressIndicator import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableIntStateOf @@ -78,8 +78,8 @@ fun RssStartPage( .windowInsetsPadding(WindowInsets.statusBars) ) { if (isLoading && progress < 100) { - LinearProgressIndicator( - progress = { progress / 100f }, + AppLinearProgressIndicator( + progress = progress / 100f, modifier = Modifier .fillMaxWidth() .padding(top = 4.dp) diff --git a/app/src/main/java/io/legado/app/ui/rss/read/RssReadRouteScreen.kt b/app/src/main/java/io/legado/app/ui/rss/read/RssReadRouteScreen.kt index b3ef11e90..3b54af471 100644 --- a/app/src/main/java/io/legado/app/ui/rss/read/RssReadRouteScreen.kt +++ b/app/src/main/java/io/legado/app/ui/rss/read/RssReadRouteScreen.kt @@ -41,8 +41,8 @@ import androidx.compose.material.icons.filled.Star import androidx.compose.material.icons.filled.Stop import androidx.compose.material.icons.filled.VolumeUp import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.LinearProgressIndicator import androidx.compose.material3.Icon +import io.legado.app.ui.widget.components.progressIndicator.AppLinearProgressIndicator import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar @@ -374,8 +374,8 @@ fun RssReadRouteScreen( } ) if (webProgress in 0..99) { - LinearProgressIndicator( - progress = { webProgress / 100f }, + AppLinearProgressIndicator( + progress = webProgress / 100f, modifier = Modifier.fillMaxWidth() ) } diff --git a/app/src/main/java/io/legado/app/ui/widget/components/AppPullToRefresh.kt b/app/src/main/java/io/legado/app/ui/widget/components/AppPullToRefresh.kt index 544eb1811..4d3b696dc 100644 --- a/app/src/main/java/io/legado/app/ui/widget/components/AppPullToRefresh.kt +++ b/app/src/main/java/io/legado/app/ui/widget/components/AppPullToRefresh.kt @@ -1,15 +1,21 @@ package io.legado.app.ui.widget.components import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.padding import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi +import androidx.compose.material3.pulltorefresh.PullToRefreshBox +import androidx.compose.material3.pulltorefresh.PullToRefreshDefaults +import androidx.compose.material3.pulltorefresh.rememberPullToRefreshState import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import io.legado.app.ui.theme.LegadoTheme.composeEngine import io.legado.app.ui.theme.ThemeResolver import top.yukonga.miuix.kmp.basic.PullToRefresh as MiuixPullToRefresh import top.yukonga.miuix.kmp.basic.rememberPullToRefreshState as miuixRememberPullToRefreshState -@OptIn(ExperimentalMaterial3Api::class) +@OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterial3ExpressiveApi::class) @Composable fun AppPullToRefresh( isRefreshing: Boolean, @@ -41,11 +47,19 @@ fun AppPullToRefresh( } } else { if (enabled) { - androidx.compose.material3.pulltorefresh.PullToRefreshBox( + val state = rememberPullToRefreshState() + PullToRefreshBox( isRefreshing = isRefreshing, onRefresh = onRefresh, modifier = modifier, - state = androidx.compose.material3.pulltorefresh.rememberPullToRefreshState(), + state = state, + indicator = { + PullToRefreshDefaults.LoadingIndicator( + state = state, + isRefreshing = isRefreshing, + modifier = Modifier.align(Alignment.TopCenter), + ) + } ) { content() } diff --git a/app/src/main/java/io/legado/app/ui/widget/components/EmptyMessage.kt b/app/src/main/java/io/legado/app/ui/widget/components/EmptyMessage.kt index 2281ccca4..c835f6747 100644 --- a/app/src/main/java/io/legado/app/ui/widget/components/EmptyMessage.kt +++ b/app/src/main/java/io/legado/app/ui/widget/components/EmptyMessage.kt @@ -9,8 +9,7 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.layout.wrapContentSize -import androidx.compose.material3.ContainedLoadingIndicator -import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi +import io.legado.app.ui.widget.components.progressIndicator.AppContainedLoadingIndicator import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -29,7 +28,6 @@ import io.legado.app.ui.widget.components.icon.AppIcons import io.legado.app.ui.widget.components.button.SmallTonalTextButton import io.legado.app.ui.widget.components.text.AnimatedTextLine -@OptIn(ExperimentalMaterial3ExpressiveApi::class) @Composable fun EmptyMessage( message: String, @@ -58,7 +56,7 @@ fun EmptyMessage( label = "LoadingStateAnimation" ) { loading -> if (loading) { - ContainedLoadingIndicator() + AppContainedLoadingIndicator() } else { AnimatedTextLine( text = currentFace, diff --git a/app/src/main/java/io/legado/app/ui/widget/components/button/AnimatedTextButton.kt b/app/src/main/java/io/legado/app/ui/widget/components/button/AnimatedTextButton.kt index e0bd24c2e..973e5973a 100644 --- a/app/src/main/java/io/legado/app/ui/widget/components/button/AnimatedTextButton.kt +++ b/app/src/main/java/io/legado/app/ui/widget/components/button/AnimatedTextButton.kt @@ -6,15 +6,13 @@ import androidx.compose.animation.core.tween import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut import androidx.compose.animation.togetherWith -import androidx.compose.material3.ContainedLoadingIndicator -import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.TextButton +import io.legado.app.ui.widget.components.progressIndicator.AppContainedLoadingIndicator import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import io.legado.app.ui.widget.components.text.AppText -@OptIn(ExperimentalMaterial3ExpressiveApi::class) @Composable fun AnimatedTextButton( isLoading: Boolean, @@ -36,7 +34,7 @@ fun AnimatedTextButton( label = "ButtonLoading" ) { loading -> if (loading) { - ContainedLoadingIndicator() + AppContainedLoadingIndicator() } else { AppText(text) } diff --git a/app/src/main/java/io/legado/app/ui/widget/components/progressIndicator/AppCircularProgressIndicator.kt b/app/src/main/java/io/legado/app/ui/widget/components/progressIndicator/AppCircularProgressIndicator.kt new file mode 100644 index 000000000..d56543b86 --- /dev/null +++ b/app/src/main/java/io/legado/app/ui/widget/components/progressIndicator/AppCircularProgressIndicator.kt @@ -0,0 +1,32 @@ +package io.legado.app.ui.widget.components.progressIndicator + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import io.legado.app.ui.theme.LegadoTheme.composeEngine +import io.legado.app.ui.theme.ThemeResolver +import androidx.compose.material3.CircularProgressIndicator +import top.yukonga.miuix.kmp.basic.CircularProgressIndicator as MiuixCircularProgressIndicator + +@Composable +fun AppCircularProgressIndicator( + modifier: Modifier = Modifier, + progress: Float? = null, +) { + if (ThemeResolver.isMiuixEngine(composeEngine)) { + MiuixCircularProgressIndicator( + modifier = modifier, + progress = progress + ) + } else { + if (progress != null) { + CircularProgressIndicator( + progress = { progress }, + modifier = modifier + ) + } else { + CircularProgressIndicator( + modifier = modifier + ) + } + } +} diff --git a/app/src/main/java/io/legado/app/ui/widget/components/progressIndicator/AppContainedLoadingIndicator.kt b/app/src/main/java/io/legado/app/ui/widget/components/progressIndicator/AppContainedLoadingIndicator.kt new file mode 100644 index 000000000..4196f69ed --- /dev/null +++ b/app/src/main/java/io/legado/app/ui/widget/components/progressIndicator/AppContainedLoadingIndicator.kt @@ -0,0 +1,25 @@ +package io.legado.app.ui.widget.components.progressIndicator + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import io.legado.app.ui.theme.LegadoTheme.composeEngine +import io.legado.app.ui.theme.ThemeResolver +import androidx.compose.material3.ContainedLoadingIndicator +import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi +import top.yukonga.miuix.kmp.basic.InfiniteProgressIndicator as MiuixInfiniteProgressIndicator + +@OptIn(ExperimentalMaterial3ExpressiveApi::class) +@Composable +fun AppContainedLoadingIndicator( + modifier: Modifier = Modifier, +) { + if (ThemeResolver.isMiuixEngine(composeEngine)) { + MiuixInfiniteProgressIndicator( + modifier = modifier, + ) + } else { + ContainedLoadingIndicator( + modifier = modifier + ) + } +} diff --git a/app/src/main/java/io/legado/app/ui/widget/components/progressIndicator/AppLinearProgressIndicator.kt b/app/src/main/java/io/legado/app/ui/widget/components/progressIndicator/AppLinearProgressIndicator.kt new file mode 100644 index 000000000..691a0eb63 --- /dev/null +++ b/app/src/main/java/io/legado/app/ui/widget/components/progressIndicator/AppLinearProgressIndicator.kt @@ -0,0 +1,32 @@ +package io.legado.app.ui.widget.components.progressIndicator + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import io.legado.app.ui.theme.LegadoTheme.composeEngine +import io.legado.app.ui.theme.ThemeResolver +import androidx.compose.material3.LinearProgressIndicator +import top.yukonga.miuix.kmp.basic.LinearProgressIndicator as MiuixLinearProgressIndicator + +@Composable +fun AppLinearProgressIndicator( + modifier: Modifier = Modifier, + progress: Float? = null, +) { + if (ThemeResolver.isMiuixEngine(composeEngine)) { + MiuixLinearProgressIndicator( + modifier = modifier, + progress = progress + ) + } else { + if (progress != null) { + LinearProgressIndicator( + progress = { progress }, + modifier = modifier + ) + } else { + LinearProgressIndicator( + modifier = modifier + ) + } + } +}