mirror of
https://github.com/SimpleMobileTools/Simple-Dialer.git
synced 2025-06-05 21:49:23 +02:00
fix #174, add a quick SIM picker at the dialpad
This commit is contained in:
@@ -20,10 +20,7 @@ import com.simplemobiletools.commons.helpers.*
|
|||||||
import com.simplemobiletools.commons.models.SimpleContact
|
import com.simplemobiletools.commons.models.SimpleContact
|
||||||
import com.simplemobiletools.dialer.R
|
import com.simplemobiletools.dialer.R
|
||||||
import com.simplemobiletools.dialer.adapters.ContactsAdapter
|
import com.simplemobiletools.dialer.adapters.ContactsAdapter
|
||||||
import com.simplemobiletools.dialer.extensions.addCharacter
|
import com.simplemobiletools.dialer.extensions.*
|
||||||
import com.simplemobiletools.dialer.extensions.config
|
|
||||||
import com.simplemobiletools.dialer.extensions.getKeyEvent
|
|
||||||
import com.simplemobiletools.dialer.extensions.startCallIntent
|
|
||||||
import com.simplemobiletools.dialer.models.SpeedDial
|
import com.simplemobiletools.dialer.models.SpeedDial
|
||||||
import kotlinx.android.synthetic.main.activity_dialpad.*
|
import kotlinx.android.synthetic.main.activity_dialpad.*
|
||||||
import kotlinx.android.synthetic.main.activity_dialpad.dialpad_holder
|
import kotlinx.android.synthetic.main.activity_dialpad.dialpad_holder
|
||||||
@@ -96,13 +93,27 @@ class DialpadActivity : SimpleActivity() {
|
|||||||
dialpad_hashtag_holder.setOnClickListener { dialpadPressed('#', it) }
|
dialpad_hashtag_holder.setOnClickListener { dialpadPressed('#', it) }
|
||||||
dialpad_clear_char.setOnClickListener { clearChar(it) }
|
dialpad_clear_char.setOnClickListener { clearChar(it) }
|
||||||
dialpad_clear_char.setOnLongClickListener { clearInput(); true }
|
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) }
|
dialpad_input.onTextChangeListener { dialpadValueChanged(it) }
|
||||||
SimpleContactsHelper(this).getAvailableContacts(false) { gotContacts(it) }
|
SimpleContactsHelper(this).getAvailableContacts(false) { gotContacts(it) }
|
||||||
disableKeyboardPopping()
|
disableKeyboardPopping()
|
||||||
|
|
||||||
val adjustedPrimaryColor = getAdjustedPrimaryColor()
|
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.setImageDrawable(callIcon)
|
||||||
dialpad_call_button.background.applyColorFilter(adjustedPrimaryColor)
|
dialpad_call_button.background.applyColorFilter(adjustedPrimaryColor)
|
||||||
|
|
||||||
@@ -251,17 +262,21 @@ class DialpadActivity : SimpleActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun initCall(number: String = dialpad_input.value) {
|
private fun initCall(number: String = dialpad_input.value, handleIndex: Int) {
|
||||||
if (number.isNotEmpty()) {
|
if (number.isNotEmpty()) {
|
||||||
|
if (handleIndex != -1 && areMultipleSIMsAvailable()) {
|
||||||
|
callContactWithSim(number, handleIndex == 0)
|
||||||
|
} else {
|
||||||
startCallIntent(number)
|
startCallIntent(number)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun speedDial(id: Int) {
|
private fun speedDial(id: Int) {
|
||||||
if (dialpad_input.value.isEmpty()) {
|
if (dialpad_input.value.isEmpty()) {
|
||||||
val speedDial = speedDialValues.firstOrNull { it.id == id }
|
val speedDial = speedDialValues.firstOrNull { it.id == id }
|
||||||
if (speedDial?.isValid() == true) {
|
if (speedDial?.isValid() == true) {
|
||||||
initCall(speedDial.number)
|
initCall(speedDial.number, -1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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) {
|
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
|
val handle = getAvailableSIMCardLabels().sortedBy { it.id }[wantedSimIndex].handle
|
||||||
launchCallIntent(recipient, handle)
|
launchCallIntent(recipient, handle)
|
||||||
}
|
}
|
||||||
|
@@ -107,4 +107,20 @@
|
|||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="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>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<dimen name="dialpad_button_size">60dp</dimen>
|
<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_arrow_size">50dp</dimen>
|
||||||
<dimen name="incoming_call_button_size">72dp</dimen>
|
<dimen name="incoming_call_button_size">72dp</dimen>
|
||||||
<dimen name="call_notification_button_size">30dp</dimen>
|
<dimen name="call_notification_button_size">30dp</dimen>
|
||||||
|
Reference in New Issue
Block a user