package mx.trackermap.TrackerMap.android.details.commands import android.os.Bundle import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.ArrayAdapter import androidx.fragment.app.Fragment import kotlinx.coroutines.DelicateCoroutinesApi import mx.trackermap.TrackerMap.android.databinding.UnitDetailsCommandsBinding import mx.trackermap.TrackerMap.android.details.UnitDetailsAdapter import org.koin.androidx.viewmodel.ext.android.viewModel @DelicateCoroutinesApi class UnitCommandsFragment: Fragment() { private var _binding: UnitDetailsCommandsBinding? = null private val binding get() = _binding!! private val unitCommandsViewModel: UnitCommandsViewModel by viewModel() override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { _binding = UnitDetailsCommandsBinding.inflate(inflater, container, false) return binding.root } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) setupObservers() setupEvents() } override fun onDestroyView() { super.onDestroyView() _binding = null } private fun setupObservers() { unitCommandsViewModel.commands.observe(viewLifecycleOwner) { commands -> Log.d("UnitCommandsFragment", "Device commands - $commands") val context = activity!!.applicationContext val adapter = ArrayAdapter(context, android.R.layout.simple_list_item_1) adapter.addAll(commands.map { it.description }) binding.commandsList.adapter = adapter } val id = arguments?.getInt(UnitDetailsAdapter.DEVICE_ID_ARG) unitCommandsViewModel.fetchCommands(id) } private fun setupEvents() { binding.commandsList.setOnItemClickListener { _, _, index, _ -> Log.d("UnitCommandsFragment", "Selected item at index - $index") unitCommandsViewModel.selectCommand(index) } binding.sendCommandButton.setOnClickListener { unitCommandsViewModel.sendCommand() } } }