From 029db81d1524b2e8c6568c59fa15e10009634dd9 Mon Sep 17 00:00:00 2001 From: Lecho Date: Sat, 2 Aug 2014 16:01:10 +0200 Subject: [PATCH] Added ViewportChangeListener --- .../src/lecho/lib/hellocharts/Chart.java | 2 ++ .../src/lecho/lib/hellocharts/ChartCalculator.java | 12 ++++++++++++ .../lib/hellocharts/DummyVieportChangeListener.java | 12 ++++++++++++ .../lib/hellocharts/ViewportChangeListener.java | 9 +++++++++ .../lib/hellocharts/view/AbstractChartView.java | 6 ++++++ 5 files changed, 41 insertions(+) create mode 100644 hellocharts-library/src/lecho/lib/hellocharts/DummyVieportChangeListener.java create mode 100644 hellocharts-library/src/lecho/lib/hellocharts/ViewportChangeListener.java diff --git a/hellocharts-library/src/lecho/lib/hellocharts/Chart.java b/hellocharts-library/src/lecho/lib/hellocharts/Chart.java index 80740cb7..efcbdbf3 100644 --- a/hellocharts-library/src/lecho/lib/hellocharts/Chart.java +++ b/hellocharts-library/src/lecho/lib/hellocharts/Chart.java @@ -30,6 +30,8 @@ public interface Chart { public void setViewportAnimationListener(ChartAnimationListener animationListener); + public void setViewportChangeListener(ViewportChangeListener viewportChangeListener); + public void callTouchListener(SelectedValue selectedValue); public boolean isInteractive(); diff --git a/hellocharts-library/src/lecho/lib/hellocharts/ChartCalculator.java b/hellocharts-library/src/lecho/lib/hellocharts/ChartCalculator.java index 1df6a90c..74e726d5 100644 --- a/hellocharts-library/src/lecho/lib/hellocharts/ChartCalculator.java +++ b/hellocharts-library/src/lecho/lib/hellocharts/ChartCalculator.java @@ -29,6 +29,8 @@ public class ChartCalculator { protected float minViewportWidth; protected float minViewportHeight; + private ViewportChangeListener viewportChangeListener = new DummyVieportChangeListener(); + /** * Calculates available width and height. Should be called when chart dimensions or chart data change. */ @@ -72,6 +74,8 @@ public void constrainViewport(float left, float top, float right, float bottom) currentViewport.top = Math.max(maxViewport.top, top); currentViewport.bottom = Math.max(Utils.nextUpF(top), Math.min(maxViewport.bottom, bottom)); currentViewport.right = Math.max(Utils.nextUpF(left), Math.min(maxViewport.right, right)); + + viewportChangeListener.onViewportChanged(currentViewport); } /** @@ -183,4 +187,12 @@ public float getMinimumViewportHeight() { return minViewportHeight; } + public void setViewportChangeListener(ViewportChangeListener viewportChangeListener) { + if (null == viewportChangeListener) { + this.viewportChangeListener = new DummyVieportChangeListener(); + } else { + this.viewportChangeListener = viewportChangeListener; + } + } + } \ No newline at end of file diff --git a/hellocharts-library/src/lecho/lib/hellocharts/DummyVieportChangeListener.java b/hellocharts-library/src/lecho/lib/hellocharts/DummyVieportChangeListener.java new file mode 100644 index 00000000..29cf6f58 --- /dev/null +++ b/hellocharts-library/src/lecho/lib/hellocharts/DummyVieportChangeListener.java @@ -0,0 +1,12 @@ +package lecho.lib.hellocharts; + +import android.graphics.RectF; +import android.util.Log; + +public class DummyVieportChangeListener implements ViewportChangeListener { + + @Override + public void onViewportChanged(RectF newViewport) { + // Do nothing + } +} diff --git a/hellocharts-library/src/lecho/lib/hellocharts/ViewportChangeListener.java b/hellocharts-library/src/lecho/lib/hellocharts/ViewportChangeListener.java new file mode 100644 index 00000000..5c66bb62 --- /dev/null +++ b/hellocharts-library/src/lecho/lib/hellocharts/ViewportChangeListener.java @@ -0,0 +1,9 @@ +package lecho.lib.hellocharts; + +import android.graphics.RectF; + +public interface ViewportChangeListener { + + public void onViewportChanged(RectF newViewport); + +} diff --git a/hellocharts-library/src/lecho/lib/hellocharts/view/AbstractChartView.java b/hellocharts-library/src/lecho/lib/hellocharts/view/AbstractChartView.java index a111b0c7..9ea41fb8 100644 --- a/hellocharts-library/src/lecho/lib/hellocharts/view/AbstractChartView.java +++ b/hellocharts-library/src/lecho/lib/hellocharts/view/AbstractChartView.java @@ -2,6 +2,7 @@ import lecho.lib.hellocharts.Chart; import lecho.lib.hellocharts.ChartCalculator; +import lecho.lib.hellocharts.ViewportChangeListener; import lecho.lib.hellocharts.anim.ChartAnimationListener; import lecho.lib.hellocharts.anim.ChartDataAnimator; import lecho.lib.hellocharts.anim.ChartDataAnimatorV14; @@ -107,6 +108,11 @@ public void setViewportAnimationListener(ChartAnimationListener animationListene viewportAnimator.setChartAnimationListener(animationListener); } + @Override + public void setViewportChangeListener(ViewportChangeListener viewportChangeListener) { + chartCalculator.setViewportChangeListener(viewportChangeListener); + } + public ChartRenderer getChartRenderer() { return chartRenderer; }