mirror of
https://github.com/mihonapp/mihon.git
synced 2025-06-25 18:47:51 +02:00
Can now delete manga from recent + added missing res files #118
This commit is contained in:
@ -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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user