package ar.rulosoft.mimanganu.componentes.readers.paged;
import android.content.Context;
import android.support.v4.view.ViewPager;
import android.view.MotionEvent;
import java.util.Collections;
import java.util.List;
/**
* Created by Raul on 26/06/2016.
*/
public class L2RPagedReader extends HorizontalPagedReader {
public L2RPagedReader(Context context) {
super(context);
}
@Override
public void addOnPageChangeListener() {
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if (readerListener != null) {
readerListener.onPageChanged(paths.size() - position - 1);
}
currentPage = position;
if (mPageAdapter != null)
mPageAdapter.setCurrentPage(position);
}
@Override
public void onPageSelected(int position) {
currentPage = position;
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
@Override
public void setPaths(List<String> paths) {
Collections.reverse(paths);
this.paths = paths;
setPagerAdapter(new PageAdapter());
}
@Override
public void seekPage(int aPage) {
if (paths != null) {
int page = paths.size() - aPage;
mViewPager.setCurrentItem(page);
if (readerListener != null) {
readerListener.onPageChanged(transformPage(page));
}
currentPage = page;
}
}
@Override
public void goToPage(int aPage) {
seekPage(aPage);
}
@Override
public void reloadImage(int idx) {
if (paths != null) {
int intIdx = paths.size() - idx;
if (mPageAdapter != null && mPageAdapter.getPage(intIdx) != null) {
mPageAdapter.getPage(intIdx).setImage();
}
}
}
@Override
public String getPath(int idx) {
return paths.get(paths.size() - idx);
}
@Override
public void freePage(int idx) {
if (mPageAdapter != null && mPageAdapter.getPage(paths.size() - idx) != null) {
mPageAdapter.getPage(paths.size() - idx).unloadImage();
}
}
@Override
public boolean isLastPageVisible() {
return mViewPager.getCurrentItem() == 0;
}
@Override
public int getCurrentPage() {
return transformPage(currentPage);
}
@Override
protected int transformPage(int page) {
return paths.size() - page;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
if (readerListener != null)
if (e.getX() < getWidth() / 4) {
if (currentPage == 0) {
if (readerListener != null) {
readerListener.onEndOver();
}
} else {
mViewPager.setCurrentItem(currentPage - 1);
}
} else if (e.getX() > getWidth() / 4 * 3) {
if (currentPage == paths.size() - 1) {
if (readerListener != null) {
readerListener.onStartOver();
}
} else {
mViewPager.setCurrentItem(currentPage + 1);
}
} else {
readerListener.onMenuRequired();
}
return false;
}
@Override
public void onStartOver() {
if (readerListener != null) {
readerListener.onEndOver();
}
}
@Override
public void onEndOver() {
if (readerListener != null) {
readerListener.onStartOver();
}
}
}