Compare commits

..

No commits in common. 'a3a49cc9e3fba99435c19767bc6f02c89a56a899' and '15e3df697837124dc5ef2b554d4ee01eb7e6abe5' have entirely different histories.

  1. 58
      app/src/main/java/ru/asakul/feel/ui/mood/MoodEntryScreen.kt
  2. 3
      app/src/main/java/ru/asakul/feel/ui/mood/MoodEntryViewModel.kt
  3. 2
      app/src/main/res/values-ru/strings.xml

58
app/src/main/java/ru/asakul/feel/ui/mood/MoodEntryScreen.kt

@ -9,25 +9,17 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.text.input.rememberTextFieldState
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Add
import androidx.compose.material.icons.filled.Check
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.InputChip import androidx.compose.material3.InputChip
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedButton import androidx.compose.material3.OutlinedButton
import androidx.compose.material3.Surface import androidx.compose.material3.Surface
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.material3.TextField
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
@ -42,7 +34,6 @@ import ru.asakul.feel.R
import ru.asakul.feel.domain.Emotions import ru.asakul.feel.domain.Emotions
import ru.asakul.feel.domain.Reasons import ru.asakul.feel.domain.Reasons
import ru.asakul.feel.ui.mood.MoodEntryViewModel import ru.asakul.feel.ui.mood.MoodEntryViewModel
import java.io.Console
import kotlin.collections.minus import kotlin.collections.minus
import kotlin.collections.plus import kotlin.collections.plus
@ -83,12 +74,9 @@ fun MoodLevelSelector(
fun TagSelector( fun TagSelector(
tags : Set<String>, tags : Set<String>,
modifier : Modifier = Modifier, modifier : Modifier = Modifier,
onSelectedChange : (Set<String>) -> Unit, onSelectedChange : (Set<String>) -> Unit
onNewTag : (String) -> Unit = { tag -> }
) { ) {
var selectedTags by rememberSaveable { mutableStateOf(setOf<String>()) } var selectedTags by rememberSaveable { mutableStateOf(setOf<String>()) }
var newTagEntry by remember {mutableStateOf(String())}
var newTagEntryEnabled by remember {mutableStateOf(false)}
FlowRow (modifier = modifier) { FlowRow (modifier = modifier) {
for (tag in tags) { for (tag in tags) {
val isSelected = tag in selectedTags val isSelected = tag in selectedTags
@ -104,25 +92,6 @@ fun TagSelector(
modifier = Modifier.padding(2.dp) modifier = Modifier.padding(2.dp)
) )
} }
if (!newTagEntryEnabled) {
IconButton(onClick = { newTagEntryEnabled = true })
{
Icon(imageVector = Icons.Filled.Add, contentDescription = "Add tag")
}
} else {
TextField(value = newTagEntry,
onValueChange = { newTagEntry = it })
IconButton(onClick = {
val newTag = newTagEntry.replaceFirstChar { it.titlecase() }
newTagEntryEnabled = false
selectedTags += newTag
onNewTag(newTag)
newTagEntry = ""
})
{
Icon(imageVector = Icons.Filled.Check, contentDescription = "Done")
}
}
} }
} }
@ -144,27 +113,16 @@ fun NewMoodEntry(
moodLevel = it moodLevel = it
))}) ))})
Text (stringResource(R.string.what_do_you_feel)) Text (stringResource(R.string.what_do_you_feel))
TagSelector(Emotions().allEmotions() + viewModel.extraEmotions, TagSelector(Emotions().allEmotions(), onSelectedChange = {
onSelectedChange = {
viewModel.updateUiState(viewModel.moodEntryState.moodEntry.copy( viewModel.updateUiState(viewModel.moodEntryState.moodEntry.copy(
emotions = it.toList())) emotions = it.toList()
}, ))
onNewTag = { })
viewModel.extraEmotions += it
viewModel.updateUiState(viewModel.moodEntryState.moodEntry.copy(
emotions = viewModel.moodEntryState.moodEntry.emotions + it))
}
)
Text(stringResource(R.string.why_do_you_feel_that_way)) Text(stringResource(R.string.why_do_you_feel_that_way))
TagSelector(Reasons().allReasons() + viewModel.extraReasons, TagSelector(Reasons().allReasons(), onSelectedChange = {
onSelectedChange = {
viewModel.updateUiState(viewModel.moodEntryState.moodEntry.copy(
reasons = it.toList()))
},
onNewTag = {
viewModel.extraReasons += it
viewModel.updateUiState(viewModel.moodEntryState.moodEntry.copy( viewModel.updateUiState(viewModel.moodEntryState.moodEntry.copy(
reasons = viewModel.moodEntryState.moodEntry.reasons + it)) reasons = it.toList()
))
}) })
Button(onClick = { Button(onClick = {
coroutineScope.launch { coroutineScope.launch {

3
app/src/main/java/ru/asakul/feel/ui/mood/MoodEntryViewModel.kt

@ -15,9 +15,6 @@ class MoodEntryViewModel(val moodEntryRepository: MoodEntryRepository) : ViewMod
var moodEntryState by mutableStateOf(MoodEntryUiState(MoodEntryRepr())) var moodEntryState by mutableStateOf(MoodEntryUiState(MoodEntryRepr()))
private set private set
var extraEmotions by mutableStateOf(listOf<String>())
var extraReasons by mutableStateOf(listOf<String>())
fun updateUiState(moodEntryRepr: MoodEntryRepr) { fun updateUiState(moodEntryRepr: MoodEntryRepr) {
moodEntryState = MoodEntryUiState(moodEntry = moodEntryRepr) moodEntryState = MoodEntryUiState(moodEntry = moodEntryRepr)
} }

2
app/src/main/res/values-ru/strings.xml

@ -17,7 +17,7 @@
<string name="sadness">Грусть</string> <string name="sadness">Грусть</string>
<string name="fear">Страх</string> <string name="fear">Страх</string>
<string name="panic">Паника</string> <string name="panic">Паника</string>
<string name="irritation">Раздражение</string> <string name="irritation">Разрдражение</string>
<string name="apathy">Апатия</string> <string name="apathy">Апатия</string>
<string name="hope">Надежда</string> <string name="hope">Надежда</string>
<string name="relief">Облегчение</string> <string name="relief">Облегчение</string>

Loading…
Cancel
Save