forked from upstream-mirrors/OpenTracks
Cleanup: ChartView doesn't show any Markers since a while.
Drawing Markers was removed in d8eed2ccc9
This commit is contained in:
@@ -32,7 +32,6 @@ import java.util.List;
|
|||||||
|
|
||||||
import de.dennisguse.opentracks.R;
|
import de.dennisguse.opentracks.R;
|
||||||
import de.dennisguse.opentracks.data.TrackDataHub;
|
import de.dennisguse.opentracks.data.TrackDataHub;
|
||||||
import de.dennisguse.opentracks.data.models.Marker;
|
|
||||||
import de.dennisguse.opentracks.data.models.Statistics;
|
import de.dennisguse.opentracks.data.models.Statistics;
|
||||||
import de.dennisguse.opentracks.data.models.Track;
|
import de.dennisguse.opentracks.data.models.Track;
|
||||||
import de.dennisguse.opentracks.data.models.TrackPoint;
|
import de.dennisguse.opentracks.data.models.TrackPoint;
|
||||||
@@ -220,27 +219,6 @@ public class ChartFragment extends Fragment implements TrackDataHub.Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void clearMarkers() {
|
|
||||||
if (isResumed()) {
|
|
||||||
viewBinding.chartView.clearMarker();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onNewMarker(@NonNull Marker marker) {
|
|
||||||
if (isResumed()) {
|
|
||||||
viewBinding.chartView.addMarker(marker);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onNewMarkersDone() {
|
|
||||||
if (isResumed()) {
|
|
||||||
runOnUiThread(updateChart);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks the chart settings.
|
* Checks the chart settings.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -45,10 +45,8 @@ import java.util.LinkedList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import de.dennisguse.opentracks.R;
|
import de.dennisguse.opentracks.R;
|
||||||
import de.dennisguse.opentracks.data.models.Marker;
|
|
||||||
import de.dennisguse.opentracks.settings.UnitSystem;
|
import de.dennisguse.opentracks.settings.UnitSystem;
|
||||||
import de.dennisguse.opentracks.stats.ExtremityMonitor;
|
import de.dennisguse.opentracks.stats.ExtremityMonitor;
|
||||||
import de.dennisguse.opentracks.ui.markers.MarkerUtils;
|
|
||||||
import de.dennisguse.opentracks.ui.util.ThemeUtils;
|
import de.dennisguse.opentracks.ui.util.ThemeUtils;
|
||||||
import de.dennisguse.opentracks.util.StringUtils;
|
import de.dennisguse.opentracks.util.StringUtils;
|
||||||
|
|
||||||
@@ -74,9 +72,6 @@ public class ChartView extends View {
|
|||||||
private static final int SPACER = 4;
|
private static final int SPACER = 4;
|
||||||
private static final int Y_AXIS_OFFSET = 16;
|
private static final int Y_AXIS_OFFSET = 16;
|
||||||
|
|
||||||
//TODO Determine from actual size of the used drawable
|
|
||||||
private static final float MARKER_X_ANCHOR = 13f / 48f;
|
|
||||||
|
|
||||||
static {
|
static {
|
||||||
X_FRACTION_FORMAT.setMaximumFractionDigits(1);
|
X_FRACTION_FORMAT.setMaximumFractionDigits(1);
|
||||||
X_FRACTION_FORMAT.setMinimumFractionDigits(1);
|
X_FRACTION_FORMAT.setMinimumFractionDigits(1);
|
||||||
@@ -89,17 +84,12 @@ public class ChartView extends View {
|
|||||||
private final ChartValueSeries heartRateSeries;
|
private final ChartValueSeries heartRateSeries;
|
||||||
|
|
||||||
private final LinkedList<ChartPoint> chartPoints = new LinkedList<>();
|
private final LinkedList<ChartPoint> chartPoints = new LinkedList<>();
|
||||||
private final List<Marker> markers = new LinkedList<>();
|
|
||||||
private final ExtremityMonitor xExtremityMonitor = new ExtremityMonitor();
|
private final ExtremityMonitor xExtremityMonitor = new ExtremityMonitor();
|
||||||
private final int backgroundColor;
|
private final int backgroundColor;
|
||||||
private final Paint axisPaint;
|
private final Paint axisPaint;
|
||||||
private final Paint xAxisMarkerPaint;
|
private final Paint xAxisMarkerPaint;
|
||||||
private final Paint gridPaint;
|
private final Paint gridPaint;
|
||||||
private final Paint markerPaint;
|
|
||||||
private final Drawable pointer;
|
private final Drawable pointer;
|
||||||
private final Drawable markerPin;
|
|
||||||
private final int markerWidth;
|
|
||||||
private final int markerHeight;
|
|
||||||
private final Scroller scroller;
|
private final Scroller scroller;
|
||||||
private double maxX = 1.0;
|
private double maxX = 1.0;
|
||||||
private int zoomLevel = 1;
|
private int zoomLevel = 1;
|
||||||
@@ -333,18 +323,9 @@ public class ChartView extends View {
|
|||||||
gridPaint.setAntiAlias(false);
|
gridPaint.setAntiAlias(false);
|
||||||
gridPaint.setPathEffect(new DashPathEffect(new float[]{3, 2}, 0));
|
gridPaint.setPathEffect(new DashPathEffect(new float[]{3, 2}, 0));
|
||||||
|
|
||||||
markerPaint = new Paint();
|
|
||||||
markerPaint.setStyle(Style.STROKE);
|
|
||||||
markerPaint.setAntiAlias(false);
|
|
||||||
|
|
||||||
pointer = ContextCompat.getDrawable(context, R.drawable.ic_logo_color_24dp);
|
pointer = ContextCompat.getDrawable(context, R.drawable.ic_logo_color_24dp);
|
||||||
pointer.setBounds(0, 0, pointer.getIntrinsicWidth(), pointer.getIntrinsicHeight());
|
pointer.setBounds(0, 0, pointer.getIntrinsicWidth(), pointer.getIntrinsicHeight());
|
||||||
|
|
||||||
markerPin = MarkerUtils.getDefaultPhoto(context);
|
|
||||||
markerWidth = markerPin.getIntrinsicWidth();
|
|
||||||
markerHeight = markerPin.getIntrinsicHeight();
|
|
||||||
markerPin.setBounds(0, 0, markerWidth, markerHeight);
|
|
||||||
|
|
||||||
scroller = new Scroller(context);
|
scroller = new Scroller(context);
|
||||||
setFocusable(true);
|
setFocusable(true);
|
||||||
setClickable(true);
|
setClickable(true);
|
||||||
@@ -467,18 +448,6 @@ public class ChartView extends View {
|
|||||||
scrollTo(0, 0);
|
scrollTo(0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addMarker(Marker marker) {
|
|
||||||
synchronized (markers) {
|
|
||||||
markers.add(marker);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void clearMarker() {
|
|
||||||
synchronized (markers) {
|
|
||||||
markers.clear();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean canZoomIn() {
|
private boolean canZoomIn() {
|
||||||
return zoomLevel < MAX_ZOOM_LEVEL;
|
return zoomLevel < MAX_ZOOM_LEVEL;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,11 +30,9 @@ import java.util.Collections;
|
|||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import de.dennisguse.opentracks.data.models.Marker;
|
|
||||||
import de.dennisguse.opentracks.data.models.Statistics;
|
import de.dennisguse.opentracks.data.models.Statistics;
|
||||||
import de.dennisguse.opentracks.data.models.Track;
|
import de.dennisguse.opentracks.data.models.Track;
|
||||||
import de.dennisguse.opentracks.data.models.TrackPoint;
|
import de.dennisguse.opentracks.data.models.TrackPoint;
|
||||||
import de.dennisguse.opentracks.data.tables.MarkerColumns;
|
|
||||||
import de.dennisguse.opentracks.data.tables.TrackPointsColumns;
|
import de.dennisguse.opentracks.data.tables.TrackPointsColumns;
|
||||||
import de.dennisguse.opentracks.data.tables.TracksColumns;
|
import de.dennisguse.opentracks.data.tables.TracksColumns;
|
||||||
import de.dennisguse.opentracks.services.RecordingStatus;
|
import de.dennisguse.opentracks.services.RecordingStatus;
|
||||||
@@ -91,7 +89,6 @@ public class TrackDataHub {
|
|||||||
|
|
||||||
// Registered listeners
|
// Registered listeners
|
||||||
private ContentObserver tracksTableObserver;
|
private ContentObserver tracksTableObserver;
|
||||||
private ContentObserver markersTableObserver;
|
|
||||||
private ContentObserver trackPointsTableObserver;
|
private ContentObserver trackPointsTableObserver;
|
||||||
|
|
||||||
public TrackDataHub(Context context) {
|
public TrackDataHub(Context context) {
|
||||||
@@ -126,14 +123,6 @@ public class TrackDataHub {
|
|||||||
};
|
};
|
||||||
contentResolver.registerContentObserver(TracksColumns.CONTENT_URI, false, tracksTableObserver);
|
contentResolver.registerContentObserver(TracksColumns.CONTENT_URI, false, tracksTableObserver);
|
||||||
|
|
||||||
markersTableObserver = new ContentObserver(handler) {
|
|
||||||
@Override
|
|
||||||
public void onChange(boolean selfChange) {
|
|
||||||
notifyMarkersTableUpdate(listeners);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
contentResolver.registerContentObserver(MarkerColumns.CONTENT_URI, false, markersTableObserver);
|
|
||||||
|
|
||||||
trackPointsTableObserver = new ContentObserver(handler) {
|
trackPointsTableObserver = new ContentObserver(handler) {
|
||||||
@Override
|
@Override
|
||||||
public void onChange(boolean selfChange) {
|
public void onChange(boolean selfChange) {
|
||||||
@@ -152,7 +141,6 @@ public class TrackDataHub {
|
|||||||
//Unregister listeners
|
//Unregister listeners
|
||||||
ContentResolver contentResolver = context.getContentResolver();
|
ContentResolver contentResolver = context.getContentResolver();
|
||||||
contentResolver.unregisterContentObserver(tracksTableObserver);
|
contentResolver.unregisterContentObserver(tracksTableObserver);
|
||||||
contentResolver.unregisterContentObserver(markersTableObserver);
|
|
||||||
contentResolver.unregisterContentObserver(trackPointsTableObserver);
|
contentResolver.unregisterContentObserver(trackPointsTableObserver);
|
||||||
|
|
||||||
if (handlerThread != null) {
|
if (handlerThread != null) {
|
||||||
@@ -219,7 +207,6 @@ public class TrackDataHub {
|
|||||||
listener.clearTrackPoints();
|
listener.clearTrackPoints();
|
||||||
}
|
}
|
||||||
notifyTrackPointsTableUpdate(true, listeners);
|
notifyTrackPointsTableUpdate(true, listeners);
|
||||||
notifyMarkersTableUpdate(listeners);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -240,9 +227,6 @@ public class TrackDataHub {
|
|||||||
resetSamplingState();
|
resetSamplingState();
|
||||||
}
|
}
|
||||||
notifyTrackPointsTableUpdate(isOnlyListener, trackDataListeners);
|
notifyTrackPointsTableUpdate(isOnlyListener, trackDataListeners);
|
||||||
|
|
||||||
//Markers
|
|
||||||
notifyMarkersTableUpdate(trackDataListeners);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -260,30 +244,6 @@ public class TrackDataHub {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Notifies marker table update.
|
|
||||||
* Currently, reloads all the markers up to {@link #MAX_DISPLAYED_MARKERS}. To be run in the {@link #handler} thread.
|
|
||||||
*
|
|
||||||
* @param trackDataListeners the track data listeners to notify
|
|
||||||
*/
|
|
||||||
private void notifyMarkersTableUpdate(Set<Listener> trackDataListeners) {
|
|
||||||
if (trackDataListeners.isEmpty()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (Listener trackDataListener : trackDataListeners) {
|
|
||||||
trackDataListener.clearMarkers();
|
|
||||||
}
|
|
||||||
|
|
||||||
try (AutoCloseableIterator<Marker> markerIterator = contentProviderUtils.getMarkerIterator(selectedTrackId, MAX_DISPLAYED_MARKERS)) {
|
|
||||||
markerIterator.forEachRemaining(current ->
|
|
||||||
trackDataListeners.forEach(listener -> listener.onNewMarker(current))
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
trackDataListeners.forEach(Listener::onNewMarkersDone);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Notifies track points table update; to be run in the {@link #handler} thread.
|
* Notifies track points table update; to be run in the {@link #handler} thread.
|
||||||
*
|
*
|
||||||
@@ -418,26 +378,5 @@ public class TrackDataHub {
|
|||||||
*/
|
*/
|
||||||
default void onNewTrackPointsDone() {
|
default void onNewTrackPointsDone() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Called to clear previously sent markers.
|
|
||||||
*/
|
|
||||||
default void clearMarkers() {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Called when a new marker is read.
|
|
||||||
*
|
|
||||||
* @param marker the marker
|
|
||||||
*/
|
|
||||||
default void onNewMarker(@NonNull Marker marker) {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Called when finish sending new markers.
|
|
||||||
* This gets called after every batch of calls to {@link #clearMarkers()} and {@link #onNewMarker(Marker)}.
|
|
||||||
*/
|
|
||||||
default void onNewMarkersDone() {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user