1
0
mirror of https://github.com/oliexdev/openScale.git synced 2025-08-01 06:20:33 +02:00

reset the viewport of the diagram on long press

This commit is contained in:
OliE
2017-03-04 14:51:13 +01:00
parent b7486f66c0
commit aee8ef44bb

View File

@@ -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) {