Bladeren bron

added date field wrapper

sirekanian 3 jaren geleden
bovenliggende
commit
2511b98c2b

+ 11 - 0
app/src/main/java/com/sirekanian/spacetime/ui/DateFieldWrapper.kt

@@ -0,0 +1,11 @@
+package com.sirekanian.spacetime.ui
+
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.setValue
+
+class DateFieldWrapper(date: DateField) {
+    var field by mutableStateOf(date)
+    fun isEmpty() = field.value.isEmpty()
+    fun isValid() = field.isValid()
+}

+ 3 - 4
app/src/main/java/com/sirekanian/spacetime/ui/DraftPage.kt

@@ -26,10 +26,10 @@ fun DraftPage(insets: PaddingValues, state: MainState, onDone: (ImagePage) -> Un
         state.draft = null
     }
     val name = remember { NameField("") }
-    var date by remember { mutableStateOf(DateField("")) }
+    val date = remember { DateFieldWrapper(DateField("")) }
     var blur by remember { mutableStateOf(0.5f) }
     var isNameValid by remember(name.field) { mutableStateOf(true) }
-    var isDateValid by remember(date) { mutableStateOf(true) }
+    var isDateValid by remember(date.field) { mutableStateOf(true) }
     PageBackground(
         url = draft.url,
         blur = blur,
@@ -41,7 +41,7 @@ fun DraftPage(insets: PaddingValues, state: MainState, onDone: (ImagePage) -> Un
             isNameValid = name.isValid()
             isDateValid = date.isValid()
             if (isNameValid && isDateValid) {
-                onDone(createImagePage(name.field.text, draft.url, date, blur))
+                onDone(createImagePage(name.field.text, draft.url, date.field, blur))
             }
         })
     }
@@ -58,7 +58,6 @@ fun DraftPage(insets: PaddingValues, state: MainState, onDone: (ImagePage) -> Un
             name = name,
             isNameValid = isNameValid,
             date = date,
-            onDateChange = { date = DateField(it) },
             isDateValid = isDateValid,
             autofocus = Autofocus.NAME,
             textStyle = textStyle,

+ 3 - 4
app/src/main/java/com/sirekanian/spacetime/ui/EditForm.kt

@@ -21,8 +21,7 @@ import com.sirekanian.spacetime.model.EditablePage.Autofocus
 fun EditForm(
     name: NameField,
     isNameValid: Boolean,
-    date: DateField,
-    onDateChange: (String) -> Unit,
+    date: DateFieldWrapper,
     isDateValid: Boolean,
     autofocus: Autofocus?,
     textStyle: TextStyle,
@@ -46,8 +45,8 @@ fun EditForm(
         colors = TextFieldDefaults.outlinedTextFieldColors(backgroundColor = rippleColor),
     )
     OutlinedTextField(
-        value = date.value,
-        onValueChange = onDateChange,
+        value = date.field.value,
+        onValueChange = { date.field = DateField(it) },
         modifier = Modifier
             .fillMaxWidth()
             .focusRequester(dateFocusRequester),

+ 3 - 4
app/src/main/java/com/sirekanian/spacetime/ui/ImagePageContent.kt

@@ -43,7 +43,7 @@ fun ImagePageContent(
         state.editablePage = null
     }
     val name = remember(isEditMode) { NameField(page.name) }
-    var date by remember(isEditMode) { mutableStateOf(page.date) }
+    val date = remember(isEditMode) { DateFieldWrapper(page.date) }
     var blur by remember(isEditMode) { mutableStateOf(page.blur) }
     var isNameValid by remember(name.field) { mutableStateOf(true) }
     var isDateValid by remember(date) { mutableStateOf(true) }
@@ -55,7 +55,7 @@ fun ImagePageContent(
         Row(Modifier.padding(insets)) {
             VectorIconButton(Icons.Default.Close, onClick = { state.editablePage = null })
             Spacer(Modifier.weight(1f))
-            if (name.field.text.isEmpty() && date.value.isEmpty()) {
+            if (name.isEmpty() && date.isEmpty()) {
                 TextButton(onClick = { onDelete() }) {
                     Text("DELETE", color = MaterialTheme.colors.error)
                 }
@@ -64,7 +64,7 @@ fun ImagePageContent(
                     isNameValid = name.isValid()
                     isDateValid = date.isValid()
                     if (isNameValid && isDateValid) {
-                        onDone(ImagePage(page.id, name.field.text, page.url, date, blur))
+                        onDone(ImagePage(page.id, name.field.text, page.url, date.field, blur))
                     }
                 })
             }
@@ -86,7 +86,6 @@ fun ImagePageContent(
                 name = name,
                 isNameValid = isNameValid,
                 date = date,
-                onDateChange = { date = DateField(it) },
                 isDateValid = isDateValid,
                 autofocus = state.editablePage?.autofocus,
                 textStyle = textStyle,

+ 1 - 0
app/src/main/java/com/sirekanian/spacetime/ui/NameField.kt

@@ -8,5 +8,6 @@ import androidx.compose.ui.text.input.TextFieldValue
 
 class NameField(name: String) {
     var field by mutableStateOf(TextFieldValue(name, TextRange(name.length)))
+    fun isEmpty() = field.text.isEmpty()
     fun isValid() = field.text.isNotEmpty()
 }