Bimba.git

ref: 3dc642a878cddf6ffa50a59e992a3f0945447d84

app/src/main/java/xyz/apiote/bimba/czwek/dashboard/DashboardViewModel.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
// SPDX-FileCopyrightText: Adam Evyčędo
//
// SPDX-License-Identifier: GPL-3.0-or-later

package xyz.apiote.bimba.czwek.dashboard

import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.google.android.material.chip.Chip
import com.google.android.material.chip.ChipGroup
import com.google.android.material.textfield.TextInputEditText
import xyz.apiote.bimba.czwek.repo.Place
import xyz.apiote.bimba.czwek.repo.TimeReference
import xyz.apiote.bimba.czwek.search.Query
import java.time.LocalDate
import java.time.LocalTime

class DashboardViewModel : ViewModel() {
	companion object {
		const val ORIGIN_KEY = "ORIGIN"
		const val DEST_KEY = "DESTINATION"

		val keys = arrayOf(ORIGIN_KEY, DEST_KEY)
		val indices = mapOf(ORIGIN_KEY to 0, DEST_KEY to 1)

		fun otherSource(source: String): String = keys[(indices[source]!! + 1) % 2]
	}

	val mutableData = mapOf(
		ORIGIN_KEY to MutableLiveData<Place>(),
		DEST_KEY to MutableLiveData<Place>()
	)

	val data = mapOf<String, LiveData<Place>>(
		ORIGIN_KEY to mutableData[ORIGIN_KEY]!!,
		DEST_KEY to mutableData[DEST_KEY]!!
	)

	fun set(source: String, place: Place) {
		mutableData[source]!!.value = place
	}

	fun unset(source: String) {
		mutableData[source]!!.value = null
	}

	val spans = mutableMapOf(
		ORIGIN_KEY to "",
		DEST_KEY to ""
	)

	val positionQueries = mutableMapOf<String, Query?>(
		ORIGIN_KEY to null,
		DEST_KEY to null
	)

	val suggestions = mutableMapOf<String, ChipGroup>(
	)

	val textInputs = mutableMapOf<String, TextInputEditText>()

	var timeReference: TimeReference = TimeReference.DEPART_AFTER
	var date: Long? = null
	var time: LocalTime? = null
	var wheelchairAccessible: Boolean = false
	var bicycle: Boolean = false

}