mirror of
https://github.com/PaulWoitaschek/Voice.git
synced 2026-03-13 08:02:45 +08:00
Enable the composable parameter naming rule
This commit is contained in:
@@ -16,7 +16,6 @@ ktlint_code_style = intellij_idea
|
||||
ktlint_standard_function-expression-body = disabled
|
||||
ktlint_function_signature_rule_force_multiline_when_parameter_count_greater_or_equal_than = 2
|
||||
ktlint_class_signature_rule_force_multiline_when_parameter_count_greater_or_equal_than = 2
|
||||
ktlint_compose_parameter-naming = disabled
|
||||
ij_java_class_count_to_use_import_on_demand = 999
|
||||
ij_kotlin_allow_trailing_comma = true
|
||||
ij_kotlin_allow_trailing_comma_on_call_site = true
|
||||
|
||||
@@ -15,13 +15,13 @@ import androidx.compose.ui.unit.dp
|
||||
@Composable
|
||||
internal fun BottomSheetContent(
|
||||
state: EditBookBottomSheetState,
|
||||
onItemClicked: (BottomSheetItem) -> Unit,
|
||||
onItemClick: (BottomSheetItem) -> Unit,
|
||||
) {
|
||||
Column {
|
||||
state.items.forEach { item ->
|
||||
ListItem(
|
||||
modifier = Modifier.clickable {
|
||||
onItemClicked(item)
|
||||
onItemClick(item)
|
||||
},
|
||||
headlineContent = {
|
||||
Text(text = stringResource(item.titleRes))
|
||||
|
||||
@@ -5,7 +5,7 @@ import voice.common.BookId
|
||||
interface BottomSheetItemViewModel {
|
||||
|
||||
suspend fun items(bookId: BookId): List<BottomSheetItem>
|
||||
suspend fun onItemClicked(
|
||||
suspend fun onItemClick(
|
||||
bookId: BookId,
|
||||
item: BottomSheetItem,
|
||||
)
|
||||
|
||||
@@ -34,7 +34,7 @@ class BottomSheetViewModel
|
||||
val bookId = bookId ?: return
|
||||
scope.launch {
|
||||
viewModels.forEach {
|
||||
it.onItemClicked(bookId, item)
|
||||
it.onItemClick(bookId, item)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ internal fun DeleteBookDialog(
|
||||
viewState: DeleteBookViewState,
|
||||
onDismiss: () -> Unit,
|
||||
onConfirmDeletion: () -> Unit,
|
||||
onDeleteCheckBoxChecked: (Boolean) -> Unit,
|
||||
onDeleteCheckBoxCheck: (Boolean) -> Unit,
|
||||
) {
|
||||
AlertDialog(
|
||||
onDismissRequest = onDismiss,
|
||||
@@ -65,12 +65,12 @@ internal fun DeleteBookDialog(
|
||||
.padding(top = 8.dp)
|
||||
.fillMaxWidth()
|
||||
.clickable {
|
||||
onDeleteCheckBoxChecked(!viewState.deleteCheckBoxChecked)
|
||||
onDeleteCheckBoxCheck(!viewState.deleteCheckBoxChecked)
|
||||
},
|
||||
) {
|
||||
Checkbox(
|
||||
checked = viewState.deleteCheckBoxChecked,
|
||||
onCheckedChange = onDeleteCheckBoxChecked,
|
||||
onCheckedChange = onDeleteCheckBoxCheck,
|
||||
)
|
||||
Text(stringResource(id = StringsR.string.delete_book_dialog_deletion_confirmation))
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ constructor(
|
||||
return listOf(BottomSheetItem.DeleteBook)
|
||||
}
|
||||
|
||||
override suspend fun onItemClicked(
|
||||
override suspend fun onItemClick(
|
||||
bookId: BookId,
|
||||
item: BottomSheetItem,
|
||||
) {
|
||||
@@ -62,7 +62,7 @@ constructor(
|
||||
_state.value = null
|
||||
}
|
||||
|
||||
internal fun onDeleteCheckBoxChecked(checked: Boolean) {
|
||||
internal fun onDeleteCheckBoxCheck(checked: Boolean) {
|
||||
_state.value = _state.value?.copy(deleteCheckBoxChecked = checked)
|
||||
}
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ constructor(private val repo: BookRepository) : BottomSheetItemViewModel {
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun onItemClicked(
|
||||
override suspend fun onItemClick(
|
||||
bookId: BookId,
|
||||
item: BottomSheetItem,
|
||||
) {
|
||||
|
||||
@@ -30,7 +30,7 @@ constructor(private val repo: BookRepository) : BottomSheetItemViewModel {
|
||||
return listOf(BottomSheetItem.Title)
|
||||
}
|
||||
|
||||
override suspend fun onItemClicked(
|
||||
override suspend fun onItemClick(
|
||||
bookId: BookId,
|
||||
item: BottomSheetItem,
|
||||
) {
|
||||
|
||||
@@ -22,7 +22,7 @@ constructor(private val navigator: Navigator) : BottomSheetItemViewModel {
|
||||
return listOf(BottomSheetItem.FileCover)
|
||||
}
|
||||
|
||||
override suspend fun onItemClicked(
|
||||
override suspend fun onItemClick(
|
||||
bookId: BookId,
|
||||
item: BottomSheetItem,
|
||||
) {
|
||||
|
||||
@@ -19,7 +19,7 @@ constructor(private val navigator: Navigator) : BottomSheetItemViewModel {
|
||||
return listOf(BottomSheetItem.InternetCover)
|
||||
}
|
||||
|
||||
override suspend fun onItemClicked(
|
||||
override suspend fun onItemClick(
|
||||
bookId: BookId,
|
||||
item: BottomSheetItem,
|
||||
) {
|
||||
|
||||
@@ -237,7 +237,7 @@ constructor(
|
||||
playerController.playPause()
|
||||
}
|
||||
|
||||
fun onPermissionBugCardClicked() {
|
||||
fun onPermissionBugCardClick() {
|
||||
if (Build.VERSION.SDK_INT >= 30) {
|
||||
navigator.goTo(
|
||||
Destination.Activity(
|
||||
|
||||
@@ -102,7 +102,7 @@ fun BookOverviewScreen(modifier: Modifier = Modifier) {
|
||||
onSearchActiveChange = bookOverviewViewModel::onSearchActiveChange,
|
||||
onSearchQueryChange = bookOverviewViewModel::onSearchQueryChange,
|
||||
onSearchBookClick = bookOverviewViewModel::onSearchBookClick,
|
||||
onPermissionBugCardClicked = bookOverviewViewModel::onPermissionBugCardClicked,
|
||||
onPermissionBugCardClick = bookOverviewViewModel::onPermissionBugCardClick,
|
||||
)
|
||||
val deleteBookViewState = deleteBookViewModel.state.value
|
||||
if (deleteBookViewState != null) {
|
||||
@@ -110,7 +110,7 @@ fun BookOverviewScreen(modifier: Modifier = Modifier) {
|
||||
viewState = deleteBookViewState,
|
||||
onDismiss = deleteBookViewModel::onDismiss,
|
||||
onConfirmDeletion = deleteBookViewModel::onConfirmDeletion,
|
||||
onDeleteCheckBoxChecked = deleteBookViewModel::onDeleteCheckBoxChecked,
|
||||
onDeleteCheckBoxCheck = deleteBookViewModel::onDeleteCheckBoxCheck,
|
||||
)
|
||||
}
|
||||
val editBookTitleState = editBookTitleViewModel.state.value
|
||||
@@ -131,7 +131,7 @@ fun BookOverviewScreen(modifier: Modifier = Modifier) {
|
||||
content = {
|
||||
BottomSheetContent(
|
||||
state = bottomSheetViewModel.state.value,
|
||||
onItemClicked = { item ->
|
||||
onItemClick = { item ->
|
||||
if (item == BottomSheetItem.FileCover) {
|
||||
getContentLauncher.launch("image/*")
|
||||
}
|
||||
@@ -163,7 +163,7 @@ internal fun BookOverview(
|
||||
onSearchActiveChange: (Boolean) -> Unit,
|
||||
onSearchQueryChange: (String) -> Unit,
|
||||
onSearchBookClick: (BookId) -> Unit,
|
||||
onPermissionBugCardClicked: () -> Unit,
|
||||
onPermissionBugCardClick: () -> Unit,
|
||||
modifier: Modifier = Modifier,
|
||||
) {
|
||||
val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior()
|
||||
@@ -205,7 +205,7 @@ internal fun BookOverview(
|
||||
onBookClick = onBookClick,
|
||||
onBookLongClick = onBookLongClick,
|
||||
showPermissionBugCard = viewState.showStoragePermissionBugCard,
|
||||
onPermissionBugCardClicked = onPermissionBugCardClicked,
|
||||
onPermissionBugCardClick = onPermissionBugCardClick,
|
||||
)
|
||||
}
|
||||
BookOverviewLayoutMode.Grid -> {
|
||||
@@ -214,7 +214,7 @@ internal fun BookOverview(
|
||||
onBookClick = onBookClick,
|
||||
onBookLongClick = onBookLongClick,
|
||||
showPermissionBugCard = viewState.showStoragePermissionBugCard,
|
||||
onPermissionBugCardClicked = onPermissionBugCardClicked,
|
||||
onPermissionBugCardClick = onPermissionBugCardClick,
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -242,7 +242,7 @@ fun BookOverviewPreview(
|
||||
onSearchActiveChange = {},
|
||||
onSearchQueryChange = {},
|
||||
onSearchBookClick = {},
|
||||
onPermissionBugCardClicked = {},
|
||||
onPermissionBugCardClick = {},
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ internal fun GridBooks(
|
||||
onBookClick: (BookId) -> Unit,
|
||||
onBookLongClick: (BookId) -> Unit,
|
||||
showPermissionBugCard: Boolean,
|
||||
onPermissionBugCardClicked: () -> Unit,
|
||||
onPermissionBugCardClick: () -> Unit,
|
||||
) {
|
||||
val cellCount = gridColumnCount()
|
||||
LazyVerticalGrid(
|
||||
@@ -55,7 +55,7 @@ internal fun GridBooks(
|
||||
item(
|
||||
span = { GridItemSpan(maxLineSpan) },
|
||||
) {
|
||||
PermissionBugCard(onPermissionBugCardClicked)
|
||||
PermissionBugCard(onPermissionBugCardClick)
|
||||
}
|
||||
}
|
||||
books.forEach { (category, books) ->
|
||||
|
||||
@@ -42,7 +42,7 @@ internal fun ListBooks(
|
||||
onBookClick: (BookId) -> Unit,
|
||||
onBookLongClick: (BookId) -> Unit,
|
||||
showPermissionBugCard: Boolean,
|
||||
onPermissionBugCardClicked: () -> Unit,
|
||||
onPermissionBugCardClick: () -> Unit,
|
||||
) {
|
||||
LazyColumn(
|
||||
verticalArrangement = Arrangement.spacedBy(8.dp),
|
||||
@@ -50,7 +50,7 @@ internal fun ListBooks(
|
||||
) {
|
||||
if (showPermissionBugCard) {
|
||||
item {
|
||||
PermissionBugCard(onPermissionBugCardClicked)
|
||||
PermissionBugCard(onPermissionBugCardClick)
|
||||
}
|
||||
}
|
||||
books.forEach { (category, books) ->
|
||||
|
||||
@@ -17,7 +17,7 @@ import androidx.compose.ui.unit.dp
|
||||
import voice.strings.R as StringsR
|
||||
|
||||
@Composable
|
||||
internal fun PermissionBugCard(onPermissionBugCardClicked: () -> Unit) {
|
||||
internal fun PermissionBugCard(onPermissionBugCardClick: () -> Unit) {
|
||||
Card(
|
||||
Modifier
|
||||
.padding(horizontal = 8.dp)
|
||||
@@ -29,7 +29,7 @@ internal fun PermissionBugCard(onPermissionBugCardClicked: () -> Unit) {
|
||||
Text(text = stringResource(id = StringsR.string.storage_bug_subtitle))
|
||||
Spacer(modifier = Modifier.size(16.dp))
|
||||
Button(
|
||||
onClick = onPermissionBugCardClicked,
|
||||
onClick = onPermissionBugCardClick,
|
||||
) {
|
||||
Text(text = stringResource(id = StringsR.string.storage_bug_button))
|
||||
}
|
||||
@@ -40,5 +40,5 @@ internal fun PermissionBugCard(onPermissionBugCardClicked: () -> Unit) {
|
||||
@Composable
|
||||
@Preview
|
||||
private fun PermissionBugCardPreview() {
|
||||
PermissionBugCard(onPermissionBugCardClicked = {})
|
||||
PermissionBugCard(onPermissionBugCardClick = {})
|
||||
}
|
||||
|
||||
@@ -68,12 +68,12 @@ fun BookmarkScreen(bookId: BookId) {
|
||||
BookmarkScreen(
|
||||
viewState = viewState,
|
||||
onClose = viewModel::closeScreen,
|
||||
onAdd = viewModel::onAddClicked,
|
||||
onAdd = viewModel::onAddClick,
|
||||
onDelete = viewModel::deleteBookmark,
|
||||
onEdit = viewModel::onEditClicked,
|
||||
onScrollConfirmed = viewModel::onScrollConfirmed,
|
||||
onEdit = viewModel::onEditClick,
|
||||
onScrollConfirm = viewModel::onScrollConfirm,
|
||||
onClick = viewModel::selectBookmark,
|
||||
onNewBookmarkNameChosen = viewModel::addBookmark,
|
||||
onNewBookmarkNameChoose = viewModel::addBookmark,
|
||||
onCloseDialog = viewModel::closeDialog,
|
||||
onEditBookmark = viewModel::editBookmark,
|
||||
)
|
||||
@@ -86,10 +86,10 @@ internal fun BookmarkScreen(
|
||||
onAdd: () -> Unit,
|
||||
onDelete: (Bookmark.Id) -> Unit,
|
||||
onEdit: (Bookmark.Id) -> Unit,
|
||||
onScrollConfirmed: () -> Unit,
|
||||
onScrollConfirm: () -> Unit,
|
||||
onClick: (Bookmark.Id) -> Unit,
|
||||
onCloseDialog: () -> Unit,
|
||||
onNewBookmarkNameChosen: (String) -> Unit,
|
||||
onNewBookmarkNameChoose: (String) -> Unit,
|
||||
onEditBookmark: (Bookmark.Id, String) -> Unit,
|
||||
modifier: Modifier = Modifier,
|
||||
) {
|
||||
@@ -123,11 +123,11 @@ internal fun BookmarkScreen(
|
||||
},
|
||||
) { paddingValues ->
|
||||
val lazyListState = rememberLazyListState()
|
||||
LaunchedEffect(viewState.shouldScrollTo, onScrollConfirmed) {
|
||||
LaunchedEffect(viewState.shouldScrollTo, onScrollConfirm) {
|
||||
val index = viewState.bookmarks.indexOfFirst { it.id == viewState.shouldScrollTo }
|
||||
if (index != -1) {
|
||||
lazyListState.animateScrollToItem(index)
|
||||
onScrollConfirmed()
|
||||
onScrollConfirm()
|
||||
}
|
||||
}
|
||||
LazyColumn(
|
||||
@@ -156,7 +156,7 @@ internal fun BookmarkScreen(
|
||||
BookmarkDialogViewState.AddBookmark -> {
|
||||
AddBookmarkDialog(
|
||||
onDismissRequest = onCloseDialog,
|
||||
onBookmarkNameChosen = onNewBookmarkNameChosen,
|
||||
onBookmarkNameChoose = onNewBookmarkNameChoose,
|
||||
)
|
||||
}
|
||||
BookmarkDialogViewState.None -> {
|
||||
|
||||
@@ -155,7 +155,7 @@ class BookmarkViewModel
|
||||
}
|
||||
}
|
||||
|
||||
fun onScrollConfirmed() {
|
||||
fun onScrollConfirm() {
|
||||
shouldScrollTo = null
|
||||
}
|
||||
|
||||
@@ -163,11 +163,11 @@ class BookmarkViewModel
|
||||
dialogViewState = BookmarkDialogViewState.None
|
||||
}
|
||||
|
||||
fun onAddClicked() {
|
||||
fun onAddClick() {
|
||||
dialogViewState = BookmarkDialogViewState.AddBookmark
|
||||
}
|
||||
|
||||
fun onEditClicked(id: Bookmark.Id) {
|
||||
fun onEditClick(id: Bookmark.Id) {
|
||||
val bookmark = bookmarks.find { it.id == id } ?: return
|
||||
dialogViewState = BookmarkDialogViewState.EditBookmark(id, bookmark.title)
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ import voice.strings.R as StringsR
|
||||
@Composable
|
||||
internal fun AddBookmarkDialog(
|
||||
onDismissRequest: () -> Unit,
|
||||
onBookmarkNameChosen: (String) -> Unit,
|
||||
onBookmarkNameChoose: (String) -> Unit,
|
||||
) {
|
||||
var bookmarkName by remember { mutableStateOf("") }
|
||||
val focusRequester = remember { FocusRequester() }
|
||||
@@ -54,7 +54,7 @@ internal fun AddBookmarkDialog(
|
||||
),
|
||||
keyboardActions = KeyboardActions(
|
||||
onDone = {
|
||||
onBookmarkNameChosen(bookmarkName)
|
||||
onBookmarkNameChoose(bookmarkName)
|
||||
},
|
||||
),
|
||||
singleLine = true,
|
||||
@@ -64,7 +64,7 @@ internal fun AddBookmarkDialog(
|
||||
confirmButton = {
|
||||
Button(
|
||||
onClick = {
|
||||
onBookmarkNameChosen(bookmarkName)
|
||||
onBookmarkNameChoose(bookmarkName)
|
||||
onDismissRequest()
|
||||
},
|
||||
) {
|
||||
|
||||
@@ -25,7 +25,7 @@ import voice.strings.R as StringsR
|
||||
|
||||
@Composable
|
||||
internal fun FolderModeSelectionCard(
|
||||
onFolderModeSelected: (FolderMode) -> Unit,
|
||||
onFolderModeSelect: (FolderMode) -> Unit,
|
||||
selectedFolderMode: FolderMode,
|
||||
) {
|
||||
Card(
|
||||
@@ -38,7 +38,7 @@ internal fun FolderModeSelectionCard(
|
||||
verticalArrangement = Arrangement.spacedBy(8.dp),
|
||||
) {
|
||||
FolderMode.entries.forEach { folderMode ->
|
||||
val selectFolder = { onFolderModeSelected(folderMode) }
|
||||
val selectFolder = { onFolderModeSelect(folderMode) }
|
||||
FolderModeColumn(selectFolder = selectFolder, selectedFolderMode = selectedFolderMode, folderMode = folderMode)
|
||||
}
|
||||
}
|
||||
@@ -92,7 +92,7 @@ private fun FolderMode.title(): Int {
|
||||
private fun FolderModeSelectionCardPreview() {
|
||||
VoiceTheme {
|
||||
FolderModeSelectionCard(
|
||||
onFolderModeSelected = {},
|
||||
onFolderModeSelect = {},
|
||||
selectedFolderMode = FolderMode.Audiobooks,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ fun SelectFolderType(
|
||||
}
|
||||
SelectFolderType(
|
||||
viewState = viewModel.viewState(),
|
||||
onFolderModeSelected = viewModel::setFolderMode,
|
||||
onFolderModeSelect = viewModel::setFolderMode,
|
||||
onAddClick = viewModel::add,
|
||||
onBackClick = viewModel::onCloseClick,
|
||||
)
|
||||
@@ -69,7 +69,7 @@ fun SelectFolderType(
|
||||
@Composable
|
||||
private fun SelectFolderType(
|
||||
viewState: SelectFolderTypeViewState,
|
||||
onFolderModeSelected: (FolderMode) -> Unit,
|
||||
onFolderModeSelect: (FolderMode) -> Unit,
|
||||
onAddClick: () -> Unit,
|
||||
onBackClick: () -> Unit,
|
||||
) {
|
||||
@@ -85,7 +85,7 @@ private fun SelectFolderType(
|
||||
) { contentPadding ->
|
||||
Content(
|
||||
contentPadding = contentPadding,
|
||||
onFolderModeSelected = onFolderModeSelected,
|
||||
onFolderModeSelect = onFolderModeSelect,
|
||||
viewState = viewState,
|
||||
)
|
||||
}
|
||||
@@ -95,7 +95,7 @@ private fun SelectFolderType(
|
||||
private fun Content(
|
||||
contentPadding: PaddingValues,
|
||||
viewState: SelectFolderTypeViewState,
|
||||
onFolderModeSelected: (FolderMode) -> Unit,
|
||||
onFolderModeSelect: (FolderMode) -> Unit,
|
||||
) {
|
||||
LazyVerticalGrid(
|
||||
columns = GridCells.Adaptive(150.dp),
|
||||
@@ -107,7 +107,7 @@ private fun Content(
|
||||
span = { GridItemSpan(maxLineSpan) },
|
||||
) {
|
||||
FolderModeSelectionCard(
|
||||
onFolderModeSelected = onFolderModeSelected,
|
||||
onFolderModeSelect = onFolderModeSelect,
|
||||
selectedFolderMode = viewState.selectedFolderMode,
|
||||
)
|
||||
}
|
||||
@@ -186,7 +186,7 @@ private fun AppBar(
|
||||
private fun SelectFolderTypePreview() {
|
||||
SelectFolderType(
|
||||
onBackClick = {},
|
||||
onFolderModeSelected = {},
|
||||
onFolderModeSelect = {},
|
||||
viewState = SelectFolderTypeViewState(
|
||||
books = listOf(
|
||||
SelectFolderTypeViewState.Book("Cats", 42),
|
||||
|
||||
@@ -36,17 +36,17 @@ class MigrationViewModel
|
||||
var showDeletionConfirmationDialog by remember {
|
||||
mutableStateOf(false)
|
||||
}
|
||||
val onDeleteClicked = {
|
||||
val onDeleteClick = {
|
||||
showDeletionConfirmationDialog = true
|
||||
}
|
||||
val onDeletionAborted = {
|
||||
val onDeletionAbort = {
|
||||
showDeletionConfirmationDialog = false
|
||||
}
|
||||
var items by remember {
|
||||
mutableStateOf(listOf<MigrationViewState.Item>())
|
||||
}
|
||||
val scope = rememberCoroutineScope()
|
||||
val onDeletionConfirmed: () -> Unit = {
|
||||
val onDeletionConfirm: () -> Unit = {
|
||||
showDeletionConfirmationDialog = false
|
||||
scope.launch {
|
||||
dao.deleteAll()
|
||||
@@ -59,10 +59,10 @@ class MigrationViewModel
|
||||
|
||||
return MigrationViewState(
|
||||
items = items,
|
||||
onDeleteClicked = onDeleteClicked,
|
||||
onDeleteClick = onDeleteClick,
|
||||
showDeletionConfirmationDialog = showDeletionConfirmationDialog,
|
||||
onDeletionConfirmed = onDeletionConfirmed,
|
||||
onDeletionAborted = onDeletionAborted,
|
||||
onDeletionConfirm = onDeletionConfirm,
|
||||
onDeletionAbort = onDeletionAbort,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ fun Migration() {
|
||||
val viewState = viewModel.viewState()
|
||||
Migration(
|
||||
viewState = viewState,
|
||||
onCloseClicked = {
|
||||
onCloseClick = {
|
||||
viewModel.onCloseClick()
|
||||
},
|
||||
)
|
||||
@@ -64,7 +64,7 @@ fun Migration() {
|
||||
@Composable
|
||||
internal fun Migration(
|
||||
viewState: MigrationViewState,
|
||||
onCloseClicked: () -> Unit,
|
||||
onCloseClick: () -> Unit,
|
||||
) {
|
||||
val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior()
|
||||
Scaffold(
|
||||
@@ -77,7 +77,7 @@ internal fun Migration(
|
||||
},
|
||||
navigationIcon = {
|
||||
IconButton(
|
||||
onClick = onCloseClicked,
|
||||
onClick = onCloseClick,
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Outlined.Close,
|
||||
@@ -88,7 +88,7 @@ internal fun Migration(
|
||||
)
|
||||
},
|
||||
floatingActionButton = {
|
||||
FloatingActionButton(onClick = viewState.onDeleteClicked) {
|
||||
FloatingActionButton(onClick = viewState.onDeleteClick) {
|
||||
Icon(
|
||||
imageVector = Icons.Outlined.Delete,
|
||||
contentDescription = stringResource(id = StringsR.string.delete),
|
||||
@@ -106,8 +106,8 @@ internal fun Migration(
|
||||
}
|
||||
if (viewState.showDeletionConfirmationDialog) {
|
||||
DeletionConfirmationDialog(
|
||||
onCancel = viewState.onDeletionAborted,
|
||||
onConfirm = viewState.onDeletionConfirmed,
|
||||
onCancel = viewState.onDeletionAbort,
|
||||
onConfirm = viewState.onDeletionConfirm,
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -236,7 +236,7 @@ private fun MigrationPreview(
|
||||
viewState: MigrationViewState,
|
||||
) {
|
||||
VoiceTheme {
|
||||
Migration(viewState, onCloseClicked = {})
|
||||
Migration(viewState, onCloseClick = {})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -272,10 +272,10 @@ internal class MigrationViewStatePreviewProvider : PreviewParameterProvider<Migr
|
||||
yield(
|
||||
MigrationViewState(
|
||||
items = listOf(item(), item()),
|
||||
onDeleteClicked = {},
|
||||
onDeleteClick = {},
|
||||
showDeletionConfirmationDialog = false,
|
||||
onDeletionConfirmed = {},
|
||||
onDeletionAborted = {},
|
||||
onDeletionConfirm = {},
|
||||
onDeletionAbort = {},
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
@@ -4,10 +4,10 @@ import java.time.Instant
|
||||
|
||||
internal data class MigrationViewState(
|
||||
val items: List<Item>,
|
||||
val onDeleteClicked: () -> Unit,
|
||||
val onDeleteClick: () -> Unit,
|
||||
val showDeletionConfirmationDialog: Boolean,
|
||||
val onDeletionConfirmed: () -> Unit,
|
||||
val onDeletionAborted: () -> Unit,
|
||||
val onDeletionConfirm: () -> Unit,
|
||||
val onDeletionAbort: () -> Unit,
|
||||
) {
|
||||
data class Item(
|
||||
val name: String,
|
||||
|
||||
@@ -70,16 +70,16 @@ class BookPlayController(bundle: Bundle) : ComposeController(bundle) {
|
||||
onFastForwardClick = viewModel::fastForward,
|
||||
onRewindClick = viewModel::rewind,
|
||||
onSeek = viewModel::seekTo,
|
||||
onBookmarkClick = viewModel::onBookmarkClicked,
|
||||
onBookmarkLongClick = viewModel::onBookmarkLongClicked,
|
||||
onBookmarkClick = viewModel::onBookmarkClick,
|
||||
onBookmarkLongClick = viewModel::onBookmarkLongClick,
|
||||
onSkipSilenceClick = viewModel::toggleSkipSilence,
|
||||
onSleepTimerClick = viewModel::toggleSleepTimer,
|
||||
onVolumeBoostClick = viewModel::onVolumeGainIconClicked,
|
||||
onSpeedChangeClick = viewModel::onPlaybackSpeedIconClicked,
|
||||
onVolumeBoostClick = viewModel::onVolumeGainIconClick,
|
||||
onSpeedChangeClick = viewModel::onPlaybackSpeedIconClick,
|
||||
onCloseClick = { router.popController(this@BookPlayController) },
|
||||
onSkipToNext = viewModel::next,
|
||||
onSkipToPrevious = viewModel::previous,
|
||||
onCurrentChapterClick = viewModel::onCurrentChapterClicked,
|
||||
onCurrentChapterClick = viewModel::onCurrentChapterClick,
|
||||
useLandscapeLayout = LocalConfiguration.current.orientation == ORIENTATION_LANDSCAPE,
|
||||
snackbarHostState = snackbarHostState,
|
||||
)
|
||||
|
||||
@@ -193,7 +193,7 @@ class BookPlayViewModel
|
||||
player.fastForward()
|
||||
}
|
||||
|
||||
fun onCurrentChapterClicked() {
|
||||
fun onCurrentChapterClick() {
|
||||
scope.launch {
|
||||
val book = bookRepository.get(bookId) ?: return@launch
|
||||
val chapterMarks = book.chapters.flatMap {
|
||||
@@ -207,7 +207,7 @@ class BookPlayViewModel
|
||||
}
|
||||
}
|
||||
|
||||
fun onChapterClicked(index: Int) {
|
||||
fun onChapterClick(index: Int) {
|
||||
scope.launch {
|
||||
val book = bookRepository.get(bookId) ?: return@launch
|
||||
var currentIndex = -1
|
||||
@@ -224,7 +224,7 @@ class BookPlayViewModel
|
||||
}
|
||||
}
|
||||
|
||||
fun onPlaybackSpeedIconClicked() {
|
||||
fun onPlaybackSpeedIconClick() {
|
||||
scope.launch {
|
||||
val playbackSpeed = bookRepository.get(bookId)?.content?.playbackSpeed
|
||||
if (playbackSpeed != null) {
|
||||
@@ -233,7 +233,7 @@ class BookPlayViewModel
|
||||
}
|
||||
}
|
||||
|
||||
fun onVolumeGainIconClicked() {
|
||||
fun onVolumeGainIconClick() {
|
||||
scope.launch {
|
||||
val content = bookRepository.get(bookId)?.content
|
||||
if (content != null) {
|
||||
@@ -250,11 +250,11 @@ class BookPlayViewModel
|
||||
)
|
||||
}
|
||||
|
||||
fun onBookmarkClicked() {
|
||||
fun onBookmarkClick() {
|
||||
navigator.goTo(Destination.Bookmarks(bookId))
|
||||
}
|
||||
|
||||
fun onBookmarkLongClicked() {
|
||||
fun onBookmarkLongClick() {
|
||||
scope.launch {
|
||||
val book = bookRepository.get(bookId) ?: return@launch
|
||||
bookmarkRepository.addBookmarkAtBookPosition(
|
||||
|
||||
@@ -33,7 +33,7 @@ internal fun SelectChapterDialog(
|
||||
ListItem(
|
||||
colors = ListItemDefaults.colors(containerColor = Color.Transparent),
|
||||
modifier = Modifier.clickable {
|
||||
viewModel.onChapterClicked(index)
|
||||
viewModel.onChapterClick(index)
|
||||
},
|
||||
headlineContent = {
|
||||
Text(text = chapter.name ?: "")
|
||||
|
||||
@@ -28,8 +28,8 @@ import voice.strings.R as StringsR
|
||||
|
||||
@Composable
|
||||
internal fun AskForReviewDialog(
|
||||
onReviewed: (Int) -> Unit,
|
||||
onReviewDenied: () -> Unit,
|
||||
onReview: (Int) -> Unit,
|
||||
onReviewDeny: () -> Unit,
|
||||
onDismiss: () -> Unit,
|
||||
) {
|
||||
var selectedStars by remember { mutableIntStateOf(5) }
|
||||
@@ -70,14 +70,14 @@ internal fun AskForReviewDialog(
|
||||
}
|
||||
},
|
||||
dismissButton = {
|
||||
TextButton(onClick = onReviewDenied) {
|
||||
TextButton(onClick = onReviewDeny) {
|
||||
Text(stringResource(StringsR.string.review_request_button_no))
|
||||
}
|
||||
},
|
||||
confirmButton = {
|
||||
TextButton(
|
||||
onClick = {
|
||||
onReviewed(selectedStars)
|
||||
onReview(selectedStars)
|
||||
},
|
||||
) {
|
||||
Text(stringResource(StringsR.string.review_request_button_yes))
|
||||
@@ -90,8 +90,8 @@ internal fun AskForReviewDialog(
|
||||
@Preview
|
||||
private fun AskForReviewDialogPreview() {
|
||||
AskForReviewDialog(
|
||||
onReviewed = {},
|
||||
onReviewDenied = {},
|
||||
onReview = {},
|
||||
onReviewDeny = {},
|
||||
onDismiss = {},
|
||||
)
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ fun ReviewFeature() {
|
||||
val reviewManager = reviewComponent.reviewManager
|
||||
val activity = LocalContext.current.findActivity() ?: return
|
||||
AskForReviewDialog(
|
||||
onReviewed = { stars ->
|
||||
onReview = { stars ->
|
||||
Logger.d("User rated $stars")
|
||||
scope.launch {
|
||||
shouldShowReviewDialog.setShown()
|
||||
@@ -67,7 +67,7 @@ fun ReviewFeature() {
|
||||
showReviewDialog = false
|
||||
}
|
||||
},
|
||||
onReviewDenied = {
|
||||
onReviewDeny = {
|
||||
showReviewDialog = false
|
||||
scope.launch {
|
||||
shouldShowReviewDialog.setShown()
|
||||
|
||||
@@ -5,9 +5,9 @@ interface SettingsListener {
|
||||
fun toggleDarkTheme()
|
||||
fun toggleGrid()
|
||||
fun seekAmountChanged(seconds: Int)
|
||||
fun onSeekAmountRowClicked()
|
||||
fun autoRewindAmountChanged(seconds: Int)
|
||||
fun onAutoRewindRowClicked()
|
||||
fun onSeekAmountRowClick()
|
||||
fun autoRewindAmountChang(seconds: Int)
|
||||
fun onAutoRewindRowClick()
|
||||
fun dismissDialog()
|
||||
fun getSupport()
|
||||
fun suggestIdea()
|
||||
|
||||
@@ -80,15 +80,15 @@ class SettingsViewModel
|
||||
seekTimePref.value = seconds
|
||||
}
|
||||
|
||||
override fun onSeekAmountRowClicked() {
|
||||
override fun onSeekAmountRowClick() {
|
||||
dialog.value = SettingsViewState.Dialog.SeekTime
|
||||
}
|
||||
|
||||
override fun autoRewindAmountChanged(seconds: Int) {
|
||||
override fun autoRewindAmountChang(seconds: Int) {
|
||||
autoRewindAmountPref.value = seconds
|
||||
}
|
||||
|
||||
override fun onAutoRewindRowClicked() {
|
||||
override fun onAutoRewindRowClick() {
|
||||
dialog.value = SettingsViewState.Dialog.AutoRewindAmount
|
||||
}
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ internal fun AutoRewindRow(
|
||||
@Composable
|
||||
internal fun AutoRewindAmountDialog(
|
||||
currentSeconds: Int,
|
||||
onSecondsConfirmed: (Int) -> Unit,
|
||||
onSecondsConfirm: (Int) -> Unit,
|
||||
onDismiss: () -> Unit,
|
||||
) {
|
||||
TimeSettingDialog(
|
||||
@@ -57,7 +57,7 @@ internal fun AutoRewindAmountDialog(
|
||||
minSeconds = 0,
|
||||
maxSeconds = 20,
|
||||
textPluralRes = StringsR.plurals.seconds,
|
||||
onSecondsConfirmed = onSecondsConfirmed,
|
||||
onSecondsConfirm = onSecondsConfirm,
|
||||
onDismiss = onDismiss,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ internal fun SeekTimeRow(
|
||||
@Composable
|
||||
internal fun SeekAmountDialog(
|
||||
currentSeconds: Int,
|
||||
onSecondsConfirmed: (Int) -> Unit,
|
||||
onSecondsConfirm: (Int) -> Unit,
|
||||
onDismiss: () -> Unit,
|
||||
) {
|
||||
TimeSettingDialog(
|
||||
@@ -57,7 +57,7 @@ internal fun SeekAmountDialog(
|
||||
minSeconds = 3,
|
||||
maxSeconds = 60,
|
||||
textPluralRes = StringsR.plurals.seconds,
|
||||
onSecondsConfirmed = onSecondsConfirmed,
|
||||
onSecondsConfirm = onSecondsConfirm,
|
||||
onDismiss = onDismiss,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -57,9 +57,9 @@ private fun SettingsPreview() {
|
||||
override fun close() {}
|
||||
override fun toggleDarkTheme() {}
|
||||
override fun seekAmountChanged(seconds: Int) {}
|
||||
override fun onSeekAmountRowClicked() {}
|
||||
override fun autoRewindAmountChanged(seconds: Int) {}
|
||||
override fun onAutoRewindRowClicked() {}
|
||||
override fun onSeekAmountRowClick() {}
|
||||
override fun autoRewindAmountChang(seconds: Int) {}
|
||||
override fun onAutoRewindRowClick() {}
|
||||
override fun dismissDialog() {}
|
||||
override fun openTranslations() {}
|
||||
override fun getSupport() {}
|
||||
@@ -131,10 +131,10 @@ private fun Settings(
|
||||
},
|
||||
)
|
||||
SeekTimeRow(viewState.seekTimeInSeconds) {
|
||||
listener.onSeekAmountRowClicked()
|
||||
listener.onSeekAmountRowClick()
|
||||
}
|
||||
AutoRewindRow(viewState.autoRewindInSeconds) {
|
||||
listener.onAutoRewindRowClicked()
|
||||
listener.onAutoRewindRowClick()
|
||||
}
|
||||
ListItem(
|
||||
modifier = Modifier.clickable { listener.suggestIdea() },
|
||||
@@ -185,14 +185,14 @@ private fun Dialog(
|
||||
SettingsViewState.Dialog.AutoRewindAmount -> {
|
||||
AutoRewindAmountDialog(
|
||||
currentSeconds = viewState.autoRewindInSeconds,
|
||||
onSecondsConfirmed = listener::autoRewindAmountChanged,
|
||||
onSecondsConfirm = listener::autoRewindAmountChang,
|
||||
onDismiss = listener::dismissDialog,
|
||||
)
|
||||
}
|
||||
SettingsViewState.Dialog.SeekTime -> {
|
||||
SeekAmountDialog(
|
||||
currentSeconds = viewState.seekTimeInSeconds,
|
||||
onSecondsConfirmed = listener::seekAmountChanged,
|
||||
onSecondsConfirm = listener::seekAmountChanged,
|
||||
onDismiss = listener::dismissDialog,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ fun TimeSettingDialog(
|
||||
@PluralsRes textPluralRes: Int,
|
||||
minSeconds: Int,
|
||||
maxSeconds: Int,
|
||||
onSecondsConfirmed: (Int) -> Unit,
|
||||
onSecondsConfirm: (Int) -> Unit,
|
||||
onDismiss: () -> Unit,
|
||||
) {
|
||||
var sliderValue by remember { mutableFloatStateOf(currentSeconds.toFloat()) }
|
||||
@@ -53,7 +53,7 @@ fun TimeSettingDialog(
|
||||
confirmButton = {
|
||||
TextButton(
|
||||
onClick = {
|
||||
onSecondsConfirmed(sliderValue.roundToInt())
|
||||
onSecondsConfirm(sliderValue.roundToInt())
|
||||
onDismiss()
|
||||
},
|
||||
) {
|
||||
|
||||
Reference in New Issue
Block a user