瀏覽代碼

Add completion time

Signed-off-by: alperozturk <alper_ozturk@proton.me>
alperozturk 1 年之前
父節點
當前提交
c5808fafe8

+ 2 - 2
app/src/main/java/com/nextcloud/client/assistant/AsssistantScreen.kt

@@ -42,8 +42,8 @@ import androidx.compose.ui.tooling.preview.Preview
 import androidx.compose.ui.unit.dp
 import com.nextcloud.client.assistant.component.AddTaskAlertDialog
 import com.nextcloud.client.assistant.component.CenterText
-import com.nextcloud.client.assistant.component.TaskTypesRow
-import com.nextcloud.client.assistant.component.TaskView
+import com.nextcloud.client.assistant.taskTypes.TaskTypesRow
+import com.nextcloud.client.assistant.task.TaskView
 import com.nextcloud.client.assistant.repository.AssistantMockRepository
 import com.nextcloud.ui.composeActivity.ComposeActivity
 import com.nextcloud.ui.composeComponents.alertDialog.SimpleAlertDialog

+ 5 - 0
app/src/main/java/com/nextcloud/client/assistant/extensions/TaskExtensions.kt

@@ -35,3 +35,8 @@ fun Task.statusData(): Pair<Int, Int> {
         }
     }
 }
+
+// TODO add
+fun Task.completionDateRepresentation(): String {
+    return completionExpectedAt ?: "TODO IMPLEMENT IT"
+}

+ 57 - 0
app/src/main/java/com/nextcloud/client/assistant/task/TaskStatus.kt

@@ -0,0 +1,57 @@
+/*
+ * Nextcloud - Android Client
+ *
+ * SPDX-FileCopyrightText: 2024 Your Name <your@email.com>
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+package com.nextcloud.client.assistant.task
+
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.width
+import androidx.compose.material3.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.ColorFilter
+import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.unit.dp
+import com.nextcloud.client.assistant.extensions.completionDateRepresentation
+import com.nextcloud.client.assistant.extensions.statusData
+import com.owncloud.android.lib.resources.assistant.model.Task
+
+@Composable
+fun TaskStatus(task: Task, foregroundColor: Color) {
+    Row(
+        modifier = Modifier
+            .fillMaxWidth()
+            .padding(vertical = 16.dp),
+        verticalAlignment = Alignment.CenterVertically
+    ) {
+        val (iconId, descriptionId) = task.statusData()
+
+        Image(
+            painter = painterResource(id = iconId),
+            modifier = Modifier.size(16.dp),
+            colorFilter = ColorFilter.tint(foregroundColor),
+            contentDescription = "status icon"
+        )
+
+        Spacer(modifier = Modifier.width(6.dp))
+
+        Text(text = stringResource(id = descriptionId), color = foregroundColor)
+
+        Spacer(modifier = Modifier.weight(1f))
+
+        Text(text = task.completionDateRepresentation(), color = foregroundColor)
+
+        Spacer(modifier = Modifier.width(6.dp))
+    }
+}

+ 6 - 38
app/src/main/java/com/nextcloud/client/assistant/component/TaskView.kt → app/src/main/java/com/nextcloud/client/assistant/task/TaskView.kt

@@ -1,27 +1,22 @@
 /*
  * Nextcloud - Android Client
  *
- * SPDX-FileCopyrightText: 2024 Alper Ozturk <alper_ozturk@proton.me>
- * SPDX-FileCopyrightText: 2024 Nextcloud GmbH
+ * SPDX-FileCopyrightText: 2024 Your Name <your@email.com>
  * SPDX-License-Identifier: AGPL-3.0-or-later
  */
-package com.nextcloud.client.assistant.component
+package com.nextcloud.client.assistant.task
 
 import androidx.compose.animation.animateContentSize
 import androidx.compose.animation.core.Spring
 import androidx.compose.animation.core.spring
 import androidx.compose.foundation.ExperimentalFoundationApi
-import androidx.compose.foundation.Image
 import androidx.compose.foundation.background
 import androidx.compose.foundation.combinedClickable
 import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.Spacer
 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.RoundedCornerShape
 import androidx.compose.material3.HorizontalDivider
 import androidx.compose.material3.MaterialTheme
@@ -31,18 +26,13 @@ import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.setValue
-import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.draw.clip
 import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.graphics.ColorFilter
