Can now delete manga from recent + added missing res files #118

This commit is contained in:
NoodleMage
2016-02-18 17:23:17 +01:00
parent dec9442a65
commit aac6b242a0
6 changed files with 154 additions and 15 deletions

View File

@ -10,6 +10,8 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.afollestad.materialdialogs.MaterialDialog;
import java.util.List;
import butterknife.Bind;
@ -26,6 +28,8 @@ import eu.kanade.tachiyomi.ui.decoration.DividerItemDecoration;
import eu.kanade.tachiyomi.ui.reader.ReaderActivity;
import nucleus.factory.RequiresPresenter;
import rx.Observable;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
@RequiresPresenter(RecentChaptersPresenter.class)
public class RecentChaptersFragment extends BaseRxFragment<RecentChaptersPresenter> implements FlexibleViewHolder.OnListItemClickListener {
@ -103,4 +107,38 @@ public class RecentChaptersFragment extends BaseRxFragment<RecentChaptersPresent
return true;
}
protected boolean onDelete(Observable<Chapter> chapters, Manga manga) {
int size = adapter.getSelectedItemCount();
MaterialDialog dialog = new MaterialDialog.Builder(getActivity())
.title(R.string.deleting)
.progress(false, size, true)
.cancelable(false)
.show();
Observable<Chapter> observable = chapters
.concatMap(chapter -> {
getPresenter().deleteChapter(chapter, manga);
return Observable.just(chapter);
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnNext(chapter -> {
dialog.incrementProgress(1);
chapter.status = Download.NOT_DOWNLOADED;
})
.doOnCompleted(adapter::notifyDataSetChanged)
.finallyDo(dialog::dismiss);
getPresenter().deleteChapters(observable);
return true;
}
protected boolean onMarkAsRead(Observable<Chapter> chapters) {
getPresenter().markChaptersRead(chapters, true);
return true;
}
}

View File

@ -133,11 +133,6 @@ public class RecentChaptersHolder extends FlexibleViewHolder {
}
}
public void onProgressChange(Context context, int downloaded, int total) {
downloadText.setText(context.getString(
R.string.chapter_downloading_progress, downloaded, total));
}
private void showPopupMenu(View view) {
// Create a PopupMenu, giving it the clicked view for an anchor
PopupMenu popup = new PopupMenu(adapter.getFragment().getActivity(), view);
@ -170,13 +165,10 @@ public class RecentChaptersHolder extends FlexibleViewHolder {
case R.id.action_download:
return adapter.getFragment().onDownload(chapterObservable, mangaChapter.manga);
case R.id.action_delete:
ToastUtil.showShort(context, "Delete does not work, yet....");
return true;
// return adapter.getFragment().onDelete(chapterObservable);
return adapter.getFragment().onDelete(chapterObservable, mangaChapter.manga);
case R.id.action_mark_as_read:
ToastUtil.showShort(context, "Mark as read does not work, yet....");
return true;
// return adapter.getFragment().onMarkAsRead(chapterObservable);
ToastUtil.showShort(context, "Mark as read");
return adapter.getFragment().onMarkAsRead(chapterObservable);
case R.id.action_mark_as_unread:
ToastUtil.showShort(context, "Mark as unread does not work, yet....");
return true;

View File

@ -27,6 +27,7 @@ import eu.kanade.tachiyomi.event.ReaderEvent;
import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter;
import rx.Observable;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
import timber.log.Timber;
public class RecentChaptersPresenter extends BasePresenter<RecentChaptersFragment> {
@ -109,6 +110,7 @@ public class RecentChaptersPresenter extends BasePresenter<RecentChaptersFragmen
}
private Observable<List<Object>> getRecentChaptersObservable() {
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
@ -171,4 +173,32 @@ public class RecentChaptersPresenter extends BasePresenter<RecentChaptersFragmen
EventBus.getDefault().postSticky(new DownloadChaptersEvent(manga, chapters));
}));
}
public void deleteChapter(Chapter chapter, Manga manga) {
Source source = sourceManager.get(manga.source);
downloadManager.deleteChapter(source, manga, chapter);
}
public void deleteChapters(Observable<Chapter> selectedChapters) {
add(selectedChapters
.subscribe(chapter -> {
downloadManager.getQueue().remove(chapter);
}, error -> {
Timber.e(error.getMessage());
}));
}
public void markChaptersRead(Observable<Chapter> selectedChapters, boolean read) {
add(selectedChapters
.subscribeOn(Schedulers.io())
.map(chapter -> {
chapter.read = read;
if (!read) chapter.last_page_read = 0;
return chapter;
})
.toList()
.flatMap(chapters -> db.insertChapters(chapters).asRxObservable())
.observeOn(AndroidSchedulers.mainThread())
.subscribe());
}
}