mirror of
https://github.com/SimpleMobileTools/Simple-Dialer.git
synced 2025-03-31 19:50:24 +02:00
implement contact blocking
This commit is contained in:
parent
9855efcf66
commit
f3a04a90cf
@ -94,6 +94,10 @@ class ContactsAdapter(
|
|||||||
findItem(R.id.cab_create_shortcut).title = activity.addLockedLabelIfNeeded(R.string.create_shortcut)
|
findItem(R.id.cab_create_shortcut).title = activity.addLockedLabelIfNeeded(R.string.create_shortcut)
|
||||||
findItem(R.id.cab_create_shortcut).isVisible = isOneItemSelected && isOreoPlus()
|
findItem(R.id.cab_create_shortcut).isVisible = isOneItemSelected && isOreoPlus()
|
||||||
findItem(R.id.cab_view_details).isVisible = isOneItemSelected
|
findItem(R.id.cab_view_details).isVisible = isOneItemSelected
|
||||||
|
findItem(R.id.cab_block_unblock_contact).isVisible = isOneItemSelected && isNougatPlus()
|
||||||
|
getCabBlockContactTitle { title ->
|
||||||
|
findItem(R.id.cab_block_unblock_contact).title = title
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -103,6 +107,7 @@ class ContactsAdapter(
|
|||||||
}
|
}
|
||||||
|
|
||||||
when (id) {
|
when (id) {
|
||||||
|
R.id.cab_block_unblock_contact -> tryBlockingUnblocking()
|
||||||
R.id.cab_call_sim_1 -> callContact(true)
|
R.id.cab_call_sim_1 -> callContact(true)
|
||||||
R.id.cab_call_sim_2 -> callContact(false)
|
R.id.cab_call_sim_2 -> callContact(false)
|
||||||
R.id.cab_remove_default_sim -> removeDefaultSIM()
|
R.id.cab_remove_default_sim -> removeDefaultSIM()
|
||||||
@ -150,6 +155,71 @@ class ContactsAdapter(
|
|||||||
|
|
||||||
override fun getItemCount() = contacts.size
|
override fun getItemCount() = contacts.size
|
||||||
|
|
||||||
|
private fun getCabBlockContactTitle(callback: (String) -> Unit) {
|
||||||
|
val contact = getSelectedItems().firstOrNull() ?: return callback("")
|
||||||
|
|
||||||
|
activity.isContactBlocked(contact) { blocked ->
|
||||||
|
val cabItemTitleRes = if (blocked) {
|
||||||
|
R.string.unblock_contact
|
||||||
|
} else {
|
||||||
|
R.string.block_contact
|
||||||
|
}
|
||||||
|
|
||||||
|
callback(activity.addLockedLabelIfNeeded(cabItemTitleRes))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun tryBlockingUnblocking() {
|
||||||
|
val contact = getSelectedItems().firstOrNull() ?: return
|
||||||
|
|
||||||
|
if (activity.isOrWasThankYouInstalled()) {
|
||||||
|
activity.isContactBlocked(contact) { blocked ->
|
||||||
|
if (blocked) {
|
||||||
|
tryUnblocking(contact)
|
||||||
|
} else {
|
||||||
|
tryBlocking(contact)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
FeatureLockedDialog(activity) { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun tryBlocking(contact: Contact) {
|
||||||
|
askConfirmBlock(contact) { contactBlocked ->
|
||||||
|
val resultMsg = if (contactBlocked) {
|
||||||
|
R.string.block_contact_success
|
||||||
|
} else {
|
||||||
|
R.string.block_contact_fail
|
||||||
|
}
|
||||||
|
|
||||||
|
activity.toast(resultMsg)
|
||||||
|
finishActMode()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun tryUnblocking(contact: Contact) {
|
||||||
|
val contactUnblocked = activity.unblockContact(contact)
|
||||||
|
val resultMsg = if (contactUnblocked) {
|
||||||
|
R.string.unblock_contact_success
|
||||||
|
} else {
|
||||||
|
R.string.unblock_contact_fail
|
||||||
|
}
|
||||||
|
|
||||||
|
activity.toast(resultMsg)
|
||||||
|
finishActMode()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun askConfirmBlock(contact: Contact, callback: (Boolean) -> Unit) {
|
||||||
|
val baseString = R.string.block_confirmation
|
||||||
|
val question = String.format(resources.getString(baseString), contact.name)
|
||||||
|
|
||||||
|
ConfirmationDialog(activity, question) {
|
||||||
|
val contactBlocked = activity.blockContact(contact)
|
||||||
|
callback(contactBlocked)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun updateItems(newItems: List<Contact>, highlightText: String = "") {
|
fun updateItems(newItems: List<Contact>, highlightText: String = "") {
|
||||||
if (newItems.hashCode() != contacts.hashCode()) {
|
if (newItems.hashCode() != contacts.hashCode()) {
|
||||||
contacts = ArrayList(newItems)
|
contacts = ArrayList(newItems)
|
||||||
|
@ -31,6 +31,11 @@
|
|||||||
android:showAsAction="always"
|
android:showAsAction="always"
|
||||||
android:title="@string/send_sms"
|
android:title="@string/send_sms"
|
||||||
app:showAsAction="always" />
|
app:showAsAction="always" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/cab_block_unblock_contact"
|
||||||
|
android:icon="@drawable/ic_minus_circle_vector"
|
||||||
|
android:title="@string/block_contact"
|
||||||
|
app:showAsAction="ifRoom" />
|
||||||
<item
|
<item
|
||||||
android:id="@+id/cab_create_shortcut"
|
android:id="@+id/cab_create_shortcut"
|
||||||
android:showAsAction="never"
|
android:showAsAction="never"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user