From 211e633517de09fa63e80a01974a50f03adcd2f4 Mon Sep 17 00:00:00 2001
From: moon <56061215+MgKyawLay@users.noreply.github.com>
Date: Wed, 10 Jun 2026 20:17:33 +0630
Subject: [PATCH] side bar modified
---
.../ui/dashboard/DashboardScreen2.kt | 221 ++++++++++++++++--
.../ui/functions/FunctionsScreen.kt | 13 +-
.../main/res/drawable/ic_cancel_circle.xml | 9 +
app/src/main/res/drawable/ic_four_boxes.xml | 9 +
app/src/main/res/drawable/ic_lock.xml | 28 +--
.../main/res/drawable/ic_up_down_arrow.xml | 9 +
app/src/main/res/drawable/ic_version.xml | 30 +--
7 files changed, 245 insertions(+), 74 deletions(-)
create mode 100644 app/src/main/res/drawable/ic_cancel_circle.xml
create mode 100644 app/src/main/res/drawable/ic_four_boxes.xml
create mode 100644 app/src/main/res/drawable/ic_up_down_arrow.xml
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 05a2a6d..3b5ee78 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
@@ -6,15 +6,53 @@ 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.*
+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.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.*
-import androidx.compose.material3.*
-import androidx.compose.runtime.*
+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.Menu
+import androidx.compose.material.icons.filled.Sync
+import androidx.compose.material3.AlertDialog
+import androidx.compose.material3.Button
+import androidx.compose.material3.ButtonDefaults
+import androidx.compose.material3.Card
+import androidx.compose.material3.CardDefaults
+import androidx.compose.material3.DrawerValue
+import androidx.compose.material3.HorizontalDivider
+import androidx.compose.material3.Icon
+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.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.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
@@ -23,6 +61,7 @@ import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow
+import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.lifecycle.viewmodel.compose.viewModel
@@ -54,7 +93,7 @@ fun DashboardScreen2(
deviceInfoViewModel.loadDeviceInfo()
}
- val drawerState = rememberDrawerState(initialValue = DrawerValue.Closed)
+ val drawerState = rememberDrawerState(initialValue = DrawerValue.Open)
val scope = rememberCoroutineScope()
val mainHandler = remember { Handler(Looper.getMainLooper()) }
var showHostActionDialog by remember { mutableStateOf(false) }
@@ -215,32 +254,96 @@ fun DashboardScreen2(
}
Spacer(modifier = Modifier.height(10.dp))
+ Text(
+ text = "Connection Settings",
+ fontWeight = FontWeight.Medium,
+ modifier = Modifier.padding(horizontal = 16.dp)
+ )
+
+ Item(
+ title = "Echo Test", subTitle = "Test Connection Status",
+ onClick = {
+ scope.launch { drawerState.close() }
+ openHostActionDialog("Echo Test")
+ },
+ leadingIcon = {
+ Icon(
+ painterResource(R.drawable.ic_up_down_arrow),
+ contentDescription = "icon",
+ tint = Color.LegacyRed
+ )
+ },
+ trailingIcon = {},
+ )
+ Item(
+ title = "Log-On", subTitle = "Log on to System",
+ onClick = {
+ scope.launch { drawerState.close() }
+ openHostActionDialog("Log-On")
+ },
+ leadingIcon = {
+ Icon(
+ painterResource(R.drawable.ic_lock),
+ contentDescription = "icon",
+ tint = Color.LegacyRed
+ )
+ },
+ trailingIcon = {},
+ )
+ Item(
+ title = "Log-Off", subTitle = "Log off from System",
+ onClick = {
+ scope.launch { drawerState.close() }
+ openHostActionDialog("Log-Off")
+ },
+ leadingIcon = {
+ Icon(
+ painterResource(R.drawable.ic_cancel_circle),
+ contentDescription = "icon",
+ tint = Color.LegacyRed
+ )
+ },
+ trailingIcon = {},
+ )
- DrawerItem("Log-On", Icons.Default.Dashboard) {
- scope.launch { drawerState.close() }
- openHostActionDialog("Log-On")
- }
- DrawerItem("Echo Test", Icons.Default.Sync) {
- scope.launch { drawerState.close() }
- openHostActionDialog("Echo Test")
- }
- DrawerItem("Log-Off", Icons.Default.Dashboard) {
- 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() }
- onNavigateFunctions()
- }
- DrawerItem("Version", Icons.Default.Dashboard) {
- scope.launch { drawerState.close() }
- onNavigateVersion()
- }
+
+ Item(
+ title = "Functions", subTitle = "System Function Settings",
+ onClick = {
+ scope.launch { drawerState.close() }
+ onNavigateFunctions()
+ },
+ leadingIcon = {
+ Icon(
+ painterResource(R.drawable.ic_four_boxes),
+ contentDescription = "icon",
+ tint = Color.LegacyRed,
+ modifier = Modifier.size(16.dp)
+ )
+ },
+ trailingIcon = {},
+ )
+ Item(
+ title = "Version", subTitle = "View App Version Info",
+ onClick = {
+ scope.launch { drawerState.close() }
+ onNavigateVersion()
+ },
+ leadingIcon = {
+ Icon(
+ painterResource(R.drawable.ic_version),
+ contentDescription = "icon",
+ tint = Color.LegacyRed
+ )
+ },
+ trailingIcon = {},
+ )
+
}
}) {
Scaffold(
@@ -597,3 +700,71 @@ fun PreviewDashboardScreen2() {
fun PreviewDashboardScreen3() {
DashboardScreen2()
}
+
+
+@Preview
+@Composable
+fun PreviewItem() {
+ Item(
+ onClick = {},
+ title = "title",
+ subTitle = "sub-title"
+ )
+}
+
+
+@Composable
+fun Item(
+ onClick: () -> Unit,
+ title: String,
+ subTitle: String,
+ leadingIcon: (@Composable () -> Unit)? = null,
+ trailingIcon: (@Composable () -> Unit)? = null,
+) {
+ Button(
+ onClick = onClick,
+ colors = ButtonDefaults.buttonColors(
+ containerColor = Color.White,
+ contentColor = Color.Black
+ ),
+ modifier = Modifier.fillMaxWidth()
+ ) {
+ Row(
+ verticalAlignment = Alignment.CenterVertically,
+ horizontalArrangement = Arrangement.SpaceBetween,
+ modifier = Modifier
+ .fillMaxWidth()
+ ) {
+ // Square icon background
+ leadingIcon?.let {
+ Box(
+ contentAlignment = Alignment.Center,
+ modifier = Modifier
+ .size(40.dp)
+ .clip(RoundedCornerShape(16.dp)) // change to RectangleShape for sharp corners
+ .background(Color.LegacyRed.copy(alpha = 0.1f))
+ .padding(8.dp)
+ ) {
+ it()
+ }
+ }
+
+ 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()
+ }
+ }
+}
\ No newline at end of file
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
index 3211b17..095401a 100644
--- a/app/src/main/java/com/mob/utsmyanmar/ui/functions/FunctionsScreen.kt
+++ b/app/src/main/java/com/mob/utsmyanmar/ui/functions/FunctionsScreen.kt
@@ -1,13 +1,11 @@
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
@@ -17,7 +15,6 @@ 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
@@ -30,15 +27,19 @@ 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.R
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
+import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation
+
@Composable
fun FunctionsScreen(
onBack: () -> Unit = {}
) {
+ val tmsAddress = SystemParamsOperation.getInstance().tmsAddress
+
Scaffold(
containerColor = Color.IvoryBeige,
topBar = {
@@ -139,7 +140,7 @@ fun FunctionsScreen(
FunctionButton(
onClick = {},
title = "TMS Server Url",
- subTitle = "Detail for bound hosts",
+ subTitle = tmsAddress,
leadingIcon = {
Icon(
modifier = Modifier.size(24.dp),
@@ -232,4 +233,4 @@ fun PreviewFunctionButton() {
title = "title",
subTitle = "sub-title"
)
-}
\ No newline at end of file
+}
diff --git a/app/src/main/res/drawable/ic_cancel_circle.xml b/app/src/main/res/drawable/ic_cancel_circle.xml
new file mode 100644
index 0000000..1d7afd1
--- /dev/null
+++ b/app/src/main/res/drawable/ic_cancel_circle.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_four_boxes.xml b/app/src/main/res/drawable/ic_four_boxes.xml
new file mode 100644
index 0000000..a8f1aa6
--- /dev/null
+++ b/app/src/main/res/drawable/ic_four_boxes.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_lock.xml b/app/src/main/res/drawable/ic_lock.xml
index bb9afa0..6ef732a 100644
--- a/app/src/main/res/drawable/ic_lock.xml
+++ b/app/src/main/res/drawable/ic_lock.xml
@@ -1,25 +1,9 @@
-
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="960"
+ android:viewportHeight="960">
+ android:pathData="M240,880q-33,0 -56.5,-23.5T160,800v-400q0,-33 23.5,-56.5T240,320h40v-80q0,-83 58.5,-141.5T480,40q83,0 141.5,58.5T680,240v80h40q33,0 56.5,23.5T800,400v400q0,33 -23.5,56.5T720,880L240,880ZM240,800h480v-400L240,400v400ZM536.5,656.5Q560,633 560,600t-23.5,-56.5Q513,520 480,520t-56.5,23.5Q400,567 400,600t23.5,56.5Q447,680 480,680t56.5,-23.5ZM360,320h240v-80q0,-50 -35,-85t-85,-35q-50,0 -85,35t-35,85v80ZM240,800v-400,400Z"
+ android:fillColor="#e3e3e3"/>
diff --git a/app/src/main/res/drawable/ic_up_down_arrow.xml b/app/src/main/res/drawable/ic_up_down_arrow.xml
new file mode 100644
index 0000000..87e3175
--- /dev/null
+++ b/app/src/main/res/drawable/ic_up_down_arrow.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_version.xml b/app/src/main/res/drawable/ic_version.xml
index 77b3fea..916b16d 100644
--- a/app/src/main/res/drawable/ic_version.xml
+++ b/app/src/main/res/drawable/ic_version.xml
@@ -1,24 +1,12 @@
-
+ android:width="800dp"
+ android:height="800dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+ android:pathData="M20.245,14.75C21.18,15.364 21.137,16.787 20.117,17.326L12.935,21.122C12.35,21.432 11.65,21.432 11.066,21.122L3.884,17.326C2.863,16.787 2.82,15.364 3.755,14.75L3.818,14.789L3.818,14.789L11.065,18.622C11.65,18.931 12.35,18.931 12.935,18.622L20.116,14.826C20.161,14.802 20.204,14.777 20.245,14.75ZM20.245,10.75C21.139,11.337 21.139,12.665 20.244,13.251L20.117,13.326L12.935,17.122C12.403,17.403 11.777,17.429 11.228,17.199L11.066,17.122L3.884,13.326C2.863,12.787 2.82,11.364 3.755,10.75L3.818,10.789L3.818,10.789L11.065,14.622C11.597,14.903 12.224,14.929 12.773,14.699L12.935,14.622L20.116,10.826C20.161,10.802 20.204,10.777 20.245,10.75ZM12.935,2.878L20.116,6.674C21.182,7.237 21.182,8.763 20.116,9.326L12.935,13.123C12.35,13.432 11.65,13.432 11.065,13.123L3.884,9.326C2.818,8.763 2.818,7.237 3.884,6.674L11.065,2.878C11.65,2.569 12.35,2.569 12.935,2.878Z"
+ android:strokeWidth="1"
+ android:fillColor="#09244B"
+ android:fillType="nonZero"
+ android:strokeColor="#00000000"/>