Абалдеть, я сделал удаление велосипеда, абалдеть....

This commit is contained in:
Кашин Максим 2023-11-19 22:46:47 +04:00
parent cf8aefb83d
commit 61b1507973
8 changed files with 46 additions and 22 deletions

View File

@ -18,10 +18,11 @@ class MainActivity : ComponentActivity() {
val database = AppDatabase.getInstance(applicationContext) val database = AppDatabase.getInstance(applicationContext)
val bicycleDao = database.bicycleDao() val bicycleDao = database.bicycleDao()
val userDao = database.userDao()
setContent { setContent {
LabWorkTheme { LabWorkTheme {
MainScreen(bicycleDao) MainScreen(bicycleDao,userDao)
} }
} }
} }

View File

@ -5,11 +5,12 @@ import android.annotation.SuppressLint
import androidx.compose.material.Scaffold import androidx.compose.material.Scaffold
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.navigation.compose.rememberNavController import androidx.navigation.compose.rememberNavController
import com.example.labwork.DAO.BicycleDao import com.example.labwork.database.DAO.BicycleDao
import com.example.labwork.database.DAO.UserDao
@SuppressLint("UnusedMaterialScaffoldPaddingParameter") @SuppressLint("UnusedMaterialScaffoldPaddingParameter")
@Composable @Composable
fun MainScreen(bicycleDao: BicycleDao) { fun MainScreen(bicycleDao: BicycleDao, userDao: UserDao) {
val navController = rememberNavController() val navController = rememberNavController()
Scaffold( Scaffold(
bottomBar = { bottomBar = {
@ -17,6 +18,6 @@ fun MainScreen(bicycleDao: BicycleDao) {
} }
) { ) {
SlideGraph(navHostController = navController, bicycleDao = bicycleDao) SlideGraph(navHostController = navController, bicycleDao = bicycleDao, userDao = userDao)
} }
} }

View File

@ -11,7 +11,7 @@ import androidx.compose.runtime.mutableStateListOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.example.labwork.DAO.BicycleDao import com.example.labwork.database.DAO.BicycleDao
import com.example.labwork.models.Bicycle import com.example.labwork.models.Bicycle
import com.example.labwork.pages.ListInfo import com.example.labwork.pages.ListInfo
import com.example.labwork.pages.ListProduct import com.example.labwork.pages.ListProduct
@ -45,7 +45,7 @@ fun ScreenListProduct(bicycleDao: BicycleDao) {
modifier = Modifier.fillMaxHeight().padding(bottom = 65.dp) modifier = Modifier.fillMaxHeight().padding(bottom = 65.dp)
) { ) {
items(bicycles) { item -> items(bicycles) { item ->
ListProduct(item = item) ListProduct(item = item, bicycleDao = bicycleDao)
} }
} }
} }

View File

@ -5,13 +5,15 @@ import androidx.compose.runtime.Composable
import androidx.navigation.NavHostController import androidx.navigation.NavHostController
import androidx.navigation.compose.NavHost import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable import androidx.navigation.compose.composable
import com.example.labwork.DAO.BicycleDao import com.example.labwork.database.DAO.BicycleDao
import com.example.labwork.database.DAO.UserDao
@Composable @Composable
fun SlideGraph( fun SlideGraph(
navHostController: NavHostController, navHostController: NavHostController,
bicycleDao: BicycleDao bicycleDao: BicycleDao,
userDao: UserDao
) { ) {
NavHost(navController = navHostController, startDestination = "Profile"){ NavHost(navController = navHostController, startDestination = "Profile"){
@ -24,5 +26,6 @@ fun SlideGraph(
composable("ListProduct"){ composable("ListProduct"){
ScreenListProduct(bicycleDao) ScreenListProduct(bicycleDao)
} }
} }
} }

View File

@ -5,8 +5,8 @@ import androidx.room.Database
import androidx.room.Room import androidx.room.Room
import androidx.room.RoomDatabase import androidx.room.RoomDatabase
import androidx.sqlite.db.SupportSQLiteDatabase import androidx.sqlite.db.SupportSQLiteDatabase
import com.example.labwork.DAO.BicycleDao import com.example.labwork.database.DAO.BicycleDao
import com.example.labwork.DAO.UserDao import com.example.labwork.database.DAO.UserDao
import com.example.labwork.models.Bicycle import com.example.labwork.models.Bicycle
import com.example.labwork.models.User import com.example.labwork.models.User
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
@ -59,12 +59,21 @@ abstract class AppDatabase : RoomDatabase() {
userDao.insertUser(user2) userDao.insertUser(user2)
// Создание велосипедов // Создание велосипедов
val bicycle1 = Bicycle(1, "Trek", "FX 2", "Black", 1) val bicycle1 = Bicycle(1, "Trek", "Велосипед 1", "Black", 1)
val bicycle2 = Bicycle(2, "Giant", "Escape 3", "Blue", 2) val bicycle2 = Bicycle(2, "Giant", "Велосипед 2", "Blue", 2)
val bicycle3 = Bicycle(3, "Trek", "Велосипед 3", "Black", 1)
val bicycle4 = Bicycle(4, "Giant", "Велосипед 4", "Blue", 2)
val bicycle5 = Bicycle(5, "Trek", "Велосипед 5", "Black", 1)
val bicycle6 = Bicycle(6, "Giant", "Велосипед 6", "Blue", 2)
// Вставка велосипедов в базу данных // Вставка велосипедов в базу данных
bicycleDao.insertBicycle(bicycle1) bicycleDao.insertBicycle(bicycle1)
bicycleDao.insertBicycle(bicycle2) bicycleDao.insertBicycle(bicycle2)
bicycleDao.insertBicycle(bicycle3)
bicycleDao.insertBicycle(bicycle4)
bicycleDao.insertBicycle(bicycle5)
bicycleDao.insertBicycle(bicycle6)
} }
} }

