Skip to content

Commit

Permalink
Remember preferred means of transport (#833)
Browse files Browse the repository at this point in the history
* Remember preferred means of transport

Signed-off-by: Prat T <pt2121@users.noreply.github.com>

* Add prefix for pref key for transportation mode

---------

Signed-off-by: Prat T <pt2121@users.noreply.github.com>
Co-authored-by: Prat T <pt2121@users.noreply.github.com>
  • Loading branch information
pt2121 and pt2121 authored Aug 16, 2023
1 parent 1f9d1cb commit c789182
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 3 deletions.
26 changes: 26 additions & 0 deletions app/src/main/java/de/grobox/transportr/settings/SettingsManager.kt
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import de.grobox.transportr.R
import de.schildbach.pte.NetworkId
import de.schildbach.pte.NetworkProvider.Optimize
import de.schildbach.pte.NetworkProvider.WalkSpeed
import de.schildbach.pte.dto.Product
import java.util.*
import javax.inject.Inject

Expand Down Expand Up @@ -135,6 +136,30 @@ class SettingsManager @Inject constructor(private val context: Context) {
return settings.getBoolean(SHOW_WHEN_LOCKED, true)
}

fun setPreferredProducts(selected: Set<Product>) {
val editor = settings.edit()
Product.ALL.toSet().forEach { product ->
editor.putBoolean(LAST_PRODUCT_PREFIX + product.name, product in selected)
}
editor.apply()
}

fun getPreferredProducts(): Set<Product> {
val firstTime = Product.ALL.none { settings.contains(LAST_PRODUCT_PREFIX + it.name) }
if (firstTime) {
setPreferredProducts(Product.ALL)
return Product.ALL
}

val products = mutableSetOf<Product>()
Product.ALL.toSet().forEach { product ->
if (settings.getBoolean(LAST_PRODUCT_PREFIX + product.name, false)) {
products.add(product)
}
}
return products
}

companion object {
private const val NETWORK_ID_1 = "NetworkId"
private const val NETWORK_ID_2 = "NetworkId2"
Expand All @@ -147,6 +172,7 @@ class SettingsManager @Inject constructor(private val context: Context) {
private const val OPTIMIZE = "pref_key_optimize"
private const val LOCATION_ONBOARDING = "locationOnboarding"
private const val TRIP_DETAIL_ONBOARDING = "tripDetailOnboarding"
private const val LAST_PRODUCT_PREFIX = "pref_key_last_product_prefix_"
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ import java.util.*
import javax.inject.Inject

class DirectionsViewModel @Inject internal constructor(
application: TransportrApplication, transportNetworkManager: TransportNetworkManager, settingsManager: SettingsManager,
application: TransportrApplication, transportNetworkManager: TransportNetworkManager, private val settingsManager: SettingsManager,
locationRepository: LocationRepository, searchesRepository: SearchesRepository
) : SavedSearchesViewModel(application, transportNetworkManager, locationRepository, searchesRepository), TimeDateListener, LocationViewListener {

Expand All @@ -60,7 +60,7 @@ class DirectionsViewModel @Inject internal constructor(
val timeUpdate = LiveTrigger()
private val _now = MutableLiveData(true)
private val _calendar = MutableLiveData(Calendar.getInstance())
private val _products = MutableLiveData<EnumSet<Product>>(EnumSet.allOf(Product::class.java))
private val _products = MutableLiveData<EnumSet<Product>>(EnumSet.copyOf(settingsManager.getPreferredProducts()))
private val _isDeparture = MutableLiveData(true)
private val _isExpanded = MutableLiveData(false)
val showTrips = SingleLiveEvent<Void>()
Expand Down Expand Up @@ -121,6 +121,7 @@ class DirectionsViewModel @Inject internal constructor(
fun setProducts(newProducts: EnumSet<Product>) {
_products.value = newProducts
search()
settingsManager.setPreferredProducts(newProducts)
}

val isDeparture: LiveData<Boolean> = _isDeparture
Expand Down Expand Up @@ -211,4 +212,4 @@ class DirectionsViewModel @Inject internal constructor(
)
viaSupported = MutableLiveData(network.networkProvider.hasCapabilities(NetworkProvider.Capability.TRIPS_VIA))
}
}
}

0 comments on commit c789182

Please sign in to comment.