dfghj
This commit is contained in:
		| @ -2,12 +2,10 @@ package adrienmalin.pingpoints | ||||
|  | ||||
| import android.os.Build | ||||
| import android.text.Html | ||||
| import android.text.Spanned | ||||
|  | ||||
|  | ||||
| fun Html.fromHtml2(source: String) { | ||||
|     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { | ||||
|         Html.fromHtml(source, Html.FROM_HTML_MODE_COMPACT) | ||||
|     } else { | ||||
|         Html.fromHtml(source) | ||||
|     } | ||||
| fun fromHtml(source: String): Spanned = when { | ||||
|     Build.VERSION.SDK_INT >= Build.VERSION_CODES.N -> Html.fromHtml(source, Html.FROM_HTML_MODE_COMPACT) | ||||
|     else -> Html.fromHtml(source) | ||||
| } | ||||
| @ -5,6 +5,11 @@ import android.support.v7.app.AppCompatActivity | ||||
| import android.support.v7.app.AppCompatDelegate | ||||
| import android.view.View | ||||
| import android.arch.lifecycle.ViewModelProviders | ||||
| import android.speech.tts.TextToSpeech | ||||
| import android.support.design.widget.Snackbar | ||||
| import android.widget.* | ||||
|  | ||||
| const val REQ_CODE_SPEECH_INPUT = 1 | ||||
|  | ||||
|  | ||||
| class MatchActivity : AppCompatActivity() { | ||||
| @ -14,13 +19,13 @@ class MatchActivity : AppCompatActivity() { | ||||
|     var buttons: Array<Button> = emptyArray() | ||||
|     var imageViews: Array<ImageView?> = emptyArray() | ||||
|     var matchModel: MatchModel? = null | ||||
|     var tts: TextToSpeech? = null | ||||
|  | ||||
|     override fun onCreate(savedInstanceState: Bundle?) { | ||||
|         super.onCreate(savedInstanceState) | ||||
|         AppCompatDelegate.setCompatVectorFromResourcesEnabled(true) | ||||
|         setContentView(R.layout.activity_match) | ||||
|         setSupportActionBar(findViewById(R.id.toolbar)) | ||||
|         val matchModel = ViewModelProviders.of(this).get(MatchModel::class.java) | ||||
|         textScore = findViewById(R.id.textScore) | ||||
|         textService = findViewById(R.id.textService) | ||||
|         buttons = arrayOf( | ||||
| @ -31,11 +36,69 @@ class MatchActivity : AppCompatActivity() { | ||||
|             findViewById(R.id.imgService0), | ||||
|             findViewById(R.id.imgService1) | ||||
|         ) | ||||
|         val matchModel = ViewModelProviders.of(this).get(MatchModel::class.java) | ||||
|         if (!matchModel.matchStarted) { | ||||
|             matchModel.startMatch( | ||||
|                 intent.getStringExtra("player1Name"), | ||||
|                 intent.getStringExtra("player2Name"), | ||||
|                 intent.getIntExtra("starterId", 0), | ||||
|                 intent.getBooleanExtra("enableTTS", false), | ||||
|                 intent.getBooleanExtra("enableSTT", false) | ||||
|             ) | ||||
|             if (matchModel.ttsEnabled) { | ||||
|                 tts = TextToSpeech( | ||||
|                     this, | ||||
|                     TextToSpeech.OnInitListener { | ||||
|                         fun onInit(status: Int) {} | ||||
|                     } | ||||
|                 ) | ||||
|             } | ||||
|             Snackbar.make( | ||||
|                 findViewById(R.id.coordinatorLayout), | ||||
|                 R.string.button_hint, | ||||
|                 Snackbar.LENGTH_SHORT | ||||
|             ).show() | ||||
|         } | ||||
|         updateUI() | ||||
|     } | ||||
|  | ||||
|     fun updateUI() { | ||||
|         matchModel?.apply { | ||||
|             textScore?.text = getString( | ||||
|                 R.string.score, | ||||
|                 players[serviceSide].score, | ||||
|                 players[relaunchSide].score | ||||
|             ) | ||||
|             textService?.text = getString(R.string.service, players[serviceSide].name) | ||||
|  | ||||
|             for ((button, player) in buttons.zip(players)) { | ||||
|                 button.text = fromHtml(getString(R.string.button_text, player.name, player.score)) | ||||
|             } | ||||
|  | ||||
|             when (serviceSide) { | ||||
|                 0 -> { | ||||
|                     imageViews[0]?.setImageResource(R.drawable.ic_service_0) | ||||
|                     imageViews[1]?.setImageResource(0) | ||||
|                 } | ||||
|                 else -> { | ||||
|                     imageViews[0]?.setImageResource(0) | ||||
|                     imageViews[1]?.setImageResource(R.drawable.ic_service_1) | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             if (ttsEnabled) { | ||||
|                 tts?.speak( | ||||
|                     getString( | ||||
|                         R.string.update_score_speech, | ||||
|                         players[serviceSide].score, | ||||
|                         players[relaunchSide].score, | ||||
|                         players[serviceSide].name | ||||
|                     ), | ||||
|                     TextToSpeech.QUEUE_FLUSH, | ||||
|                     hashMapOf(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID to "MessageId") | ||||
|                 ) | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     fun updateScore(view: View) { | ||||
|  | ||||
| @ -6,14 +6,21 @@ import android.arch.lifecycle.ViewModel | ||||
|  | ||||
|  | ||||
| class MatchModel : ViewModel() { | ||||
|     var matchStarted: Boolean = false | ||||
|     var players: List<Player> = emptyList() | ||||
|     var serverId: Int = 0 | ||||
|     var serviceSide: Int = 0 | ||||
|     var relaunchSide: Int = 1 | ||||
|     var ttsEnabled: Boolean = false | ||||
|     var sttEnabled: Boolean = false | ||||
|  | ||||
|     fun startMatch(player1Name: String, player2Name:String, starterId: Int, enableTTS: Boolean, enableSTT: Boolean) { | ||||
|         matchStarted = true | ||||
|         players = listOf(Player(player1Name), Player(player2Name)) | ||||
|         serverId = starterId | ||||
|         serviceSide = starterId | ||||
|         relaunchSide = when(starterId) { | ||||
|             0 -> 1 | ||||
|             else -> 0 | ||||
|         } | ||||
|         ttsEnabled = enableTTS | ||||
|         sttEnabled = enableSTT | ||||
|     } | ||||
|  | ||||
| @ -14,7 +14,6 @@ import android.support.v4.app.ActivityCompat | ||||
| import android.support.v4.content.ContextCompat | ||||
| import android.support.v7.app.AlertDialog | ||||
| import android.support.v7.app.AppCompatActivity | ||||
| import android.text.Html | ||||
| import android.text.method.LinkMovementMethod | ||||
| import android.view.View | ||||
| import android.widget.* | ||||
| @ -40,7 +39,7 @@ class StarterNameActivity : AppCompatActivity() { | ||||
|         setSupportActionBar(findViewById(R.id.toolbar)) | ||||
|         // Set HTML text for icons credits | ||||
|         findViewById<TextView>(R.id.iconsCredit).run { | ||||
|             setText(Html.fromHtml2(getString(R.string.iconCredits))) | ||||
|             setText(fromHtml(getString(R.string.iconCredits))) | ||||
|             movementMethod = LinkMovementMethod.getInstance() | ||||
|         } | ||||
|         // Find views | ||||
|  | ||||
| @ -1,13 +0,0 @@ | ||||
| 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)); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user