Skip to content

Commit

Permalink
增加设置在选择数据源后自动关闭数据源弹窗, close #161
Browse files Browse the repository at this point in the history
  • Loading branch information
Him188 committed Jun 30, 2024
1 parent bb8e521 commit 9998415
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,10 @@ data class VideoScaffoldConfig(
* 在观看到 90% 进度后, 自动标记看过
*/
val autoMarkDone: Boolean = true,
/**
* 在点击选择剧集后, 立即隐藏 media selector
*/
val hideSelectorOnSelect: Boolean = false,
@Suppress("PropertyName") @Transient val _placeholder: Int = 0,
) {
companion object {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -411,6 +411,15 @@ private fun SettingsScope.PlayerGroup(
title = { Text("观看 90% 后自动标记为看过") },
Modifier.placeholder(vm.uiSettings.loading),
)
HorizontalDividerItem()
SwitchItem(
checked = config.hideSelectorOnSelect,
onCheckedChange = {
vm.videoScaffoldConfig.update(config.copy(hideSelectorOnSelect = it))
},
title = { Text("选择数据源后自动关闭弹窗") },
Modifier.placeholder(vm.uiSettings.loading),
)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,14 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.Stable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import kotlinx.coroutines.launch
import me.him188.ani.app.platform.currentPlatform
import me.him188.ani.app.platform.isDesktop
import me.him188.ani.app.tools.rememberBackgroundMonoTasker
Expand Down Expand Up @@ -100,14 +102,29 @@ fun EpisodeDetails(
}

if (viewModel.mediaSelectorVisible) {
val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = currentPlatform.isDesktop())
val uiScope = rememberCoroutineScope()
ModalBottomSheet(
onDismissRequest = { viewModel.mediaSelectorVisible = false },
sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = currentPlatform.isDesktop()),
sheetState = sheetState,
) {
EpisodePlayMediaSelector(
mediaSelector = viewModel.mediaSelectorPresentation,
sourceResults = viewModel.mediaSourceResultsPresentation,
onDismissRequest = { viewModel.mediaSelectorVisible = false },
onDismissRequest = {
uiScope.launch {
sheetState.hide()
viewModel.mediaSelectorVisible = false
}
},
onSelected = {
if (viewModel.videoScaffoldConfig.hideSelectorOnSelect) {
uiScope.launch {
sheetState.hide()
viewModel.mediaSelectorVisible = false
}
}
},
modifier = Modifier.fillMaxHeight(), // 防止添加筛选后数量变少导致 bottom sheet 高度变化
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import me.him188.ani.app.ui.subject.episode.mediaFetch.MediaSelectorPresentation
import me.him188.ani.app.ui.subject.episode.mediaFetch.MediaSelectorView
import me.him188.ani.app.ui.subject.episode.mediaFetch.MediaSourceResultsPresentation
import me.him188.ani.app.ui.subject.episode.mediaFetch.MediaSourceResultsView
import me.him188.ani.datasources.api.Media

/**
* 播放视频时的选择数据源
Expand All @@ -22,6 +23,7 @@ fun EpisodePlayMediaSelector(
sourceResults: MediaSourceResultsPresentation,
onDismissRequest: () -> Unit,
modifier: Modifier = Modifier,
onSelected: (Media) -> Unit = {},
) {
MediaSelectorView(
mediaSelector,
Expand All @@ -36,6 +38,10 @@ fun EpisodePlayMediaSelector(
Text("取消")
}
},
onClickItem = {
mediaSelector.select(it)
onSelected(it)
},
itemProgressBar = {},
)
}

0 comments on commit 9998415

Please sign in to comment.