Show chapter count
This commit is contained in:
		
							parent
							
								
									9ad6efbada
								
							
						
					
					
						commit
						0c77a7034a
					
				| @ -8,11 +8,14 @@ import java.util.List; | |||||||
| 
 | 
 | ||||||
| import javax.inject.Inject; | import javax.inject.Inject; | ||||||
| 
 | 
 | ||||||
|  | import de.greenrobot.event.EventBus; | ||||||
| import eu.kanade.mangafeed.data.helpers.DatabaseHelper; | import eu.kanade.mangafeed.data.helpers.DatabaseHelper; | ||||||
| import eu.kanade.mangafeed.data.helpers.SourceManager; | import eu.kanade.mangafeed.data.helpers.SourceManager; | ||||||
| import eu.kanade.mangafeed.data.models.Chapter; | import eu.kanade.mangafeed.data.models.Chapter; | ||||||
| import eu.kanade.mangafeed.data.models.Manga; | import eu.kanade.mangafeed.data.models.Manga; | ||||||
| import eu.kanade.mangafeed.ui.fragment.MangaChaptersFragment; | import eu.kanade.mangafeed.ui.fragment.MangaChaptersFragment; | ||||||
|  | import eu.kanade.mangafeed.util.EventBusHook; | ||||||
|  | import eu.kanade.mangafeed.util.events.ChapterCountEvent; | ||||||
| import rx.Observable; | import rx.Observable; | ||||||
| import rx.android.schedulers.AndroidSchedulers; | import rx.android.schedulers.AndroidSchedulers; | ||||||
| import rx.schedulers.Schedulers; | import rx.schedulers.Schedulers; | ||||||
| @ -34,7 +37,10 @@ public class MangaChaptersPresenter extends BasePresenter<MangaChaptersFragment> | |||||||
| 
 | 
 | ||||||
|         restartableLatestCache(DB_CHAPTERS, |         restartableLatestCache(DB_CHAPTERS, | ||||||
|                 this::getDbChaptersObs, |                 this::getDbChaptersObs, | ||||||
|                 MangaChaptersFragment::onNextChapters |                 (view, chapters) -> { | ||||||
|  |                     view.onNextChapters(chapters); | ||||||
|  |                     EventBus.getDefault().postSticky(new ChapterCountEvent(chapters.size())); | ||||||
|  |                 } | ||||||
|         ); |         ); | ||||||
| 
 | 
 | ||||||
