diff --git a/res/layout/bottom_map_sheet.xml b/res/layout/bottom_map_sheet.xml index 56988d315..49b31bda1 100644 --- a/res/layout/bottom_map_sheet.xml +++ b/res/layout/bottom_map_sheet.xml @@ -60,8 +60,7 @@ = sliderPaddingLeft + ) { + minRangeDisplayLabel.draw( + canvas, + getDeltaInTime(getContext()), + minValueOffsetX - getDeltaInPixel(), + displayLabelOffsetBelow + ); + } + + if (maxValueOffsetX + getDeltaInPixel() <= (getWidth() - sliderPaddingRight)) { + maxRangeDisplayLabel.draw( + canvas, + getDeltaInTime(getContext()), + maxValueOffsetX + getDeltaInPixel(), + displayLabelOffsetBelow + ); + } + + } } public interface OnTimestampChangedListener { @@ -62,6 +100,9 @@ public class TimeRangeSlider extends RangeSliderView implements RangeSliderView. @Override public String parseMinValueDisplayText(int minValue) { + if (minValue == maxValue) { + return ""; + } return getStringForValue(minValue); } @@ -76,7 +117,11 @@ public class TimeRangeSlider extends RangeSliderView implements RangeSliderView. } private long getTimestampForValue(int value) { - return System.currentTimeMillis() - ((timeFrame / 100) * (100 - value) * 1000); + return System.currentTimeMillis() - ((timeFrame / getCount()) * (getCount() - value) * 1000); + } + + public String getDeltaInTime(Context context) { + return DateUtils.getFormattedTimespan(context, (int) (timeFrame * 1000 / getCount() * getDeltaInValues())); } diff --git a/src/org/thoughtcrime/securesms/components/rangeslider/TrackLayer.java b/src/org/thoughtcrime/securesms/components/rangeslider/TrackLayer.java index c6781e484..391932138 100644 --- a/src/org/thoughtcrime/securesms/components/rangeslider/TrackLayer.java +++ b/src/org/thoughtcrime/securesms/components/rangeslider/TrackLayer.java @@ -32,9 +32,26 @@ class TrackLayer { this.paddingRight = paddingRight; } - void draw(Canvas canvas, int width, float offsetLeft, float offsetRight, float offsetY) { + void draw(Canvas canvas, int width, float offsetLeft, float offsetRight, float offsetY, float delta) { draw(canvas, backgoundPaint, paddingLeft, width - paddingRight, offsetY); - draw(canvas, centerPaint, offsetLeft, offsetRight, offsetY); + if (offsetLeft == offsetRight) { + float maxEndX = width - paddingRight; + float minStartX = paddingLeft; + float offsetDeltaLeft = offsetLeft - delta; + float offsetDeltaRight = offsetRight + delta; + + if (offsetLeft - delta < minStartX) { + offsetDeltaLeft = minStartX; + } else if (offsetRight + delta > maxEndX) { + offsetDeltaRight = maxEndX; + } + + draw(canvas, centerPaint, offsetDeltaLeft, offsetDeltaRight, offsetY); + } + else { + draw(canvas, centerPaint, offsetLeft, offsetRight, offsetY); + } + } void draw(Canvas canvas, Paint paint, float startX, float endX, float offsetY) { diff --git a/src/org/thoughtcrime/securesms/util/DateUtils.java b/src/org/thoughtcrime/securesms/util/DateUtils.java index 160f78b69..90662e731 100644 --- a/src/org/thoughtcrime/securesms/util/DateUtils.java +++ b/src/org/thoughtcrime/securesms/util/DateUtils.java @@ -175,4 +175,9 @@ public class DateUtils extends android.text.format.DateUtils { TimeUnit.MILLISECONDS.toMinutes(millis), TimeUnit.MILLISECONDS.toSeconds(millis-(TimeUnit.MILLISECONDS.toMinutes(millis)*60000))); } + + public static String getFormattedTimespan(Context c, int timestamp) { + int mins = timestamp / (1000 * 60); + return c.getResources().getQuantityString(R.plurals.n_minutes, mins, mins); + } }