mirror of
https://github.com/SimpleMobileTools/Simple-Dialer.git
synced 2025-06-05 21:49:23 +02:00
fix #66, allow undoing the "Always use this SIM" option
This commit is contained in:
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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()
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
Reference in New Issue
Block a user