Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
Simple-Sms
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zhangchengbo
Simple-Sms
Commits
d0f25515
Commit
d0f25515
authored
Nov 20, 2025
by
zhangchengbo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:删除 全部/选中[黑名单]列表数据
parent
883b2fa8
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
63 additions
and
12 deletions
+63
-12
ManageBlockedNumbersActivity.kt
...etools/commons/activities/ManageBlockedNumbersActivity.kt
+41
-4
ManageBlockedNumbersScreen.kt
...ols/commons/compose/screens/ManageBlockedNumbersScreen.kt
+15
-8
strings.xml
commons/src/main/res/values-zh-rCN/strings.xml
+3
-0
strings.xml
commons/src/main/res/values/strings.xml
+4
-0
No files found.
commons/src/main/kotlin/com/simplemobiletools/commons/activities/ManageBlockedNumbersActivity.kt
View file @
d0f25515
...
...
@@ -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
()
{
...
...
commons/src/main/kotlin/com/simplemobiletools/commons/compose/screens/ManageBlockedNumbersScreen.kt
View file @
d0f25515
...
...
@@ -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
=
{},
)
}
}
commons/src/main/res/values-zh-rCN/strings.xml
View file @
d0f25515
...
...
@@ -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>
...
...
commons/src/main/res/values/strings.xml
View file @
d0f25515
...
...
@@ -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>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment