app/src/main/java/ch/epfl/sdp/blindly/profile_setup/ProfileGenderMore.kt
package ch.epfl.sdp.blindly.profile_setup
import android.content.Intent
import android.os.Bundle
import android.view.View
import android.view.View.INVISIBLE
import android.view.View.VISIBLE
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import ch.epfl.sdp.blindly.R
import ch.epfl.sdp.blindly.user.User
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json
private val REGEX = Regex("^[a-zA-Z]*$")
/**
* Activity that allows the user to specify a certain gender.
*/
class ProfileGenderMore : AppCompatActivity() {
private lateinit var userBuilder: User.Builder
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.profile_setup_gender_more)
val bundle = intent.extras
userBuilder = bundle?.getString(EXTRA_USER)?.let { Json.decodeFromString(it) }!!
}
/**
* Lets user to precise their gender, in order to avoid incomprehensible text
* or numbers user input is checked to be alpabetical. If it's not alphabetical or no input
* is given, an error message is shown. Otherwise Orientation page is started.
*
* @param view the current view
*/
fun startProfileOrientation(view: View) {
findViewById<TextView>(R.id.please_specify_warning).visibility = INVISIBLE
findViewById<TextView>(R.id.use_only_letters_warning).visibility = INVISIBLE
val gender = findViewById<TextView>(R.id.text_p4_2).text.toString().trim()
if (!gender.matches(REGEX)) {
//incorrect format, output error
findViewById<TextView>(R.id.use_only_letters_warning).visibility = VISIBLE
} else {
val len = gender.length
if (len > 0) {
val intent = Intent(this, ProfileOrientation::class.java)
val bundle = Bundle()
userBuilder.setGender(gender)
bundle.putSerializable(
EXTRA_USER,
Json.encodeToString(User.Builder.serializer(), userBuilder)
)
intent.putExtras(bundle)
startActivity(intent)
} else {
//empty text, output error
findViewById<TextView>(R.id.please_specify_warning).visibility = VISIBLE
}
}
}
}