From 5f77b67996433dc6e443dd1dfb28bb5396ef2a74 Mon Sep 17 00:00:00 2001 From: Him188 Date: Sat, 1 Feb 2025 16:38:24 +0000 Subject: [PATCH] Unify UI top-level screen names Page/Scene -> Screen --- .../data/models/preference/UISettings.kt | 4 +- .../kotlin/navigation/AniNavigator.kt | 2 +- .../commonMain/kotlin/navigation/NavRoutes.kt | 26 ++++---- .../ui/cache/CacheManagePage.android.kt | 4 +- .../details/CacheGroupDetailsPage.android.kt | 4 +- .../ui/exploration/ExplorationPage.android.kt | 4 +- .../ui/subject/episode/EpisodePage.android.kt | 13 +++- .../kotlin/ui/cache/CacheManagementPage.kt | 8 +-- .../ui/cache/details/CacheGroupDetailsPage.kt | 6 +- .../kotlin/ui/main/AniAppContent.kt | 60 +++++++++---------- .../ui/main/{MainScene.kt => MainScreen.kt} | 44 +++++++------- .../ui/profile/auth/BangumiOAuthPage.kt | 4 +- .../ui/profile/auth/BangumiTokenAuthPage.kt | 4 +- .../ui/subject/cache/SubjectCacheScene.kt | 4 +- .../kotlin/ui/subject/episode/EpisodePage.kt | 18 +++--- .../subject/episode/details/EpisodeDetails.kt | 4 +- .../schedule/SchedulePage.android.kt | 2 +- ...xplorationPage.kt => ExplorationScreen.kt} | 2 +- .../{SchedulePage.kt => ScheduleScreen.kt} | 40 ++++++------- ...ePageViewModel.kt => ScheduleViewModel.kt} | 4 +- .../source/EditRssMediaSource.android.kt | 8 +-- .../{SettingsPage.kt => SettingsScreen.kt} | 2 +- .../mediasource/rss/EditRssMediaSource.kt | 6 +- .../selector/EditSelectorMediaSourcePage.kt | 6 +- .../ui/settings/tabs/app/AppSettingsTab.kt | 4 +- .../media/torrent/peer/PeerFilterSettings.kt | 2 +- .../details/SubjectDetailsPage.android.kt | 8 +-- .../ui/subject/details/SubjectDetailsPage.kt | 16 ++--- 28 files changed, 159 insertions(+), 150 deletions(-) rename app/shared/src/commonMain/kotlin/ui/main/{MainScene.kt => MainScreen.kt} (91%) rename app/shared/ui-exploration/src/commonMain/kotlin/ui/exploration/{ExplorationPage.kt => ExplorationScreen.kt} (99%) rename app/shared/ui-exploration/src/commonMain/kotlin/ui/exploration/schedule/{SchedulePage.kt => ScheduleScreen.kt} (93%) rename app/shared/ui-exploration/src/commonMain/kotlin/ui/exploration/schedule/{SchedulePageViewModel.kt => ScheduleViewModel.kt} (98%) rename app/shared/ui-settings/src/commonMain/kotlin/ui/settings/{SettingsPage.kt => SettingsScreen.kt} (99%) diff --git a/app/shared/app-data/src/commonMain/kotlin/data/models/preference/UISettings.kt b/app/shared/app-data/src/commonMain/kotlin/data/models/preference/UISettings.kt index be4abaa068..deb2ee0b45 100644 --- a/app/shared/app-data/src/commonMain/kotlin/data/models/preference/UISettings.kt +++ b/app/shared/app-data/src/commonMain/kotlin/data/models/preference/UISettings.kt @@ -13,7 +13,7 @@ import androidx.compose.runtime.Immutable import androidx.compose.runtime.Stable import kotlinx.serialization.Serializable import kotlinx.serialization.Transient -import me.him188.ani.app.navigation.MainScenePage +import me.him188.ani.app.navigation.MainScreenPage @Serializable @Immutable @@ -21,7 +21,7 @@ data class UISettings( /** * 启动 App 时的初始页面 */ - val mainSceneInitialPage: MainScenePage = MainScenePage.Exploration, + val mainSceneInitialPage: MainScreenPage = MainScreenPage.Exploration, @Suppress("DEPRECATION") @Deprecated( "For migration. Use themeSettings instead", diff --git a/app/shared/app-platform/src/commonMain/kotlin/navigation/AniNavigator.kt b/app/shared/app-platform/src/commonMain/kotlin/navigation/AniNavigator.kt index 142df37cc2..8c2cc148a8 100644 --- a/app/shared/app-platform/src/commonMain/kotlin/navigation/AniNavigator.kt +++ b/app/shared/app-platform/src/commonMain/kotlin/navigation/AniNavigator.kt @@ -88,7 +88,7 @@ interface AniNavigator { } fun navigateMain( - page: MainScenePage, + page: MainScreenPage, requestFocus: Boolean = false ) { navigator.popBackStack(inclusive = false) diff --git a/app/shared/app-platform/src/commonMain/kotlin/navigation/NavRoutes.kt b/app/shared/app-platform/src/commonMain/kotlin/navigation/NavRoutes.kt index 3d2a62787f..13e7428944 100644 --- a/app/shared/app-platform/src/commonMain/kotlin/navigation/NavRoutes.kt +++ b/app/shared/app-platform/src/commonMain/kotlin/navigation/NavRoutes.kt @@ -25,7 +25,7 @@ sealed class NavRoutes { @Serializable data class Main( - val initialPage: MainScenePage, + val initialPage: MainScreenPage, val requestSearchFocus: Boolean = false, ) : NavRoutes() @@ -96,7 +96,7 @@ data class SubjectDetailPlaceholder( } @Serializable -enum class MainScenePage { +enum class MainScreenPage { Exploration, Collection, CacheManagement, @@ -108,7 +108,7 @@ enum class MainScenePage { @Stable val NavType by lazy(LazyThreadSafetyMode.PUBLICATION) { - EnumNavType(kotlin.enums.enumEntries()) + EnumNavType(kotlin.enums.enumEntries()) } } } @@ -142,17 +142,17 @@ enum class SettingsTab { } @Stable -fun MainScenePage.getIcon() = when (this) { - MainScenePage.Exploration -> Icons.Rounded.TravelExplore - MainScenePage.Collection -> Icons.Rounded.Star - MainScenePage.CacheManagement -> Icons.Rounded.DownloadDone - MainScenePage.Search -> Icons.Rounded.Search +fun MainScreenPage.getIcon() = when (this) { + MainScreenPage.Exploration -> Icons.Rounded.TravelExplore + MainScreenPage.Collection -> Icons.Rounded.Star + MainScreenPage.CacheManagement -> Icons.Rounded.DownloadDone + MainScreenPage.Search -> Icons.Rounded.Search } @Stable -fun MainScenePage.getText(): String = when (this) { - MainScenePage.Exploration -> "探索" - MainScenePage.Collection -> "追番" - MainScenePage.CacheManagement -> "缓存" - MainScenePage.Search -> "搜索" +fun MainScreenPage.getText(): String = when (this) { + MainScreenPage.Exploration -> "探索" + MainScreenPage.Collection -> "追番" + MainScreenPage.CacheManagement -> "缓存" + MainScreenPage.Search -> "搜索" } diff --git a/app/shared/src/androidMain/kotlin/ui/cache/CacheManagePage.android.kt b/app/shared/src/androidMain/kotlin/ui/cache/CacheManagePage.android.kt index f82fb4540e..227b2451be 100644 --- a/app/shared/src/androidMain/kotlin/ui/cache/CacheManagePage.android.kt +++ b/app/shared/src/androidMain/kotlin/ui/cache/CacheManagePage.android.kt @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 OpenAni and contributors. + * Copyright (C) 2024-2025 OpenAni and contributors. * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. * Use of this source code is governed by the GNU AGPLv3 license, which can be found at the following link. @@ -36,7 +36,7 @@ import me.him188.ani.utils.platform.annotations.TestOnly @Composable fun PreviewCacheManagementPage() { ProvideCompositionLocalsForPreview { - CacheManagementPage( + CacheManagementScreen( state = remember { CacheManagementState( stateOf(createTestMediaStats()), diff --git a/app/shared/src/androidMain/kotlin/ui/cache/details/CacheGroupDetailsPage.android.kt b/app/shared/src/androidMain/kotlin/ui/cache/details/CacheGroupDetailsPage.android.kt index 1f10fbbfb0..2a77261df4 100644 --- a/app/shared/src/androidMain/kotlin/ui/cache/details/CacheGroupDetailsPage.android.kt +++ b/app/shared/src/androidMain/kotlin/ui/cache/details/CacheGroupDetailsPage.android.kt @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 OpenAni and contributors. + * Copyright (C) 2024-2025 OpenAni and contributors. * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. * Use of this source code is governed by the GNU AGPLv3 license, which can be found at the following link. @@ -21,5 +21,5 @@ import me.him188.ani.utils.platform.annotations.TestOnly @Composable @Preview fun PreviewMediaCacheDetailsPage() = ProvideCompositionLocalsForPreview { - MediaCacheDetailsPage(TestMediaList[0], MikanMediaSource.INFO, { BackNavigationIconButton({ }) }) + MediaCacheDetailsScreen(TestMediaList[0], MikanMediaSource.INFO, { BackNavigationIconButton({ }) }) } diff --git a/app/shared/src/androidMain/kotlin/ui/exploration/ExplorationPage.android.kt b/app/shared/src/androidMain/kotlin/ui/exploration/ExplorationPage.android.kt index ec637e505c..16d2400ebf 100644 --- a/app/shared/src/androidMain/kotlin/ui/exploration/ExplorationPage.android.kt +++ b/app/shared/src/androidMain/kotlin/ui/exploration/ExplorationPage.android.kt @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 OpenAni and contributors. + * Copyright (C) 2024-2025 OpenAni and contributors. * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. * Use of this source code is governed by the GNU AGPLv3 license, which can be found at the following link. @@ -34,7 +34,7 @@ internal fun PreviewExplorationPage() { ProvideFoundationCompositionLocalsForPreview { val scope = rememberCoroutineScope() val trendingSubjectInfoPager = createTestPager(TestTrendingSubjectInfos).collectAsLazyPagingItemsWithLifecycle() - ExplorationPage( + ExplorationScreen( remember { ExplorationPageState( authState = createTestAuthState(scope), diff --git a/app/shared/src/androidMain/kotlin/ui/subject/episode/EpisodePage.android.kt b/app/shared/src/androidMain/kotlin/ui/subject/episode/EpisodePage.android.kt index e5f1d43382..ba4f23add1 100644 --- a/app/shared/src/androidMain/kotlin/ui/subject/episode/EpisodePage.android.kt +++ b/app/shared/src/androidMain/kotlin/ui/subject/episode/EpisodePage.android.kt @@ -1,3 +1,12 @@ +/* + * Copyright (C) 2024-2025 OpenAni and contributors. + * + * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. + * Use of this source code is governed by the GNU AGPLv3 license, which can be found at the following link. + * + * https://github.com/open-ani/ani/blob/main/LICENSE + */ + package me.him188.ani.app.ui.subject.episode import androidx.compose.foundation.layout.Box @@ -20,7 +29,7 @@ import me.him188.ani.app.ui.foundation.ProvideCompositionLocalsForPreview internal fun PreviewEpisodePage() { ProvideCompositionLocalsForPreview { val context = LocalContext.current - EpisodeScene( + EpisodeScreen( remember { EpisodeViewModel( 424663, @@ -36,7 +45,7 @@ internal fun PreviewEpisodePage() { @PreviewLightDark fun PreviewEpisodeSceneContentPhoneScaffoldTabs() { ProvideCompositionLocalsForPreview { - EpisodeSceneContentPhoneScaffold( + EpisodeScreenContentPhoneScaffold( videoOnly = false, commentCount = { 100 }, video = { diff --git a/app/shared/src/commonMain/kotlin/ui/cache/CacheManagementPage.kt b/app/shared/src/commonMain/kotlin/ui/cache/CacheManagementPage.kt index d68c25d1b7..d835910edf 100644 --- a/app/shared/src/commonMain/kotlin/ui/cache/CacheManagementPage.kt +++ b/app/shared/src/commonMain/kotlin/ui/cache/CacheManagementPage.kt @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 OpenAni and contributors. + * Copyright (C) 2024-2025 OpenAni and contributors. * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. * Use of this source code is governed by the GNU AGPLv3 license, which can be found at the following link. @@ -238,13 +238,13 @@ class CacheManagementState( * 全局缓存管理页面 */ @Composable -fun CacheManagementPage( +fun CacheManagementScreen( vm: CacheManagementViewModel, navigationIcon: @Composable () -> Unit, modifier: Modifier = Modifier, contentWindowInsets: WindowInsets = AniWindowInsets.forPageContent(), ) { - CacheManagementPage( + CacheManagementScreen( vm.state, navigationIcon = navigationIcon, modifier = modifier, @@ -255,7 +255,7 @@ fun CacheManagementPage( @Composable -fun CacheManagementPage( +fun CacheManagementScreen( state: CacheManagementState, navigationIcon: @Composable () -> Unit, modifier: Modifier = Modifier, diff --git a/app/shared/src/commonMain/kotlin/ui/cache/details/CacheGroupDetailsPage.kt b/app/shared/src/commonMain/kotlin/ui/cache/details/CacheGroupDetailsPage.kt index e7075258b0..ca05fee874 100644 --- a/app/shared/src/commonMain/kotlin/ui/cache/details/CacheGroupDetailsPage.kt +++ b/app/shared/src/commonMain/kotlin/ui/cache/details/CacheGroupDetailsPage.kt @@ -74,13 +74,13 @@ class MediaCacheDetailsPageViewModel( } @Composable -fun MediaCacheDetailsPage( +fun MediaCacheDetailsScreen( vm: MediaCacheDetailsPageViewModel, navigationIcon: @Composable () -> Unit, modifier: Modifier = Modifier, windowInsets: WindowInsets = ScaffoldDefaults.contentWindowInsets, ) { - MediaCacheDetailsPage( + MediaCacheDetailsScreen( media = vm.media, sourceInfo = vm.sourceInfo, navigationIcon = navigationIcon, @@ -90,7 +90,7 @@ fun MediaCacheDetailsPage( } @Composable -fun MediaCacheDetailsPage( +fun MediaCacheDetailsScreen( media: Media?, sourceInfo: MediaSourceInfo?, navigationIcon: @Composable () -> Unit, diff --git a/app/shared/src/commonMain/kotlin/ui/main/AniAppContent.kt b/app/shared/src/commonMain/kotlin/ui/main/AniAppContent.kt index 159f95c616..d7a7b4ca5f 100644 --- a/app/shared/src/commonMain/kotlin/ui/main/AniAppContent.kt +++ b/app/shared/src/commonMain/kotlin/ui/main/AniAppContent.kt @@ -42,20 +42,20 @@ import me.him188.ani.app.domain.mediasource.rss.RssMediaSource import me.him188.ani.app.domain.mediasource.web.SelectorMediaSource import me.him188.ani.app.navigation.AniNavigator import me.him188.ani.app.navigation.LocalNavigator -import me.him188.ani.app.navigation.MainScenePage +import me.him188.ani.app.navigation.MainScreenPage import me.him188.ani.app.navigation.NavRoutes import me.him188.ani.app.navigation.OverrideNavigation import me.him188.ani.app.navigation.SettingsTab import me.him188.ani.app.navigation.SubjectDetailPlaceholder import me.him188.ani.app.platform.LocalContext import me.him188.ani.app.ui.adaptive.navigation.AniNavigationSuiteDefaults -import me.him188.ani.app.ui.cache.CacheManagementPage +import me.him188.ani.app.ui.cache.CacheManagementScreen import me.him188.ani.app.ui.cache.CacheManagementViewModel -import me.him188.ani.app.ui.cache.details.MediaCacheDetailsPage import me.him188.ani.app.ui.cache.details.MediaCacheDetailsPageViewModel +import me.him188.ani.app.ui.cache.details.MediaCacheDetailsScreen import me.him188.ani.app.ui.cache.details.MediaDetailsLazyGrid -import me.him188.ani.app.ui.exploration.schedule.SchedulePage -import me.him188.ani.app.ui.exploration.schedule.SchedulePageViewModel +import me.him188.ani.app.ui.exploration.schedule.ScheduleScreen +import me.him188.ani.app.ui.exploration.schedule.ScheduleViewModel import me.him188.ani.app.ui.foundation.animation.NavigationMotionScheme import me.him188.ani.app.ui.foundation.animation.ProvideAniMotionCompositionLocals import me.him188.ani.app.ui.foundation.layout.LocalSharedTransitionScopeProvider @@ -64,24 +64,24 @@ import me.him188.ani.app.ui.foundation.layout.currentWindowAdaptiveInfo1 import me.him188.ani.app.ui.foundation.layout.desktopTitleBar import me.him188.ani.app.ui.foundation.widgets.BackNavigationIconButton import me.him188.ani.app.ui.profile.BangumiOAuthViewModel -import me.him188.ani.app.ui.profile.auth.BangumiOAuthScene -import me.him188.ani.app.ui.profile.auth.BangumiTokenAuthPage +import me.him188.ani.app.ui.profile.auth.BangumiOAuthScreen +import me.him188.ani.app.ui.profile.auth.BangumiTokenAuthScreen import me.him188.ani.app.ui.profile.auth.BangumiTokenAuthViewModel import me.him188.ani.app.ui.profile.auth.WelcomeScene import me.him188.ani.app.ui.profile.auth.WelcomeViewModel -import me.him188.ani.app.ui.settings.SettingsPage +import me.him188.ani.app.ui.settings.SettingsScreen import me.him188.ani.app.ui.settings.SettingsViewModel -import me.him188.ani.app.ui.settings.mediasource.rss.EditRssMediaSourcePage +import me.him188.ani.app.ui.settings.mediasource.rss.EditRssMediaSourceScreen import me.him188.ani.app.ui.settings.mediasource.rss.EditRssMediaSourceViewModel -import me.him188.ani.app.ui.settings.mediasource.selector.EditSelectorMediaSourcePage +import me.him188.ani.app.ui.settings.mediasource.selector.EditSelectorMediaSourceScreen import me.him188.ani.app.ui.settings.mediasource.selector.EditSelectorMediaSourceViewModel -import me.him188.ani.app.ui.settings.tabs.media.torrent.peer.PeerFilterSettingsPage +import me.him188.ani.app.ui.settings.tabs.media.torrent.peer.PeerFilterSettingsScreen import me.him188.ani.app.ui.settings.tabs.media.torrent.peer.PeerFilterSettingsViewModel -import me.him188.ani.app.ui.subject.cache.SubjectCacheScene +import me.him188.ani.app.ui.subject.cache.SubjectCacheScreen import me.him188.ani.app.ui.subject.cache.SubjectCacheViewModelImpl -import me.him188.ani.app.ui.subject.details.SubjectDetailsPage +import me.him188.ani.app.ui.subject.details.SubjectDetailsScreen import me.him188.ani.app.ui.subject.details.SubjectDetailsViewModel -import me.him188.ani.app.ui.subject.episode.EpisodeScene +import me.him188.ani.app.ui.subject.episode.EpisodeScreen import me.him188.ani.app.ui.subject.episode.EpisodeViewModel import me.him188.ani.datasources.api.source.FactoryId import kotlin.reflect.typeOf @@ -146,7 +146,7 @@ private fun AniAppContentImpl( popEnterTransition = popEnterTransition, popExitTransition = popExitTransition, typeMap = mapOf( - typeOf() to MainScenePage.NavType, + typeOf() to MainScreenPage.NavType, ), ) { backStack -> val route = backStack.toRoute() @@ -159,7 +159,7 @@ private fun AniAppContentImpl( OverrideNavigation( { object : AniNavigator by it { - override fun navigateMain(page: MainScenePage, requestFocus: Boolean) { + override fun navigateMain(page: MainScreenPage, requestFocus: Boolean) { currentPage = page } } @@ -170,7 +170,7 @@ private fun AniAppContentImpl( this@SharedTransitionLayout, this, ), ) { - MainScene( + MainScreen( page = currentPage, onNavigateToPage = { currentPage = it }, onNavigateToSettings = { aniNavigator.navigateSettings() }, @@ -185,7 +185,7 @@ private fun AniAppContentImpl( popEnterTransition = popEnterTransition, popExitTransition = popExitTransition, ) { - BangumiOAuthScene( + BangumiOAuthScreen( viewModel { BangumiOAuthViewModel() }, navigationIcon = { BackNavigationIconButton( @@ -203,7 +203,7 @@ private fun AniAppContentImpl( popEnterTransition = popEnterTransition, popExitTransition = popExitTransition, ) { - BangumiTokenAuthPage( + BangumiTokenAuthScreen( viewModel { BangumiTokenAuthViewModel() }, Modifier.fillMaxSize(), windowInsets, @@ -238,7 +238,7 @@ private fun AniAppContentImpl( this@SharedTransitionLayout, this, ), ) { - SubjectDetailsPage( + SubjectDetailsScreen( vm, onPlay = { aniNavigator.navigateEpisodeDetails(details.subjectId, it) }, onLoadErrorRetry = { vm.reload() }, @@ -271,7 +271,7 @@ private fun AniAppContentImpl( context, ) } - EpisodeScene(vm, Modifier.fillMaxSize(), windowInsets) + EpisodeScreen(vm, Modifier.fillMaxSize(), windowInsets) } composable( enterTransition = enterTransition, @@ -283,7 +283,7 @@ private fun AniAppContentImpl( ), ) { backStackEntry -> val route = backStackEntry.toRoute() - SettingsPage( + SettingsScreen( viewModel { SettingsViewModel() }, @@ -305,7 +305,7 @@ private fun AniAppContentImpl( popExitTransition = popExitTransition, ) { backStackEntry -> val route = backStackEntry.toRoute() - CacheManagementPage( + CacheManagementScreen( viewModel { CacheManagementViewModel(aniNavigator) }, navigationIcon = { BackNavigationIconButton( @@ -324,7 +324,7 @@ private fun AniAppContentImpl( popExitTransition = popExitTransition, ) { backStackEntry -> val route = backStackEntry.toRoute() - MediaCacheDetailsPage( + MediaCacheDetailsScreen( viewModel(key = route.toString()) { MediaCacheDetailsPageViewModel(route.cacheId) }, navigationIcon = { BackNavigationIconButton( @@ -346,7 +346,7 @@ private fun AniAppContentImpl( val route = backStackEntry.toRoute() // Don't use rememberViewModel to save memory val vm = remember(route.subjectId) { SubjectCacheViewModelImpl(route.subjectId) } - SubjectCacheScene( + SubjectCacheScreen( vm, Modifier.fillMaxSize(), windowInsets, navigationIcon = { BackNavigationIconButton( @@ -367,7 +367,7 @@ private fun AniAppContentImpl( val factoryId = FactoryId(route.factoryId) val mediaSourceInstanceId = route.mediaSourceInstanceId when (factoryId) { - RssMediaSource.FactoryId -> EditRssMediaSourcePage( + RssMediaSource.FactoryId -> EditRssMediaSourceScreen( viewModel(key = mediaSourceInstanceId) { EditRssMediaSourceViewModel(mediaSourceInstanceId) }, @@ -392,7 +392,7 @@ private fun AniAppContentImpl( SelectorMediaSource.FactoryId -> { val context = LocalContext.current - EditSelectorMediaSourcePage( + EditSelectorMediaSourceScreen( viewModel(key = mediaSourceInstanceId) { EditSelectorMediaSourceViewModel(mediaSourceInstanceId, context) }, @@ -419,7 +419,7 @@ private fun AniAppContentImpl( ) { backStackEntry -> val route = backStackEntry.toRoute() val viewModel = viewModel { PeerFilterSettingsViewModel() } - PeerFilterSettingsPage( + PeerFilterSettingsScreen( viewModel.state, navigationIcon = { BackNavigationIconButton( @@ -438,9 +438,9 @@ private fun AniAppContentImpl( ) { backStackEntry -> val route = backStackEntry.toRoute() - val vm = viewModel { SchedulePageViewModel() } + val vm = viewModel { ScheduleViewModel() } val presentation by vm.presentationFlow.collectAsStateWithLifecycle() - SchedulePage( + ScheduleScreen( presentation, onRetry = { vm.refresh() }, onClickItem = { diff --git a/app/shared/src/commonMain/kotlin/ui/main/MainScene.kt b/app/shared/src/commonMain/kotlin/ui/main/MainScreen.kt similarity index 91% rename from app/shared/src/commonMain/kotlin/ui/main/MainScene.kt rename to app/shared/src/commonMain/kotlin/ui/main/MainScreen.kt index a4110a3e98..45493dc4d3 100644 --- a/app/shared/src/commonMain/kotlin/ui/main/MainScene.kt +++ b/app/shared/src/commonMain/kotlin/ui/main/MainScreen.kt @@ -43,16 +43,16 @@ import androidx.lifecycle.viewmodel.compose.viewModel import kotlinx.coroutines.CoroutineStart import kotlinx.coroutines.launch import me.him188.ani.app.navigation.LocalNavigator -import me.him188.ani.app.navigation.MainScenePage +import me.him188.ani.app.navigation.MainScreenPage import me.him188.ani.app.navigation.getIcon import me.him188.ani.app.navigation.getText import me.him188.ani.app.platform.LocalContext import me.him188.ani.app.ui.adaptive.navigation.AniNavigationSuite import me.him188.ani.app.ui.adaptive.navigation.AniNavigationSuiteDefaults import me.him188.ani.app.ui.adaptive.navigation.AniNavigationSuiteLayout -import me.him188.ani.app.ui.cache.CacheManagementPage +import me.him188.ani.app.ui.cache.CacheManagementScreen import me.him188.ani.app.ui.cache.CacheManagementViewModel -import me.him188.ani.app.ui.exploration.ExplorationPage +import me.him188.ani.app.ui.exploration.ExplorationScreen import me.him188.ani.app.ui.exploration.search.SearchPage import me.him188.ani.app.ui.foundation.LocalPlatform import me.him188.ani.app.ui.foundation.animation.LocalAniMotionScheme @@ -68,17 +68,17 @@ import me.him188.ani.app.ui.foundation.theme.AniThemeDefaults import me.him188.ani.app.ui.foundation.widgets.BackNavigationIconButton import me.him188.ani.app.ui.subject.collection.CollectionPage import me.him188.ani.app.ui.subject.collection.UserCollectionsViewModel -import me.him188.ani.app.ui.subject.details.SubjectDetailsPage +import me.him188.ani.app.ui.subject.details.SubjectDetailsScreen import me.him188.ani.app.ui.subject.details.state.SubjectDetailsStateLoader import me.him188.ani.app.ui.update.TextButtonUpdateLogo import me.him188.ani.utils.platform.isAndroid @Composable -fun MainScene( - page: MainScenePage, +fun MainScreen( + page: MainScreenPage, modifier: Modifier = Modifier, - onNavigateToPage: (MainScenePage) -> Unit, + onNavigateToPage: (MainScreenPage) -> Unit, onNavigateToSettings: () -> Unit, navigationLayoutType: NavigationSuiteType = AniNavigationSuiteDefaults.calculateLayoutType( currentWindowAdaptiveInfo1(), @@ -92,13 +92,13 @@ fun MainScene( } } - MainSceneContent(page, onNavigateToPage, onNavigateToSettings, modifier, navigationLayoutType) + MainScreenContent(page, onNavigateToPage, onNavigateToSettings, modifier, navigationLayoutType) } @Composable -private fun MainSceneContent( - page: MainScenePage, - onNavigateToPage: (MainScenePage) -> Unit, +private fun MainScreenContent( + page: MainScreenPage, + onNavigateToPage: (MainScreenPage) -> Unit, onNavigateToSettings: () -> Unit, modifier: Modifier = Modifier, navigationLayoutType: NavigationSuiteType = AniNavigationSuiteDefaults.calculateLayoutType( @@ -116,7 +116,7 @@ private fun MainSceneContent( ), navigationRailHeader = { FloatingActionButton( - { onNavigateToPage(MainScenePage.Search) }, + { onNavigateToPage(MainScreenPage.Search) }, Modifier .desktopTitleBarPadding() .ifThen(currentWindowAdaptiveInfo1().windowSizeClass.isHeightAtLeastMedium) { @@ -146,7 +146,7 @@ private fun MainSceneContent( }, navigationRailItemSpacing = 8.dp, ) { - for (entry in MainScenePage.visibleEntries) { + for (entry in MainScreenPage.visibleEntries) { item( page == entry, onClick = { onNavigateToPage(entry) }, @@ -177,10 +177,10 @@ private fun MainSceneContent( }, ) { page -> when (page) { - MainScenePage.Exploration -> { - ExplorationPage( + MainScreenPage.Exploration -> { + ExplorationScreen( viewModel { ExplorationPageViewModel() }.explorationPageState, - onSearch = { onNavigateToPage(MainScenePage.Search) }, + onSearch = { onNavigateToPage(MainScreenPage.Search) }, onClickSettings = { navigator.navigateSettings() }, modifier.fillMaxSize(), actions = { @@ -189,12 +189,12 @@ private fun MainSceneContent( ) } - MainScenePage.Collection -> { + MainScreenPage.Collection -> { val vm = viewModel { UserCollectionsViewModel() } CollectionPage( state = vm.state, items = vm.items, - onClickSearch = { onNavigateToPage(MainScenePage.Search) }, + onClickSearch = { onNavigateToPage(MainScreenPage.Search) }, onClickSettings = { navigator.navigateSettings() }, Modifier.fillMaxSize(), enableAnimation = vm.myCollectionsSettings.enableListAnimation1, @@ -205,16 +205,16 @@ private fun MainSceneContent( ) } - MainScenePage.CacheManagement -> CacheManagementPage( + MainScreenPage.CacheManagement -> CacheManagementScreen( viewModel { CacheManagementViewModel(navigator) }, navigationIcon = { }, Modifier.fillMaxSize(), ) - MainScenePage.Search -> { + MainScreenPage.Search -> { val vm = viewModel { SearchViewModel() } val onBack = { - onNavigateToPage(MainScenePage.Exploration) + onNavigateToPage(MainScreenPage.Exploration) } BackHandler(true, onBack) val listDetailNavigator = rememberListDetailPaneScaffoldNavigator() @@ -222,7 +222,7 @@ private fun MainSceneContent( vm.searchPageState, detailContent = { val result by vm.subjectDetailsStateLoader.result - SubjectDetailsPage( + SubjectDetailsScreen( result, onPlay = { episodeId -> val curr = result diff --git a/app/shared/src/commonMain/kotlin/ui/profile/auth/BangumiOAuthPage.kt b/app/shared/src/commonMain/kotlin/ui/profile/auth/BangumiOAuthPage.kt index d621ec8098..1812f17954 100644 --- a/app/shared/src/commonMain/kotlin/ui/profile/auth/BangumiOAuthPage.kt +++ b/app/shared/src/commonMain/kotlin/ui/profile/auth/BangumiOAuthPage.kt @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 OpenAni and contributors. + * Copyright (C) 2024-2025 OpenAni and contributors. * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. * Use of this source code is governed by the GNU AGPLv3 license, which can be found at the following link. @@ -55,7 +55,7 @@ import me.him188.ani.app.ui.profile.BangumiOAuthViewModel import org.koin.mp.KoinPlatform @Composable -fun BangumiOAuthScene( +fun BangumiOAuthScreen( vm: BangumiOAuthViewModel, navigationIcon: @Composable () -> Unit, modifier: Modifier = Modifier, diff --git a/app/shared/src/commonMain/kotlin/ui/profile/auth/BangumiTokenAuthPage.kt b/app/shared/src/commonMain/kotlin/ui/profile/auth/BangumiTokenAuthPage.kt index 742ce69c6c..53545d464f 100644 --- a/app/shared/src/commonMain/kotlin/ui/profile/auth/BangumiTokenAuthPage.kt +++ b/app/shared/src/commonMain/kotlin/ui/profile/auth/BangumiTokenAuthPage.kt @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 OpenAni and contributors. + * Copyright (C) 2024-2025 OpenAni and contributors. * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. * Use of this source code is governed by the GNU AGPLv3 license, which can be found at the following link. @@ -77,7 +77,7 @@ class BangumiTokenAuthViewModel : AbstractViewModel(), KoinComponent { } @Composable -fun BangumiTokenAuthPage( +fun BangumiTokenAuthScreen( vm: BangumiTokenAuthViewModel, modifier: Modifier = Modifier, windowInsets: WindowInsets = ScaffoldDefaults.contentWindowInsets, diff --git a/app/shared/src/commonMain/kotlin/ui/subject/cache/SubjectCacheScene.kt b/app/shared/src/commonMain/kotlin/ui/subject/cache/SubjectCacheScene.kt index cafedabdad..4a448a20d3 100644 --- a/app/shared/src/commonMain/kotlin/ui/subject/cache/SubjectCacheScene.kt +++ b/app/shared/src/commonMain/kotlin/ui/subject/cache/SubjectCacheScene.kt @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 OpenAni and contributors. + * Copyright (C) 2024-2025 OpenAni and contributors. * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. * Use of this source code is governed by the GNU AGPLv3 license, which can be found at the following link. @@ -241,7 +241,7 @@ class SubjectCacheViewModelImpl( } @Composable -fun SubjectCacheScene( +fun SubjectCacheScreen( vm: SubjectCacheViewModel, modifier: Modifier = Modifier, windowInsets: WindowInsets = ScaffoldDefaults.contentWindowInsets, diff --git a/app/shared/src/commonMain/kotlin/ui/subject/episode/EpisodePage.kt b/app/shared/src/commonMain/kotlin/ui/subject/episode/EpisodePage.kt index 4cf77df435..53fde8a8e3 100644 --- a/app/shared/src/commonMain/kotlin/ui/subject/episode/EpisodePage.kt +++ b/app/shared/src/commonMain/kotlin/ui/subject/episode/EpisodePage.kt @@ -147,7 +147,7 @@ import org.openani.mediamp.features.Screenshots * 番剧详情 (播放) 页面 */ @Composable -fun EpisodeScene( +fun EpisodeScreen( viewModel: EpisodeViewModel, modifier: Modifier = Modifier, windowInsets: WindowInsets = ScaffoldDefaults.contentWindowInsets, @@ -156,7 +156,7 @@ fun EpisodeScene( Scaffold( contentWindowInsets = WindowInsets(0.dp), ) { - EpisodeSceneContent( + EpisodeScreenContent( viewModel, Modifier, windowInsets = windowInsets, @@ -166,7 +166,7 @@ fun EpisodeScene( } @Composable -private fun EpisodeSceneContent( +private fun EpisodeScreenContent( vm: EpisodeViewModel, modifier: Modifier = Modifier, windowInsets: WindowInsets = ScaffoldDefaults.contentWindowInsets, @@ -267,7 +267,7 @@ private fun EpisodeSceneContent( CompositionLocalProvider(LocalImageViewerHandler provides imageViewer) { when { showExpandedUI || isSystemInFullscreen() -> - EpisodeSceneTabletVeryWide( + EpisodeScreenTabletVeryWide( vm, page, danmakuHostState, @@ -279,7 +279,7 @@ private fun EpisodeSceneContent( windowInsets, ) - else -> EpisodeSceneContentPhone( + else -> EpisodeScreenContentPhone( vm, page, danmakuHostState, @@ -319,7 +319,7 @@ private fun EpisodeSceneContent( } @Composable -private fun EpisodeSceneTabletVeryWide( +private fun EpisodeScreenTabletVeryWide( vm: EpisodeViewModel, page: EpisodePageState, danmakuHostState: DanmakuHostState, @@ -477,7 +477,7 @@ private fun TabRow( } @Composable -private fun EpisodeSceneContentPhone( +private fun EpisodeScreenContentPhone( vm: EpisodeViewModel, page: EpisodePageState, danmakuHostState: DanmakuHostState, @@ -490,7 +490,7 @@ private fun EpisodeSceneContentPhone( ) { var showDanmakuEditor by rememberSaveable { mutableStateOf(false) } - EpisodeSceneContentPhoneScaffold( + EpisodeScreenContentPhoneScaffold( videoOnly = vm.isFullscreen, commentCount = { vm.episodeCommentState.count }, video = { @@ -609,7 +609,7 @@ private fun DetachedDanmakuEditorLayout( } @Composable -fun EpisodeSceneContentPhoneScaffold( +fun EpisodeScreenContentPhoneScaffold( videoOnly: Boolean, commentCount: () -> Int?, video: @Composable () -> Unit, diff --git a/app/shared/src/commonMain/kotlin/ui/subject/episode/details/EpisodeDetails.kt b/app/shared/src/commonMain/kotlin/ui/subject/episode/details/EpisodeDetails.kt index 4256d4a47c..7c941fa250 100644 --- a/app/shared/src/commonMain/kotlin/ui/subject/episode/details/EpisodeDetails.kt +++ b/app/shared/src/commonMain/kotlin/ui/subject/episode/details/EpisodeDetails.kt @@ -77,7 +77,7 @@ import me.him188.ani.app.ui.subject.AiringLabelState import me.him188.ani.app.ui.subject.collection.SubjectCollectionTypeSuggestions import me.him188.ani.app.ui.subject.collection.components.EditableSubjectCollectionTypeDialogsHost import me.him188.ani.app.ui.subject.collection.components.EditableSubjectCollectionTypeState -import me.him188.ani.app.ui.subject.details.SubjectDetailsPage +import me.him188.ani.app.ui.subject.details.SubjectDetailsScreen import me.him188.ani.app.ui.subject.details.state.SubjectDetailsStateLoader import me.him188.ani.app.ui.subject.episode.details.components.DanmakuMatchInfoGrid import me.him188.ani.app.ui.subject.episode.details.components.DanmakuSourceCard @@ -149,7 +149,7 @@ fun EpisodeDetails( modifier = Modifier.desktopTitleBarPadding().statusBarsPadding(), contentWindowInsets = { BottomSheetDefaults.windowInsets.add(WindowInsets.desktopTitleBar()) }, ) { - SubjectDetailsPage( + SubjectDetailsScreen( subjectDetailsState, onPlay = onSwitchEpisode, onLoadErrorRetry = { state.subjectDetailsStateLoader.reload(state.subjectId) }, diff --git a/app/shared/ui-exploration/src/androidMain/kotlin/ui/exploration/schedule/SchedulePage.android.kt b/app/shared/ui-exploration/src/androidMain/kotlin/ui/exploration/schedule/SchedulePage.android.kt index 7dd99b2b03..f6c359b517 100644 --- a/app/shared/ui-exploration/src/androidMain/kotlin/ui/exploration/schedule/SchedulePage.android.kt +++ b/app/shared/ui-exploration/src/androidMain/kotlin/ui/exploration/schedule/SchedulePage.android.kt @@ -26,7 +26,7 @@ import me.him188.ani.utils.platform.annotations.TestOnly fun PreviewSchedulePage() { ProvideFoundationCompositionLocalsForPreview { Surface(color = MaterialTheme.colorScheme.surfaceContainerLowest) { - SchedulePage( + ScheduleScreen( presentation = createTestSchedulePagePresentation(), onRetry = {}, onClickItem = {}, diff --git a/app/shared/ui-exploration/src/commonMain/kotlin/ui/exploration/ExplorationPage.kt b/app/shared/ui-exploration/src/commonMain/kotlin/ui/exploration/ExplorationScreen.kt similarity index 99% rename from app/shared/ui-exploration/src/commonMain/kotlin/ui/exploration/ExplorationPage.kt rename to app/shared/ui-exploration/src/commonMain/kotlin/ui/exploration/ExplorationScreen.kt index afb0982be0..98b37d6210 100644 --- a/app/shared/ui-exploration/src/commonMain/kotlin/ui/exploration/ExplorationPage.kt +++ b/app/shared/ui-exploration/src/commonMain/kotlin/ui/exploration/ExplorationScreen.kt @@ -110,7 +110,7 @@ class ExplorationPageState( } @Composable -fun ExplorationPage( +fun ExplorationScreen( state: ExplorationPageState, onSearch: () -> Unit, onClickSettings: () -> Unit, diff --git a/app/shared/ui-exploration/src/commonMain/kotlin/ui/exploration/schedule/SchedulePage.kt b/app/shared/ui-exploration/src/commonMain/kotlin/ui/exploration/schedule/ScheduleScreen.kt similarity index 93% rename from app/shared/ui-exploration/src/commonMain/kotlin/ui/exploration/schedule/SchedulePage.kt rename to app/shared/ui-exploration/src/commonMain/kotlin/ui/exploration/schedule/ScheduleScreen.kt index bf35ad9d6a..52f84f6b9e 100644 --- a/app/shared/ui-exploration/src/commonMain/kotlin/ui/exploration/schedule/SchedulePage.kt +++ b/app/shared/ui-exploration/src/commonMain/kotlin/ui/exploration/schedule/ScheduleScreen.kt @@ -72,17 +72,17 @@ import me.him188.ani.app.ui.foundation.theme.AniThemeDefaults import me.him188.ani.app.ui.search.LoadErrorCard import me.him188.ani.utils.platform.isDesktop -fun SchedulePageState( +fun ScheduleScreenState( daysProvider: () -> List, -): SchedulePageState { - return SchedulePageState( +): ScheduleScreenState { + return ScheduleScreenState( initialSelected = daysProvider().firstOrNull { it.kind == ScheduleDay.Kind.TODAY }, daysProvider = daysProvider, ) } @Stable -class SchedulePageState( +class ScheduleScreenState( initialSelected: ScheduleDay?, daysProvider: () -> List, ) { @@ -117,15 +117,15 @@ class SchedulePageState( @Composable -fun SchedulePage( +fun ScheduleScreen( presentation: SchedulePagePresentation, onRetry: () -> Unit, onClickItem: (item: AiringScheduleItemPresentation) -> Unit, modifier: Modifier = Modifier, - layoutParams: SchedulePageLayoutParams = SchedulePageLayoutParams.calculate(), - colors: SchedulePageColors = SchedulePageDefaults.colors(), + layoutParams: ScheduleScreenLayoutParams = ScheduleScreenLayoutParams.calculate(), + colors: ScheduleScreenColors = ScheduleScreenDefaults.colors(), navigationIcon: @Composable () -> Unit = {}, - state: SchedulePageState = remember { SchedulePageState { presentation.days } }, + state: ScheduleScreenState = remember { ScheduleScreenState { presentation.days } }, windowInsets: WindowInsets = AniWindowInsets.forPageContent(), ) { Scaffold( @@ -150,7 +150,7 @@ fun SchedulePage( .padding(all = 16.dp), ) } else { - SchedulePageContent( + ScheduleScreenContent( state = state, modifier = Modifier.padding(paddingValues), layoutParams = layoutParams, @@ -205,11 +205,11 @@ private fun DayOfWeekHeadline( } @Composable -fun SchedulePageContent( - state: SchedulePageState, +fun ScheduleScreenContent( + state: ScheduleScreenState, modifier: Modifier = Modifier, - layoutParams: SchedulePageLayoutParams = SchedulePageLayoutParams.calculate(), - colors: SchedulePageColors = SchedulePageDefaults.colors(), + layoutParams: ScheduleScreenLayoutParams = ScheduleScreenLayoutParams.calculate(), + colors: ScheduleScreenColors = ScheduleScreenDefaults.colors(), pageContent: @Composable (page: ScheduleDay) -> Unit, ) { Column(modifier) { @@ -301,7 +301,7 @@ fun SchedulePageContent( @Immutable @ExposedCopyVisibility -data class SchedulePageLayoutParams private constructor( +data class ScheduleScreenLayoutParams private constructor( val pageSize: PageSize, val pageSpacing: Dp, val pageContentPadding: PaddingValues, @@ -313,7 +313,7 @@ data class SchedulePageLayoutParams private constructor( @Stable companion object { @Stable - val Compact = SchedulePageLayoutParams( + val Compact = ScheduleScreenLayoutParams( pageSize = PageSize.Fill, pageSpacing = 8.dp, pageContentPadding = PaddingValues(0.dp), @@ -324,7 +324,7 @@ data class SchedulePageLayoutParams private constructor( ) @Stable - val Medium = SchedulePageLayoutParams( + val Medium = ScheduleScreenLayoutParams( pageSize = PageSize.Fixed(360.dp), pageSpacing = 16.dp, pageContentPadding = PaddingValues(horizontal = 8.dp), @@ -335,7 +335,7 @@ data class SchedulePageLayoutParams private constructor( ) @Composable - fun calculate(windowSizeClass: WindowSizeClass = currentWindowAdaptiveInfo1().windowSizeClass): SchedulePageLayoutParams { + fun calculate(windowSizeClass: WindowSizeClass = currentWindowAdaptiveInfo1().windowSizeClass): ScheduleScreenLayoutParams { return if (windowSizeClass.isWidthAtLeastMedium) { Medium } else { @@ -346,7 +346,7 @@ data class SchedulePageLayoutParams private constructor( } @Immutable -data class SchedulePageColors( +data class ScheduleScreenColors( val tabRowContainerColor: Color, val tabSelectedContentColor: Color, val tabUnselectedContentColor: Color, @@ -354,7 +354,7 @@ data class SchedulePageColors( ) @Stable -object SchedulePageDefaults { +object ScheduleScreenDefaults { @Composable fun colors( tabRowColor: Color = MaterialTheme.colorScheme.surfaceContainerLowest, @@ -363,7 +363,7 @@ object SchedulePageDefaults { itemColors: ListItemColors = ListItemDefaults.colors( containerColor = MaterialTheme.colorScheme.surfaceContainerLowest, ), - ): SchedulePageColors = SchedulePageColors( + ): ScheduleScreenColors = ScheduleScreenColors( tabRowContainerColor = tabRowColor, tabSelectedContentColor = tabSelectedContentColor, tabUnselectedContentColor = tabUnselectedContentColor, diff --git a/app/shared/ui-exploration/src/commonMain/kotlin/ui/exploration/schedule/SchedulePageViewModel.kt b/app/shared/ui-exploration/src/commonMain/kotlin/ui/exploration/schedule/ScheduleViewModel.kt similarity index 98% rename from app/shared/ui-exploration/src/commonMain/kotlin/ui/exploration/schedule/SchedulePageViewModel.kt rename to app/shared/ui-exploration/src/commonMain/kotlin/ui/exploration/schedule/ScheduleViewModel.kt index b794b4d04e..cb6c0c76a0 100644 --- a/app/shared/ui-exploration/src/commonMain/kotlin/ui/exploration/schedule/SchedulePageViewModel.kt +++ b/app/shared/ui-exploration/src/commonMain/kotlin/ui/exploration/schedule/ScheduleViewModel.kt @@ -27,7 +27,7 @@ import me.him188.ani.utils.coroutines.flows.catching import me.him188.ani.utils.platform.annotations.TestOnly import org.koin.core.Koin -class SchedulePageViewModel( +class ScheduleViewModel( koin: Koin = GlobalKoin, private val timeZone: TimeZone = TimeZone.currentSystemDefault(), ) : AbstractViewModel() { @@ -45,7 +45,7 @@ class SchedulePageViewModel( .shareInBackground(started = SharingStarted.Lazily) // always cached private val days = ScheduleDay.generateForRecentTwoWeeks(today) - val pageState = SchedulePageState { days } + val pageState = ScheduleScreenState { days } fun refresh() { airingSchedulesFlowRestarter.restart() diff --git a/app/shared/ui-settings/src/androidMain/kotlin/ui/settings/tabs/media/source/EditRssMediaSource.android.kt b/app/shared/ui-settings/src/androidMain/kotlin/ui/settings/tabs/media/source/EditRssMediaSource.android.kt index 6623194cb5..33b3282a13 100644 --- a/app/shared/ui-settings/src/androidMain/kotlin/ui/settings/tabs/media/source/EditRssMediaSource.android.kt +++ b/app/shared/ui-settings/src/androidMain/kotlin/ui/settings/tabs/media/source/EditRssMediaSource.android.kt @@ -33,7 +33,7 @@ import me.him188.ani.app.domain.mediasource.rss.RssSearchQuery import me.him188.ani.app.domain.rss.RssParser import me.him188.ani.app.ui.foundation.ProvideFoundationCompositionLocalsForPreview import me.him188.ani.app.ui.foundation.stateOf -import me.him188.ani.app.ui.settings.mediasource.rss.EditRssMediaSourcePage +import me.him188.ani.app.ui.settings.mediasource.rss.EditRssMediaSourceScreen import me.him188.ani.app.ui.settings.mediasource.rss.EditRssMediaSourceState import me.him188.ani.app.ui.settings.mediasource.rss.SaveableStorage import me.him188.ani.app.ui.settings.mediasource.rss.test.RssTestPaneState @@ -91,7 +91,7 @@ internal object TestRssMediaSourceEngine : RssMediaSourceEngine() { @PreviewLightDark fun PreviewEditRssMediaSourcePagePhone() = ProvideFoundationCompositionLocalsForPreview { val (edit, test) = rememberTestEditRssMediaSourceStateAndRssTestPaneState() - EditRssMediaSourcePage(edit, test, {}) + EditRssMediaSourceScreen(edit, test, {}) } @OptIn(TestOnly::class) @@ -100,7 +100,7 @@ fun PreviewEditRssMediaSourcePagePhone() = ProvideFoundationCompositionLocalsFor fun PreviewEditRssMediaSourcePagePhoneTest() = ProvideFoundationCompositionLocalsForPreview { val navigator = rememberListDetailPaneScaffoldNavigator() val (edit, test) = rememberTestEditRssMediaSourceStateAndRssTestPaneState() - EditRssMediaSourcePage( + EditRssMediaSourceScreen( edit, test, {}, navigator = navigator, ) @@ -115,7 +115,7 @@ fun PreviewEditRssMediaSourcePagePhoneTest() = ProvideFoundationCompositionLocal @Preview(device = Devices.PIXEL_TABLET, uiMode = UI_MODE_NIGHT_YES or UI_MODE_TYPE_NORMAL) fun PreviewEditRssMediaSourcePageLaptop() = ProvideFoundationCompositionLocalsForPreview { val (edit, test) = rememberTestEditRssMediaSourceStateAndRssTestPaneState() - EditRssMediaSourcePage(edit, test, {}) + EditRssMediaSourceScreen(edit, test, {}) } @TestOnly diff --git a/app/shared/ui-settings/src/commonMain/kotlin/ui/settings/SettingsPage.kt b/app/shared/ui-settings/src/commonMain/kotlin/ui/settings/SettingsScreen.kt similarity index 99% rename from app/shared/ui-settings/src/commonMain/kotlin/ui/settings/SettingsPage.kt rename to app/shared/ui-settings/src/commonMain/kotlin/ui/settings/SettingsScreen.kt index 4de5190c45..18d2880360 100644 --- a/app/shared/ui-settings/src/commonMain/kotlin/ui/settings/SettingsPage.kt +++ b/app/shared/ui-settings/src/commonMain/kotlin/ui/settings/SettingsScreen.kt @@ -104,7 +104,7 @@ import me.him188.ani.utils.platform.hasScrollingBug typealias SettingsTab = me.him188.ani.app.navigation.SettingsTab @Composable -fun SettingsPage( +fun SettingsScreen( vm: SettingsViewModel, modifier: Modifier = Modifier, initialTab: SettingsTab? = null, diff --git a/app/shared/ui-settings/src/commonMain/kotlin/ui/settings/mediasource/rss/EditRssMediaSource.kt b/app/shared/ui-settings/src/commonMain/kotlin/ui/settings/mediasource/rss/EditRssMediaSource.kt index b8b3bff9e8..8f521b35f7 100644 --- a/app/shared/ui-settings/src/commonMain/kotlin/ui/settings/mediasource/rss/EditRssMediaSource.kt +++ b/app/shared/ui-settings/src/commonMain/kotlin/ui/settings/mediasource/rss/EditRssMediaSource.kt @@ -145,7 +145,7 @@ class EditRssMediaSourceState( } @Composable -fun EditRssMediaSourcePage( +fun EditRssMediaSourceScreen( viewModel: EditRssMediaSourceViewModel, mediaDetailsColumn: @Composable (Media) -> Unit, modifier: Modifier = Modifier, @@ -153,7 +153,7 @@ fun EditRssMediaSourcePage( navigationIcon: @Composable () -> Unit, ) { viewModel.state.collectAsStateWithLifecycle(null).value?.let { - EditRssMediaSourcePage( + EditRssMediaSourceScreen( it, viewModel.testState, mediaDetailsColumn, modifier, windowInsets = windowInsets, navigationIcon = navigationIcon, ) @@ -161,7 +161,7 @@ fun EditRssMediaSourcePage( } @Composable -fun EditRssMediaSourcePage( +fun EditRssMediaSourceScreen( state: EditRssMediaSourceState, testState: RssTestPaneState, mediaDetailsColumn: @Composable (Media) -> Unit, diff --git a/app/shared/ui-settings/src/commonMain/kotlin/ui/settings/mediasource/selector/EditSelectorMediaSourcePage.kt b/app/shared/ui-settings/src/commonMain/kotlin/ui/settings/mediasource/selector/EditSelectorMediaSourcePage.kt index c74432a8f5..399a3a276d 100644 --- a/app/shared/ui-settings/src/commonMain/kotlin/ui/settings/mediasource/selector/EditSelectorMediaSourcePage.kt +++ b/app/shared/ui-settings/src/commonMain/kotlin/ui/settings/mediasource/selector/EditSelectorMediaSourcePage.kt @@ -144,7 +144,7 @@ class EditSelectorMediaSourcePageState( } @Composable -fun EditSelectorMediaSourcePage( +fun EditSelectorMediaSourceScreen( vm: EditSelectorMediaSourceViewModel, modifier: Modifier = Modifier, navigator: ThreePaneScaffoldNavigator<*> = rememberListDetailPaneScaffoldNavigator(), @@ -153,7 +153,7 @@ fun EditSelectorMediaSourcePage( ) { val state by vm.state.collectAsStateWithLifecycle(null) state?.let { - EditSelectorMediaSourcePage( + EditSelectorMediaSourceScreen( it, modifier, navigator, windowInsets, navigationIcon, ) @@ -161,7 +161,7 @@ fun EditSelectorMediaSourcePage( } @Composable -fun EditSelectorMediaSourcePage( +fun EditSelectorMediaSourceScreen( state: EditSelectorMediaSourcePageState, modifier: Modifier = Modifier, navigator: ThreePaneScaffoldNavigator<*> = rememberListDetailPaneScaffoldNavigator(), diff --git a/app/shared/ui-settings/src/commonMain/kotlin/ui/settings/tabs/app/AppSettingsTab.kt b/app/shared/ui-settings/src/commonMain/kotlin/ui/settings/tabs/app/AppSettingsTab.kt index 8d02e34af0..fb41e13b82 100644 --- a/app/shared/ui-settings/src/commonMain/kotlin/ui/settings/tabs/app/AppSettingsTab.kt +++ b/app/shared/ui-settings/src/commonMain/kotlin/ui/settings/tabs/app/AppSettingsTab.kt @@ -37,7 +37,7 @@ import me.him188.ani.app.data.models.preference.UISettings import me.him188.ani.app.data.models.preference.UpdateSettings import me.him188.ani.app.data.models.preference.VideoScaffoldConfig import me.him188.ani.app.data.network.protocol.ReleaseClass -import me.him188.ani.app.navigation.MainScenePage +import me.him188.ani.app.navigation.MainScreenPage import me.him188.ani.app.navigation.getIcon import me.him188.ani.app.navigation.getText import me.him188.ani.app.platform.currentAniBuildConfig @@ -110,7 +110,7 @@ fun SettingsScope.AppearanceGroup( DropdownItem( selected = { uiSettings.mainSceneInitialPage }, - values = { MainScenePage.visibleEntries }, + values = { MainScreenPage.visibleEntries }, itemText = { Text(it.getText()) }, onSelect = { state.update(uiSettings.copy(mainSceneInitialPage = it)) diff --git a/app/shared/ui-settings/src/commonMain/kotlin/ui/settings/tabs/media/torrent/peer/PeerFilterSettings.kt b/app/shared/ui-settings/src/commonMain/kotlin/ui/settings/tabs/media/torrent/peer/PeerFilterSettings.kt index e04b8dc8b1..c50ff64331 100644 --- a/app/shared/ui-settings/src/commonMain/kotlin/ui/settings/tabs/media/torrent/peer/PeerFilterSettings.kt +++ b/app/shared/ui-settings/src/commonMain/kotlin/ui/settings/tabs/media/torrent/peer/PeerFilterSettings.kt @@ -53,7 +53,7 @@ import me.him188.ani.app.ui.foundation.widgets.BackNavigationIconButton import me.him188.ani.app.ui.settings.framework.components.SettingsScope @Composable -fun PeerFilterSettingsPage( +fun PeerFilterSettingsScreen( state: PeerFilterSettingsState, modifier: Modifier = Modifier, navigator: ThreePaneScaffoldNavigator = rememberListDetailPaneScaffoldNavigator(), diff --git a/app/shared/ui-subject/src/androidMain/kotlin/ui/subject/details/SubjectDetailsPage.android.kt b/app/shared/ui-subject/src/androidMain/kotlin/ui/subject/details/SubjectDetailsPage.android.kt index db943aa90c..715f4fb278 100644 --- a/app/shared/ui-subject/src/androidMain/kotlin/ui/subject/details/SubjectDetailsPage.android.kt +++ b/app/shared/ui-subject/src/androidMain/kotlin/ui/subject/details/SubjectDetailsPage.android.kt @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 OpenAni and contributors. + * Copyright (C) 2024-2025 OpenAni and contributors. * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. * Use of this source code is governed by the GNU AGPLv3 license, which can be found at the following link. @@ -27,7 +27,7 @@ import me.him188.ani.utils.platform.annotations.TestOnly internal fun PreviewSubjectDetails() = ProvideFoundationCompositionLocalsForPreview { val scope = rememberCoroutineScope() val state = remember { SubjectDetailsStateLoader.LoadState.Ok(createTestSubjectDetailsState(scope)) } - SubjectDetailsPage( + SubjectDetailsScreen( state, onPlay = { }, onLoadErrorRetry = { }, @@ -44,7 +44,7 @@ internal fun PreviewPlaceholderSubjectDetails() = ProvideFoundationCompositionLo val state = remember { SubjectDetailsStateLoader.LoadState.Ok(createTestSubjectDetailsState(scope, isPlaceholder = true)) } - SubjectDetailsPage( + SubjectDetailsScreen( state, onPlay = { }, onLoadErrorRetry = { }, @@ -61,7 +61,7 @@ internal fun PreviewErrorSubjectDetails() = ProvideFoundationCompositionLocalsFo val state = remember { SubjectDetailsStateLoader.LoadState.Err(TestSubjectInfo.subjectId, TestSubjectInfo, LoadError.NetworkError) } - SubjectDetailsPage( + SubjectDetailsScreen( state, onPlay = { }, onLoadErrorRetry = { }, diff --git a/app/shared/ui-subject/src/commonMain/kotlin/ui/subject/details/SubjectDetailsPage.kt b/app/shared/ui-subject/src/commonMain/kotlin/ui/subject/details/SubjectDetailsPage.kt index 6ed13eb29f..2be8cdea40 100644 --- a/app/shared/ui-subject/src/commonMain/kotlin/ui/subject/details/SubjectDetailsPage.kt +++ b/app/shared/ui-subject/src/commonMain/kotlin/ui/subject/details/SubjectDetailsPage.kt @@ -118,7 +118,7 @@ import me.him188.ani.datasources.api.PackedDate import me.him188.ani.utils.platform.isMobile @Composable -fun SubjectDetailsPage( +fun SubjectDetailsScreen( vm: SubjectDetailsViewModel, onPlay: (episodeId: Int) -> Unit, onLoadErrorRetry: () -> Unit, @@ -128,7 +128,7 @@ fun SubjectDetailsPage( windowInsets: WindowInsets = TopAppBarDefaults.windowInsets, navigationIcon: @Composable () -> Unit = {}, ) { - SubjectDetailsPage( + SubjectDetailsScreen( vm.result, onPlay, onLoadErrorRetry, @@ -141,7 +141,7 @@ fun SubjectDetailsPage( } @Composable -fun SubjectDetailsPage( +fun SubjectDetailsScreen( state: SubjectDetailsStateLoader.LoadState, onPlay: (episodeId: Int) -> Unit, onLoadErrorRetry: () -> Unit, @@ -152,7 +152,7 @@ fun SubjectDetailsPage( navigationIcon: @Composable () -> Unit = {}, ) { when (state) { - is SubjectDetailsStateLoader.LoadState.Ok -> SubjectDetailsPage( + is SubjectDetailsStateLoader.LoadState.Ok -> SubjectDetailsScreen( state.value, onPlay = onPlay, modifier, @@ -181,7 +181,7 @@ fun SubjectDetailsPage( } @Composable -private fun SubjectDetailsPage( +private fun SubjectDetailsScreen( state: SubjectDetailsState, onPlay: (episodeId: Int) -> Unit, modifier: Modifier = Modifier, @@ -211,7 +211,7 @@ private fun SubjectDetailsPage( val placeholderModifier = Modifier.placeholder(state.showPlaceholder) val presentation by state.presentationFlow.collectAsStateWithLifecycle() - SubjectDetailsPageLayout( + SubjectDetailsScreenLayout( state.subjectId, state.info, isPlaceholder = state.showPlaceholder, @@ -334,7 +334,7 @@ private fun ErrorSubjectDetailsPage( windowInsets: WindowInsets = TopAppBarDefaults.windowInsets, navigationIcon: @Composable () -> Unit = {}, ) { - SubjectDetailsPageLayout( + SubjectDetailsScreenLayout( subjectId = subjectId, info = placeholderSubjectInfo, isPlaceholder = false, @@ -376,7 +376,7 @@ enum class SubjectDetailsTab { * @param info `null` 表示正在加载中 */ @Composable -fun SubjectDetailsPageLayout( +fun SubjectDetailsScreenLayout( subjectId: Int, info: SubjectInfo?, isPlaceholder: Boolean,