LoginDialog.kt 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import android.app.Dialog
  2. import android.content.DialogInterface
  3. import android.os.Bundle
  4. import android.view.View
  5. import android.widget.TextView
  6. import androidx.appcompat.app.AlertDialog
  7. import androidx.fragment.app.DialogFragment
  8. /*
  9. Использование:
  10. LoginDialog { login, password ->
  11. // тут реализация
  12. }.show(supportFragmentManager, null)
  13. */
  14. class LoginDialog(private val callback: (login: String, password: String)->Unit) : DialogFragment() {
  15. override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
  16. return activity?.let {
  17. val builder = AlertDialog.Builder(it)
  18. val loginLayout = layoutInflater.inflate(R.layout.activity_login, null)
  19. val loginText = loginLayout.findViewById<com.google.android.material.textfield.TextInputEditText>(R.id.login)
  20. val loginError = loginLayout.findViewById<com.google.android.material.textfield.TextInputLayout>(R.id.login_error)
  21. val passwordText = loginLayout.findViewById<com.google.android.material.textfield.TextInputEditText>(R.id.password)
  22. val passwordError = loginLayout.findViewById<com.google.android.material.textfield.TextInputLayout>(R.id.password_error)
  23. val loginButton = loginLayout.findViewById<TextView>(R.id.login_button)
  24. val myDialog = builder.setView(loginLayout)
  25. .setTitle("Авторизация!")
  26. .setIcon(R.mipmap.ico)
  27. .create()
  28. loginButton.setOnClickListener {
  29. var hasErrors = false
  30. if(loginText.text.isNullOrEmpty()){
  31. hasErrors = true
  32. loginError.error = "Поле должно быть заполнено"
  33. }
  34. else
  35. loginError.error = ""
  36. if(passwordText.text.isNullOrEmpty()){
  37. hasErrors = true
  38. passwordError.error = "Поле должно быть заполнено"
  39. } else
  40. passwordError.error = ""
  41. if(!hasErrors) {
  42. myDialog.dismiss()
  43. callback.invoke(
  44. loginText.text.toString(),
  45. passwordText.text.toString()
  46. )
  47. }
  48. }
  49. myDialog
  50. } ?: throw IllegalStateException("Activity cannot be null")
  51. }
  52. }