Merge remote-tracking branch 'origin/dev' into dev

# Conflicts:
#	app/src/main/java/com/mob/utsmyanmar/ui/dashboard/DashboardScreen2.kt
This commit is contained in:
kizzy 2026-06-08 16:21:57 +07:00
commit 68dd5eebd7
2 changed files with 19 additions and 94 deletions

View File

@ -6,53 +6,15 @@ import androidx.compose.animation.core.tween
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.BarChart
import androidx.compose.material.icons.filled.Check
import androidx.compose.material.icons.filled.ChevronRight
import androidx.compose.material.icons.filled.Dashboard
import androidx.compose.material.icons.filled.Menu
import androidx.compose.material.icons.filled.Sync
import androidx.compose.material3.Card
import androidx.compose.material3.CardDefaults
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.DrawerValue
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.ModalDrawerSheet
import androidx.compose.material3.ModalNavigationDrawer
import androidx.compose.material3.NavigationDrawerItem
import androidx.compose.material3.NavigationDrawerItemDefaults
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Switch
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.material3.VerticalDivider
import androidx.compose.material3.rememberDrawerState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.material.icons.filled.*
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
@ -73,7 +35,6 @@ import com.mob.utsmyanmar.ui.preview.P3Preview
import com.mob.utsmyanmar.ui.theme.Color
import com.utsmyanmar.paylibs.sign_on.EchoTestProcess
import com.utsmyanmar.paylibs.sign_on.SignOnListener
import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
@ -271,20 +232,6 @@ fun DashboardScreen2(
fontWeight = FontWeight.Medium,
modifier = Modifier.padding(horizontal = 16.dp)
)
var switchChecked by remember { mutableStateOf(SystemParamsOperation.getInstance().isReversalOn) }
DrawerItem(
title = "Reversal On/Off",
icon = Icons.Default.Sync,
showSwitch = true,
isChecked = switchChecked,
onCheckedChange = { isChecked ->
switchChecked = isChecked
SystemParamsOperation.getInstance().setReversalFlag(isChecked)
},
onClick = {}
)
DrawerItem("Function", Icons.Default.Dashboard) {
scope.launch { drawerState.close() }
}
@ -292,7 +239,6 @@ fun DashboardScreen2(
scope.launch { drawerState.close() }
onNavigateVersion()
}
}
}) {
Scaffold(
@ -344,44 +290,21 @@ fun DashboardScreen2(
@Composable
private fun DrawerItem(
title: String,
icon: ImageVector,
showSwitch: Boolean = false, // New: Flag to enable switch mode
isChecked: Boolean = false, // New: Switch state
onCheckedChange: (Boolean) -> Unit = {}, // New: Switch callback
onClick: () -> Unit
title: String, icon: ImageVector, onClick: () -> Unit
) {
NavigationDrawerItem(
label = {
Text(
text = title,
fontWeight = FontWeight.Medium
text = title, fontWeight = FontWeight.Medium
)
},
selected = false,
// If it's a switch item, clicking the whole row toggles the switch instead of navigating
onClick = {
if (showSwitch) {
onCheckedChange(!isChecked)
} else {
onClick()
}
},
onClick = onClick,
icon = {
Icon(
imageVector = icon,
contentDescription = title
imageVector = icon, contentDescription = title
)
},
badge = {
if (showSwitch) {
Switch(
checked = isChecked,
onCheckedChange = onCheckedChange
)
}
},
modifier = Modifier.padding(horizontal = 12.dp, vertical = 2.dp),
colors = NavigationDrawerItemDefaults.colors(
unselectedContainerColor = androidx.compose.ui.graphics.Color.Transparent,

View File

@ -7,6 +7,7 @@ import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
@ -67,7 +68,7 @@ fun InputAmount(
Box(
modifier = Modifier
.fillMaxSize()
.weight(1f),
.weight(2f),
){
Card(
modifier = Modifier.align(Alignment.CenterEnd)
@ -93,7 +94,7 @@ fun InputAmount(
Text(
text = "Enter Amount",
color = Color.Gray,
fontSize = 11.sp,
fontSize = 18.sp,
modifier = Modifier.align(Alignment.CenterHorizontally)
)
Spacer(modifier = Modifier.height(8.dp))
@ -106,7 +107,7 @@ fun InputAmount(
Text(
text = prefixLabel,
color = Color.LegacyRed,
fontSize = 13.sp,
fontSize = 16.sp,
fontWeight = FontWeight.Medium,
modifier = Modifier.padding(end = 10.dp, bottom = 6.dp)
)
@ -120,12 +121,12 @@ fun InputAmount(
)
}
Spacer(modifier = Modifier.height(12.dp))
Spacer(modifier = Modifier.height(14.dp))
Text(
text = supportingText,
color = Color.Gray,
fontSize = 11.sp,
fontSize = 14.sp,
modifier = Modifier.align(Alignment.CenterHorizontally)
)
}
@ -139,6 +140,7 @@ fun InputAmount(
verticalArrangement = Arrangement.Bottom
){
NumericKeypad(
modifier = Modifier.fillMaxSize(),
onKeyClick = { value ->
amount = appendAmountValue(amount, value)
}
@ -202,6 +204,7 @@ fun InputAmount(
@Composable
private fun NumericKeypad(
modifier: Modifier = Modifier,
onKeyClick: (String) -> Unit
) {
val keys : List<List<String>> = listOf(
@ -211,18 +214,18 @@ private fun NumericKeypad(
listOf(".", "0", "00")
)
Column(
modifier = Modifier.fillMaxWidth(),
modifier = modifier,
verticalArrangement = Arrangement.spacedBy(6.dp)
) {
keys.forEach { row ->
Row(
modifier = Modifier.fillMaxWidth(),
modifier = Modifier.fillMaxWidth().weight(1f),
horizontalArrangement = Arrangement.spacedBy(6.dp)
) {
row.forEach { key ->
KeypadButton(
text = key,
modifier = Modifier.weight(1f),
modifier = Modifier.weight(1f).fillMaxHeight(),
onClick = { onKeyClick(key) }
)
}
@ -241,7 +244,6 @@ private fun KeypadButton(
Box(
modifier = modifier
.height(66.dp)
.shadow(
elevation = 2.dp,
shape = RoundedCornerShape(8.dp),