outsourcing functions to new classes
This commit is contained in:
61
app/src/main/java/com/dano/test1/EditButtonHandler.kt
Normal file
61
app/src/main/java/com/dano/test1/EditButtonHandler.kt
Normal file
@ -0,0 +1,61 @@
|
||||
package com.dano.test1
|
||||
|
||||
import android.widget.Button
|
||||
import android.widget.EditText
|
||||
import android.widget.Toast
|
||||
import kotlinx.coroutines.*
|
||||
import com.dano.test1.data.CompletedQuestionnaire
|
||||
|
||||
class EditButtonHandler(
|
||||
private val activity: MainActivity,
|
||||
private val editButton: Button,
|
||||
private val editText: EditText,
|
||||
private val languageIDProvider: () -> String,
|
||||
private val questionnaireFiles: Map<Button, String>,
|
||||
private val buttonPoints: MutableMap<String, Int>,
|
||||
private val updateButtonTexts: () -> Unit,
|
||||
private val setButtonsEnabled: (List<Button>) -> Unit
|
||||
) {
|
||||
|
||||
fun setup() {
|
||||
editButton.text = LanguageManager.getText(languageIDProvider(), "edit")
|
||||
editButton.setOnClickListener { handleEditButtonClick() }
|
||||
}
|
||||
|
||||
private fun handleEditButtonClick() {
|
||||
val clientCode = editText.text.toString().trim()
|
||||
if (clientCode.isBlank()) {
|
||||
val message = LanguageManager.getText(languageIDProvider(), "please_client_code")
|
||||
Toast.makeText(activity, message, Toast.LENGTH_SHORT).show()
|
||||
return
|
||||
}
|
||||
|
||||
GlobalValues.LAST_CLIENT_CODE = clientCode
|
||||
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
val completedEntries: List<CompletedQuestionnaire> =
|
||||
MyApp.database.completedQuestionnaireDao().getAllForClient(clientCode)
|
||||
|
||||
val completedFiles = completedEntries
|
||||
.filter { it.isDone }
|
||||
.map { it.questionnaireId.lowercase() }
|
||||
|
||||
buttonPoints.clear()
|
||||
for (entry in completedEntries) {
|
||||
if (entry.isDone) {
|
||||
buttonPoints[entry.questionnaireId] = entry.sumPoints ?: 0
|
||||
}
|
||||
}
|
||||
|
||||
withContext(Dispatchers.Main) {
|
||||
updateButtonTexts()
|
||||
|
||||
val enabledButtons = questionnaireFiles.filter { (_, fileName) ->
|
||||
completedFiles.any { completedId -> fileName.lowercase().contains(completedId) }
|
||||
}.keys.toList()
|
||||
|
||||
setButtonsEnabled(enabledButtons)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user