From a3594f5d8b3926fde4e33d5775c38f15da9cdbf4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?B=C3=A1lint=20R=C3=A9thelyi?= <rethelyibalint@gmail.com>
Date: Wed, 16 Feb 2022 17:14:36 +0100
Subject: [PATCH] add lost in space functionality

---
 .../space/rethelyi/mosogepsch/view/AppBar.kt  |  5 ++++
 .../mosogepsch/view/MachineOnFloor.kt         |  1 +
 .../rethelyi/mosogepsch/view/MachineScreen.kt | 24 +++++++++++++++----
 .../mosogepsch/view/MachineViewActivity.kt    |  3 +++
 .../app/src/main/res/values-hu/strings.xml    |  1 +
 frontend/app/src/main/res/values/strings.xml  |  1 +
 6 files changed, 31 insertions(+), 4 deletions(-)

diff --git a/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/AppBar.kt b/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/AppBar.kt
index b346ae3..ed31825 100644
--- a/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/AppBar.kt
+++ b/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/AppBar.kt
@@ -4,6 +4,7 @@ import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.padding
+import androidx.compose.material.DropdownMenu
 import androidx.compose.material3.Icon
 import androidx.compose.material3.Text
 import androidx.compose.material3.SmallTopAppBar
@@ -37,6 +38,10 @@ fun AppBar(internet: Boolean) {
                     contentDescription = stringResource(R.string.no_internet)
                 )
             }
+//            DropdownMenu()
+//                {
+//
+//            }
         },
     )
 }
\ No newline at end of file
diff --git a/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/MachineOnFloor.kt b/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/MachineOnFloor.kt
index d94574a..a17b534 100644
--- a/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/MachineOnFloor.kt
+++ b/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/MachineOnFloor.kt
@@ -26,6 +26,7 @@ fun MachineOnFloorView(machine: Machine, modifier: Modifier, lastRequestTime: Da
                 onClick = {
                     val intent = Intent(context, MachineViewActivity::class.java)
                     intent.putExtra("machine", machine)
+                    intent.putExtra("last_request_time", lastRequestTime)
                     context.startActivity(intent)
                 }),
         color = when {
diff --git a/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/MachineScreen.kt b/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/MachineScreen.kt
index 843a629..bd70527 100644
--- a/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/MachineScreen.kt
+++ b/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/MachineScreen.kt
@@ -21,12 +21,13 @@ import com.google.firebase.messaging.ktx.messaging
 import space.rethelyi.mosogepsch.R
 import space.rethelyi.mosogepsch.model.Machine
 import java.text.SimpleDateFormat
+import java.util.*
 
 val format = SimpleDateFormat.getDateTimeInstance()
 
 @Composable
 @OptIn(ExperimentalMaterial3Api::class)
-fun MachineScreen(machine: Machine, onUpdate: (Boolean) -> Unit) {
+fun MachineScreen(machine: Machine, lastRequestTime: Date?, onUpdate: (Boolean) -> Unit) {
     val modifier = Modifier.fillMaxWidth()
     val ctx = LocalContext.current
     Scaffold(
@@ -61,10 +62,25 @@ fun MachineScreen(machine: Machine, onUpdate: (Boolean) -> Unit) {
         ) {
             Card(
                 modifier = modifier,
-                color = if (machine.status == 1) { MaterialTheme.colorScheme.error } else { MaterialTheme.colorScheme.primary }
+                color = when {
+                    machine.last_query_time.isLostInSpace(lastRequestTime) -> {
+                        MaterialTheme.colorScheme.surfaceVariant
+                    }
+                    machine.status == 1 -> {
+                        MaterialTheme.colorScheme.error
+                    }
+                    else -> MaterialTheme.colorScheme.primary
+                },
             ) {
-                val status = if (machine.status == 1) { stringResource(R.string.not_available) } else { stringResource(
-                                    R.string.available) }
+                val status = when {
+                    machine.last_query_time.isLostInSpace(lastRequestTime) -> {
+                        stringResource(R.string.lost_in_space)
+                    }
+                    machine.status == 1 -> {
+                        stringResource(R.string.not_available)
+                    }
+                    else -> stringResource(R.string.available)
+                }
                 Text(
                     modifier = modifier
                         .padding(16.dp),
diff --git a/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/MachineViewActivity.kt b/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/MachineViewActivity.kt
index 96673f0..ab183a5 100644
--- a/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/MachineViewActivity.kt
+++ b/frontend/app/src/main/java/space/rethelyi/mosogepsch/view/MachineViewActivity.kt
@@ -7,12 +7,14 @@ import androidx.compose.material3.MaterialTheme
 import androidx.compose.material3.Surface
 import space.rethelyi.mosogepsch.model.Machine
 import space.rethelyi.mosogepsch.ui.theme.MosogepSCHTheme
+import java.util.*
 
 class MachineViewActivity : ComponentActivity() {
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
 
         val machine = intent.getSerializableExtra("machine") as? Machine ?: throw IllegalArgumentException("machine must be machine")
+        val lastRequestTime = intent.getSerializableExtra("last_request_time") as? Date ?: throw IllegalArgumentException("date must be date")
 
         setContent {
             MosogepSCHTheme {
@@ -20,6 +22,7 @@ class MachineViewActivity : ComponentActivity() {
                 Surface(color = MaterialTheme.colorScheme.background) {
                     MachineScreen(
                         machine = machine,
+                        lastRequestTime = lastRequestTime
                     ) { false }
                 }
             }
diff --git a/frontend/app/src/main/res/values-hu/strings.xml b/frontend/app/src/main/res/values-hu/strings.xml
index 38d6507..65462b2 100644
--- a/frontend/app/src/main/res/values-hu/strings.xml
+++ b/frontend/app/src/main/res/values-hu/strings.xml
@@ -17,4 +17,5 @@
     <string name="title">%1$s. emeleti %2$s</string>
     <string name="notification_msg">A %1$s. emeleti %2$s %3$s lett.</string>
     <string name="no_internet">nincs internet kapcsolat</string>
+    <string name="lost_in_space">elveszett  (az űrben)</string>
 </resources>
\ No newline at end of file
diff --git a/frontend/app/src/main/res/values/strings.xml b/frontend/app/src/main/res/values/strings.xml
index b9e3cab..5e73bdb 100644
--- a/frontend/app/src/main/res/values/strings.xml
+++ b/frontend/app/src/main/res/values/strings.xml
@@ -19,4 +19,5 @@
     <string name="title">%2$s on floor %1$s</string>
     <string name="notification_msg">The %2$s on floor %1$s became %3$s</string>
     <string name="no_internet">no internet connection</string>
+    <string name="lost_in_space">lost in space</string>
 </resources>
\ No newline at end of file
-- 
GitLab