Skip to content

Commit

Permalink
Added a new dialog to remove items from the cart and code improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
D4rK7355608 committed May 27, 2024
1 parent 4114807 commit 5199a98
Show file tree
Hide file tree
Showing 27 changed files with 377 additions and 239 deletions.
4 changes: 2 additions & 2 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.archivesName
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id("com.google.firebase.crashlytics")
id("com.google.gms.google-services")
id("com.google.firebase.crashlytics")
id("com.google.android.gms.oss-licenses-plugin")
id("com.google.devtools.ksp")
}
Expand All @@ -15,7 +15,7 @@ android {
applicationId = "com.d4rk.cartcalculator"
minSdk = 26
targetSdk = 34
versionCode = 31
versionCode = 36
versionName = "0.1.0"
archivesName = "${applicationId}-v${versionName}"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import com.d4rk.cartcalculator.data.db.table.ShoppingCartItemsTable
interface ShoppingCartItemsDao {

@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insert(item: ShoppingCartItemsTable)
suspend fun insert(item: ShoppingCartItemsTable): Long

@Update
suspend fun update(item: ShoppingCartItemsTable)
Expand All @@ -25,5 +25,4 @@ interface ShoppingCartItemsDao {

@Query("DELETE FROM ShoppingCartItemsTable WHERE cartId = :cartId")
suspend fun deleteItemsFromCart(cartId: Int)

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,19 @@ package com.d4rk.cartcalculator.data.db.table
import androidx.room.Entity
import androidx.room.PrimaryKey

/**
* Data class representing a shopping cart item in the database.
*
* @property itemId The unique identifier of the item in the shopping cart.
* @property cartId The identifier of the shopping cart the item belongs to.
* @property name The name of the item.
* @property price The price of the item.
* @property quantity The quantity of the item in the shopping cart.
*/
@Entity
data class ShoppingCartItemsTable(
@PrimaryKey(autoGenerate = true) val id: Int = 0,
@PrimaryKey(autoGenerate = true)
var itemId: Int = 0,
var cartId: Int,
val name: String,
val price: String,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Info
import androidx.compose.material.icons.outlined.RemoveShoppingCart
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Icon
Expand All @@ -20,43 +21,46 @@ import com.d4rk.cartcalculator.data.db.table.ShoppingCartTable

@Composable
fun DeleteCartDialog(
cart: ShoppingCartTable?,
onDismiss: () -> Unit,
onDeleteConfirmed: (ShoppingCartTable) -> Unit
cart: ShoppingCartTable?, onDismiss: () -> Unit, onDeleteConfirmed: (ShoppingCartTable) -> Unit
) {
AlertDialog(
onDismissRequest = onDismiss,
title = { Text(stringResource(R.string.delete_cart_title)) },
text = {
Column {
Icon(
imageVector = Icons.Outlined.RemoveShoppingCart,
contentDescription = null,
modifier = Modifier.align(Alignment.CenterHorizontally),
tint = MaterialTheme.colorScheme.error
)
Spacer(modifier = Modifier.height(16.dp))
Text(
text = stringResource(R.string.delete_cart_message),
style = MaterialTheme.typography.titleLarge
)
Spacer(modifier = Modifier.height(8.dp))
Text(stringResource(R.string.delete_cart_warning, cart?.name ?: ""))
}
},
confirmButton = {
TextButton(
onClick = {
onDeleteConfirmed(cart!!)
onDismiss()
}) {
Text(stringResource(android.R.string.ok))
}
},
dismissButton = {
TextButton(onClick = onDismiss) {
Text(stringResource(android.R.string.cancel))
}
AlertDialog(onDismissRequest = onDismiss, title = {
Text(
text = stringResource(R.string.delete_cart_title),
)
}, text = { DeleteCartDialogContent(cart) }, confirmButton = {
TextButton(onClick = {
onDeleteConfirmed(cart!!)
onDismiss()
}) {
Text(stringResource(android.R.string.ok))
}
)
}, dismissButton = {
TextButton(onClick = onDismiss) {
Text(stringResource(android.R.string.cancel))
}
})
}

@Composable
fun DeleteCartDialogContent(cart: ShoppingCartTable?) {
Column {
Icon(
imageVector = Icons.Outlined.RemoveShoppingCart,
contentDescription = null,
modifier = Modifier.align(Alignment.CenterHorizontally),
tint = MaterialTheme.colorScheme.error
)
Spacer(modifier = Modifier.height(24.dp))
Text(
text = stringResource(R.string.delete_cart_message),
style = MaterialTheme.typography.bodyLarge
)
Spacer(modifier = Modifier.height(24.dp))
Icon(imageVector = Icons.Outlined.Info, contentDescription = null)
Spacer(modifier = Modifier.height(12.dp))
Text(
text = stringResource(R.string.delete_cart_warning, cart?.name ?: ""),
style = MaterialTheme.typography.bodyLarge
)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package com.d4rk.cartcalculator.dialogs

import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Info
import androidx.compose.material.icons.outlined.RemoveShoppingCart
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.d4rk.cartcalculator.R
import com.d4rk.cartcalculator.data.db.table.ShoppingCartItemsTable

@Composable
fun DeleteCartItemDialog(
cartItem: ShoppingCartItemsTable,
onDismiss: () -> Unit,
onDeleteConfirmed: (ShoppingCartItemsTable) -> Unit
) {
AlertDialog(
onDismissRequest = onDismiss,
title = {
Text(
text = stringResource(R.string.delete_cart_item_title),
)
},
text = { DeleteCartItemDialogContent(cartItem) },
confirmButton = {
TextButton(onClick = {
onDeleteConfirmed(cartItem)
onDismiss()
}) {
Text(stringResource(android.R.string.ok))
}
},
dismissButton = {
TextButton(onClick = onDismiss) {
Text(stringResource(android.R.string.cancel))
}
}
)
}

@Composable
fun DeleteCartItemDialogContent(cartItem: ShoppingCartItemsTable) {
Column {
Icon(
imageVector = Icons.Outlined.RemoveShoppingCart,
contentDescription = null,
modifier = Modifier.align(Alignment.CenterHorizontally),
tint = MaterialTheme.colorScheme.error
)
Spacer(modifier = Modifier.height(24.dp))
Text(
text = stringResource(R.string.delete_cart_item_message),
style = MaterialTheme.typography.bodyLarge,
)
Spacer(modifier = Modifier.height(24.dp))
Icon(imageVector = Icons.Outlined.Info, contentDescription = null)
Spacer(modifier = Modifier.height(12.dp))
Text(
text = stringResource(R.string.delete_cart_item_warning, cartItem.name),
style = MaterialTheme.typography.bodyLarge
)
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
package com.d4rk.cartcalculator.dialogs

import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Info
import androidx.compose.material.icons.outlined.ShoppingCartCheckout
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Icon
Expand All @@ -16,9 +13,7 @@ import androidx.compose.runtime.MutableState
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.d4rk.cartcalculator.R
import com.d4rk.cartcalculator.data.core.AppCoreManager
import com.d4rk.cartcalculator.data.db.table.ShoppingCartTable
Expand Down Expand Up @@ -72,9 +67,7 @@ fun NewCartDialogContent(
onValueChange = { nameText.value = it } ,
label = { Text(stringResource(id = R.string.cart_name)) } ,
placeholder = { Text(stringResource(R.string.shopping_cart)) })
Spacer(modifier = Modifier.height(24.dp))
Icon(imageVector = Icons.Outlined.Info, contentDescription = null)
Spacer(modifier = Modifier.height(12.dp))

Text(stringResource(R.string.summary_cart_dialog))
}
newCart.value =
Expand Down
Loading

0 comments on commit 5199a98

Please sign in to comment.