diff --git a/app/src/main/java/ar/rulosoft/mimanganu/componentes/readers/continuos/HorizontalReader.java b/app/src/main/java/ar/rulosoft/mimanganu/componentes/readers/continuos/HorizontalReader.java index f0751540..f5364a4c 100644 --- a/app/src/main/java/ar/rulosoft/mimanganu/componentes/readers/continuos/HorizontalReader.java +++ b/app/src/main/java/ar/rulosoft/mimanganu/componentes/readers/continuos/HorizontalReader.java @@ -50,36 +50,28 @@ protected void calculateParticularScale(Page dimension) { @Override public void postLayout() { - absoluteScroll(getPagePosition(currentPage), yScroll); + absoluteScroll(getPagePosition(currentPage - 1), yScroll); generateDrawPool(); if (readerListener != null) { - readerListener.onPageChanged(currentPage); + readerListener.onPageChanged(currentPage - 1); } } @Override public void seekPage(int index) { int page = index - 1; - if (page < 0) - page = 0; - else if (index >= pages.size()) - page = pages.size() - 1; if (viewReady && pagesLoaded) { absoluteScroll(getPagePosition(page), yScroll); generateDrawPool(); } - currentPage = page; + currentPage = index; if (readerListener != null) { - readerListener.onPageChanged(transformPage(currentPage)); + readerListener.onPageChanged(currentPage); } } public void reloadImage(int idx) { - int pageIdx; - if(idx == 0) - pageIdx = idx; - else - pageIdx = idx - 1; + int pageIdx = idx - 1; if (pages != null && pageIdx < pages.size() && pageIdx >= 0) { int cPage = currentPage; if (pages.size() < cPage || cPage < 0) @@ -158,7 +150,7 @@ public boolean onDoubleTapEvent(MotionEvent e) { public void reset() { xScroll = 0; yScroll = 0; - currentPage = 0; + currentPage = 1; pages = null; pagesLoaded = false; viewReady = false; diff --git a/app/src/main/java/ar/rulosoft/mimanganu/componentes/readers/continuos/ReaderContinuous.java b/app/src/main/java/ar/rulosoft/mimanganu/componentes/readers/continuos/ReaderContinuous.java index 3ed371de..98a56ef6 100644 --- a/app/src/main/java/ar/rulosoft/mimanganu/componentes/readers/continuos/ReaderContinuous.java +++ b/app/src/main/java/ar/rulosoft/mimanganu/componentes/readers/continuos/ReaderContinuous.java @@ -108,11 +108,12 @@ public void freePage(int idx) { @Override public int getCurrentPage() { - return currentPage + 1; + return currentPage; } public String getPath(int idx) { - Page p = getPage(idx); + int iIdx = idx - 1; + Page p = getPage(iIdx); if (p != null) { return p.getPath(); } else { diff --git a/app/src/main/java/ar/rulosoft/mimanganu/componentes/readers/paged/HorizontalPagedReader.java b/app/src/main/java/ar/rulosoft/mimanganu/componentes/readers/paged/HorizontalPagedReader.java index a14d7c84..93d9686f 100644 --- a/app/src/main/java/ar/rulosoft/mimanganu/componentes/readers/paged/HorizontalPagedReader.java +++ b/app/src/main/java/ar/rulosoft/mimanganu/componentes/readers/paged/HorizontalPagedReader.java @@ -23,15 +23,15 @@ public HorizontalPagedReader(Context context) { public abstract void addOnPageChangeListener(); @Override - public int getCurrentPage() { - return mViewPager.getCurrentItem() + 1; + protected int getCurrentPosition() { + return mViewPager.getCurrentItem(); } public void init() { String infService = Context.LAYOUT_INFLATER_SERVICE; LayoutInflater li = (LayoutInflater)getContext().getSystemService(infService); li.inflate(R.layout.view_paged_reader, this, true); - mViewPager = (UnScrolledViewPager) findViewById(R.id.pager); + mViewPager = findViewById(R.id.pager); addOnPageChangeListener(); mViewPager.setOnSwipeOutListener(this); } diff --git a/app/src/main/java/ar/rulosoft/mimanganu/componentes/readers/paged/L2RPagedReader.java b/app/src/main/java/ar/rulosoft/mimanganu/componentes/readers/paged/L2RPagedReader.java index 7fd4c4f6..eb1ec815 100644 --- a/app/src/main/java/ar/rulosoft/mimanganu/componentes/readers/paged/L2RPagedReader.java +++ b/app/src/main/java/ar/rulosoft/mimanganu/componentes/readers/paged/L2RPagedReader.java @@ -113,15 +113,15 @@ public boolean onSingleTapConfirmed(MotionEvent e) { readerListener.onStartOver(); } } else { - mViewPager.setCurrentItem(currentPage - 1); + mViewPager.setCurrentItem(getCurrentPosition() - 1); } } else if (e.getX() > getWidth() / 4 * 3) { - if (currentPage == paths.size() - 1) { + if (currentPage == paths.size()) { if (readerListener != null) { readerListener.onEndOver(); } } else { - mViewPager.setCurrentItem(currentPage + 1); + mViewPager.setCurrentItem(getCurrentPosition() + 1); } } else { readerListener.onMenuRequired(); diff --git a/app/src/main/java/ar/rulosoft/mimanganu/componentes/readers/paged/PagedReader.java b/app/src/main/java/ar/rulosoft/mimanganu/componentes/readers/paged/PagedReader.java index a8dabe56..8cd5099c 100644 --- a/app/src/main/java/ar/rulosoft/mimanganu/componentes/readers/paged/PagedReader.java +++ b/app/src/main/java/ar/rulosoft/mimanganu/componentes/readers/paged/PagedReader.java @@ -7,7 +7,6 @@ import android.graphics.BitmapFactory; import android.os.AsyncTask; import android.support.v4.view.PagerAdapter; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -34,7 +33,7 @@ public abstract class PagedReader extends Reader implements TapListener { private static ImageViewTouchBase.DisplayType mScreenFit; protected PageAdapter mPageAdapter; List paths; - int currentPage = 0; + int currentPage = 1; //keep the value from 1..n for externally view private InitialPosition iniPosition = InitialPosition.LEFT_UP; public PagedReader(Context context) { @@ -43,6 +42,8 @@ public PagedReader(Context context) { public abstract void setPagerAdapter(PageAdapter mPageAdapter); + protected abstract int getCurrentPosition(); + @Override public void setScreenFit(ImageViewTouchBase.DisplayType displayType) { mScreenFit = displayType; @@ -68,24 +69,16 @@ public void freeMemory() { @Override public void freePage(int idx) { - if (idx == 0) { - if (mPageAdapter != null && mPageAdapter.pages[idx] != null) { - mPageAdapter.pages[idx].unloadImage(); - } - } else { - if (mPageAdapter != null && mPageAdapter.pages[idx - 1] != null) { - mPageAdapter.pages[idx - 1].unloadImage(); - } + int iIdx = idx - 1; + if (mPageAdapter != null && mPageAdapter.pages[iIdx] != null) { + mPageAdapter.pages[iIdx].unloadImage(); } } @Override public String getPath(int idx) { if (paths != null) { - if (idx == 0) - return paths.get(idx); - else if (idx < paths.size()) - return paths.get(idx - 1); + return paths.get(idx - 1); } return ""; } @@ -93,26 +86,13 @@ else if (idx < paths.size()) @Override public void reset() { setPagerAdapter(null); - currentPage = 0; + currentPage = 1; } @Override public void reloadImage(int idx) { - //Log.d("PR", "idx: " + idx); - if (mPageAdapter != null) { - if (idx > mPageAdapter.pages.length) { - Log.e("PagedReader", "idx > mPageAdapter.pages.length !"); - } else { - if (idx == 0) { - if (mPageAdapter.pages[idx] != null) { - mPageAdapter.pages[idx].setImage(); - } - } else { - if (mPageAdapter.pages[idx - 1] != null) { - mPageAdapter.pages[idx - 1].setImage(); - } - } - } + if (mPageAdapter != null && mPageAdapter.pages[idx - 1] != null) { + mPageAdapter.pages[idx - 1].setImage(); } } @@ -136,12 +116,10 @@ public class PageAdapter extends PagerAdapter { } public Page getCurrentPage() { - return pages[currentPage]; + return pages[getCurrentPosition()]; } public void setCurrentPage(int nCurrentPage) { - if (mDirection == Direction.L2R) - nCurrentPage = paths.size() - nCurrentPage; currentPage = nCurrentPage; for (int i = 0; i < pages.length; i++) { if (pages[i] != null) { @@ -155,11 +133,7 @@ public void setCurrentPage(int nCurrentPage) { } Page getPage(int idx) { - if (idx < 0) - idx = 0; - else if (idx >= pages.length) - idx = pages.length - 1; - return pages[idx]; + return pages[idx - 1]; } @Override diff --git a/app/src/main/java/ar/rulosoft/mimanganu/componentes/readers/paged/R2LPagedReader.java b/app/src/main/java/ar/rulosoft/mimanganu/componentes/readers/paged/R2LPagedReader.java index 37e33dc8..d417b409 100644 --- a/app/src/main/java/ar/rulosoft/mimanganu/componentes/readers/paged/R2LPagedReader.java +++ b/app/src/main/java/ar/rulosoft/mimanganu/componentes/readers/paged/R2LPagedReader.java @@ -20,14 +20,14 @@ public void onPageScrolled(int position, float positionOffset, int positionOffse if (readerListener != null) { readerListener.onPageChanged(transformPage(position)); } - currentPage = position; + currentPage = position + 1; if (mPageAdapter != null) mPageAdapter.setCurrentPage(position); } @Override public void onPageSelected(int position) { - currentPage = position; + currentPage = position + 1; } @Override @@ -47,6 +47,11 @@ public boolean isLastPageVisible() { return paths != null && !paths.isEmpty() && mViewPager.getCurrentItem() == (paths.size() - 1); } + @Override + public int getCurrentPage() { + return getCurrentPosition() + 1; + } + @Override public void goToPage(int aPage) { int page = aPage - 1; @@ -66,7 +71,7 @@ public boolean onSingleTapConfirmed(MotionEvent e) { readerListener.onStartOver(); } } else { - mViewPager.setCurrentItem(currentPage - 1); + mViewPager.setCurrentItem(getCurrentPosition() - 1); } } else if (e.getX() > getWidth() / 4 * 3) { if (currentPage == paths.size() - 1) { @@ -74,7 +79,7 @@ public boolean onSingleTapConfirmed(MotionEvent e) { readerListener.onEndOver(); } } else { - mViewPager.setCurrentItem(currentPage + 1); + mViewPager.setCurrentItem(getCurrentPosition() + 1); } } else { readerListener.onMenuRequired(); diff --git a/app/src/main/java/ar/rulosoft/mimanganu/componentes/readers/paged/VerticalPagedReader.java b/app/src/main/java/ar/rulosoft/mimanganu/componentes/readers/paged/VerticalPagedReader.java index 0a06ef38..9f10dffe 100644 --- a/app/src/main/java/ar/rulosoft/mimanganu/componentes/readers/paged/VerticalPagedReader.java +++ b/app/src/main/java/ar/rulosoft/mimanganu/componentes/readers/paged/VerticalPagedReader.java @@ -35,7 +35,7 @@ public void goToPage(int aPage) { int page = aPage - 1; mViewPager.setCurrentItem(page); if (readerListener != null) { - readerListener.onPageChanged(transformPage(page)); + readerListener.onPageChanged(aPage); } currentPage = aPage; } @@ -49,7 +49,7 @@ public void init() { String infService = Context.LAYOUT_INFLATER_SERVICE; LayoutInflater li = (LayoutInflater) getContext().getSystemService(infService); li.inflate(R.layout.view_paged_reader_vertical, this, true); - mViewPager = (UnScrolledViewPagerVertical) findViewById(R.id.pager); + mViewPager = findViewById(R.id.pager); addOnPageChangeListener(); mViewPager.setOnSwipeOutListener(this); } @@ -61,14 +61,14 @@ public void onPageScrolled(int position, float positionOffset, int positionOffse if (readerListener != null) { readerListener.onPageChanged(transformPage(position)); } - currentPage = position; + currentPage = position + 1; if(mPageAdapter != null) mPageAdapter.setCurrentPage(position); } @Override public void onPageSelected(int position) { - currentPage = position; + currentPage = position + 1; } @Override @@ -83,23 +83,28 @@ public void setPagerAdapter(PageAdapter nPageAdapter) { mViewPager.setAdapter(mPageAdapter); } + @Override + protected int getCurrentPosition() { + return mViewPager.getCurrentItem(); + } + public boolean onSingleTapConfirmed(MotionEvent e) { if (readerListener != null) if (e.getX() < getWidth() / 4) { - if (currentPage == 0) { + if (currentPage == 1) { if (readerListener != null) { readerListener.onStartOver(); } } else { - mViewPager.setCurrentItem(currentPage - 1); + mViewPager.setCurrentItem(getCurrentPosition() - 1); } } else if (e.getX() > getWidth() / 4 * 3) { - if (currentPage == paths.size() - 1) { + if (currentPage == paths.size()) { if (readerListener != null) { readerListener.onEndOver(); } } else { - mViewPager.setCurrentItem(currentPage + 1); + mViewPager.setCurrentItem(getCurrentPosition() + 1); } } else { readerListener.onMenuRequired(); diff --git a/app/src/main/res/layout/fragment_reader.xml b/app/src/main/res/layout/fragment_reader.xml index e09263e2..e87e5c40 100644 --- a/app/src/main/res/layout/fragment_reader.xml +++ b/app/src/main/res/layout/fragment_reader.xml @@ -46,26 +46,27 @@ android:orientation="horizontal">