@@ -1,39 +1,41 @@
package ltd.evilcorp.atox.ui.settings
import android.content.SharedPreferences
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.preference.PreferenceFragmentCompat
import androidx.preference.PreferenceManager
import androidx.lifecycle.Observer
import kotlinx.android.synthetic.main.settings_fragment.*
import kotlinx.android.synthetic.main.settings_fragment.view.*
import ltd.evilcorp.atox.R
import ltd.evilcorp.atox.vmFactory
class SettingsFragment : PreferenceFragmentCompat(),
SharedPreferences.OnSharedPreferenceChangeListener {
class SettingsFragment : Fragment() {
private val vm: SettingsViewModel by viewModels { vmFactory }
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) =
setPreferencesFromResource(R.xml.preferences, rootKey)
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View = inflater.inflate(R.layout.settings_fragment, container, false).apply {
toolbar.apply {
setNavigationIcon(R.drawable.back)
setNavigationOnClickListener {
activity?.onBackPressed()
}
}
override fun onResume() {
super.onResume()
PreferenceManager.getDefaultSharedPreferences(requireContext())
.registerOnSharedPreferenceChangeListener(this)
vm.user.observe(viewLifecycleOwner, Observer { user ->
name.setText(user.name)
statusMessage.setText(user.statusMessage)
})
}
override fun onPause() {
super.onPause()
PreferenceManager.getDefaultSharedPreferences(requireContext())
.unregisterOnSharedPreferenceChangeListener(this)
}
override fun onSharedPreferenceChanged(preferences: SharedPreferences, key: String) {
when (key) {
"name" -> vm.setName(
preferences.getString(key, null) ?: getString(R.string.name_default)
)
"status_message" -> vm.setStatusMessage(preferences.getString(key, null) ?: "")
}
vm.setName(name.text.toString())
vm.setStatusMessage(statusMessage.text.toString())
}
}