From 3495a3a7da7895b59712af76baebd89ed9e91a1e Mon Sep 17 00:00:00 2001 From: Nikolay Pultsin Date: Wed, 13 Apr 2011 03:51:45 +0100 Subject: [PATCH] code simplification --- .../fbreader/fbreader/FBView.java | 3 +- .../zlibrary/core/view/ZLView.java | 3 +- .../zlibrary/text/view/ZLTextView.java | 36 +++++++++++-------- .../ui/android/view/ZLAndroidWidget.java | 21 ++++------- 4 files changed, 31 insertions(+), 32 deletions(-) diff --git a/src/org/geometerplus/fbreader/fbreader/FBView.java b/src/org/geometerplus/fbreader/fbreader/FBView.java index a1ddf3102..9871f1a96 100644 --- a/src/org/geometerplus/fbreader/fbreader/FBView.java +++ b/src/org/geometerplus/fbreader/fbreader/FBView.java @@ -184,6 +184,7 @@ public final class FBView extends ZLTextView { private synchronized void runAutoScrolling(int x, int y) { final boolean horizontal = ScrollingPreferences.Instance().HorizontalOption.getValue(); + final Direction direction = horizontal ? Direction.rightToLeft : Direction.up; final int diff = horizontal ? x - myStartX : y - myStartY; final int h = myContext.getHeight(); final int w = myContext.getWidth(); @@ -194,7 +195,7 @@ public final class FBView extends ZLTextView { Math.abs(diff) < minDiff ? PageIndex.current : (diff < 0 ? PageIndex.next : PageIndex.previous); - myReader.startViewAutoScrolling(pageIndex, horizontal ? Direction.rightToLeft : Direction.up, ScrollingPreferences.Instance().AnimationSpeedOption.getValue()); + myReader.startViewAutoScrolling(pageIndex, direction, x, y, ScrollingPreferences.Instance().AnimationSpeedOption.getValue()); } public boolean onFingerRelease(int x, int y) { diff --git a/src/org/geometerplus/zlibrary/core/view/ZLView.java b/src/org/geometerplus/zlibrary/core/view/ZLView.java index 349edc1b3..7dd3906f9 100644 --- a/src/org/geometerplus/zlibrary/core/view/ZLView.java +++ b/src/org/geometerplus/zlibrary/core/view/ZLView.java @@ -121,6 +121,5 @@ abstract public class ZLView { public abstract int getScrollbarThumbPosition(PageIndex pageIndex); public abstract int getScrollbarThumbLength(PageIndex pageIndex); - public abstract boolean canScrollForward(); - public abstract boolean canScrollBackward(); + public abstract boolean canScroll(PageIndex index); } diff --git a/src/org/geometerplus/zlibrary/text/view/ZLTextView.java b/src/org/geometerplus/zlibrary/text/view/ZLTextView.java index 54f326ae7..37a29de8d 100644 --- a/src/org/geometerplus/zlibrary/text/view/ZLTextView.java +++ b/src/org/geometerplus/zlibrary/text/view/ZLTextView.java @@ -1436,20 +1436,26 @@ public abstract class ZLTextView extends ZLTextViewBase { } @Override - public boolean canScrollForward() { - final ZLTextWordCursor cursor = getEndCursor(); - return - cursor != null && - !cursor.isNull() && - (!cursor.isEndOfParagraph() || !cursor.getParagraphCursor().isLast()); - } - - @Override - public boolean canScrollBackward() { - final ZLTextWordCursor cursor = getStartCursor(); - return - cursor != null && - !cursor.isNull() && - (!cursor.isStartOfParagraph() || !cursor.getParagraphCursor().isFirst()); + public boolean canScroll(PageIndex index) { + switch (index) { + default: + return true; + case next: + { + final ZLTextWordCursor cursor = getEndCursor(); + return + cursor != null && + !cursor.isNull() && + (!cursor.isEndOfParagraph() || !cursor.getParagraphCursor().isLast()); + } + case previous: + { + final ZLTextWordCursor cursor = getStartCursor(); + return + cursor != null && + !cursor.isNull() && + (!cursor.isStartOfParagraph() || !cursor.getParagraphCursor().isFirst()); + } + } } } diff --git a/src/org/geometerplus/zlibrary/ui/android/view/ZLAndroidWidget.java b/src/org/geometerplus/zlibrary/ui/android/view/ZLAndroidWidget.java index b0e1f634c..dead3deb6 100644 --- a/src/org/geometerplus/zlibrary/ui/android/view/ZLAndroidWidget.java +++ b/src/org/geometerplus/zlibrary/ui/android/view/ZLAndroidWidget.java @@ -155,14 +155,8 @@ public class ZLAndroidWidget extends View implements View.OnLongClickListener { public void scrollManually(int startX, int startY, int endX, int endY, ZLView.Direction direction) { final ZLView view = ZLApplication.Instance().getCurrentView(); final int diff = direction.IsHorizontal ? endX - startX : endY - startY; - if (diff >= 0) { - if (!view.canScrollBackward()) { - return; - } - } else { - if (!view.canScrollForward()) { - return; - } + if (!view.canScroll(diff >= 0 ? ZLView.PageIndex.previous : ZLView.PageIndex.next)) { + return; } final AnimationProvider animator = getAnimationProvider(); @@ -182,6 +176,11 @@ public class ZLAndroidWidget extends View implements View.OnLongClickListener { final AnimationProvider animator = getAnimationProvider(); final int w = getWidth(); final int h = getMainAreaHeight(); + + if (!view.canScroll(pageIndex)) { + return; + } + switch (pageIndex) { case current: switch (animator.getPageToScrollTo()) { @@ -197,15 +196,9 @@ public class ZLAndroidWidget extends View implements View.OnLongClickListener { } break; case previous: - if (!view.canScrollBackward()) { - return; - } animator.startAutoScrolling(true, 3, direction, w, h, x, y, speed); break; case next: - if (!view.canScrollForward()) { - return; - } animator.startAutoScrolling(true, -3, direction, w, h, x, y, speed); break; }