AlertDialog при выходе

This commit is contained in:
v228a 2025-02-20 10:44:28 +03:00
parent 9ea2a7720f
commit 835ddd1afb
5 changed files with 73 additions and 3 deletions

View File

@ -1,8 +1,15 @@
package ru.myitschool.work.ui.profile package ru.myitschool.work.ui.profile
import android.content.DialogInterface
import android.graphics.Color
import android.graphics.Typeface
import android.os.Bundle import android.os.Bundle
import android.util.Log import android.util.Log
import android.view.View import android.view.View
import android.widget.TextView
import androidx.appcompat.app.AlertDialog
import androidx.core.content.ContextCompat
import androidx.core.content.res.ResourcesCompat
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
@ -78,11 +85,59 @@ class ProfileFragment : Fragment(R.layout.fragment_profile) {
viewModel.action.collectWhenStarted(this) { action -> viewModel.action.collectWhenStarted(this) { action ->
when(action) { when(action) {
is ProfileViewModel.Action.OpenLogin -> { is ProfileViewModel.Action.Logout -> {
findNavController().navigate(LoginDestination) { findNavController().navigate(LoginDestination) {
popUpTo<ProfileDestination> { inclusive = true } popUpTo<ProfileDestination> { inclusive = true }
} }
} }
is ProfileViewModel.Action.OpenLogin -> {
val builder = AlertDialog.Builder(requireContext())
builder.setTitle(ContextCompat.getContextForLanguage(requireContext()).getString(R.string.profile_logout_dialog));
builder.setMessage(ContextCompat.getContextForLanguage(requireContext()).getString(R.string.profile_logout_text_dialog))
builder.setPositiveButton(
ContextCompat.getContextForLanguage(requireContext()).getString(R.string.logout),
DialogInterface.OnClickListener { dialogInterface, i ->
viewModel.logout()
dialogInterface.dismiss()
})
builder.setNegativeButton(
ContextCompat.getContextForLanguage(requireContext()).getString(R.string.cancel),
DialogInterface.OnClickListener { dialogInterface, i ->
dialogInterface.dismiss()
})
val dialog = builder.create()
dialog.setOnShowListener {
val titleView = dialog.findViewById<TextView>(android.R.id.title)
val messageView = dialog.findViewById<TextView>(android.R.id.message)
titleView?.setTextAppearance(R.style.Theme_UiTemplate_TextH2)
messageView?.setTextAppearance(R.style.Theme_UiTemplate_TextH4)
val positiveButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE)
val negativeButton = dialog.getButton(AlertDialog.BUTTON_NEGATIVE)
positiveButton.setTextColor(ContextCompat.getColor(requireContext(), R.color.ErrorRed) )
negativeButton.setTextColor(ContextCompat.getColor(requireContext(), R.color.AccentBlue) )
}
// Установка кнопок
// Показать диалог
dialog.show()
}
is ProfileViewModel.Action.OpenLog -> { is ProfileViewModel.Action.OpenLog -> {
findNavController().navigate(EntryListDestination) { findNavController().navigate(EntryListDestination) {

View File

@ -37,11 +37,17 @@ class ProfileViewModel @Inject constructor(
updateUserInfo() updateUserInfo()
} }
fun logout(){
viewModelScope.launch {
logoutUseCase.get().invoke()
_action.emit(Action.Logout)
}
}
fun clickLogout() { fun clickLogout() {
viewModelScope.launch { viewModelScope.launch {
logoutUseCase.get().invoke()
_action.emit(Action.OpenLogin) _action.emit(Action.OpenLogin)
} }
} }
@ -108,6 +114,7 @@ class ProfileViewModel @Inject constructor(
data object OpenScan : Action data object OpenScan : Action
data object OpenLog : Action data object OpenLog : Action
data object OpenSearch : Action data object OpenSearch : Action
data object Logout : Action
} }
companion object { companion object {

View File

@ -23,4 +23,8 @@
<string name="qr_result_status_success">Успешно</string> <string name="qr_result_status_success">Успешно</string>
<string name="qr_result_status_cancel">Операция отменена</string> <string name="qr_result_status_cancel">Операция отменена</string>
<string name="qr_result_status_error">Что-то пошло не так</string> <string name="qr_result_status_error">Что-то пошло не так</string>
</resources> <string name="profile_logout_dialog">Выход</string>
<string name="profile_logout_text_dialog">Вы уверенны что хотите выйти из системы?</string>
<string name="logout">Выход</string>
<string name="cancel">Отмена</string>
</resources>

View File

@ -1,4 +1,6 @@
<resources> <resources>
<string name="app_name">NTO Pass</string> <string name="app_name">NTO Pass</string>
<string name="entry_history">Entry History</string> <string name="entry_history">Entry History</string>
<string name="logout">Logout</string>
<string name="cancel">Cancel</string>
</resources> </resources>

View File

@ -5,4 +5,6 @@
<string name="profile_main_textview">Home</string> <string name="profile_main_textview">Home</string>
<string name="profile_admin_button">Admin panel</string> <string name="profile_admin_button">Admin panel</string>
<string name="profile_list_button">Entry History</string> <string name="profile_list_button">Entry History</string>
<string name="profile_logout_dialog">Logout</string>
<string name="profile_logout_text_dialog">Are you sure you want to log out?</string>
</resources> </resources>