diff --git a/app/src/main/java/com/danilafe/fencelessgrazing/CollarListActivity.kt b/app/src/main/java/com/danilafe/fencelessgrazing/CollarListActivity.kt index ee217b4..d56e770 100644 --- a/app/src/main/java/com/danilafe/fencelessgrazing/CollarListActivity.kt +++ b/app/src/main/java/com/danilafe/fencelessgrazing/CollarListActivity.kt @@ -17,12 +17,15 @@ import org.osmdroid.tileprovider.tilesource.TileSourceFactory import org.osmdroid.util.GeoPoint import org.osmdroid.views.MapView import org.osmdroid.views.overlay.Marker +import java.util.* +import kotlin.concurrent.timerTask class CollarListActivity : AppCompatActivity() { // The list of collar summaries and its list adapter. private val summaries : MutableList = mutableListOf() private lateinit var summaryAdapter: CollarSummaryAdapter + private lateinit var collarList: RecyclerView // The API token and request queue. private lateinit var token: String @@ -32,6 +35,9 @@ class CollarListActivity : AppCompatActivity() { private lateinit var map: MapView private val collarOverlays: MutableMap = mutableMapOf() + // Timer used to schedule refresh + private val refreshTimer = Timer() + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -39,29 +45,25 @@ class CollarListActivity : AppCompatActivity() { PreferenceManager.getDefaultSharedPreferences(applicationContext)) setContentView(R.layout.activity_collar_list) + findViews() - val collarList: RecyclerView = findViewById(R.id.collarSummaryList) - val layoutManager = LinearLayoutManager(collarList.context) token = intent.getStringExtra("token")!! - summaryAdapter = CollarSummaryAdapter(summaries) - map = findViewById(R.id.map) map.setTileSource(TileSourceFactory.MAPNIK) queue = Volley.newRequestQueue(this) - collarList.adapter = summaryAdapter - collarList.layoutManager = layoutManager - collarList.addItemDecoration(DividerItemDecoration(collarList.context, layoutManager.orientation)) - triggerRefresh() + setupCollarList() } override fun onResume() { super.onResume() map.onResume() + refreshTimer.schedule(timerTask { triggerRefresh() }, 0L, 5000L) } override fun onPause() { super.onPause() map.onPause() + refreshTimer.cancel() } private fun triggerRefresh() { @@ -79,6 +81,20 @@ class CollarListActivity : AppCompatActivity() { queue.add(request) } + private fun findViews() { + collarList = findViewById(R.id.collarSummaryList) + map = findViewById(R.id.map) + } + + private fun setupCollarList() { + val layoutManager = LinearLayoutManager(collarList.context) + summaryAdapter = CollarSummaryAdapter(summaries) + collarList.adapter = summaryAdapter + collarList.layoutManager = layoutManager + collarList.addItemDecoration(DividerItemDecoration(collarList.context, layoutManager.orientation)) + refreshTimer.schedule(timerTask { triggerRefresh() }, 0L, 5000L) + } + private fun updateMapOverlay() { val currentSet = mutableSetOf() summaries.forEach { @@ -100,5 +116,6 @@ class CollarListActivity : AppCompatActivity() { collarOverlays.remove(it) } } + map.invalidate() } } diff --git a/app/src/main/java/com/danilafe/fencelessgrazing/model/Polygon.kt b/app/src/main/java/com/danilafe/fencelessgrazing/model/Polygon.kt new file mode 100644 index 0000000..51d4e3e --- /dev/null +++ b/app/src/main/java/com/danilafe/fencelessgrazing/model/Polygon.kt @@ -0,0 +1,2 @@ +package com.danilafe.fencelessgrazing.model + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 54ad521..1e5fbf4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -3,6 +3,6 @@ Username Password Log In - http://danilafe.com:8090 + http://dev.danilafe.com:8090 Currently at %1f, %2f