From a13e418f74397653e028e38084f0f8f09492419e Mon Sep 17 00:00:00 2001 From: Iván Ávalos Date: Wed, 12 Jan 2022 22:39:04 -0600 Subject: Implemented map layer switching and updated strings.xml --- .../TrackerMap/android/units/UnitsActivity.kt | 30 ++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsActivity.kt') diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsActivity.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsActivity.kt index 5213577..5a9f9ad 100644 --- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsActivity.kt +++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsActivity.kt @@ -3,7 +3,9 @@ package mx.trackermap.TrackerMap.android.units import android.content.Intent import android.os.Bundle import android.util.Log +import android.view.View import androidx.appcompat.app.AppCompatActivity +import androidx.appcompat.widget.PopupMenu import androidx.core.widget.doAfterTextChanged import androidx.fragment.app.commit import kotlinx.coroutines.DelicateCoroutinesApi @@ -62,12 +64,32 @@ class UnitsActivity : AppCompatActivity() { binding.displayModeToggle.setOnClickListener { unitsViewModel.toggleDisplayMode() } + binding.mapLayerToggle.setOnClickListener { + showLayersPopUp(it) + } binding.searchInput.doAfterTextChanged { Log.d("UnitsActivity", "Search changed to ${it.toString()}") unitsViewModel.search(it.toString()) } } + private fun showLayersPopUp(view: View) { + val popOver = PopupMenu(this, view) + popOver.menuInflater.inflate(R.menu.map_layers, popOver.menu) + popOver.setOnMenuItemClickListener { item -> + unitsViewModel.setMapLayer( + when (item.itemId) { + R.id.layerStreets -> getString(R.string.maps_streets_tile_url) + R.id.layerSatellite -> getString(R.string.maps_satellite_url) + R.id.layerHybrid -> getString(R.string.maps_hybrid_url) + else -> getString(R.string.maps_streets_tile_url) + } + ) + true + } + popOver.show() + } + private fun setupObservers() { unitsViewModel.unitsDisplayMode.observe(this) { displayMode -> binding.displayModeToggle.setImageResource( @@ -85,10 +107,18 @@ class UnitsActivity : AppCompatActivity() { } ) + binding.mapLayerToggle.visibility = + when (displayMode) { + UnitsViewModel.UnitsDisplayMode.LIST -> View.GONE + UnitsViewModel.UnitsDisplayMode.MAP -> View.VISIBLE + else -> View.GONE + } + val newFragment = when (displayMode) { UnitsViewModel.UnitsDisplayMode.LIST -> devicesFragment UnitsViewModel.UnitsDisplayMode.MAP -> mapFragment + else -> devicesFragment } supportFragmentManager.commit { replace(R.id.displayContainer, newFragment) -- cgit v1.2.3