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.oeffi.R;
import de.schildbach.pte.dto.Line; import de.schildbach.pte.dto.Line;
import de.schildbach.pte.dto.Stop;
import de.schildbach.pte.dto.Style; import de.schildbach.pte.dto.Style;
import de.schildbach.pte.dto.Style.Shape; import de.schildbach.pte.dto.Style.Shape;
import de.schildbach.pte.dto.Trip; import de.schildbach.pte.dto.Trip;
@ -408,22 +409,40 @@ public final class TripsGalleryAdapter extends BaseAdapter {
} }
// then draw arr/dep times // then draw arr/dep times
final Date publicDepartureTime = trip.getFirstPublicLegDepartureTime(); 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) if (publicDepartureTime != null)
drawTime(canvas, centerX, height, true, publicTimePaint, publicDepartureTime, null); drawTime(canvas, centerX, height, true, publicTimePaint, publicDepartureCancelled,
publicDepartureTime, null);
} else {
publicDepartureTime = null;
}
final Date individualDepartureTime = trip.getFirstDepartureTime(); final Date individualDepartureTime = trip.getFirstDepartureTime();
if (individualDepartureTime != null) if (individualDepartureTime != null)
drawTime(canvas, centerX, height, true, individualTimePaint, individualDepartureTime, drawTime(canvas, centerX, height, true, individualTimePaint, false, individualDepartureTime,
publicDepartureTime); publicDepartureTime);
final Date publicArrivalTime = trip.getLastPublicLegArrivalTime(); 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) if (publicArrivalTime != null)
drawTime(canvas, centerX, height, false, publicTimePaint, publicArrivalTime, null); drawTime(canvas, centerX, height, false, publicTimePaint, publicArrivalCancelled,
publicArrivalTime, null);
} else {
publicArrivalTime = null;
}
final Date individualArrivalTime = trip.getLastArrivalTime(); final Date individualArrivalTime = trip.getLastArrivalTime();
if (individualArrivalTime != null) if (individualArrivalTime != null)
drawTime(canvas, centerX, height, false, individualTimePaint, individualArrivalTime, drawTime(canvas, centerX, height, false, individualTimePaint, false, individualArrivalTime,
publicArrivalTime); publicArrivalTime);
// last, iterate all public legs // 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, 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 FontMetrics metrics = paint.getFontMetrics();
final long t = time.getTime(); final long t = time.getTime();
@ -539,6 +558,11 @@ public final class TripsGalleryAdapter extends BaseAdapter {
y = Math.max(y, yKeepOut + fontHeight); 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) if (above)
canvas.drawText(str, centerX, y - metrics.descent, paint); canvas.drawText(str, centerX, y - metrics.descent, paint);
else else