fix #66, allow undoing the "Always use this SIM" option

This commit is contained in:
tibbi
2020-12-31 19:43:48 +01:00
parent cf8a8e9e61
commit a721ba7261
5 changed files with 42 additions and 6 deletions

View File

@ -27,6 +27,7 @@ import com.simplemobiletools.dialer.R
import com.simplemobiletools.dialer.activities.SimpleActivity
import com.simplemobiletools.dialer.extensions.areMultipleSIMsAvailable
import com.simplemobiletools.dialer.extensions.callContactWithSim
import com.simplemobiletools.dialer.extensions.config
import com.simplemobiletools.dialer.extensions.startContactDetailsIntent
import com.simplemobiletools.dialer.interfaces.RefreshItemsListener
@ -45,10 +46,12 @@ class ContactsAdapter(activity: SimpleActivity, var contacts: ArrayList<SimpleCo
override fun prepareActionMode(menu: Menu) {
val hasMultipleSIMs = activity.areMultipleSIMsAvailable()
val selectedNumber = "tel:${getSelectedPhoneNumber()}"
menu.apply {
findItem(R.id.cab_call_sim_1).isVisible = hasMultipleSIMs && isOneItemSelected()
findItem(R.id.cab_call_sim_2).isVisible = hasMultipleSIMs && isOneItemSelected()
findItem(R.id.cab_remove_default_sim).isVisible = isOneItemSelected() && activity.config.getCustomSIM(selectedNumber) != ""
findItem(R.id.cab_delete).isVisible = showDeleteButton
findItem(R.id.cab_create_shortcut).isVisible = isOneItemSelected() && isOreoPlus()
@ -64,6 +67,7 @@ class ContactsAdapter(activity: SimpleActivity, var contacts: ArrayList<SimpleCo
when (id) {
R.id.cab_call_sim_1 -> callContact(true)
R.id.cab_call_sim_2 -> callContact(false)
R.id.cab_remove_default_sim -> removeDefaultSIM()
R.id.cab_delete -> askConfirmDelete()
R.id.cab_send_sms -> sendSMS()
R.id.cab_view_details -> viewContactDetails()
@ -109,8 +113,14 @@ class ContactsAdapter(activity: SimpleActivity, var contacts: ArrayList<SimpleCo
@SuppressLint("MissingPermission")
private fun callContact(useSimOne: Boolean) {
val contact = getSelectedItems().firstOrNull() ?: return
activity.callContactWithSim(contact.phoneNumbers.first(), useSimOne)
val number = getSelectedPhoneNumber() ?: return
activity.callContactWithSim(number, useSimOne)
}
private fun removeDefaultSIM() {
val phoneNumber = getSelectedPhoneNumber() ?: return
activity.config.removeCustomSIM("tel:$phoneNumber")
finishActMode()
}
private fun sendSMS() {
@ -167,6 +177,8 @@ class ContactsAdapter(activity: SimpleActivity, var contacts: ArrayList<SimpleCo
private fun getSelectedItems() = contacts.filter { selectedKeys.contains(it.rawId) } as ArrayList<SimpleContact>
private fun getSelectedPhoneNumber() = getSelectedItems().firstOrNull()?.phoneNumbers?.firstOrNull()
@SuppressLint("NewApi")
private fun createShortcut() {
val contact = contacts.firstOrNull { selectedKeys.contains(it.rawId) } ?: return

View File

@ -19,6 +19,7 @@ import com.simplemobiletools.dialer.R
import com.simplemobiletools.dialer.activities.SimpleActivity
import com.simplemobiletools.dialer.extensions.areMultipleSIMsAvailable
import com.simplemobiletools.dialer.extensions.callContactWithSim
import com.simplemobiletools.dialer.extensions.config
import com.simplemobiletools.dialer.helpers.RecentsHelper
import com.simplemobiletools.dialer.interfaces.RefreshItemsListener
import com.simplemobiletools.dialer.models.RecentCall
@ -45,10 +46,12 @@ class RecentCallsAdapter(activity: SimpleActivity, var recentCalls: ArrayList<Re
override fun prepareActionMode(menu: Menu) {
val hasMultipleSIMs = activity.areMultipleSIMsAvailable()
val selectedNumber = "tel:${getSelectedPhoneNumber()}"
menu.apply {
findItem(R.id.cab_call_sim_1).isVisible = hasMultipleSIMs && isOneItemSelected()
findItem(R.id.cab_call_sim_2).isVisible = hasMultipleSIMs && isOneItemSelected()
findItem(R.id.cab_remove_default_sim).isVisible = isOneItemSelected() && activity.config.getCustomSIM(selectedNumber) != ""
findItem(R.id.cab_block_number).isVisible = isNougatPlus()
findItem(R.id.cab_add_number).isVisible = isOneItemSelected()
@ -64,6 +67,7 @@ class RecentCallsAdapter(activity: SimpleActivity, var recentCalls: ArrayList<Re
when (id) {
R.id.cab_call_sim_1 -> callContact(true)
R.id.cab_call_sim_2 -> callContact(false)
R.id.cab_remove_default_sim -> removeDefaultSIM()
R.id.cab_block_number -> askConfirmBlock()
R.id.cab_add_number -> addNumberToContact()
R.id.cab_send_sms -> sendSMS()
@ -110,8 +114,14 @@ class RecentCallsAdapter(activity: SimpleActivity, var recentCalls: ArrayList<Re
}
private fun callContact(useSimOne: Boolean) {
val recentCall = getSelectedItems().firstOrNull() ?: return
activity.callContactWithSim(recentCall.phoneNumber, useSimOne)
val phoneNumber = getSelectedPhoneNumber() ?: return
activity.callContactWithSim(phoneNumber, useSimOne)
}
private fun removeDefaultSIM() {
val phoneNumber = getSelectedPhoneNumber() ?: return
activity.config.removeCustomSIM("tel:$phoneNumber")
finishActMode()
}
private fun askConfirmBlock() {
@ -146,11 +156,11 @@ class RecentCallsAdapter(activity: SimpleActivity, var recentCalls: ArrayList<Re
}
private fun addNumberToContact() {
val recentCall = getSelectedItems().firstOrNull() ?: return
val phoneNumber = getSelectedPhoneNumber() ?: return
Intent().apply {
action = Intent.ACTION_INSERT_OR_EDIT
type = "vnd.android.cursor.item/contact"
putExtra(KEY_PHONE, recentCall.phoneNumber)
putExtra(KEY_PHONE, phoneNumber)
if (resolveActivity(activity.packageManager) != null) {
activity.startActivity(this)
@ -220,6 +230,8 @@ class RecentCallsAdapter(activity: SimpleActivity, var recentCalls: ArrayList<Re
private fun getSelectedItems() = recentCalls.filter { selectedKeys.contains(it.id) } as ArrayList<RecentCall>
private fun getSelectedPhoneNumber() = getSelectedItems().firstOrNull()?.phoneNumber ?: null
private fun setupView(view: View, call: RecentCall) {
view.apply {
item_recents_frame.isSelected = selectedKeys.contains(call.id)

View File

@ -36,6 +36,10 @@ class Config(context: Context) : BaseConfig(context) {
fun getCustomSIM(number: String) = prefs.getString(REMEMBER_SIM_PREFIX + number, "")
fun removeCustomSIM(number: String) {
prefs.edit().remove(REMEMBER_SIM_PREFIX + number).apply()
}
var groupSubsequentCalls: Boolean
get() = prefs.getBoolean(GROUP_SUBSEQUENT_CALLS, true)
set(groupSubsequentCalls) = prefs.edit().putBoolean(GROUP_SUBSEQUENT_CALLS, groupSubsequentCalls).apply()

View File

@ -11,6 +11,10 @@
android:icon="@drawable/ic_phone_two_vector"
android:title="@string/call_from_sim_2"
app:showAsAction="ifRoom" />
<item
android:id="@+id/cab_remove_default_sim"
android:title="@string/unset_default_sim"
app:showAsAction="never" />
<item
android:id="@+id/cab_delete"
android:icon="@drawable/ic_delete_vector"

View File

@ -11,6 +11,10 @@
android:icon="@drawable/ic_phone_two_vector"
android:title="@string/call_from_sim_2"
app:showAsAction="ifRoom" />
<item
android:id="@+id/cab_remove_default_sim"
android:title="@string/unset_default_sim"
app:showAsAction="never" />
<item
android:id="@+id/cab_add_number"
android:icon="@drawable/ic_add_person_vector"