Use call_up and call_down drawables

This commit is contained in:
Juha Heinanen
2025-11-14 12:46:43 +02:00
parent 50a74391e5
commit 10f4fedc60
11 changed files with 70 additions and 94 deletions

View File

@ -39,7 +39,9 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.ColorFilter
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.colorResource
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
@ -170,19 +172,19 @@ private fun Details(ctx: Context, details: ArrayList<Details>) {
items(details) { detail ->
Row(verticalAlignment = Alignment.CenterVertically) {
Image(
painter = painterResource(detail.direction),
painter = painterResource(
if (callUp(detail.direction)) R.drawable.call_up else R.drawable.call_down
),
colorFilter = ColorFilter.tint(colorResource(id = callTint(detail.direction))),
contentDescription = "Direction",
modifier = Modifier.width(64.dp)
.clickable {
Toast.makeText(ctx,
when (detail.direction) {
R.drawable.call_down_green,
R.drawable.call_up_green-> ctx.getString(R.string.call_answered)
R.drawable.call_down_blue -> ctx.getString(R.string.call_answered_elsewhere)
R.drawable.call_missed_in,
R.drawable.call_missed_out -> ctx.getString(R.string.call_missed)
R.drawable.call_down_red,
R.drawable.call_up_red-> ctx.getString(R.string.call_rejected)
CALL_DOWN_GREEN, CALL_UP_GREEN -> ctx.getString(R.string.call_answered)
CALL_DOWN_BLUE -> ctx.getString(R.string.call_answered_elsewhere)
CALL_MISSED_IN, CALL_MISSED_OUT -> ctx.getString(R.string.call_missed)
CALL_DOWN_RED, CALL_UP_RED -> ctx.getString(R.string.call_rejected)
else -> ""
},
Toast.LENGTH_SHORT
@ -215,7 +217,7 @@ private fun startTime(detail: Details): String {
startTimeText = stopText
durationText = "?"
} else {
if (startTime == null || detail.direction == R.drawable.call_down_blue) {
if (startTime == null || detail.direction == CALL_DOWN_BLUE) {
startTimeText = stopText
durationText = ""
} else {

View File

@ -49,8 +49,10 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.ColorFilter
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.colorResource
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
@ -97,7 +99,9 @@ private fun CallsScreen(navController: NavController, viewModel: ViewModel, aor:
}
Scaffold(
modifier = Modifier.fillMaxSize().imePadding(),
modifier = Modifier
.fillMaxSize()
.imePadding(),
containerColor = MaterialTheme.colorScheme.background,
topBar = {
Column(
@ -271,7 +275,9 @@ private fun Calls(
val lazyListState = rememberLazyListState()
LazyColumn(
modifier = Modifier.fillMaxWidth().padding(start = 16.dp, end = 4.dp)
modifier = Modifier
.fillMaxWidth()
.padding(start = 16.dp, end = 4.dp)
.verticalScrollbar(
state = lazyListState,
width = 4.dp,
@ -382,8 +388,8 @@ private fun Calls(
CustomElements.TextAvatar(contact.name, contact.color)
}
null -> {
val avatarImage = BitmapFactory
.decodeResource(ctx.resources, R.drawable.person_image)
val avatarImage =
BitmapFactory.decodeResource(ctx.resources, R.drawable.person_image)
CustomElements.ImageAvatar(avatarImage)
}
}
@ -394,7 +400,13 @@ private fun Calls(
recordings = true
if (count > 3)
continue
Image(painterResource(d.direction), "Direction")
Image(
painter = painterResource(
if (callUp(d.direction)) R.drawable.call_up else R.drawable.call_down
),
colorFilter = ColorFilter.tint(colorResource(id = callTint(d.direction))),
contentDescription = "Direction"
)
count++
}
if (count > 3)
@ -436,25 +448,16 @@ private fun loadCallHistory(aor: String): MutableList<CallRow> {
if (h.aor == aor) {
val direction: Int = if (h.direction == "in") {
if (h.startTime != null) {
if (h.startTime != h.stopTime)
R.drawable.call_down_green
else
R.drawable.call_down_blue
} else {
if (h.rejected)
R.drawable.call_down_red
else
R.drawable.call_missed_in
}
} else {
if (h.startTime != null) {
R.drawable.call_up_green
} else {
if (h.rejected)
R.drawable.call_up_red
else
R.drawable.call_missed_out
if (h.startTime != h.stopTime) CALL_DOWN_GREEN else CALL_DOWN_BLUE
}
else
if (h.rejected) CALL_DOWN_RED else CALL_MISSED_IN
}
else {
if (h.startTime != null)
CALL_UP_GREEN
else
if (h.rejected) CALL_UP_RED else CALL_MISSED_OUT
}
if (res.isNotEmpty() && res.last().peerUri == h.peerUri)
res.last().details.add(CallRow.Details(
@ -482,3 +485,18 @@ private fun removeFromHistory(callHistory: MutableState<List<CallRow>>, callRow:
CallHistoryNew.save()
}
fun callUp(direction: Int): Boolean {
return when (direction) {
CALL_UP_GREEN, CALL_UP_RED, CALL_MISSED_OUT -> true
else -> false
}
}
fun callTint(direction: Int): Int {
return when (direction) {
CALL_UP_GREEN, CALL_DOWN_GREEN -> R.color.colorTrafficGreen
CALL_UP_RED, CALL_DOWN_RED -> R.color.colorTrafficRed
CALL_DOWN_BLUE -> R.color.colorPrimary
else -> R.color.colorTrafficYellow
}
}

View File

@ -33,6 +33,14 @@ const val MESSAGE_UP = 2131165306
const val MESSAGE_UP_FAIL = 2131165307
const val MESSAGE_UP_WAIT = 2131165308
const val CALL_UP_GREEN = 2131165323
const val CALL_DOWN_GREEN = 2131165316
const val CALL_UP_RED = 2131165324
const val CALL_DOWN_BLUE = 2131165315
const val CALL_DOWN_RED = 2131165317
const val CALL_MISSED_OUT = 2131165320
const val CALL_MISSED_IN = 2131165319
val mediaEncMap = mapOf("zrtp" to "ZRTP", "dtls_srtp" to "DTLS-SRTPF", "srtp-mand" to "SRTP-MAND",
"srtp" to "SRTP", "" to "--")

View File

@ -2,8 +2,7 @@
android:width="20dp"
android:height="20dp"
android:viewportWidth="960"
android:viewportHeight="960"
android:tint="@color/colorPrimary" >
android:viewportHeight="960" >
<path
android:fillColor="@android:color/white"
android:pathData="M232.35,775.65L232.35,428.65L315.35,428.65L315.35,634L714.85,234.5L773.5,293.15L374,692.65L579.35,692.65L579.35,775.65L232.35,775.65Z"/>

View File

@ -1,10 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="20dp"
android:height="20dp"
android:viewportWidth="960"
android:viewportHeight="960"
android:tint="@color/colorTrafficGreen" >
<path
android:fillColor="@android:color/white"
android:pathData="M232.35,775.65L232.35,428.65L315.35,428.65L315.35,634L714.85,234.5L773.5,293.15L374,692.65L579.35,692.65L579.35,775.65L232.35,775.65Z"/>
</vector>

View File

@ -1,10 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="20dp"
android:height="20dp"
android:viewportWidth="960"
android:viewportHeight="960"
android:tint="@color/colorTrafficRed" >
<path
android:fillColor="@android:color/white"
android:pathData="M232.35,775.65L232.35,428.65L315.35,428.65L315.35,634L714.85,234.5L773.5,293.15L374,692.65L579.35,692.65L579.35,775.65L232.35,775.65Z"/>
</vector>

View File

@ -1,10 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="20dp"
android:height="20dp"
android:viewportWidth="960"
android:viewportHeight="960"
android:tint="@color/colorTrafficYellow" >
<path
android:fillColor="@android:color/white"
android:pathData="M232.35,775.65L232.35,428.65L315.35,428.65L315.35,634L714.85,234.5L773.5,293.15L374,692.65L579.35,692.65L579.35,775.65L232.35,775.65Z"/>
</vector>

View File

@ -1,10 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="20dp"
android:height="20dp"
android:viewportWidth="960"
android:viewportHeight="960"
android:tint="@color/colorTrafficYellow" >
<path
android:fillColor="@android:color/white"
android:pathData="M243,727.65L184.35,669L583.85,269.5L378.5,269.5L378.5,186.5L725.5,186.5L725.5,533.5L642.5,533.5L642.5,328.15L243,727.65Z"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="20dp"
android:height="20dp"
android:viewportWidth="960"
android:viewportHeight="960" >
<path
android:fillColor="@android:color/white"
android:pathData="M243,727.65L184.35,669L583.85,269.5L378.5,269.5L378.5,186.5L725.5,186.5L725.5,533.5L642.5,533.5L642.5,328.15L243,727.65Z"/>
</vector>

View File

@ -1,10 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="20dp"
android:height="20dp"
android:viewportWidth="960"
android:viewportHeight="960"
android:tint="@color/colorTrafficGreen">
<path
android:fillColor="@android:color/white"
android:pathData="M243,727.65L184.35,669L583.85,269.5L378.5,269.5L378.5,186.5L725.5,186.5L725.5,533.5L642.5,533.5L642.5,328.15L243,727.65Z"/>
</vector>

View File

@ -1,10 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="20dp"
android:height="20dp"
android:viewportWidth="960"
android:viewportHeight="960"
android:tint="@color/colorTrafficRed" >
<path
android:fillColor="@android:color/white"
android:pathData="M243,727.65L184.35,669L583.85,269.5L378.5,269.5L378.5,186.5L725.5,186.5L725.5,533.5L642.5,533.5L642.5,328.15L243,727.65Z"/>
</vector>