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 com.mob.utsmyanmar.ui.components.appbar.AppBar
|
||||
import com.mob.utsmyanmar.ui.preview.P2Preview
|
||||
import com.mob.utsmyanmar.ui.preview.P3Preview
|
||||
import com.mob.utsmyanmar.ui.theme.Color
|
||||
|
||||
@Composable
|
||||
@ -338,7 +339,13 @@ private fun appendAmountValue(current: String, value: String): String {
|
||||
|
||||
@P2Preview
|
||||
@Composable
|
||||
fun PreviewAmountScreen() {
|
||||
fun PreviewAmountScreen2() {
|
||||
AmountScreen { }
|
||||
}
|
||||
|
||||
@P3Preview
|
||||
@Composable
|
||||
fun PreviewAmountScreen3() {
|
||||
AmountScreen { }
|
||||
}
|
||||
|
||||
|
||||
@ -73,6 +73,7 @@ import com.mob.utsmyanmar.R
|
||||
import com.mob.utsmyanmar.ui.components.appbar.AppBar
|
||||
import com.mob.utsmyanmar.ui.device_info.DeviceInfoViewModel
|
||||
import com.mob.utsmyanmar.ui.preview.P2Preview
|
||||
import com.mob.utsmyanmar.ui.preview.P3Preview
|
||||
import com.mob.utsmyanmar.ui.theme.Color
|
||||
import com.sunmi.pay.hardware.aidl.AidlConstants
|
||||
import com.utsmyanmar.baselib.BaseApplication
|
||||
@ -87,6 +88,7 @@ fun DashboardScreen2(
|
||||
onNavigateSignOn: () -> Unit = {},
|
||||
onNavigateSeeMore: () -> Unit = {},
|
||||
onNavigateSettlement: () -> Unit = {},
|
||||
onNavigateVersion:() -> Unit = {},
|
||||
deviceInfoViewModel: DeviceInfoViewModel = viewModel()
|
||||
) {
|
||||
val deviceInfo by deviceInfoViewModel.uiState.collectAsState()
|
||||
@ -283,6 +285,18 @@ fun DashboardScreen2(
|
||||
scope.launch { drawerState.close() }
|
||||
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() {
|
||||
DashboardScreen2()
|
||||
}
|
||||
|
||||
@P3Preview
|
||||
@Composable
|
||||
fun PreviewDashboardScreen3() {
|
||||
DashboardScreen2()
|
||||
}
|
||||
|
||||
@ -6,6 +6,8 @@ data class DeviceInfoUiState(
|
||||
val serialNumber: String = "",
|
||||
val deviceModel: String = "",
|
||||
val finalVersion: String = "",
|
||||
val payHardwareVersion: String = "",
|
||||
val romVersion: String = "",
|
||||
val isLoading: Boolean = false,
|
||||
val errorMessage: String? = null
|
||||
)
|
||||
@ -6,9 +6,10 @@ import com.utsmyanmar.baselib.BaseApplication
|
||||
import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.asStateFlow
|
||||
import sunmi.sunmiui.utils.LogUtil
|
||||
|
||||
class DeviceInfoViewModel : ViewModel() {
|
||||
|
||||
var TAG = DeviceInfoViewModel::class.simpleName;
|
||||
private val _uiState = MutableStateFlow(DeviceInfoUiState())
|
||||
val uiState = _uiState.asStateFlow()
|
||||
|
||||
@ -21,6 +22,9 @@ class DeviceInfoViewModel : ViewModel() {
|
||||
val serialNo = getParams(AidlConstants.SysParam.SN)
|
||||
val deviceModel = getParams(AidlConstants.SysParam.DEVICE_MODEL)
|
||||
val finalVersion = SystemParamsOperation.getInstance().finalVersion ?: ""
|
||||
val payHardwareVersion = getPayHardwareVersion()
|
||||
val romVersion = getRomVersion()
|
||||
|
||||
|
||||
_uiState.value = DeviceInfoUiState(
|
||||
hardwareVersion = hardwareVersion,
|
||||
@ -28,6 +32,8 @@ class DeviceInfoViewModel : ViewModel() {
|
||||
serialNumber = serialNo,
|
||||
deviceModel = deviceModel,
|
||||
finalVersion = finalVersion,
|
||||
payHardwareVersion = payHardwareVersion,
|
||||
romVersion = romVersion,
|
||||
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.dashboard.DashboardScreen2
|
||||
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.processing_card.ProcessingCardRoute
|
||||
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.EmvTransactionProcessViewModel
|
||||
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.TransProcessViewModel
|
||||
import com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType
|
||||
@ -75,6 +77,9 @@ fun AppNavGraph(
|
||||
navController.navigate(Routes.Settlement.route) {
|
||||
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) {
|
||||
val voidViewModel: VoidViewModel = hiltViewModel()
|
||||
|
||||
@ -26,4 +26,5 @@ sealed class Routes(val route: String) {
|
||||
data object Processing : Routes("processing")
|
||||
data object TransactionResult : Routes("transaction_result")
|
||||
data object PrintReceipt : Routes("print_receipt")
|
||||
data object Version : Routes("version")
|
||||
}
|
||||
|
||||
@ -13,7 +13,8 @@ annotation class P2Preview
|
||||
|
||||
@Preview(
|
||||
name = "P3",
|
||||
device = "spec:width=720px,height=1440px,dpi=320",
|
||||
showBackground = true
|
||||
device = "spec:width=720px,height=1600px,dpi=320",
|
||||
showBackground = true,
|
||||
showSystemUi = true
|
||||
)
|
||||
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