Skip to content

Commit

Permalink
edit card feature
Browse files Browse the repository at this point in the history
  • Loading branch information
tamaskr committed Oct 12, 2022
1 parent dba7cb1 commit 2e111b5
Show file tree
Hide file tree
Showing 6 changed files with 116 additions and 15 deletions.
9 changes: 7 additions & 2 deletions app/src/main/java/com/virtualtag/app/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -73,11 +73,16 @@ class MainActivity : ComponentActivity() {
goHome = goHome
)
}
composable("edit/{id}") {
composable("edit/{id}",
arguments = listOf(navArgument("id") {
type = NavType.StringType
})
) {
EditScreen(
model = cardViewModel,
id = it.arguments?.getString("id") ?: "0",
goBack = goBack
goBack = goBack,
goHome = goHome
)
}
}
Expand Down
8 changes: 6 additions & 2 deletions app/src/main/java/com/virtualtag/app/ui/components/Buttons.kt
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,13 @@ fun SecondaryButton(text: String, onClick: () -> Unit, modifier: Modifier) {
}

@Composable
fun ColorButton(colors: List<Color>, onColorSelected: (Color) -> Unit) {
fun ColorButton(colors: List<Color>, selected: Color, onColorSelected: (Color) -> Unit) {
var colorPickerOpen by remember { mutableStateOf(false) }
var currentlySelected by remember { mutableStateOf(colors[0]) }
var currentlySelected by remember { mutableStateOf(selected) }

LaunchedEffect(key1 = selected) {
currentlySelected = selected
}

Card(
modifier = Modifier
Expand Down
3 changes: 1 addition & 2 deletions app/src/main/java/com/virtualtag/app/ui/screens/AddScreen.kt
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,6 @@ fun AddScreen(
)
}
}

TextField(
value = name,
onValueChange = { newName ->
Expand All @@ -126,7 +125,7 @@ fun AddScreen(
)
ColorButton(colors = cardBackGroundColors, onColorSelected = { value ->
color = colorToString(value)
})
}, selected = cardBackGroundColors[0])
}
Row {
Column(
Expand Down
109 changes: 100 additions & 9 deletions app/src/main/java/com/virtualtag/app/ui/screens/EditScreen.kt
Original file line number Diff line number Diff line change
@@ -1,20 +1,59 @@
package com.virtualtag.app.ui.screens

import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import android.widget.Toast
import androidx.compose.foundation.layout.*
import androidx.compose.material.*
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ArrowBack
import androidx.compose.runtime.Composable
import androidx.compose.runtime.*
import androidx.compose.runtime.livedata.observeAsState
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.virtualtag.app.viewmodels.CardViewModel
import com.virtualtag.app.R
import com.virtualtag.app.db.Card
import com.virtualtag.app.ui.components.ColorButton
import com.virtualtag.app.ui.components.PrimaryButton
import com.virtualtag.app.ui.components.SecondaryButton
import com.virtualtag.app.ui.theme.cardBackGroundColors
import com.virtualtag.app.utils.colorToString
import com.virtualtag.app.utils.stringToColor

@Composable
fun EditScreen(model: CardViewModel, id: String, goBack: () -> Unit) {
fun EditScreen(model: CardViewModel, id: String, goBack: () -> Unit, goHome: () -> Unit) {
val context = LocalContext.current
val card =
model.getCardById(id)
.observeAsState(
Card(
id = "0",
name = "",
color = "#fff8f8f8"
)
)

var name by remember { mutableStateOf("") }
var color by remember { mutableStateOf(colorToString(cardBackGroundColors[0])) }

LaunchedEffect(key1 = card.value) {
if (card.value.id == "0") return@LaunchedEffect
name = card.value.name
color = card.value.color
}

fun editCardInDb() {
model.updateCard(Card(id = card.value.id, name = name, color = color))
Toast.makeText(
context,
context.getString(R.string.card_updated_success),
Toast.LENGTH_SHORT
)
.show()
goHome()
}

Scaffold(
topBar = {
TopAppBar(
Expand All @@ -33,10 +72,62 @@ fun EditScreen(model: CardViewModel, id: String, goBack: () -> Unit) {
Surface(
modifier = Modifier
.padding(it)
.fillMaxSize()
.fillMaxSize(),
color = MaterialTheme.colors.background,
) {
Column(modifier = Modifier.fillMaxWidth()) {
Text("Edit card details here - placeholder")
Column(
modifier = Modifier
.fillMaxWidth()
.padding(8.dp),
verticalArrangement = Arrangement.SpaceBetween
) {
Column {
TextField(
value = name,
onValueChange = { newName ->
name = newName
},
label = { Text(stringResource(R.string.name)) },
modifier = Modifier
.fillMaxWidth()
.padding(top = 8.dp),
colors = TextFieldDefaults.textFieldColors(
backgroundColor = MaterialTheme.colors.secondaryVariant
)
)
ColorButton(colors = cardBackGroundColors, onColorSelected = { value ->
color = colorToString(value)
}, selected = stringToColor(color))
}
Row {
Column(
Modifier
.weight(1f)
.padding(end = 4.dp)
) {
SecondaryButton(
text = stringResource(R.string.cancel),
onClick = goBack,
modifier = Modifier.padding(top = 8.dp, bottom = 8.dp)
)
}
Column(
Modifier
.weight(1f)
.padding(start = 4.dp)
) {
PrimaryButton(text = "Ok", onClick = {
if (name == "") {
return@PrimaryButton Toast.makeText(
context,
context.getString(R.string.empty_name_error),
Toast.LENGTH_SHORT
).show()
}
editCardInDb()
}, modifier = Modifier.padding(top = 8.dp, bottom = 8.dp))
}
}
}
}
}
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values-hu/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,5 @@
<string name="delete_confirm_description">Biztosan törölni szeretnéd a kártyát?</string>
<string name="card_deleted_success">Kártya sikeresen törölve!</string>
<string name="delete">Törlés</string>
<string name="card_updated_success">Kártya sikeresen frissítve!</string>
</resources>
1 change: 1 addition & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,5 @@
<string name="delete_confirm_description">Are you sure you want to delete your card?</string>
<string name="card_deleted_success">Card deleted successfully!</string>
<string name="delete">Delete</string>
<string name="card_updated_success">Card updated successfully!</string>
</resources>

0 comments on commit 2e111b5

Please sign in to comment.