Show download progress. Caching of images now without glide

This commit is contained in:
inorichi
2015-10-28 02:10:37 +01:00
parent 3561392d24
commit 1339e32de7
9 changed files with 249 additions and 42 deletions
@@ -6,25 +6,35 @@ import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.davemorrissey.labs.subscaleview.ImageSource;
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;
import java.util.concurrent.TimeUnit;
import butterknife.Bind;
import butterknife.ButterKnife;
import eu.kanade.mangafeed.R;
import eu.kanade.mangafeed.data.models.Page;
import eu.kanade.mangafeed.ui.activity.ReaderActivity;
import rx.Observable;
import rx.Subscription;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
public class ReaderPageFragment extends Fragment {
@Bind(R.id.page_image_view) SubsamplingScaleImageView imageView;
@Bind(R.id.progress_container) LinearLayout progressContainer;
@Bind(R.id.progress) ProgressBar progressBar;
@Bind(R.id.progress_text) TextView progressText;
@Bind(R.id.image_error) TextView errorText;
private Page page;
private Subscription progressSubscription;
public static ReaderPageFragment newInstance(Page page) {
ReaderPageFragment fragment = new ReaderPageFragment();
@@ -35,11 +45,11 @@ public class ReaderPageFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
}
public void replacePage(Page page) {
unsubscribeProgress();
this.page = page;
loadImage();
}
@@ -55,13 +65,13 @@ public class ReaderPageFragment extends Fragment {
switch (page.getStatus()) {
case (Page.READY):
imageView.setImage(ImageSource.uri(page.getImagePath()).tilingDisabled());
progressBar.setVisibility(View.GONE);
progressContainer.setVisibility(View.GONE);
break;
case (Page.DOWNLOAD):
progressBar.setVisibility(View.VISIBLE);
progressContainer.setVisibility(View.VISIBLE);
break;
case (Page.ERROR):
progressBar.setVisibility(View.GONE);
progressContainer.setVisibility(View.GONE);
errorText.setVisibility(View.VISIBLE);
}
@@ -78,9 +88,42 @@ public class ReaderPageFragment extends Fragment {
imageView.setOnTouchListener((v, motionEvent) ->
((ReaderActivity) getActivity()).onImageTouch(motionEvent));
observeProgress();
loadImage();
return view;
}
@Override
public void onStop() {
super.onStop();
unsubscribeProgress();
}
private void observeProgress() {
if (page == null || page.getStatus() != Page.DOWNLOAD)
return;
progressSubscription = Observable.interval(75, TimeUnit.MILLISECONDS)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(tick -> {
if (page.getProgress() == 0) {
progressText.setText(R.string.downloading);
}
else if (page.getProgress() == 100) {
progressContainer.setVisibility(View.GONE);
unsubscribeProgress();
}
else {
progressText.setText(getString(R.string.download_progress, page.getProgress()));
}
});
}
private void unsubscribeProgress() {
if (progressSubscription != null)
progressSubscription.unsubscribe();
}
}