Finished StarterNameActivity

This commit is contained in:
adrienmalin
2018-12-02 23:44:10 +01:00
parent 8b8aecb1c6
commit 76d60dfb2c
31 changed files with 476 additions and 168 deletions

View File

@ -1,55 +1,75 @@
package adrienmalin.pingpoints
import android.annotation.SuppressLint
import android.content.Context
import android.content.SharedPreferences
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.text.method.LinkMovementMethod
import android.view.View
import android.widget.*
import android.speech.tts.TextToSpeech
import android.content.Intent
import android.speech.SpeechRecognizer
val CHECK_TTS = 1
class StarterNameActivity : AppCompatActivity() {
var player1NameInput: AutoCompleteTextView = null
var player2NameInput: AutoCompleteTextView = null
var starterRadioGroup: RadioGroup = null
var previousMatch: SharedPreferences = null
var player1NameInput: AutoCompleteTextView? = null
var player2NameInput: AutoCompleteTextView? = null
var starterRadioGroup: RadioGroup? = null
var enableTtsSwitch: Switch? = null
var enableSttSwitch: Switch? = null
var previousMatch: SharedPreferences? = null
var previousPlayers: Set<String> = emptySet()
@SuppressLint("ClickableViewAccessibility")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_starter_name)
// Set HTML text for icons credits
findViewById<TextView>(R.id.iconsCredit).run {
setHtmlText(getString(R.string.iconCredits))
movementMethod = LinkMovementMethod.getInstance()
}
// Find views
player1NameInput = findViewById(R.id.player1Name)
player2NameInput = findViewById(R.id.player2Name)
starterRadioGroup = findViewById(R.id.starterRadioGroup)
enableTtsSwitch = findViewById(R.id.enableTtsSwitch)
enableSttSwitch = findViewById(R.id.enableSttSwitch)
enableTtsSwitch?.setOnCheckedChangeListener { view, isChecked -> checkTTS() }
enableTtsSwitch?.setOnTouchListener { view, event -> checkTTS(); false}
enableSttSwitch?.setOnCheckedChangeListener { view, isChecked -> checkSTT() }
enableSttSwitch?.setOnTouchListener { view, event -> checkSTT(); false}
// Restore
previousMatch = getPreferences(Context.MODE_PRIVATE)
previousPlayers = previousMatch.getStringSet("previousPlayers", emptySet())
val previousPlayersAdapter = ArrayAdapter<String>(
this,
R.layout.activity_starter_name,
previousPlayers.toList())
player1NameInput = findViewById<AutoCompleteTextView>(R.id.player1Name)
player1NameInput?.run {
setText(
previousMatch.getString(
"previousPlayer2",
getString(R.string.player_1_default_name)),
TextView.BufferType.EDITABLE)
setAdapter(previousPlayersAdapter)
threshold = 1
previousMatch?.let {
previousPlayers = it.getStringSet("previousPlayers", emptySet())
val adapter = ArrayAdapter<String>( this, android.R.layout.simple_list_item_1, previousPlayers.toList())
player1NameInput?.run {
setText(
it.getString("previousPlayer2", getString(R.string.player_1_default_name)),
TextView.BufferType.EDITABLE)
setAdapter(adapter)
}
player2NameInput?.run{
setText(
it.getString("previousPlayer1", getString(R.string.player_2_default_name)),
TextView.BufferType.EDITABLE)
setAdapter(adapter)
}
starterRadioGroup?.check(it.getInt("previousStarterId", R.id.radioPlayer1Starts))
enableTtsSwitch?.isChecked = it.getBoolean("enableTTS", false)
enableSttSwitch?.isChecked = it.getBoolean("enableSTT", false)
}
player2NameInput = findViewById<AutoCompleteTextView>(R.id.player2Name)
player2NameInput?.run{
setText(
previousMatch.getString(
"previousPlayer1",
getString(R.string.player_2_default_name)),
TextView.BufferType.EDITABLE)
setAdapter(previousPlayersAdapter)
threshold = 1
}
starterRadioGroup = findViewById<RadioGroup>(R.id.starterRadioGroup)
starterRadioGroup?.check(previousMatch.getInt("previousStarterId", 0))
}
fun swapNames(view: View) {
@ -58,19 +78,61 @@ class StarterNameActivity : AppCompatActivity() {
}
}
fun checkTTS(){
enableTtsSwitch?.let {
if (it.isChecked) {
Intent().run {
action = TextToSpeech.Engine.ACTION_CHECK_TTS_DATA
startActivityForResult(this, CHECK_TTS)
}
}
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
when (requestCode) {
CHECK_TTS -> {
if (resultCode != TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
Toast.makeText(applicationContext, R.string.TTS_unavailable, Toast.LENGTH_LONG).show()
enableTtsSwitch?.isChecked = false
Intent().run {
action = TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA
startActivity(this)
}
}
}
else -> {
}
}
}
fun checkSTT(){
enableSttSwitch?.let {
if (it.isChecked) {
if (!SpeechRecognizer.isRecognitionAvailable(this)) {
Toast.makeText(applicationContext, R.string.STT_unavailable, Toast.LENGTH_LONG).show()
it.isChecked = false
}
}
}
}
fun startMatch(view: View) {
val player1Name = player1NameInput?.text.toString()
val player2Name = player2NameInput?.text.toString()
// Save
previousMatch.edit().run{
previousMatch?.edit()?.run{
putString("previousPlayer1", player1Name)
putString("previousPlayer2", player2Name)
putInt("previousStarterId", starterRadioGroup?.checkedRadioButtonId)
putStringSet(
"previousPlayers",
previousPlayers.plus(player1Name).plus(player2Name))
starterRadioGroup?.let{ putInt("previousStarterId", it.checkedRadioButtonId) }
previousPlayers?.let { putStringSet("previousPlayers", it.plus(player1Name).plus(player2Name)) }
enableTtsSwitch?.let { putBoolean("enableTTS", it.isChecked) }
enableSttSwitch?.let { putBoolean("enableSTT", it.isChecked) }
commit()
}
finish()
}
}

View File

@ -0,0 +1,13 @@
package adrienmalin.pingpoints
import android.os.Build
import android.text.Html
import android.widget.TextView
fun TextView.setHtmlText(htmlText: String) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
this.setText(Html.fromHtml(htmlText, Html.FROM_HTML_MODE_COMPACT));
} else {
this.setText(Html.fromHtml(htmlText));
}
}