|
@@ -1,7 +1,9 @@
|
|
|
package eu.kanade.mangafeed.ui.reader.viewer.webtoon;
|
|
|
|
|
|
-import android.content.Context;
|
|
|
+import android.support.v7.widget.RecyclerView;
|
|
|
+import android.view.LayoutInflater;
|
|
|
import android.view.View;
|
|
|
+import android.view.ViewGroup;
|
|
|
import android.widget.ProgressBar;
|
|
|
|
|
|
import com.davemorrissey.labs.subscaleview.ImageSource;
|
|
@@ -10,60 +12,72 @@ import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
|
|
|
+import butterknife.Bind;
|
|
|
+import butterknife.ButterKnife;
|
|
|
import eu.kanade.mangafeed.R;
|
|
|
import eu.kanade.mangafeed.data.source.model.Page;
|
|
|
-import uk.co.ribot.easyadapter.BaseEasyRecyclerAdapter;
|
|
|
-import uk.co.ribot.easyadapter.ItemViewHolder;
|
|
|
-import uk.co.ribot.easyadapter.PositionInfo;
|
|
|
-import uk.co.ribot.easyadapter.annotations.LayoutId;
|
|
|
-import uk.co.ribot.easyadapter.annotations.ViewId;
|
|
|
|
|
|
-public class WebtoonAdapter extends BaseEasyRecyclerAdapter<Page> {
|
|
|
+public class WebtoonAdapter extends RecyclerView.Adapter<WebtoonAdapter.ImageHolder> {
|
|
|
|
|
|
- List<Page> pages;
|
|
|
+ private List<Page> pages;
|
|
|
+ private WebtoonReader fragment;
|
|
|
+ private int maxBitmapSize;
|
|
|
+ private View.OnTouchListener listener;
|
|
|
|
|
|
- public WebtoonAdapter(Context context) {
|
|
|
- super(context, ImageViewHolder.class);
|
|
|
+ public WebtoonAdapter(WebtoonReader fragment) {
|
|
|
+ this.fragment = fragment;
|
|
|
pages = new ArrayList<>();
|
|
|
+ maxBitmapSize = fragment.getReaderActivity().getMaxBitmapSize();
|
|
|
+ listener = (v, event) -> fragment.onImageTouch(event);
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
public Page getItem(int position) {
|
|
|
return pages.get(position);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public int getItemCount() {
|
|
|
- return pages.size();
|
|
|
+ public ImageHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
|
|
+ LayoutInflater inflater = fragment.getActivity().getLayoutInflater();
|
|
|
+ View v = inflater.inflate(R.layout.item_webtoon_reader, parent, false);
|
|
|
+ return new ImageHolder(v, maxBitmapSize, listener);
|
|
|
}
|
|
|
|
|
|
- public void setPages(List<Page> pages) {
|
|
|
- this.pages = pages;
|
|
|
- notifyDataSetChanged();
|
|
|
+ @Override
|
|
|
+ public void onBindViewHolder(ImageHolder holder, int position) {
|
|
|
+ final Page page = getItem(position);
|
|
|
+ holder.onSetValues(page);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public int getItemCount() {
|
|
|
+ return pages.size();
|
|
|
}
|
|
|
|
|
|
public void addPage(Page page) {
|
|
|
pages.add(page);
|
|
|
- notifyItemChanged(page.getPageNumber());
|
|
|
+ notifyItemInserted(page.getPageNumber());
|
|
|
}
|
|
|
|
|
|
- @LayoutId(R.layout.item_webtoon_reader)
|
|
|
- static class ImageViewHolder extends ItemViewHolder<Page> {
|
|
|
+ public static class ImageHolder extends RecyclerView.ViewHolder {
|
|
|
|
|
|
- @ViewId(R.id.page_image_view) SubsamplingScaleImageView imageView;
|
|
|
- @ViewId(R.id.progress) ProgressBar progressBar;
|
|
|
+ @Bind(R.id.page_image_view) SubsamplingScaleImageView imageView;
|
|
|
+ @Bind(R.id.progress) ProgressBar progressBar;
|
|
|
|
|
|
- public ImageViewHolder(View view) {
|
|
|
+ public ImageHolder(View view, int maxBitmapSize, View.OnTouchListener listener) {
|
|
|
super(view);
|
|
|
+ ButterKnife.bind(this, view);
|
|
|
+
|
|
|
imageView.setDoubleTapZoomStyle(SubsamplingScaleImageView.ZOOM_FOCUS_FIXED);
|
|
|
imageView.setPanLimit(SubsamplingScaleImageView.PAN_LIMIT_INSIDE);
|
|
|
imageView.setMinimumScaleType(SubsamplingScaleImageView.SCALE_TYPE_CENTER_INSIDE);
|
|
|
imageView.setZoomEnabled(false);
|
|
|
imageView.setPanEnabled(false);
|
|
|
+ imageView.setOnTouchListener(listener);
|
|
|
+ // TODO Using tiling here is annoying. RecyclerView isn't good at all for a webtoon reader
|
|
|
+// imageView.setMaxDimensions(maxBitmapSize, maxBitmapSize);
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public void onSetValues(Page page, PositionInfo positionInfo) {
|
|
|
+ public void onSetValues(Page page) {
|
|
|
if (page.getImagePath() != null) {
|
|
|
imageView.setVisibility(View.VISIBLE);
|
|
|
imageView.setImage(ImageSource.uri(page.getImagePath()).tilingDisabled());
|
|
@@ -72,7 +86,6 @@ public class WebtoonAdapter extends BaseEasyRecyclerAdapter<Page> {
|
|
|
imageView.setVisibility(View.GONE);
|
|
|
progressBar.setVisibility(View.VISIBLE);
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
}
|