Use native view bindings for GeocodingController

Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
This commit is contained in:
Andy Scherzinger 2021-06-09 23:18:35 +02:00
parent 31d585e763
commit adda60c7fb
No known key found for this signature in database
GPG Key ID: 6CADC7E3523C308B
2 changed files with 24 additions and 28 deletions

View File

@ -27,29 +27,26 @@ import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.text.InputType import android.text.InputType
import android.util.Log import android.util.Log
import android.view.LayoutInflater
import android.view.Menu import android.view.Menu
import android.view.MenuInflater import android.view.MenuInflater
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
import android.view.ViewGroup
import android.view.inputmethod.EditorInfo import android.view.inputmethod.EditorInfo
import android.widget.AdapterView import android.widget.AdapterView
import android.widget.ListView
import android.widget.Toast import android.widget.Toast
import androidx.appcompat.widget.SearchView import androidx.appcompat.widget.SearchView
import androidx.core.view.MenuItemCompat import androidx.core.view.MenuItemCompat
import androidx.preference.PreferenceManager import androidx.preference.PreferenceManager
import autodagger.AutoInjector import autodagger.AutoInjector
import butterknife.BindView
import com.nextcloud.talk.R import com.nextcloud.talk.R
import com.nextcloud.talk.adapters.GeocodingAdapter import com.nextcloud.talk.adapters.GeocodingAdapter
import com.nextcloud.talk.api.NcApi import com.nextcloud.talk.api.NcApi
import com.nextcloud.talk.application.NextcloudTalkApplication import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.controllers.base.BaseController import com.nextcloud.talk.controllers.base.NewBaseController
import com.nextcloud.talk.controllers.util.viewBinding
import com.nextcloud.talk.databinding.ControllerGeocodingBinding
import com.nextcloud.talk.utils.bundle.BundleKeys import com.nextcloud.talk.utils.bundle.BundleKeys
import com.nextcloud.talk.utils.database.user.UserUtils import com.nextcloud.talk.utils.database.user.UserUtils
import com.nextcloud.talk.utils.preferences.AppPreferences
import fr.dudie.nominatim.client.JsonNominatimClient import fr.dudie.nominatim.client.JsonNominatimClient
import fr.dudie.nominatim.model.Address import fr.dudie.nominatim.model.Address
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
@ -68,11 +65,13 @@ import org.osmdroid.config.Configuration
import javax.inject.Inject import javax.inject.Inject
@AutoInjector(NextcloudTalkApplication::class) @AutoInjector(NextcloudTalkApplication::class)
class GeocodingController(args: Bundle) : BaseController(args), SearchView.OnQueryTextListener { class GeocodingController(args: Bundle) :
NewBaseController(
@Inject R.layout.controller_geocoding,
@JvmField args
var context: Context? = null ),
SearchView.OnQueryTextListener {
private val binding: ControllerGeocodingBinding by viewBinding(ControllerGeocodingBinding::bind)
@Inject @Inject
lateinit var ncApi: NcApi lateinit var ncApi: NcApi
@ -80,14 +79,6 @@ class GeocodingController(args: Bundle) : BaseController(args), SearchView.OnQue
@Inject @Inject
lateinit var userUtils: UserUtils lateinit var userUtils: UserUtils
@Inject
@JvmField
var appPreferences: AppPreferences? = null
@BindView(R.id.geocoding_results)
@JvmField
var geocodingResultListView: ListView? = null
var roomToken: String? var roomToken: String?
var nominatimClient: JsonNominatimClient? = null var nominatimClient: JsonNominatimClient? = null
@ -111,12 +102,8 @@ class GeocodingController(args: Bundle) : BaseController(args), SearchView.OnQue
} }
private fun initAdapter(addresses: List<Address>) { private fun initAdapter(addresses: List<Address>) {
adapter = GeocodingAdapter(geocodingResultListView?.context!!, addresses) adapter = GeocodingAdapter(binding.geocodingResults.context!!, addresses)
geocodingResultListView?.adapter = adapter binding.geocodingResults.adapter = adapter
}
override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View {
return inflater.inflate(R.layout.controller_geocoding, container, false)
} }
override fun onAttach(view: View) { override fun onAttach(view: View) {
@ -131,7 +118,7 @@ class GeocodingController(args: Bundle) : BaseController(args), SearchView.OnQue
Log.e(TAG, "search string that was passed to GeocodingController was null or empty") Log.e(TAG, "search string that was passed to GeocodingController was null or empty")
} }
geocodingResultListView?.onItemClickListener = AdapterView.OnItemClickListener { parent, view, position, id -> binding.geocodingResults.onItemClickListener = AdapterView.OnItemClickListener { parent, view, position, id ->
val address: Address = adapter.getItem(position) as Address val address: Address = adapter.getItem(position) as Address
val listener: GeocodingResultListener? = targetController as GeocodingResultListener? val listener: GeocodingResultListener? = targetController as GeocodingResultListener?
listener?.receiveChosenGeocodingResult(address.latitude, address.longitude, address.displayName) listener?.receiveChosenGeocodingResult(address.latitude, address.longitude, address.displayName)
@ -152,8 +139,8 @@ class GeocodingController(args: Bundle) : BaseController(args), SearchView.OnQue
override fun onPrepareOptionsMenu(menu: Menu) { override fun onPrepareOptionsMenu(menu: Menu) {
super.onPrepareOptionsMenu(menu) super.onPrepareOptionsMenu(menu)
hideSearchBar() showToolbar()
actionBar.setIcon(ColorDrawable(resources!!.getColor(android.R.color.transparent))) actionBar?.setIcon(ColorDrawable(resources!!.getColor(android.R.color.transparent)))
} }
override fun onQueryTextSubmit(query: String?): Boolean { override fun onQueryTextSubmit(query: String?): Boolean {

View File

@ -172,6 +172,15 @@ abstract class NewBaseController(@LayoutRes var layoutRes: Int, args: Bundle? =
binding.searchToolbar.layoutParams = layoutParams binding.searchToolbar.layoutParams = layoutParams
} }
protected fun showToolbar() {
if (isValidActivity(activity)) {
val activity = activity as MainActivity
showToolbar(activity.binding)
colorizeStatusBar(false, activity, resources)
colorizeNavigationBar(activity, resources)
}
}
private fun showToolbar(binding: ActivityMainBinding) { private fun showToolbar(binding: ActivityMainBinding) {
val layoutParams = binding.searchToolbar.layoutParams as AppBarLayout.LayoutParams val layoutParams = binding.searchToolbar.layoutParams as AppBarLayout.LayoutParams
binding.searchToolbar.visibility = View.GONE binding.searchToolbar.visibility = View.GONE