checkpoint
This commit is contained in:
parent
bbd23d8fb1
commit
4a47d267a5
4 changed files with 17 additions and 10 deletions
|
@ -41,7 +41,7 @@ data class Track (
|
||||||
{
|
{
|
||||||
fun delete()
|
fun delete()
|
||||||
{
|
{
|
||||||
Log.i("VOUSSOIR", "Track.delete.")
|
Log.i("VOUSSOIR", "Track.delete ${device_id} ${start_time} -- ${end_time}.")
|
||||||
}
|
}
|
||||||
|
|
||||||
fun export_gpx(context: Context, fileuri: Uri): Uri?
|
fun export_gpx(context: Context, fileuri: Uri): Uri?
|
||||||
|
@ -120,6 +120,7 @@ data class Track (
|
||||||
|
|
||||||
fun statistics(): TrackStatistics
|
fun statistics(): TrackStatistics
|
||||||
{
|
{
|
||||||
|
Log.i("VOUSSOIR", "Track.statistics")
|
||||||
var first: Trkpt? = null
|
var first: Trkpt? = null
|
||||||
var last: Trkpt? = null
|
var last: Trkpt? = null
|
||||||
var previous: Trkpt? = null
|
var previous: Trkpt? = null
|
||||||
|
@ -170,7 +171,7 @@ data class Track (
|
||||||
"SELECT lat, lon, time, ele, accuracy, sat FROM trkpt WHERE device_id = ? AND time > ? AND time < ? ORDER BY time ASC",
|
"SELECT lat, lon, time, ele, accuracy, sat FROM trkpt WHERE device_id = ? AND time > ? AND time < ? ORDER BY time ASC",
|
||||||
arrayOf(device_id, start_time.time.toString(), end_time.time.toString())
|
arrayOf(device_id, start_time.time.toString(), end_time.time.toString())
|
||||||
)
|
)
|
||||||
Log.i("VOUSSOIR", "Querying points between ${start_time} -- ${end_time}")
|
Log.i("VOUSSOIR", "Track.trkpt_generator: Querying points between ${start_time} -- ${end_time}")
|
||||||
val COLUMN_LAT = cursor.getColumnIndex("lat")
|
val COLUMN_LAT = cursor.getColumnIndex("lat")
|
||||||
val COLUMN_LON = cursor.getColumnIndex("lon")
|
val COLUMN_LON = cursor.getColumnIndex("lon")
|
||||||
val COLUMN_ELE = cursor.getColumnIndex("ele")
|
val COLUMN_ELE = cursor.getColumnIndex("ele")
|
||||||
|
|
|
@ -98,8 +98,8 @@ class TrackFragment : Fragment(), MapListener, YesNoDialog.YesNoDialogListener
|
||||||
val RERENDER_DELAY: Long = 1000
|
val RERENDER_DELAY: Long = 1000
|
||||||
|
|
||||||
/* Overrides onCreateView from Fragment */
|
/* Overrides onCreateView from Fragment */
|
||||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View
|
||||||
// initialize layout
|
{
|
||||||
val database: Database = (requireActivity().applicationContext as Trackbook).database
|
val database: Database = (requireActivity().applicationContext as Trackbook).database
|
||||||
track = Track(
|
track = Track(
|
||||||
database=database,
|
database=database,
|
||||||
|
@ -108,6 +108,7 @@ class TrackFragment : Fragment(), MapListener, YesNoDialog.YesNoDialogListener
|
||||||
start_time= iso8601_format.parse(this.requireArguments().getString(Keys.ARG_TRACK_START_TIME)!!),
|
start_time= iso8601_format.parse(this.requireArguments().getString(Keys.ARG_TRACK_START_TIME)!!),
|
||||||
end_time=iso8601_format.parse(this.requireArguments().getString(Keys.ARG_TRACK_STOP_TIME)!!),
|
end_time=iso8601_format.parse(this.requireArguments().getString(Keys.ARG_TRACK_STOP_TIME)!!),
|
||||||
)
|
)
|
||||||
|
track.load_trkpts()
|
||||||
rootView = inflater.inflate(R.layout.fragment_track, container, false)
|
rootView = inflater.inflate(R.layout.fragment_track, container, false)
|
||||||
mapView = rootView.findViewById(R.id.map)
|
mapView = rootView.findViewById(R.id.map)
|
||||||
save_track_button = rootView.findViewById(R.id.save_button)
|
save_track_button = rootView.findViewById(R.id.save_button)
|
||||||
|
@ -147,7 +148,6 @@ class TrackFragment : Fragment(), MapListener, YesNoDialog.YesNoDialogListener
|
||||||
mapView.overlayManager.tilesOverlay.setColorFilter(TilesOverlay.INVERT_COLORS)
|
mapView.overlayManager.tilesOverlay.setColorFilter(TilesOverlay.INVERT_COLORS)
|
||||||
}
|
}
|
||||||
|
|
||||||
track.load_trkpts()
|
|
||||||
val actual_start_time: Date = if (track.trkpts.isEmpty()) track.start_time else Date(track.trkpts.first().time)
|
val actual_start_time: Date = if (track.trkpts.isEmpty()) track.start_time else Date(track.trkpts.first().time)
|
||||||
val actual_end_time: Date = if (track.trkpts.isEmpty()) track.end_time else Date(track.trkpts.last().time)
|
val actual_end_time: Date = if (track.trkpts.isEmpty()) track.end_time else Date(track.trkpts.last().time)
|
||||||
|
|
||||||
|
@ -226,7 +226,7 @@ class TrackFragment : Fragment(), MapListener, YesNoDialog.YesNoDialogListener
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteButton.setOnClickListener {
|
deleteButton.setOnClickListener {
|
||||||
val dialogMessage = "${getString(R.string.dialog_yes_no_message_delete_recording)}\n\n${trackNameView.text}"
|
val dialogMessage = "${getString(R.string.dialog_yes_no_message_delete_recording)}\n\n${track.trkpts.size} trackpoints"
|
||||||
YesNoDialog(this@TrackFragment as YesNoDialog.YesNoDialogListener).show(
|
YesNoDialog(this@TrackFragment as YesNoDialog.YesNoDialogListener).show(
|
||||||
context = activity as Context,
|
context = activity as Context,
|
||||||
type = Keys.DIALOG_DELETE_TRACK,
|
type = Keys.DIALOG_DELETE_TRACK,
|
||||||
|
@ -251,6 +251,7 @@ class TrackFragment : Fragment(), MapListener, YesNoDialog.YesNoDialogListener
|
||||||
|
|
||||||
fun render_track()
|
fun render_track()
|
||||||
{
|
{
|
||||||
|
Log.i("VOUSSOIR", "TrackFragment.render_track")
|
||||||
if (special_points_overlay != null)
|
if (special_points_overlay != null)
|
||||||
{
|
{
|
||||||
mapView.overlays.remove(special_points_overlay)
|
mapView.overlays.remove(special_points_overlay)
|
||||||
|
@ -312,7 +313,7 @@ class TrackFragment : Fragment(), MapListener, YesNoDialog.YesNoDialogListener
|
||||||
Toast.makeText(context, R.string.toast_message_elevation_info, Toast.LENGTH_LONG).show()
|
Toast.makeText(context, R.string.toast_message_elevation_info, Toast.LENGTH_LONG).show()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// make track name on statistics sheet clickable
|
|
||||||
trackNameView.setOnClickListener {
|
trackNameView.setOnClickListener {
|
||||||
toggleStatisticsSheetVisibility()
|
toggleStatisticsSheetVisibility()
|
||||||
}
|
}
|
||||||
|
@ -341,11 +342,11 @@ class TrackFragment : Fragment(), MapListener, YesNoDialog.YesNoDialogListener
|
||||||
private val requery_and_render: Runnable = object : Runnable {
|
private val requery_and_render: Runnable = object : Runnable {
|
||||||
override fun run()
|
override fun run()
|
||||||
{
|
{
|
||||||
Log.i("VOUSSOIR", "requery_and_render")
|
Log.i("VOUSSOIR", "TrackFragment.requery_and_render")
|
||||||
track.start_time = get_datetime(track_query_start_date, track_query_start_time, seconds=0)
|
track.start_time = get_datetime(track_query_start_date, track_query_start_time, seconds=0)
|
||||||
track.end_time = get_datetime(track_query_end_date, track_query_end_time, seconds=59)
|
track.end_time = get_datetime(track_query_end_date, track_query_end_time, seconds=59)
|
||||||
track.load_trkpts()
|
track.load_trkpts()
|
||||||
Log.i("VOUSSOIR", "Reloaded ${track.trkpts.size} trkpts.")
|
Log.i("VOUSSOIR", "TrackFragment.requery_and_render: Reloaded ${track.trkpts.size} trkpts.")
|
||||||
render_track()
|
render_track()
|
||||||
mapView.invalidate()
|
mapView.invalidate()
|
||||||
}
|
}
|
||||||
|
@ -384,6 +385,9 @@ class TrackFragment : Fragment(), MapListener, YesNoDialog.YesNoDialogListener
|
||||||
{
|
{
|
||||||
// user tapped remove track
|
// user tapped remove track
|
||||||
true -> {
|
true -> {
|
||||||
|
track.delete()
|
||||||
|
handler.removeCallbacks(requery_and_render)
|
||||||
|
handler.postDelayed(requery_and_render, RERENDER_DELAY)
|
||||||
// switch to TracklistFragment and remove track there
|
// switch to TracklistFragment and remove track there
|
||||||
// val bundle: Bundle = bundleOf(Keys.ARG_TRACK_ID to layout.track.id)
|
// val bundle: Bundle = bundleOf(Keys.ARG_TRACK_ID to layout.track.id)
|
||||||
// findNavController().navigate(R.id.tracklist_fragment, bundle)
|
// findNavController().navigate(R.id.tracklist_fragment, bundle)
|
||||||
|
|
|
@ -39,6 +39,7 @@ import java.util.*
|
||||||
|
|
||||||
fun createTrackOverlay(context: Context, map_view: MapView, trkpts: Collection<Trkpt>, trackingState: Int): SimpleFastPointOverlay
|
fun createTrackOverlay(context: Context, map_view: MapView, trkpts: Collection<Trkpt>, trackingState: Int): SimpleFastPointOverlay
|
||||||
{
|
{
|
||||||
|
Log.i("VOUSSOIR", "MapOverlayHelper.createTrackOverlay")
|
||||||
val trackpoints: MutableList<IGeoPoint> = mutableListOf()
|
val trackpoints: MutableList<IGeoPoint> = mutableListOf()
|
||||||
for (trkpt in trkpts)
|
for (trkpt in trkpts)
|
||||||
{
|
{
|
||||||
|
@ -83,6 +84,7 @@ fun createTrackOverlay(context: Context, map_view: MapView, trkpts: Collection<T
|
||||||
|
|
||||||
fun create_start_end_markers(context: Context, map_view: MapView, trkpts: Collection<Trkpt>): ItemizedIconOverlay<OverlayItem>?
|
fun create_start_end_markers(context: Context, map_view: MapView, trkpts: Collection<Trkpt>): ItemizedIconOverlay<OverlayItem>?
|
||||||
{
|
{
|
||||||
|
Log.i("VOUSSOIR", "MapOverlayHelper.create_start_end_markers")
|
||||||
if (trkpts.size == 0)
|
if (trkpts.size == 0)
|
||||||
{
|
{
|
||||||
return null
|
return null
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
<string name="dialog_yes_no_positive_button_delete_recording">Delete</string>
|
<string name="dialog_yes_no_positive_button_delete_recording">Delete</string>
|
||||||
<string name="dialog_yes_no_positive_button_delete_non_starred">Delete</string>
|
<string name="dialog_yes_no_positive_button_delete_non_starred">Delete</string>
|
||||||
<string name="dialog_yes_no_message_delete_non_starred">Delete all non-starred recordings? This action cannot be undone.</string>
|
<string name="dialog_yes_no_message_delete_non_starred">Delete all non-starred recordings? This action cannot be undone.</string>
|
||||||
<string name="dialog_yes_no_message_delete_recording">Delete this recording?</string>
|
<string name="dialog_yes_no_message_delete_recording">Delete these trackpoints?</string>
|
||||||
<!-- Toast Messages -->
|
<!-- Toast Messages -->
|
||||||
<string name="toast_message_copied_to_clipboard">Copied to clipboard.</string>
|
<string name="toast_message_copied_to_clipboard">Copied to clipboard.</string>
|
||||||
<string name="toast_message_elevation_info">Hint: The accuracy of elevation data depends on your device. The uphill and downhill elevation of the whole route is measured.</string>
|
<string name="toast_message_elevation_info">Hint: The accuracy of elevation data depends on your device. The uphill and downhill elevation of the whole route is measured.</string>
|
||||||
|
|
Loading…
Reference in a new issue