Initial download manager

This commit is contained in:
inorichi
2015-11-03 16:21:50 +01:00
parent b3f12ae333
commit 13ff612ce0
23 changed files with 284 additions and 182 deletions
@@ -18,8 +18,11 @@ import java.util.List;
import butterknife.Bind;
import butterknife.ButterKnife;
import de.greenrobot.event.EventBus;
import eu.kanade.mangafeed.R;
import eu.kanade.mangafeed.data.models.Chapter;
import eu.kanade.mangafeed.data.services.DownloadService;
import eu.kanade.mangafeed.events.DownloadChapterEvent;
import eu.kanade.mangafeed.presenter.MangaChaptersPresenter;
import eu.kanade.mangafeed.ui.activity.MangaDetailActivity;
import eu.kanade.mangafeed.ui.activity.ReaderActivity;
@@ -28,6 +31,8 @@ import eu.kanade.mangafeed.ui.adapter.ChaptersAdapter;
import eu.kanade.mangafeed.ui.fragment.base.BaseRxFragment;
import nucleus.factory.RequiresPresenter;
import rx.Observable;
import rx.Subscription;
import rx.schedulers.Schedulers;
@RequiresPresenter(MangaChaptersPresenter.class)
public class MangaChaptersFragment extends BaseRxFragment<MangaChaptersPresenter> implements
@@ -39,6 +44,7 @@ public class MangaChaptersFragment extends BaseRxFragment<MangaChaptersPresenter
private ChaptersAdapter adapter;
private ActionMode actionMode;
private Subscription downloadSubscription;
public static Fragment newInstance() {
return new MangaChaptersFragment();
@@ -64,6 +70,15 @@ public class MangaChaptersFragment extends BaseRxFragment<MangaChaptersPresenter
return view;
}
@Override
public void onStart() {
super.onStart();
if (!DownloadService.isRunning(getActivity())) {
Intent intent = DownloadService.getStartIntent(getActivity());
getActivity().startService(intent);
}
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.chapters, menu);
@@ -130,6 +145,9 @@ public class MangaChaptersFragment extends BaseRxFragment<MangaChaptersPresenter
case R.id.action_mark_as_unread:
getPresenter().markChaptersRead(getSelectedChapters(), false);
return true;
case R.id.action_download:
onDownloadChapters();
return true;
}
return false;
}
@@ -188,4 +206,20 @@ public class MangaChaptersFragment extends BaseRxFragment<MangaChaptersPresenter
private void setContextTitle(int count) {
actionMode.setTitle(getString(R.string.selected_chapters_title, count));
}
private void onDownloadChapters() {
if (downloadSubscription != null && !downloadSubscription.isUnsubscribed()) {
downloadSubscription.unsubscribe();
downloadSubscription = null;
}
downloadSubscription = getSelectedChapters()
.subscribeOn(Schedulers.io())
.subscribe(chapter -> {
EventBus.getDefault().post(
new DownloadChapterEvent(getPresenter().getManga(), chapter));
downloadSubscription.unsubscribe();
});
}
}