diff --git a/app/src/main/java/com/example/mobileapp/MainActivity.kt b/app/src/main/java/com/example/mobileapp/MainActivity.kt index 0b0ea0f..d84ae90 100644 --- a/app/src/main/java/com/example/mobileapp/MainActivity.kt +++ b/app/src/main/java/com/example/mobileapp/MainActivity.kt @@ -1,29 +1,16 @@ package com.example.mobileapp import android.os.Bundle -import android.util.Log import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface -import androidx.compose.runtime.Composable -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Modifier -import androidx.navigation.NavHostController -import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.rememberNavController import com.example.mobileapp.components.NavBar -import com.example.mobileapp.database.MobileAppDataBase -import com.example.mobileapp.entities.Mail -import com.example.mobileapp.entities.MailSingleton -import com.example.mobileapp.entities.Story -import com.example.mobileapp.entities.StorySingleton +import com.example.mobileapp.database.entities.User import com.example.mobileapp.ui.theme.MobileAppTheme -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { @@ -42,3 +29,25 @@ class MainActivity : ComponentActivity() { } } } + +class GlobalUser private constructor() { + private var user: User? = null + + fun setUser(user: User?) { + this.user = user + } + + fun getUser(): User? { + return user + } + + companion object { + private var instance: GlobalUser? = null + + fun getInstance(): GlobalUser { + return instance ?: synchronized(this) { + instance ?: GlobalUser().also { instance = it } + } + } + } +} diff --git a/app/src/main/java/com/example/mobileapp/components/InputContent.kt b/app/src/main/java/com/example/mobileapp/components/InputContent.kt index 7af5b15..78dde21 100644 --- a/app/src/main/java/com/example/mobileapp/components/InputContent.kt +++ b/app/src/main/java/com/example/mobileapp/components/InputContent.kt @@ -58,8 +58,11 @@ fun PlaceholderInputField(label: String, startValue: String? = null, isSingleLin @OptIn(ExperimentalMaterial3Api::class) @Composable -fun PasswordInputField(label: String, onPasswordChanged: (String) -> Unit){ +fun PasswordInputField(label: String, startValue: String? = null, onPasswordChanged: (String) -> Unit){ var text = remember { mutableStateOf("") } + startValue?.let{ + text.value = startValue + } OutlinedTextField( value = text.value, diff --git a/app/src/main/java/com/example/mobileapp/components/NavigationBar.kt b/app/src/main/java/com/example/mobileapp/components/NavigationBar.kt index c259de7..aa8b3a4 100644 --- a/app/src/main/java/com/example/mobileapp/components/NavigationBar.kt +++ b/app/src/main/java/com/example/mobileapp/components/NavigationBar.kt @@ -36,6 +36,7 @@ import com.example.mobileapp.R import com.example.mobileapp.screens.Authorization import com.example.mobileapp.screens.EditMailScreen import com.example.mobileapp.screens.EditStoryScreen +import com.example.mobileapp.screens.EditUserScreen import com.example.mobileapp.screens.ListDataScreen import com.example.mobileapp.screens.ListMailScreen import com.example.mobileapp.screens.MainScreen @@ -97,45 +98,49 @@ fun NavBar(navController: NavHostController) { modifier = Modifier.padding(innerPaddings) ) { composable("authorization"){ - Authorization(navController = navController) bottomBarState.value = false + Authorization(navController = navController) } composable("registration"){ - Registration(navController = navController) bottomBarState.value = false + Registration(navController = navController) } composable("main"){ - MainScreen(navController = navController) bottomBarState.value = true + MainScreen(navController = navController) } composable("story"){ - ListDataScreen(navController = navController) bottomBarState.value = true + ListDataScreen(navController = navController) } composable("mail"){ - ListMailScreen(navController = navController) bottomBarState.value = true + ListMailScreen(navController = navController) } composable("settings"){ - SettingsScreen(navController = navController) bottomBarState.value = true + SettingsScreen(navController = navController) } composable("editstory"){ // Без аргумента - EditStoryScreen(navController = navController) bottomBarState.value = false + EditStoryScreen(navController = navController) } composable( "editstory/{id}", - arguments = listOf(navArgument("id") { type = NavType.IntType }) + arguments = listOf(navArgument("id") { type = NavType.IntType }) //С аргументом ) { backStackEntry -> backStackEntry.arguments?.let { - EditStoryScreen(navController = navController, storyId = it.getInt("id")) bottomBarState.value = false + EditStoryScreen(navController = navController, storyId = it.getInt("id")) } } composable("editmail"){ // Без аргумента - EditMailScreen(navController = navController) bottomBarState.value = false + EditMailScreen(navController = navController) + } + composable("edituser"){ + bottomBarState.value = false + EditUserScreen(navController = navController) } } } diff --git a/app/src/main/java/com/example/mobileapp/database/entities/Mail.kt b/app/src/main/java/com/example/mobileapp/database/entities/Mail.kt index 2b489f0..2ca6702 100644 --- a/app/src/main/java/com/example/mobileapp/database/entities/Mail.kt +++ b/app/src/main/java/com/example/mobileapp/database/entities/Mail.kt @@ -4,7 +4,6 @@ import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.ForeignKey import androidx.room.PrimaryKey -import java.util.Calendar import java.util.Date @Entity( @@ -21,7 +20,7 @@ import java.util.Date ) data class Mail( @PrimaryKey(autoGenerate = true) - var id: Int? = null, + val id: Int? = null, @ColumnInfo(name = "message") val message: String, @ColumnInfo(name = "postdate") diff --git a/app/src/main/java/com/example/mobileapp/database/entities/User.kt b/app/src/main/java/com/example/mobileapp/database/entities/User.kt index 0f160b5..3255144 100644 --- a/app/src/main/java/com/example/mobileapp/database/entities/User.kt +++ b/app/src/main/java/com/example/mobileapp/database/entities/User.kt @@ -1,5 +1,6 @@ package com.example.mobileapp.database.entities +import android.graphics.Bitmap import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.PrimaryKey @@ -7,13 +8,15 @@ import androidx.room.PrimaryKey @Entity(tableName = "users") data class User( @PrimaryKey(autoGenerate = true) - var id: Int? = null, + val id: Int? = null, @ColumnInfo(name = "login") val login: String, @ColumnInfo(name = "password") val password: String, @ColumnInfo(name = "email") val email: String, + @ColumnInfo(name = "photo") + val photo: Bitmap? = null ){ override fun hashCode(): Int { return id ?: -1 diff --git a/app/src/main/java/com/example/mobileapp/entities/Mail.kt b/app/src/main/java/com/example/mobileapp/entities/Mail.kt deleted file mode 100644 index 4572350..0000000 --- a/app/src/main/java/com/example/mobileapp/entities/Mail.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.example.mobileapp.entities - -data class Mail( - val id: Int, - val userId: Int, - val username: String, - val message: String -) diff --git a/app/src/main/java/com/example/mobileapp/entities/MailSingleton.kt b/app/src/main/java/com/example/mobileapp/entities/MailSingleton.kt deleted file mode 100644 index a741c7b..0000000 --- a/app/src/main/java/com/example/mobileapp/entities/MailSingleton.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.example.mobileapp.entities - -class MailSingleton { - companion object { - val mailList: MutableList = mutableListOf() - } - - fun addMail(mail: Mail) { - mailList.add(mail) - } - - fun getMailList(): List { - return mailList.toList() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/example/mobileapp/entities/Story.kt b/app/src/main/java/com/example/mobileapp/entities/Story.kt deleted file mode 100644 index 7546b1b..0000000 --- a/app/src/main/java/com/example/mobileapp/entities/Story.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.example.mobileapp.entities - -data class Story( - val id: Int, - val title: String, - val description: String, - val cover: Int -) diff --git a/app/src/main/java/com/example/mobileapp/entities/StorySingleton.kt b/app/src/main/java/com/example/mobileapp/entities/StorySingleton.kt deleted file mode 100644 index b1487e8..0000000 --- a/app/src/main/java/com/example/mobileapp/entities/StorySingleton.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.example.mobileapp.entities - -class StorySingleton { - companion object { - val storyList: MutableList = mutableListOf() - } - - fun addStory(story: Story) { - storyList.add(story) - } - - fun getStoryList(): List { - return storyList.toList() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/example/mobileapp/entities/User.kt b/app/src/main/java/com/example/mobileapp/entities/User.kt deleted file mode 100644 index 9da8030..0000000 --- a/app/src/main/java/com/example/mobileapp/entities/User.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.example.mobileapp.entities - -data class User( - val email: String, - val login: String, - val password: String -) diff --git a/app/src/main/java/com/example/mobileapp/screens/EditScreens.kt b/app/src/main/java/com/example/mobileapp/screens/EditScreens.kt index 93b6b75..720efd8 100644 --- a/app/src/main/java/com/example/mobileapp/screens/EditScreens.kt +++ b/app/src/main/java/com/example/mobileapp/screens/EditScreens.kt @@ -181,4 +181,67 @@ fun EditMailScreen(navController: NavHostController) { NavigationButton(navController = navController, destination = "mail", label = "Назад", backgroundColor = ButtonColor2, textColor = Color.White) } +} + +@Composable +fun EditUserScreen(navController: NavHostController){ + val context = LocalContext.current + + val photo = remember { mutableStateOf(BitmapFactory.decodeResource(context.resources, R.drawable.photoplaceholder)) } + val name = remember { mutableStateOf("") } + val password = remember { mutableStateOf("") } + val email = remember { mutableStateOf("") } + + val imageData = remember { mutableStateOf(null) } + val launcher = + rememberLauncherForActivityResult(ActivityResultContracts.GetContent()) {uri: Uri? -> + imageData.value = uri + } + imageData.value?.let { + if (Build.VERSION.SDK_INT < 28) { + photo.value = MediaStore.Images + .Media.getBitmap(context.contentResolver, imageData.value) + + } else { + val source = ImageDecoder + .createSource(context.contentResolver, imageData.value!!) + photo.value = ImageDecoder.decodeBitmap(source) + } + } + + Column( + modifier = Modifier + .fillMaxSize() + .padding(bottom = 8.dp), + verticalArrangement = Arrangement.Bottom + ) { + Image( + bitmap = photo.value.asImageBitmap(), + contentDescription = "editplaceholder", + contentScale = ContentScale.Crop, + modifier = Modifier + .size(384.dp) + .padding(8.dp) + .align(Alignment.CenterHorizontally)) + ActiveButton(label = "Выбрать фото", backgroundColor = ButtonColor1, textColor = Color.Black, onClickAction = { + launcher.launch("image/*") + }) + PlaceholderInputField(label = "Никнейм", isSingleLine = true, + startValue = name.value, onTextChanged = { newName -> + name.value = newName + }) + PlaceholderInputField(label = "Пароль", isSingleLine = true, + startValue = password.value, onTextChanged = { newPassword -> + password.value = newPassword + }) + PlaceholderInputField(label = "Почта", isSingleLine = true, + startValue = email.value, onTextChanged = { newEmail -> + email.value = newEmail + }) + ActiveButton(label = "Сохранить", backgroundColor = ButtonColor1, textColor = Color.Black, onClickAction = { + //edit.value = !edit.value + }) + NavigationButton(navController = navController, destination = "story", label = "Назад", + backgroundColor = ButtonColor2, textColor = Color.White) + } } \ No newline at end of file diff --git a/app/src/main/java/com/example/mobileapp/screens/ListDataScreen.kt b/app/src/main/java/com/example/mobileapp/screens/ListDataScreen.kt index f588285..70680df 100644 --- a/app/src/main/java/com/example/mobileapp/screens/ListDataScreen.kt +++ b/app/src/main/java/com/example/mobileapp/screens/ListDataScreen.kt @@ -18,7 +18,6 @@ import com.example.mobileapp.components.DataListScroll import com.example.mobileapp.components.NavBar import com.example.mobileapp.database.MobileAppDataBase import com.example.mobileapp.database.entities.Story -import com.example.mobileapp.entities.StorySingleton import com.example.mobileapp.ui.theme.BackgroundItem1 import com.example.mobileapp.ui.theme.BackgroundItem2 import kotlinx.coroutines.Dispatchers