-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMainViewModel.kt
87 lines (67 loc) · 2.27 KB
/
MainViewModel.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package de.morhenn.ar_navigation
import androidx.lifecycle.ViewModel
import androidx.lifecycle.asLiveData
import com.google.android.gms.maps.model.LatLng
import com.google.android.gms.maps.model.Marker
import de.morhenn.ar_navigation.persistance.AppDatabase
import de.morhenn.ar_navigation.persistance.NewPlace
import de.morhenn.ar_navigation.persistance.Place
import de.morhenn.ar_navigation.persistance.PlaceRepository
class MainViewModel : ViewModel() {
enum class NavState {
NONE,
CREATE_TO_AR_TO_TRY,
MAPS_TO_AR_NEW,
MAPS_TO_AR_NAV,
MAPS_TO_AR_SEARCH,
MAPS_TO_EDIT,
}
var navState = NavState.NONE
private val db: AppDatabase = AppDatabase.getInstance()
private val placeRepository = PlaceRepository.getInstance()
var currentPlace: Place? = null
var arDataString: String = ""
private var lastLatLng: LatLng? = null
var geoLat = 0.0
var geoLng = 0.0
var geoAlt = 0.0
var geoHdg = 0.0
val places = placeRepository.getPlaces().asLiveData()
val placesMap = HashMap<Marker, Place>()
var placesInRadius = placeRepository.getPlacesAroundLocation(0.0, 0.0, 1.0).asLiveData()
fun uploadPlace(place: NewPlace) {
placeRepository.newPlace(place)
}
fun updatePlace(place: Place) {
placeRepository.updatePlace(place)
}
fun deletePlace(place: Place) {
placeRepository.deletePlace(place)
}
fun updateCurrentPlace(marker: Marker) {
currentPlace = placesMap[marker]
arDataString = currentPlace?.ardata ?: ""
}
fun clearCurrentPlace() {
currentPlace = null
arDataString = ""
}
fun fetchPlaces() {
placeRepository.getPlaces()
}
fun clearGeo() {
geoHdg = 0.0
geoAlt = 0.0
geoLat = 0.0
geoLng = 0.0
}
fun fetchPlacesAroundLocation(latLng: LatLng, searchRadius: Double) {
lastLatLng = latLng
placesInRadius = placeRepository.getPlacesAroundLocation(latLng.latitude, latLng.longitude, searchRadius).asLiveData()
}
fun fetchPlacesAroundLastLocation(searchRadius: Double) {
lastLatLng?.let {
placesInRadius = placeRepository.getPlacesAroundLocation(it.latitude, it.longitude, searchRadius).asLiveData()
}
}
}