diff --git a/app/src/main/java/com/mob/utsmyanmar/ui/dashboard/DashboardScreen2.kt b/app/src/main/java/com/mob/utsmyanmar/ui/dashboard/DashboardScreen2.kt
index 9ea31d9..05a2a6d 100644
--- a/app/src/main/java/com/mob/utsmyanmar/ui/dashboard/DashboardScreen2.kt
+++ b/app/src/main/java/com/mob/utsmyanmar/ui/dashboard/DashboardScreen2.kt
@@ -45,6 +45,7 @@ fun DashboardScreen2(
onNavigateSeeMore: () -> Unit = {},
onNavigateSettlement: () -> Unit = {},
onNavigateVersion: () -> Unit = {},
+ onNavigateFunctions: () -> Unit = {},
deviceInfoViewModel: DeviceInfoViewModel = viewModel()
) {
val deviceInfo by deviceInfoViewModel.uiState.collectAsState()
@@ -234,6 +235,7 @@ fun DashboardScreen2(
)
DrawerItem("Function", Icons.Default.Dashboard) {
scope.launch { drawerState.close() }
+ onNavigateFunctions()
}
DrawerItem("Version", Icons.Default.Dashboard) {
scope.launch { drawerState.close() }
diff --git a/app/src/main/java/com/mob/utsmyanmar/ui/functions/FunctionsScreen.kt b/app/src/main/java/com/mob/utsmyanmar/ui/functions/FunctionsScreen.kt
new file mode 100644
index 0000000..3211b17
--- /dev/null
+++ b/app/src/main/java/com/mob/utsmyanmar/ui/functions/FunctionsScreen.kt
@@ -0,0 +1,235 @@
+package com.mob.utsmyanmar.ui.functions
+
+import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Arrangement
+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.rememberScrollState
+import androidx.compose.foundation.shape.RoundedCornerShape
+import androidx.compose.foundation.verticalScroll
+import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.automirrored.filled.ArrowBack
+import androidx.compose.material.icons.filled.ChevronRight
+import androidx.compose.material.icons.filled.OnDeviceTraining
+import androidx.compose.material3.ButtonDefaults
+import androidx.compose.material3.ElevatedButton
+import androidx.compose.material3.Icon
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Scaffold
+import androidx.compose.material3.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.tooling.preview.Preview
+import androidx.compose.ui.unit.dp
+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
+import com.mob.utsmyanmar.R
+@Composable
+fun FunctionsScreen(
+ onBack: () -> Unit = {}
+) {
+ Scaffold(
+ containerColor = Color.IvoryBeige,
+ topBar = {
+ AppBar(
+ title = "Settings",
+ icon = Icons.AutoMirrored.Filled.ArrowBack,
+ onIconClick = onBack
+ )
+ }
+ ) { paddingValues ->
+ Column(
+ modifier = Modifier
+ .fillMaxSize()
+ .padding(paddingValues)
+ .padding(16.dp).verticalScroll(rememberScrollState()),
+ verticalArrangement = Arrangement.spacedBy(12.dp)
+ ) {
+ Text(text = "General Settings")
+ FunctionButton(
+ onClick = {},
+ title = "App Version",
+ subTitle = "1.0-uat",
+ leadingIcon = {
+ Icon(
+ modifier = Modifier.size(24.dp),
+ painter = painterResource(R.drawable.ic_device_info),
+ contentDescription = "icon",
+ tint = Color.LegacyRed
+ )
+ }
+ )
+
+ FunctionButton(
+ onClick = {},
+ title = "Host Config",
+ subTitle = "Detail for bound hosts",
+ leadingIcon = {
+ Icon(
+ modifier = Modifier.size(24.dp),
+ painter = painterResource(R.drawable.ic_database_config),
+ contentDescription = "icon",
+ tint = Color.LegacyRed
+ )
+ },
+ trailingIcon = {
+ Icon(
+ imageVector = Icons.Default.ChevronRight,
+ contentDescription = "icon",
+ tint = Color.LegacyRed
+ )
+ }
+ )
+
+ Text(text = "System Configuration")
+
+ FunctionButton(
+ onClick = {},
+ title = "Clear Batch",
+ subTitle = "Detail for bound hosts",
+ leadingIcon = {
+ Icon(
+ modifier = Modifier.size(24.dp),
+ painter = painterResource(R.drawable.ic_refresh),
+ contentDescription = "icon",
+ tint = Color.LegacyRed
+ )
+ },
+ trailingIcon = {
+ Icon(
+ imageVector = Icons.Default.ChevronRight,
+ contentDescription = "icon",
+ tint = Color.LegacyRed
+ )
+ }
+ )
+
+ FunctionButton(
+ onClick = {},
+ title = "Clear Reversal",
+ subTitle = "Detail for bound hosts",
+ leadingIcon = {
+ Icon(
+ modifier = Modifier.size(24.dp),
+ painter = painterResource(R.drawable.ic_clear),
+ contentDescription = "icon",
+ tint = Color.LegacyRed
+ )
+ },
+ trailingIcon = {
+ Icon(
+ imageVector = Icons.Default.ChevronRight,
+ contentDescription = "icon",
+ tint = Color.LegacyRed
+ )
+ }
+ )
+
+ FunctionButton(
+ onClick = {},
+ title = "TMS Server Url",
+ subTitle = "Detail for bound hosts",
+ leadingIcon = {
+ Icon(
+ modifier = Modifier.size(24.dp),
+ painter = painterResource(R.drawable.ic_address_global),
+ contentDescription = "icon",
+ tint = Color.LegacyRed
+ )
+ },
+ )
+
+ FunctionButton(
+ onClick = {},
+ title = "Download Config",
+ subTitle = "Download terminal config from host",
+ leadingIcon = {
+ Icon(
+ modifier = Modifier.size(24.dp),
+ painter = painterResource(R.drawable.ic_circle_download_arrow),
+ contentDescription = "icon",
+ tint = Color.LegacyRed
+ )
+ },
+ trailingIcon = {
+ Icon(
+ imageVector = Icons.Default.ChevronRight,
+ contentDescription = "icon",
+ tint = Color.LegacyRed
+ )
+ }
+ )
+ }
+ }
+}
+
+@Composable
+fun FunctionButton(
+ onClick: () -> Unit,
+ title: String,
+ subTitle: String,
+ leadingIcon: (@Composable () -> Unit)? = null,
+ trailingIcon: (@Composable () -> Unit)? = null,
+) {
+ ElevatedButton(
+ onClick = onClick,
+ shape = RoundedCornerShape(12.dp),
+ colors = ButtonDefaults.buttonColors(
+ containerColor = Color.White,
+ contentColor = Color.Black
+ ),
+ modifier = Modifier.fillMaxWidth()
+ ) {
+ Row(
+ verticalAlignment = Alignment.CenterVertically,
+ horizontalArrangement = Arrangement.SpaceBetween,
+ modifier = Modifier
+ .fillMaxWidth()
+ .padding(vertical = 16.dp)
+ ) {
+ leadingIcon?.invoke()
+ Spacer(modifier = Modifier.width(12.dp))
+ Column(modifier = Modifier
+ .weight(1f)
+ .padding(horizontal = 8.dp)) {
+ Text(text = title)
+ Text(
+ text = subTitle,
+ style = MaterialTheme.typography.bodySmall,
+ color = Color.Gray
+ )
+ }
+
+ trailingIcon?.invoke()
+ }
+ }
+}
+
+
+@P3Preview
+@P2Preview
+@Composable
+fun PreviewFunctionsScreen() {
+ FunctionsScreen()
+}
+
+@Preview
+@Composable
+fun PreviewFunctionButton() {
+ FunctionButton(
+ onClick = {},
+ title = "title",
+ subTitle = "sub-title"
+ )
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/mob/utsmyanmar/ui/navigation/AppNavGraph.kt b/app/src/main/java/com/mob/utsmyanmar/ui/navigation/AppNavGraph.kt
index 27c3f46..e1b3e35 100644
--- a/app/src/main/java/com/mob/utsmyanmar/ui/navigation/AppNavGraph.kt
+++ b/app/src/main/java/com/mob/utsmyanmar/ui/navigation/AppNavGraph.kt
@@ -37,6 +37,7 @@ import com.mob.utsmyanmar.ui.pinpad.PinPadViewModel
import com.mob.utsmyanmar.ui.settlement.SettlementViewModel
import com.mob.utsmyanmar.ui.transaction_result.TransactionResultEvent
import com.mob.utsmyanmar.ui.transaction_result.TransactionResultViewModel
+import com.mob.utsmyanmar.ui.functions.FunctionsScreen
import com.mob.utsmyanmar.ui.tms_setup.TmsSetupRoute
import com.mob.utsmyanmar.ui.tms_setup.TmsSetupViewModel
import com.mob.utsmyanmar.ui.version.VersionScreen
@@ -79,7 +80,7 @@ fun AppNavGraph(
sharedViewModel.transactionsType.value = TransactionsType.SALE;
sharedViewModel.processCode.value = ProcessCode.SALE_PURCHASE + ProcessCode.SMART + ProcessCode.TO_ACCOUNT;
}
-
+
navController.navigate(Routes.Amount.createRoute(action)) {
launchSingleTop = true
}
@@ -100,7 +101,12 @@ fun AppNavGraph(
}
},
onNavigateVersion = {
- navController.navigate(Routes.Version.route);
+ navController.navigate(Routes.Version.route)
+ },
+ onNavigateFunctions = {
+ navController.navigate(Routes.Functions.route) {
+ launchSingleTop = true
+ }
}
)
}
@@ -130,6 +136,12 @@ fun AppNavGraph(
)
}
+ composable(Routes.Functions.route) {
+ FunctionsScreen(
+ onBack = { navController.popBackStack() }
+ )
+ }
+
composable(Routes.VoidTrace.route) {
val voidViewModel: VoidViewModel = hiltViewModel()
diff --git a/app/src/main/java/com/mob/utsmyanmar/ui/navigation/Routes.kt b/app/src/main/java/com/mob/utsmyanmar/ui/navigation/Routes.kt
index 3f3923d..c798df9 100644
--- a/app/src/main/java/com/mob/utsmyanmar/ui/navigation/Routes.kt
+++ b/app/src/main/java/com/mob/utsmyanmar/ui/navigation/Routes.kt
@@ -28,4 +28,5 @@ sealed class Routes(val route: String) {
data object TransactionResult : Routes("transaction_result")
data object PrintReceipt : Routes("print_receipt")
data object Version : Routes("version")
+ data object Functions : Routes("functions")
}
diff --git a/app/src/main/res/drawable/ic_address_global.xml b/app/src/main/res/drawable/ic_address_global.xml
new file mode 100644
index 0000000..d335b02
--- /dev/null
+++ b/app/src/main/res/drawable/ic_address_global.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_circle_download_arrow.xml b/app/src/main/res/drawable/ic_circle_download_arrow.xml
new file mode 100644
index 0000000..dfe40fa
--- /dev/null
+++ b/app/src/main/res/drawable/ic_circle_download_arrow.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_clear.xml b/app/src/main/res/drawable/ic_clear.xml
new file mode 100644
index 0000000..327d968
--- /dev/null
+++ b/app/src/main/res/drawable/ic_clear.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_database_config.xml b/app/src/main/res/drawable/ic_database_config.xml
new file mode 100644
index 0000000..5ff7b01
--- /dev/null
+++ b/app/src/main/res/drawable/ic_database_config.xml
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_device_info.xml b/app/src/main/res/drawable/ic_device_info.xml
new file mode 100644
index 0000000..aad74f6
--- /dev/null
+++ b/app/src/main/res/drawable/ic_device_info.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_refresh.xml b/app/src/main/res/drawable/ic_refresh.xml
new file mode 100644
index 0000000..147ea32
--- /dev/null
+++ b/app/src/main/res/drawable/ic_refresh.xml
@@ -0,0 +1,9 @@
+
+
+