From 8cde0d6acaee41f5f3f55313bf3de6391deebc95 Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Sun, 17 Jul 2016 09:32:21 -0400 Subject: [PATCH] HistoryChart: make toggling faster --- .../uhabits/ui/common/views/HistoryChart.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/isoron/uhabits/ui/common/views/HistoryChart.java b/app/src/main/java/org/isoron/uhabits/ui/common/views/HistoryChart.java index cbf8bb718..0027d41b2 100644 --- a/app/src/main/java/org/isoron/uhabits/ui/common/views/HistoryChart.java +++ b/app/src/main/java/org/isoron/uhabits/ui/common/views/HistoryChart.java @@ -32,6 +32,8 @@ import org.isoron.uhabits.utils.*; import java.text.*; import java.util.*; +import static org.isoron.uhabits.models.Checkmark.*; + public class HistoryChart extends ScrollableChart { private int[] checkmarks; @@ -118,12 +120,15 @@ public class HistoryChart extends ScrollableChart final Long timestamp = positionToTimestamp(x, y); if (timestamp == null) return false; - controller.onToggleCheckmark(timestamp); + int offset = timestampToOffset(timestamp); + boolean isChecked = checkmarks[offset] == CHECKED_EXPLICITLY; + checkmarks[offset] = (isChecked ? UNCHECKED : CHECKED_EXPLICITLY); + controller.onToggleCheckmark(timestamp); + postInvalidate(); return true; } - public void populateWithRandomData() { Random random = new Random(); @@ -407,6 +412,14 @@ public class HistoryChart extends ScrollableChart return date.getTimeInMillis(); } + private int timestampToOffset(Long timestamp) + { + Long day = DateUtils.millisecondsInOneDay; + Long today = DateUtils.getStartOfToday(); + + return (int) ((today - timestamp) / day); + } + private void updateDate() { baseDate = DateUtils.getStartOfTodayCalendar();