@@ -5,8 +5,12 @@ import android.os.Build
55import android.os.Bundle
66import android.util.Log
77import android.widget.ArrayAdapter
8+ import android.widget.AutoCompleteTextView
9+ import android.widget.TextView
810import androidx.core.widget.doOnTextChanged
9- import app.simple.positional.databinding.ActivityMapSearchBinding
11+ import app.simple.positional.R
12+ import app.simple.positional.decorations.ripple.DynamicRippleImageButton
13+ import app.simple.positional.decorations.views.SearchMap
1014import app.simple.positional.extensions.activity.BaseActivity
1115import app.simple.positional.math.MathExtensions
1216import kotlinx.coroutines.CoroutineScope
@@ -17,26 +21,38 @@ import kotlin.coroutines.cancellation.CancellationException
1721
1822class MapSearchActivity : BaseActivity () {
1923
20- private lateinit var binding: ActivityMapSearchBinding
24+ private lateinit var map: SearchMap
25+ private lateinit var latitude: TextView
26+ private lateinit var longitude: TextView
27+ private lateinit var address: AutoCompleteTextView
28+ private lateinit var confirm: DynamicRippleImageButton
29+ private lateinit var cancel: DynamicRippleImageButton
30+
2131 private var job: Job ? = null
2232
2333 override fun onCreate (savedInstanceState : Bundle ? ) {
2434 super .onCreate(savedInstanceState)
25- binding = ActivityMapSearchBinding .inflate(layoutInflater)
26- setContentView(binding.root)
35+ setContentView(R .layout.activity_map_search)
36+
37+ map = findViewById(R .id.map)
38+ latitude = findViewById(R .id.latitude)
39+ longitude = findViewById(R .id.longitude)
40+ address = findViewById(R .id.address)
41+ confirm = findViewById(R .id.confirm)
42+ cancel = findViewById(R .id.cancel)
2743
28- binding. map.onCreate(savedInstanceState)
44+ map.onCreate(savedInstanceState)
2945
30- binding. latitude.setText( MathExtensions .round(binding. map.lastLatitude, 6 ).toString() )
31- binding. longitude.setText( MathExtensions .round(binding. map.lastLongitude, 6 ).toString() )
32- binding. address.threshold = 3
46+ latitude.text = MathExtensions .round(map.lastLatitude, 6 ).toString()
47+ longitude.text = MathExtensions .round(map.lastLongitude, 6 ).toString()
48+ address.threshold = 3
3349
34- binding. map.callbacks = {
35- binding. latitude.setText( MathExtensions .round(it.latitude, 6 ).toString() )
36- binding. longitude.setText( MathExtensions .round(it.longitude, 6 ).toString() )
50+ map.callbacks = {
51+ latitude.text = MathExtensions .round(it.latitude, 6 ).toString()
52+ longitude.text = MathExtensions .round(it.longitude, 6 ).toString()
3753 }
3854
39- binding. address.doOnTextChanged { text, _, _, _ ->
55+ address.doOnTextChanged { text, _, _, _ ->
4056 try {
4157 job?.cancel(CancellationException (" New search" ))
4258 } catch (_: IllegalStateException ) {
@@ -48,15 +64,15 @@ class MapSearchActivity : BaseActivity() {
4864 runOnUiThread {
4965 try {
5066 ArrayAdapter (applicationContext, android.R .layout.simple_dropdown_item_1line, addresses.map { it.getAddressLine(0 ) }).also {
51- binding. address.setAdapter(it)
52- (binding. address.adapter as ArrayAdapter <* >).setNotifyOnChange(true )
53- (binding. address.adapter as ArrayAdapter <* >).notifyDataSetChanged()
54- binding. address.showDropDown()
67+ address.setAdapter(it)
68+ (address.adapter as ArrayAdapter <* >).setNotifyOnChange(true )
69+ (address.adapter as ArrayAdapter <* >).notifyDataSetChanged()
70+ address.showDropDown()
5571
56- binding. address.setOnItemClickListener { _, _, position, _ ->
57- binding. latitude.setText( MathExtensions .round(addresses[position].latitude, 6 ).toString() )
58- binding. longitude.setText( MathExtensions .round(addresses[position].longitude, 6 ).toString() )
59- binding. map.moveCamera(addresses[position].latitude, addresses[position].longitude)
72+ address.setOnItemClickListener { _, _, position, _ ->
73+ latitude.text = MathExtensions .round(addresses[position].latitude, 6 ).toString()
74+ longitude.text = MathExtensions .round(addresses[position].longitude, 6 ).toString()
75+ map.moveCamera(addresses[position].latitude, addresses[position].longitude)
6076 }
6177 }
6278 } catch (e: IllegalStateException ) {
@@ -71,15 +87,15 @@ class MapSearchActivity : BaseActivity() {
7187 launch(Dispatchers .Main ) {
7288 try {
7389 ArrayAdapter (applicationContext, android.R .layout.simple_dropdown_item_1line, addresses.map { it.getAddressLine(0 ) }).also {
74- binding. address.setAdapter(it)
75- (binding. address.adapter as ArrayAdapter <* >).setNotifyOnChange(true )
76- (binding. address.adapter as ArrayAdapter <* >).notifyDataSetChanged()
77- binding. address.showDropDown()
90+ address.setAdapter(it)
91+ (address.adapter as ArrayAdapter <* >).setNotifyOnChange(true )
92+ (address.adapter as ArrayAdapter <* >).notifyDataSetChanged()
93+ address.showDropDown()
7894
79- binding. address.setOnItemClickListener { _, _, position, _ ->
80- binding. latitude.setText( MathExtensions .round(addresses[position].latitude, 6 ).toString() )
81- binding. longitude.setText( MathExtensions .round(addresses[position].longitude, 6 ).toString() )
82- binding. map.moveCamera(addresses[position].latitude, addresses[position].longitude)
95+ address.setOnItemClickListener { _, _, position, _ ->
96+ latitude.text = MathExtensions .round(addresses[position].latitude, 6 ).toString()
97+ longitude.text = MathExtensions .round(addresses[position].longitude, 6 ).toString()
98+ map.moveCamera(addresses[position].latitude, addresses[position].longitude)
8399 }
84100 }
85101 } catch (e: IllegalStateException ) {
@@ -92,16 +108,16 @@ class MapSearchActivity : BaseActivity() {
92108 }
93109 }
94110
95- binding. confirm.setOnClickListener {
111+ confirm.setOnClickListener {
96112 setResult(RESULT_OK , intent.apply {
97- putExtra(" latitude" , binding. latitude.text.toString().toDouble())
98- putExtra(" longitude" , binding. longitude.text.toString().toDouble())
99- putExtra(" address" , binding. address.text.toString())
113+ putExtra(" latitude" , latitude.text.toString().toDouble())
114+ putExtra(" longitude" , longitude.text.toString().toDouble())
115+ putExtra(" address" , address.text.toString())
100116 })
101117 finish()
102118 }
103119
104- binding. cancel.setOnClickListener {
120+ cancel.setOnClickListener {
105121 setResult(RESULT_CANCELED )
106122 finish()
107123 }
0 commit comments