فهرست منبع

Minor changes

inorichi 9 سال پیش
والد
کامیت
9407d9b4f5

+ 7 - 11
app/src/main/java/eu/kanade/mangafeed/data/models/Page.java

@@ -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);
     }
 
 }

+ 6 - 8
app/src/main/java/eu/kanade/mangafeed/presenter/ReaderPresenter.java

@@ -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() {

+ 17 - 13
app/src/main/java/eu/kanade/mangafeed/ui/fragment/ReaderPageFragment.java

@@ -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()));
+                    }
                 });
     }