Merge pull request #623 from Merkost/speed_dial_numbers_fix

Fixed speed dial when contact has multiple phone numbers
This commit is contained in:
Tibor Kaputa
2023-06-08 16:56:54 +02:00
committed by GitHub
2 changed files with 24 additions and 5 deletions

View File

@ -2,9 +2,12 @@ package com.simplemobiletools.dialer.activities
import android.os.Bundle import android.os.Bundle
import com.google.gson.Gson import com.google.gson.Gson
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
import com.simplemobiletools.commons.extensions.updateTextColors import com.simplemobiletools.commons.extensions.updateTextColors
import com.simplemobiletools.commons.helpers.ContactsHelper import com.simplemobiletools.commons.helpers.ContactsHelper
import com.simplemobiletools.commons.helpers.NavigationIcon import com.simplemobiletools.commons.helpers.NavigationIcon
import com.simplemobiletools.commons.models.PhoneNumber
import com.simplemobiletools.commons.models.RadioItem
import com.simplemobiletools.commons.models.contacts.Contact import com.simplemobiletools.commons.models.contacts.Contact
import com.simplemobiletools.dialer.R import com.simplemobiletools.dialer.R
import com.simplemobiletools.dialer.adapters.SpeedDialAdapter import com.simplemobiletools.dialer.adapters.SpeedDialAdapter
@ -53,11 +56,28 @@ class ManageSpeedDialActivity : SimpleActivity(), RemoveSpeedDialListener {
} }
SelectContactDialog(this, allContacts) { selectedContact -> SelectContactDialog(this, allContacts) { selectedContact ->
speedDialValues.first { it.id == clickedContact.id }.apply { if (selectedContact.phoneNumbers.size > 1) {
displayName = selectedContact.getNameToDisplay() val radioItems = selectedContact.phoneNumbers.mapIndexed { index, item ->
number = selectedContact.phoneNumbers.first().normalizedNumber RadioItem(index, item.normalizedNumber, item)
}
val userPhoneNumbersList = selectedContact.phoneNumbers.map { it.value }
val checkedItemId = userPhoneNumbersList.indexOf(clickedContact.number)
RadioGroupDialog(this, ArrayList(radioItems), checkedItemId = checkedItemId) { selectedValue ->
val selectedNumber = selectedValue as PhoneNumber
speedDialValues.first { it.id == clickedContact.id }.apply {
displayName = selectedContact.getNameToDisplay()
number = selectedNumber.normalizedNumber
}
updateAdapter()
}
} else {
speedDialValues.first { it.id == clickedContact.id }.apply {
displayName = selectedContact.getNameToDisplay()
number = selectedContact.phoneNumbers.first().normalizedNumber
}
updateAdapter()
} }
updateAdapter()
} }
}.apply { }.apply {
speed_dial_list.adapter = this speed_dial_list.adapter = this

View File

@ -10,7 +10,6 @@ import com.simplemobiletools.dialer.activities.SimpleActivity
import com.simplemobiletools.dialer.interfaces.RemoveSpeedDialListener import com.simplemobiletools.dialer.interfaces.RemoveSpeedDialListener
import com.simplemobiletools.dialer.models.SpeedDial import com.simplemobiletools.dialer.models.SpeedDial
import kotlinx.android.synthetic.main.item_speed_dial.view.* import kotlinx.android.synthetic.main.item_speed_dial.view.*
import java.util.*
class SpeedDialAdapter( class SpeedDialAdapter(
activity: SimpleActivity, var speedDialValues: ArrayList<SpeedDial>, private val removeListener: RemoveSpeedDialListener, activity: SimpleActivity, var speedDialValues: ArrayList<SpeedDial>, private val removeListener: RemoveSpeedDialListener,