Restored swipe left/right gesture to toggle between accounts
This commit is contained in:
@@ -52,6 +52,7 @@ import androidx.compose.foundation.ExperimentalFoundationApi
|
|||||||
import androidx.compose.foundation.background
|
import androidx.compose.foundation.background
|
||||||
import androidx.compose.foundation.clickable
|
import androidx.compose.foundation.clickable
|
||||||
import androidx.compose.foundation.combinedClickable
|
import androidx.compose.foundation.combinedClickable
|
||||||
|
import androidx.compose.foundation.gestures.detectHorizontalDragGestures
|
||||||
import androidx.compose.foundation.gestures.detectTapGestures
|
import androidx.compose.foundation.gestures.detectTapGestures
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
@@ -102,6 +103,7 @@ import androidx.compose.runtime.Composable
|
|||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.collectAsState
|
import androidx.compose.runtime.collectAsState
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
|
import androidx.compose.runtime.mutableFloatStateOf
|
||||||
import androidx.compose.runtime.mutableIntStateOf
|
import androidx.compose.runtime.mutableIntStateOf
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
@@ -568,7 +570,8 @@ class MainActivity : ComponentActivity() {
|
|||||||
neutralButtonText = getString(R.string.cancel),
|
neutralButtonText = getString(R.string.cancel),
|
||||||
onNeutralClicked = {}
|
onNeutralClicked = {}
|
||||||
)
|
)
|
||||||
|
var offset by remember { mutableFloatStateOf(0f) }
|
||||||
|
val swipeThreshold = 200
|
||||||
Column(
|
Column(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.imePadding()
|
.imePadding()
|
||||||
@@ -576,7 +579,46 @@ class MainActivity : ComponentActivity() {
|
|||||||
.padding(contentPadding)
|
.padding(contentPadding)
|
||||||
.padding(top = 18.dp, bottom = 6.dp, start = 16.dp, end = 16.dp)
|
.padding(top = 18.dp, bottom = 6.dp, start = 16.dp, end = 16.dp)
|
||||||
.fillMaxSize()
|
.fillMaxSize()
|
||||||
|
.pointerInput(Unit) {
|
||||||
|
detectHorizontalDragGestures(
|
||||||
|
onDragStart = { offset = 0f },
|
||||||
|
onDragEnd = {
|
||||||
|
if (offset < -swipeThreshold) {
|
||||||
|
if (uas.value.isNotEmpty()) {
|
||||||
|
val curPos = UserAgent.findAorIndex(viewModel.selectedAor.value)
|
||||||
|
val newPos = if (curPos == null)
|
||||||
|
0
|
||||||
|
else
|
||||||
|
(curPos + 1) % uas.value.size
|
||||||
|
if (curPos != newPos) {
|
||||||
|
val ua = uas.value[newPos]
|
||||||
|
spinToAor(ua.account.aor)
|
||||||
|
showCall(ua)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (offset > swipeThreshold) {
|
||||||
|
if (uas.value.isNotEmpty()) {
|
||||||
|
val curPos = UserAgent.findAorIndex(viewModel.selectedAor.value)
|
||||||
|
val newPos = when (curPos) {
|
||||||
|
null -> 0
|
||||||
|
0 -> uas.value.size - 1
|
||||||
|
else -> curPos - 1
|
||||||
|
}
|
||||||
|
if (curPos != newPos) {
|
||||||
|
val ua = uas.value[newPos]
|
||||||
|
spinToAor(ua.account.aor)
|
||||||
|
showCall(ua)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
) { _, dragAmount ->
|
||||||
|
offset += dragAmount
|
||||||
|
}
|
||||||
|
}
|
||||||
.verticalScroll(rememberScrollState()),
|
.verticalScroll(rememberScrollState()),
|
||||||
|
verticalArrangement = Arrangement.Top,
|
||||||
horizontalAlignment = Alignment.CenterHorizontally,
|
horizontalAlignment = Alignment.CenterHorizontally,
|
||||||
) {
|
) {
|
||||||
AccountSpinner(ctx)
|
AccountSpinner(ctx)
|
||||||
@@ -1096,11 +1138,13 @@ class MainActivity : ComponentActivity() {
|
|||||||
alertMessage.value = getString(R.string.call_not_secure)
|
alertMessage.value = getString(R.string.call_not_secure)
|
||||||
showAlert.value = true
|
showAlert.value = true
|
||||||
}
|
}
|
||||||
|
|
||||||
R.drawable.locked_yellow -> {
|
R.drawable.locked_yellow -> {
|
||||||
alertTitle.value = getString(R.string.alert)
|
alertTitle.value = getString(R.string.alert)
|
||||||
alertMessage.value = getString(R.string.peer_not_verified)
|
alertMessage.value = getString(R.string.peer_not_verified)
|
||||||
showAlert.value = true
|
showAlert.value = true
|
||||||
}
|
}
|
||||||
|
|
||||||
R.drawable.locked_green -> {
|
R.drawable.locked_green -> {
|
||||||
dialogTitle.value = getString(R.string.info)
|
dialogTitle.value = getString(R.string.info)
|
||||||
dialogMessage.value = getString(R.string.call_is_secure)
|
dialogMessage.value = getString(R.string.call_is_secure)
|
||||||
@@ -1156,7 +1200,7 @@ class MainActivity : ComponentActivity() {
|
|||||||
|
|
||||||
if (showHangupButton.value) {
|
if (showHangupButton.value) {
|
||||||
|
|
||||||
var ua: UserAgent = userAgentofSelectedAor()
|
var ua: UserAgent = userAgentOfSelectedAor()
|
||||||
|
|
||||||
IconButton(
|
IconButton(
|
||||||
modifier = Modifier.size(48.dp),
|
modifier = Modifier.size(48.dp),
|
||||||
@@ -2686,7 +2730,7 @@ class MainActivity : ComponentActivity() {
|
|||||||
updateIcons(Account.ofAor(aor))
|
updateIcons(Account.ofAor(aor))
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun userAgentofSelectedAor(): UserAgent {
|
private fun userAgentOfSelectedAor(): UserAgent {
|
||||||
return UserAgent.ofAor(viewModel.selectedAor.value)!!
|
return UserAgent.ofAor(viewModel.selectedAor.value)!!
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
valkoinen (rekisteröintiä ei ole aktivoitu).</li> <li>Pisteen kosketus johtaa suoraan tilin asetuksiin.</li>
|
valkoinen (rekisteröintiä ei ole aktivoitu).</li> <li>Pisteen kosketus johtaa suoraan tilin asetuksiin.</li>
|
||||||
<li>Pyyhkäisy alas aikaansaa parhaillaan näkyvissä olevan tilin uudelleen rekisteröinnin.</li>
|
<li>Pyyhkäisy alas aikaansaa parhaillaan näkyvissä olevan tilin uudelleen rekisteröinnin.</li>
|
||||||
<li>Parhaillaan näkyvissä olevan tilin pitkä kosketus aktivoi tai passivoi tilin rekisteröinnin.</li>
|
<li>Parhaillaan näkyvissä olevan tilin pitkä kosketus aktivoi tai passivoi tilin rekisteröinnin.</li>
|
||||||
|
<li>Pyyhkäisy vasemmalle/oikealle vaihtaa näkyvissä olevaa tiliä.</li>
|
||||||
<li>Voit valita edellisen puhelun uudelleen koskettamalla virheää luuria silloin, kun puhelun kohde on tyhjä.</li>
|
<li>Voit valita edellisen puhelun uudelleen koskettamalla virheää luuria silloin, kun puhelun kohde on tyhjä.</li>
|
||||||
<li>Voit lisätä puheluiden ja viestien kohteet yhteystietoihin pitkällä kosketuksella.</li>
|
<li>Voit lisätä puheluiden ja viestien kohteet yhteystietoihin pitkällä kosketuksella.</li>
|
||||||
<li>Pitkillä kosketuksilla voit myös poistaa puheluita, viestiketjuja, viestejä ja yhteystietoja.</li>
|
<li>Pitkillä kosketuksilla voit myös poistaa puheluita, viestiketjuja, viestejä ja yhteystietoja.</li>
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
<li>Touch on the dot leads directly to account configuration.</li>
|
<li>Touch on the dot leads directly to account configuration.</li>
|
||||||
<li>Swipe down gesture causes re-registration of the currently shown account.</li>
|
<li>Swipe down gesture causes re-registration of the currently shown account.</li>
|
||||||
<li>Long touch on currently shown account enables or disables account\'s registration.</li>
|
<li>Long touch on currently shown account enables or disables account\'s registration.</li>
|
||||||
|
<li>Swipe left/right gesture toggles between the accounts.</li>
|
||||||
<li>Previous call party can be reselect by touching the call icon when Callee is empty.</li>
|
<li>Previous call party can be reselect by touching the call icon when Callee is empty.</li>
|
||||||
<li>Peers of calls and messages can be added to contacts by long touches.</li>
|
<li>Peers of calls and messages can be added to contacts by long touches.</li>
|
||||||
<li>Long touches can also be used to remove calls, chats, messages, and contacts.</li>
|
<li>Long touches can also be used to remove calls, chats, messages, and contacts.</li>
|
||||||
|
|||||||
Reference in New Issue
Block a user