Commit d0f25515 by zhangchengbo

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

parent 883b2fa8
......@@ -6,6 +6,7 @@ import android.content.ActivityNotFoundException
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.util.Log
import android.widget.Toast
import androidx.activity.compose.setContent
import androidx.activity.viewModels
......@@ -21,6 +22,7 @@ import com.simplemobiletools.commons.compose.extensions.onEventValue
import com.simplemobiletools.commons.compose.screens.ManageBlockedNumbersScreen
import com.simplemobiletools.commons.compose.theme.AppThemeSurface
import com.simplemobiletools.commons.dialogs.AddOrEditBlockedNumberAlertDialog
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
import com.simplemobiletools.commons.dialogs.ExportBlockedNumbersDialog
import com.simplemobiletools.commons.dialogs.FilePickerDialog
import com.simplemobiletools.commons.extensions.*
......@@ -39,7 +41,7 @@ import kotlinx.coroutines.withContext
class ManageBlockedNumbersActivity : BaseSimpleActivity() {
private val config by lazy {
private val config by lazy {
baseConfig
}
......@@ -48,6 +50,8 @@ class ManageBlockedNumbersActivity : BaseSimpleActivity() {
private const val PICK_EXPORT_FILE_INTENT = 21
}
private val TAG = "ManageBlockedNumbersActivity"
override fun getAppIconIDs() = intent.getIntegerArrayListExtra(APP_ICON_IDS) ?: ArrayList()
//
override fun getAppLauncherName() = intent.getStringExtra(APP_LAUNCHER_NAME) ?: ""
......@@ -60,6 +64,8 @@ class ManageBlockedNumbersActivity : BaseSimpleActivity() {
setContent {
val context = LocalContext.current
val blockedNumbers by manageBlockedNumbersViewModel.blockedNumbers.collectAsStateWithLifecycle()
Log.d(TAG, "onCreate: 获取所有黑名单列表 blockedNumbers = $blockedNumbers")
LaunchedEffect(blockedNumbers) {
if (blockedNumbers?.any { blockedNumber -> blockedNumber.number.isBlockedNumberPattern() } == true) {
maybeSetDefaultCallerIdApp()
......@@ -87,6 +93,7 @@ class ManageBlockedNumbersActivity : BaseSimpleActivity() {
updateBlockedNumbers()
}
) { blockedNumber ->
Log.d(TAG, "onCreate: 添加成功黑名单 blockedNumber = $blockedNumber")
addBlockedNumber(blockedNumber)
clickedBlockedNumber = null
updateBlockedNumbers()
......@@ -96,6 +103,7 @@ class ManageBlockedNumbersActivity : BaseSimpleActivity() {
ManageBlockedNumbersScreen(
goBack = ::finish,
onAdd = {
Log.d(TAG, "onCreate: 点击添加黑名单 ")
clickedBlockedNumber = null
addBlockedNumberDialogState.show()
},
......@@ -115,8 +123,20 @@ class ManageBlockedNumbersActivity : BaseSimpleActivity() {
onCheckedSetCallerIdAsDefault(isChecked)
},
blockedNumbers = blockedNumbers,
onDelete = { selectedKeys ->
deleteBlockedNumbers(blockedNumbers, selectedKeys)
onDelete = { selectedKeys: Set<Long> ->
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 ->
clickedBlockedNumber = blockedNumber
......@@ -124,12 +144,28 @@ class ManageBlockedNumbersActivity : BaseSimpleActivity() {
},
onCopy = { blockedNumber ->
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(
blockedNumbers: ImmutableList<BlockedNumber>?,
selectedKeys: Set<Long>
......@@ -139,7 +175,8 @@ class ManageBlockedNumbersActivity : BaseSimpleActivity() {
.forEach { blockedNumber ->
deleteBlockedNumber(blockedNumber.number)
}
manageBlockedNumbersViewModel.updateBlockedNumbers()
updateBlockedNumbers()
Log.d(TAG, "onCreate: 长按滑动模式 已成功删除所有黑名单数据!")
}
private fun tryImportBlockedNumbers() {
......
......@@ -84,6 +84,7 @@ internal fun ManageBlockedNumbersScreen(
onDelete: (Set<Long>) -> Unit,
onEdit: (BlockedNumber) -> Unit,
onCopy: (BlockedNumber) -> Unit,
selectAllBlock:()->Unit
) {
val dimens = SimpleTheme.dimens
val startingPadding = remember { Modifier.padding(horizontal = dimens.padding.small) }
......@@ -108,6 +109,7 @@ internal fun ManageBlockedNumbersScreen(
Column {
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) {
ActionModeToolbar(
selectedIdsCount = selectedIds.value.count(),
......@@ -136,7 +138,8 @@ internal fun ManageBlockedNumbersScreen(
contrastColor = contrastColor,
onAdd = onAdd,
onImportBlockedNumbers = onImportBlockedNumbers,
onExportBlockedNumbers = onExportBlockedNumbers
onExportBlockedNumbers = onExportBlockedNumbers,
selectAllBlock = selectAllBlock
)
}
}
......@@ -152,8 +155,8 @@ internal fun ManageBlockedNumbersScreen(
initialValue = isHiddenSelected,
onChange = onHiddenSelectedChange,
modifier = startingPadding.then(Modifier.topAppBarPaddings()),
)*/
SettingsHorizontalDivider(modifier = Modifier.topAppBarPaddings())
)
SettingsHorizontalDivider(modifier = Modifier.topAppBarPaddings())*/
}
},
) { paddingValues ->
......@@ -542,7 +545,8 @@ private fun NonActionModeToolbar(
contrastColor: Color,
onAdd: () -> Unit,
onImportBlockedNumbers: () -> Unit,
onExportBlockedNumbers: () -> Unit
onExportBlockedNumbers: () -> Unit,
selectAllBlock: () ->Unit
) {
SimpleScaffoldTopBar(
title = { scrolledTextColor ->
......@@ -565,8 +569,9 @@ private fun NonActionModeToolbar(
val actionMenus = remember {
listOf(
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.export_blocked_numbers, doAction = onExportBlockedNumbers, overflowMode = OverflowMode.ALWAYS_OVERFLOW),*/
ActionItem(R.string.delete_all_blocked_numbers, doAction = selectAllBlock, 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()
}
var isMenuVisible by remember { mutableStateOf(false) }
......@@ -678,7 +683,9 @@ private fun ManageBlockedNumbersScreenPreview(@PreviewParameter(BooleanPreviewPa
BlockedNumber(id = 8, number = "5552221111", normalizedNumber = "5552221111", numberToCompare = "5552221111")
).toImmutableList(),
onDelete = {},
onEdit = {}
) {}
onEdit = {},
onCopy = {},
selectAllBlock = {},
)
}
}
......@@ -112,6 +112,9 @@
<item quantity="other">%d 行</item>
</plurals>
<!-- 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="not_blocking_anyone">你没有拦截任何人。</string>
<string name="add_a_blocked_number">添加黑名单号码</string>
......
......@@ -119,6 +119,10 @@
</plurals>
<!-- 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="not_blocking_anyone">You are not blocking anyone.</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