diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recent/RecentChaptersFragment.java b/app/src/main/java/eu/kanade/tachiyomi/ui/recent/RecentChaptersFragment.java index e78c34ccd7..efc7847c9a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recent/RecentChaptersFragment.java +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recent/RecentChaptersFragment.java @@ -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 implements FlexibleViewHolder.OnListItemClickListener { @@ -103,4 +107,38 @@ public class RecentChaptersFragment extends BaseRxFragment 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 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 chapters) { + getPresenter().markChaptersRead(chapters, true); + return true; + } + + } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recent/RecentChaptersHolder.java b/app/src/main/java/eu/kanade/tachiyomi/ui/recent/RecentChaptersHolder.java index 8d3607e39b..88a106fa6f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recent/RecentChaptersHolder.java +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recent/RecentChaptersHolder.java @@ -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; diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recent/RecentChaptersPresenter.java b/app/src/main/java/eu/kanade/tachiyomi/ui/recent/RecentChaptersPresenter.java index a849c9d1d2..9db61c1212 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recent/RecentChaptersPresenter.java +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recent/RecentChaptersPresenter.java @@ -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 { @@ -109,6 +110,7 @@ public class RecentChaptersPresenter extends BasePresenter> getRecentChaptersObservable() { Calendar cal = Calendar.getInstance(); cal.setTime(new Date()); @@ -171,4 +173,32 @@ public class RecentChaptersPresenter extends BasePresenter selectedChapters) { + add(selectedChapters + .subscribe(chapter -> { + downloadManager.getQueue().remove(chapter); + }, error -> { + Timber.e(error.getMessage()); + })); + } + + public void markChaptersRead(Observable 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()); + } } diff --git a/app/src/main/res/layout/item_recent_chapter.xml b/app/src/main/res/layout/item_recent_chapter.xml index 4c2dd163a1..21d9111b7c 100644 --- a/app/src/main/res/layout/item_recent_chapter.xml +++ b/app/src/main/res/layout/item_recent_chapter.xml @@ -5,6 +5,7 @@ android:layout_height="?android:attr/listPreferredItemHeight" android:background="@drawable/selector_chapter_light"> + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/chapter_recent.xml b/app/src/main/res/menu/chapter_recent.xml new file mode 100644 index 0000000000..ec9883b9f7 --- /dev/null +++ b/app/src/main/res/menu/chapter_recent.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/build.gradle b/build.gradle index 11eb25d59a..e833b0f878 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.0.0-beta2' + classpath 'com.android.tools.build:gradle:2.0.0-beta4' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' classpath 'me.tatarka:gradle-retrolambda:3.2.4' classpath 'com.github.ben-manes:gradle-versions-plugin:0.12.0'