Add "use trkpt as start" and "use trkpt as end" buttons.
This commit is contained in:
parent
9209a30c14
commit
1ef59f49f5
4 changed files with 98 additions and 2 deletions
|
@ -78,6 +78,8 @@ class TrackFragment : Fragment(), MapListener, YesNoDialog.YesNoDialogListener
|
||||||
private lateinit var datepicker_changed_listener: DatePicker.OnDateChangedListener
|
private lateinit var datepicker_changed_listener: DatePicker.OnDateChangedListener
|
||||||
private var datetime_change_listener_enabled: Boolean = true
|
private var datetime_change_listener_enabled: Boolean = true
|
||||||
lateinit var delete_selected_trkpt_button: ImageButton
|
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 isolate_trkseg_button: ImageButton
|
||||||
lateinit var when_was_i_here_button: ImageButton
|
lateinit var when_was_i_here_button: ImageButton
|
||||||
var track_query_start_time_previous: Int = 0
|
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 = rootView.findViewById(R.id.isolate_trkseg_button)
|
||||||
isolate_trkseg_button.setOnClickListener {
|
isolate_trkseg_button.setOnClickListener {
|
||||||
Log.i("VOUSSOIR", "isolate selected trkseg button.")
|
Log.i("VOUSSOIR", "isolate selected trkseg button.")
|
||||||
|
@ -358,6 +394,8 @@ class TrackFragment : Fragment(), MapListener, YesNoDialog.YesNoDialogListener
|
||||||
track_points_overlay!!.selectedPoint = null
|
track_points_overlay!!.selectedPoint = null
|
||||||
}
|
}
|
||||||
delete_selected_trkpt_button.visibility = View.GONE
|
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
|
isolate_trkseg_button.visibility = View.GONE
|
||||||
selected_trkpt_info.text = ""
|
selected_trkpt_info.text = ""
|
||||||
}
|
}
|
||||||
|
@ -428,6 +466,8 @@ class TrackFragment : Fragment(), MapListener, YesNoDialog.YesNoDialogListener
|
||||||
Log.i("VOUSSOIR", "Clicked ${trkpt.device_id} ${trkpt.time}")
|
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}"
|
selected_trkpt_info.text = "${trkpt.time}\n${iso8601_local(trkpt.time)}\n${trkpt.latitude}\n${trkpt.longitude}"
|
||||||
delete_selected_trkpt_button.visibility = View.VISIBLE
|
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)
|
if (track_segment_overlays.size > 1)
|
||||||
{
|
{
|
||||||
isolate_trkseg_button.visibility = View.VISIBLE
|
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)
|
fun set_datetime(datepicker: DatePicker, timepicker: TimePicker, setdate: Date, _ending: Boolean)
|
||||||
{
|
{
|
||||||
|
datetime_change_listener_enabled = false
|
||||||
val start_cal = GregorianCalendar()
|
val start_cal = GregorianCalendar()
|
||||||
start_cal.time = setdate
|
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)
|
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
|
track_query_start_time_previous = (setdate.hours * 60) + setdate.minutes
|
||||||
}
|
}
|
||||||
|
datetime_change_listener_enabled = true
|
||||||
}
|
}
|
||||||
|
|
||||||
fun set_datetimes_from_track()
|
fun set_datetimes_from_track()
|
||||||
|
@ -478,10 +520,8 @@ class TrackFragment : Fragment(), MapListener, YesNoDialog.YesNoDialogListener
|
||||||
{
|
{
|
||||||
return
|
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_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)
|
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
|
fun get_datetime(datepicker: DatePicker, timepicker: TimePicker, seconds: Int): Date
|
||||||
|
|
16
app/src/main/res/drawable/ic_end_here_24dp.xml
Normal file
16
app/src/main/res/drawable/ic_end_here_24dp.xml
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
<vector
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:name="vector"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24">
|
||||||
|
<group android:name="group">
|
||||||
|
<path
|
||||||
|
android:pathData="M 12.033 5.563 L 10.619 6.978 L 14.639 11.001 L 1.715 11.001 L 1.715 13.001 L 14.643 13.001 L 10.619 17.022 L 12.033 18.437 L 17.055 13.415 L 18.469 12.003 L 17.055 10.587 Z"
|
||||||
|
android:fillColor="@color/icon_default"/>
|
||||||
|
<path
|
||||||
|
android:pathData="M 16.981 6.696 C 16.114 6.698 15.261 6.912 14.496 7.319 L 17.408 10.233 L 19.178 12.003 L 17.408 13.769 L 14.494 16.683 C 15.26 17.09 16.113 17.304 16.981 17.306 C 19.911 17.306 22.286 14.931 22.285 12.001 C 22.286 9.071 19.911 6.696 16.981 6.696 Z"
|
||||||
|
android:fillColor="@color/icon_default"/>
|
||||||
|
</group>
|
||||||
|
</vector>
|
16
app/src/main/res/drawable/ic_start_here_24dp.xml
Normal file
16
app/src/main/res/drawable/ic_start_here_24dp.xml
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
<vector
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:name="vector"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24">
|
||||||
|
<group android:name="group">
|
||||||
|
<path
|
||||||
|
android:pathData="M 15.563 5.563 L 14.148 6.978 L 18.168 11.001 L 5.244 11.001 L 5.244 13.001 L 18.172 13.001 L 14.148 17.022 L 15.563 18.437 L 20.584 13.415 L 21.998 12.003 L 20.584 10.587 Z"
|
||||||
|
android:fillColor="@color/icon_default"/>
|
||||||
|
<path
|
||||||
|
android:pathData="M 7.307 6.696 C 6.375 6.696 5.461 6.941 4.654 7.407 C 3.848 7.872 3.178 8.542 2.712 9.348 C 2.247 10.155 2.002 11.07 2.002 12.001 C 2.002 12.932 2.247 13.847 2.712 14.654 C 3.178 15.46 3.848 16.13 4.654 16.595 C 5.461 17.061 6.375 17.306 7.307 17.306 C 8.451 17.305 9.565 16.934 10.481 16.248 C 11.397 15.563 12.067 14.599 12.391 13.501 L 4.742 13.501 L 4.742 10.501 L 12.389 10.501 C 12.065 9.404 11.396 8.44 10.48 7.754 C 9.564 7.069 8.451 6.697 7.307 6.696 Z M 5.744 11.501 L 5.744 12.501 L 12.586 12.501 C 12.602 12.335 12.609 12.168 12.609 12.001 C 12.607 11.834 12.598 11.667 12.58 11.501 Z"
|
||||||
|
android:fillColor="@color/icon_default"/>
|
||||||
|
</group>
|
||||||
|
</vector>
|
|
@ -83,6 +83,30 @@
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:srcCompat="@drawable/ic_gps_24dp" />
|
app:srcCompat="@drawable/ic_gps_24dp" />
|
||||||
|
|
||||||
|
<ImageButton
|
||||||
|
android:id="@+id/use_trkpt_as_end_button"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:tooltipText="End here"
|
||||||
|
android:src="@drawable/ic_end_here_24dp"
|
||||||
|
android:visibility="gone"
|
||||||
|
app:backgroundTint="@color/default_transparent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/when_was_i_here_button"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:srcCompat="@drawable/ic_end_here_24dp" />
|
||||||
|
|
||||||
|
<ImageButton
|
||||||
|
android:id="@+id/use_trkpt_as_start_button"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:tooltipText="Start here"
|
||||||
|
android:src="@drawable/ic_start_here_24dp"
|
||||||
|
android:visibility="gone"
|
||||||
|
app:backgroundTint="@color/default_transparent"
|
||||||
|
app:layout_constraintTop_toTopOf="@+id/use_trkpt_as_end_button"
|
||||||
|
app:layout_constraintEnd_toStartOf="@+id/use_trkpt_as_end_button"
|
||||||
|
app:srcCompat="@drawable/ic_start_here_24dp" />
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/isolate_trkseg_button"
|
android:id="@+id/isolate_trkseg_button"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|
Loading…
Reference in a new issue