fix #174, add a quick SIM picker at the dialpad

This commit is contained in:
tibbi 2022-02-06 17:12:39 +01:00
parent 1d1307839c
commit fc2bfa9714
4 changed files with 43 additions and 11 deletions

View File

@ -20,10 +20,7 @@ import com.simplemobiletools.commons.helpers.*
import com.simplemobiletools.commons.models.SimpleContact
import com.simplemobiletools.dialer.R
import com.simplemobiletools.dialer.adapters.ContactsAdapter
import com.simplemobiletools.dialer.extensions.addCharacter
import com.simplemobiletools.dialer.extensions.config
import com.simplemobiletools.dialer.extensions.getKeyEvent
import com.simplemobiletools.dialer.extensions.startCallIntent
import com.simplemobiletools.dialer.extensions.*
import com.simplemobiletools.dialer.models.SpeedDial
import kotlinx.android.synthetic.main.activity_dialpad.*
import kotlinx.android.synthetic.main.activity_dialpad.dialpad_holder
@ -96,13 +93,27 @@ class DialpadActivity : SimpleActivity() {
dialpad_hashtag_holder.setOnClickListener { dialpadPressed('#', it) }
dialpad_clear_char.setOnClickListener { clearChar(it) }
dialpad_clear_char.setOnLongClickListener { clearInput(); true }
dialpad_call_button.setOnClickListener { initCall() }
dialpad_call_button.setOnClickListener { initCall(dialpad_input.value, 0) }
dialpad_input.onTextChangeListener { dialpadValueChanged(it) }
SimpleContactsHelper(this).getAvailableContacts(false) { gotContacts(it) }
disableKeyboardPopping()
val adjustedPrimaryColor = getAdjustedPrimaryColor()
val callIcon = resources.getColoredDrawableWithColor(R.drawable.ic_phone_vector, adjustedPrimaryColor.getContrastColor())
val callIconId = if (areMultipleSIMsAvailable()) {
val callIcon = resources.getColoredDrawableWithColor(R.drawable.ic_phone_two_vector, adjustedPrimaryColor.getContrastColor())
dialpad_call_two_button.setImageDrawable(callIcon)
dialpad_call_two_button.background.applyColorFilter(adjustedPrimaryColor)
dialpad_call_two_button.beVisible()
dialpad_call_two_button.setOnClickListener {
initCall(dialpad_input.value, 1)
}
R.drawable.ic_phone_one_vector
} else {
R.drawable.ic_phone_vector
}
val callIcon = resources.getColoredDrawableWithColor(callIconId, adjustedPrimaryColor.getContrastColor())
dialpad_call_button.setImageDrawable(callIcon)
dialpad_call_button.background.applyColorFilter(adjustedPrimaryColor)
@ -251,9 +262,13 @@ class DialpadActivity : SimpleActivity() {
}
}
private fun initCall(number: String = dialpad_input.value) {
private fun initCall(number: String = dialpad_input.value, handleIndex: Int) {
if (number.isNotEmpty()) {
startCallIntent(number)
if (handleIndex != -1 && areMultipleSIMsAvailable()) {
callContactWithSim(number, handleIndex == 0)
} else {
startCallIntent(number)
}
}
}
@ -261,7 +276,7 @@ class DialpadActivity : SimpleActivity() {
if (dialpad_input.value.isEmpty()) {
val speedDial = speedDialValues.firstOrNull { it.id == id }
if (speedDial?.isValid() == true) {
initCall(speedDial.number)
initCall(speedDial.number, -1)
}
}
}

View File

@ -25,9 +25,9 @@ fun SimpleActivity.startCallIntent(recipient: String) {
}
}
fun BaseSimpleActivity.callContactWithSim(recipient: String, useSimOne: Boolean) {
fun BaseSimpleActivity.callContactWithSim(recipient: String, useMainSIM: Boolean) {
handlePermission(PERMISSION_READ_PHONE_STATE) {
val wantedSimIndex = if (useSimOne) 0 else 1
val wantedSimIndex = if (useMainSIM) 0 else 1
val handle = getAvailableSIMCardLabels().sortedBy { it.id }[wantedSimIndex].handle
launchCallIntent(recipient, handle)
}

View File

@ -107,4 +107,20 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<ImageView
android:id="@+id/dialpad_call_two_button"
android:layout_width="@dimen/dialpad_button_size_small"
android:layout_height="@dimen/dialpad_button_size_small"
android:layout_marginBottom="@dimen/activity_margin"
android:background="@drawable/circle_background"
android:contentDescription="@string/call_number"
android:elevation="@dimen/medium_margin"
android:padding="@dimen/normal_margin"
android:src="@drawable/ic_phone_two_vector"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/dialpad_call_button"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/dialpad_call_button" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="dialpad_button_size">60dp</dimen>
<dimen name="dialpad_button_size_small">50dp</dimen>
<dimen name="incoming_call_arrow_size">50dp</dimen>
<dimen name="incoming_call_button_size">72dp</dimen>
<dimen name="call_notification_button_size">30dp</dimen>