-import androidx.compose.ui.res.painterResource
-import androidx.compose.ui.res.stringResource
 import androidx.compose.ui.tooling.preview.Preview
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.sp
-import com.nextcloud.client.assistant.extensions.statusData
-import com.nextcloud.client.assistant.taskDetail.TaskDetailScreen
+import com.nextcloud.client.assistant.taskDetail.TaskDetailBottomSheet
 import com.nextcloud.ui.composeComponents.bottomSheet.MoreActionsBottomSheet
 import com.nextcloud.utils.extensions.getRandomString
 import com.owncloud.android.R
@@ -100,25 +90,7 @@ fun TaskView(
             )
         }
 
-        Row(
-            modifier = Modifier
-                .fillMaxWidth()
-                .padding(vertical = 16.dp),
-            verticalAlignment = Alignment.CenterVertically
-        ) {
-            val (iconId, descriptionId) = task.statusData()
-
-            Image(
-                painter = painterResource(id = iconId),
-                modifier = Modifier.size(16.dp),
-                colorFilter = ColorFilter.tint(Color.White),
-                contentDescription = "status icon"
-            )
-
-            Spacer(modifier = Modifier.width(6.dp))
-
-            Text(text = stringResource(id = descriptionId), color = Color.White)
-        }
+        TaskStatus(task, foregroundColor = Color.White)
 
         if (showMoreActionsBottomSheet) {
             val bottomSheetAction = listOf(
@@ -138,12 +110,8 @@ fun TaskView(
         }
 
         if (showTaskDetailBottomSheet) {
-            task.input?.let { input ->
-                task.output?.let { output ->
-                    TaskDetailScreen(input, output) {
-                        showTaskDetailBottomSheet = false
-                    }
-                }
+            TaskDetailBottomSheet(task) {
+                showTaskDetailBottomSheet = false
             }
         }
     }

+ 20 - 4
app/src/main/java/com/nextcloud/client/assistant/taskDetail/TaskDetailScreen.kt → app/src/main/java/com/nextcloud/client/assistant/taskDetail/TaskDetailBottomSheet.kt

@@ -40,13 +40,15 @@ import androidx.compose.ui.res.stringResource
 import androidx.compose.ui.tooling.preview.Preview
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.sp
+import com.nextcloud.client.assistant.task.TaskStatus
 import com.nextcloud.utils.extensions.getRandomString
 import com.owncloud.android.R
+import com.owncloud.android.lib.resources.assistant.model.Task
 
 @Suppress("LongMethod")
 @OptIn(ExperimentalFoundationApi::class, ExperimentalMaterial3Api::class)
 @Composable
-fun TaskDetailScreen(input: String, output: String, dismiss: () -> Unit) {
+fun TaskDetailBottomSheet(task: Task, dismiss: () -> Unit) {
     var showInput by remember { mutableStateOf(true) }
     val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true)
 
@@ -100,9 +102,9 @@ fun TaskDetailScreen(input: String, output: String, dismiss: () -> Unit) {
                 ) {
                     Text(
                         text = if (showInput) {
-                            input
+                            task.input ?: ""
                         } else {
-                            output
+                            task.output ?: ""
                         },
                         fontSize = 12.sp,
                         color = Color.Black,
@@ -116,6 +118,8 @@ fun TaskDetailScreen(input: String, output: String, dismiss: () -> Unit) {
                     )
                 }
 
+                TaskStatus(task, foregroundColor = Color.Black)
+
                 Spacer(modifier = Modifier.height(32.dp))
             }
         }
@@ -144,5 +148,17 @@ private fun TextInputSelectButton(modifier: Modifier, titleId: Int, highlightCon
 @Preview
 @Composable
 private fun TaskDetailScreenPreview() {
-    TaskDetailScreen(input = "some input".getRandomString(20), output = "some output".getRandomString(3000)) { }
+    TaskDetailBottomSheet(task = Task(
+        1,
+        "Free Prompt",
+        0,
+        "1",
+        "1",
+        "Give me text".getRandomString(100),
+        "output".getRandomString(300),
+        "",
+        ""
+    )) {
+
+    }
 }

+ 1 - 1
app/src/main/java/com/nextcloud/client/assistant/component/TaskTypesRow.kt → app/src/main/java/com/nextcloud/client/assistant/taskTypes/TaskTypesRow.kt

@@ -5,7 +5,7 @@
  * SPDX-FileCopyrightText: 2024 Nextcloud GmbH
  * SPDX-License-Identifier: AGPL-3.0-or-later
  */
-package com.nextcloud.client.assistant.component
+package com.nextcloud.client.assistant.taskTypes
 
 import androidx.compose.foundation.horizontalScroll
 import androidx.compose.foundation.layout.Row