Add some comments.
This commit is contained in:
		
							parent
							
								
									9a75af4045
								
							
						
					
					
						commit
						33af724fbf
					
				| @ -7,6 +7,17 @@ import com.google.gson.Gson | ||||
| import com.google.gson.JsonObject | ||||
| import org.json.JSONObject | ||||
| 
 | ||||
| /** | ||||
|  * General POST request aimed at a protected endpoint of the API. The token can be retrieved | ||||
|  * via a [LoginRequest], or, if you've made it past the login screen, via Shared Preferences. | ||||
|  * | ||||
|  * @param value the value to send as JSON to the API. | ||||
|  * @param baseUrl the base URL of the API. | ||||
|  * @param apiEndpoint the API endpoint to send the request to. | ||||
|  * @param token the token to use to authenticate with the API. | ||||
|  * @param listener the listener to be called when a response is received. | ||||
|  * @param error the error handler to be called if a request fails. | ||||
|  */ | ||||
| open class AuthenticatedPostRequest<T>( | ||||
|     private val value: T, | ||||
|     baseUrl: String, | ||||
|  | ||||
| @ -3,6 +3,18 @@ package com.danilafe.fencelessgrazing.requests.authenticated | ||||
| import com.android.volley.Response | ||||
| import com.danilafe.fencelessgrazing.model.CollarPos | ||||
| 
 | ||||
| /** | ||||
|  * Request to the API's `/collar/<id>/boundary/set` endpoint, used to update a collar's | ||||
|  * valid grazing area. Note that although this request takes an arbitrary number of points, | ||||
|  * the collar itself only supports at most 10 vertices. | ||||
|  * | ||||
|  * @param baseUrl the base URl of the API. | ||||
|  * @param token the API token used for authentication. | ||||
|  * @param identifier the collar whose boundary is being set. | ||||
|  * @param coordinates the list of coordinates representing, in order, the new grazing boundary's vertices. | ||||
|  * @param listener the listener to be called when an OK response is received. | ||||
|  * @param error the error listener. | ||||
|  */ | ||||
| class SetBoundaryRequest( | ||||
|     baseUrl: String, | ||||
|     token: String, | ||||
|  | ||||
| @ -18,15 +18,42 @@ import org.osmdroid.views.MapView | ||||
| import org.osmdroid.views.overlay.Marker | ||||
| import org.osmdroid.views.overlay.Polygon | ||||
| 
 | ||||
| /** | ||||
|  * Activity used to update a grazing boundary for a particular collar. | ||||
|  */ | ||||
| class BoundaryEditorActivity : AppCompatActivity(), | ||||
|     Marker.OnMarkerDragListener, | ||||
|     Marker.OnMarkerClickListener { | ||||
| 
 | ||||
|     /** | ||||
|      * The map displaying the boundary vertices and polygon. | ||||
|      */ | ||||
|     private lateinit var map: MapView | ||||
| 
 | ||||
|     /** | ||||
|      * The list of markers representing the new grazing boundary's edges. | ||||
|      */ | ||||
|     private val markers: MutableList<Marker> = mutableListOf() | ||||
| 
 | ||||
|     /** | ||||
|      * The polygon used to display the grazing area on the [map]. | ||||
|      */ | ||||
|     private lateinit var polygon: GrazingPolygon | ||||
| 
 | ||||
|     /** | ||||
|      * The center around which the [map] was originally centered, | ||||
|      * used also for creating new vertices. | ||||
|      */ | ||||
|     private lateinit var center: GeoPoint | ||||
| 
 | ||||
|     /** | ||||
|      * The identifier of the collar whose boundary is being changed. | ||||
|      */ | ||||
|     private var identifier: Int = -1 | ||||
| 
 | ||||
|     /** | ||||
|      * The Volley queue used for sending API requests. | ||||
|      */ | ||||
|     private lateinit var queue: RequestQueue | ||||
| 
 | ||||
|     override fun onCreate(savedInstanceState: Bundle?) { | ||||
| @ -45,6 +72,9 @@ class BoundaryEditorActivity : AppCompatActivity(), | ||||
|         map.controller.setCenter(center) | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Removes a marker from the [map]. | ||||
|      */ | ||||
|     private fun removeMarker(m: Marker) { | ||||
|         markers.remove(m) | ||||
|         map.overlays.remove(m) | ||||
| @ -52,6 +82,10 @@ class BoundaryEditorActivity : AppCompatActivity(), | ||||
|         map.invalidate() | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Sends the current list of points to the API endpoint, closing | ||||
|      * the activity if successful. | ||||
|      */ | ||||
|     fun sendBoundary(v: View) { | ||||
|         val request = SetBoundaryRequest( | ||||
|             getString(R.string.apiUrl), | ||||
| @ -72,6 +106,10 @@ class BoundaryEditorActivity : AppCompatActivity(), | ||||
|         queue.add(request) | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Adds a new marker to the [map], starting it at the previously-configured | ||||
|      * [center]. | ||||
|      */ | ||||
|     fun addMarker(v : View) { | ||||
|         if(markers.size >= 10) { | ||||
|             Toast.makeText( | ||||
| @ -92,6 +130,11 @@ class BoundaryEditorActivity : AppCompatActivity(), | ||||
|         map.invalidate() | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Ensures that the polygon's vertices are synchronized | ||||
|      * with the user-placed markers, making it so that the | ||||
|      * grazing area is visible to the user. | ||||
|      */ | ||||
|     private fun updatePolygon() { | ||||
|         polygon.points.clear() | ||||
|         if(markers.isEmpty()) return | ||||
|  | ||||
| @ -202,6 +202,9 @@ class CollarDetailActivity : AppCompatActivity() { | ||||
|         queue.add(detailRequest) | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Open the [BoundaryEditorActivity] to edit the current collar's grazing boundary. | ||||
|      */ | ||||
|     fun changeGrazingBoundary(v : View) { | ||||
|         startActivity(Intent(this, BoundaryEditorActivity::class.java).apply { | ||||
|             val center = dataPoints.lastOrNull()?.let { | ||||
|  | ||||
| @ -4,6 +4,9 @@ import android.graphics.Color | ||||
| import org.osmdroid.views.MapView | ||||
| import org.osmdroid.views.overlay.Polygon | ||||
| 
 | ||||
| /** | ||||
|  * OpenStreetMaps polygon with some default visual settings for the Fenceless Grazing System. | ||||
|  */ | ||||
| class GrazingPolygon(map: MapView) : Polygon(map) { | ||||
|     init { | ||||
|         fillPaint.color = Color.parseColor("#32a852") | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user