Split into functions

This commit is contained in:
adrienmalin 2018-12-08 02:37:57 +01:00
parent 73f59c8dcf
commit 6c1ff4f20f
3 changed files with 118 additions and 89 deletions

View File

@ -34,7 +34,10 @@ class MatchActivity : AppCompatActivity() {
override fun onDone(id: String) {
SttDialog().show( supportFragmentManager, "SttDialog")
}
override fun onStart(id: String) {}
@Suppress("OverridingDeprecatedMember")
override fun onError(id: String) {}
}
@ -43,7 +46,12 @@ class MatchActivity : AppCompatActivity() {
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
setContentView(R.layout.activity_match)
// Init ViewModel
initMatchModel()
findViews()
updateUI()
}
fun initMatchModel() {
matchModel = ViewModelProviders.of(this).get(MatchModel::class.java).apply {
if (!matchStarted) {
intent.apply {
@ -62,19 +70,15 @@ class MatchActivity : AppCompatActivity() {
ttsEnabled = getBooleanExtra("enableTTS", false)
sttEnabled = getBooleanExtra("enableSTT", false)
saveState()
if (ttsEnabled) tts = TextToSpeech(this@MatchActivity, WaitForTtsInit())
if (!sttEnabled) showPopUp(getString(R.string.button_hint))
}
if (ttsEnabled) {
tts = TextToSpeech(this@MatchActivity, WaitForTtsInit())
if (sttEnabled)
tts?.setOnUtteranceProgressListener(SttAfterTts())
}
if (!sttEnabled){
showPopUp(getString(R.string.button_hint))
}
}
}
// Find views
fun findViews() {
textScore = findViewById(R.id.textScore)
textService = findViewById(R.id.textService)
buttons = arrayOf(
@ -85,13 +89,12 @@ class MatchActivity : AppCompatActivity() {
findViewById(R.id.imgService0),
findViewById(R.id.imgService1)
)
// Set HTML text for icons credits
findViewById<TextView>(R.id.iconsCredit).run {
findViewById<TextView>(R.id.iconsCredit).apply {
setText(fromHtml(getString(R.string.iconCredits)))
movementMethod = LinkMovementMethod.getInstance()
}
updateUI()
}
fun updateUI() {
@ -103,9 +106,8 @@ class MatchActivity : AppCompatActivity() {
)
textService?.text = getString(R.string.service, players[serviceSide].name)
for ((button, player) in buttons.zip(players)) {
for ((button, player) in buttons.zip(players))
button.text = fromHtml(getString(R.string.button_text, player.name, player.score))
}
imageViews[0].setImageResource(
when(serviceSide) {
@ -120,7 +122,29 @@ class MatchActivity : AppCompatActivity() {
}
)
if (matchFinished) {
if (matchFinished)
proclaimVictory()
else {
if (ttsEnabled) {
var scoreSpeech: String = getString(
R.string.update_score_speech,
players[serviceSide].score,
players[relaunchSide].score,
players[serviceSide].name
)
if (matchPoint) scoreSpeech += getString(R.string.match_point)
say(scoreSpeech)
}
if (sttEnabled) {
if (ttsEnabled) tts?.setOnUtteranceProgressListener(SttAfterTts())
else SttDialog().show(supportFragmentManager, "SttDialog")
}
}
}
}
fun proclaimVictory() {
matchModel?.apply {
val (loser, winner) = players.sortedBy { it.score }
if (ttsEnabled) {
say(
@ -141,22 +165,6 @@ class MatchActivity : AppCompatActivity() {
putExtra("player2Score", players[1].score)
}
)
} else {
if (ttsEnabled) {
var scoreSpeech: String = getString(
R.string.update_score_speech,
players[serviceSide].score,
players[relaunchSide].score,
players[serviceSide].name
)
if (matchPoint)
scoreSpeech += getString(R.string.match_point)
say(scoreSpeech)
} else {
if (sttEnabled)
SttDialog().show(supportFragmentManager, "SttDialog")
}
}
}
}

View File

@ -36,14 +36,21 @@ class StarterNameActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_starter_name)
// Find views
findViews()
checkTtsAvailable()
checkSttAvailable()
restorePreviousSettings()
}
fun findViews() {
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)
}
// Restore previous data
fun restorePreviousSettings() {
previousMatch = getPreferences(Context.MODE_PRIVATE).apply {
getStringSet("previousPlayers", emptySet())?.let { previousPlayers = it.toSet() }
val adapter = ArrayAdapter<String>(
@ -66,8 +73,9 @@ class StarterNameActivity : AppCompatActivity() {
enableTtsSwitch?.isChecked = getBoolean("enableTTS", false)
enableSttSwitch?.isChecked = getBoolean("enableSTT", false)
}
}
// Check if function is available on switch checked or swapped
fun checkTtsAvailable() {
enableTtsSwitch?.setOnCheckedChangeListener { _, isChecked ->
if (isChecked) {
Intent().apply {
@ -76,28 +84,6 @@ class StarterNameActivity : AppCompatActivity() {
}
}
}
enableSttSwitch?.setOnCheckedChangeListener { _, isChecked ->
if (isChecked) {
if (SpeechRecognizer.isRecognitionAvailable(this@StarterNameActivity)) {
// Ask for record audio permission
if (ContextCompat.checkSelfPermission(
this@StarterNameActivity,
Manifest.permission.RECORD_AUDIO
) != PackageManager.PERMISSION_GRANTED
) {
ActivityCompat.requestPermissions(
this@StarterNameActivity,
arrayOf(Manifest.permission.RECORD_AUDIO),
ASK_PERMISSIONS_RECORD_AUDIO
)
}
} else {
enableSttSwitch?.isChecked = false
showText(R.string.STT_unavailable)
}
}
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
@ -118,6 +104,30 @@ class StarterNameActivity : AppCompatActivity() {
}
}
fun checkSttAvailable() {
enableSttSwitch?.setOnCheckedChangeListener { _, isChecked ->
if (isChecked) {
if (SpeechRecognizer.isRecognitionAvailable(this@StarterNameActivity)) {
// Ask for record audio permission
if (ContextCompat.checkSelfPermission(
this@StarterNameActivity,
Manifest.permission.RECORD_AUDIO
) != PackageManager.PERMISSION_GRANTED
) {
ActivityCompat.requestPermissions(
this@StarterNameActivity,
arrayOf(Manifest.permission.RECORD_AUDIO),
ASK_PERMISSIONS_RECORD_AUDIO
)
}
} else {
enableSttSwitch?.isChecked = false
showText(R.string.STT_unavailable)
}
}
}
}
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
when (requestCode) {
ASK_PERMISSIONS_RECORD_AUDIO -> {
@ -144,7 +154,7 @@ class StarterNameActivity : AppCompatActivity() {
val enableTTS = enableTtsSwitch?.isChecked
val enableSTT = enableSttSwitch?.isChecked
// Save
// Save settings
previousMatch?.edit()?.apply{
player1Name.let { putString("previousPlayer1", it) }
player2Name.let { putString("previousPlayer2", it) }

View File

@ -3,6 +3,7 @@ package adrienmalin.pingpoints
import android.arch.lifecycle.ViewModelProviders
import android.content.Context
import android.content.Intent
import android.content.SharedPreferences
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.support.v7.app.AppCompatDelegate
@ -15,17 +16,21 @@ import kotlin.math.min
class VictoryActivity : AppCompatActivity() {
var victoryModel: VictoryModel? = null
var previousMatch: SharedPreferences? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
setContentView(R.layout.activity_victory)
val previousMatch = getPreferences(Context.MODE_PRIVATE)
initVictoryModel()
previousMatch = getPreferences(Context.MODE_PRIVATE)
updateUI()
saveScore()
}
// Init VictoryModel
fun initVictoryModel() {
victoryModel = ViewModelProviders.of(this).get(VictoryModel::class.java).apply {
if (!matchFinished) {
matchFinished = true
@ -40,24 +45,12 @@ class VictoryActivity : AppCompatActivity() {
intent.getIntExtra("player2Score", 0)
)
)
previousMatches = previousMatch.getString("previousMatches", "") ?: ""
previousMatch.edit().apply {
putString(
"previousMatches",
getString(
R.string.results,
players[0].name,
"%2d - %2d".format(players[0].score, players[1].score),
players[1].name,
previousMatches
)
)
commit()
}
}
}
// UpdateUI
fun updateUI() {
victoryModel?.apply {
findViewById<TextView>(R.id.congrats).text = getString(R.string.congrats, winnerName)
findViewById<TextView>(R.id.player1NameTextView).text = players[0].name
findViewById<TextView>(R.id.scoreTextView).text = getString(
@ -70,11 +63,29 @@ class VictoryActivity : AppCompatActivity() {
this@VictoryActivity,
R.layout.grid_item,
R.id.grid_item_text,
previousMatches.split("\t|\n".toRegex())
previousMatch?.getString("previousMatches", "")?.split("\t|\n".toRegex())?.toMutableList()
)
}
}
fun saveScore() {
victoryModel?.apply {
previousMatch?.edit()?.apply {
putString(
"previousMatches",
getString(
R.string.results,
players[0].name,
"%2d - %2d".format(players[0].score, players[1].score),
players[1].name,
previousMatches
)
)
commit()
}
}
}
fun newMatch(view: View) {
startActivity(
Intent(this, StarterNameActivity::class.java)