version screen
This commit is contained in:
parent
f80c7c5d1b
commit
4aebd825d2
@ -42,6 +42,7 @@ import androidx.compose.ui.unit.dp
|
|||||||
import androidx.compose.ui.unit.sp
|
import androidx.compose.ui.unit.sp
|
||||||
import com.mob.utsmyanmar.ui.components.appbar.AppBar
|
import com.mob.utsmyanmar.ui.components.appbar.AppBar
|
||||||
import com.mob.utsmyanmar.ui.preview.P2Preview
|
import com.mob.utsmyanmar.ui.preview.P2Preview
|
||||||
|
import com.mob.utsmyanmar.ui.preview.P3Preview
|
||||||
import com.mob.utsmyanmar.ui.theme.Color
|
import com.mob.utsmyanmar.ui.theme.Color
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
@ -338,7 +339,13 @@ private fun appendAmountValue(current: String, value: String): String {
|
|||||||
|
|
||||||
@P2Preview
|
@P2Preview
|
||||||
@Composable
|
@Composable
|
||||||
fun PreviewAmountScreen() {
|
fun PreviewAmountScreen2() {
|
||||||
|
AmountScreen { }
|
||||||
|
}
|
||||||
|
|
||||||
|
@P3Preview
|
||||||
|
@Composable
|
||||||
|
fun PreviewAmountScreen3() {
|
||||||
AmountScreen { }
|
AmountScreen { }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -73,6 +73,7 @@ import com.mob.utsmyanmar.R
|
|||||||
import com.mob.utsmyanmar.ui.components.appbar.AppBar
|
import com.mob.utsmyanmar.ui.components.appbar.AppBar
|
||||||
import com.mob.utsmyanmar.ui.device_info.DeviceInfoViewModel
|
import com.mob.utsmyanmar.ui.device_info.DeviceInfoViewModel
|
||||||
import com.mob.utsmyanmar.ui.preview.P2Preview
|
import com.mob.utsmyanmar.ui.preview.P2Preview
|
||||||
|
import com.mob.utsmyanmar.ui.preview.P3Preview
|
||||||
import com.mob.utsmyanmar.ui.theme.Color
|
import com.mob.utsmyanmar.ui.theme.Color
|
||||||
import com.sunmi.pay.hardware.aidl.AidlConstants
|
import com.sunmi.pay.hardware.aidl.AidlConstants
|
||||||
import com.utsmyanmar.baselib.BaseApplication
|
import com.utsmyanmar.baselib.BaseApplication
|
||||||
@ -87,6 +88,7 @@ fun DashboardScreen2(
|
|||||||
onNavigateSignOn: () -> Unit = {},
|
onNavigateSignOn: () -> Unit = {},
|
||||||
onNavigateSeeMore: () -> Unit = {},
|
onNavigateSeeMore: () -> Unit = {},
|
||||||
onNavigateSettlement: () -> Unit = {},
|
onNavigateSettlement: () -> Unit = {},
|
||||||
|
onNavigateVersion:() -> Unit = {},
|
||||||
deviceInfoViewModel: DeviceInfoViewModel = viewModel()
|
deviceInfoViewModel: DeviceInfoViewModel = viewModel()
|
||||||
) {
|
) {
|
||||||
val deviceInfo by deviceInfoViewModel.uiState.collectAsState()
|
val deviceInfo by deviceInfoViewModel.uiState.collectAsState()
|
||||||
@ -283,6 +285,18 @@ fun DashboardScreen2(
|
|||||||
scope.launch { drawerState.close() }
|
scope.launch { drawerState.close() }
|
||||||
openHostActionDialog("Log-Off")
|
openHostActionDialog("Log-Off")
|
||||||
}
|
}
|
||||||
|
Text(
|
||||||
|
text = "System Management",
|
||||||
|
fontWeight = FontWeight.Medium,
|
||||||
|
modifier = Modifier.padding(horizontal = 16.dp)
|
||||||
|
)
|
||||||
|
DrawerItem("Function", Icons.Default.Dashboard) {
|
||||||
|
scope.launch { drawerState.close()}
|
||||||
|
}
|
||||||
|
DrawerItem("Version", Icons.Default.Dashboard) {
|
||||||
|
scope.launch { drawerState.close()}
|
||||||
|
onNavigateVersion();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
@ -610,3 +624,9 @@ private fun MenuCard(
|
|||||||
fun PreviewDashboardScreen2() {
|
fun PreviewDashboardScreen2() {
|
||||||
DashboardScreen2()
|
DashboardScreen2()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@P3Preview
|
||||||
|
@Composable
|
||||||
|
fun PreviewDashboardScreen3() {
|
||||||
|
DashboardScreen2()
|
||||||
|
}
|
||||||
|
|||||||
@ -6,6 +6,8 @@ data class DeviceInfoUiState(
|
|||||||
val serialNumber: String = "",
|
val serialNumber: String = "",
|
||||||
val deviceModel: String = "",
|
val deviceModel: String = "",
|
||||||
val finalVersion: String = "",
|
val finalVersion: String = "",
|
||||||
|
val payHardwareVersion: String = "",
|
||||||
|
val romVersion: String = "",
|
||||||
val isLoading: Boolean = false,
|
val isLoading: Boolean = false,
|
||||||
val errorMessage: String? = null
|
val errorMessage: String? = null
|
||||||
)
|
)
|
||||||
@ -6,9 +6,10 @@ import com.utsmyanmar.baselib.BaseApplication
|
|||||||
import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation
|
import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
import kotlinx.coroutines.flow.asStateFlow
|
import kotlinx.coroutines.flow.asStateFlow
|
||||||
|
import sunmi.sunmiui.utils.LogUtil
|
||||||
|
|
||||||
class DeviceInfoViewModel : ViewModel() {
|
class DeviceInfoViewModel : ViewModel() {
|
||||||
|
var TAG = DeviceInfoViewModel::class.simpleName;
|
||||||
private val _uiState = MutableStateFlow(DeviceInfoUiState())
|
private val _uiState = MutableStateFlow(DeviceInfoUiState())
|
||||||
val uiState = _uiState.asStateFlow()
|
val uiState = _uiState.asStateFlow()
|
||||||
|
|
||||||
@ -21,6 +22,9 @@ class DeviceInfoViewModel : ViewModel() {
|
|||||||
val serialNo = getParams(AidlConstants.SysParam.SN)
|
val serialNo = getParams(AidlConstants.SysParam.SN)
|
||||||
val deviceModel = getParams(AidlConstants.SysParam.DEVICE_MODEL)
|
val deviceModel = getParams(AidlConstants.SysParam.DEVICE_MODEL)
|
||||||
val finalVersion = SystemParamsOperation.getInstance().finalVersion ?: ""
|
val finalVersion = SystemParamsOperation.getInstance().finalVersion ?: ""
|
||||||
|
val payHardwareVersion = getPayHardwareVersion()
|
||||||
|
val romVersion = getRomVersion()
|
||||||
|
|
||||||
|
|
||||||
_uiState.value = DeviceInfoUiState(
|
_uiState.value = DeviceInfoUiState(
|
||||||
hardwareVersion = hardwareVersion,
|
hardwareVersion = hardwareVersion,
|
||||||
@ -28,6 +32,8 @@ class DeviceInfoViewModel : ViewModel() {
|
|||||||
serialNumber = serialNo,
|
serialNumber = serialNo,
|
||||||
deviceModel = deviceModel,
|
deviceModel = deviceModel,
|
||||||
finalVersion = finalVersion,
|
finalVersion = finalVersion,
|
||||||
|
payHardwareVersion = payHardwareVersion,
|
||||||
|
romVersion = romVersion,
|
||||||
isLoading = false
|
isLoading = false
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -49,4 +55,25 @@ class DeviceInfoViewModel : ViewModel() {
|
|||||||
""
|
""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun getPayHardwareVersion():String {
|
||||||
|
return try {
|
||||||
|
BaseApplication.getInstance().applicationContext.packageManager.getPackageInfo(
|
||||||
|
"com.sunmi.pay.hardware_v3",
|
||||||
|
0
|
||||||
|
).versionName ?: "PHV?"
|
||||||
|
} catch (e: Exception) {
|
||||||
|
e.printStackTrace()
|
||||||
|
"PHV?"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getRomVersion():String {
|
||||||
|
return try {
|
||||||
|
android.os.Build.VERSION.RELEASE ?: "UNKNOWN"
|
||||||
|
}catch (e: Exception){
|
||||||
|
LogUtil.d(TAG, "get rom version error " + e)
|
||||||
|
"UNKNOWN"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -17,6 +17,7 @@ import com.mob.utsmyanmar.ui.cardwaiting.CardWaitingScreen
|
|||||||
import com.mob.utsmyanmar.ui.cardwaiting.CardWaitingViewModel
|
import com.mob.utsmyanmar.ui.cardwaiting.CardWaitingViewModel
|
||||||
import com.mob.utsmyanmar.ui.dashboard.DashboardScreen2
|
import com.mob.utsmyanmar.ui.dashboard.DashboardScreen2
|
||||||
import com.mob.utsmyanmar.ui.dashboard.SeeMoreScreen
|
import com.mob.utsmyanmar.ui.dashboard.SeeMoreScreen
|
||||||
|
import com.mob.utsmyanmar.ui.device_info.DeviceInfoViewModel
|
||||||
import com.mob.utsmyanmar.ui.pinpad.PinPadRoute
|
import com.mob.utsmyanmar.ui.pinpad.PinPadRoute
|
||||||
import com.mob.utsmyanmar.ui.processing_card.ProcessingCardRoute
|
import com.mob.utsmyanmar.ui.processing_card.ProcessingCardRoute
|
||||||
import com.mob.utsmyanmar.ui.processing_card.ProcessingCardViewModel
|
import com.mob.utsmyanmar.ui.processing_card.ProcessingCardViewModel
|
||||||
@ -33,6 +34,7 @@ import com.mob.utsmyanmar.ui.sale_void.VoidTraceScreen
|
|||||||
import com.mob.utsmyanmar.viewmodel.CardReaderViewModel
|
import com.mob.utsmyanmar.viewmodel.CardReaderViewModel
|
||||||
import com.mob.utsmyanmar.viewmodel.EmvTransactionProcessViewModel
|
import com.mob.utsmyanmar.viewmodel.EmvTransactionProcessViewModel
|
||||||
import com.mob.utsmyanmar.ui.pinpad.PinPadViewModel
|
import com.mob.utsmyanmar.ui.pinpad.PinPadViewModel
|
||||||
|
import com.mob.utsmyanmar.ui.version.VersionScreen
|
||||||
import com.mob.utsmyanmar.viewmodel.SharedViewModel
|
import com.mob.utsmyanmar.viewmodel.SharedViewModel
|
||||||
import com.mob.utsmyanmar.viewmodel.TransProcessViewModel
|
import com.mob.utsmyanmar.viewmodel.TransProcessViewModel
|
||||||
import com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType
|
import com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType
|
||||||
@ -75,6 +77,9 @@ fun AppNavGraph(
|
|||||||
navController.navigate(Routes.Settlement.route) {
|
navController.navigate(Routes.Settlement.route) {
|
||||||
launchSingleTop = true
|
launchSingleTop = true
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
onNavigateVersion = {
|
||||||
|
navController.navigate(Routes.Version.route);
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -95,6 +100,14 @@ fun AppNavGraph(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
composable(Routes.Version.route){
|
||||||
|
val deviceInfoViewModel: DeviceInfoViewModel = hiltViewModel();
|
||||||
|
VersionScreen(
|
||||||
|
onBack = {navController.popBackStack()},
|
||||||
|
deviceInfoViewModel = deviceInfoViewModel
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
composable(Routes.VoidTrace.route) {
|
composable(Routes.VoidTrace.route) {
|
||||||
val voidViewModel: VoidViewModel = hiltViewModel()
|
val voidViewModel: VoidViewModel = hiltViewModel()
|
||||||
|
|||||||
@ -26,4 +26,5 @@ sealed class Routes(val route: String) {
|
|||||||
data object Processing : Routes("processing")
|
data object Processing : Routes("processing")
|
||||||
data object TransactionResult : Routes("transaction_result")
|
data object TransactionResult : Routes("transaction_result")
|
||||||
data object PrintReceipt : Routes("print_receipt")
|
data object PrintReceipt : Routes("print_receipt")
|
||||||
|
data object Version : Routes("version")
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,7 +13,8 @@ annotation class P2Preview
|
|||||||
|
|
||||||
@Preview(
|
@Preview(
|
||||||
name = "P3",
|
name = "P3",
|
||||||
device = "spec:width=720px,height=1440px,dpi=320",
|
device = "spec:width=720px,height=1600px,dpi=320",
|
||||||
showBackground = true
|
showBackground = true,
|
||||||
|
showSystemUi = true
|
||||||
)
|
)
|
||||||
annotation class P3Preview
|
annotation class P3Preview
|
||||||
177
app/src/main/java/com/mob/utsmyanmar/ui/version/Version.kt
Normal file
177
app/src/main/java/com/mob/utsmyanmar/ui/version/Version.kt
Normal file
@ -0,0 +1,177 @@
|
|||||||
|
package com.mob.utsmyanmar.ui.version
|
||||||
|
|
||||||
|
import androidx.compose.foundation.background
|
||||||
|
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.shape.CircleShape
|
||||||
|
import androidx.compose.material.icons.Icons
|
||||||
|
import androidx.compose.material.icons.filled.ChevronLeft
|
||||||
|
import androidx.compose.material.icons.filled.Square
|
||||||
|
import androidx.compose.material3.Card
|
||||||
|
import androidx.compose.material3.CardColors
|
||||||
|
import androidx.compose.material3.CardDefaults
|
||||||
|
import androidx.compose.material3.Icon
|
||||||
|
import androidx.compose.material3.Scaffold
|
||||||
|
import androidx.compose.material3.Text
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
|
import androidx.compose.runtime.collectAsState
|
||||||
|
import androidx.compose.runtime.getValue
|
||||||
|
import androidx.compose.ui.Alignment
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.graphics.vector.ImageVector
|
||||||
|
import androidx.compose.ui.text.style.TextAlign
|
||||||
|
import androidx.compose.ui.unit.dp
|
||||||
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
|
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||||
|
import com.mob.utsmyanmar.ui.components.appbar.AppBar
|
||||||
|
import com.mob.utsmyanmar.ui.device_info.DeviceInfoViewModel
|
||||||
|
import com.mob.utsmyanmar.ui.preview.P3Preview
|
||||||
|
import com.mob.utsmyanmar.ui.theme.Color
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun VersionScreen(
|
||||||
|
onBack: () -> Unit,
|
||||||
|
deviceInfoViewModel: DeviceInfoViewModel
|
||||||
|
) {
|
||||||
|
|
||||||
|
val deviceInfo by deviceInfoViewModel.uiState.collectAsState();
|
||||||
|
val itemSpace = 20.dp;
|
||||||
|
|
||||||
|
LaunchedEffect(Unit) {
|
||||||
|
deviceInfoViewModel.loadDeviceInfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
Scaffold(
|
||||||
|
topBar = {
|
||||||
|
AppBar(
|
||||||
|
title = "Version",
|
||||||
|
onIconClick = onBack,
|
||||||
|
icon = Icons.Default.ChevronLeft
|
||||||
|
)
|
||||||
|
},
|
||||||
|
containerColor = Color.IvoryBeige
|
||||||
|
)
|
||||||
|
{ paddingValues ->
|
||||||
|
Column(
|
||||||
|
modifier = Modifier
|
||||||
|
.padding(paddingValues)
|
||||||
|
.fillMaxSize()
|
||||||
|
.padding(16.dp)
|
||||||
|
) {
|
||||||
|
Text("Device Information")
|
||||||
|
Spacer(Modifier.height(16.dp))
|
||||||
|
Card(
|
||||||
|
colors = CardDefaults.cardColors(
|
||||||
|
containerColor = Color.White
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
Column(
|
||||||
|
modifier = Modifier.padding(16.dp),
|
||||||
|
) {
|
||||||
|
Item(
|
||||||
|
title = "PROD NAME",
|
||||||
|
value = deviceInfo.deviceModel,
|
||||||
|
icon = Icons.Default.Square
|
||||||
|
)
|
||||||
|
Spacer(Modifier.height(itemSpace))
|
||||||
|
Item(
|
||||||
|
title = "TERMINAL SERIAL",
|
||||||
|
value = deviceInfo.serialNumber,
|
||||||
|
icon = Icons.Default.Square
|
||||||
|
)
|
||||||
|
Spacer(Modifier.height(itemSpace))
|
||||||
|
Item(
|
||||||
|
title = "HARDWARE VER",
|
||||||
|
value = deviceInfo.hardwareVersion,
|
||||||
|
icon = Icons.Default.Square
|
||||||
|
)
|
||||||
|
Spacer(Modifier.height(itemSpace))
|
||||||
|
Item(
|
||||||
|
title = "FIRMWARE VER",
|
||||||
|
value = deviceInfo.firmwareVersion,
|
||||||
|
icon = Icons.Default.Square
|
||||||
|
)
|
||||||
|
Spacer(Modifier.height(itemSpace))
|
||||||
|
Item(
|
||||||
|
title = "S/W VER",
|
||||||
|
value = deviceInfo.finalVersion,
|
||||||
|
icon = Icons.Default.Square
|
||||||
|
)
|
||||||
|
Spacer(Modifier.height(itemSpace))
|
||||||
|
Item(
|
||||||
|
title = "PAYHARDWARE SERVICE VER",
|
||||||
|
value = deviceInfo.payHardwareVersion,
|
||||||
|
icon = Icons.Default.Square
|
||||||
|
)
|
||||||
|
Spacer(Modifier.height(itemSpace))
|
||||||
|
Item(
|
||||||
|
title = "ROM VER",
|
||||||
|
value = deviceInfo.romVersion,
|
||||||
|
icon = Icons.Default.Square
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun Item(
|
||||||
|
title: String,
|
||||||
|
value: String,
|
||||||
|
icon: ImageVector
|
||||||
|
) {
|
||||||
|
Row(
|
||||||
|
modifier = Modifier.fillMaxWidth(),
|
||||||
|
horizontalArrangement = Arrangement.SpaceBetween,
|
||||||
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
|
) {
|
||||||
|
Row(
|
||||||
|
modifier = Modifier.weight(1.4f),
|
||||||
|
horizontalArrangement = Arrangement.spacedBy(12.dp),
|
||||||
|
verticalAlignment = Alignment.CenterVertically
|
||||||
|
) {
|
||||||
|
Box(
|
||||||
|
modifier = Modifier.size(40.dp).background(
|
||||||
|
color = Color.CrimsonRed.copy(alpha = 0.2f),
|
||||||
|
shape = CircleShape
|
||||||
|
),
|
||||||
|
contentAlignment = Alignment.Center
|
||||||
|
){
|
||||||
|
Icon(
|
||||||
|
imageVector = icon,
|
||||||
|
contentDescription = "icon"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
Text(text = title)
|
||||||
|
}
|
||||||
|
Row(
|
||||||
|
modifier = Modifier.weight(1f),
|
||||||
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
|
horizontalArrangement = Arrangement.SpaceBetween
|
||||||
|
) {
|
||||||
|
Text(text = ":")
|
||||||
|
Text(text = value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@P3Preview
|
||||||
|
@Composable
|
||||||
|
fun P3PreviewVersionScreen() {
|
||||||
|
VersionScreen(
|
||||||
|
onBack = {},
|
||||||
|
deviceInfoViewModel = hiltViewModel()
|
||||||
|
)
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user