diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/DialerActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/DialerActivity.kt
index 918d60c0..3f13d618 100644
--- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/DialerActivity.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/DialerActivity.kt
@@ -12,10 +12,7 @@ import android.net.Uri
import android.os.Bundle
import android.os.PowerManager
import androidx.localbroadcastmanager.content.LocalBroadcastManager
-import com.simplemobiletools.commons.extensions.beGone
-import com.simplemobiletools.commons.extensions.beVisibleIf
-import com.simplemobiletools.commons.extensions.toast
-import com.simplemobiletools.commons.extensions.updateTextColors
+import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.contacts.pro.R
import com.simplemobiletools.contacts.pro.helpers.*
import com.simplemobiletools.contacts.pro.models.Contact
@@ -26,6 +23,8 @@ import kotlinx.android.synthetic.main.activity_dialer.*
// incoming call handling inspired by https://github.com/mbarrben/android_dialer_replacement
class DialerActivity : SimpleActivity(), SensorEventListener {
private val SENSOR_SENSITIVITY = 4
+ private val DISCONNECT_DELAY = 3000L
+
private var number = ""
private var isIncomingCall = false
private var sensorManager: SensorManager? = null
@@ -41,16 +40,13 @@ class DialerActivity : SimpleActivity(), SensorEventListener {
if (intent.action == Intent.ACTION_CALL && intent.data != null && intent.dataString?.contains("tel:") == true) {
number = Uri.decode(intent.dataString).substringAfter("tel:")
initViews()
- ContactsHelper(this).getContactWithNumber(number) {
- runOnUiThread {
- updateCallee(it)
- }
- }
+ tryFillingOtherEndsName()
} else if (intent.action == INCOMING_CALL && intent.extras?.containsKey(CALLER_NUMBER) == true && intent.extras?.containsKey(CALL_STATUS) == true) {
isIncomingCall = true
number = intent.getStringExtra(CALLER_NUMBER)
initViews()
updateUI(intent.getSerializableExtra(CALL_STATUS) as GsmCall.Status)
+ tryFillingOtherEndsName()
} else {
toast(R.string.unknown_error_occurred)
finish()
@@ -88,28 +84,63 @@ class DialerActivity : SimpleActivity(), SensorEventListener {
}
private fun initViews() {
- dialer_hangup_button.setOnClickListener { CallManager.declineCall() }
- dialer_incoming_accept.setOnClickListener { CallManager.acceptCall() }
- dialer_incoming_decline.setOnClickListener { CallManager.declineCall() }
+ dialer_hangup_button.setOnClickListener {
+ CallManager.declineCall()
+ finish()
+ }
+
+ dialer_incoming_accept.setOnClickListener {
+ CallManager.acceptCall()
+ }
+
+ dialer_incoming_decline.setOnClickListener {
+ CallManager.declineCall()
+ finish()
+ }
dialer_hangup_button.beVisibleIf(!isIncomingCall)
dialer_incoming_decline.beVisibleIf(isIncomingCall)
dialer_incoming_accept.beVisibleIf(isIncomingCall)
- calling_label.setText(if (isIncomingCall) R.string.incoming_call else R.string.calling)
+ dialer_label.setText(if (isIncomingCall) R.string.incoming_call else R.string.calling)
+ }
+
+ private fun tryFillingOtherEndsName() {
+ ContactsHelper(this).getContactWithNumber(number) {
+ runOnUiThread {
+ updateOtherParticipant(it)
+ }
+ }
}
private fun updateUI(status: GsmCall.Status) {
-
+ when (status) {
+ GsmCall.Status.ACTIVE -> statusActive()
+ GsmCall.Status.DISCONNECTED -> statusDisconnected()
+ }
}
- private fun updateCallee(contact: Contact?) {
+ private fun statusActive() {
+ dialer_label.text = ""
+ dialer_hangup_button.beVisible()
+ dialer_incoming_accept.beGone()
+ dialer_incoming_decline.beGone()
+ }
+
+ private fun statusDisconnected() {
+ dialer_hangup_button.beGone()
+ dialer_hangup_button.postDelayed({
+ finish()
+ }, DISCONNECT_DELAY)
+ }
+
+ private fun updateOtherParticipant(contact: Contact?) {
if (contact != null) {
- callee_big_name_number.text = contact.getNameToDisplay()
- callee_number.text = number
+ dialer_big_name_number.text = contact.getNameToDisplay()
+ dialer_number.text = number
} else {
- callee_big_name_number.text = number
- callee_number.beGone()
+ dialer_big_name_number.text = number
+ dialer_number.beGone()
}
}
diff --git a/app/src/main/res/layout/activity_dialer.xml b/app/src/main/res/layout/activity_dialer.xml
index 1d17779a..f4d4c3e3 100644
--- a/app/src/main/res/layout/activity_dialer.xml
+++ b/app/src/main/res/layout/activity_dialer.xml
@@ -8,7 +8,7 @@
android:layout_height="match_parent">