This repository has been archived on 2026-05-26. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
weserplaner/app/src/main/java/com/denizk0461/studip/sheet/AllergenConfigSheet.kt
T

112 lines
4.9 KiB
Kotlin

package com.denizk0461.studip.sheet
import android.os.Bundle
import android.view.View
import androidx.fragment.app.viewModels
import com.denizk0461.studip.R
import com.denizk0461.studip.data.showToast
import com.denizk0461.studip.data.viewBinding
import com.denizk0461.studip.databinding.SheetAllergenConfigBinding
import com.denizk0461.studip.model.AllergenPreferences
import com.denizk0461.studip.viewmodel.AllergenConfigViewModel
/**
* Configuration sheet for the user to pick substances they are allergic against. Offers containing
* these allergens will be hidden.
*/
class AllergenConfigSheet : AppSheet(R.layout.sheet_allergen_config) {
// View binding
private val binding: SheetAllergenConfigBinding by viewBinding(SheetAllergenConfigBinding::bind)
// View model
private val viewModel: AllergenConfigViewModel by viewModels()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
// Retrieve allergens as currently set by the user from view model
val currentAllergenConfig = AllergenPreferences.construct(
viewModel.preferenceAllergenConfig
)
// Set all check boxes to the currently set values
binding.apply {
checkWheat.isChecked = currentAllergenConfig.hasWheat
checkRye.isChecked = currentAllergenConfig.hasRye
checkBarley.isChecked = currentAllergenConfig.hasBarley
checkOat.isChecked = currentAllergenConfig.hasOats
checkSpelt.isChecked = currentAllergenConfig.hasSpelt
checkKamut.isChecked = currentAllergenConfig.hasKamut
checkCrustaceans.isChecked = currentAllergenConfig.hasCrustaceans
checkEggs.isChecked = currentAllergenConfig.hasEggs
checkFish.isChecked = currentAllergenConfig.hasFish
checkPeanuts.isChecked = currentAllergenConfig.hasPeanuts
checkSoy.isChecked = currentAllergenConfig.hasSoy
checkDairy.isChecked = currentAllergenConfig.hasDairy
checkAlmonds.isChecked = currentAllergenConfig.hasAlmonds
checkHazelnuts.isChecked = currentAllergenConfig.hasHazelnuts
checkWalnuts.isChecked = currentAllergenConfig.hasWalnuts
checkCashewNuts.isChecked = currentAllergenConfig.hasCashewNuts
checkPecans.isChecked = currentAllergenConfig.hasPecans
checkBrazilNuts.isChecked = currentAllergenConfig.hasBrazilNuts
checkPistachios.isChecked = currentAllergenConfig.hasPistachios
checkMacadamia.isChecked = currentAllergenConfig.hasMacadamia
checkCelery.isChecked = currentAllergenConfig.hasCelery
checkMustard.isChecked = currentAllergenConfig.hasMustard
checkSulphides.isChecked = currentAllergenConfig.hasSulphides
checkLupins.isChecked = currentAllergenConfig.hasLupins
checkSesame.isChecked = currentAllergenConfig.hasSesame
checkMolluscs.isChecked = currentAllergenConfig.hasMolluscs
}
// Set save button
binding.buttonSave.setOnClickListener {
saveAllergenPrefs()
}
}
/**
* Saves the newly set preferences and closes the sheet.
*/
private fun saveAllergenPrefs() {
binding.apply {
// Save the new preferences
viewModel.preferenceAllergenConfig = AllergenPreferences.Object(
hasWheat = checkWheat.isChecked,
hasRye = checkRye.isChecked,
hasBarley = checkBarley.isChecked,
hasOats = checkOat.isChecked,
hasSpelt = checkSpelt.isChecked,
hasKamut = checkKamut.isChecked,
hasCrustaceans = checkCrustaceans.isChecked,
hasEggs = checkEggs.isChecked,
hasFish = checkFish.isChecked,
hasPeanuts = checkPeanuts.isChecked,
hasSoy = checkSoy.isChecked,
hasDairy = checkDairy.isChecked,
hasAlmonds = checkAlmonds.isChecked,
hasHazelnuts = checkHazelnuts.isChecked,
hasWalnuts = checkWalnuts.isChecked,
hasCashewNuts = checkCashewNuts.isChecked,
hasPecans = checkPecans.isChecked,
hasBrazilNuts = checkBrazilNuts.isChecked,
hasPistachios = checkPistachios.isChecked,
hasMacadamia = checkMacadamia.isChecked,
hasCelery = checkCelery.isChecked,
hasMustard = checkMustard.isChecked,
hasSulphides = checkSulphides.isChecked,
hasLupins = checkLupins.isChecked,
hasSesame = checkSesame.isChecked,
hasMolluscs = checkMolluscs.isChecked,
).deconstruct()
}
// Tell the user that saving was successful
showToast(context, getString(R.string.allergens_config_confirmation))
// Close the sheet
dismiss()
}
}