Added tooltips to mic and speakerphone icons
This commit is contained in:
@ -82,7 +82,6 @@ import androidx.compose.material.icons.filled.KeyboardArrowUp
|
||||
import androidx.compose.material.icons.filled.Menu
|
||||
import androidx.compose.material.icons.outlined.Clear
|
||||
import androidx.compose.material3.BasicAlertDialog
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.ButtonColors
|
||||
import androidx.compose.material3.Card
|
||||
import androidx.compose.material3.CardDefaults
|
||||
@ -93,21 +92,17 @@ import androidx.compose.material3.IconButton
|
||||
import androidx.compose.material3.OutlinedButton
|
||||
import androidx.compose.material3.OutlinedTextField
|
||||
import androidx.compose.material3.OutlinedTextFieldDefaults
|
||||
import androidx.compose.material3.RichTooltip
|
||||
import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.material3.Surface
|
||||
import androidx.compose.material3.Switch
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TextButton
|
||||
import androidx.compose.material3.TextField
|
||||
import androidx.compose.material3.TooltipBox
|
||||
import androidx.compose.material3.TooltipDefaults
|
||||
import androidx.compose.material3.TopAppBar
|
||||
import androidx.compose.material3.TopAppBarDefaults
|
||||
import androidx.compose.material3.pulltorefresh.PullToRefreshDefaults.Indicator
|
||||
import androidx.compose.material3.pulltorefresh.pullToRefresh
|
||||
import androidx.compose.material3.pulltorefresh.rememberPullToRefreshState
|
||||
import androidx.compose.material3.rememberTooltipState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.collectAsState
|
||||
@ -116,7 +111,6 @@ import androidx.compose.runtime.mutableFloatStateOf
|
||||
import androidx.compose.runtime.mutableIntStateOf
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.runtime.saveable.rememberSaveable
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Alignment
|
||||
@ -153,12 +147,10 @@ import com.tutpro.baresip.CustomElements.SelectableAlertDialog
|
||||
import com.tutpro.baresip.CustomElements.Text
|
||||
import com.tutpro.baresip.CustomElements.verticalScrollbar
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
import java.io.File
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Date
|
||||
import java.util.Locale
|
||||
import kotlin.collections.set
|
||||
import kotlin.system.exitProcess
|
||||
|
||||
class MainActivity : ComponentActivity() {
|
||||
@ -685,34 +677,9 @@ class MainActivity : ComponentActivity() {
|
||||
containerColor = LocalCustomColors.current.primary
|
||||
),
|
||||
actions = {
|
||||
val scope = rememberCoroutineScope()
|
||||
val tooltipState = rememberTooltipState()
|
||||
TooltipBox(
|
||||
positionProvider = TooltipDefaults.rememberRichTooltipPositionProvider(),
|
||||
tooltip = {
|
||||
RichTooltip(
|
||||
title = { Text(
|
||||
text = "Call Recording",
|
||||
color = LocalCustomColors.current.alert,
|
||||
fontSize = 18.sp,
|
||||
modifier = Modifier.padding(bottom = 4.dp)
|
||||
) },
|
||||
text = { Text(
|
||||
text = "If activated, new incoming or outgoing calls are recorded.",
|
||||
color = LocalCustomColors.current.itemText,
|
||||
fontSize = 16.sp
|
||||
) },
|
||||
caretSize = TooltipDefaults.caretSize,
|
||||
shape = RoundedCornerShape(16.dp),
|
||||
colors = TooltipDefaults.richTooltipColors(
|
||||
containerColor = LocalCustomColors.current.cardBackground,
|
||||
),
|
||||
)
|
||||
},
|
||||
enableUserInput = true,
|
||||
state = tooltipState
|
||||
) {
|
||||
IconButton(
|
||||
|
||||
IconButton(
|
||||
modifier = Modifier.combinedClickable(
|
||||
onClick = {
|
||||
if (Call.call("connected") == null) {
|
||||
BaresipService.isRecOn = !BaresipService.isRecOn
|
||||
@ -726,31 +693,46 @@ class MainActivity : ComponentActivity() {
|
||||
} else
|
||||
Toast.makeText(ctx, R.string.rec_in_call, Toast.LENGTH_SHORT).show()
|
||||
},
|
||||
) {
|
||||
Icon(
|
||||
imageVector = recImage,
|
||||
tint = Color.Unspecified,
|
||||
contentDescription = null
|
||||
)
|
||||
}
|
||||
onLongClick = {
|
||||
alertTitle.value = "Call Recording"
|
||||
alertMessage.value = "If activated, new incoming and outgoing calls will be recorded." +
|
||||
"Recordings can be played on Call Details page"
|
||||
showAlert.value = true
|
||||
}
|
||||
),
|
||||
onClick = {}
|
||||
) {
|
||||
Icon(
|
||||
imageVector = recImage,
|
||||
tint = Color.Unspecified,
|
||||
contentDescription = null
|
||||
)
|
||||
}
|
||||
|
||||
Spacer(modifier = Modifier.width(16.dp))
|
||||
|
||||
IconButton(
|
||||
modifier = Modifier.padding(end=12.dp),
|
||||
onClick = {
|
||||
if (Call.call("connected") != null) {
|
||||
BaresipService.isMicMuted = !BaresipService.isMicMuted
|
||||
if (BaresipService.isMicMuted) {
|
||||
micIcon = R.drawable.mic_off
|
||||
Api.calls_mute(true)
|
||||
} else {
|
||||
micIcon = R.drawable.mic_on
|
||||
Api.calls_mute(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
modifier = Modifier.padding(end=12.dp)
|
||||
.combinedClickable(
|
||||
onClick = {
|
||||
if (Call.call("connected") != null) {
|
||||
BaresipService.isMicMuted = !BaresipService.isMicMuted
|
||||
if (BaresipService.isMicMuted) {
|
||||
micIcon = R.drawable.mic_off
|
||||
Api.calls_mute(true)
|
||||
} else {
|
||||
micIcon = R.drawable.mic_on
|
||||
Api.calls_mute(false)
|
||||
}
|
||||
}
|
||||
},
|
||||
onLongClick = {
|
||||
alertTitle.value = "Microphone"
|
||||
alertMessage.value = "If activated, microphone is muted."
|
||||
showAlert.value = true
|
||||
},
|
||||
),
|
||||
onClick = {}
|
||||
) {
|
||||
Icon(
|
||||
imageVector = ImageVector.vectorResource(micIcon),
|
||||
@ -759,18 +741,26 @@ class MainActivity : ComponentActivity() {
|
||||
}
|
||||
|
||||
IconButton(
|
||||
modifier = Modifier.padding(end=6.dp),
|
||||
onClick = {
|
||||
if (Build.VERSION.SDK_INT >= 31)
|
||||
Log.d(TAG, "Toggling speakerphone when dev/mode is " +
|
||||
"${am.communicationDevice!!.type}/${am.mode}"
|
||||
)
|
||||
Utils.toggleSpeakerPhone(ContextCompat.getMainExecutor(ctx), am)
|
||||
speakerIcon = if (Utils.isSpeakerPhoneOn(am))
|
||||
R.drawable.speaker_on
|
||||
else
|
||||
R.drawable.speaker_off
|
||||
}
|
||||
modifier = Modifier.padding(end=6.dp)
|
||||
.combinedClickable(
|
||||
onClick = {
|
||||
if (Build.VERSION.SDK_INT >= 31)
|
||||
Log.d(TAG, "Toggling speakerphone when dev/mode is " +
|
||||
"${am.communicationDevice!!.type}/${am.mode}"
|
||||
)
|
||||
Utils.toggleSpeakerPhone(ContextCompat.getMainExecutor(ctx), am)
|
||||
speakerIcon = if (Utils.isSpeakerPhoneOn(am))
|
||||
R.drawable.speaker_on
|
||||
else
|
||||
R.drawable.speaker_off
|
||||
},
|
||||
onLongClick = {
|
||||
alertTitle.value = "Speakerphone"
|
||||
alertMessage.value = "If activated, audio is player via speakerphone."
|
||||
showAlert.value = true
|
||||
},
|
||||
),
|
||||
onClick = {}
|
||||
) {
|
||||
Icon(
|
||||
imageVector = ImageVector.vectorResource(speakerIcon),
|
||||
|
||||
Submodule libbaresip-android updated: 3826d8b637...735e7e03c0
Reference in New Issue
Block a user