diff --git a/compose/.gradle/8.0/executionHistory/executionHistory.bin b/compose/.gradle/8.0/executionHistory/executionHistory.bin
index 1ef4a53..de8faa7 100644
Binary files a/compose/.gradle/8.0/executionHistory/executionHistory.bin and b/compose/.gradle/8.0/executionHistory/executionHistory.bin differ
diff --git a/compose/.gradle/8.0/executionHistory/executionHistory.lock b/compose/.gradle/8.0/executionHistory/executionHistory.lock
index da9e058..9c2f6e5 100644
Binary files a/compose/.gradle/8.0/executionHistory/executionHistory.lock and b/compose/.gradle/8.0/executionHistory/executionHistory.lock differ
diff --git a/compose/.gradle/8.0/fileHashes/fileHashes.bin b/compose/.gradle/8.0/fileHashes/fileHashes.bin
index b4e0d6f..23f9229 100644
Binary files a/compose/.gradle/8.0/fileHashes/fileHashes.bin and b/compose/.gradle/8.0/fileHashes/fileHashes.bin differ
diff --git a/compose/.gradle/8.0/fileHashes/fileHashes.lock b/compose/.gradle/8.0/fileHashes/fileHashes.lock
index 01d26f4..4421d37 100644
Binary files a/compose/.gradle/8.0/fileHashes/fileHashes.lock and b/compose/.gradle/8.0/fileHashes/fileHashes.lock differ
diff --git a/compose/.gradle/8.0/fileHashes/resourceHashesCache.bin b/compose/.gradle/8.0/fileHashes/resourceHashesCache.bin
index 892b217..0eae824 100644
Binary files a/compose/.gradle/8.0/fileHashes/resourceHashesCache.bin and b/compose/.gradle/8.0/fileHashes/resourceHashesCache.bin differ
diff --git a/compose/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/compose/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index dc72210..fa7128b 100644
Binary files a/compose/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/compose/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/compose/.gradle/buildOutputCleanup/outputFiles.bin b/compose/.gradle/buildOutputCleanup/outputFiles.bin
index 2417ce0..fe35331 100644
Binary files a/compose/.gradle/buildOutputCleanup/outputFiles.bin and b/compose/.gradle/buildOutputCleanup/outputFiles.bin differ
diff --git a/compose/.gradle/file-system.probe b/compose/.gradle/file-system.probe
index 9e25017..14f5211 100644
Binary files a/compose/.gradle/file-system.probe and b/compose/.gradle/file-system.probe differ
diff --git a/compose/app/src/main/java/ru/ulstu/is/pmu/tank/composeui/edit/TankEditViewModel.kt b/compose/app/src/main/java/ru/ulstu/is/pmu/tank/composeui/edit/TankEditViewModel.kt
index 4eacae7..72ea040 100644
--- a/compose/app/src/main/java/ru/ulstu/is/pmu/tank/composeui/edit/TankEditViewModel.kt
+++ b/compose/app/src/main/java/ru/ulstu/is/pmu/tank/composeui/edit/TankEditViewModel.kt
@@ -40,6 +40,10 @@ class TankEditViewModel(
}
}
+ fun getTankId(): Long{
+ return tankUid;
+ }
+
fun updateUiState(tankDetails: TankDetails) {
tankUiState = TankUiState(
tankDetails = tankDetails,
@@ -58,6 +62,14 @@ class TankEditViewModel(
}
}
+ suspend fun deleteTank() {
+ if (validateInput()) {
+ if (tankUid > 0) {
+ tankRepository.deleteTank(tankUiState.tankDetails.toTank(tankUid))
+ }
+ }
+ }
+
private fun validateInput(uiState: TankDetails = tankUiState.tankDetails): Boolean {
return with(uiState) {
name.isNotBlank()
diff --git a/compose/app/src/main/java/ru/ulstu/is/pmu/tank/database/AppDatabase.kt b/compose/app/src/main/java/ru/ulstu/is/pmu/tank/database/AppDatabase.kt
index 9a7cb94..953fe39 100644
--- a/compose/app/src/main/java/ru/ulstu/is/pmu/tank/database/AppDatabase.kt
+++ b/compose/app/src/main/java/ru/ulstu/is/pmu/tank/database/AppDatabase.kt
@@ -34,7 +34,7 @@ abstract class AppDatabase : RoomDatabase() {
abstract fun tankImageDao() : TankImageDao
companion object {
- private const val DB_NAME: String = "18-db"
+ private const val DB_NAME: String = "19-db"
@Volatile
private var INSTANCE: AppDatabase? = null
diff --git a/compose/app/src/main/java/ru/ulstu/is/pmu/tanks/composeui/Constructor.kt b/compose/app/src/main/java/ru/ulstu/is/pmu/tanks/composeui/Constructor.kt
index 5ae015f..61e1346 100644
--- a/compose/app/src/main/java/ru/ulstu/is/pmu/tanks/composeui/Constructor.kt
+++ b/compose/app/src/main/java/ru/ulstu/is/pmu/tanks/composeui/Constructor.kt
@@ -42,6 +42,7 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.lifecycle.viewmodel.compose.viewModel
import androidx.navigation.NavController
+import com.application.ui.getEmptyBitmap
import com.application.ui.miniatureBound
import com.application.ui.resize
import com.application.ui.tankImageBound
@@ -75,11 +76,14 @@ fun Constructor(
nationDropDownViewModel: NationDropDownViewModel = viewModel(factory = AppViewModelProvider.Factory)
){
val coroutineScope = rememberCoroutineScope()
+
+ val tankId = tankEditViewModel.getTankId()
levelDropDownViewModel.setCurrentLevel(tankEditViewModel.tankUiState.tankDetails.levelId ?: 1)
nationDropDownViewModel.setCurrentNation(tankEditViewModel.tankUiState.tankDetails.nationId ?: 1)
Constructor(
+ tankId = tankId,
tankViewModel = tankEditViewModel,
tankUiState = tankEditViewModel.tankUiState,
levelUiState = levelDropDownViewModel.levelUiState,
@@ -88,12 +92,18 @@ fun Constructor(
nationUiState = nationDropDownViewModel.nationUiState,
nationsListUiState = nationDropDownViewModel.nationsListUiState,
onNationUpdate = nationDropDownViewModel::updateUiState,
- onClick = {
+ onClickSave = {
coroutineScope.launch {
tankEditViewModel.saveTank()
navController.popBackStack()
}
},
+ onClickDelete = {
+ coroutineScope.launch {
+ tankEditViewModel.deleteTank()
+ navController.popBackStack()
+ }
+ },
onUpdate = tankEditViewModel::updateUiState
)
}
@@ -200,6 +210,7 @@ private fun NationDropDown(
@OptIn(ExperimentalMaterial3Api::class)
@Composable
private fun Constructor(
+ tankId: Long,
tankViewModel: TankEditViewModel,
tankUiState: TankUiState,
levelUiState: LevelUiState,
@@ -208,7 +219,8 @@ private fun Constructor(
nationUiState: NationUiState,
nationsListUiState: NationsListUiState,
onNationUpdate: (Nation) -> Unit,
- onClick: () -> Unit,
+ onClickSave: () -> Unit,
+ onClickDelete: () -> Unit,
onUpdate: (TankDetails) -> Unit
) {
fun handleImageUpload(bitmap: Bitmap) {
@@ -344,7 +356,7 @@ private fun Constructor(
}
Spacer(Modifier.height(10.dp))
Row(
- horizontalArrangement = Arrangement.Center,
+ horizontalArrangement = Arrangement.SpaceAround,
modifier = Modifier
.fillMaxWidth()
.padding(10.dp, 10.dp)
@@ -358,11 +370,27 @@ private fun Constructor(
contentColor = Color.Black
),
enabled = tankUiState.isEntryValid,
- onClick = onClick
+ onClick = onClickSave
) {
//"${student.firstName} ${student.lastName}"
Text(text = stringResource(id = R.string.save_account_button), fontSize = 20.sp, fontWeight = FontWeight.Bold)
}
+ if(tankId != 0L){
+ Button(
+ modifier = Modifier
+ .width(200.dp)
+ .height(50.dp),
+ colors = ButtonDefaults.buttonColors(
+ containerColor = CustomOrange,
+ contentColor = Color.Black
+ ),
+ enabled = tankUiState.isEntryValid,
+ onClick = onClickDelete
+ ) {
+ //"${student.firstName} ${student.lastName}"
+ Text(text = stringResource(id = R.string.delete_account_button), fontSize = 20.sp, fontWeight = FontWeight.Bold)
+ }
+ }
}
}
}
@@ -467,7 +495,7 @@ private fun Constructor(
containerColor = CustomOrange,
contentColor = Color.Black
),
- onClick = onClick
+ onClick = onClickSave
) {
//"${student.firstName} ${student.lastName}"
Text(text = stringResource(id = R.string.create_account_button), fontSize = 20.sp, fontWeight = FontWeight.Bold)
@@ -488,6 +516,7 @@ fun ConstructorEditPreview() {
color = CustomDark
) {
Constructor(
+ tankId = 0L,
tankViewModel = viewModel(factory = AppViewModelProvider.Factory),
tankUiState = Tank.getTank().toUiState(true),
levelUiState = Level.DEMO_LEVEL.toUiState(),
@@ -496,7 +525,8 @@ fun ConstructorEditPreview() {
nationUiState = Nation.DEMO_NATION.toUiState(),
nationsListUiState = NationsListUiState(listOf()),
onNationUpdate = { },
- onClick = { },
+ onClickSave = { },
+ onClickDelete = { },
onUpdate = { },
)
}
diff --git a/compose/app/src/main/res/values/strings.xml b/compose/app/src/main/res/values/strings.xml
index de52e68..b5cc118 100644
--- a/compose/app/src/main/res/values/strings.xml
+++ b/compose/app/src/main/res/values/strings.xml
@@ -13,6 +13,7 @@
Войти
Создать
Сохранить
+ Удалить
Регистрация
Имя
Фамилия