From 2ab6e8bb79cc21d515cbf28c31bfe68f9f4b2fcd Mon Sep 17 00:00:00 2001 From: asa-012 Date: Sat, 24 Dec 2022 03:02:02 +0900 Subject: [PATCH 1/3] =?UTF-8?q?=E3=82=B5=E6=B4=BB=E3=81=A7=E5=89=8A?= =?UTF-8?q?=E9=99=A4=E3=81=A7=E3=81=8D=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= =?UTF-8?q?=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../theuhooi/totonoi/core/ui/TotonoiApp.kt | 5 ++--- .../sakatsu_input/SakatsuInputScreen.kt | 6 ++++-- .../sakatsu_input/SakatsuInputSections.kt | 13 ++++++++++++- .../sakatsu_input/SakatsuInputViewModel.kt | 19 ++++++++++++++----- app/src/main/res/values/strings.xml | 1 + 5 files changed, 33 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/theuhooi/totonoi/core/ui/TotonoiApp.kt b/app/src/main/java/com/theuhooi/totonoi/core/ui/TotonoiApp.kt index 7e7b745..d335cf7 100644 --- a/app/src/main/java/com/theuhooi/totonoi/core/ui/TotonoiApp.kt +++ b/app/src/main/java/com/theuhooi/totonoi/core/ui/TotonoiApp.kt @@ -1,7 +1,5 @@ package com.theuhooi.totonoi.core.ui -import android.os.Handler -import android.os.Looper import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.remember @@ -51,7 +49,8 @@ fun TotonoiApp() { onCoolBathTimeChange = viewModel::onCoolBathTimeChange, onRelaxationTimeChange = viewModel::onRelaxationTimeChange, onDescriptionChange = viewModel::onDescriptionChange, - onAddSaunaSetClick = viewModel::onAddSaunaSetClick + onAddSaunaSetClick = viewModel::onAddSaunaSetClick, + onDeleteSaunaSetClick = viewModel::onDeleteSaunaSetClick ) } } diff --git a/app/src/main/java/com/theuhooi/totonoi/feature/sakatsu/sakatsu_input/SakatsuInputScreen.kt b/app/src/main/java/com/theuhooi/totonoi/feature/sakatsu/sakatsu_input/SakatsuInputScreen.kt index 71605e9..9b8e0c5 100644 --- a/app/src/main/java/com/theuhooi/totonoi/feature/sakatsu/sakatsu_input/SakatsuInputScreen.kt +++ b/app/src/main/java/com/theuhooi/totonoi/feature/sakatsu/sakatsu_input/SakatsuInputScreen.kt @@ -31,7 +31,8 @@ fun SakatsuInputScreen( onCoolBathTimeChange: (index: Int, coolBathTime: String) -> Unit, onRelaxationTimeChange: (index: Int, relaxationTime: String) -> Unit, onDescriptionChange: (String) -> Unit, - onAddSaunaSetClick: () -> Unit + onAddSaunaSetClick: () -> Unit, + onDeleteSaunaSetClick: (setIndex: Int) -> Unit, ) { LogCompositions(tag = "SakatsuInputScreen") if (uiState.isCompleteSave) { @@ -96,7 +97,8 @@ fun SakatsuInputScreen( onCoolBathTimeChange = onCoolBathTimeChange, onRelaxationTimeChange = onRelaxationTimeChange, onDescriptionChange = onDescriptionChange, - onAddSaunaSetClick = onAddSaunaSetClick + onAddSaunaSetClick = onAddSaunaSetClick, + onDeleteSaunaSetClick = onDeleteSaunaSetClick ) } } diff --git a/app/src/main/java/com/theuhooi/totonoi/feature/sakatsu/sakatsu_input/SakatsuInputSections.kt b/app/src/main/java/com/theuhooi/totonoi/feature/sakatsu/sakatsu_input/SakatsuInputSections.kt index ca029b1..68d724a 100644 --- a/app/src/main/java/com/theuhooi/totonoi/feature/sakatsu/sakatsu_input/SakatsuInputSections.kt +++ b/app/src/main/java/com/theuhooi/totonoi/feature/sakatsu/sakatsu_input/SakatsuInputSections.kt @@ -10,7 +10,6 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.* import androidx.compose.runtime.Composable -import androidx.compose.runtime.Stable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip @@ -19,6 +18,7 @@ import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp import com.google.android.material.datepicker.MaterialDatePicker import com.theuhooi.totonoi.R import com.theuhooi.totonoi.core.ui.components.LogCompositions @@ -36,6 +36,7 @@ fun SakatsuInputSections( onRelaxationTimeChange: (saunaSetIndex: Int, relaxationTime: String) -> Unit, onDescriptionChange: (String) -> Unit, onAddSaunaSetClick: () -> Unit, + onDeleteSaunaSetClick: (setIndex: Int) -> Unit, modifier: Modifier = Modifier ) { LogCompositions(tag = "SakatsuInputSections") @@ -80,6 +81,16 @@ fun SakatsuInputSections( onCoolBathTimeChange = onCoolBathTimeChange, onRelaxationTimeChange = onRelaxationTimeChange ) + if (it != 0) { + Text( + modifier = Modifier + .padding(top = 4.dp) + .clickable(onClick = { onDeleteSaunaSetClick(it) }), + text = stringResource(id = R.string.sakatsu_input_delete_sauna_set), + color = MaterialTheme.colorScheme.error, + fontSize = 12.sp + ) + } } item { Text( diff --git a/app/src/main/java/com/theuhooi/totonoi/feature/sakatsu/sakatsu_input/SakatsuInputViewModel.kt b/app/src/main/java/com/theuhooi/totonoi/feature/sakatsu/sakatsu_input/SakatsuInputViewModel.kt index ac40d07..6d46037 100644 --- a/app/src/main/java/com/theuhooi/totonoi/feature/sakatsu/sakatsu_input/SakatsuInputViewModel.kt +++ b/app/src/main/java/com/theuhooi/totonoi/feature/sakatsu/sakatsu_input/SakatsuInputViewModel.kt @@ -5,17 +5,16 @@ import androidx.lifecycle.viewModelScope import com.theuhooi.totonoi.data.entity.SaunaSetDto import com.theuhooi.totonoi.data.usecase.RegisterSakatsuUseCase import dagger.hilt.android.lifecycle.HiltViewModel -import kotlinx.coroutines.delay +import java.time.Instant +import java.time.LocalDateTime +import java.time.ZoneId +import javax.inject.Inject import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import timber.log.Timber -import java.time.Instant -import java.time.LocalDateTime -import java.time.ZoneId -import javax.inject.Inject @HiltViewModel class SakatsuInputViewModel @Inject constructor( @@ -96,6 +95,16 @@ class SakatsuInputViewModel @Inject constructor( } } + fun onDeleteSaunaSetClick(setIndex: Int) { + _uiState.update { currentState -> + val resultSaunaSetUiStateList = currentState.saunaSetUiStateList.toMutableList() + resultSaunaSetUiStateList.removeAt(setIndex) + currentState.copy( + saunaSetUiStateList = resultSaunaSetUiStateList + ) + } + } + fun onSaveButtonClick() { // facilityNameが空の場合はsave buttonが押せないがfail safeとして val facilityName = uiState.value.facilityName ?: return diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ae1f4ff..d8713ed 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -30,6 +30,7 @@ 水風呂💧 休憩🍃 新しいセットを追加 + セットを削除 コメント From 66b33eb88d2d7711b56b559dab35fc1403640fbf Mon Sep 17 00:00:00 2001 From: asa-012 Date: Sat, 24 Dec 2022 03:14:47 +0900 Subject: [PATCH 2/3] =?UTF-8?q?=E5=89=8A=E9=99=A4=E6=99=82=E3=81=AE?= =?UTF-8?q?=E3=82=A2=E3=83=8B=E3=83=A1=E3=83=BC=E3=82=B7=E3=83=A7=E3=83=B3?= =?UTF-8?q?=E3=82=92=E8=A1=A8=E7=A4=BA=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sakatsu_input/SakatsuInputSections.kt | 43 +++++++++++-------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/com/theuhooi/totonoi/feature/sakatsu/sakatsu_input/SakatsuInputSections.kt b/app/src/main/java/com/theuhooi/totonoi/feature/sakatsu/sakatsu_input/SakatsuInputSections.kt index 68d724a..37e1564 100644 --- a/app/src/main/java/com/theuhooi/totonoi/feature/sakatsu/sakatsu_input/SakatsuInputSections.kt +++ b/app/src/main/java/com/theuhooi/totonoi/feature/sakatsu/sakatsu_input/SakatsuInputSections.kt @@ -3,6 +3,7 @@ package com.theuhooi.totonoi.feature.sakatsu.sakatsu_input import androidx.appcompat.app.AppCompatActivity +import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* @@ -23,6 +24,7 @@ import com.google.android.material.datepicker.MaterialDatePicker import com.theuhooi.totonoi.R import com.theuhooi.totonoi.core.ui.components.LogCompositions +@OptIn(ExperimentalFoundationApi::class) @Composable fun SakatsuInputSections( facilityName: String?, @@ -69,27 +71,30 @@ fun SakatsuInputSections( ) } items(saunaSetList.size) { - SaunaSetSection( - modifier = Modifier - .fillMaxWidth() - .padding(top = 16.dp), - index = it, - saunaTime = saunaSetList[it].saunaTime, - coolBathTime = saunaSetList[it].coolBathTime, - relaxationTime = saunaSetList[it].relaxationTime, - onSaunaTimeChange = onSaunaTimeChange, - onCoolBathTimeChange = onCoolBathTimeChange, - onRelaxationTimeChange = onRelaxationTimeChange - ) - if (it != 0) { - Text( + Column(modifier = Modifier.animateItemPlacement()) { + // Copose... + SaunaSetSection( modifier = Modifier - .padding(top = 4.dp) - .clickable(onClick = { onDeleteSaunaSetClick(it) }), - text = stringResource(id = R.string.sakatsu_input_delete_sauna_set), - color = MaterialTheme.colorScheme.error, - fontSize = 12.sp + .fillMaxWidth() + .padding(top = 16.dp), + index = it, + saunaTime = saunaSetList[it].saunaTime, + coolBathTime = saunaSetList[it].coolBathTime, + relaxationTime = saunaSetList[it].relaxationTime, + onSaunaTimeChange = onSaunaTimeChange, + onCoolBathTimeChange = onCoolBathTimeChange, + onRelaxationTimeChange = onRelaxationTimeChange ) + if (it != 0) { + Text( + modifier = Modifier + .padding(top = 4.dp) + .clickable(onClick = { onDeleteSaunaSetClick(it) }), + text = stringResource(id = R.string.sakatsu_input_delete_sauna_set), + color = MaterialTheme.colorScheme.error, + fontSize = 12.sp + ) + } } } item { From 693000ce18246a156ebc5f427b166c87fb8412ce Mon Sep 17 00:00:00 2001 From: asa-012 Date: Sat, 24 Dec 2022 03:16:17 +0900 Subject: [PATCH 3/3] refactor --- .../feature/sakatsu/sakatsu_input/SakatsuInputSections.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/theuhooi/totonoi/feature/sakatsu/sakatsu_input/SakatsuInputSections.kt b/app/src/main/java/com/theuhooi/totonoi/feature/sakatsu/sakatsu_input/SakatsuInputSections.kt index 37e1564..d160a54 100644 --- a/app/src/main/java/com/theuhooi/totonoi/feature/sakatsu/sakatsu_input/SakatsuInputSections.kt +++ b/app/src/main/java/com/theuhooi/totonoi/feature/sakatsu/sakatsu_input/SakatsuInputSections.kt @@ -72,7 +72,6 @@ fun SakatsuInputSections( } items(saunaSetList.size) { Column(modifier = Modifier.animateItemPlacement()) { - // Copose... SaunaSetSection( modifier = Modifier .fillMaxWidth() @@ -118,6 +117,7 @@ fun SakatsuInputSections( } } +@OptIn(ExperimentalMaterial3Api::class) @Composable private fun FacilityNameSection( facilityName: String?,