|         restartableLatestCache(ONLINE_CHAPTERS, |         restartableLatestCache(ONLINE_CHAPTERS, | ||||||
| @ -55,6 +61,7 @@ public class MangaChaptersPresenter extends BasePresenter<MangaChaptersFragment> | |||||||
|         super.onDropView(); |         super.onDropView(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     @EventBusHook | ||||||
|     public void onEventMainThread(Manga manga) { |     public void onEventMainThread(Manga manga) { | ||||||
|         if (this.manga == null) { |         if (this.manga == null) { | ||||||
|             this.manga = manga; |             this.manga = manga; | ||||||
|  | |||||||
| @ -1,20 +1,42 @@ | |||||||
| package eu.kanade.mangafeed.presenter; | package eu.kanade.mangafeed.presenter; | ||||||
| 
 | 
 | ||||||
|  | import android.os.Bundle; | ||||||
|  | 
 | ||||||
| import javax.inject.Inject; | import javax.inject.Inject; | ||||||
| 
 | 
 | ||||||
| import eu.kanade.mangafeed.data.helpers.DatabaseHelper; | import eu.kanade.mangafeed.data.helpers.DatabaseHelper; | ||||||
| import eu.kanade.mangafeed.data.models.Manga; | import eu.kanade.mangafeed.data.models.Manga; | ||||||
| import eu.kanade.mangafeed.ui.fragment.MangaInfoFragment; | import eu.kanade.mangafeed.ui.fragment.MangaInfoFragment; | ||||||
|  | import eu.kanade.mangafeed.util.EventBusHook; | ||||||
|  | import eu.kanade.mangafeed.util.events.ChapterCountEvent; | ||||||
| import rx.Observable; | import rx.Observable; | ||||||
| import rx.Subscription; | import rx.Subscription; | ||||||
| import rx.android.schedulers.AndroidSchedulers; | import rx.android.schedulers.AndroidSchedulers; | ||||||
|  | import rx.schedulers.Schedulers; | ||||||
|  | import timber.log.Timber; | ||||||
| 
 | 
 | ||||||
| public class MangaInfoPresenter extends BasePresenter<MangaInfoFragment> { | public class MangaInfoPresenter extends BasePresenter<MangaInfoFragment> { | ||||||
| 
 | 
 | ||||||
|     @Inject DatabaseHelper db; |     @Inject DatabaseHelper db; | ||||||
| 
 | 
 | ||||||
|     private Manga manga; |     private Manga manga; | ||||||
|     private Subscription mangaInfoSubscription; |     private int count = -1; | ||||||
|  | 
 | ||||||
|  |     private static final int GET_MANGA = 1; | ||||||
|  |     private static final int GET_CHAPTER_COUNT = 2; | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     protected void onCreate(Bundle savedState) { | ||||||
|  |         super.onCreate(savedState); | ||||||
|  | 
 | ||||||
|  |         restartableLatestCache(GET_MANGA, | ||||||
|  |                 () -> Observable.just(manga), | ||||||
|  |                 MangaInfoFragment::setMangaInfo); | ||||||
|  | 
 | ||||||
|  |         restartableLatestCache(GET_CHAPTER_COUNT, | ||||||
|  |                 () -> Observable.just(count), | ||||||
|  |                 MangaInfoFragment::setChapterCount); | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|     protected void onTakeView(MangaInfoFragment view) { |     protected void onTakeView(MangaInfoFragment view) { | ||||||
| @ -28,18 +50,20 @@ public class MangaInfoPresenter extends BasePresenter<MangaInfoFragment> { | |||||||
|         super.onDropView(); |         super.onDropView(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     @EventBusHook | ||||||
|     public void onEventMainThread(Manga manga) { |     public void onEventMainThread(Manga manga) { | ||||||
|  |         if (!manga.equals(this.manga)) { | ||||||
|             this.manga = manga; |             this.manga = manga; | ||||||
|         getMangaInfo(); |             start(GET_MANGA); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     private void getMangaInfo() { |     @EventBusHook | ||||||
|         if (mangaInfoSubscription != null) |     public void onEventMainThread(ChapterCountEvent event) { | ||||||
|             remove(mangaInfoSubscription); |         if (count != event.getCount()) { | ||||||
| 
 |             count = event.getCount(); | ||||||
|         add(mangaInfoSubscription = Observable.just(manga) |             start(GET_CHAPTER_COUNT); | ||||||
|                 .observeOn(AndroidSchedulers.mainThread()) |  | ||||||
|                 .compose(deliverLatestCache()) |  | ||||||
|                 .subscribe(split(MangaInfoFragment::setMangaInfo))); |  | ||||||
|         } |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
| } | } | ||||||
|  | |||||||
| @ -27,7 +27,7 @@ import uk.co.ribot.easyadapter.EasyRecyclerAdapter; | |||||||
| public class MangaChaptersFragment extends BaseFragment<MangaChaptersPresenter> { | public class MangaChaptersFragment extends BaseFragment<MangaChaptersPresenter> { | ||||||
| 
 | 
 | ||||||
|     @Bind(R.id.chapter_list) RecyclerView chapters; |     @Bind(R.id.chapter_list) RecyclerView chapters; | ||||||
|     @Bind(R.id.swipe_refresh) SwipeRefreshLayout swipe_refresh; |     @Bind(R.id.swipe_refresh) SwipeRefreshLayout swipeRefresh; | ||||||
| 
 | 
 | ||||||
|     private EasyRecyclerAdapter<Chapter> adapter; |     private EasyRecyclerAdapter<Chapter> adapter; | ||||||
| 
 | 
 | ||||||
| @ -77,7 +77,7 @@ public class MangaChaptersFragment extends BaseFragment<MangaChaptersPresenter> | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     private void setSwipeRefreshListener() { |     private void setSwipeRefreshListener() { | ||||||
|         swipe_refresh.setOnRefreshListener(() -> getPresenter().refreshChapters(this)); |         swipeRefresh.setOnRefreshListener(() -> getPresenter().refreshChapters(this)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public void onNextChapters(List<Chapter> chapters) { |     public void onNextChapters(List<Chapter> chapters) { | ||||||
| @ -85,10 +85,10 @@ public class MangaChaptersFragment extends BaseFragment<MangaChaptersPresenter> | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public void onNextOnlineChapters() { |     public void onNextOnlineChapters() { | ||||||
|         swipe_refresh.setRefreshing(false); |         swipeRefresh.setRefreshing(false); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public void setSwipeRefreshing() { |     public void setSwipeRefreshing() { | ||||||
|         swipe_refresh.setRefreshing(true); |         swipeRefresh.setRefreshing(true); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -50,7 +50,6 @@ public class MangaInfoFragment extends BaseFragment<MangaInfoPresenter> { | |||||||
|     public void setMangaInfo(Manga manga) { |     public void setMangaInfo(Manga manga) { | ||||||
|         mArtist.setText(manga.artist); |         mArtist.setText(manga.artist); | ||||||
|         mAuthor.setText(manga.author); |         mAuthor.setText(manga.author); | ||||||
|         mChapters.setText("0"); // TODO |  | ||||||
|         mGenres.setText(manga.genre); |         mGenres.setText(manga.genre); | ||||||
|         mStatus.setText("Ongoing"); //TODO |         mStatus.setText("Ongoing"); //TODO | ||||||
|         mDescription.setText(manga.description); |         mDescription.setText(manga.description); | ||||||
| @ -61,4 +60,8 @@ public class MangaInfoFragment extends BaseFragment<MangaInfoPresenter> { | |||||||
|                 .centerCrop() |                 .centerCrop() | ||||||
|                 .into(mCover); |                 .into(mCover); | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     public void setChapterCount(int count) { | ||||||
|  |         mChapters.setText(String.valueOf(count)); | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -0,0 +1,7 @@ | |||||||
|  | package eu.kanade.mangafeed.util; | ||||||
|  | 
 | ||||||
|  | import java.lang.annotation.ElementType; | ||||||
|  | import java.lang.annotation.Target; | ||||||
|  | 
 | ||||||
|  | @Target({ElementType.METHOD}) | ||||||
|  | public @interface EventBusHook {} | ||||||
| @ -0,0 +1,13 @@ | |||||||
|  | package eu.kanade.mangafeed.util.events; | ||||||
|  | 
 | ||||||
|  | public class ChapterCountEvent { | ||||||
|  |     private int count; | ||||||
|  | 
 | ||||||
|  |     public ChapterCountEvent(int count) { | ||||||
|  |         this.count = count; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public int getCount() { | ||||||
|  |         return count; | ||||||
|  |     } | ||||||
|  | } | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 inorichi
						inorichi