Better error handling for images

This commit is contained in:
inorichi
2015-10-27 17:12:16 +01:00
parent 35b8be6c75
commit 68e5efb02b
11 changed files with 69 additions and 39 deletions
@@ -71,8 +71,8 @@ public class ReaderActivity extends BaseRxActivity<ReaderPresenter> {
viewer.onPageListReady(pages);
}
public void onImageReady(Page page) {
viewer.onImageReady(page);
public void onNextPage(Page page) {
viewer.onNextPage(page);
}
public void onPageChanged(int currentPage, int totalPages) {
@@ -101,8 +101,7 @@ public class ReaderActivity extends BaseRxActivity<ReaderPresenter> {
}
private BaseViewer getViewer() {
int prefsViewer = prefs.getDefaultViewer();
switch (prefsViewer) {
switch (prefs.getDefaultViewer()) {
case LEFT_TO_RIGHT:
return new LeftToRightViewer(this, container);
case RIGHT_TO_LEFT:
@@ -43,7 +43,7 @@ public class ReaderPageAdapter extends SmartFragmentStatePagerAdapter {
ReaderPageFragment fragment = (ReaderPageFragment)getRegisteredFragment(position);
if (fragment != null) {
fragment.setPage(page);
fragment.replacePage(page);
}
}
@@ -7,6 +7,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.davemorrissey.labs.subscaleview.ImageSource;
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;
@@ -18,19 +19,17 @@ import eu.kanade.mangafeed.data.models.Page;
import eu.kanade.mangafeed.ui.activity.ReaderActivity;
public class ReaderPageFragment extends Fragment {
public static final String URL_ARGUMENT_KEY = "UrlArgumentKey";
@Bind(R.id.page_image_view) SubsamplingScaleImageView imageView;
@Bind(R.id.progress) ProgressBar progressBar;
@Bind(R.id.image_error) TextView errorText;
private String imagePath;
private Page page;
public static ReaderPageFragment newInstance(Page page) {
ReaderPageFragment newInstance = new ReaderPageFragment();
Bundle arguments = new Bundle();
arguments.putString(URL_ARGUMENT_KEY, page.getImagePath());
newInstance.setArguments(arguments);
return newInstance;
ReaderPageFragment fragment = new ReaderPageFragment();
fragment.setPage(page);
return fragment;
}
@Override
@@ -38,26 +37,32 @@ public class ReaderPageFragment extends Fragment {
super.onCreate(savedInstanceState);
setRetainInstance(true);
}
Bundle arguments = getArguments();
if (arguments != null) {
if (arguments.containsKey(URL_ARGUMENT_KEY)) {
imagePath = arguments.getString(URL_ARGUMENT_KEY);
}
}
public void replacePage(Page page) {
this.page = page;
loadImage();
}
public void setPage(Page page) {
if (!page.getImageUrl().equals(imagePath)) {
imagePath = page.getImagePath();
loadImage();
}
this.page = page;
}
private void loadImage() {
if (imagePath != null) {
progressBar.setVisibility(View.GONE);
imageView.setImage(ImageSource.uri(imagePath).tilingDisabled());
if (page == null)
return;
switch (page.getStatus()) {
case (Page.READY):
imageView.setImage(ImageSource.uri(page.getImagePath()).tilingDisabled());
progressBar.setVisibility(View.GONE);
break;
case (Page.DOWNLOAD):
progressBar.setVisibility(View.VISIBLE);
break;
case (Page.ERROR):
progressBar.setVisibility(View.GONE);
errorText.setVisibility(View.VISIBLE);
}
}
@@ -73,8 +78,6 @@ public class ReaderPageFragment extends Fragment {
imageView.setOnTouchListener((v, motionEvent) ->
((ReaderActivity) getActivity()).onImageTouch(motionEvent));
progressBar.setVisibility(View.VISIBLE);
loadImage();
return view;
@@ -59,7 +59,7 @@ public class VerticalViewer extends BaseViewer {
}
@Override
public void onImageReady(Page page) {
public void onNextPage(Page page) {
adapter.replacePage(getPosFromPage(page), page);
}
@@ -34,7 +34,7 @@ public class WebtoonViewer extends BaseViewer {
}
@Override
public void onImageReady(Page page) {
public void onNextPage(Page page) {
adapter.setPage(getPosFromPage(page), page);
}
@@ -33,6 +33,6 @@ public abstract class BaseViewer {
public abstract int getTotalPages();
public abstract void onPageListReady(List<Page> pages);
public abstract void onImageReady(Page page);
public abstract void onNextPage(Page page);
public abstract boolean onImageTouch(MotionEvent motionEvent);
}
@@ -72,7 +72,7 @@ public abstract class ViewPagerViewer extends BaseViewer {
}
@Override
public void onImageReady(Page page) {
public void onNextPage(Page page) {
adapter.replacePage(getPosFromPage(page), page);
}