Minor changes

This commit is contained in:
inorichi 2015-11-01 21:28:03 +01:00
parent 95581007df
commit 9407d9b4f5
3 changed files with 30 additions and 32 deletions

View File

@ -61,23 +61,13 @@ public class Page implements NetworkHelper.ProgressListener {
public void setStatus(int status) {
this.status = status;
if (statusSubject != null)
statusSubject.onNext(status);
notifyStatus();
}
public int getProgress() {
return progress;
}
@Override
public String toString() {
return "Page{" +
"pageNumber=" + pageNumber +
", url='" + url + '\'' +
", imageUrl='" + imageUrl + '\'' +
'}';
}
@Override
public void update(long bytesRead, long contentLength, boolean done) {
progress = (int) ((100 * bytesRead) / contentLength);
@ -85,6 +75,12 @@ public class Page implements NetworkHelper.ProgressListener {
public void setStatusSubject(BehaviorSubject<Integer> subject) {
this.statusSubject = subject;
notifyStatus();
}
private void notifyStatus() {
if (statusSubject != null)
statusSubject.onNext(status);
}
}

View File

@ -71,7 +71,6 @@ public class ReaderPresenter extends BasePresenter<ReaderActivity> {
@Override
protected void onDestroy() {
EventBus.getDefault().removeStickyEvent(SourceChapterEvent.class);
source.savePageList(chapter.url, pageList);
saveChapter();
super.onDestroy();
@ -79,14 +78,13 @@ public class ReaderPresenter extends BasePresenter<ReaderActivity> {
@EventBusHook
public void onEventMainThread(SourceChapterEvent event) {
if (source == null || chapter == null) {
source = event.getSource();
chapter = event.getChapter();
if (chapter.last_page_read != 0)
currentPage = chapter.last_page_read;
source = event.getSource();
chapter = event.getChapter();
if (chapter.last_page_read != 0 && !chapter.read)
currentPage = chapter.last_page_read;
start(1);
}
start(1);
EventBus.getDefault().removeStickyEvent(SourceChapterEvent.class);
}
private Observable<List<Page>> getPageListObservable() {

View File

@ -14,6 +14,7 @@ import com.davemorrissey.labs.subscaleview.ImageSource;
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import butterknife.Bind;
import butterknife.ButterKnife;
@ -124,29 +125,32 @@ public class ReaderPageFragment extends Fragment {
}
private void observeStatus() {
if (page == null)
if (page == null || statusSubscription != null)
return;
if (page.getStatus() == Page.READY) {
showImage();
} else {
BehaviorSubject<Integer> statusSubject = BehaviorSubject.create();
page.setStatusSubject(statusSubject);
BehaviorSubject<Integer> statusSubject = BehaviorSubject.create();
page.setStatusSubject(statusSubject);
statusSubscription = statusSubject
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::processStatus);
}
statusSubscription = statusSubject
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::processStatus);
}
private void observeProgress() {
if (progressSubscription != null)
return;
final AtomicInteger currentValue = new AtomicInteger(-1);
progressSubscription = Observable.interval(75, TimeUnit.MILLISECONDS)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(tick -> {
if (page.getProgress() != 0)
progressText.setText(
getString(R.string.download_progress, page.getProgress()));
// Refresh UI only if progress change
if (page.getProgress() != currentValue.get()) {
currentValue.set(page.getProgress());
progressText.setText(getString(R.string.download_progress, page.getProgress()));
}
});
}