TripsGalleryAdapter: Strike thru public departure and arrival times in overview if they're cancelled.

This commit is contained in:
Andreas Schildbach 2018-12-21 16:46:18 +01:00
parent bb280158be
commit c87100498d

View file

@ -27,6 +27,7 @@ import com.google.common.base.Preconditions;
import de.schildbach.oeffi.R;
import de.schildbach.pte.dto.Line;
import de.schildbach.pte.dto.Stop;
import de.schildbach.pte.dto.Style;
import de.schildbach.pte.dto.Style.Shape;
import de.schildbach.pte.dto.Trip;
@ -408,22 +409,40 @@ public final class TripsGalleryAdapter extends BaseAdapter {
}
// then draw arr/dep times
final Date publicDepartureTime = trip.getFirstPublicLegDepartureTime();
if (publicDepartureTime != null)
drawTime(canvas, centerX, height, true, publicTimePaint, publicDepartureTime, null);
final Public firstPublicLeg = trip.getFirstPublicLeg();
final Date publicDepartureTime;
if (firstPublicLeg != null) {
final Stop publicDepartureStop = firstPublicLeg.departureStop;
final boolean publicDepartureCancelled = publicDepartureStop.departureCancelled;
publicDepartureTime = publicDepartureStop.getDepartureTime();
if (publicDepartureTime != null)
drawTime(canvas, centerX, height, true, publicTimePaint, publicDepartureCancelled,
publicDepartureTime, null);
} else {
publicDepartureTime = null;
}
final Date individualDepartureTime = trip.getFirstDepartureTime();
if (individualDepartureTime != null)
drawTime(canvas, centerX, height, true, individualTimePaint, individualDepartureTime,
drawTime(canvas, centerX, height, true, individualTimePaint, false, individualDepartureTime,
publicDepartureTime);
final Date publicArrivalTime = trip.getLastPublicLegArrivalTime();
if (publicArrivalTime != null)
drawTime(canvas, centerX, height, false, publicTimePaint, publicArrivalTime, null);
final Public lastPublicLeg = trip.getLastPublicLeg();
final Date publicArrivalTime;
if (lastPublicLeg != null) {
final Stop publicArrivalStop = lastPublicLeg.arrivalStop;
final boolean publicArrivalCancelled = publicArrivalStop.arrivalCancelled;
publicArrivalTime = trip.getLastPublicLegArrivalTime();
if (publicArrivalTime != null)
drawTime(canvas, centerX, height, false, publicTimePaint, publicArrivalCancelled,
publicArrivalTime, null);
} else {
publicArrivalTime = null;
}
final Date individualArrivalTime = trip.getLastArrivalTime();
if (individualArrivalTime != null)
drawTime(canvas, centerX, height, false, individualTimePaint, individualArrivalTime,
drawTime(canvas, centerX, height, false, individualTimePaint, false, individualArrivalTime,
publicArrivalTime);
// last, iterate all public legs
@ -519,7 +538,7 @@ public final class TripsGalleryAdapter extends BaseAdapter {
}
private void drawTime(final Canvas canvas, final int centerX, final int height, final boolean above,
final Paint paint, final Date time, final @Nullable Date timeKeepOut) {
final Paint paint, final boolean strikeThru, final Date time, final @Nullable Date timeKeepOut) {
final FontMetrics metrics = paint.getFontMetrics();
final long t = time.getTime();
@ -539,6 +558,11 @@ public final class TripsGalleryAdapter extends BaseAdapter {
y = Math.max(y, yKeepOut + fontHeight);
}
if (strikeThru)
paint.setFlags(paint.getFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
else
paint.setFlags(paint.getFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG);
if (above)
canvas.drawText(str, centerX, y - metrics.descent, paint);
else