Simplified call hold and call transfer icon management

This commit is contained in:
Juha Heinanen
2025-11-02 20:23:27 +02:00
parent 776860a07a
commit e583f68c11
5 changed files with 19 additions and 32 deletions
@@ -815,9 +815,9 @@ private val showCancelButton = mutableStateOf(false)
private val showAnswerRejectButtons = mutableStateOf(false) private val showAnswerRejectButtons = mutableStateOf(false)
private val showHangupButton = mutableStateOf(false) private val showHangupButton = mutableStateOf(false)
private val showOnHoldNotice = mutableStateOf(false) private val showOnHoldNotice = mutableStateOf(false)
private var holdIcon = mutableIntStateOf(R.drawable.call_hold) private var callOnHold = mutableStateOf(false)
private val transferButtonEnabled = mutableStateOf(false) private val transferButtonEnabled = mutableStateOf(false)
private val transferIcon = mutableIntStateOf(R.drawable.call_transfer) private val callTransfer = mutableStateOf(false)
private var dtmfText = mutableStateOf("") private var dtmfText = mutableStateOf("")
private val dtmfEnabled = mutableStateOf(false) private val dtmfEnabled = mutableStateOf(false)
private val focusDtmf = mutableStateOf(false) private val focusDtmf = mutableStateOf(false)
@@ -1414,7 +1414,7 @@ private fun CallRow(ctx: Context, viewModel: ViewModel) {
) )
call.resume() call.resume()
call.onhold = false call.onhold = false
holdIcon.intValue = R.drawable.call_hold callOnHold.value = false
} else { } else {
Log.d( Log.d(
TAG, TAG,
@@ -1422,15 +1422,18 @@ private fun CallRow(ctx: Context, viewModel: ViewModel) {
) )
call.hold() call.hold()
call.onhold = true call.onhold = true
holdIcon.intValue = R.drawable.resume callOnHold.value = true
} }
} }
}, },
) { ) {
Icon( Icon(
imageVector = ImageVector.vectorResource(id = holdIcon.intValue), imageVector = ImageVector.vectorResource(R.drawable.call_hold),
modifier = Modifier.size(48.dp), modifier = Modifier.size(48.dp),
tint = Color.Unspecified, tint = if (callOnHold.value)
MaterialTheme.colorScheme.error
else
MaterialTheme.colorScheme.secondary,
contentDescription = null, contentDescription = null,
) )
} }
@@ -1455,9 +1458,12 @@ private fun CallRow(ctx: Context, viewModel: ViewModel) {
}, },
) { ) {
Icon( Icon(
imageVector = ImageVector.vectorResource(transferIcon.intValue), imageVector = ImageVector.vectorResource(R.drawable.call_transfer),
modifier = Modifier.size(48.dp), modifier = Modifier.size(48.dp),
tint = Color.Unspecified, tint = if (callTransfer.value)
MaterialTheme.colorScheme.error
else
MaterialTheme.colorScheme.secondary,
contentDescription = null, contentDescription = null,
) )
} }
@@ -2037,7 +2043,7 @@ private fun showCall(ctx: Context, viewModel: ViewModel, ua: UserAgent?, showCal
showCallTimer.value = false showCallTimer.value = false
securityIcon.intValue = -1 securityIcon.intValue = -1
showHangupButton.value = false showHangupButton.value = false
transferIcon.intValue = R.drawable.call_transfer callTransfer.value = false
dtmfText.value = "" dtmfText.value = ""
dtmfEnabled.value = false dtmfEnabled.value = false
focusDtmf.value = false focusDtmf.value = false
@@ -2117,10 +2123,7 @@ private fun showCall(ctx: Context, viewModel: ViewModel, ua: UserAgent?, showCal
} }
transferButtonEnabled.value = true transferButtonEnabled.value = true
} }
transferIcon.intValue = if (call.onHoldCall == null) callTransfer.value = call.onHoldCall != null
R.drawable.call_transfer
else
R.drawable.call_transfer_execute
callDuration = call.duration() callDuration = call.duration()
showCallTimer.value = true showCallTimer.value = true
if (ua.account.mediaEnc == "") if (ua.account.mediaEnc == "")
@@ -2131,10 +2134,7 @@ private fun showCall(ctx: Context, viewModel: ViewModel, ua: UserAgent?, showCal
showCancelButton.value = false showCancelButton.value = false
showHangupButton.value = true showHangupButton.value = true
showAnswerRejectButtons.value = false showAnswerRejectButtons.value = false
if (call.onhold) callOnHold.value = call.onhold
holdIcon.intValue = R.drawable.resume
else
holdIcon.intValue = R.drawable.call_hold
Handler(Looper.getMainLooper()).postDelayed({ Handler(Looper.getMainLooper()).postDelayed({
showOnHoldNotice.value = call.held showOnHoldNotice.value = call.held
}, 100) }, 100)
+1 -1
View File
@@ -4,6 +4,6 @@
android:viewportWidth="960" android:viewportWidth="960"
android:viewportHeight="960" > android:viewportHeight="960" >
<path <path
android:fillColor="@color/colorSecondary" android:fillColor="#FF000000"
android:pathData="M370,640L430,640L430,320L370,320L370,640ZM530,640L590,640L590,320L530,320L530,640ZM480,880Q398,880 325,848.5Q252,817 197.5,762.5Q143,708 111.5,635Q80,562 80,480Q80,397 111.5,324Q143,251 197.5,197Q252,143 325,111.5Q398,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,562 848.5,635Q817,708 763,762.5Q709,817 636,848.5Q563,880 480,880ZM480,820Q622,820 721,720.5Q820,621 820,480Q820,338 721,239Q622,140 480,140Q339,140 239.5,239Q140,338 140,480Q140,621 239.5,720.5Q339,820 480,820ZM480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Z"/> android:pathData="M370,640L430,640L430,320L370,320L370,640ZM530,640L590,640L590,320L530,320L530,640ZM480,880Q398,880 325,848.5Q252,817 197.5,762.5Q143,708 111.5,635Q80,562 80,480Q80,397 111.5,324Q143,251 197.5,197Q252,143 325,111.5Q398,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,562 848.5,635Q817,708 763,762.5Q709,817 636,848.5Q563,880 480,880ZM480,820Q622,820 721,720.5Q820,621 820,480Q820,338 721,239Q622,140 480,140Q339,140 239.5,239Q140,338 140,480Q140,621 239.5,720.5Q339,820 480,820ZM480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Z"/>
</vector> </vector>
+1 -1
View File
@@ -4,6 +4,6 @@
android:viewportWidth="960" android:viewportWidth="960"
android:viewportHeight="960" > android:viewportHeight="960" >
<path <path
android:fillColor="@color/colorSecondary" android:fillColor="#FF000000"
android:pathData="M480,626L626,480L480,334L438,376L512,450L330,450L330,510L512,510L438,584L480,626ZM480,880Q398,880 325,848.5Q252,817 197.5,762.5Q143,708 111.5,635Q80,562 80,480Q80,397 111.5,324Q143,251 197.5,197Q252,143 325,111.5Q398,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,562 848.5,635Q817,708 763,762.5Q709,817 636,848.5Q563,880 480,880ZM480,820Q622,820 721,720.5Q820,621 820,480Q820,338 721,239Q622,140 480,140Q339,140 239.5,239Q140,338 140,480Q140,621 239.5,720.5Q339,820 480,820ZM480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Z"/> android:pathData="M480,626L626,480L480,334L438,376L512,450L330,450L330,510L512,510L438,584L480,626ZM480,880Q398,880 325,848.5Q252,817 197.5,762.5Q143,708 111.5,635Q80,562 80,480Q80,397 111.5,324Q143,251 197.5,197Q252,143 325,111.5Q398,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,562 848.5,635Q817,708 763,762.5Q709,817 636,848.5Q563,880 480,880ZM480,820Q622,820 721,720.5Q820,621 820,480Q820,338 721,239Q622,140 480,140Q339,140 239.5,239Q140,338 140,480Q140,621 239.5,720.5Q339,820 480,820ZM480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Z"/>
</vector> </vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportWidth="960"
android:viewportHeight="960" >
<path
android:fillColor="@color/colorAccent"
android:pathData="M480,626L626,480L480,334L438,376L512,450L330,450L330,510L512,510L438,584L480,626ZM480,880Q398,880 325,848.5Q252,817 197.5,762.5Q143,708 111.5,635Q80,562 80,480Q80,397 111.5,324Q143,251 197.5,197Q252,143 325,111.5Q398,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,562 848.5,635Q817,708 763,762.5Q709,817 636,848.5Q563,880 480,880ZM480,820Q622,820 721,720.5Q820,621 820,480Q820,338 721,239Q622,140 480,140Q339,140 239.5,239Q140,338 140,480Q140,621 239.5,720.5Q339,820 480,820ZM480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Z"/>
</vector>
-4
View File
@@ -1,4 +0,0 @@
<vector android:height="48dp" android:viewportHeight="24.0"
android:viewportWidth="24.0" android:width="48dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@color/colorAccent" android:pathData="M9,16h2L11,8L9,8v8zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8zM13,16h2L15,8h-2v8z"/>
</vector>