mirror of
https://github.com/atsunatsu/Look4Sat.git
synced 2026-10-02 03:15:37 +00:00
Changes to location and settings handlers
This commit is contained in:
1 parent
ffd1fc1551
commit
72f78e5c6b
7 files changed
+64
-36
No files matched your search
@@ -29,9 +29,9 @@ import com.rtbishop.look4sat.R
|
||||
import com.rtbishop.look4sat.data.ISettingsHandler
|
||||
import com.rtbishop.look4sat.domain.ILocationHandler
|
||||
import com.rtbishop.look4sat.domain.QthConverter
|
||||
import com.rtbishop.look4sat.domain.QthConverter.round
|
||||
import com.rtbishop.look4sat.domain.model.DataState
|
||||
import com.rtbishop.look4sat.domain.predict.GeoPos
|
||||
import com.rtbishop.look4sat.presentation.round
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
@@ -51,10 +51,13 @@ class LocationHandler @Inject constructor(
|
||||
private val locationCoarse = Manifest.permission.ACCESS_COARSE_LOCATION
|
||||
private val locationFine = Manifest.permission.ACCESS_FINE_LOCATION
|
||||
private val _stationPosition = MutableStateFlow<DataState<GeoPos>>(DataState.Handled)
|
||||
private var currentLocator = settingsHandler.loadStationLocator()
|
||||
private var currentPosition = settingsHandler.loadStationPosition()
|
||||
|
||||
override val stationPosition: StateFlow<DataState<GeoPos>> = _stationPosition
|
||||
|
||||
override fun getStationLocator(): String = currentLocator
|
||||
|
||||
override fun getStationPosition(): GeoPos = currentPosition
|
||||
|
||||
override fun setStationPosition(latitude: Double, longitude: Double) {
|
||||
@@ -62,11 +65,17 @@ class LocationHandler @Inject constructor(
|
||||
val tempLon = if (longitude > 180.0) longitude - 180 else longitude
|
||||
val newLat = latitude.round(4)
|
||||
val newLon = tempLon.round(4)
|
||||
currentPosition = GeoPos(newLat, newLon)
|
||||
settingsHandler.saveStationPosition(newLat, newLon)
|
||||
_stationPosition.value = DataState.Success(currentPosition)
|
||||
} else _stationPosition.value =
|
||||
DataState.Error(context.getString(R.string.pref_pos_manual_error))
|
||||
QthConverter.positionToQth(newLat, newLon)?.let { locator ->
|
||||
currentLocator = locator
|
||||
currentPosition = GeoPos(newLat, newLon)
|
||||
settingsHandler.saveStationLocator(locator)
|
||||
settingsHandler.saveStationPosition(currentPosition)
|
||||
_stationPosition.value = DataState.Success(currentPosition)
|
||||
}
|
||||
} else {
|
||||
_stationPosition.value =
|
||||
DataState.Error(context.getString(R.string.pref_pos_manual_error))
|
||||
}
|
||||
}
|
||||
|
||||
override fun setPositionFromGps() {
|
||||
@@ -79,8 +88,9 @@ class LocationHandler @Inject constructor(
|
||||
_stationPosition.value = DataState.Loading
|
||||
manager.requestLocationUpdates(providerGps, 0L, 0f, this)
|
||||
}
|
||||
} else _stationPosition.value =
|
||||
DataState.Error(context.getString(R.string.pref_pos_gps_null))
|
||||
} else {
|
||||
_stationPosition.value = DataState.Error(context.getString(R.string.pref_pos_gps_null))
|
||||
}
|
||||
}
|
||||
|
||||
override fun setPositionFromNet() {
|
||||
@@ -93,16 +103,22 @@ class LocationHandler @Inject constructor(
|
||||
_stationPosition.value = DataState.Loading
|
||||
manager.requestLocationUpdates(providerNet, 0L, 0f, this)
|
||||
}
|
||||
} else _stationPosition.value =
|
||||
DataState.Error(context.getString(R.string.pref_pos_gps_null))
|
||||
} else {
|
||||
_stationPosition.value = DataState.Error(context.getString(R.string.pref_pos_gps_null))
|
||||
}
|
||||
}
|
||||
|
||||
override fun setPositionFromQth(qthString: String) {
|
||||
val position = QthConverter.qthToPosition(qthString)
|
||||
override fun setPositionFromQth(locator: String) {
|
||||
val position = QthConverter.qthToPosition(locator)
|
||||
if (position != null) {
|
||||
setStationPosition(position.latitude, position.longitude)
|
||||
} else _stationPosition.value =
|
||||
DataState.Error(context.getString(R.string.pref_pos_qth_error))
|
||||
currentLocator = locator
|
||||
currentPosition = position
|
||||
settingsHandler.saveStationLocator(locator)
|
||||
settingsHandler.saveStationPosition(currentPosition)
|
||||
_stationPosition.value = DataState.Success(currentPosition)
|
||||
} else {
|
||||
_stationPosition.value = DataState.Error(context.getString(R.string.pref_pos_qth_error))
|
||||
}
|
||||
}
|
||||
|
||||
override fun setPositionHandled() {
|
||||
|
||||
@@ -42,11 +42,18 @@ class SettingsHandler @Inject constructor(private val prefs: SharedPreferences)
|
||||
const val keyRotatorPort = "rotatorPort"
|
||||
const val keyLatitude = "stationLat"
|
||||
const val keyLongitude = "stationLon"
|
||||
// const val keyPositionGPS = "setPositionGPS"
|
||||
// const val keyPositionQTH = "setPositionQTH"
|
||||
const val keyLocator = "stationQTH"
|
||||
const val keySelection = "selection"
|
||||
}
|
||||
|
||||
override fun loadStationLocator(): String {
|
||||
return prefs.getString(keyLocator, null) ?: "null"
|
||||
}
|
||||
|
||||
override fun saveStationLocator(locator: String) {
|
||||
prefs.edit { putString(keyLocator, locator) }
|
||||
}
|
||||
|
||||
override fun loadStationPosition(): GeoPos {
|
||||
val defaultSP = "0.0"
|
||||
val latitude = prefs.getString(keyLatitude, null) ?: defaultSP
|
||||
@@ -54,10 +61,10 @@ class SettingsHandler @Inject constructor(private val prefs: SharedPreferences)
|
||||
return GeoPos(latitude.toDouble(), longitude.toDouble())
|
||||
}
|
||||
|
||||
override fun saveStationPosition(latitude: Double, longitude: Double) {
|
||||
override fun saveStationPosition(position: GeoPos) {
|
||||
prefs.edit {
|
||||
putString(keyLatitude, latitude.toString())
|
||||
putString(keyLongitude, longitude.toString())
|
||||
putString(keyLatitude, position.latitude.toString())
|
||||
putString(keyLongitude, position.longitude.toString())
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -7,8 +7,8 @@ import android.view.ViewGroup
|
||||
import android.view.WindowManager
|
||||
import androidx.appcompat.app.AppCompatDialogFragment
|
||||
import com.rtbishop.look4sat.R
|
||||
import com.rtbishop.look4sat.data.ISettingsHandler
|
||||
import com.rtbishop.look4sat.databinding.DialogLocationBinding
|
||||
import com.rtbishop.look4sat.domain.ILocationHandler
|
||||
import com.rtbishop.look4sat.presentation.setNavResult
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import javax.inject.Inject
|
||||
@@ -17,7 +17,7 @@ import javax.inject.Inject
|
||||
class LocationDialog : AppCompatDialogFragment() {
|
||||
|
||||
@Inject
|
||||
lateinit var locationHandler: ILocationHandler
|
||||
lateinit var preferences: ISettingsHandler
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, group: ViewGroup?, state: Bundle?): View? {
|
||||
return inflater.inflate(R.layout.dialog_location, group, false)
|
||||
@@ -31,7 +31,7 @@ class LocationDialog : AppCompatDialogFragment() {
|
||||
(resources.displayMetrics.widthPixels * 0.94).toInt(),
|
||||
WindowManager.LayoutParams.WRAP_CONTENT
|
||||
)
|
||||
val location = locationHandler.getStationPosition()
|
||||
val location = preferences.loadStationPosition()
|
||||
locationLatEdit.setText(location.latitude.toString())
|
||||
locationLonEdit.setText(location.longitude.toString())
|
||||
locationPosBtn.setOnClickListener {
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@ class LocatorDialog : AppCompatDialogFragment() {
|
||||
(resources.displayMetrics.widthPixels * 0.94).toInt(),
|
||||
WindowManager.LayoutParams.WRAP_CONTENT
|
||||
)
|
||||
// locatorEdit.setText(preferences.getQthLocator())
|
||||
locatorEdit.setText(preferences.loadStationLocator())
|
||||
locatorPosBtn.setOnClickListener {
|
||||
setNavResult("locator", locatorEdit.text.toString())
|
||||
dismiss()
|
||||
|
||||
Reference in new issue
Block a user