Feature: forgot commit in second lab, now new design in third, add dependencies for room

This commit is contained in:
ArtemEmelyanov 2023-10-14 20:46:05 +04:00
parent 7d44afcf11
commit ff39c5c854
48 changed files with 1849 additions and 1298 deletions

View File

@ -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")
}

View File

@ -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?) {

View File

@ -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")
}
}
}

View File

@ -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")
}
}
}

View File

@ -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)
}
}
}

View File

@ -1,5 +0,0 @@
package com.example.android_programming.Screens.HomeScreen.BrandScrollBar
data class ItemFilterByBrand(
val imageId: Int,
)

View File

@ -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)
}
}
}
}
}
}
}

View File

@ -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()
}

View File

@ -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()
}

View File

@ -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()
}

View File

@ -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

View File

@ -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() })
}
}
}
}

View File

@ -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

View File

@ -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()
}
}

View File

@ -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")
}
}
}
}

View File

@ -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 = {

View File

@ -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")
}
}
}

View File

@ -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))
}*/

View File

@ -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)
}
}
}

View File

@ -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")
}
}
}
}

View File

@ -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() })
}

View File

@ -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)
}
}
}
}

View File

@ -0,0 +1,5 @@
package com.example.android_programming.composeui.Screens.HomeScreen.FilterByBrand
data class ItemFilterByBrand(
val imageId: Int,
)

View File

@ -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

View File

@ -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)
}
}

View File

@ -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()
)
}
}

View File

@ -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

View File

@ -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
)
}
}
}

View File

@ -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)
}
}
}
}
}

View File

@ -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")
}
}
}

View File

@ -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() {

View File

@ -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)
)
}
)
}
}
}

View File

@ -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()
}

View File

@ -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<SneakerItem>) {
Row {
Column {
for(item in list){
CardSneakerLike(item = item)
}
}
}
}

View File

@ -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)
}
}
}
}

View File

@ -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(){

View File

@ -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
)
}
}
}

View File

@ -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")
}
}
}
}

View File

@ -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")
}
)
}
}
}

View File

@ -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)
}
}

View File

@ -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")
}
}
}
}

View File

@ -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()
}
}

View File

@ -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<List<Sneaker>>
@Query("SELECT*FROM sneakers WHERE id = :id")
suspend fun getSneakerById(id: Int)
}

View File

@ -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
)

View File

@ -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<SneakerItem> {
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),

View File

@ -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
// )
//}

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 29 KiB