Compare commits

..

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

  1. 64
      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

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

@ -9,25 +9,17 @@ import androidx.compose.foundation.layout.Row @@ -9,25 +9,17 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.text.input.rememberTextFieldState
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.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.InputChip
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedButton
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.material3.TextField
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
@ -42,7 +34,6 @@ import ru.asakul.feel.R @@ -42,7 +34,6 @@ import ru.asakul.feel.R
import ru.asakul.feel.domain.Emotions
import ru.asakul.feel.domain.Reasons
import ru.asakul.feel.ui.mood.MoodEntryViewModel
import java.io.Console
import kotlin.collections.minus
import kotlin.collections.plus
@ -83,12 +74,9 @@ fun MoodLevelSelector( @@ -83,12 +74,9 @@ fun MoodLevelSelector(
fun TagSelector(
tags : Set<String>,
modifier : Modifier = Modifier,
onSelectedChange : (Set<String>) -> Unit,
onNewTag : (String) -> Unit = { tag -> }
onSelectedChange : (Set<String>) -> Unit
) {
var selectedTags by rememberSaveable { mutableStateOf(setOf<String>()) }
var newTagEntry by remember {mutableStateOf(String())}
var newTagEntryEnabled by remember {mutableStateOf(false)}
FlowRow (modifier = modifier) {
for (tag in tags) {
val isSelected = tag in selectedTags
@ -104,25 +92,6 @@ fun TagSelector( @@ -104,25 +92,6 @@ fun TagSelector(
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,28 +113,17 @@ fun NewMoodEntry( @@ -144,28 +113,17 @@ fun NewMoodEntry(
moodLevel = it
))})
Text (stringResource(R.string.what_do_you_feel))
TagSelector(Emotions().allEmotions() + viewModel.extraEmotions,
onSelectedChange = {
viewModel.updateUiState(viewModel.moodEntryState.moodEntry.copy(
emotions = it.toList()))
},
onNewTag = {
viewModel.extraEmotions += it
viewModel.updateUiState(viewModel.moodEntryState.moodEntry.copy(
emotions = viewModel.moodEntryState.moodEntry.emotions + it))
}
)
TagSelector(Emotions().allEmotions(), onSelectedChange = {
viewModel.updateUiState(viewModel.moodEntryState.moodEntry.copy(
emotions = it.toList()
))
})
Text(stringResource(R.string.why_do_you_feel_that_way))
TagSelector(Reasons().allReasons() + viewModel.extraReasons,
onSelectedChange = {
viewModel.updateUiState(viewModel.moodEntryState.moodEntry.copy(
reasons = it.toList()))
},
onNewTag = {
viewModel.extraReasons += it
viewModel.updateUiState(viewModel.moodEntryState.moodEntry.copy(
reasons = viewModel.moodEntryState.moodEntry.reasons + it))
})
TagSelector(Reasons().allReasons(), onSelectedChange = {
viewModel.updateUiState(viewModel.moodEntryState.moodEntry.copy(
reasons = it.toList()
))
})
Button(onClick = {
coroutineScope.launch {
viewModel.saveMoodEntry()

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

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

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

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

Loading…
Cancel
Save