Add MangaDetailActivity with two fragments, info and chapters

This commit is contained in:
inorichi
2015-10-17 13:51:54 +02:00
parent 07395892a0
commit 0e52c81970
16 changed files with 508 additions and 81 deletions
@@ -1,6 +1,5 @@
package eu.kanade.mangafeed.presenter;
import android.content.Intent;
import android.os.Bundle;
import android.util.SparseBooleanArray;
@@ -9,7 +8,6 @@ import javax.inject.Inject;
import eu.kanade.mangafeed.data.helpers.DatabaseHelper;
import eu.kanade.mangafeed.data.helpers.PreferencesHelper;
import eu.kanade.mangafeed.data.models.Manga;
import eu.kanade.mangafeed.ui.activity.MangaDetailActivity;
import eu.kanade.mangafeed.ui.fragment.LibraryFragment;
import rx.Observable;
import rx.Subscription;
@@ -36,14 +34,6 @@ public class LibraryPresenter extends BasePresenter2<LibraryFragment> {
getFavoriteMangas();
}
public void onMangaClick(LibraryFragment view, int position) {
Intent intent = MangaDetailActivity.newIntent(
view.getActivity(),
view.getAdapter().getItem(position)
);
view.getActivity().startActivity(intent);
}
public void getFavoriteMangas() {
if (mFavoriteMangasSubscription != null)
remove(mFavoriteMangasSubscription);
@@ -0,0 +1,6 @@
package eu.kanade.mangafeed.presenter;
import eu.kanade.mangafeed.ui.fragment.MangaChaptersFragment;
public class MangaChaptersPresenter extends BasePresenter2<MangaChaptersFragment> {
}
@@ -2,33 +2,23 @@ package eu.kanade.mangafeed.presenter;
import javax.inject.Inject;
import de.greenrobot.event.EventBus;
import eu.kanade.mangafeed.App;
import eu.kanade.mangafeed.data.helpers.DatabaseHelper;
import eu.kanade.mangafeed.data.models.Manga;
import eu.kanade.mangafeed.ui.activity.MangaDetailActivity;
import eu.kanade.mangafeed.view.MangaDetailView;
public class MangaDetailPresenter extends BasePresenter {
public class MangaDetailPresenter extends BasePresenter2<MangaDetailActivity> {
private MangaDetailView view;
@Inject
DatabaseHelper db;
public MangaDetailPresenter(MangaDetailView view) {
this.view = view;
App.getComponent(view.getActivity()).inject(this);
}
public void onEventMainThread(Manga manga) {
view.loadManga(manga);
initializeChapters(manga);
}
public static void newIntent(Manga manga) {
EventBus.getDefault().postSticky(manga);
}
public void initializeChapters(Manga manga) {
db.getChapters(manga)
.subscribe(view::setChapters);
@@ -0,0 +1,36 @@
package eu.kanade.mangafeed.presenter;
import javax.inject.Inject;
import eu.kanade.mangafeed.data.helpers.DatabaseHelper;
import eu.kanade.mangafeed.ui.fragment.MangaInfoFragment;
import rx.Observable;
import rx.Subscription;
import rx.android.schedulers.AndroidSchedulers;
public class MangaInfoPresenter extends BasePresenter2<MangaInfoFragment> {
@Inject DatabaseHelper db;
private Subscription mangaInfoSubscription;
@Override
protected void onTakeView(MangaInfoFragment view) {
super.onTakeView(view);
getMangaInfo(view);
}
private void getMangaInfo(MangaInfoFragment view) {
if (mangaInfoSubscription != null)
remove(mangaInfoSubscription);
mangaInfoSubscription = db.getManga(view.getMangaId())
.observeOn(AndroidSchedulers.mainThread())
.take(1)
.flatMap(Observable::from)
.subscribe(view::setMangaInfo);
add(mangaInfoSubscription);
}
}