From 7e8eb8d2c521421b91f740cabe8fff3c92199e4a Mon Sep 17 00:00:00 2001 From: Gideon Okuro Date: Mon, 3 Jun 2024 15:24:52 +0300 Subject: [PATCH] better null handling --- .../remote/fragments/ServiceCardFragment.kt | 63 ++++++++++--------- 1 file changed, 32 insertions(+), 31 deletions(-) diff --git a/app/src/main/kotlin/io/treehouses/remote/fragments/ServiceCardFragment.kt b/app/src/main/kotlin/io/treehouses/remote/fragments/ServiceCardFragment.kt index 3159ae6aa..8914dff10 100644 --- a/app/src/main/kotlin/io/treehouses/remote/fragments/ServiceCardFragment.kt +++ b/app/src/main/kotlin/io/treehouses/remote/fragments/ServiceCardFragment.kt @@ -17,7 +17,7 @@ import io.treehouses.remote.pojo.ServiceInfo class ServiceCardFragment : Fragment(), View.OnClickListener { private var actionListener: ServiceActionListener? = null - private var binding: ServiceCardBinding? = null + private lateinit var binding: ServiceCardBinding private lateinit var serviceData: ServiceInfo override fun onCreate(savedInstanceState: Bundle?) { @@ -30,27 +30,27 @@ class ServiceCardFragment : Fragment(), View.OnClickListener { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { binding = ServiceCardBinding.inflate(inflater, container, false) - binding!!.serviceInfo.movementMethod = LinkMovementMethod.getInstance() - binding!!.serviceInfo.isFocusable = true + binding.serviceInfo.movementMethod = LinkMovementMethod.getInstance() + binding.serviceInfo.isFocusable = true if (!serviceData.isHeader) { setServiceInfo(serviceData.info) setServiceSize(serviceData.size) showIcon(serviceData.icon) updateButtons(serviceData.serviceStatus) setAutorun(serviceData.autorun) - binding!!.installButton.setOnClickListener(this) - binding!!.startButton.setOnClickListener(this) - binding!!.openLink.setOnClickListener(this) - binding!!.editEnvButton.setOnClickListener(this) - binding!!.autorunChecked.setOnClickListener { - actionListener!!.onClickAutorun(serviceData, binding?.autorunChecked?.isChecked ?: false) + binding.installButton.setOnClickListener(this) + binding.startButton.setOnClickListener(this) + binding.openLink.setOnClickListener(this) + binding.editEnvButton.setOnClickListener(this) + binding.autorunChecked.setOnClickListener { + actionListener?.onClickAutorun(serviceData, binding.autorunChecked.isChecked) } } - return binding!!.root + return binding.root } private fun setAutorun(autorun: String?) { - binding!!.autorunChecked.isChecked = autorun!!.contains("true") + binding.autorunChecked.isChecked = autorun?.contains("true") ?: false } private fun setButtons(started: Boolean, installed: Boolean) { @@ -66,8 +66,8 @@ class ServiceCardFragment : Fragment(), View.OnClickListener { var visibility2 = View.GONE var visibility3 = View.GONE - binding!!.startButton.text = string1 - binding!!.openLink.visibility = visibility1 + binding.startButton.text = string1 + binding.openLink.visibility = visibility1 if (installed) { string2 = "Uninstall" @@ -79,10 +79,10 @@ class ServiceCardFragment : Fragment(), View.OnClickListener { if (installed && !started && serviceData.usesEnv == "true") visibility4 = View.VISIBLE - binding!!.installButton.text = string2 - binding!!.startButton.visibility = visibility2 - binding!!.autorunChecked.visibility = visibility3 - binding!!.editEnvButton.visibility = visibility4 + binding.installButton.text = string2 + binding.startButton.visibility = visibility2 + binding.autorunChecked.visibility = visibility3 + binding.editEnvButton.visibility = visibility4 } @@ -98,37 +98,38 @@ class ServiceCardFragment : Fragment(), View.OnClickListener { try { val svg = SVG.getFromString(s) val pd = PictureDrawable(svg.renderToPicture()) - binding!!.serviceLogo.setImageDrawable(pd) + binding.serviceLogo.setImageDrawable(pd) } catch (e: Exception) { e.printStackTrace() } } private fun setServiceInfo(s: String?) { - val spannableString = SpannableString(s) + val spannableString = SpannableString(s ?: "") Linkify.addLinks(spannableString, Linkify.ALL) - binding!!.serviceInfo.text = spannableString - binding!!.serviceInfo.movementMethod = LinkMovementMethod.getInstance() + binding.serviceInfo.text = spannableString + binding.serviceInfo.movementMethod = LinkMovementMethod.getInstance() } private fun setServiceSize(sz: Int) { - if(sz != -1) - binding!!.serviceSize.text = "$sz MB" + if(sz != -1) { + binding.serviceSize.text = "$sz MB" + } } override fun onClick(v: View) { when { - binding!!.installButton == v -> { - actionListener!!.onClickInstall(serviceData) + binding.installButton == v -> { + actionListener?.onClickInstall(serviceData) } - binding!!.startButton == v -> { - actionListener!!.onClickStart(serviceData) + binding.startButton == v -> { + actionListener?.onClickStart(serviceData) } - binding!!.openLink == v -> { - actionListener!!.onClickLink(serviceData) + binding.openLink == v -> { + actionListener?.onClickLink(serviceData) } - binding!!.editEnvButton == v -> { - actionListener!!.onClickEditEnvVar(serviceData) + binding.editEnvButton == v -> { + actionListener?.onClickEditEnvVar(serviceData) } } }