diff --git a/app/build.gradle.kts b/app/build.gradle.kts index f734b81..223072e 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,6 +1,7 @@ plugins { id("com.android.application") id("org.jetbrains.kotlin.android") +// id("kotlin-kapt") } android { @@ -71,6 +72,13 @@ dependencies { implementation ("androidx.fragment:fragment-ktx:1.6.1") implementation ("io.coil-kt:coil-compose:1.4.0") implementation ("com.google.code.gson:gson:2.8.8") - implementation("androidx.navigation:navigation-compose:2.7.4") + + //ROOM + val room_version = "2.5.2" + implementation("androidx.room:room-runtime:$room_version") + annotationProcessor("androidx.room:room-compiler:$room_version") +// kapt("androidx.room:room-compiler:$room_version") + implementation("androidx.room:room-ktx:$room_version") + implementation("androidx.room:room-paging:$room_version") } \ No newline at end of file diff --git a/app/src/main/java/com/example/android_programming/MainActivity.kt b/app/src/main/java/com/example/android_programming/MainActivity.kt index a5e10a3..4a36d50 100644 --- a/app/src/main/java/com/example/android_programming/MainActivity.kt +++ b/app/src/main/java/com/example/android_programming/MainActivity.kt @@ -7,8 +7,8 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import com.example.android_programming.Header.Header -import com.example.android_programming.Navigation.Navigate +import com.example.android_programming.composeui.Header.Header +import com.example.android_programming.composeui.Navigation.Navigate class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { diff --git a/app/src/main/java/com/example/android_programming/Screens/AdminPanel/AddPanel.kt b/app/src/main/java/com/example/android_programming/Screens/AdminPanel/AddPanel.kt deleted file mode 100644 index eabed79..0000000 --- a/app/src/main/java/com/example/android_programming/Screens/AdminPanel/AddPanel.kt +++ /dev/null @@ -1,187 +0,0 @@ -package com.example.android_programming.Screens.AdminPanel - -import androidx.compose.foundation.background -import androidx.compose.foundation.border -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.foundation.text.KeyboardActions -import androidx.compose.foundation.text.KeyboardOptions -import androidx.compose.material.Button -import androidx.compose.material.Text -import androidx.compose.material.TextField -import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.text.TextStyle -import androidx.compose.ui.text.input.ImeAction -import androidx.compose.ui.text.input.KeyboardType -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp - -@Composable -@Preview -fun AddPanel(){ - var brand by remember { mutableStateOf("") } - var model by remember { mutableStateOf("") } - var description by remember { mutableStateOf("") } - var price by remember { mutableStateOf("") } - - Column( - modifier = Modifier - .fillMaxSize() - .background(Color.White) - .padding(16.dp) - ){ - Box( - modifier = Modifier - .fillMaxWidth() - .height(150.dp) - .background(Color.Gray) - ) { - } - Button( - onClick = { - }, - modifier = Modifier - .fillMaxWidth() - .clip(RoundedCornerShape(20.dp)) - .padding(16.dp) - ) { - Text("Add image") - } - - TextField( - value = brand, - onValueChange = { brand = it }, - modifier = Modifier - .fillMaxWidth() - .height(50.dp) - .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)) - .padding(0.dp), - singleLine = true, - keyboardOptions = KeyboardOptions( - keyboardType = KeyboardType.Text, - imeAction = ImeAction.Next - ), - keyboardActions = KeyboardActions( - onNext = { - - } - ), - placeholder = { - Text( - text = "Brand", - style = TextStyle(fontSize = 12.sp) - ) - } - ) - - Spacer(modifier = Modifier.height(16.dp)) - - TextField( - value = model, - onValueChange = { model = it }, - modifier = Modifier - .fillMaxWidth() - .height(50.dp) - .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)) - .padding(0.dp), - singleLine = true, - keyboardOptions = KeyboardOptions( - keyboardType = KeyboardType.Text, - imeAction = ImeAction.Next - ), - keyboardActions = KeyboardActions( - onNext = { - - } - ), - placeholder = { - Text( - text = "Model", - style = TextStyle(fontSize = 12.sp) - ) - } - ) - - Spacer(modifier = Modifier.height(16.dp)) - - TextField( - value = description, - onValueChange = { description = it }, - modifier = Modifier - .fillMaxWidth() - .height(100.dp) - .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)) - .padding(0.dp), - keyboardOptions = KeyboardOptions( - keyboardType = KeyboardType.Text, - imeAction = ImeAction.Next - ), - keyboardActions = KeyboardActions( - onNext = { - - } - ), - placeholder = { - Text( - text = "Description", - style = TextStyle(fontSize = 12.sp) - ) - } - ) - - Spacer(modifier = Modifier.height(16.dp)) - - TextField( - value = price, - onValueChange = { price = it }, - modifier = Modifier - .fillMaxWidth() - .height(50.dp) - .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)) - .padding(0.dp), - singleLine = true, - keyboardOptions = KeyboardOptions( - keyboardType = KeyboardType.Text, - imeAction = ImeAction.Next - ), - keyboardActions = KeyboardActions( - onNext = { - - } - ), - placeholder = { - Text( - text = "Price", - style = TextStyle(fontSize = 12.sp) - ) - } - ) - - Button( - onClick = { - - }, - modifier = Modifier - .fillMaxWidth() - .clip(RoundedCornerShape(20.dp)) - .padding(16.dp) - ) { - Text("Add sneaker") - } - } - -} diff --git a/app/src/main/java/com/example/android_programming/Screens/AdminPanel/ChangeSneaker.kt b/app/src/main/java/com/example/android_programming/Screens/AdminPanel/ChangeSneaker.kt deleted file mode 100644 index 0fc3053..0000000 --- a/app/src/main/java/com/example/android_programming/Screens/AdminPanel/ChangeSneaker.kt +++ /dev/null @@ -1,176 +0,0 @@ -package com.example.android_programming.Screens.AdminPanel - -import androidx.compose.foundation.Image -import androidx.compose.foundation.background -import androidx.compose.foundation.border -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.foundation.text.KeyboardActions -import androidx.compose.foundation.text.KeyboardOptions -import androidx.compose.material.Button -import androidx.compose.material.Text -import androidx.compose.material.TextField -import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.layout.ContentScale -import androidx.compose.ui.res.painterResource -import androidx.compose.ui.text.TextStyle -import androidx.compose.ui.text.input.ImeAction -import androidx.compose.ui.text.input.KeyboardType -import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp -import com.example.android_programming.SneakerItem -@Composable -fun ChangeSneaker(sneaker: SneakerItem) { - var brand by remember { mutableStateOf("") } - var model by remember { mutableStateOf("") } - var description by remember { mutableStateOf("") } - var price by remember { mutableStateOf("") } - - Column( - modifier = Modifier - .fillMaxSize() - .background(Color.White) - .padding(16.dp) - ){ - Image( - painter = painterResource(id = sneaker.imageId), - contentDescription = "image", - contentScale = ContentScale.FillWidth, - modifier = Modifier - .fillMaxWidth() - .height(200.dp) - ) - Button( - onClick = { - }, - modifier = Modifier - .fillMaxWidth() - .clip(RoundedCornerShape(20.dp)) - .padding(16.dp) - ) { - Text("Change image") - } - - TextField( - value = sneaker.name.toString(), - onValueChange = { brand = it }, - modifier = Modifier - .fillMaxWidth() - .height(50.dp) - .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)) - .padding(0.dp), - singleLine = true, - keyboardOptions = KeyboardOptions( - keyboardType = KeyboardType.Text, - imeAction = ImeAction.Next - ), - keyboardActions = KeyboardActions( - onNext = { - - } - ) - ) - - Spacer(modifier = Modifier.height(16.dp)) - - TextField( - value = model, - onValueChange = { model = it }, - modifier = Modifier - .fillMaxWidth() - .height(50.dp) - .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)) - .padding(0.dp), - singleLine = true, - keyboardOptions = KeyboardOptions( - keyboardType = KeyboardType.Text, - imeAction = ImeAction.Next - ), - keyboardActions = KeyboardActions( - onNext = { - - } - ), - placeholder = { - Text( - text = "Model", - style = TextStyle(fontSize = 12.sp) - ) - } - ) - - Spacer(modifier = Modifier.height(16.dp)) - - TextField( - value = description, - onValueChange = { description = it }, - modifier = Modifier - .fillMaxWidth() - .height(100.dp) - .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)) - .padding(0.dp), - keyboardOptions = KeyboardOptions( - keyboardType = KeyboardType.Text, - imeAction = ImeAction.Next - ), - keyboardActions = KeyboardActions( - onNext = { - - } - ), - placeholder = { - Text( - text = "Description", - style = TextStyle(fontSize = 12.sp) - ) - } - ) - - Spacer(modifier = Modifier.height(16.dp)) - - TextField( - value = sneaker.price.toString(), - onValueChange = { price = it }, - modifier = Modifier - .fillMaxWidth() - .height(50.dp) - .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)) - .padding(0.dp), - singleLine = true, - keyboardOptions = KeyboardOptions( - keyboardType = KeyboardType.Text, - imeAction = ImeAction.Next - ), - keyboardActions = KeyboardActions( - onNext = { - - } - ) - ) - - Button( - onClick = { - - }, - modifier = Modifier - .fillMaxWidth() - .clip(RoundedCornerShape(20.dp)) - .padding(16.dp) - ) { - Text("Save") - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/example/android_programming/Screens/HomeScreen/AboutSneaker.kt b/app/src/main/java/com/example/android_programming/Screens/HomeScreen/AboutSneaker.kt deleted file mode 100644 index c9b57bc..0000000 --- a/app/src/main/java/com/example/android_programming/Screens/HomeScreen/AboutSneaker.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.example.android_programming.Screens.HomeScreen - -import androidx.compose.foundation.Image -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.padding -import androidx.compose.material.Text -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.layout.ContentScale -import androidx.compose.ui.res.painterResource -import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp -import androidx.navigation.NavBackStackEntry -import androidx.navigation.NavController -import com.example.android_programming.SneakerItem - -@Composable -fun AboutSneaker(sneaker: SneakerItem) { - Column( - modifier = Modifier.fillMaxSize() - ) { - Image( - painter = painterResource(id = sneaker.imageId), - contentDescription = "image", - contentScale = ContentScale.FillWidth, - modifier = Modifier - .fillMaxWidth() - .height(200.dp) - ) - - Column( - modifier = Modifier.padding(16.dp) - ) { - Text(text = "Name: ${sneaker.name}", fontSize = 18.sp) - Text(text = "Price: $${sneaker.price}", fontSize = 16.sp) - } - } -} diff --git a/app/src/main/java/com/example/android_programming/Screens/HomeScreen/BrandScrollBar/ItemFilterByBrand.kt b/app/src/main/java/com/example/android_programming/Screens/HomeScreen/BrandScrollBar/ItemFilterByBrand.kt deleted file mode 100644 index cdceaf6..0000000 --- a/app/src/main/java/com/example/android_programming/Screens/HomeScreen/BrandScrollBar/ItemFilterByBrand.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.example.android_programming.Screens.HomeScreen.BrandScrollBar - -data class ItemFilterByBrand( - val imageId: Int, -) diff --git a/app/src/main/java/com/example/android_programming/Screens/HomeScreen/HomeScreen.kt b/app/src/main/java/com/example/android_programming/Screens/HomeScreen/HomeScreen.kt deleted file mode 100644 index abf20ab..0000000 --- a/app/src/main/java/com/example/android_programming/Screens/HomeScreen/HomeScreen.kt +++ /dev/null @@ -1,95 +0,0 @@ -package com.example.android_programming.Screens.HomeScreen - -import androidx.compose.foundation.background -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.foundation.lazy.LazyRow -import androidx.compose.foundation.lazy.itemsIndexed -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.unit.dp -import androidx.navigation.NavHostController -import com.example.android_programming.Screens.HomeScreen.BrandScrollBar.ItemFilterByBrand -import com.example.android_programming.Screens.HomeScreen.BrandScrollBar.ItemRow -import com.example.android_programming.Screens.HomeScreen.SearchField.SearchField -import com.example.android_programming.Screens.HomeScreen.SneakerRecyclerView.CardSneaker -import com.example.android_programming.SneakerItem -import com.example.android_programming.R -import com.example.android_programming.getSneakers - -@Composable -fun HomeScreen(navHostController: NavHostController) { - Column( - modifier = Modifier - .fillMaxSize() - .background(Color.White) - ) { - Row { - // Поле для поиска - SearchField( - modifier = Modifier - .fillMaxWidth() - .padding(20.dp) - .clip(RoundedCornerShape(10.dp)) - ) { searchText -> - // Обработка введенного текста поиска - } - } - - Row { - LazyRow( - modifier = Modifier - .fillMaxWidth() - .padding(0.dp, 0.dp, 0.dp, 5.dp), - - horizontalArrangement = Arrangement.SpaceEvenly - ){ - itemsIndexed( - listOf( - ItemFilterByBrand(R.drawable.jordan), - ItemFilterByBrand(R.drawable.jordan), - ItemFilterByBrand(R.drawable.jordan), - ItemFilterByBrand(R.drawable.jordan) - ) - ){ _, item-> - ItemRow(item = item) - } - } - } - - Row { - LazyColumn( - modifier = Modifier - .fillMaxSize() - ) { - val list = getSneakers() - val numColumns = 2 - val chunkedList = list.chunked(numColumns) - - itemsIndexed(chunkedList) { _, chunkedListItem -> - Row( - horizontalArrangement = Arrangement.Center, - modifier = Modifier - .fillMaxWidth() - ) { - for (item in chunkedListItem) { - CardSneaker(item, navHostController) - } - } - } - } - } - - } -} - - - diff --git a/app/src/main/java/com/example/android_programming/Screens/OrderScreen/OrderScreen.kt b/app/src/main/java/com/example/android_programming/Screens/OrderScreen/OrderScreen.kt deleted file mode 100644 index cabd3f8..0000000 --- a/app/src/main/java/com/example/android_programming/Screens/OrderScreen/OrderScreen.kt +++ /dev/null @@ -1,240 +0,0 @@ -package com.example.android_programming.Screens.OrderScreen - -import androidx.compose.foundation.background -import androidx.compose.foundation.border -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.foundation.lazy.itemsIndexed -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.foundation.text.KeyboardActions -import androidx.compose.foundation.text.KeyboardOptions -import androidx.compose.material.Button -import androidx.compose.material.Text -import androidx.compose.material.TextField -import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.res.colorResource -import androidx.compose.ui.text.TextStyle -import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.text.input.ImeAction -import androidx.compose.ui.text.input.KeyboardType -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp -import com.example.android_programming.R -import com.example.android_programming.Screens.LikeScreen.CardSneakerLike -import com.example.android_programming.SneakerItem - - -@Composable -fun OrderScreen() { - - var address by remember { mutableStateOf("") } - var city by remember { mutableStateOf("") } - var number by remember { mutableStateOf("") } - - Column( - modifier = Modifier - .fillMaxSize() - .background(Color.White) - .padding(16.dp), - ){ - Row( - modifier = Modifier - .fillMaxWidth() - .background(colorResource(id = R.color.figma)), - horizontalArrangement = Arrangement.Center - ) { - Column( - modifier = Modifier - .padding(16.dp), - horizontalAlignment = Alignment.CenterHorizontally - - ) { - Text(text = "Delivery Address", fontSize = 24.sp, fontWeight = FontWeight.Bold) - - Spacer(modifier = Modifier.height(16.dp)) - - TextField( - value = address, - onValueChange = { address = it }, - modifier = Modifier - .fillMaxWidth() - .height(50.dp) - .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)), - singleLine = true, - keyboardOptions = KeyboardOptions( - keyboardType = KeyboardType.Text, - imeAction = ImeAction.Next - ), - keyboardActions = KeyboardActions( - onNext = { - - } - ), - placeholder = { - Text( - text = "Address", - style = TextStyle(fontSize = 12.sp) - ) - } - ) - - Spacer(modifier = Modifier.height(16.dp)) - - TextField( - value = city, - onValueChange = { city = it }, - modifier = Modifier - .fillMaxWidth() - .height(50.dp) - .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)), - singleLine = true, - keyboardOptions = KeyboardOptions( - keyboardType = KeyboardType.Text, - imeAction = ImeAction.Next - ), - keyboardActions = KeyboardActions( - onNext = { - - } - ), - placeholder = { - Text( - text = "City", - style = TextStyle(fontSize = 12.sp) - ) - } - ) - - Spacer(modifier = Modifier.height(16.dp)) - - TextField( - value = number, - onValueChange = { number = it }, - modifier = Modifier - .fillMaxWidth() - .height(50.dp) - .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)), - singleLine = true, - keyboardOptions = KeyboardOptions( - keyboardType = KeyboardType.Text, - imeAction = ImeAction.Next - ), - keyboardActions = KeyboardActions( - onNext = { - - } - ), - placeholder = { - Text( - text = "Number", - style = TextStyle(fontSize = 12.sp) - ) - } - ) - } - } - Row { - LazyColumn { - itemsIndexed( - listOf( - SneakerItem(R.drawable.sneaker, "Jordan", 159.99), - ) - ){_, item-> - CardSneakerLike(item = item) - } - } - } - Row( - modifier = Modifier - .fillMaxWidth() - .background(colorResource(id = R.color.figma)), - horizontalArrangement = Arrangement.SpaceBetween - ){ - Row( - modifier = Modifier.weight(1f), - horizontalArrangement = Arrangement.Start - ){ - Text(text = "Sub total", fontSize = 15.sp) - } - Row( - modifier = Modifier.weight(1f), - horizontalArrangement = Arrangement.End - ){ - Text(text = "319.99 $", fontSize = 15.sp) - } - } - Row( - modifier = Modifier - .fillMaxWidth() - .background(colorResource(id = R.color.figma)), - horizontalArrangement = Arrangement.SpaceBetween - ){ - Row( - modifier = Modifier.weight(1f), - horizontalArrangement = Arrangement.Start - ){ - Text(text = "Taxes", fontSize = 15.sp) - } - Row( - modifier = Modifier.weight(1f), - horizontalArrangement = Arrangement.End - ){ - Text(text = "180 $", fontSize = 15.sp) - } - } - Row( - modifier = Modifier - .fillMaxWidth() - .background(colorResource(id = R.color.figma)), - horizontalArrangement = Arrangement.SpaceBetween - ){ - Row( - modifier = Modifier.weight(1f), - horizontalArrangement = Arrangement.Start - ){ - Text(text = "Total", fontSize = 15.sp) - } - Row( - modifier = Modifier.weight(1f), - horizontalArrangement = Arrangement.End - ){ - Text(text = "1900 $", fontSize = 15.sp) - } - } - - Spacer(modifier = Modifier.height(16.dp)) - - Button( - onClick = { - - }, - modifier = Modifier - .fillMaxWidth() - .clip(RoundedCornerShape(20.dp)) - ) { - Text("Confirm order") - } - } -} - -@Composable -@Preview -fun OrderScreenPreview(){ - OrderScreen() -} \ No newline at end of file diff --git a/app/src/main/java/com/example/android_programming/Screens/ProfileScreen/SignIn/SignInScreen.kt b/app/src/main/java/com/example/android_programming/Screens/ProfileScreen/SignIn/SignInScreen.kt deleted file mode 100644 index 6faf9c2..0000000 --- a/app/src/main/java/com/example/android_programming/Screens/ProfileScreen/SignIn/SignInScreen.kt +++ /dev/null @@ -1,121 +0,0 @@ -package com.example.android_programming.Screens.ProfileScreen.SignIn - -import androidx.compose.foundation.background -import androidx.compose.foundation.border -import androidx.compose.foundation.layout.* -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.foundation.text.BasicTextField -import androidx.compose.foundation.text.KeyboardActions -import androidx.compose.foundation.text.KeyboardOptions -import androidx.compose.material.Button -import androidx.compose.material.Text -import androidx.compose.runtime.* -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.input.pointer.PointerIcon.Companion.Text -import androidx.compose.ui.res.colorResource -import androidx.compose.ui.semantics.SemanticsProperties.Text -import androidx.compose.ui.text.Placeholder -import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.text.input.ImeAction -import androidx.compose.ui.text.input.KeyboardType -import androidx.compose.ui.text.input.PasswordVisualTransformation -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp -import androidx.navigation.NavController -import androidx.navigation.NavHostController -import com.example.android_programming.R -import androidx.compose.material.Text as Text1 - -@Composable -fun LoginScreen() { - var username by remember { mutableStateOf("") } - var password by remember { mutableStateOf("") } - - Column( - modifier = Modifier - .fillMaxSize() - .clip(RoundedCornerShape(25.dp)) - .background(colorResource(id = R.color.figma)) - .padding(15.dp, 0.dp) - , - verticalArrangement = Arrangement.Center, - horizontalAlignment = Alignment.CenterHorizontally - ) { - Text1(text = "Sign In", fontSize = 24.sp, fontWeight = FontWeight.Bold) - - Spacer(modifier = Modifier.height(16.dp)) - - BasicTextField( - value = username, - onValueChange = { username = it }, - modifier = Modifier - .fillMaxWidth() - .height(50.dp) - .padding(8.dp) - .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)) - .padding(8.dp), - singleLine = true, - keyboardOptions = KeyboardOptions( - keyboardType = KeyboardType.Text, - imeAction = ImeAction.Next - ), - keyboardActions = KeyboardActions( - onNext = { - - } - ), - ) - - BasicTextField( - value = password, - onValueChange = { password = it }, - modifier = Modifier - .fillMaxWidth() - .height(50.dp) - .padding(8.dp) - .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)) - .padding(8.dp), - singleLine = true, - visualTransformation = PasswordVisualTransformation(), - keyboardOptions = KeyboardOptions( - keyboardType = KeyboardType.Text, - imeAction = ImeAction.Next - ), - - keyboardActions = KeyboardActions( - onNext = { - - } - ), - ){ - - } - - Button( - onClick = { - - }, - modifier = Modifier - .fillMaxWidth() - .padding(8.dp, 0.dp, 8.dp, 0.dp) - .clip(RoundedCornerShape(20.dp)) - ) { - Text1("Sign In") - } - } -} - - -fun performLogin(username: String, password: String) { - -} - -@Composable -@Preview -fun SignInScreen(){ - LoginScreen() -} \ No newline at end of file diff --git a/app/src/main/java/com/example/android_programming/Screens/ProfileScreen/SignUp/SignUpScreen.kt b/app/src/main/java/com/example/android_programming/Screens/ProfileScreen/SignUp/SignUpScreen.kt deleted file mode 100644 index ff0a00a..0000000 --- a/app/src/main/java/com/example/android_programming/Screens/ProfileScreen/SignUp/SignUpScreen.kt +++ /dev/null @@ -1,222 +0,0 @@ -package com.example.android_programming.Screens.ProfileScreen.SignUp - -import androidx.compose.foundation.background -import androidx.compose.foundation.border -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.foundation.text.BasicTextField -import androidx.compose.foundation.text.KeyboardActions -import androidx.compose.foundation.text.KeyboardOptions -import androidx.compose.material.Button -import androidx.compose.material.DropdownMenu -import androidx.compose.material.Text -import androidx.compose.material.TextField -import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.res.colorResource -import androidx.compose.ui.text.TextStyle -import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.text.input.ImeAction -import androidx.compose.ui.text.input.KeyboardType -import androidx.compose.ui.text.input.PasswordVisualTransformation -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp -import com.example.android_programming.Screens.ProfileScreen.SignIn.LoginScreen -import com.example.android_programming.R - -@Composable -fun SignUpScreen() { - var username by remember { mutableStateOf("") } - var password by remember { mutableStateOf("") } - var sex by remember { mutableStateOf("") } - var name by remember { mutableStateOf("") } - var surname by remember { mutableStateOf("") } - - Column( - modifier = Modifier - .fillMaxSize() - .clip(RoundedCornerShape(25.dp)) - .background(colorResource(id = R.color.figma)) - .padding(15.dp, 0.dp) - , - verticalArrangement = Arrangement.Center, - horizontalAlignment = Alignment.CenterHorizontally - ) { - Text(text = "Sign Up", fontSize = 24.sp, fontWeight = FontWeight.Bold) - - Spacer(modifier = Modifier.height(16.dp)) - - TextField( - value = username, - onValueChange = { username = it }, - modifier = Modifier - .fillMaxWidth() - .height(50.dp) - .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)) - .padding(0.dp), - singleLine = true, - keyboardOptions = KeyboardOptions( - keyboardType = KeyboardType.Text, - imeAction = ImeAction.Next - ), - keyboardActions = KeyboardActions( - onNext = { - - } - ), - placeholder = { - Text( - text = "Username", - style = TextStyle(fontSize = 12.sp) - ) - } - ) - - Spacer(modifier = Modifier.height(16.dp)) - - TextField( - value = name, - onValueChange = { name = it }, - modifier = Modifier - .fillMaxWidth() - .height(50.dp) - .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)), - singleLine = true, - keyboardOptions = KeyboardOptions( - keyboardType = KeyboardType.Text, - imeAction = ImeAction.Next - ), - keyboardActions = KeyboardActions( - onNext = { - - } - ), - placeholder = { - Text( - text = "Name", - style = TextStyle(fontSize = 12.sp) - ) - } - ) - - Spacer(modifier = Modifier.height(16.dp)) - - TextField( - value = surname, - onValueChange = { surname = it }, - modifier = Modifier - .fillMaxWidth() - .height(50.dp) - .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)) - .padding(0.dp), - singleLine = true, - keyboardOptions = KeyboardOptions( - keyboardType = KeyboardType.Text, - imeAction = ImeAction.Next - ), - keyboardActions = KeyboardActions( - onNext = { - - } - ), - placeholder = { - Text( - text = "Surname", - style = TextStyle(fontSize = 12.sp) - ) - } - ) - - Spacer(modifier = Modifier.height(16.dp)) - - TextField( - value = sex, - onValueChange = { sex = it }, - modifier = Modifier - .fillMaxWidth() - .height(50.dp) - .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)) - .padding(0.dp), - singleLine = true, - keyboardOptions = KeyboardOptions( - keyboardType = KeyboardType.Text, - imeAction = ImeAction.Next - ), - keyboardActions = KeyboardActions( - onNext = { - - } - ), - placeholder = { - Text( - text = "Sex", - style = TextStyle(fontSize = 12.sp) - ) - } - ) - - Spacer(modifier = Modifier.height(16.dp)) - - TextField( - value = password, - onValueChange = { password = it }, - modifier = Modifier - .fillMaxWidth() - .height(50.dp) - .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)) - .padding(0.dp), - singleLine = true, - visualTransformation = PasswordVisualTransformation(), - keyboardOptions = KeyboardOptions( - keyboardType = KeyboardType.Text, - imeAction = ImeAction.Next - ), - - keyboardActions = KeyboardActions( - onNext = { - - } - ), - placeholder = { - Text( - text = "Password", - style = TextStyle(fontSize = 12.sp) - ) - } - ) - - Spacer(modifier = Modifier.height(16.dp)) - - Button( - onClick = { - - }, - modifier = Modifier - .fillMaxWidth() - .clip(RoundedCornerShape(20.dp)) - ) { - Text("Sign Up") - } - } -} - - -@Composable -@Preview -fun SignUpScreenPreview(){ - SignUpScreen() -} \ No newline at end of file diff --git a/app/src/main/java/com/example/android_programming/Header/HeaderWithLogo.kt b/app/src/main/java/com/example/android_programming/composeui/Header/HeaderWithLogo.kt similarity index 94% rename from app/src/main/java/com/example/android_programming/Header/HeaderWithLogo.kt rename to app/src/main/java/com/example/android_programming/composeui/Header/HeaderWithLogo.kt index e293015..b0b4cb8 100644 --- a/app/src/main/java/com/example/android_programming/Header/HeaderWithLogo.kt +++ b/app/src/main/java/com/example/android_programming/composeui/Header/HeaderWithLogo.kt @@ -1,4 +1,4 @@ -package com.example.android_programming.Header +package com.example.android_programming.composeui.Header import androidx.compose.foundation.Image import androidx.compose.foundation.background diff --git a/app/src/main/java/com/example/android_programming/Navigation/NavController.kt b/app/src/main/java/com/example/android_programming/composeui/Navigation/NavController.kt similarity index 54% rename from app/src/main/java/com/example/android_programming/Navigation/NavController.kt rename to app/src/main/java/com/example/android_programming/composeui/Navigation/NavController.kt index b6a3410..a22830b 100644 --- a/app/src/main/java/com/example/android_programming/Navigation/NavController.kt +++ b/app/src/main/java/com/example/android_programming/composeui/Navigation/NavController.kt @@ -1,22 +1,22 @@ -package com.example.android_programming.Navigation +package com.example.android_programming.composeui.Navigation import androidx.compose.runtime.Composable import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable -import com.example.android_programming.Screens.AdminPanel.AddPanel -import com.example.android_programming.Screens.AdminPanel.AdminPanel -import com.example.android_programming.Screens.AdminPanel.ChangePanel -import com.example.android_programming.Screens.AdminPanel.ChangeSneaker -import com.example.android_programming.Screens.HomeScreen.AboutSneaker -import com.example.android_programming.Screens.HomeScreen.HomeScreen -import com.example.android_programming.Screens.LikeScreen.LikeScreen -import com.example.android_programming.Screens.OrderScreen.OrderScreen -import com.example.android_programming.Screens.ProfileScreen.Profile.Person -import com.example.android_programming.Screens.ProfileScreen.Profile.ProfileScreen -import com.example.android_programming.Screens.ProfileScreen.SignIn.LoginScreen -import com.example.android_programming.Screens.ProfileScreen.SignUp.SignUpScreen -import com.example.android_programming.SneakerItem +import com.example.android_programming.composeui.Screens.AdminPanel.AddPanel +import com.example.android_programming.composeui.Screens.AdminPanel.AdminPanel +import com.example.android_programming.composeui.Screens.AdminPanel.ChangePanel +import com.example.android_programming.composeui.Screens.AdminPanel.ChangeSneaker +import com.example.android_programming.composeui.Screens.HomeScreen.AboutSneaker +import com.example.android_programming.composeui.Screens.HomeScreen.HomeScreen +import com.example.android_programming.composeui.Screens.LikeScreen.LikeScreen +import com.example.android_programming.composeui.Screens.OrderScreen.OrderScreen +import com.example.android_programming.composeui.Screens.ProfileScreen.Profile.Person +import com.example.android_programming.composeui.Screens.ProfileScreen.Profile.ProfileScreen +import com.example.android_programming.composeui.Screens.ProfileScreen.SignIn.LoginScreen +import com.example.android_programming.composeui.Screens.ProfileScreen.SignUp.SignUpScreen +import com.example.android_programming.model.SneakerItem import com.google.gson.Gson @Composable @@ -38,7 +38,7 @@ fun NavController(navController: NavHostController){ ProfileScreen(navController) } composable(NavItem.SignIn.route){ - LoginScreen() + LoginScreen(navController) } composable(NavItem.SignUp.route){ SignUpScreen() @@ -58,12 +58,16 @@ fun NavController(navController: NavHostController){ composable(NavItem.AboutSneaker.route) { backStackEntry -> val sneakerItemString = backStackEntry.arguments?.getString("sneakerItem") val sneakerItem = Gson().fromJson(sneakerItemString, SneakerItem::class.java) - sneakerItem?.let { AboutSneaker(it) } + sneakerItem?.let { AboutSneaker(it, onBackClick = { + navController.navigateUp() }) + } } composable(NavItem.ChangeSneaker.route) { backStackEntry -> val sneakerItemString = backStackEntry.arguments?.getString("sneakerItem") val sneakerItem = Gson().fromJson(sneakerItemString, SneakerItem::class.java) - sneakerItem?.let { ChangeSneaker(it) } + sneakerItem?.let { ChangeSneaker(it, onBackClick = { + navController.navigateUp() }) + } } } } \ No newline at end of file diff --git a/app/src/main/java/com/example/android_programming/Navigation/NavItem.kt b/app/src/main/java/com/example/android_programming/composeui/Navigation/NavItem.kt similarity index 94% rename from app/src/main/java/com/example/android_programming/Navigation/NavItem.kt rename to app/src/main/java/com/example/android_programming/composeui/Navigation/NavItem.kt index 72d03b2..4f457d2 100644 --- a/app/src/main/java/com/example/android_programming/Navigation/NavItem.kt +++ b/app/src/main/java/com/example/android_programming/composeui/Navigation/NavItem.kt @@ -1,4 +1,4 @@ -package com.example.android_programming.Navigation +package com.example.android_programming.composeui.Navigation import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Build diff --git a/app/src/main/java/com/example/android_programming/Navigation/Navigate.kt b/app/src/main/java/com/example/android_programming/composeui/Navigation/Navigate.kt similarity index 89% rename from app/src/main/java/com/example/android_programming/Navigation/Navigate.kt rename to app/src/main/java/com/example/android_programming/composeui/Navigation/Navigate.kt index f6eb0db..2050c1f 100644 --- a/app/src/main/java/com/example/android_programming/Navigation/Navigate.kt +++ b/app/src/main/java/com/example/android_programming/composeui/Navigation/Navigate.kt @@ -1,4 +1,4 @@ -package com.example.android_programming.Navigation +package com.example.android_programming.composeui.Navigation import android.annotation.SuppressLint import androidx.compose.foundation.background @@ -12,6 +12,7 @@ import androidx.compose.material.Scaffold import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.res.colorResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp @@ -21,7 +22,7 @@ import com.example.android_programming.R @SuppressLint("UnusedMaterialScaffoldPaddingParameter") @Composable -fun Navigate(){ +fun Navigate() { val navController = rememberNavController() val listItem = listOf( NavItem.Home, @@ -44,11 +45,11 @@ fun Navigate(){ BottomNavigationItem( selected = isSelected, onClick = { - if(!isSelected){ + if (!isSelected) { navController.graph.startDestinationRoute?.let { navController.popBackStack(it, inclusive = true) } - navController.navigate(it.route){ + navController.navigate(it.route) { launchSingleTop } } @@ -68,6 +69,7 @@ fun Navigate(){ Icon( imageVector = it1, contentDescription = null, + tint = if (isSelected) Color.White else Color.Unspecified, modifier = iconModifier.then(Modifier.size(24.dp)) ) } @@ -82,6 +84,6 @@ fun Navigate(){ @Composable @Preview -fun NavigatePreview(){ +fun NavigatePreview() { Navigate() -} \ No newline at end of file +} diff --git a/app/src/main/java/com/example/android_programming/composeui/Screens/AdminPanel/AddPanel.kt b/app/src/main/java/com/example/android_programming/composeui/Screens/AdminPanel/AddPanel.kt new file mode 100644 index 0000000..1d013a6 --- /dev/null +++ b/app/src/main/java/com/example/android_programming/composeui/Screens/AdminPanel/AddPanel.kt @@ -0,0 +1,209 @@ +package com.example.android_programming.composeui.Screens.AdminPanel + +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.text.KeyboardActions +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.foundation.verticalScroll +import androidx.compose.material.Button +import androidx.compose.material.ButtonDefaults +import androidx.compose.material.Text +import androidx.compose.material.TextField +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.colorResource +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.input.ImeAction +import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.example.android_programming.R + +@Composable +@Preview +fun AddPanel(){ + var brand by remember { mutableStateOf("") } + var model by remember { mutableStateOf("") } + var description by remember { mutableStateOf("") } + var price by remember { mutableStateOf("") } + + Row( + modifier = Modifier + .fillMaxWidth() + .padding(16.dp) + .clip(RoundedCornerShape(16.dp)) + .background(colorResource(id = R.color.figma)) + .verticalScroll(rememberScrollState()) + ) { + Column( + modifier = Modifier.fillMaxWidth(), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center + ) { + Box( + modifier = Modifier + .fillMaxWidth() + .padding(16.dp) + .height(150.dp) + .background(Color.Gray) + ) { + } + Button( + colors = ButtonDefaults.buttonColors( + backgroundColor = colorResource(id = R.color.figma_blue), + contentColor = Color.White + ), + onClick = { + }, + modifier = Modifier + .fillMaxWidth() + .padding(16.dp, 0.dp, 16.dp, 16.dp) + ) { + Text("Add image") + } + + TextField( + value = brand, + onValueChange = { brand = it }, + modifier = Modifier + .fillMaxWidth() + .height(50.dp) + .padding(16.dp, 0.dp) + .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)), + singleLine = true, + keyboardOptions = KeyboardOptions( + keyboardType = KeyboardType.Text, + imeAction = ImeAction.Next + ), + keyboardActions = KeyboardActions( + onNext = { + + } + ), + placeholder = { + Text( + text = "Brand", + style = TextStyle(fontSize = 12.sp) + ) + } + ) + + Spacer(modifier = Modifier.height(16.dp)) + + TextField( + value = model, + onValueChange = { model = it }, + modifier = Modifier + .fillMaxWidth() + .height(50.dp) + .padding(16.dp, 0.dp) + .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)), + singleLine = true, + keyboardOptions = KeyboardOptions( + keyboardType = KeyboardType.Text, + imeAction = ImeAction.Next + ), + keyboardActions = KeyboardActions( + onNext = { + + } + ), + placeholder = { + Text( + text = "Model", + style = TextStyle(fontSize = 12.sp) + ) + } + ) + + Spacer(modifier = Modifier.height(16.dp)) + + TextField( + value = description, + onValueChange = { description = it }, + modifier = Modifier + .fillMaxWidth() + .height(150.dp) + .padding(16.dp, 0.dp) + .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)), + keyboardOptions = KeyboardOptions( + keyboardType = KeyboardType.Text, + imeAction = ImeAction.Next + ), + keyboardActions = KeyboardActions( + onNext = { + + } + ), + placeholder = { + Text( + text = "Description", + style = TextStyle(fontSize = 12.sp) + ) + } + ) + + Spacer(modifier = Modifier.height(16.dp)) + + TextField( + value = price, + onValueChange = { price = it }, + modifier = Modifier + .fillMaxWidth() + .height(50.dp) + .padding(16.dp, 0.dp) + .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)), + singleLine = true, + keyboardOptions = KeyboardOptions( + keyboardType = KeyboardType.Text, + imeAction = ImeAction.Next + ), + keyboardActions = KeyboardActions( + onNext = { + + } + ), + placeholder = { + Text( + text = "Price", + style = TextStyle(fontSize = 12.sp) + ) + } + ) + + Button( + colors = ButtonDefaults.buttonColors( + backgroundColor = colorResource(id = R.color.figma_blue), + contentColor = Color.White + ), + onClick = { + + }, + modifier = Modifier + .fillMaxWidth() + .padding(16.dp) + ) { + Text("Add sneaker") + } + } + } +} diff --git a/app/src/main/java/com/example/android_programming/Screens/AdminPanel/AdminPanel.kt b/app/src/main/java/com/example/android_programming/composeui/Screens/AdminPanel/AdminPanel.kt similarity index 92% rename from app/src/main/java/com/example/android_programming/Screens/AdminPanel/AdminPanel.kt rename to app/src/main/java/com/example/android_programming/composeui/Screens/AdminPanel/AdminPanel.kt index e6adcd6..a7ecb7a 100644 --- a/app/src/main/java/com/example/android_programming/Screens/AdminPanel/AdminPanel.kt +++ b/app/src/main/java/com/example/android_programming/composeui/Screens/AdminPanel/AdminPanel.kt @@ -1,4 +1,4 @@ -package com.example.android_programming.Screens.AdminPanel +package com.example.android_programming.composeui.Screens.AdminPanel import androidx.compose.foundation.background import androidx.compose.foundation.layout.Column @@ -24,7 +24,7 @@ fun AdminPanel(navHostController: NavHostController) { modifier = Modifier .fillMaxSize() .background(Color.White) - .padding(16.dp) + .padding(bottom = 50.dp) ) { ButtonAdmin( onAddClick = { diff --git a/app/src/main/java/com/example/android_programming/Screens/AdminPanel/Button.kt b/app/src/main/java/com/example/android_programming/composeui/Screens/AdminPanel/Button.kt similarity index 53% rename from app/src/main/java/com/example/android_programming/Screens/AdminPanel/Button.kt rename to app/src/main/java/com/example/android_programming/composeui/Screens/AdminPanel/Button.kt index 3d65b70..2a24000 100644 --- a/app/src/main/java/com/example/android_programming/Screens/AdminPanel/Button.kt +++ b/app/src/main/java/com/example/android_programming/composeui/Screens/AdminPanel/Button.kt @@ -1,25 +1,45 @@ -package com.example.android_programming.Screens.AdminPanel +package com.example.android_programming.composeui.Screens.AdminPanel +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column 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.shape.RoundedCornerShape +import androidx.compose.foundation.verticalScroll import androidx.compose.material.Button +import androidx.compose.material.ButtonDefaults import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.colorResource import androidx.compose.ui.unit.dp import androidx.navigation.NavHostController +import com.example.android_programming.R @Composable fun ButtonAdmin(onAddClick: () -> Unit, onChangeClick: () -> Unit) { - Row(){ + Row( + modifier = Modifier + .fillMaxWidth() + .padding(16.dp, 16.dp, 16.dp, 0.dp) + .clip(RoundedCornerShape(16.dp)) + .background(colorResource(id = R.color.figma)) + ){ Button( + colors = ButtonDefaults.buttonColors( + backgroundColor = colorResource(id = R.color.figma_blue), + contentColor = Color.White + ), onClick = { onAddClick() }, @@ -31,6 +51,10 @@ fun ButtonAdmin(onAddClick: () -> Unit, onChangeClick: () -> Unit) { Text("Add") } Button( + colors = ButtonDefaults.buttonColors( + backgroundColor = colorResource(id = R.color.figma_blue), + contentColor = Color.White + ), onClick = { onChangeClick() }, @@ -42,4 +66,5 @@ fun ButtonAdmin(onAddClick: () -> Unit, onChangeClick: () -> Unit) { Text("Change/Del") } } + } \ No newline at end of file diff --git a/app/src/main/java/com/example/android_programming/Screens/AdminPanel/CardSneakerForChange.kt b/app/src/main/java/com/example/android_programming/composeui/Screens/AdminPanel/CardSneakerForChange.kt similarity index 61% rename from app/src/main/java/com/example/android_programming/Screens/AdminPanel/CardSneakerForChange.kt rename to app/src/main/java/com/example/android_programming/composeui/Screens/AdminPanel/CardSneakerForChange.kt index 3303456..ad47de2 100644 --- a/app/src/main/java/com/example/android_programming/Screens/AdminPanel/CardSneakerForChange.kt +++ b/app/src/main/java/com/example/android_programming/composeui/Screens/AdminPanel/CardSneakerForChange.kt @@ -1,4 +1,4 @@ -package com.example.android_programming.Screens.AdminPanel +package com.example.android_programming.composeui.Screens.AdminPanel import androidx.compose.foundation.Image import androidx.compose.foundation.background @@ -10,7 +10,13 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.Button +import androidx.compose.material.ButtonDefaults +import androidx.compose.material.Icon import androidx.compose.material.Text +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Create +import androidx.compose.material.icons.filled.Delete import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -19,12 +25,11 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.res.colorResource import androidx.compose.ui.res.painterResource -import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.navigation.NavHostController import com.example.android_programming.R -import com.example.android_programming.SneakerItem +import com.example.android_programming.model.SneakerItem import com.google.gson.Gson @Composable @@ -32,7 +37,7 @@ fun CardSneakerForChange(item: SneakerItem, navController: NavHostController) { Row( modifier = Modifier .fillMaxWidth() - .padding(10.dp) + .padding(0.dp, 0.dp, 0.dp, 16.dp) .clip(RoundedCornerShape(10.dp)) .background(colorResource(id = R.color.figma)), verticalAlignment = Alignment.CenterVertically, @@ -57,36 +62,30 @@ fun CardSneakerForChange(item: SneakerItem, navController: NavHostController) { Text(text = "${item.price} USD", color = Color.Red, fontSize = 16.sp) } - Image( - painter = painterResource(id = R.drawable.change), - contentDescription = "image", + Button( + colors = ButtonDefaults.buttonColors( + backgroundColor = colorResource(id = R.color.figma_blue), + contentColor = Color.White + ), + onClick = { + val sneakerItemString = Gson().toJson(item) + navController.navigate("changeSneaker/${sneakerItemString}") }, modifier = Modifier - .size(40.dp) - .padding(10.dp) - .clickable { - val sneakerItemString = Gson().toJson(item) - navController.navigate("changeSneaker/${sneakerItemString}") - } - ) + .padding(end = 16.dp) + ) { + Icon(imageVector = Icons.Default.Create, contentDescription = "change") + } - Image( - painter = painterResource(id = R.drawable.trash), - contentDescription = "image", + Button( + colors = ButtonDefaults.buttonColors( + backgroundColor = colorResource(id = R.color.figma_blue), + contentColor = Color.White + ), + onClick = { /*TODO*/ }, modifier = Modifier - .size(40.dp) - .padding(10.dp) - .clickable { - - } - ) + .padding(end = 16.dp) + ) { + Icon(imageVector = Icons.Default.Delete, contentDescription = "delete") + } } } - - - -/* -@Composable -@Preview -fun CardSneakerLikePreview(){ - CardSneakerForChange(SneakerItem(R.drawable.sneaker, "Jordan", 159.99)) -}*/ diff --git a/app/src/main/java/com/example/android_programming/Screens/AdminPanel/ChangePanel.kt b/app/src/main/java/com/example/android_programming/composeui/Screens/AdminPanel/ChangePanel.kt similarity index 79% rename from app/src/main/java/com/example/android_programming/Screens/AdminPanel/ChangePanel.kt rename to app/src/main/java/com/example/android_programming/composeui/Screens/AdminPanel/ChangePanel.kt index c01ab6f..5f950aa 100644 --- a/app/src/main/java/com/example/android_programming/Screens/AdminPanel/ChangePanel.kt +++ b/app/src/main/java/com/example/android_programming/composeui/Screens/AdminPanel/ChangePanel.kt @@ -1,17 +1,19 @@ -package com.example.android_programming.Screens.AdminPanel +package com.example.android_programming.composeui.Screens.AdminPanel import androidx.compose.foundation.background import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp import androidx.navigation.NavHostController import com.example.android_programming.R -import com.example.android_programming.SneakerItem +import com.example.android_programming.model.SneakerItem @Composable fun ChangePanel(navHostController: NavHostController) { @@ -19,6 +21,7 @@ fun ChangePanel(navHostController: NavHostController) { modifier = Modifier .fillMaxSize() .background(Color.White) + .padding(16.dp) ){ Row { LazyColumn( @@ -29,11 +32,10 @@ fun ChangePanel(navHostController: NavHostController) { listOf( SneakerItem(R.drawable.sneaker, "Jordan", 159.99), SneakerItem(R.drawable.sneaker, "Jordan", 159.99), - SneakerItem(R.drawable.trash, "Nike", 179.99), + SneakerItem(R.drawable.sneaker, "Jordan", 179.99), ) ){_, item-> CardSneakerForChange(item = item, navHostController) - } } } diff --git a/app/src/main/java/com/example/android_programming/composeui/Screens/AdminPanel/ChangeSneaker.kt b/app/src/main/java/com/example/android_programming/composeui/Screens/AdminPanel/ChangeSneaker.kt new file mode 100644 index 0000000..0deb73a --- /dev/null +++ b/app/src/main/java/com/example/android_programming/composeui/Screens/AdminPanel/ChangeSneaker.kt @@ -0,0 +1,226 @@ +package com.example.android_programming.composeui.Screens.AdminPanel + +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.text.KeyboardActions +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.foundation.verticalScroll +import androidx.compose.material.Button +import androidx.compose.material.ButtonDefaults +import androidx.compose.material.Icon +import androidx.compose.material.Text +import androidx.compose.material.TextField +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.ArrowBack +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.colorResource +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.input.ImeAction +import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.example.android_programming.R +import com.example.android_programming.model.SneakerItem +@Composable +fun ChangeSneaker(sneaker: SneakerItem, onBackClick: () -> Unit) { + var brand by remember { mutableStateOf("") } + var model by remember { mutableStateOf("") } + var description by remember { mutableStateOf("") } + var price by remember { mutableStateOf("") } + + Row( + modifier = Modifier + .fillMaxWidth() + .padding(16.dp, 16.dp, 16.dp, 50.dp) + .clip(RoundedCornerShape(16.dp)) + .background(colorResource(id = R.color.figma)) + .verticalScroll(rememberScrollState()) + ) { + Column( + modifier = Modifier.fillMaxWidth(), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center + ) { + Button( + onClick = onBackClick, + colors = ButtonDefaults.buttonColors( + backgroundColor = colorResource(id = R.color.white), + contentColor = Color.Black + ), + ) { + Icon( + imageVector = Icons.Default.ArrowBack, + contentDescription = "Back", + ) + } + Image( + painter = painterResource(id = sneaker.imageId), + contentDescription = "image", + contentScale = ContentScale.FillHeight, + modifier = Modifier + .fillMaxWidth() + .padding(16.dp) + .height(200.dp) + ) + Button( + colors = ButtonDefaults.buttonColors( + backgroundColor = colorResource(id = R.color.figma_blue), + contentColor = Color.White + ), + onClick = { + }, + modifier = Modifier + .fillMaxWidth() + .padding(16.dp, 0.dp, 16.dp, 16.dp) + ) { + Text("Change image") + } + + TextField( + value = sneaker.name.toString(), + onValueChange = { brand = it }, + modifier = Modifier + .fillMaxWidth() + .height(50.dp) + .padding(16.dp, 0.dp) + .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)), + singleLine = true, + keyboardOptions = KeyboardOptions( + keyboardType = KeyboardType.Text, + imeAction = ImeAction.Next + ), + keyboardActions = KeyboardActions( + onNext = { + + } + ), + placeholder = { + Text( + text = "Brand", + style = TextStyle(fontSize = 12.sp) + ) + } + ) + + Spacer(modifier = Modifier.height(16.dp)) + + TextField( + value = model, + onValueChange = { model = it }, + modifier = Modifier + .fillMaxWidth() + .height(50.dp) + .padding(16.dp, 0.dp) + .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)), + singleLine = true, + keyboardOptions = KeyboardOptions( + keyboardType = KeyboardType.Text, + imeAction = ImeAction.Next + ), + keyboardActions = KeyboardActions( + onNext = { + + } + ), + placeholder = { + Text( + text = "Model", + style = TextStyle(fontSize = 12.sp) + ) + } + ) + + Spacer(modifier = Modifier.height(16.dp)) + + TextField( + value = description, + onValueChange = { description = it }, + modifier = Modifier + .fillMaxWidth() + .height(150.dp) + .padding(16.dp, 0.dp) + .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)), + keyboardOptions = KeyboardOptions( + keyboardType = KeyboardType.Text, + imeAction = ImeAction.Next + ), + keyboardActions = KeyboardActions( + onNext = { + + } + ), + placeholder = { + Text( + text = "Description", + style = TextStyle(fontSize = 12.sp) + ) + } + ) + + Spacer(modifier = Modifier.height(16.dp)) + + TextField( + value = sneaker.price.toString(), + onValueChange = { price = it }, + modifier = Modifier + .fillMaxWidth() + .height(50.dp) + .padding(16.dp, 0.dp) + .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)), + singleLine = true, + keyboardOptions = KeyboardOptions( + keyboardType = KeyboardType.Text, + imeAction = ImeAction.Next + ), + keyboardActions = KeyboardActions( + onNext = { + + } + ), + placeholder = { + Text( + text = "Price", + style = TextStyle(fontSize = 12.sp) + ) + } + ) + + Button( + colors = ButtonDefaults.buttonColors( + backgroundColor = colorResource(id = R.color.figma_blue), + contentColor = Color.White + ), + onClick = { + + }, + modifier = Modifier + .fillMaxWidth() + .padding(16.dp) + ) { + Text("Save") + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/android_programming/composeui/Screens/HomeScreen/AboutSneaker.kt b/app/src/main/java/com/example/android_programming/composeui/Screens/HomeScreen/AboutSneaker.kt new file mode 100644 index 0000000..24a5794 --- /dev/null +++ b/app/src/main/java/com/example/android_programming/composeui/Screens/HomeScreen/AboutSneaker.kt @@ -0,0 +1,101 @@ +package com.example.android_programming.composeui.Screens.HomeScreen + +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.Button +import androidx.compose.material.ButtonDefaults +import androidx.compose.material.Icon +import androidx.compose.material.Text +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.ArrowBack +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.colorResource +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.navigation.NavHostController +import androidx.navigation.compose.rememberNavController +import com.example.android_programming.R +import com.example.android_programming.model.SneakerItem + +@Composable +fun AboutSneaker(sneaker: SneakerItem, onBackClick: () -> Unit) { + Column( + modifier = Modifier + .fillMaxSize() + .background(Color.White) + .padding(20.dp) + ) { + Button( + onClick = onBackClick, + colors = ButtonDefaults.buttonColors( + backgroundColor = colorResource(id = R.color.white), + contentColor = Color.Black + ), + ) { + Icon( + imageVector = Icons.Default.ArrowBack, + contentDescription = "Back", + ) + } + Image( + painter = painterResource(id = sneaker.imageId), + contentDescription = "image", + contentScale = ContentScale.FillWidth, + modifier = Modifier + .fillMaxWidth() + .height(300.dp) + ) + + Column( + modifier = Modifier.padding(16.dp) + ) { + Text( + text = "${sneaker.name}", + fontSize = 25.sp, + fontWeight = FontWeight.Bold + ) + Text(text = "Price: $${sneaker.price}", fontSize = 16.sp) + Text(text = "Description: If you wear stylish sneakers, you are doing something good for yourself. And with colors inspired by the aisles of your local beauty store (plus cloud-like Air cushioning underfoot), you'll feel anything but mediocre in these mid-cut Js. Go on, treat yourself.", fontSize = 16.sp) + Button( + colors = ButtonDefaults.buttonColors( + backgroundColor = colorResource(id = R.color.figma_blue), + contentColor = Color.White + ), + onClick = { + + }, + modifier = Modifier + .fillMaxWidth() + .clip(RoundedCornerShape(20.dp)) + ) { + Text("Add to cart") + } + } + } +} + +@Preview +@Composable +fun asds(){ + val sdas = rememberNavController() + AboutSneaker(SneakerItem(R.drawable.sneaker, "Jordan", 159.99), + onBackClick = { + sdas.navigateUp() }) +} \ No newline at end of file diff --git a/app/src/main/java/com/example/android_programming/composeui/Screens/HomeScreen/FilterByBrand/FilterByBrand.kt b/app/src/main/java/com/example/android_programming/composeui/Screens/HomeScreen/FilterByBrand/FilterByBrand.kt new file mode 100644 index 0000000..ef0fb4e --- /dev/null +++ b/app/src/main/java/com/example/android_programming/composeui/Screens/HomeScreen/FilterByBrand/FilterByBrand.kt @@ -0,0 +1,38 @@ +package com.example.android_programming.composeui.Screens.HomeScreen.FilterByBrand + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyRow +import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.example.android_programming.R + +@Preview +@Composable +fun FilterByBrand() { + Row { + LazyRow( + modifier = Modifier + .fillMaxWidth() + .padding(0.dp, 10.dp, 0.dp, 5.dp), + + horizontalArrangement = Arrangement.SpaceEvenly + ){ + itemsIndexed( + listOf( + ItemFilterByBrand(R.drawable.jordan), + ItemFilterByBrand(R.drawable.jordan), + ItemFilterByBrand(R.drawable.jordan), + ItemFilterByBrand(R.drawable.jordan) + ) + ){ _, item-> + ItemRow(item = item) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/android_programming/composeui/Screens/HomeScreen/FilterByBrand/ItemFilterByBrand.kt b/app/src/main/java/com/example/android_programming/composeui/Screens/HomeScreen/FilterByBrand/ItemFilterByBrand.kt new file mode 100644 index 0000000..fcd2a1a --- /dev/null +++ b/app/src/main/java/com/example/android_programming/composeui/Screens/HomeScreen/FilterByBrand/ItemFilterByBrand.kt @@ -0,0 +1,5 @@ +package com.example.android_programming.composeui.Screens.HomeScreen.FilterByBrand + +data class ItemFilterByBrand( + val imageId: Int, +) diff --git a/app/src/main/java/com/example/android_programming/Screens/HomeScreen/BrandScrollBar/ItemRow.kt b/app/src/main/java/com/example/android_programming/composeui/Screens/HomeScreen/FilterByBrand/ItemRow.kt similarity index 92% rename from app/src/main/java/com/example/android_programming/Screens/HomeScreen/BrandScrollBar/ItemRow.kt rename to app/src/main/java/com/example/android_programming/composeui/Screens/HomeScreen/FilterByBrand/ItemRow.kt index a95b98a..652a509 100644 --- a/app/src/main/java/com/example/android_programming/Screens/HomeScreen/BrandScrollBar/ItemRow.kt +++ b/app/src/main/java/com/example/android_programming/composeui/Screens/HomeScreen/FilterByBrand/ItemRow.kt @@ -1,4 +1,4 @@ -package com.example.android_programming.Screens.HomeScreen.BrandScrollBar +package com.example.android_programming.composeui.Screens.HomeScreen.FilterByBrand import androidx.compose.foundation.Image import androidx.compose.foundation.background @@ -10,7 +10,6 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip -import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.res.colorResource import androidx.compose.ui.res.painterResource diff --git a/app/src/main/java/com/example/android_programming/composeui/Screens/HomeScreen/HomeScreen.kt b/app/src/main/java/com/example/android_programming/composeui/Screens/HomeScreen/HomeScreen.kt new file mode 100644 index 0000000..ef90ba1 --- /dev/null +++ b/app/src/main/java/com/example/android_programming/composeui/Screens/HomeScreen/HomeScreen.kt @@ -0,0 +1,54 @@ +package com.example.android_programming.composeui.Screens.HomeScreen + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.LazyRow +import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.verticalScroll +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp +import androidx.navigation.NavHostController +import com.example.android_programming.composeui.Screens.HomeScreen.FilterByBrand.ItemFilterByBrand +import com.example.android_programming.composeui.Screens.HomeScreen.FilterByBrand.ItemRow +import com.example.android_programming.composeui.Screens.HomeScreen.SearchField.SearchField +import com.example.android_programming.composeui.Screens.HomeScreen.SneakerRecyclerView.CardSneaker +import com.example.android_programming.R +import com.example.android_programming.composeui.Screens.HomeScreen.FilterByBrand.FilterByBrand +import com.example.android_programming.composeui.Screens.HomeScreen.SneakerRecyclerView.RecyclerView +import com.example.android_programming.model.getSneakers + +@Composable +fun HomeScreen(navHostController: NavHostController) { + Column( + modifier = Modifier + .fillMaxSize() + .background(Color.White) + .verticalScroll(rememberScrollState()) + ) { + Row { + // Поле для поиска + SearchField( + modifier = Modifier + .fillMaxWidth() + .padding(20.dp, 20.dp, 20.dp, 10.dp) + .clip(RoundedCornerShape(10.dp)) + ) { searchText -> + // Обработка введенного текста поиска + } + } + Sales() + FilterByBrand() + RecyclerView(navHostController = navHostController) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/android_programming/composeui/Screens/HomeScreen/Sales.kt b/app/src/main/java/com/example/android_programming/composeui/Screens/HomeScreen/Sales.kt new file mode 100644 index 0000000..6638942 --- /dev/null +++ b/app/src/main/java/com/example/android_programming/composeui/Screens/HomeScreen/Sales.kt @@ -0,0 +1,32 @@ +package com.example.android_programming.composeui.Screens.HomeScreen + +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.example.android_programming.R + +@Composable +@Preview +fun Sales() { + Row( + modifier = Modifier + .padding(16.dp, 0.dp) + ){ + Image( + painter = painterResource(id = R.drawable.sales), + contentDescription = "image", + contentScale = ContentScale.FillWidth, + modifier = Modifier + .fillMaxWidth() + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/android_programming/Screens/HomeScreen/SearchField/SearchField.kt b/app/src/main/java/com/example/android_programming/composeui/Screens/HomeScreen/SearchField/SearchField.kt similarity index 94% rename from app/src/main/java/com/example/android_programming/Screens/HomeScreen/SearchField/SearchField.kt rename to app/src/main/java/com/example/android_programming/composeui/Screens/HomeScreen/SearchField/SearchField.kt index 7b19068..f2e5db3 100644 --- a/app/src/main/java/com/example/android_programming/Screens/HomeScreen/SearchField/SearchField.kt +++ b/app/src/main/java/com/example/android_programming/composeui/Screens/HomeScreen/SearchField/SearchField.kt @@ -1,4 +1,4 @@ -package com.example.android_programming.Screens.HomeScreen.SearchField; +package com.example.android_programming.composeui.Screens.HomeScreen.SearchField; import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box @@ -21,6 +21,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.res.colorResource import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.example.android_programming.R diff --git a/app/src/main/java/com/example/android_programming/Screens/HomeScreen/SneakerRecyclerView/CardSneaker.kt b/app/src/main/java/com/example/android_programming/composeui/Screens/HomeScreen/SneakerRecyclerView/CardSneaker.kt similarity index 78% rename from app/src/main/java/com/example/android_programming/Screens/HomeScreen/SneakerRecyclerView/CardSneaker.kt rename to app/src/main/java/com/example/android_programming/composeui/Screens/HomeScreen/SneakerRecyclerView/CardSneaker.kt index a531075..76b0679 100644 --- a/app/src/main/java/com/example/android_programming/Screens/HomeScreen/SneakerRecyclerView/CardSneaker.kt +++ b/app/src/main/java/com/example/android_programming/composeui/Screens/HomeScreen/SneakerRecyclerView/CardSneaker.kt @@ -1,4 +1,4 @@ -package com.example.android_programming.Screens.HomeScreen.SneakerRecyclerView +package com.example.android_programming.composeui.Screens.HomeScreen.SneakerRecyclerView import androidx.compose.foundation.Image import androidx.compose.foundation.background @@ -7,15 +7,16 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.Button -import androidx.compose.material.ButtonColors import androidx.compose.material.ButtonDefaults +import androidx.compose.material.Icon import androidx.compose.material.Text +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.ShoppingCart import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -25,15 +26,10 @@ import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.res.colorResource import androidx.compose.ui.res.painterResource -import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp -import androidx.core.os.bundleOf import androidx.navigation.NavHostController -import androidx.navigation.compose.rememberNavController import com.example.android_programming.R -import com.example.android_programming.Screens.HomeScreen.AboutSneaker -import com.example.android_programming.SneakerItem +import com.example.android_programming.model.SneakerItem import com.google.gson.Gson @Composable @@ -83,11 +79,19 @@ fun CardSneaker(item: SneakerItem, navController: NavHostController) { .padding(10.dp) ) { Button( + colors = ButtonDefaults.buttonColors( + backgroundColor = colorResource(id = R.color.figma_blue), + contentColor = Color.White + ), onClick = { /*TODO*/ }, modifier = Modifier - .size(40.dp, 20.dp) + .size(50.dp, 30.dp) + .clip(RoundedCornerShape(10.dp)) ) { - Text(text = "+", fontSize = 4.sp) + Icon( + imageVector = Icons.Default.ShoppingCart, + contentDescription = null + ) } } } diff --git a/app/src/main/java/com/example/android_programming/composeui/Screens/HomeScreen/SneakerRecyclerView/RecyclerView.kt b/app/src/main/java/com/example/android_programming/composeui/Screens/HomeScreen/SneakerRecyclerView/RecyclerView.kt new file mode 100644 index 0000000..666960d --- /dev/null +++ b/app/src/main/java/com/example/android_programming/composeui/Screens/HomeScreen/SneakerRecyclerView/RecyclerView.kt @@ -0,0 +1,40 @@ +package com.example.android_programming.composeui.Screens.HomeScreen.SneakerRecyclerView + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.widthIn +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import androidx.navigation.NavHostController +import com.example.android_programming.model.getSneakers + +@Composable +fun RecyclerView(navHostController : NavHostController) { + Column( + modifier = Modifier + .fillMaxSize() + .padding(bottom = 60.dp) + ) { + val list = getSneakers() + val numColumns = 2 + val chunkedList = list.chunked(numColumns) + + for (chunkedListItem in chunkedList) { + Row( + horizontalArrangement = Arrangement.Center, + modifier = Modifier.fillMaxWidth() + ) { + for (item in chunkedListItem) { + CardSneaker(item, navHostController) + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/android_programming/Screens/LikeScreen/CardSneaker.kt b/app/src/main/java/com/example/android_programming/composeui/Screens/LikeScreen/CardSneaker.kt similarity index 78% rename from app/src/main/java/com/example/android_programming/Screens/LikeScreen/CardSneaker.kt rename to app/src/main/java/com/example/android_programming/composeui/Screens/LikeScreen/CardSneaker.kt index 10e2faf..a0e538c 100644 --- a/app/src/main/java/com/example/android_programming/Screens/LikeScreen/CardSneaker.kt +++ b/app/src/main/java/com/example/android_programming/composeui/Screens/LikeScreen/CardSneaker.kt @@ -1,4 +1,4 @@ -package com.example.android_programming.Screens.LikeScreen +package com.example.android_programming.composeui.Screens.LikeScreen import androidx.compose.foundation.Image import androidx.compose.foundation.background @@ -10,7 +10,11 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.Button +import androidx.compose.material.ButtonDefaults +import androidx.compose.material.Icon import androidx.compose.material.Text +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Delete import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -23,14 +27,14 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.example.android_programming.R -import com.example.android_programming.SneakerItem +import com.example.android_programming.model.SneakerItem @Composable fun CardSneakerLike(item: SneakerItem) { Row( modifier = Modifier .fillMaxWidth() - .padding(10.dp) + .padding(16.dp, 5.dp) .clip(RoundedCornerShape(10.dp)) .background(colorResource(id = R.color.figma)), verticalAlignment = Alignment.CenterVertically, @@ -56,12 +60,15 @@ fun CardSneakerLike(item: SneakerItem) { } Button( + colors = ButtonDefaults.buttonColors( + backgroundColor = colorResource(id = R.color.figma_blue), + contentColor = Color.White + ), onClick = { /*TODO*/ }, modifier = Modifier - .size(40.dp, 20.dp) .padding(end = 16.dp) ) { - Text(text = "+", fontSize = 4.sp) + Icon(imageVector = Icons.Default.Delete, contentDescription = "delete") } } } diff --git a/app/src/main/java/com/example/android_programming/Screens/LikeScreen/LikeScreen.kt b/app/src/main/java/com/example/android_programming/composeui/Screens/LikeScreen/LikeScreen.kt similarity index 93% rename from app/src/main/java/com/example/android_programming/Screens/LikeScreen/LikeScreen.kt rename to app/src/main/java/com/example/android_programming/composeui/Screens/LikeScreen/LikeScreen.kt index 6bd9d11..05672e1 100644 --- a/app/src/main/java/com/example/android_programming/Screens/LikeScreen/LikeScreen.kt +++ b/app/src/main/java/com/example/android_programming/composeui/Screens/LikeScreen/LikeScreen.kt @@ -1,4 +1,4 @@ -package com.example.android_programming.Screens.LikeScreen; +package com.example.android_programming.composeui.Screens.LikeScreen; import androidx.compose.foundation.background import androidx.compose.foundation.layout.Column @@ -16,7 +16,7 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.example.android_programming.R -import com.example.android_programming.SneakerItem +import com.example.android_programming.model.SneakerItem @Composable fun LikeScreen() { diff --git a/app/src/main/java/com/example/android_programming/composeui/Screens/OrderScreen/DeliveryAddress.kt b/app/src/main/java/com/example/android_programming/composeui/Screens/OrderScreen/DeliveryAddress.kt new file mode 100644 index 0000000..d33d757 --- /dev/null +++ b/app/src/main/java/com/example/android_programming/composeui/Screens/OrderScreen/DeliveryAddress.kt @@ -0,0 +1,140 @@ +package com.example.android_programming.composeui.Screens.OrderScreen + +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.text.KeyboardActions +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material.Text +import androidx.compose.material.TextField +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.colorResource +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.input.ImeAction +import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.example.android_programming.R + +@Composable +@Preview +fun DeliveryAddress() { + var address by remember { mutableStateOf("") } + var city by remember { mutableStateOf("") } + var number by remember { mutableStateOf("") } + Row( + modifier = Modifier + .fillMaxWidth() + .padding(16.dp) + .clip(RoundedCornerShape(16.dp)) + .background(colorResource(id = R.color.figma)), + horizontalArrangement = Arrangement.Center + ) { + Column( + modifier = Modifier + .padding(16.dp), + horizontalAlignment = Alignment.CenterHorizontally + + ) { + Text(text = "Delivery Address", fontSize = 24.sp, fontWeight = FontWeight.Bold) + + Spacer(modifier = Modifier.height(16.dp)) + + TextField( + value = address, + onValueChange = { address = it }, + modifier = Modifier + .fillMaxWidth() + .height(50.dp) + .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)), + singleLine = true, + keyboardOptions = KeyboardOptions( + keyboardType = KeyboardType.Text, + imeAction = ImeAction.Next + ), + keyboardActions = KeyboardActions( + onNext = { + + } + ), + placeholder = { + Text( + text = "Address", + style = TextStyle(fontSize = 12.sp) + ) + } + ) + + Spacer(modifier = Modifier.height(16.dp)) + + TextField( + value = city, + onValueChange = { city = it }, + modifier = Modifier + .fillMaxWidth() + .height(50.dp) + .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)), + singleLine = true, + keyboardOptions = KeyboardOptions( + keyboardType = KeyboardType.Text, + imeAction = ImeAction.Next + ), + keyboardActions = KeyboardActions( + onNext = { + + } + ), + placeholder = { + Text( + text = "City", + style = TextStyle(fontSize = 12.sp) + ) + } + ) + + Spacer(modifier = Modifier.height(16.dp)) + + TextField( + value = number, + onValueChange = { number = it }, + modifier = Modifier + .fillMaxWidth() + .height(50.dp) + .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)), + singleLine = true, + keyboardOptions = KeyboardOptions( + keyboardType = KeyboardType.Text, + imeAction = ImeAction.Next + ), + keyboardActions = KeyboardActions( + onNext = { + + } + ), + placeholder = { + Text( + text = "Number", + style = TextStyle(fontSize = 12.sp) + ) + } + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/android_programming/composeui/Screens/OrderScreen/OrderScreen.kt b/app/src/main/java/com/example/android_programming/composeui/Screens/OrderScreen/OrderScreen.kt new file mode 100644 index 0000000..b1710ac --- /dev/null +++ b/app/src/main/java/com/example/android_programming/composeui/Screens/OrderScreen/OrderScreen.kt @@ -0,0 +1,88 @@ +package com.example.android_programming.composeui.Screens.OrderScreen + +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.gestures.scrollable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.text.KeyboardActions +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.foundation.verticalScroll +import androidx.compose.material.Button +import androidx.compose.material.ButtonDefaults +import androidx.compose.material.Text +import androidx.compose.material.TextField +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.colorResource +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.input.ImeAction +import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.example.android_programming.R +import com.example.android_programming.composeui.Screens.LikeScreen.CardSneakerLike +import com.example.android_programming.model.SneakerItem + + +@Composable +fun OrderScreen() { + Column( + modifier = Modifier + .fillMaxSize() + .background(Color.White) + .padding(bottom = 60.dp) + .verticalScroll(rememberScrollState()) + ){ + DeliveryAddress() + ShoppingList(listOf( + SneakerItem(R.drawable.sneaker, "Jordan", 159.99), + SneakerItem(R.drawable.sneaker, "Jordan", 159.99), + SneakerItem(R.drawable.sneaker, "Jordan", 159.99), + SneakerItem(R.drawable.sneaker, "Jordan", 159.99), + SneakerItem(R.drawable.sneaker, "Jordan", 159.99), + SneakerItem(R.drawable.sneaker, "Jordan", 159.99), + )) + SubTotal() + + Button( + colors = ButtonDefaults.buttonColors( + backgroundColor = colorResource(id = R.color.figma_blue), + contentColor = Color.White + ), + onClick = { + + }, + modifier = Modifier + .fillMaxWidth() + .padding(16.dp, 0.dp, 16.dp, 16.dp) + ) { + Text("Confirm order") + } + } +} + +@Composable +@Preview +fun OrderScreenPreview(){ + OrderScreen() +} \ No newline at end of file diff --git a/app/src/main/java/com/example/android_programming/composeui/Screens/OrderScreen/ShoppingList.kt b/app/src/main/java/com/example/android_programming/composeui/Screens/OrderScreen/ShoppingList.kt new file mode 100644 index 0000000..ddd71bd --- /dev/null +++ b/app/src/main/java/com/example/android_programming/composeui/Screens/OrderScreen/ShoppingList.kt @@ -0,0 +1,18 @@ +package com.example.android_programming.composeui.Screens.OrderScreen + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.runtime.Composable +import com.example.android_programming.composeui.Screens.LikeScreen.CardSneakerLike +import com.example.android_programming.model.SneakerItem + +@Composable +fun ShoppingList(list : List) { + Row { + Column { + for(item in list){ + CardSneakerLike(item = item) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/android_programming/composeui/Screens/OrderScreen/SubTotal.kt b/app/src/main/java/com/example/android_programming/composeui/Screens/OrderScreen/SubTotal.kt new file mode 100644 index 0000000..68a4be9 --- /dev/null +++ b/app/src/main/java/com/example/android_programming/composeui/Screens/OrderScreen/SubTotal.kt @@ -0,0 +1,87 @@ +package com.example.android_programming.composeui.Screens.OrderScreen + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.res.colorResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.example.android_programming.R + +@Composable +@Preview +fun SubTotal() { + Column( + modifier = Modifier + .padding(16.dp) + .clip(RoundedCornerShape(16.dp)) + .background(colorResource(id = R.color.figma)) + ){ + Row( + modifier = Modifier + .padding(10.dp, 5.dp) + .fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween + ){ + Row( + modifier = Modifier.weight(1f), + horizontalArrangement = Arrangement.Start + ){ + Text(text = "Sub total", fontSize = 15.sp) + } + Row( + modifier = Modifier.weight(1f), + horizontalArrangement = Arrangement.End + ){ + Text(text = "319.99 $", fontSize = 15.sp) + } + } + Row( + modifier = Modifier + .padding(10.dp, 5.dp) + .fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween + ){ + Row( + modifier = Modifier.weight(1f), + horizontalArrangement = Arrangement.Start + ){ + Text(text = "Taxes", fontSize = 15.sp) + } + Row( + modifier = Modifier.weight(1f), + horizontalArrangement = Arrangement.End + ){ + Text(text = "180 $", fontSize = 15.sp) + } + } + Row( + modifier = Modifier + .padding(10.dp, 5.dp) + .fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween + ){ + Row( + modifier = Modifier.weight(1f), + horizontalArrangement = Arrangement.Start + ){ + Text(text = "Total", fontSize = 15.sp) + } + Row( + modifier = Modifier.weight(1f), + horizontalArrangement = Arrangement.End + ){ + Text(text = "1900 $", fontSize = 15.sp) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/android_programming/Screens/ProfileScreen/Profile/Profile.kt b/app/src/main/java/com/example/android_programming/composeui/Screens/ProfileScreen/Profile/Profile.kt similarity index 55% rename from app/src/main/java/com/example/android_programming/Screens/ProfileScreen/Profile/Profile.kt rename to app/src/main/java/com/example/android_programming/composeui/Screens/ProfileScreen/Profile/Profile.kt index d15bcd1..a0dca25 100644 --- a/app/src/main/java/com/example/android_programming/Screens/ProfileScreen/Profile/Profile.kt +++ b/app/src/main/java/com/example/android_programming/composeui/Screens/ProfileScreen/Profile/Profile.kt @@ -1,4 +1,4 @@ -package com.example.android_programming.Screens.ProfileScreen.Profile +package com.example.android_programming.composeui.Screens.ProfileScreen.Profile import androidx.compose.foundation.Image import androidx.compose.foundation.background @@ -30,43 +30,13 @@ fun Person() { Column( modifier = Modifier .background(Color.White) - .fillMaxSize() - .padding(16.dp), - verticalArrangement = Arrangement.Top, - horizontalAlignment = Alignment.CenterHorizontally + .fillMaxSize(), + verticalArrangement = Arrangement.Center ) { - Image( - contentScale = ContentScale.FillBounds, - painter = painterResource(id = R.drawable.shailushai), - contentDescription = null, - modifier = Modifier - .size(120.dp) - .clip(CircleShape) - .border(2.dp, Color.Gray, CircleShape) - .background(Color.Gray) - .padding(8.dp) - ) - - Spacer(modifier = Modifier.height(16.dp)) - - Text( - text = "Шайлушай", - fontSize = 18.sp, - fontWeight = FontWeight.Bold - ) - - Text( - text = "shailushai@example.com", - fontSize = 16.sp, - color = Color.Gray - ) - - Spacer(modifier = Modifier.height(16.dp)) - + ProfileCard() } } - @Preview @Composable fun PersonPreview(){ diff --git a/app/src/main/java/com/example/android_programming/composeui/Screens/ProfileScreen/Profile/ProfileCard.kt b/app/src/main/java/com/example/android_programming/composeui/Screens/ProfileScreen/Profile/ProfileCard.kt new file mode 100644 index 0000000..ee56e32 --- /dev/null +++ b/app/src/main/java/com/example/android_programming/composeui/Screens/ProfileScreen/Profile/ProfileCard.kt @@ -0,0 +1,71 @@ +package com.example.android_programming.composeui.Screens.ProfileScreen.Profile + +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.drawWithContent +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.colorResource +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.example.android_programming.R + +@Preview +@Composable +fun ProfileCard() { + Row( + modifier = Modifier + .fillMaxWidth() + .padding(16.dp) + .clip(RoundedCornerShape(16.dp)) + .background(colorResource(id = R.color.figma)) + ){ + Column( + modifier = Modifier.fillMaxWidth(), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center + ){ + Image( + contentScale = ContentScale.Crop, + painter = painterResource(id = R.drawable.shailushai), + contentDescription = null, + modifier = Modifier + .size(150.dp) + .border(2.dp, Color.White, CircleShape) + .padding(16.dp) + .clip(CircleShape) + ) + + Text( + text = "Шайлушай", + fontSize = 18.sp, + fontWeight = FontWeight.Bold + ) + + Text( + text = "shailushai@example.com", + fontSize = 16.sp, + color = Color.Gray + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/android_programming/Screens/ProfileScreen/Profile/ProfileScreen.kt b/app/src/main/java/com/example/android_programming/composeui/Screens/ProfileScreen/Profile/ProfileScreen.kt similarity index 74% rename from app/src/main/java/com/example/android_programming/Screens/ProfileScreen/Profile/ProfileScreen.kt rename to app/src/main/java/com/example/android_programming/composeui/Screens/ProfileScreen/Profile/ProfileScreen.kt index 8eb1406..65340f1 100644 --- a/app/src/main/java/com/example/android_programming/Screens/ProfileScreen/Profile/ProfileScreen.kt +++ b/app/src/main/java/com/example/android_programming/composeui/Screens/ProfileScreen/Profile/ProfileScreen.kt @@ -1,4 +1,4 @@ -package com.example.android_programming.Screens.ProfileScreen.Profile; +package com.example.android_programming.composeui.Screens.ProfileScreen.Profile; import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement @@ -11,18 +11,21 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.requiredSize import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.Button +import androidx.compose.material.ButtonDefaults import androidx.compose.material.Text import androidx.compose.runtime.Composable; import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.colorResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.navigation.NavHostController import androidx.navigation.compose.rememberNavController -import com.example.android_programming.Navigation.NavController -import com.example.android_programming.Screens.ProfileScreen.SignIn.LoginScreen +import com.example.android_programming.R +import com.example.android_programming.composeui.Navigation.NavController +import com.example.android_programming.composeui.Screens.ProfileScreen.SignIn.LoginScreen @Composable fun ProfileScreen(navController: NavHostController) { @@ -38,6 +41,10 @@ fun ProfileScreen(navController: NavHostController) { .clip(RoundedCornerShape(20.dp)) ){ Button( + colors = ButtonDefaults.buttonColors( + backgroundColor = colorResource(id = R.color.figma_blue), + contentColor = Color.White + ), onClick = { navController.navigate("person") }, @@ -53,6 +60,10 @@ fun ProfileScreen(navController: NavHostController) { .clip(RoundedCornerShape(20.dp)) ){ Button( + colors = ButtonDefaults.buttonColors( + backgroundColor = colorResource(id = R.color.figma_blue), + contentColor = Color.White + ), onClick = { navController.navigate("login") }, @@ -62,21 +73,6 @@ fun ProfileScreen(navController: NavHostController) { Text(text = "Sign In") } } - Spacer(modifier = Modifier.height(16.dp)) - Row( - modifier = Modifier - .clip(RoundedCornerShape(20.dp)) - ){ - Button( - onClick = { - navController.navigate("signup") - }, - modifier = Modifier - .requiredSize(300.dp, 40.dp) - ) { - Text(text = "Sign Up") - } - } } } diff --git a/app/src/main/java/com/example/android_programming/composeui/Screens/ProfileScreen/SignIn/SignInCard.kt b/app/src/main/java/com/example/android_programming/composeui/Screens/ProfileScreen/SignIn/SignInCard.kt new file mode 100644 index 0000000..16558e5 --- /dev/null +++ b/app/src/main/java/com/example/android_programming/composeui/Screens/ProfileScreen/SignIn/SignInCard.kt @@ -0,0 +1,148 @@ +package com.example.android_programming.composeui.Screens.ProfileScreen.SignIn + +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.text.ClickableText +import androidx.compose.foundation.text.KeyboardActions +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material.Button +import androidx.compose.material.ButtonDefaults +import androidx.compose.material.Text +import androidx.compose.material.TextField +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.colorResource +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.input.ImeAction +import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.text.input.PasswordVisualTransformation +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.navigation.NavHostController +import com.example.android_programming.R + +@Composable +fun SignInCard(navController: NavHostController) { + Row( + modifier = Modifier + .fillMaxWidth() + .padding(16.dp) + .clip(RoundedCornerShape(16.dp)) + .background(colorResource(id = R.color.figma)) + ){ + Column( + modifier = Modifier.fillMaxWidth(), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center + ){ + var username by remember { mutableStateOf("") } + var password by remember { mutableStateOf("") } + + Text( + text = "Sign In", + fontSize = 24.sp, + fontWeight = FontWeight.Bold, + modifier = Modifier + .padding(16.dp) + ) + + TextField( + value = username, + onValueChange = { username = it }, + modifier = Modifier + .fillMaxWidth() + .height(50.dp) + .padding(16.dp, 0.dp) + .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)), + singleLine = true, + keyboardOptions = KeyboardOptions( + keyboardType = KeyboardType.Text, + imeAction = ImeAction.Next + ), + keyboardActions = KeyboardActions( + onNext = { + + } + ), + placeholder = { + Text( + text = "Username", + style = TextStyle(fontSize = 12.sp) + ) + } + ) + + Spacer(modifier = Modifier.height(16.dp)) + + TextField( + value = password, + onValueChange = { password = it }, + modifier = Modifier + .fillMaxWidth() + .height(50.dp) + .padding(16.dp, 0.dp) + .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)), + singleLine = true, + visualTransformation = PasswordVisualTransformation(), + keyboardOptions = KeyboardOptions( + keyboardType = KeyboardType.Text, + imeAction = ImeAction.Next + ), + + keyboardActions = KeyboardActions( + onNext = { + + } + ), + placeholder = { + Text( + text = "Password", + style = TextStyle(fontSize = 12.sp) + ) + } + ) + + Button( + colors = ButtonDefaults.buttonColors( + backgroundColor = colorResource(id = R.color.figma_blue), + contentColor = Color.White + ), + onClick = { + + }, + modifier = Modifier + .fillMaxWidth() + .padding(16.dp, 16.dp, 16.dp, 0.dp) + ) { + Text("Sign In") + } + ClickableText( + text = AnnotatedString("You do not have an account? Register!"), + modifier = Modifier + .padding(0.dp, 0.dp, 0.dp, 16.dp), + onClick = { + navController.navigate("signup") + } + ) + } + } +} diff --git a/app/src/main/java/com/example/android_programming/composeui/Screens/ProfileScreen/SignIn/SignInScreen.kt b/app/src/main/java/com/example/android_programming/composeui/Screens/ProfileScreen/SignIn/SignInScreen.kt new file mode 100644 index 0000000..784e199 --- /dev/null +++ b/app/src/main/java/com/example/android_programming/composeui/Screens/ProfileScreen/SignIn/SignInScreen.kt @@ -0,0 +1,45 @@ +package com.example.android_programming.composeui.Screens.ProfileScreen.SignIn + +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.text.BasicTextField +import androidx.compose.foundation.text.KeyboardActions +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material.Button +import androidx.compose.material.ButtonDefaults +import androidx.compose.material.Text +import androidx.compose.material.TextField +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.input.pointer.PointerIcon.Companion.Text +import androidx.compose.ui.res.colorResource +import androidx.compose.ui.semantics.SemanticsProperties.Text +import androidx.compose.ui.text.Placeholder +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.input.ImeAction +import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.text.input.PasswordVisualTransformation +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.navigation.NavController +import androidx.navigation.NavHostController +import com.example.android_programming.R +import androidx.compose.material.Text as Text1 + +@Composable +fun LoginScreen(navController: NavHostController) { + Column(modifier = Modifier + .fillMaxSize() + .background(Color.White), + verticalArrangement = Arrangement.Center + ) { + SignInCard(navController) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/android_programming/composeui/Screens/ProfileScreen/SignUp/SignUpCard.kt b/app/src/main/java/com/example/android_programming/composeui/Screens/ProfileScreen/SignUp/SignUpCard.kt new file mode 100644 index 0000000..357a5c2 --- /dev/null +++ b/app/src/main/java/com/example/android_programming/composeui/Screens/ProfileScreen/SignUp/SignUpCard.kt @@ -0,0 +1,225 @@ +package com.example.android_programming.composeui.Screens.ProfileScreen.SignUp + +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.text.KeyboardActions +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material.Button +import androidx.compose.material.ButtonDefaults +import androidx.compose.material.Text +import androidx.compose.material.TextField +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.colorResource +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.input.ImeAction +import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.text.input.PasswordVisualTransformation +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.example.android_programming.R + +@Composable +@Preview +fun SignUpCard() { + var username by remember { mutableStateOf("") } + var password by remember { mutableStateOf("") } + var sex by remember { mutableStateOf("") } + var name by remember { mutableStateOf("") } + var surname by remember { mutableStateOf("") } + Row( + modifier = Modifier + .fillMaxWidth() + .padding(16.dp) + .clip(RoundedCornerShape(16.dp)) + .background(colorResource(id = R.color.figma)) + ){ + Column( + modifier = Modifier.fillMaxWidth(), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center + ){ + Text( + text = "Sign Up", + fontSize = 24.sp, + fontWeight = FontWeight.Bold, + modifier = Modifier + .padding(16.dp) + ) + + Spacer(modifier = Modifier.height(16.dp)) + + TextField( + value = username, + onValueChange = { username = it }, + modifier = Modifier + .fillMaxWidth() + .height(50.dp) + .padding(16.dp, 0.dp) + .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)), + singleLine = true, + keyboardOptions = KeyboardOptions( + keyboardType = KeyboardType.Text, + imeAction = ImeAction.Next + ), + keyboardActions = KeyboardActions( + onNext = { + + } + ), + placeholder = { + Text( + text = "Username", + style = TextStyle(fontSize = 12.sp) + ) + } + ) + + Spacer(modifier = Modifier.height(16.dp)) + + TextField( + value = name, + onValueChange = { name = it }, + modifier = Modifier + .fillMaxWidth() + .height(50.dp) + .padding(16.dp, 0.dp) + .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)), + singleLine = true, + keyboardOptions = KeyboardOptions( + keyboardType = KeyboardType.Text, + imeAction = ImeAction.Next + ), + keyboardActions = KeyboardActions( + onNext = { + + } + ), + placeholder = { + Text( + text = "Name", + style = TextStyle(fontSize = 12.sp) + ) + } + ) + + Spacer(modifier = Modifier.height(16.dp)) + + TextField( + value = surname, + onValueChange = { surname = it }, + modifier = Modifier + .fillMaxWidth() + .height(50.dp) + .padding(16.dp, 0.dp) + .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)), + singleLine = true, + keyboardOptions = KeyboardOptions( + keyboardType = KeyboardType.Text, + imeAction = ImeAction.Next + ), + keyboardActions = KeyboardActions( + onNext = { + + } + ), + placeholder = { + Text( + text = "Surname", + style = TextStyle(fontSize = 12.sp) + ) + } + ) + + Spacer(modifier = Modifier.height(16.dp)) + + TextField( + value = sex, + onValueChange = { sex = it }, + modifier = Modifier + .fillMaxWidth() + .height(50.dp) + .padding(16.dp, 0.dp) + .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)), + singleLine = true, + keyboardOptions = KeyboardOptions( + keyboardType = KeyboardType.Text, + imeAction = ImeAction.Next + ), + keyboardActions = KeyboardActions( + onNext = { + + } + ), + placeholder = { + Text( + text = "Sex", + style = TextStyle(fontSize = 12.sp) + ) + } + ) + + Spacer(modifier = Modifier.height(16.dp)) + + TextField( + value = password, + onValueChange = { password = it }, + modifier = Modifier + .fillMaxWidth() + .height(50.dp) + .padding(16.dp, 0.dp) + .border(1.dp, Color.Gray, RoundedCornerShape(4.dp)), + singleLine = true, + visualTransformation = PasswordVisualTransformation(), + keyboardOptions = KeyboardOptions( + keyboardType = KeyboardType.Text, + imeAction = ImeAction.Next + ), + + keyboardActions = KeyboardActions( + onNext = { + + } + ), + placeholder = { + Text( + text = "Password", + style = TextStyle(fontSize = 12.sp) + ) + } + ) + + Button( + colors = ButtonDefaults.buttonColors( + backgroundColor = colorResource(id = R.color.figma_blue), + contentColor = Color.White + ), + onClick = { + + }, + modifier = Modifier + .fillMaxWidth() + .padding(16.dp) + ) { + Text("Sign Up") + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/android_programming/composeui/Screens/ProfileScreen/SignUp/SignUpScreen.kt b/app/src/main/java/com/example/android_programming/composeui/Screens/ProfileScreen/SignUp/SignUpScreen.kt new file mode 100644 index 0000000..71a30b4 --- /dev/null +++ b/app/src/main/java/com/example/android_programming/composeui/Screens/ProfileScreen/SignUp/SignUpScreen.kt @@ -0,0 +1,51 @@ +package com.example.android_programming.composeui.Screens.ProfileScreen.SignUp + +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.text.BasicTextField +import androidx.compose.foundation.text.KeyboardActions +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material.Button +import androidx.compose.material.DropdownMenu +import androidx.compose.material.Text +import androidx.compose.material.TextField +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.colorResource +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.input.ImeAction +import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.text.input.PasswordVisualTransformation +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.example.android_programming.composeui.Screens.ProfileScreen.SignIn.LoginScreen +import com.example.android_programming.R +import com.example.android_programming.composeui.Screens.ProfileScreen.SignIn.SignInCard + +@Composable +fun SignUpScreen() { + Column(modifier = Modifier + .fillMaxSize() + .background(Color.White), + verticalArrangement = Arrangement.Center + ) { + SignUpCard() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/android_programming/dao/SneakerDao.kt b/app/src/main/java/com/example/android_programming/dao/SneakerDao.kt new file mode 100644 index 0000000..aaa1c3c --- /dev/null +++ b/app/src/main/java/com/example/android_programming/dao/SneakerDao.kt @@ -0,0 +1,27 @@ +package com.example.android_programming.dao + +import androidx.room.Dao +import androidx.room.Delete +import androidx.room.Insert +import androidx.room.Query +import androidx.room.Update +import com.example.android_programming.model.Sneaker +import kotlinx.coroutines.flow.Flow + +@Dao +interface SneakerDao { + @Insert + suspend fun insert(sneaker: Sneaker) + + @Update + suspend fun update(sneaker: Sneaker) + + @Delete + suspend fun delete(sneaker: Sneaker) + + @Query("SELECT*FROM sneakers") + fun getAllSneakers(): Flow> + + @Query("SELECT*FROM sneakers WHERE id = :id") + suspend fun getSneakerById(id: Int) +} \ No newline at end of file diff --git a/app/src/main/java/com/example/android_programming/model/Sneaker.kt b/app/src/main/java/com/example/android_programming/model/Sneaker.kt new file mode 100644 index 0000000..1086691 --- /dev/null +++ b/app/src/main/java/com/example/android_programming/model/Sneaker.kt @@ -0,0 +1,19 @@ +package com.example.android_programming.model + +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.PrimaryKey + +@Entity(tableName = "sneakers") +data class Sneaker( + @PrimaryKey(autoGenerate = true) + val id: Int, + @ColumnInfo(name = "Brand") + val brand: String, + @ColumnInfo(name = "Model") + val model: String, + @ColumnInfo(name = "Description") + val description: String, + @ColumnInfo(name = "Price") + val price: Double +) diff --git a/app/src/main/java/com/example/android_programming/SneakerItem.kt b/app/src/main/java/com/example/android_programming/model/SneakerItem.kt similarity index 92% rename from app/src/main/java/com/example/android_programming/SneakerItem.kt rename to app/src/main/java/com/example/android_programming/model/SneakerItem.kt index f5aa84c..440871f 100644 --- a/app/src/main/java/com/example/android_programming/SneakerItem.kt +++ b/app/src/main/java/com/example/android_programming/model/SneakerItem.kt @@ -1,7 +1,8 @@ -package com.example.android_programming +package com.example.android_programming.model import android.os.Parcel import android.os.Parcelable +import com.example.android_programming.R data class SneakerItem( @@ -41,7 +42,7 @@ fun getSneakers(): List { return listOf( SneakerItem(R.drawable.sneaker, "Jordan", 159.99), SneakerItem(R.drawable.sneaker, "Jordan", 159.99), - SneakerItem(R.drawable.trash, "Nike", 159.99), + SneakerItem(R.drawable.sneaker, "Jordan", 159.99), SneakerItem(R.drawable.sneaker, "Jordan", 159.99), SneakerItem(R.drawable.sneaker, "Jordan", 159.99), SneakerItem(R.drawable.sneaker, "Jordan", 159.99), diff --git a/app/src/main/java/com/example/android_programming/ui/theme/Theme.kt b/app/src/main/java/com/example/android_programming/ui/theme/Theme.kt index 92afd3f..68c42cb 100644 --- a/app/src/main/java/com/example/android_programming/ui/theme/Theme.kt +++ b/app/src/main/java/com/example/android_programming/ui/theme/Theme.kt @@ -1,68 +1,64 @@ -/* -package com.example.android_programming.ui.theme - -import android.app.Activity -import android.os.Build -import androidx.compose.foundation.isSystemInDarkTheme -import androidx.compose.runtime.Composable -import androidx.compose.runtime.SideEffect -import androidx.compose.ui.graphics.toArgb -import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.platform.LocalView -import androidx.core.view.WindowCompat - -private val DarkColorScheme = darkColorScheme( - primary = Purple80, - secondary = PurpleGrey80, - tertiary = Pink80 -) - -private val LightColorScheme = lightColorScheme( - primary = Purple40, - secondary = PurpleGrey40, - tertiary = Pink40 - - */ -/* Other default colors to override - background = Color(0xFFFFFBFE), - surface = Color(0xFFFFFBFE), - onPrimary = Color.White, - onSecondary = Color.White, - onTertiary = Color.White, - onBackground = Color(0xFF1C1B1F), - onSurface = Color(0xFF1C1B1F), - *//* - -) - -@Composable -fun AndroidProgrammingTheme( - darkTheme: Boolean = isSystemInDarkTheme(), - // Dynamic color is available on Android 12+ - dynamicColor: Boolean = true, - content: @Composable () -> Unit -) { - val colorScheme = when { - dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { - val context = LocalContext.current - if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) - } - - darkTheme -> DarkColorScheme - else -> LightColorScheme - } - val view = LocalView.current - if (!view.isInEditMode) { - SideEffect { - val window = (view.context as Activity).window - window.statusBarColor = colorScheme.primary.toArgb() - WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = darkTheme - } - } - - MaterialTheme( - colorScheme = colorScheme, - typography = Typography, - content = content - ) -}*/ +//package com.example.android_programming.ui.theme +// +//import android.app.Activity +//import android.os.Build +//import androidx.compose.foundation.isSystemInDarkTheme +//import androidx.compose.material.MaterialTheme +//import androidx.compose.runtime.Composable +//import androidx.compose.runtime.SideEffect +//import androidx.compose.ui.graphics.Color +//import androidx.compose.ui.graphics.toArgb +//import androidx.compose.ui.platform.LocalContext +//import androidx.compose.ui.platform.LocalView +//import androidx.core.view.WindowCompat +// +//private val DarkColorScheme = darkColorScheme( +// primary = Purple80, +// secondary = PurpleGrey80, +// tertiary = Pink80 +//) +// +//private val LightColorScheme = lightColorScheme( +// primary = Purple40, +// secondary = PurpleGrey40, +// tertiary = Pink40, +// background = Color(0xFFFFFBFE), +// surface = Color(0xFFFFFBFE), +// onPrimary = Color.White, +// onSecondary = Color.White, +// onTertiary = Color.White, +// onBackground = Color(0xFF1C1B1F), +// onSurface = Color(0xFF1C1B1F), +//) +// +//@Composable +//fun AndroidProgrammingTheme( +// darkTheme: Boolean = isSystemInDarkTheme(), +// // Dynamic color is available on Android 12+ +// dynamicColor: Boolean = true, +// content: @Composable () -> Unit +//) { +// val colorScheme = when { +// dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { +// val context = LocalContext.current +// if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) +// } +// +// darkTheme -> DarkColorScheme +// else -> LightColorScheme +// } +// val view = LocalView.current +// if (!view.isInEditMode) { +// SideEffect { +// val window = (view.context as Activity).window +// window.statusBarColor = colorScheme.primary.toArgb() +// WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = darkTheme +// } +// } +// +// MaterialTheme( +// colorScheme = colorScheme, +// typography = Typography, +// content = content +// ) +//} diff --git a/app/src/main/res/drawable/sales.png b/app/src/main/res/drawable/sales.png new file mode 100644 index 0000000..cab1587 Binary files /dev/null and b/app/src/main/res/drawable/sales.png differ diff --git a/app/src/main/res/drawable/sneaker.png b/app/src/main/res/drawable/sneaker.png index 0516e4d..3c6a306 100644 Binary files a/app/src/main/res/drawable/sneaker.png and b/app/src/main/res/drawable/sneaker.png differ