diff --git a/app/src/main/java/net/voussoir/trkpt/TrackFragment.kt b/app/src/main/java/net/voussoir/trkpt/TrackFragment.kt index 321e9f7..10a272c 100644 --- a/app/src/main/java/net/voussoir/trkpt/TrackFragment.kt +++ b/app/src/main/java/net/voussoir/trkpt/TrackFragment.kt @@ -78,6 +78,8 @@ class TrackFragment : Fragment(), MapListener, YesNoDialog.YesNoDialogListener private lateinit var datepicker_changed_listener: DatePicker.OnDateChangedListener private var datetime_change_listener_enabled: Boolean = true lateinit var delete_selected_trkpt_button: ImageButton + lateinit var use_trkpt_as_start_button: ImageButton + lateinit var use_trkpt_as_end_button: ImageButton lateinit var isolate_trkseg_button: ImageButton lateinit var when_was_i_here_button: ImageButton var track_query_start_time_previous: Int = 0 @@ -262,6 +264,40 @@ class TrackFragment : Fragment(), MapListener, YesNoDialog.YesNoDialogListener } } + use_trkpt_as_start_button = rootView.findViewById(R.id.use_trkpt_as_start_button) + use_trkpt_as_start_button.setOnClickListener { + Log.i("VOUSSOIR", "use selected trkpt as start.") + if (track_points_overlay != null && track_points_overlay!!.selectedPoint != null) + { + val selected = (track_geopoints[track_points_overlay!!.selectedPoint] as Trkpt) + set_datetime(track_query_start_date, track_query_start_time, Date(selected.time), _ending=false) + track.load_trkpts(trackbook.database.select_trkpt_start_end( + track.device_id, + selected.time, + track.trkpts.last().time, + )) + deselect_trkpt() + render_track() + } + } + + use_trkpt_as_end_button = rootView.findViewById(R.id.use_trkpt_as_end_button) + use_trkpt_as_end_button.setOnClickListener { + Log.i("VOUSSOIR", "use selected trkpt as end.") + if (track_points_overlay != null && track_points_overlay!!.selectedPoint != null) + { + val selected = (track_geopoints[track_points_overlay!!.selectedPoint] as Trkpt) + set_datetime(track_query_end_date, track_query_end_time, Date(selected.time), _ending=true) + track.load_trkpts(trackbook.database.select_trkpt_start_end( + track.device_id, + track.trkpts.first().time, + selected.time, + )) + deselect_trkpt() + render_track() + } + } + isolate_trkseg_button = rootView.findViewById(R.id.isolate_trkseg_button) isolate_trkseg_button.setOnClickListener { Log.i("VOUSSOIR", "isolate selected trkseg button.") @@ -358,6 +394,8 @@ class TrackFragment : Fragment(), MapListener, YesNoDialog.YesNoDialogListener track_points_overlay!!.selectedPoint = null } delete_selected_trkpt_button.visibility = View.GONE + use_trkpt_as_start_button.visibility = View.GONE + use_trkpt_as_end_button.visibility = View.GONE isolate_trkseg_button.visibility = View.GONE selected_trkpt_info.text = "" } @@ -428,6 +466,8 @@ class TrackFragment : Fragment(), MapListener, YesNoDialog.YesNoDialogListener Log.i("VOUSSOIR", "Clicked ${trkpt.device_id} ${trkpt.time}") selected_trkpt_info.text = "${trkpt.time}\n${iso8601_local(trkpt.time)}\n${trkpt.latitude}\n${trkpt.longitude}" delete_selected_trkpt_button.visibility = View.VISIBLE + use_trkpt_as_start_button.visibility = View.VISIBLE + use_trkpt_as_end_button.visibility = View.VISIBLE if (track_segment_overlays.size > 1) { isolate_trkseg_button.visibility = View.VISIBLE @@ -455,6 +495,7 @@ class TrackFragment : Fragment(), MapListener, YesNoDialog.YesNoDialogListener fun set_datetime(datepicker: DatePicker, timepicker: TimePicker, setdate: Date, _ending: Boolean) { + datetime_change_listener_enabled = false val start_cal = GregorianCalendar() start_cal.time = setdate datepicker.init(start_cal.get(Calendar.YEAR), start_cal.get(Calendar.MONTH), start_cal.get(Calendar.DAY_OF_MONTH), datepicker_changed_listener) @@ -470,6 +511,7 @@ class TrackFragment : Fragment(), MapListener, YesNoDialog.YesNoDialogListener { track_query_start_time_previous = (setdate.hours * 60) + setdate.minutes } + datetime_change_listener_enabled = true } fun set_datetimes_from_track() @@ -478,10 +520,8 @@ class TrackFragment : Fragment(), MapListener, YesNoDialog.YesNoDialogListener { return } - datetime_change_listener_enabled = false set_datetime(track_query_start_date, track_query_start_time, Date(track.trkpts.first().time), _ending=false) set_datetime(track_query_end_date, track_query_end_time, Date(track.trkpts.last().time), _ending=true) - datetime_change_listener_enabled = true } fun get_datetime(datepicker: DatePicker, timepicker: TimePicker, seconds: Int): Date diff --git a/app/src/main/res/drawable/ic_end_here_24dp.xml b/app/src/main/res/drawable/ic_end_here_24dp.xml new file mode 100644 index 0000000..a35307b --- /dev/null +++ b/app/src/main/res/drawable/ic_end_here_24dp.xml @@ -0,0 +1,16 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_start_here_24dp.xml b/app/src/main/res/drawable/ic_start_here_24dp.xml new file mode 100644 index 0000000..8177d8b --- /dev/null +++ b/app/src/main/res/drawable/ic_start_here_24dp.xml @@ -0,0 +1,16 @@ + + + + + + diff --git a/app/src/main/res/layout/fragment_track.xml b/app/src/main/res/layout/fragment_track.xml index a51a0ea..b063e1c 100755 --- a/app/src/main/res/layout/fragment_track.xml +++ b/app/src/main/res/layout/fragment_track.xml @@ -83,6 +83,30 @@ app:layout_constraintEnd_toEndOf="parent" app:srcCompat="@drawable/ic_gps_24dp" /> + + + +