From aee8ef44bb9b36883eafd2381148b7e6ade0211b Mon Sep 17 00:00:00 2001 From: OliE Date: Sat, 4 Mar 2017 14:51:13 +0100 Subject: [PATCH] reset the viewport of the diagram on long press --- .../health/openscale/gui/GraphFragment.java | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/android_app/app/src/main/java/com/health/openscale/gui/GraphFragment.java b/android_app/app/src/main/java/com/health/openscale/gui/GraphFragment.java index e9261e53..b4b24d6d 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/GraphFragment.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/GraphFragment.java @@ -24,7 +24,9 @@ import android.graphics.Color; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v4.app.Fragment; +import android.view.GestureDetector; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; @@ -60,6 +62,7 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener { private View graphView; private LineChartView chartTop; private ColumnChartView chartBottom; + private Viewport resetViewport; private TextView txtYear; private SharedPreferences prefs; @@ -83,6 +86,7 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener { chartTop = (LineChartView) graphView.findViewById(R.id.chart_top); chartBottom = (ColumnChartView) graphView.findViewById(R.id.chart_bottom); + chartTop.setOnTouchListener(new ChartTopListener()); chartTop.setOnValueTouchListener(new ChartTopValueTouchListener()); chartBottom.setOnValueTouchListener(new ChartBottomValueTouchListener()); @@ -236,10 +240,10 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener { chartTop.setLineChartData(lineData); - Viewport v = new Viewport(0, chartTop.getCurrentViewport().top+4, maxDays-1, chartTop.getCurrentViewport().bottom-4); + resetViewport = new Viewport(0, chartTop.getCurrentViewport().top+4, maxDays-1, chartTop.getCurrentViewport().bottom-4); - chartTop.setMaximumViewport(v); - chartTop.setCurrentViewport(v); + chartTop.setMaximumViewport(resetViewport); + chartTop.setCurrentViewport(resetViewport); } private void generateColumnData() @@ -297,6 +301,19 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener { } } + private class ChartTopListener implements View.OnTouchListener { + final GestureDetector gestureDetector = new GestureDetector(new GestureDetector.SimpleOnGestureListener() { + public void onLongPress(MotionEvent e) { + chartTop.setCurrentViewport(resetViewport); + } + }); + + @Override + public boolean onTouch (View v, MotionEvent event) { + return gestureDetector.onTouchEvent(event); + } + } + private class ChartTopValueTouchListener implements LineChartOnValueSelectListener { @Override public void onValueSelected(int lineIndex, int pointIndex, PointValue pointValue) {