View File

@ -1,4 +1,4 @@
package com.example.labwork.DAO package com.example.labwork.database.DAO
import androidx.room.Dao import androidx.room.Dao
import androidx.room.Delete import androidx.room.Delete

View File

@ -1,4 +1,4 @@
package com.example.labwork.DAO package com.example.labwork.database.DAO
import androidx.room.Dao import androidx.room.Dao
import androidx.room.Delete import androidx.room.Delete
@ -26,4 +26,7 @@ interface UserDao {
@Query("SELECT * FROM users WHERE email = :email") @Query("SELECT * FROM users WHERE email = :email")
suspend fun getUserByEmail(email: String): User suspend fun getUserByEmail(email: String): User
@Query("SELECT * FROM users WHERE email = :email AND password = :password")
suspend fun getUserByEmailAndPassword(email: String, password: String): User?
} }

View File

@ -35,12 +35,17 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import com.example.labwork.R
import com.example.labwork.database.DAO.BicycleDao
import com.example.labwork.database.DAO.UserDao
import com.example.labwork.models.Bicycle import com.example.labwork.models.Bicycle
import com.example.labwork.ui.theme.LightBluePolitech import com.example.labwork.ui.theme.LightBluePolitech
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
@Composable @Composable
fun ListProduct(item: Bicycle) { fun ListProduct(item: Bicycle, bicycleDao: BicycleDao) {
var isFullAbout by remember { mutableStateOf(false) } var isFullAbout by remember { mutableStateOf(false) }
val scale by animateFloatAsState(if (isFullAbout) 1f else 0f) val scale by animateFloatAsState(if (isFullAbout) 1f else 0f)
val textSize by animateDpAsState(if (isFullAbout) 18.dp else 24.dp) val textSize by animateDpAsState(if (isFullAbout) 18.dp else 24.dp)
@ -55,15 +60,15 @@ fun ListProduct(item: Bicycle) {
Box { Box {
Row(verticalAlignment = Alignment.CenterVertically) { Row(verticalAlignment = Alignment.CenterVertically) {
Column { Column {
/*Image( Image(
painter = painterResource(id = item.imageId), painter = painterResource(id = R.drawable.logo_ulstu),
contentDescription = "book", contentDescription = "book",
contentScale = ContentScale.Crop, contentScale = ContentScale.Crop,
modifier = Modifier modifier = Modifier
.padding(10.dp) .padding(10.dp)
.size(128.dp) .size(128.dp)
.shadow(2.dp) .shadow(2.dp)
)*/ )
Button( Button(
colors = ButtonDefaults.buttonColors(backgroundColor = LightBluePolitech), colors = ButtonDefaults.buttonColors(backgroundColor = LightBluePolitech),
modifier = Modifier modifier = Modifier
@ -88,7 +93,6 @@ fun ListProduct(item: Bicycle) {
.padding(start = 9.dp, bottom = 9.dp) .padding(start = 9.dp, bottom = 9.dp)
.size(height = 32.dp, width = 40.dp), .size(height = 32.dp, width = 40.dp),
onClick = { onClick = {
/*TODO*/
}, },
shape = RoundedCornerShape(15.dp) shape = RoundedCornerShape(15.dp)
) { ) {
@ -112,7 +116,10 @@ fun ListProduct(item: Bicycle) {
.padding(start = 9.dp, bottom = 9.dp) .padding(start = 9.dp, bottom = 9.dp)
.size(height = 32.dp, width = 40.dp), .size(height = 32.dp, width = 40.dp),
onClick = { onClick = {
/*TODO*/ // Удаление выбранного велосипеда по нажатию на кнопку
GlobalScope.launch {
bicycleDao.deleteBicycle(item)
}
}, },
shape = RoundedCornerShape(15.dp) shape = RoundedCornerShape(15.dp)
) { ) {
@ -144,7 +151,7 @@ fun ListProduct(item: Bicycle) {
) { ) {
Text( Text(
color = Color.Black, color = Color.Black,
text = item.model, text = item.brand,
maxLines = 10, maxLines = 10,
fontSize = 14.sp, fontSize = 14.sp,
textAlign = TextAlign.Center, textAlign = TextAlign.Center,