From cea6525a4a9c753cf1beadee05d1983379b1829b Mon Sep 17 00:00:00 2001 From: mesinger Date: Fri, 29 Dec 2023 20:10:38 +0100 Subject: [PATCH] update kotlin to 1.8.22, replace deprecated kotlin synthetics with jetpack viewbindings --- app/build.gradle | 11 +- .../grobox/transportr/about/AboutActivity.kt | 13 ++- .../transportr/about/ContributorsActivity.kt | 11 +- .../departures/DepartureAdapter.java | 5 +- .../departures/DepartureViewHolder.kt | 22 ++-- .../transportr/trips/detail/LegAdapter.kt | 5 +- .../transportr/trips/detail/LegViewHolder.kt | 36 +++--- .../transportr/trips/detail/StopAdapter.kt | 5 +- .../transportr/trips/detail/StopViewHolder.kt | 11 +- .../trips/detail/TripDetailFragment.kt | 39 ++++++- .../trips/search/DirectionsActivity.kt | 10 +- .../trips/search/DirectionsFragment.kt | 55 ++++++++- .../transportr/trips/search/TripsFragment.kt | 26 ++++- .../grobox/transportr/ui/TimeDateFragment.kt | 37 +++++- app/witness.gradle | 105 ++++++++++++------ build.gradle | 2 +- 16 files changed, 294 insertions(+), 99 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 269d5e217..b9f2b7a9e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,12 +1,17 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' +apply plugin: 'kotlin-parcelize' apply plugin: 'kotlin-kapt' apply plugin: 'witness' apply from: 'witness.gradle' android { + buildFeatures { + viewBinding true + dataBinding true + } + defaultConfig { versionCode 125 versionName "2.2.1" @@ -117,8 +122,8 @@ dependencies { implementation 'androidx.constraintlayout:constraintlayout:2.0.4' implementation 'androidx.lifecycle:lifecycle-livedata:2.3.1' implementation 'androidx.lifecycle:lifecycle-common-java8:2.3.1' - implementation 'androidx.room:room-runtime:2.3.0' - kapt 'androidx.room:room-compiler:2.3.0' + implementation 'androidx.room:room-runtime:2.4.1' + kapt 'androidx.room:room-compiler:2.4.1' implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0' implementation 'com.squareup.okhttp3:okhttp:3.12.13' diff --git a/app/src/main/java/de/grobox/transportr/about/AboutActivity.kt b/app/src/main/java/de/grobox/transportr/about/AboutActivity.kt index f1329c022..2dfe5fe40 100644 --- a/app/src/main/java/de/grobox/transportr/about/AboutActivity.kt +++ b/app/src/main/java/de/grobox/transportr/about/AboutActivity.kt @@ -26,7 +26,7 @@ import androidx.fragment.app.FragmentPagerAdapter import com.mikepenz.aboutlibraries.LibsBuilder import de.grobox.transportr.R import de.grobox.transportr.TransportrActivity -import kotlinx.android.synthetic.main.activity_about.* +import de.grobox.transportr.databinding.ActivityAboutBinding class AboutActivity : TransportrActivity() { @@ -35,16 +35,23 @@ class AboutActivity : TransportrActivity() { val TAG : String = AboutActivity::class.java.simpleName } + private lateinit var binding: ActivityAboutBinding; + public override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(R.layout.activity_about) + binding = ActivityAboutBinding.inflate(layoutInflater) + setContentView(binding.root) + setUpCustomToolbar(false) + val pager = binding.pager pager.adapter = AboutPagerAdapter(supportFragmentManager) + + val tabLayout = binding.tabLayout; tabLayout.setupWithViewPager(pager) } - private inner class AboutPagerAdapter internal constructor(fm: FragmentManager) : FragmentPagerAdapter(fm) { + private inner class AboutPagerAdapter internal constructor(fm: FragmentManager) : FragmentPagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) { override fun getItem(i: Int): Fragment { return when (i) { diff --git a/app/src/main/java/de/grobox/transportr/about/ContributorsActivity.kt b/app/src/main/java/de/grobox/transportr/about/ContributorsActivity.kt index ed3902cfd..ae6c7906b 100644 --- a/app/src/main/java/de/grobox/transportr/about/ContributorsActivity.kt +++ b/app/src/main/java/de/grobox/transportr/about/ContributorsActivity.kt @@ -25,7 +25,7 @@ import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentPagerAdapter import de.grobox.transportr.R import de.grobox.transportr.TransportrActivity -import kotlinx.android.synthetic.main.activity_about.* +import de.grobox.transportr.databinding.ActivityAboutBinding class ContributorsActivity : TransportrActivity() { @@ -34,12 +34,19 @@ class ContributorsActivity : TransportrActivity() { val TAG : String = ContributorsActivity::class.java.simpleName } + private lateinit var binding: ActivityAboutBinding + public override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(R.layout.activity_about) + binding = ActivityAboutBinding.inflate(layoutInflater) + setContentView(binding.root) + setUpCustomToolbar(false) + val pager = binding.pager pager.adapter = ContributorsPagerAdapter(supportFragmentManager) + + val tabLayout = binding.tabLayout tabLayout.setupWithViewPager(pager) } diff --git a/app/src/main/java/de/grobox/transportr/departures/DepartureAdapter.java b/app/src/main/java/de/grobox/transportr/departures/DepartureAdapter.java index 0a4bb1fec..51e226a25 100644 --- a/app/src/main/java/de/grobox/transportr/departures/DepartureAdapter.java +++ b/app/src/main/java/de/grobox/transportr/departures/DepartureAdapter.java @@ -30,6 +30,7 @@ import java.util.Date; import de.grobox.transportr.R; +import de.grobox.transportr.databinding.ListItemDepartureBinding; import de.schildbach.pte.dto.Departure; class DepartureAdapter extends RecyclerView.Adapter { @@ -74,8 +75,8 @@ public boolean areContentsTheSame(Departure d1, Departure d2) { @NonNull @Override public DepartureViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { - View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_item_departure, viewGroup, false); - return new DepartureViewHolder(v); + ListItemDepartureBinding binding = ListItemDepartureBinding.inflate(LayoutInflater.from(viewGroup.getContext()), viewGroup, false); + return new DepartureViewHolder(binding); } @Override diff --git a/app/src/main/java/de/grobox/transportr/departures/DepartureViewHolder.kt b/app/src/main/java/de/grobox/transportr/departures/DepartureViewHolder.kt index 0c3f1221f..7e1dfa541 100644 --- a/app/src/main/java/de/grobox/transportr/departures/DepartureViewHolder.kt +++ b/app/src/main/java/de/grobox/transportr/departures/DepartureViewHolder.kt @@ -27,26 +27,26 @@ import androidx.cardview.widget.CardView import androidx.core.content.ContextCompat import androidx.recyclerview.widget.RecyclerView import de.grobox.transportr.R +import de.grobox.transportr.databinding.ListItemDepartureBinding import de.grobox.transportr.ui.LineView import de.grobox.transportr.utils.DateUtils.formatDelay import de.grobox.transportr.utils.DateUtils.formatTime import de.grobox.transportr.utils.DateUtils.formatRelativeTime import de.grobox.transportr.utils.TransportrUtils.getLocationName import de.schildbach.pte.dto.Departure -import kotlinx.android.synthetic.main.list_item_departure.view.* import java.util.* -internal class DepartureViewHolder(v: View) : RecyclerView.ViewHolder(v) { +internal class DepartureViewHolder(binding: ListItemDepartureBinding) : RecyclerView.ViewHolder(binding.root) { - private val card: CardView = v as CardView - private val line: LineView = v.line - private val lineName: TextView = v.lineNameView - private val timeRel: TextView = v.departureTimeRel - private val timeAbs: TextView = v.departureTimeAbs - private val delay: TextView = v.delay - private val destination: TextView = v.destinationView - private val position: TextView = v.positionView - private val message: TextView = v.messageView + private val card: CardView = binding.root + private var line: LineView = binding.line + private val lineName: TextView = binding.lineNameView + private val timeRel: TextView = binding.departureTimeRel + private val timeAbs: TextView = binding.departureTimeAbs + private val delay: TextView = binding.delay + private val destination: TextView = binding.destinationView + private val position: TextView = binding.positionView + private val message: TextView = binding.messageView fun bind(dep: Departure) { // times and delay diff --git a/app/src/main/java/de/grobox/transportr/trips/detail/LegAdapter.kt b/app/src/main/java/de/grobox/transportr/trips/detail/LegAdapter.kt index 47e40602a..19a743946 100644 --- a/app/src/main/java/de/grobox/transportr/trips/detail/LegAdapter.kt +++ b/app/src/main/java/de/grobox/transportr/trips/detail/LegAdapter.kt @@ -23,6 +23,7 @@ import androidx.recyclerview.widget.RecyclerView.Adapter import android.view.LayoutInflater import android.view.ViewGroup import de.grobox.transportr.R +import de.grobox.transportr.databinding.ListItemLegBinding import de.grobox.transportr.trips.detail.LegViewHolder.LegType import de.grobox.transportr.trips.detail.LegViewHolder.LegType.* import de.schildbach.pte.dto.Trip.Leg @@ -33,8 +34,8 @@ internal class LegAdapter internal constructor( private val showLineName: Boolean) : Adapter() { override fun onCreateViewHolder(viewGroup: ViewGroup, i: Int): LegViewHolder { - val v = LayoutInflater.from(viewGroup.context).inflate(R.layout.list_item_leg, viewGroup, false) - return LegViewHolder(v, listener, showLineName) + val binding = ListItemLegBinding.inflate(LayoutInflater.from(viewGroup.context), viewGroup, false) + return LegViewHolder(binding, listener, showLineName) } override fun onBindViewHolder(ui: LegViewHolder, i: Int) { diff --git a/app/src/main/java/de/grobox/transportr/trips/detail/LegViewHolder.kt b/app/src/main/java/de/grobox/transportr/trips/detail/LegViewHolder.kt index 212520845..4cbfc03cb 100644 --- a/app/src/main/java/de/grobox/transportr/trips/detail/LegViewHolder.kt +++ b/app/src/main/java/de/grobox/transportr/trips/detail/LegViewHolder.kt @@ -33,6 +33,7 @@ import androidx.recyclerview.widget.RecyclerView import com.google.common.base.Strings import com.google.common.base.Strings.isNullOrEmpty import de.grobox.transportr.R +import de.grobox.transportr.databinding.ListItemLegBinding import de.grobox.transportr.trips.BaseViewHolder import de.grobox.transportr.trips.detail.LegViewHolder.LegType.* import de.grobox.transportr.ui.LineView @@ -43,10 +44,9 @@ import de.schildbach.pte.dto.Line import de.schildbach.pte.dto.Stop import de.schildbach.pte.dto.Style.RED import de.schildbach.pte.dto.Trip.* -import kotlinx.android.synthetic.main.list_item_leg.view.* -internal class LegViewHolder(v: View, private val listener: LegClickListener, private val showLineName: Boolean) : BaseViewHolder(v) { +internal class LegViewHolder(binding: ListItemLegBinding, private val listener: LegClickListener, private val showLineName: Boolean) : BaseViewHolder(binding.root) { internal enum class LegType { FIRST, MIDDLE, LAST, FIRST_LAST @@ -56,22 +56,22 @@ internal class LegViewHolder(v: View, private val listener: LegClickListener, pr internal val DEFAULT_LINE_COLOR = RED } - private val fromCircle: ImageView = v.fromCircle - private val fromLocation: TextView = v.fromLocation - private val fromButton: ImageButton = v.fromButton - - private val lineBar: ImageView = v.lineBar - private val lineView: LineView = v.lineView - private val lineDestination: TextView = v.lineDestination - private val message: TextView = v.message - private val duration: TextView = v.duration - private val stopsText: TextView = v.stopsText - private val stopsButton: ImageButton = v.stopsButton - private val stopsList: RecyclerView = v.stopsList - - private val toCircle: ImageView = v.toCircle - private val toLocation: TextView = v.toLocation - private val toButton: ImageButton = v.toButton + private val fromCircle: ImageView = binding.fromCircle + private val fromLocation: TextView = binding.fromLocation + private val fromButton: ImageButton = binding.fromButton + + private val lineBar: ImageView = binding.lineBar + private val lineView: LineView = binding.lineView + private val lineDestination: TextView = binding.lineDestination + private val message: TextView = binding.message + private val duration: TextView = binding.duration + private val stopsText: TextView = binding.stopsText + private val stopsButton: ImageButton = binding.stopsButton + private val stopsList: RecyclerView = binding.stopsList + + private val toCircle: ImageView = binding.toCircle + private val toLocation: TextView = binding.toLocation + private val toButton: ImageButton = binding.toButton private val adapter = StopAdapter(listener) diff --git a/app/src/main/java/de/grobox/transportr/trips/detail/StopAdapter.kt b/app/src/main/java/de/grobox/transportr/trips/detail/StopAdapter.kt index 233c36022..32d81f712 100644 --- a/app/src/main/java/de/grobox/transportr/trips/detail/StopAdapter.kt +++ b/app/src/main/java/de/grobox/transportr/trips/detail/StopAdapter.kt @@ -24,6 +24,7 @@ import androidx.recyclerview.widget.RecyclerView.Adapter import android.view.LayoutInflater import android.view.ViewGroup import de.grobox.transportr.R +import de.grobox.transportr.databinding.ListItemStopBinding import de.grobox.transportr.trips.detail.LegViewHolder.Companion.DEFAULT_LINE_COLOR import de.schildbach.pte.dto.Stop @@ -39,8 +40,8 @@ internal class StopAdapter internal constructor(private val listener: LegClickLi } override fun onCreateViewHolder(viewGroup: ViewGroup, i: Int): StopViewHolder { - val v = LayoutInflater.from(viewGroup.context).inflate(R.layout.list_item_stop, viewGroup, false) - return StopViewHolder(v, listener) + val binding = ListItemStopBinding.inflate(LayoutInflater.from(viewGroup.context), viewGroup, false) + return StopViewHolder(binding, listener) } override fun onBindViewHolder(ui: StopViewHolder, i: Int) { diff --git a/app/src/main/java/de/grobox/transportr/trips/detail/StopViewHolder.kt b/app/src/main/java/de/grobox/transportr/trips/detail/StopViewHolder.kt index 8ff7bc1ba..60c93ff06 100644 --- a/app/src/main/java/de/grobox/transportr/trips/detail/StopViewHolder.kt +++ b/app/src/main/java/de/grobox/transportr/trips/detail/StopViewHolder.kt @@ -20,24 +20,23 @@ package de.grobox.transportr.trips.detail -import android.view.View import android.view.View.* import android.widget.ImageButton import android.widget.ImageView import android.widget.TextView +import de.grobox.transportr.databinding.ListItemStopBinding import de.grobox.transportr.trips.BaseViewHolder import de.grobox.transportr.utils.DateUtils.formatTime import de.grobox.transportr.utils.TransportrUtils.getLocationName import de.schildbach.pte.dto.Stop -import kotlinx.android.synthetic.main.list_item_stop.view.* import java.util.Date -internal class StopViewHolder(v: View, private val listener : LegClickListener) : BaseViewHolder(v) { +internal class StopViewHolder(binding: ListItemStopBinding, private val listener : LegClickListener) : BaseViewHolder(binding.root) { - private val circle: ImageView = v.circle - private val stopLocation: TextView = v.stopLocation - private val stopButton: ImageButton = v.stopButton + private val circle: ImageView = binding.circle + private val stopLocation: TextView = binding.stopLocation + private val stopButton: ImageButton = binding.stopButton fun bind(stop: Stop, color: Int) { if (stop.arrivalTime != null) { diff --git a/app/src/main/java/de/grobox/transportr/trips/detail/TripDetailFragment.kt b/app/src/main/java/de/grobox/transportr/trips/detail/TripDetailFragment.kt index c6270feb0..6744d2806 100644 --- a/app/src/main/java/de/grobox/transportr/trips/detail/TripDetailFragment.kt +++ b/app/src/main/java/de/grobox/transportr/trips/detail/TripDetailFragment.kt @@ -24,14 +24,17 @@ import android.os.CountDownTimer import android.view.* import android.view.View.GONE import android.view.View.VISIBLE +import android.widget.TextView import android.widget.Toast import androidx.appcompat.widget.Toolbar import androidx.core.content.ContextCompat.getColor import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView import de.grobox.transportr.R import de.grobox.transportr.TransportrFragment +import de.grobox.transportr.databinding.FragmentTripDetailBinding import de.grobox.transportr.trips.detail.TripDetailViewModel.SheetState import de.grobox.transportr.trips.detail.TripDetailViewModel.SheetState.* import de.grobox.transportr.trips.detail.TripUtils.getStandardFare @@ -43,7 +46,6 @@ import de.grobox.transportr.utils.DateUtils.formatTime import de.grobox.transportr.utils.DateUtils.formatRelativeTime import de.grobox.transportr.utils.TransportrUtils.getColorFromAttr import de.schildbach.pte.dto.Trip -import kotlinx.android.synthetic.main.fragment_trip_detail.* import javax.inject.Inject class TripDetailFragment : TransportrFragment(), Toolbar.OnMenuItemClickListener { @@ -57,6 +59,23 @@ class TripDetailFragment : TransportrFragment(), Toolbar.OnMenuItemClickListener private lateinit var viewModel: TripDetailViewModel + private var _binding: FragmentTripDetailBinding? = null + private val binding get() = _binding!! + + private lateinit var fromTimeRel: TextView + private lateinit var fromTime: TextView + private lateinit var from: TextView + private lateinit var toTime: TextView + private lateinit var to: TextView + private lateinit var duration: TextView + private lateinit var durationTop: TextView + private lateinit var price: TextView + private lateinit var priceTop: TextView + private lateinit var toolbar: Toolbar + private lateinit var topBar: View + private lateinit var bottomBar: View + private lateinit var list: RecyclerView + private val timeUpdater: CountDownTimer = object : CountDownTimer(Long.MAX_VALUE, 1000 * 30) { override fun onTick(millisUntilFinished: Long) { viewModel.getTrip().value?.let { @@ -73,7 +92,23 @@ class TripDetailFragment : TransportrFragment(), Toolbar.OnMenuItemClickListener } override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - return inflater.inflate(R.layout.fragment_trip_detail, container, false) + _binding = FragmentTripDetailBinding.inflate(inflater, container, false) + + fromTimeRel = binding.fromTimeRel + fromTime = binding.fromTime + from = binding.from + toTime = binding.toTime + to = binding.to + duration = binding.duration + durationTop = binding.durationTop + price = binding.price + priceTop = binding.priceTop + toolbar = binding.toolbar + topBar = binding.topBar + bottomBar = binding.bottomBar + list = binding.list + + return binding.root } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { diff --git a/app/src/main/java/de/grobox/transportr/trips/search/DirectionsActivity.kt b/app/src/main/java/de/grobox/transportr/trips/search/DirectionsActivity.kt index 8716db6a6..0f92d66f7 100644 --- a/app/src/main/java/de/grobox/transportr/trips/search/DirectionsActivity.kt +++ b/app/src/main/java/de/grobox/transportr/trips/search/DirectionsActivity.kt @@ -30,12 +30,12 @@ import com.google.android.material.appbar.AppBarLayout.OnOffsetChangedListener import de.grobox.transportr.R import de.grobox.transportr.TransportrActivity import de.grobox.transportr.data.locations.FavoriteLocation.FavLocationType +import de.grobox.transportr.databinding.ActivityDirectionsBinding import de.grobox.transportr.locations.WrapLocation import de.grobox.transportr.locations.WrapLocation.WrapType.GPS import de.grobox.transportr.trips.search.SavedSearchesFragment.HomePickerFragment import de.grobox.transportr.trips.search.SavedSearchesFragment.WorkPickerFragment import de.grobox.transportr.utils.Constants.* -import kotlinx.android.synthetic.main.activity_directions.* import javax.inject.Inject class DirectionsActivity : TransportrActivity(), OnOffsetChangedListener { @@ -53,6 +53,7 @@ class DirectionsActivity : TransportrActivity(), OnOffsetChangedListener { internal lateinit var viewModelFactory: ViewModelProvider.Factory private lateinit var viewModel: DirectionsViewModel + private lateinit var binding: ActivityDirectionsBinding private val isShowingTrips: Boolean get() = fragmentIsVisible(TripsFragment.TAG) @@ -67,12 +68,14 @@ class DirectionsActivity : TransportrActivity(), OnOffsetChangedListener { public override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) component.inject(this) - setContentView(R.layout.activity_directions) + binding = ActivityDirectionsBinding.inflate(layoutInflater) + setContentView(binding.root) // get view model and observe data viewModel = ViewModelProvider(this, viewModelFactory).get(DirectionsViewModel::class.java) viewModel.showTrips.observe(this, Observer { showTrips() }) + val appBarLayout = binding.appBarLayout; appBarLayout.addOnOffsetChangedListener(this) if (savedInstanceState == null) { @@ -127,7 +130,8 @@ class DirectionsActivity : TransportrActivity(), OnOffsetChangedListener { supportFragmentManager.beginTransaction() .replace(R.id.fragmentContainer, TripsFragment(), TripsFragment.TAG) .commit() - fragmentContainer.requestFocus() + // SHIBE +// fragmentContainer.requestFocus() } private fun processIntent(intent: Intent?) { diff --git a/app/src/main/java/de/grobox/transportr/trips/search/DirectionsFragment.kt b/app/src/main/java/de/grobox/transportr/trips/search/DirectionsFragment.kt index e5c50f545..8c9414910 100644 --- a/app/src/main/java/de/grobox/transportr/trips/search/DirectionsFragment.kt +++ b/app/src/main/java/de/grobox/transportr/trips/search/DirectionsFragment.kt @@ -29,6 +29,10 @@ import android.view.ViewGroup import android.view.animation.Animation import android.view.animation.Animation.RELATIVE_TO_SELF import android.view.animation.TranslateAnimation +import android.widget.ImageButton +import android.widget.TextView +import androidx.appcompat.widget.AppCompatImageButton +import androidx.appcompat.widget.Toolbar import androidx.appcompat.widget.TooltipCompat import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider @@ -38,6 +42,9 @@ import de.grobox.transportr.data.locations.FavoriteLocation.FavLocationType import de.grobox.transportr.data.locations.FavoriteLocation.FavLocationType.FROM import de.grobox.transportr.data.locations.FavoriteLocation.FavLocationType.TO import de.grobox.transportr.data.locations.FavoriteLocation.FavLocationType.VIA +import de.grobox.transportr.databinding.FragmentDirectionsFormBinding +import de.grobox.transportr.locations.LocationGpsView +import de.grobox.transportr.locations.LocationView import de.grobox.transportr.settings.SettingsManager import de.grobox.transportr.ui.TimeDateFragment import de.grobox.transportr.utils.Constants.DATE @@ -49,7 +56,6 @@ import de.grobox.transportr.utils.DateUtils.formatTime import de.grobox.transportr.utils.DateUtils.isNow import de.grobox.transportr.utils.DateUtils.isToday import de.schildbach.pte.dto.Product -import kotlinx.android.synthetic.main.fragment_directions_form.* import java.util.* import javax.annotation.ParametersAreNonnullByDefault import javax.inject.Inject @@ -64,13 +70,56 @@ class DirectionsFragment : TransportrFragment() { private lateinit var viewModel: DirectionsViewModel + private var _binding: FragmentDirectionsFormBinding? = null + private val binding get() = _binding!! + + private lateinit var fromLocation: LocationGpsView + private lateinit var viaLocation: LocationView + private lateinit var toLocation: LocationView + private lateinit var fromCard: View + private lateinit var viaCard: View + private lateinit var toCard: View + private lateinit var toolbar: Toolbar + private lateinit var timeBackground: View + private lateinit var time: TextView + private lateinit var date: TextView + private lateinit var departure: TextView + private lateinit var favIcon: ImageButton + private lateinit var productsIcon: View + private lateinit var productsMarked: View + private lateinit var swapIcon: View + private lateinit var viaIcon: ImageButton + + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - val v = inflater.inflate(R.layout.fragment_directions_form, container, false) + _binding = FragmentDirectionsFormBinding.inflate(inflater, container, false) component.inject(this) viewModel = ViewModelProvider(activity!!, viewModelFactory).get(DirectionsViewModel::class.java) + fromLocation = binding.fromLocation + viaLocation = binding.viaLocation + toLocation = binding.toLocation + fromCard = binding.fromCard + viaCard = binding.viaCard + toCard = binding.toCard + toolbar = binding.toolbar + timeBackground = binding.timeBackground + time = binding.time + date = binding.date + departure = binding.departure + favIcon = binding.favIcon + productsIcon = binding.productsIcon + productsMarked = binding.productsMarked + swapIcon = binding.swapIcon + viaIcon = binding.viaIcon + + return binding.root + } - return v + override fun onDestroyView() { + super.onDestroyView() + _binding = null } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { diff --git a/app/src/main/java/de/grobox/transportr/trips/search/TripsFragment.kt b/app/src/main/java/de/grobox/transportr/trips/search/TripsFragment.kt index 73515cc2e..195663c3f 100644 --- a/app/src/main/java/de/grobox/transportr/trips/search/TripsFragment.kt +++ b/app/src/main/java/de/grobox/transportr/trips/search/TripsFragment.kt @@ -27,13 +27,17 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Button +import android.widget.TextView import android.widget.Toast import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.omadahealth.github.swipyrefreshlayout.library.SwipyRefreshLayout import com.omadahealth.github.swipyrefreshlayout.library.SwipyRefreshLayout.OnRefreshListener import com.omadahealth.github.swipyrefreshlayout.library.SwipyRefreshLayoutDirection import de.grobox.transportr.R import de.grobox.transportr.TransportrFragment +import de.grobox.transportr.databinding.FragmentTripsBinding import de.grobox.transportr.trips.detail.TripDetailActivity import de.grobox.transportr.trips.search.TripAdapter.OnTripClickListener import de.grobox.transportr.trips.search.TripsRepository.QueryMoreState @@ -41,7 +45,6 @@ import de.grobox.transportr.ui.LceAnimator import de.grobox.transportr.utils.Linkify import de.grobox.transportr.utils.TransportrUtils.getDragDistance import de.schildbach.pte.dto.Trip -import kotlinx.android.synthetic.main.fragment_trips.* import java.util.regex.Pattern import javax.annotation.ParametersAreNonnullByDefault import javax.inject.Inject @@ -52,18 +55,35 @@ class TripsFragment : TransportrFragment(), OnRefreshListener, OnTripClickListen internal lateinit var viewModelFactory: ViewModelProvider.Factory private lateinit var viewModel: DirectionsViewModel + + private var _binding: FragmentTripsBinding? = null + private val binding get() = _binding!! private val adapter = TripAdapter(this) private var topSwipingEnabled = false private var queryMoreDirection = SwipyRefreshLayoutDirection.BOTH + private lateinit var swipe: SwipyRefreshLayout; + private lateinit var list: RecyclerView; + private lateinit var errorButton: Button; + private lateinit var errorText: TextView; + private lateinit var errorLayout: View; + private lateinit var progressBar: View; + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - val v = inflater.inflate(R.layout.fragment_trips, container, false) + _binding = FragmentTripsBinding.inflate(inflater, container, false) component.inject(this) viewModel = ViewModelProvider(activity!!, viewModelFactory).get(DirectionsViewModel::class.java) - return v + swipe = binding.swipe + list = binding.list + errorButton = binding.errorButton + errorText = binding.errorText + errorLayout = binding.errorLayout + progressBar = binding.progressBar + + return binding.root } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { diff --git a/app/src/main/java/de/grobox/transportr/ui/TimeDateFragment.kt b/app/src/main/java/de/grobox/transportr/ui/TimeDateFragment.kt index a4e28a218..29deaf298 100755 --- a/app/src/main/java/de/grobox/transportr/ui/TimeDateFragment.kt +++ b/app/src/main/java/de/grobox/transportr/ui/TimeDateFragment.kt @@ -28,12 +28,16 @@ import android.view.LayoutInflater import android.view.View import android.view.View.GONE import android.view.ViewGroup +import android.widget.Button import android.widget.DatePicker +import android.widget.ImageButton +import android.widget.RadioButton +import android.widget.TextView import android.widget.TimePicker import android.widget.TimePicker.OnTimeChangedListener import androidx.fragment.app.DialogFragment import de.grobox.transportr.R -import kotlinx.android.synthetic.main.fragment_time_date.* +import de.grobox.transportr.databinding.FragmentTimeDateBinding import java.util.* import java.util.Calendar.* @@ -43,6 +47,20 @@ class TimeDateFragment : DialogFragment(), OnDateSetListener, OnTimeChangedListe private var departure: Boolean? = null // null means no departure/arrival selection will be possible private lateinit var calendar: Calendar + private var _binding: FragmentTimeDateBinding? = null + private val binding get() = _binding!! + + private lateinit var timePicker: TimePicker + private lateinit var dateView: TextView + private lateinit var prevDateButton: ImageButton + private lateinit var nextDateButton: ImageButton + private lateinit var departureButton: RadioButton + private lateinit var arrivalButton: RadioButton + private lateinit var okButton: Button + private lateinit var nowButton: Button + private lateinit var cancelButton: Button + + companion object { @JvmField val TAG: String = TimeDateFragment::class.java.simpleName @@ -76,8 +94,21 @@ class TimeDateFragment : DialogFragment(), OnDateSetListener, OnTimeChangedListe } } - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? = - inflater.inflate(R.layout.fragment_time_date, container) + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + _binding = FragmentTimeDateBinding.inflate(inflater, container, false) + + timePicker = binding.timePicker + dateView = binding.dateView + prevDateButton = binding.prevDateButton + nextDateButton = binding.nextDateButton + departureButton = binding.departureButton + arrivalButton = binding.arrivalButton + okButton = binding.okButton + nowButton = binding.nowButton + cancelButton = binding.cancelButton + + return binding.root + } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) diff --git a/app/witness.gradle b/app/witness.gradle index cd8dc30dc..55b776df8 100644 --- a/app/witness.gradle +++ b/app/witness.gradle @@ -25,6 +25,13 @@ dependencyVerification { 'androidx.cursoradapter:cursoradapter:1.0.0:cursoradapter-1.0.0.aar:a81c8fe78815fa47df5b749deb52727ad11f9397da58b16017f4eb2c11e28564', 'androidx.customview:customview:1.0.0:customview-1.0.0.aar:20e5b8f6526a34595a604f56718da81167c0b40a7a94a57daa355663f2594df2', 'androidx.customview:customview:1.1.0:customview-1.1.0.aar:01f76ab043770a97b054046f9815717b82ce0355c02967d16c61981359dc189a', + 'androidx.databinding:databinding-adapters:7.4.2:databinding-adapters-7.4.2.aar:4837397c908c8e902a66ac564beb95fcdabd9903c55c5513e040448ff5805209', + 'androidx.databinding:databinding-common:7.4.2:databinding-common-7.4.2.jar:9fa21e2030273ee3cb8c4701c341af8cf9359791a3b45b2bc0be07870c03b1c8', + 'androidx.databinding:databinding-compiler-common:7.4.2:databinding-compiler-common-7.4.2.jar:6f7909efb71bad157994d975ecb16c8041a256a9cd2e15bbbd712339efb38e9d', + 'androidx.databinding:databinding-compiler:7.4.2:databinding-compiler-7.4.2.jar:dcf8ce5ca0126b14d627bc0bf405b5d8b4ede1cf2b9c45d9b037a78e4c31e840', + 'androidx.databinding:databinding-ktx:7.4.2:databinding-ktx-7.4.2.aar:748cbf72e00d081fd740694113ae073f05e301a2812eca897d935d1fbe53a2f7', + 'androidx.databinding:databinding-runtime:7.4.2:databinding-runtime-7.4.2.aar:3dec419cf4b9e00fffabd74639750af2decaa2673204d7dd2282ec6c962f618f', + 'androidx.databinding:viewbinding:7.4.2:viewbinding-7.4.2.aar:be757b352533cb98be952de25f93f1a9bf0173286e0ae3231d5b48d21ae7cab5', 'androidx.documentfile:documentfile:1.0.0:documentfile-1.0.0.aar:865a061ef2fad16522f8433536b8d47208c46ff7c7745197dfa1eeb481869487', 'androidx.drawerlayout:drawerlayout:1.0.0:drawerlayout-1.0.0.aar:9402442cdc5a43cf62fb14f8cf98c63342d4d9d9b805c8033c6cf7e802749ac1', 'androidx.drawerlayout:drawerlayout:1.1.1:drawerlayout-1.1.1.aar:2c5f0dca378eb78ca2c4403f9889c77daa3059302260f26a07fe9f63c08926fe', @@ -36,32 +43,37 @@ dependencyVerification { 'androidx.legacy:legacy-support-core-ui:1.0.0:legacy-support-core-ui-1.0.0.aar:0d1260c6e7e6a337f875df71b516931e703f716e90889817cd3a20fa5ac3d947', 'androidx.legacy:legacy-support-core-utils:1.0.0:legacy-support-core-utils-1.0.0.aar:a7edcf01d5b52b3034073027bc4775b78a4764bb6202bb91d61c829add8dd1c7', 'androidx.lifecycle:lifecycle-common-java8:2.3.1:lifecycle-common-java8-2.3.1.jar:a1ec63c1bb973443cb731d78ec336c5e20e7ee35c89cbb32d36f92c55bb02542', + 'androidx.lifecycle:lifecycle-common-java8:2.4.0:lifecycle-common-java8-2.4.0.jar:69e1a62e5752ca3f43fb1607f161379bbe88b64af89c1a543c126160adf7cc53', 'androidx.lifecycle:lifecycle-common:2.0.0:lifecycle-common-2.0.0.jar:7bad7a188804adea6fa1f35d5ef99b705f20bd93ecadde484760ff86b535fefc', - 'androidx.lifecycle:lifecycle-common:2.3.1:lifecycle-common-2.3.1.jar:15848fb56db32f4c7cdc72b324003183d52a4884d6bf09be708ac7f587d139b5', + 'androidx.lifecycle:lifecycle-common:2.4.0:lifecycle-common-2.4.0.jar:20ad1520f625cf455e6afd7290988306d3a9886efa993e0860fbabf4bb3f7bda', 'androidx.lifecycle:lifecycle-livedata-core:2.0.0:lifecycle-livedata-core-2.0.0.aar:fde334ec7e22744c0f5bfe7caf1a84c9d717327044400577bdf9bd921ec4f7bc', - 'androidx.lifecycle:lifecycle-livedata-core:2.3.1:lifecycle-livedata-core-2.3.1.aar:e55d38c372460f0a03997ddc950c67227511340fd74f8634d99d29653cd81ab1', + 'androidx.lifecycle:lifecycle-livedata-core:2.4.0:lifecycle-livedata-core-2.4.0.aar:6f25e357320ec341e440e02d08f6ff54ae99a367c9106e864e6e8df3df5cdafc', 'androidx.lifecycle:lifecycle-livedata:2.0.0:lifecycle-livedata-2.0.0.aar:c82609ced8c498f0a701a30fb6771bb7480860daee84d82e0a81ee86edf7ba39', - 'androidx.lifecycle:lifecycle-livedata:2.3.1:lifecycle-livedata-2.3.1.aar:b1e061139126f883d4010f23fe7ba460adea432d453c88a00b868cbf9ac037ce', + 'androidx.lifecycle:lifecycle-livedata:2.4.0:lifecycle-livedata-2.4.0.aar:d9ecc3d68f049f521d9a0de7217d1c3b4e53b13c5d280b42b8ed8cba4d8b00f2', + 'androidx.lifecycle:lifecycle-process:2.4.0:lifecycle-process-2.4.0.aar:32f175588bd62df5672448516d9e4f3d4935d0020c0d9517958c9ffbd7c207e5', + 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.0:lifecycle-runtime-ktx-2.4.0.aar:6d0c754282b972c32fdf95a21b496efe141d13836e4d06beaa3c51685ccbf0f1', 'androidx.lifecycle:lifecycle-runtime:2.0.0:lifecycle-runtime-2.0.0.aar:e4afc9e636183f6f3e0edf1cf46121a492ffd2c673075bb07f55c7a99dd43cfb', - 'androidx.lifecycle:lifecycle-runtime:2.3.1:lifecycle-runtime-2.3.1.aar:dd294f4a689c71ff877fd41f3b67a3a62f7760d44ce420e6130f1fc3569d8f00', + 'androidx.lifecycle:lifecycle-runtime:2.4.0:lifecycle-runtime-2.4.0.aar:fba2ea76a2c0a8d2804e611367d9703c5ab2ecaafebca4932b00fd672c593588', + 'androidx.lifecycle:lifecycle-service:2.4.0:lifecycle-service-2.4.0.aar:9c8de74eed399fe2a0e80bea2a58d6d1327e371f77ac7484c99beb4d84491db8', 'androidx.lifecycle:lifecycle-viewmodel-savedstate:2.3.1:lifecycle-viewmodel-savedstate-2.3.1.aar:97137a8af6a31776a14e4866ab808c7c0a791b484bdbc788bbd83e66407564c0', 'androidx.lifecycle:lifecycle-viewmodel:2.0.0:lifecycle-viewmodel-2.0.0.aar:d6460aea1b6bad80ab14cf88297e9e43bfde8d87c3e5c28f2c508233ffbcc062', - 'androidx.lifecycle:lifecycle-viewmodel:2.3.1:lifecycle-viewmodel-2.3.1.aar:b6db4c274a12ff85a4747e1e6669c7e98aefa2571ace9d1f1a6fa6be417ce838', + 'androidx.lifecycle:lifecycle-viewmodel:2.4.0:lifecycle-viewmodel-2.4.0.aar:e6cd8f83524ed7869ccdc40806f9036a1a1e6e9f7c47bed0dcccdc457fc002b0', 'androidx.loader:loader:1.0.0:loader-1.0.0.aar:11f735cb3b55c458d470bed9e25254375b518b4b1bad6926783a7026db0f5025', 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0:localbroadcastmanager-1.0.0.aar:e71c328ceef5c4a7d76f2d86df1b65d65fe2acf868b1a4efd84a3f34336186d8', 'androidx.preference:preference:1.1.0:preference-1.1.0.aar:6cf1a099b03b3254041b04701841865b2708c0b546b9036c8b0dada0aa59de57', 'androidx.print:print:1.0.0:print-1.0.0.aar:1d5c7f3135a1bba661fc373fd72e11eb0a4adbb3396787826dd8e4190d5d9edd', 'androidx.recyclerview:recyclerview:1.0.0:recyclerview-1.0.0.aar:06956fb1ac014027ca9d2b40469a4b42aa61b4957bb11848e1ff352701ab4548', 'androidx.recyclerview:recyclerview:1.2.0:recyclerview-1.2.0.aar:f68c432db998efac90b9e7f41c1510f097b82220766524d45d04f9b64c6e4d87', - 'androidx.room:room-common:2.3.0:room-common-2.3.0.jar:3492dd60e57c51880ff867a18ed94f28412a84af0830c4bd6d38d5579072ab66', - 'androidx.room:room-compiler-processing:2.3.0:room-compiler-processing-2.3.0.jar:b7ee51fdab8bb3c594f50ac874078259e64552efa54b80ba3d24eeedd419dcfd', - 'androidx.room:room-compiler:2.3.0:room-compiler-2.3.0.jar:360c2bbb65a81a4e6bf7bf170c7735a5b0250c0a38ea00fe8de5678e6d1be0d3', - 'androidx.room:room-migration:2.3.0:room-migration-2.3.0.jar:fee2a8a87c22e82e4154e63b7b57939ebc3ed03ba27cf95d64f8235e19e6f17c', - 'androidx.room:room-runtime:2.3.0:room-runtime-2.3.0.aar:3296970e92d85f098f26e776911da3bd9bb084acd37440bd1705fd163f4a93f9', + 'androidx.room:room-common:2.4.1:room-common-2.4.1.jar:6505f987e696f54475cd82c922e4f4df8c6cd5282e2601bf118e1de7320c36cf', + 'androidx.room:room-compiler-processing:2.4.1:room-compiler-processing-2.4.1.jar:3f5cfdf1ee17ad7b8fde6a4770ca1509e0e9687c0a3430f34e5c0b39d2a7f1b8', + 'androidx.room:room-compiler:2.4.1:room-compiler-2.4.1.jar:6117142aa467667f3d10f9736ed7261aa52b348ebfad0f4b68a4192bb280c93e', + 'androidx.room:room-migration:2.4.1:room-migration-2.4.1.jar:e0efe1ed8557f82628bfcb0b2058a5125472dcf31ef9af85c646d7eaaf900d20', + 'androidx.room:room-runtime:2.4.1:room-runtime-2.4.1.aar:6696d47c0573b67e015f99de467d2be83fd2051c49388e25a95e854417592045', 'androidx.savedstate:savedstate:1.1.0:savedstate-1.1.0.aar:d60bbe44c2c08083a17c5dc678a6d6b4d0a2d664858016ab5c049cbea90a63b7', 'androidx.slidingpanelayout:slidingpanelayout:1.0.0:slidingpanelayout-1.0.0.aar:76bffb7cefbf780794d8817002dad1562f3e27c0a9f746d62401c8edb30aeede', - 'androidx.sqlite:sqlite-framework:2.1.0:sqlite-framework-2.1.0.aar:8673737fdb2efbad91aeaeed1927ebb29212d36a867d93b9639c8069019f8a1e', - 'androidx.sqlite:sqlite:2.1.0:sqlite-2.1.0.aar:8341ff092d6060d62a07227f29237155fff36fb16f96c95fbd9a884e375db912', + 'androidx.sqlite:sqlite-framework:2.2.0:sqlite-framework-2.2.0.aar:e5f5fbe7c209e21cde21d1d781481c9b0245839bc03bdd89fa4a798945bdb6a5', + 'androidx.sqlite:sqlite:2.2.0:sqlite-2.2.0.aar:6156d5d2c17bd8c5460f199142e4283053b1da750994f6b396c62c50fcc7270c', + 'androidx.startup:startup-runtime:1.0.0:startup-runtime-1.0.0.aar:ff081d2db7dd28aec59f74934c514fbaf4ae5aac5258495fe10d612a3622f876', 'androidx.swiperefreshlayout:swiperefreshlayout:1.0.0:swiperefreshlayout-1.0.0.aar:9761b3a809c9b093fd06a3c4bbc645756dec0e95b5c9da419bc9f2a3f3026e8d', 'androidx.test.espresso:espresso-contrib:3.3.0:espresso-contrib-3.3.0.aar:f400cabdc181356acf6b210e4509dcb9649d9e2b6b6e218c60fcfc15e8a756d1', 'androidx.test.espresso:espresso-core:3.3.0:espresso-core-3.3.0.aar:23ebf6014645e0c60aec7d1ed924d4d4c848ae8c3673b7d8d06b2ec6a56cafee', @@ -83,6 +95,9 @@ dependencyVerification { 'androidx.versionedparcelable:versionedparcelable:1.1.1:versionedparcelable-1.1.1.aar:57e8d93260d18d5b9007c9eed3c64ad159de90c8609ebfc74a347cbd514535a4', 'androidx.viewpager2:viewpager2:1.0.0:viewpager2-1.0.0.aar:e95c0031d4cc247cd48196c6287e58d2cee54d9c79b85afea7c90920330275af', 'androidx.viewpager:viewpager:1.0.0:viewpager-1.0.0.aar:147af4e14a1984010d8f155e5e19d781f03c1d70dfed02a8e0d18428b8fc8682', + 'com.android.databinding:baseLibrary:7.4.2:baseLibrary-7.4.2.jar:530b2113317ff4d0f69ffdfb49387ba4b86aac169e1c77dff943405b79adcf8b', + 'com.android.tools.build.jetifier:jetifier-core:1.0.0-beta10:jetifier-core-1.0.0-beta10.jar:26abb4a13927d9062169c504c9e94fe80e9ae3a4f7b5ab8875ab007536a91f5e', + 'com.android.tools:annotations:30.4.2:annotations-30.4.2.jar:d4ba7dd6055a6f1fd6ddb6dcef4e2096c15908bc7dc6057cb2e06f3a0db949c7', 'com.github.omadahealth:swipy:1.2.3:swipy-1.2.3.aar:63bff6e181742e3e243c29b595062ca65b4274bf7033c65460924f64f65c01e0', 'com.github.tony19:logback-android:1.1.1-12:logback-android-1.1.1-12.aar:3102228f0e408e3c003b34e96a604e9b9f59d314dcf8f03aa78d9d3648198932', 'com.gitlab.opentransitmap:public-transport-enabler:c64494b1:public-transport-enabler-c64494b1.jar:d707f9556ed29102db596808fc1a18c8b458fd65e5e9d41d046afb1c830571a8', @@ -92,23 +107,25 @@ dependencyVerification { 'com.google.android:flexbox:0.3.2:flexbox-0.3.2.aar:610a6a00695e873b4b6b785b7dce1c60f6a5964044b6d093b4d1060cbf13c278', 'com.google.auto.value:auto-value-annotations:1.6.3:auto-value-annotations-1.6.3.jar:0e951fee8c31f60270bc46553a8586001b7b93dbb12aec06373aa99a150392c0', 'com.google.auto:auto-common:0.10:auto-common-0.10.jar:b876b5fddaceeba7d359667f6c4fb8c6f8658da1ab902ffb79ec9a415deede5f', + 'com.google.auto:auto-common:0.11:auto-common-0.11.jar:ec668cd50a3a66a5def17e6ae67423542e514181c0e9ab5b11959c0ac9c4222a', 'com.google.code.findbugs:jsr305:2.0.1:jsr305-2.0.1.jar:1e7f53fa5b8b5c807e986ba335665da03f18d660802d8bf061823089d1bee468', 'com.google.code.findbugs:jsr305:3.0.2:jsr305-3.0.2.jar:766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7', - 'com.google.code.gson:gson:2.8.0:gson-2.8.0.jar:c6221763bd79c4f1c3dc7f750b5f29a0bb38b367b81314c4f71896e340c40825', 'com.google.code.gson:gson:2.8.6:gson-2.8.6.jar:c8fb4839054d280b3033f800d1f5a97de2f028eb8ba2eb458ad287e536f3f25f', + 'com.google.code.gson:gson:2.8.9:gson-2.8.9.jar:d3999291855de495c94c743761b8ab5176cfeabe281a5ab0d8e8d45326fd703e', 'com.google.dagger:dagger-compiler:2.22.1:dagger-compiler-2.22.1.jar:e5f28302cbe70a79d3620cddebfb8ec0736814f3980ffe1e673bfe3342f507d3', 'com.google.dagger:dagger-producers:2.22.1:dagger-producers-2.22.1.jar:f834a0082014213a68ff06a0f048d750178d02196c58b0b15beb367d32b97e35', 'com.google.dagger:dagger-spi:2.22.1:dagger-spi-2.22.1.jar:4b0b922793b3bcb91b99fabb75dba77c68afd7ae4c5f0c4fd6ba681f0a291c7d', 'com.google.dagger:dagger:2.22.1:dagger-2.22.1.jar:329d4340f24c4f5717af016c097e90668bfea2a5376e6aa9964b01cef3fd241a', - 'com.google.devtools.ksp:symbol-processing-api:1.4.30-1.0.0-alpha04:symbol-processing-api-1.4.30-1.0.0-alpha04.jar:6c319c718ebf4b76e05e4e4f156b276d1f7e420a31f62bcb3ce47b4117b8fe6f', + 'com.google.devtools.ksp:symbol-processing-api:1.6.10-1.0.2:symbol-processing-api-1.6.10-1.0.2.jar:caa18d15fc54b6da32746a79fe74f6c267ae24364c426f3fc61f209fdb87cb50', 'com.google.errorprone:error_prone_annotations:2.3.4:error_prone_annotations-2.3.4.jar:baf7d6ea97ce606c53e11b6854ba5f2ce7ef5c24dddf0afa18d1260bd25b002c', 'com.google.errorprone:javac-shaded:9-dev-r4023-3:javac-shaded-9-dev-r4023-3.jar:65bfccf60986c47fbc17c9ebab0be626afc41741e0a6ec7109e0768817a36f30', 'com.google.googlejavaformat:google-java-format:1.5:google-java-format-1.5.jar:aa19ad7850fb85178aa22f2fddb163b84d6ce4d0035872f30d4408195ca1144e', 'com.google.guava:failureaccess:1.0.1:failureaccess-1.0.1.jar:a171ee4c734dd2da837e4b16be9df4661afab72a41adaf31eb84dfdaf936ca26', 'com.google.guava:guava:29.0-android:guava-29.0-android.jar:00ba22cb0e32610db7cf8ab4c20017c85d11788600734ff1d86995345eb5bc3b', - 'com.google.guava:guava:29.0-jre:guava-29.0-jre.jar:b22c5fb66d61e7b9522531d04b2f915b5158e80aa0b40ee7282c8bfb07b0da25', + 'com.google.guava:guava:30.1-jre:guava-30.1-jre.jar:e6dd072f9d3fe02a4600688380bd422bdac184caf6fe2418cfdd0934f09432aa', 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava:listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar:b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99', 'com.google.j2objc:j2objc-annotations:1.3:j2objc-annotations-1.3.jar:21af30c92267bd6122c0e0b4d20cccb6641a37eaf956c6540ec471d584e64a7b', + 'com.googlecode.juniversalchardet:juniversalchardet:1.0.3:juniversalchardet-1.0.3.jar:757bfe906193b8b651e79dc26cd67d6b55d0770a2cdfb0381591504f779d4a76', 'com.intellij:annotations:12.0:annotations-12.0.jar:f8ab13b14be080fe2f617f90e55599760e4a1b4deeea5c595df63d0d6375ed6d', 'com.jakewharton.timber:timber:4.7.0:timber-4.7.0.aar:0a0c00e23cae78dd1790e4dfd8b6d1a500f4eaa358c37f6e2a43fa43c8909fe7', 'com.jakewharton.timber:timber:5.0.1:timber-5.0.1.aar:c6edddfcc8eff42a1604c8577fcfa4b4ffd9f252122c52ea36cfe7967f512f71', @@ -126,10 +143,17 @@ dependencyVerification { 'com.squareup.okhttp3:okhttp:4.10.0:okhttp-4.10.0.jar:7580f14fa1691206e37081ad3f92063b1603b328da0bb316f2fef02e0562e7ec', 'com.squareup.okio:okio-jvm:3.0.0:okio-jvm-3.0.0.jar:be64a0cc1f28ea9cd5c970dd7e7557af72c808d738c495b397bf897c9921e907', 'com.squareup.okio:okio:1.15.0:okio-1.15.0.jar:693fa319a7e8843300602b204023b7674f106ebcb577f2dd5807212b66118bd2', + 'com.squareup:javapoet:1.10.0:javapoet-1.10.0.jar:20ef4b82e43ff7c652281a21313cf3b941092467add3fa73509c26f6969efdab', 'com.squareup:javapoet:1.13.0:javapoet-1.13.0.jar:4c7517e848a71b36d069d12bb3bf46a70fd4cda3105d822b0ed2e19c00b69291', 'com.squareup:javawriter:2.1.1:javawriter-2.1.1.jar:f699823d0081f69cbb676c1845ea222e0ada79bc88a53e5d22d8bd02d328f57e', - 'commons-codec:commons-codec:1.10:commons-codec-1.10.jar:4241dfa94e711d435f29a4604a3e2de5c4aa3c165e23bd066be6fc1fc4309569', + 'com.squareup:kotlinpoet:1.8.0:kotlinpoet-1.8.0.jar:a4f7f1f1306a97740b2c18c6089cddf65626764c4cd848aa83363681268e57f0', + 'com.sun.istack:istack-commons-runtime:3.0.8:istack-commons-runtime-3.0.8.jar:4ffabb06be454a05e4398e20c77fa2b6308d4b88dfbef7ca30a76b5b7d5505ef', + 'com.sun.xml.fastinfoset:FastInfoset:1.2.16:FastInfoset-1.2.16.jar:056f3a1e144409f21ed16afc26805f58e9a21f3fce1543c42d400719d250c511', + 'commons-codec:commons-codec:1.11:commons-codec-1.11.jar:e599d5318e97aa48f42136a2927e6dfa4e8881dff0e6c8e3109ddbbff51d7b7d', + 'commons-io:commons-io:2.4:commons-io-2.4.jar:cc6a41dc3eaacc9e440a6bd0d2890b20d36b4ee408fe2d67122f328bb6e01581', 'de.cketti.library.changelog:ckchangelog:1.2.2:ckchangelog-1.2.2.aar:e113de0f4bc42b983dd6b690b67d76f29975167c2204e3792831961740889d78', + 'jakarta.activation:jakarta.activation-api:1.2.1:jakarta.activation-api-1.2.1.jar:8b0a0f52fa8b05c5431921a063ed866efaa41dadf2e3a7ee3e1961f2b0d9645b', + 'jakarta.xml.bind:jakarta.xml.bind-api:2.3.2:jakarta.xml.bind-api-2.3.2.jar:69156304079bdeed9fc0ae3b39389f19b3cc4ba4443bc80508995394ead742ea', 'javax.annotation:jsr250-api:1.0:jsr250-api-1.0.jar:a1a922d0d9b6d183ed3800dfac01d1e1eb159f0e8c6f94736931c1def54a941f', 'javax.inject:javax.inject:1:javax.inject-1.jar:91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff', 'junit:junit:4.12:junit-4.12.jar:59721f0805e223d84b90677887d9ff567dc534d7c502ca903c0c2b17f05c116a', @@ -139,7 +163,9 @@ dependencyVerification { 'net.java.dev.jna:jna:5.6.0:jna-5.6.0.jar:5557e235a8aa2f9766d5dc609d67948f2a8832c2d796cea9ef1d6cbe0b3b7eaf', 'org.checkerframework:checker-compat-qual:2.5.3:checker-compat-qual-2.5.3.jar:d76b9afea61c7c082908023f0cbc1427fab9abd2df915c8b8a3e7a509bccbc6d', 'org.checkerframework:checker-compat-qual:2.5.5:checker-compat-qual-2.5.5.jar:11d134b245e9cacc474514d2d66b5b8618f8039a1465cdc55bbc0b34e0008b7a', - 'org.checkerframework:checker-qual:2.11.1:checker-qual-2.11.1.jar:015224a4b1dc6de6da053273d4da7d39cfea20e63038169fc45ac0d1dc9c5938', + 'org.checkerframework:checker-qual:3.5.0:checker-qual-3.5.0.jar:729990b3f18a95606fc2573836b6958bcdb44cb52bfbd1b7aa9c339cff35a5a4', + 'org.glassfish.jaxb:jaxb-runtime:2.3.2:jaxb-runtime-2.3.2.jar:e6e0a1e89fb6ff786279e6a0082d5cef52dc2ebe67053d041800737652b4fd1b', + 'org.glassfish.jaxb:txw2:2.3.2:txw2-2.3.2.jar:4a6a9f483388d461b81aa9a28c685b8b74c0597993bf1884b04eddbca95f48fe', 'org.hamcrest:hamcrest-core:1.3:hamcrest-core-1.3.jar:66fdef91e9739348df7a096aa384a5685f4e875584cce89386a7a47251c4d8e9', 'org.hamcrest:hamcrest-integration:1.3:hamcrest-integration-1.3.jar:70f418efbb506c5155da5f9a5a33262ea08a9e4d7fea186aa9015c41a7224ac2', 'org.hamcrest:hamcrest-library:1.3:hamcrest-library-1.3.jar:711d64522f9ec410983bd310934296da134be4254a125080a0416ec178dfad1c', @@ -148,27 +174,36 @@ dependencyVerification { 'org.jacoco:org.jacoco.core:0.8.8:org.jacoco.core-0.8.8.jar:474c782f809d88924713dfdbf0acb79d330f904be576484803463d0465611643', 'org.jacoco:org.jacoco.report:0.8.8:org.jacoco.report-0.8.8.jar:2c129110f3e3fcaa1f8179578ea3894586199cb0826be5c7790278084c9622a9', 'org.jetbrains.intellij.deps:trove4j:1.0.20200330:trove4j-1.0.20200330.jar:c5fd725bffab51846bf3c77db1383c60aaaebfe1b7fe2f00d23fe1b7df0a439d', - 'org.jetbrains.kotlin:kotlin-android-extensions-runtime:1.7.10:kotlin-android-extensions-runtime-1.7.10.jar:7be8747f085a8e10588bb5a49b760e0e9d23ac9b6470632e93fffac469fb1990', - 'org.jetbrains.kotlin:kotlin-android-extensions:1.7.10:kotlin-android-extensions-1.7.10.jar:8848ab3627e888adce1ca54d0e0f348f269928f327b1a305a9450cc41f599729', - 'org.jetbrains.kotlin:kotlin-annotation-processing-gradle:1.7.10:kotlin-annotation-processing-gradle-1.7.10.jar:5351105490f668a4582966ee149ccd5eaf286f7a0b4cf7a301268b8b8910dfd1', - 'org.jetbrains.kotlin:kotlin-compiler-embeddable:1.7.10:kotlin-compiler-embeddable-1.7.10.jar:470ba8941794f818a34b0a8f387ee27e44268e95a108322d18d9749ae345e22b', - 'org.jetbrains.kotlin:kotlin-daemon-embeddable:1.7.10:kotlin-daemon-embeddable-1.7.10.jar:77c5f3ab1ed653a899e96835937a9daf3a46e496fdfa6915ff6d20b2953619a4', - 'org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.7.10:kotlin-klib-commonizer-embeddable-1.7.10.jar:1c2550f1e7ec4d1590aacddd7852b90a4cf05de6e66cee31ad747c8dc0834e33', - 'org.jetbrains.kotlin:kotlin-reflect:1.7.10:kotlin-reflect-1.7.10.jar:187c5e5a588a6ed18c3a41b54df138a5944121bdb396be1c3fa4abee67397955', - 'org.jetbrains.kotlin:kotlin-script-runtime:1.7.10:kotlin-script-runtime-1.7.10.jar:84bfc2aa4eec6768113930cdaef8b5b9f59ac4138fbca3b11300fff4d076950c', - 'org.jetbrains.kotlin:kotlin-stdlib-common:1.4.31:kotlin-stdlib-common-1.4.31.jar:57962f44371a746b678218a0802a8712c6255206de9a69ede215e3aa4b044708', + 'org.jetbrains.kotlin:kotlin-android-extensions-runtime:1.8.22:kotlin-android-extensions-runtime-1.8.22.jar:4ac2e165c82f712f89aaf95b8ca3487aa3638108c11d49634612b838e1ad122c', + 'org.jetbrains.kotlin:kotlin-annotation-processing-gradle:1.8.22:kotlin-annotation-processing-gradle-1.8.22.jar:92101d8e097c97ee5c1ae9e2906caee02919aa64aee68325b4c068c9f99783cd', + 'org.jetbrains.kotlin:kotlin-compiler-embeddable:1.8.22:kotlin-compiler-embeddable-1.8.22.jar:baf550c2f53ebfe7c053dd14e776f0dee18dd26555ea6a045a8decf73ccd5df8', + 'org.jetbrains.kotlin:kotlin-daemon-embeddable:1.8.22:kotlin-daemon-embeddable-1.8.22.jar:567e5c902cb0302dc8444fbf1f8fc0e0f76a95077ce607943ec503270ee4470d', + 'org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.8.22:kotlin-klib-commonizer-embeddable-1.8.22.jar:506304e87f9bcbb5db0ddc3d60e59399d809276043103e7cb6a1ef39414aab82', + 'org.jetbrains.kotlin:kotlin-parcelize-compiler:1.8.22:kotlin-parcelize-compiler-1.8.22.jar:b9fc3ca36ceeb92766660a5ae76f00ed322eb2cbc7abde6310546a415260f19a', + 'org.jetbrains.kotlin:kotlin-parcelize-runtime:1.8.22:kotlin-parcelize-runtime-1.8.22.jar:4f9d250f01e2a2107beddeb377891ccf78436a816875cd254b6a64f614ac3dd2', + 'org.jetbrains.kotlin:kotlin-reflect:1.4.31:kotlin-reflect-1.4.31.jar:91fad0b42974a7d5811e30a61f05706e176b144235717c6de7e81e3a781028f2', + 'org.jetbrains.kotlin:kotlin-reflect:1.6.10:kotlin-reflect-1.6.10.jar:3277ac102ae17aad10a55abec75ff5696c8d109790396434b496e75087854203', + 'org.jetbrains.kotlin:kotlin-script-runtime:1.8.22:kotlin-script-runtime-1.8.22.jar:f7e3969d528d049c0a2b1820e5b1638eb08a1144d351e0772dd1b7b50c6dcb32', + 'org.jetbrains.kotlin:kotlin-stdlib-common:1.5.30:kotlin-stdlib-common-1.5.30.jar:8eb3ac530a978422e0f8d0bba78ba2c628bec997dc2f1aa4ef8c5b854e3764b8', 'org.jetbrains.kotlin:kotlin-stdlib-common:1.7.10:kotlin-stdlib-common-1.7.10.jar:19f102efe9629f8eabc63853ad15c533e47c47f91fca09285c5bde86e59f91d4', - 'org.jetbrains.kotlin:kotlin-stdlib-common:1.7.20:kotlin-stdlib-common-1.7.20.jar:e0e91962bc0007338bf5b1739f62927ac32d14ba3d827fa608ab4e5351729d5d', - 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.31:kotlin-stdlib-jdk7-1.4.31.jar:1f966e54e86cf4b7d7014afdce04e0f3ee4625084cda3494edccc7b84af52664', - 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.20:kotlin-stdlib-jdk7-1.7.20.jar:524da3c1a2ad56fd52c4ae2272ef3de421de8d2047ab1c51fc306d351243f2f5', - 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.31:kotlin-stdlib-jdk8-1.4.31.jar:b2f8364435ebcb0106ff9d4415a11ffdef8ec7786ee6e5ed465a01556cbd1683', - 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.20:kotlin-stdlib-jdk8-1.7.20.jar:1da0d306c995945e1f807240ef64b5cd2dd5ac58612afb1a8596143d10b7ded5', - 'org.jetbrains.kotlin:kotlin-stdlib:1.4.31:kotlin-stdlib-1.4.31.jar:76a599d88b167e8ac90879b6daa722c6ad3452ba714c9aba19bd196544b97f1c', + 'org.jetbrains.kotlin:kotlin-stdlib-common:1.8.22:kotlin-stdlib-common-1.8.22.jar:d0c2365e2437ef70f34586d50f055743f79716bcfe65e4bc7239cdd2669ef7c5', + 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.5.0:kotlin-stdlib-jdk7-1.5.0.jar:ac12f092f12b575c1f9e0ab5025b1e610b0fe95663e26371c16c328895711bae', + 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.10:kotlin-stdlib-jdk7-1.7.10.jar:54f61351b1936ad88f4e53059fe781e723eae51d78ed9e7422d8b403574ec682', + 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.22:kotlin-stdlib-jdk7-1.8.22.jar:055f5cb24287fa106100995a7b47ab92126b81e832e875f5fa2cf0bd55693d0b', + 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.5.0:kotlin-stdlib-jdk8-1.5.0.jar:15e6c81b9e845eefe58d51a04670bb90418046f458264ec0e61ee9bdbc1bfae7', + 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10:kotlin-stdlib-jdk8-1.7.10.jar:8aafdd60c94f454c92e5066d266a5ed53ecc63c78f623b3fd9db56fea4032873', + 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22:kotlin-stdlib-jdk8-1.8.22.jar:4198b0eaf090a4f25b6f7e5a59581f4314ba8c9f6cd1d13ee9d348e65ed8f707', + 'org.jetbrains.kotlin:kotlin-stdlib:1.5.30:kotlin-stdlib-1.5.30.jar:c55608e9eb6df7327e74b21e271d324dc523cef31587b8d6d2393db08d6e000c', 'org.jetbrains.kotlin:kotlin-stdlib:1.7.10:kotlin-stdlib-1.7.10.jar:e771fe74250a943e8f6346713201ff1d8cb95c3a5d1a91a22b65a9e04f6a8901', - 'org.jetbrains.kotlin:kotlin-stdlib:1.7.20:kotlin-stdlib-1.7.20.jar:7779ec96b9acbf92ca023858ac04543f9d2c3bdf1722425fff42f25ff3acfc9b', - 'org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.2.0:kotlinx-metadata-jvm-0.2.0.jar:a973efbc4571dcf5b02462b79f92f384e428886b287f12a9a2b41601ef971a5c', + 'org.jetbrains.kotlin:kotlin-stdlib:1.8.22:kotlin-stdlib-1.8.22.jar:03a5c3965cc37051128e64e46748e394b6bd4c97fa81c6de6fc72bfd44e3421b', + 'org.jetbrains.kotlinx:atomicfu:0.16.1:atomicfu-metadata-0.16.1-all.jar:9e3c37269f9d4ffc3edbd4f667e42fe27e92b06bb98e6815da6f19e635275654', + 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0:kotlinx-coroutines-android-1.5.0.jar:7099198391d673c199fea084423d9f3fdc79470acba19111330c7f88504279c7', + 'org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0:kotlinx-coroutines-core-jvm-1.5.0.jar:78d6cc7135f84d692ff3752fcfd1fa1bbe0940d7df70652e4f1eaeec0c78afbb', + 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0:kotlinx-coroutines-core-metadata-1.5.0-all.jar:fd58f72f025aa044b09b8b18299012f0d5710632834bcfab3aee32d3b1f26a88', + 'org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.3.0:kotlinx-metadata-jvm-0.3.0.jar:fdaf7ba158465f6b6e9ce5762e0300fd681a976fbfeb5ed50fa5a2b26868cec8', 'org.jetbrains:annotations:13.0:annotations-13.0.jar:ace2a10dc8e2d5fd34925ecac03e4988b2c0f851650c94b8cef49ba1bd111478', 'org.jetbrains:annotations:20.1.0:annotations-20.1.0.jar:edc8e3ec9796a5f41c1ae44b2d318507ee6ac1212f121d93d33699b3d0aff638', + 'org.jvnet.staxex:stax-ex:1.8.1:stax-ex-1.8.1.jar:20522549056e9e50aa35ef0b445a2e47a53d06be0b0a9467d704e2483ffb049a', 'org.maplibre.gl:android-sdk-geojson:5.9.0:android-sdk-geojson-5.9.0.jar:54a54bf7fc853d2eec36b97a2979ec0904aea83762e41ebfadac21c8b1cdc838', 'org.maplibre.gl:android-sdk-turf:5.9.0:android-sdk-turf-5.9.0.jar:b593fd4de144efa8a4c7cbafef7789c4d69c45372ec7bf01a14f973444c7d214', 'org.maplibre.gl:android-sdk:10.2.0:android-sdk-10.2.0.aar:e45fcc7f6a195114be1df22cb9f5d8d0fde00252925b984ded4a3ce5edd46a4a', @@ -182,7 +217,7 @@ dependencyVerification { 'org.ow2.asm:asm:9.2:asm-9.2.jar:b9d4fe4d71938df38839f0eca42aaaa64cf8b313d678da036f0cb3ca199b47f5', 'org.slf4j:slf4j-api:1.7.32:slf4j-api-1.7.32.jar:3624f8474c1af46d75f98bc097d7864a323c81b3808aa43689a6e1c601c027be', 'org.slf4j:slf4j-api:2.0.9:slf4j-api-2.0.9.jar:0818930dc8d7debb403204611691da58e49d42c50b6ffcfdce02dadb7c3c2b6c', - 'org.xerial:sqlite-jdbc:3.25.2:sqlite-jdbc-3.25.2.jar:a45da61abed61568a533fdece125093180828edeb0d4b6f6d572e0cf457465f6', + 'org.xerial:sqlite-jdbc:3.36.0:sqlite-jdbc-3.36.0.jar:c0f13672668ec479dbf685dcadf6c2dd2fb44f266f99a90624dde46eb5524aaf', 'tools.fastlane:screengrab:2.1.1:screengrab-2.1.1.aar:5a02781c0986e71ddbc691263115c2db70bdebb4b48d5b6dcf06ab1cb547d62d', 'uk.co.samuelwall:material-tap-target-prompt:2.14.0:material-tap-target-prompt-2.14.0.aar:12ab447ba97019adbecb20e048921ca30ed7a9f72a37b83f39a4333bd759b518', ] diff --git a/build.gradle b/build.gradle index ccdf781c7..b1e1e2b59 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ buildscript { ext { - kotlinVersion = '1.7.10' + kotlinVersion = '1.8.22' daggerVersion = '2.22.1' fastadapterVersion = '3.2.4@aar' }