Commit d0f25515 by zhangchengbo

feat:删除 全部/选中[黑名单]列表数据

parent 883b2fa8
...@@ -6,6 +6,7 @@ import android.content.ActivityNotFoundException ...@@ -6,6 +6,7 @@ import android.content.ActivityNotFoundException
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.util.Log
import android.widget.Toast import android.widget.Toast
import androidx.activity.compose.setContent import androidx.activity.compose.setContent
import androidx.activity.viewModels import androidx.activity.viewModels
...@@ -21,6 +22,7 @@ import com.simplemobiletools.commons.compose.extensions.onEventValue ...@@ -21,6 +22,7 @@ import com.simplemobiletools.commons.compose.extensions.onEventValue
import com.simplemobiletools.commons.compose.screens.ManageBlockedNumbersScreen import com.simplemobiletools.commons.compose.screens.ManageBlockedNumbersScreen
import com.simplemobiletools.commons.compose.theme.AppThemeSurface import com.simplemobiletools.commons.compose.theme.AppThemeSurface
import com.simplemobiletools.commons.dialogs.AddOrEditBlockedNumberAlertDialog import com.simplemobiletools.commons.dialogs.AddOrEditBlockedNumberAlertDialog
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
import com.simplemobiletools.commons.dialogs.ExportBlockedNumbersDialog import com.simplemobiletools.commons.dialogs.ExportBlockedNumbersDialog
import com.simplemobiletools.commons.dialogs.FilePickerDialog import com.simplemobiletools.commons.dialogs.FilePickerDialog
import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.extensions.*
...@@ -39,7 +41,7 @@ import kotlinx.coroutines.withContext ...@@ -39,7 +41,7 @@ import kotlinx.coroutines.withContext
class ManageBlockedNumbersActivity : BaseSimpleActivity() { class ManageBlockedNumbersActivity : BaseSimpleActivity() {
private val config by lazy { private val config by lazy {
baseConfig baseConfig
} }
...@@ -48,6 +50,8 @@ class ManageBlockedNumbersActivity : BaseSimpleActivity() { ...@@ -48,6 +50,8 @@ class ManageBlockedNumbersActivity : BaseSimpleActivity() {
private const val PICK_EXPORT_FILE_INTENT = 21 private const val PICK_EXPORT_FILE_INTENT = 21
} }
private val TAG = "ManageBlockedNumbersActivity"
override fun getAppIconIDs() = intent.getIntegerArrayListExtra(APP_ICON_IDS) ?: ArrayList() override fun getAppIconIDs() = intent.getIntegerArrayListExtra(APP_ICON_IDS) ?: ArrayList()
// //
override fun getAppLauncherName() = intent.getStringExtra(APP_LAUNCHER_NAME) ?: "" override fun getAppLauncherName() = intent.getStringExtra(APP_LAUNCHER_NAME) ?: ""
...@@ -60,6 +64,8 @@ class ManageBlockedNumbersActivity : BaseSimpleActivity() { ...@@ -60,6 +64,8 @@ class ManageBlockedNumbersActivity : BaseSimpleActivity() {
setContent { setContent {
val context = LocalContext.current val context = LocalContext.current
val blockedNumbers by manageBlockedNumbersViewModel.blockedNumbers.collectAsStateWithLifecycle() val blockedNumbers by manageBlockedNumbersViewModel.blockedNumbers.collectAsStateWithLifecycle()
Log.d(TAG, "onCreate: 获取所有黑名单列表 blockedNumbers = $blockedNumbers")
LaunchedEffect(blockedNumbers) { LaunchedEffect(blockedNumbers) {
if (blockedNumbers?.any { blockedNumber -> blockedNumber.number.isBlockedNumberPattern() } == true) { if (blockedNumbers?.any { blockedNumber -> blockedNumber.number.isBlockedNumberPattern() } == true) {
maybeSetDefaultCallerIdApp() maybeSetDefaultCallerIdApp()
...@@ -87,6 +93,7 @@ class ManageBlockedNumbersActivity : BaseSimpleActivity() { ...@@ -87,6 +93,7 @@ class ManageBlockedNumbersActivity : BaseSimpleActivity() {
updateBlockedNumbers() updateBlockedNumbers()
} }
) { blockedNumber -> ) { blockedNumber ->
Log.d(TAG, "onCreate: 添加成功黑名单 blockedNumber = $blockedNumber")
addBlockedNumber(blockedNumber) addBlockedNumber(blockedNumber)
clickedBlockedNumber = null clickedBlockedNumber = null
updateBlockedNumbers() updateBlockedNumbers()
...@@ -96,6 +103,7 @@ class ManageBlockedNumbersActivity : BaseSimpleActivity() { ...@@ -96,6 +103,7 @@ class ManageBlockedNumbersActivity : BaseSimpleActivity() {
ManageBlockedNumbersScreen( ManageBlockedNumbersScreen(
goBack = ::finish, goBack = ::finish,
onAdd = { onAdd = {
Log.d(TAG, "onCreate: 点击添加黑名单 ")
clickedBlockedNumber = null clickedBlockedNumber = null
addBlockedNumberDialogState.show() addBlockedNumberDialogState.show()
}, },
...@@ -115,8 +123,20 @@ class ManageBlockedNumbersActivity : BaseSimpleActivity() { ...@@ -115,8 +123,20 @@ class ManageBlockedNumbersActivity : BaseSimpleActivity() {
onCheckedSetCallerIdAsDefault(isChecked) onCheckedSetCallerIdAsDefault(isChecked)
}, },
blockedNumbers = blockedNumbers, blockedNumbers = blockedNumbers,
onDelete = { selectedKeys -> onDelete = { selectedKeys: Set<Long> ->
deleteBlockedNumbers(blockedNumbers, selectedKeys) if (blockedNumbers.isNullOrEmpty()) return@ManageBlockedNumbersScreen
Log.d(TAG, "onCreate: 长按滑动模式 删除所有黑名单数据!")
val allBlockKeys = blockedNumbers!!.map { it.id }
var confirmationText = ""
confirmationText = if (allBlockKeys == selectedKeys) {
"${getString(R.string.you_sure_delete_all_blocked_numbers)}\n\n${getString(R.string.cannot_be_undone)}"
} else {
"${getString(R.string.you_sure_delete_choose_blocked_numbers)}\n\n${getString(R.string.cannot_be_undone)}"
}
ConfirmationDialog(this, confirmationText) {
Log.d(TAG, "onCreate: 长按滑动模式 $confirmationText YES")
deleteBlockedNumbers(blockedNumbers, selectedKeys)
}
}, },
onEdit = { blockedNumber -> onEdit = { blockedNumber ->
clickedBlockedNumber = blockedNumber clickedBlockedNumber = blockedNumber
...@@ -124,12 +144,28 @@ class ManageBlockedNumbersActivity : BaseSimpleActivity() { ...@@ -124,12 +144,28 @@ class ManageBlockedNumbersActivity : BaseSimpleActivity() {
}, },
onCopy = { blockedNumber -> onCopy = { blockedNumber ->
copyToClipboard(blockedNumber.number) copyToClipboard(blockedNumber.number)
},
selectAllBlock = {
if (blockedNumbers.isNullOrEmpty()) return@ManageBlockedNumbersScreen
val confirmationText = "${getString(R.string.you_sure_delete_all_blocked_numbers)}\n\n${getString(R.string.cannot_be_undone)}"
Log.d(TAG, "onCreate: 点击选项模式 删除所有黑名单数据!")
ConfirmationDialog(this, confirmationText) {
Log.d(TAG, "onCreate: 点击选项模式 $confirmationText YES")
blockedNumbers!!.forEach { blockedNumber ->
deleteBlockedNumber(blockedNumber.number)
}
updateBlockedNumbers()
Log.d(TAG, "onCreate: 点击选项模式 已成功删除所有黑名单数据!")
}
} }
) )
} }
} }
} }
/**
* 长按滑动模式,删除选中黑名单
*/
private fun deleteBlockedNumbers( private fun deleteBlockedNumbers(
blockedNumbers: ImmutableList<BlockedNumber>?, blockedNumbers: ImmutableList<BlockedNumber>?,
selectedKeys: Set<Long> selectedKeys: Set<Long>
...@@ -139,7 +175,8 @@ class ManageBlockedNumbersActivity : BaseSimpleActivity() { ...@@ -139,7 +175,8 @@ class ManageBlockedNumbersActivity : BaseSimpleActivity() {
.forEach { blockedNumber -> .forEach { blockedNumber ->
deleteBlockedNumber(blockedNumber.number) deleteBlockedNumber(blockedNumber.number)
} }
manageBlockedNumbersViewModel.updateBlockedNumbers() updateBlockedNumbers()
Log.d(TAG, "onCreate: 长按滑动模式 已成功删除所有黑名单数据!")
} }
private fun tryImportBlockedNumbers() { private fun tryImportBlockedNumbers() {
......
...@@ -84,6 +84,7 @@ internal fun ManageBlockedNumbersScreen( ...@@ -84,6 +84,7 @@ internal fun ManageBlockedNumbersScreen(
onDelete: (Set<Long>) -> Unit, onDelete: (Set<Long>) -> Unit,
onEdit: (BlockedNumber) -> Unit, onEdit: (BlockedNumber) -> Unit,
onCopy: (BlockedNumber) -> Unit, onCopy: (BlockedNumber) -> Unit,
selectAllBlock:()->Unit
) { ) {
val dimens = SimpleTheme.dimens val dimens = SimpleTheme.dimens
val startingPadding = remember { Modifier.padding(horizontal = dimens.padding.small) } val startingPadding = remember { Modifier.padding(horizontal = dimens.padding.small) }
...@@ -108,6 +109,7 @@ internal fun ManageBlockedNumbersScreen( ...@@ -108,6 +109,7 @@ internal fun ManageBlockedNumbersScreen(
Column { Column {
Crossfade(targetState = isInActionMode, label = "toolbar-anim", animationSpec = tween(easing = FastOutLinearInEasing)) { actionMode -> Crossfade(targetState = isInActionMode, label = "toolbar-anim", animationSpec = tween(easing = FastOutLinearInEasing)) { actionMode ->
com.secspace.log.Log.d("","actionMode = $actionMode blockedNumbers = ${blockedNumbers != null}" )
if (actionMode && blockedNumbers != null) { if (actionMode && blockedNumbers != null) {
ActionModeToolbar( ActionModeToolbar(
selectedIdsCount = selectedIds.value.count(), selectedIdsCount = selectedIds.value.count(),
...@@ -136,7 +138,8 @@ internal fun ManageBlockedNumbersScreen( ...@@ -136,7 +138,8 @@ internal fun ManageBlockedNumbersScreen(
contrastColor = contrastColor, contrastColor = contrastColor,
onAdd = onAdd, onAdd = onAdd,
onImportBlockedNumbers = onImportBlockedNumbers, onImportBlockedNumbers = onImportBlockedNumbers,
onExportBlockedNumbers = onExportBlockedNumbers onExportBlockedNumbers = onExportBlockedNumbers,
selectAllBlock = selectAllBlock
) )
} }
} }
...@@ -152,8 +155,8 @@ internal fun ManageBlockedNumbersScreen( ...@@ -152,8 +155,8 @@ internal fun ManageBlockedNumbersScreen(
initialValue = isHiddenSelected, initialValue = isHiddenSelected,
onChange = onHiddenSelectedChange, onChange = onHiddenSelectedChange,
modifier = startingPadding.then(Modifier.topAppBarPaddings()), modifier = startingPadding.then(Modifier.topAppBarPaddings()),
)*/ )
SettingsHorizontalDivider(modifier = Modifier.topAppBarPaddings()) SettingsHorizontalDivider(modifier = Modifier.topAppBarPaddings())*/
} }
}, },
) { paddingValues -> ) { paddingValues ->
...@@ -542,7 +545,8 @@ private fun NonActionModeToolbar( ...@@ -542,7 +545,8 @@ private fun NonActionModeToolbar(
contrastColor: Color, contrastColor: Color,
onAdd: () -> Unit, onAdd: () -> Unit,
onImportBlockedNumbers: () -> Unit, onImportBlockedNumbers: () -> Unit,
onExportBlockedNumbers: () -> Unit onExportBlockedNumbers: () -> Unit,
selectAllBlock: () ->Unit
) { ) {
SimpleScaffoldTopBar( SimpleScaffoldTopBar(
title = { scrolledTextColor -> title = { scrolledTextColor ->
...@@ -565,8 +569,9 @@ private fun NonActionModeToolbar( ...@@ -565,8 +569,9 @@ private fun NonActionModeToolbar(
val actionMenus = remember { val actionMenus = remember {
listOf( listOf(
ActionItem(R.string.add_a_blocked_number, icon = Icons.Filled.Add, doAction = onAdd), ActionItem(R.string.add_a_blocked_number, icon = Icons.Filled.Add, doAction = onAdd),
/* ActionItem(R.string.import_blocked_numbers, doAction = onImportBlockedNumbers, overflowMode = OverflowMode.ALWAYS_OVERFLOW), ActionItem(R.string.delete_all_blocked_numbers, doAction = selectAllBlock, overflowMode = OverflowMode.ALWAYS_OVERFLOW),
ActionItem(R.string.export_blocked_numbers, doAction = onExportBlockedNumbers, overflowMode = OverflowMode.ALWAYS_OVERFLOW),*/ /* ActionItem(R.string.import_blocked_numbers, doAction = onImportBlockedNumbers, overflowMode = OverflowMode.ALWAYS_OVERFLOW),
ActionItem(R.string.export_blocked_numbers, doAction = onExportBlockedNumbers, overflowMode = OverflowMode.ALWAYS_OVERFLOW),*/
).toImmutableList() ).toImmutableList()
} }
var isMenuVisible by remember { mutableStateOf(false) } var isMenuVisible by remember { mutableStateOf(false) }
...@@ -678,7 +683,9 @@ private fun ManageBlockedNumbersScreenPreview(@PreviewParameter(BooleanPreviewPa ...@@ -678,7 +683,9 @@ private fun ManageBlockedNumbersScreenPreview(@PreviewParameter(BooleanPreviewPa
BlockedNumber(id = 8, number = "5552221111", normalizedNumber = "5552221111", numberToCompare = "5552221111") BlockedNumber(id = 8, number = "5552221111", normalizedNumber = "5552221111", numberToCompare = "5552221111")
).toImmutableList(), ).toImmutableList(),
onDelete = {}, onDelete = {},
onEdit = {} onEdit = {},
) {} onCopy = {},
selectAllBlock = {},
)
} }
} }
...@@ -112,6 +112,9 @@ ...@@ -112,6 +112,9 @@
<item quantity="other">%d 行</item> <item quantity="other">%d 行</item>
</plurals> </plurals>
<!-- Blocked numbers --> <!-- Blocked numbers -->
<string name="you_sure_delete_choose_blocked_numbers">您确定删除选中[黑名单]号码吗?</string>
<string name="you_sure_delete_all_blocked_numbers">您确定删除所有[黑名单]号码吗?</string>
<string name="delete_all_blocked_numbers">删除全部黑名单</string>
<string name="manage_blocked_numbers">管理黑名单</string> <string name="manage_blocked_numbers">管理黑名单</string>
<string name="not_blocking_anyone">你没有拦截任何人。</string> <string name="not_blocking_anyone">你没有拦截任何人。</string>
<string name="add_a_blocked_number">添加黑名单号码</string> <string name="add_a_blocked_number">添加黑名单号码</string>
......
...@@ -119,6 +119,10 @@ ...@@ -119,6 +119,10 @@
</plurals> </plurals>
<!-- Blocked numbers & contacts --> <!-- Blocked numbers & contacts -->
<string name="you_sure_delete_choose_blocked_numbers">You Sure Delete Choose blocked number ?</string>
<string name="you_sure_delete_all_blocked_numbers">You Sure Delete all blocked number ?</string>
<string name="delete_all_blocked_numbers">Delete all blocked number</string>
<string name="manage_blocked_numbers">Manage blocked numbers</string> <string name="manage_blocked_numbers">Manage blocked numbers</string>
<string name="not_blocking_anyone">You are not blocking anyone.</string> <string name="not_blocking_anyone">You are not blocking anyone.</string>
<string name="add_a_blocked_number">Add a blocked number</string> <string name="add_a_blocked_number">Add a blocked number</string>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment