From 0f5cf6a748a6a38e8e5844a6c6d5b4ef8ec637c1 Mon Sep 17 00:00:00 2001 From: inorichi Date: Tue, 1 Dec 2015 15:47:34 +0100 Subject: [PATCH] Simplify chapter's popup logic --- .../ui/manga/chapter/ChaptersAdapter.java | 2 +- .../ui/manga/chapter/ChaptersFragment.java | 53 +++++++++++++------ .../ui/manga/chapter/ChaptersHolder.java | 26 ++++----- 3 files changed, 48 insertions(+), 33 deletions(-) diff --git a/app/src/main/java/eu/kanade/mangafeed/ui/manga/chapter/ChaptersAdapter.java b/app/src/main/java/eu/kanade/mangafeed/ui/manga/chapter/ChaptersAdapter.java index a08cabaaaf..50fc4f9e7a 100644 --- a/app/src/main/java/eu/kanade/mangafeed/ui/manga/chapter/ChaptersAdapter.java +++ b/app/src/main/java/eu/kanade/mangafeed/ui/manga/chapter/ChaptersAdapter.java @@ -48,7 +48,7 @@ public class ChaptersAdapter extends FlexibleAdapter { void onListItemLongClick(int position); } - public ChaptersFragment getMangaChaptersFragment() { + public ChaptersFragment getChaptersFragment() { return (ChaptersFragment) fragment; } } diff --git a/app/src/main/java/eu/kanade/mangafeed/ui/manga/chapter/ChaptersFragment.java b/app/src/main/java/eu/kanade/mangafeed/ui/manga/chapter/ChaptersFragment.java index e3b79920ea..1563d86d71 100644 --- a/app/src/main/java/eu/kanade/mangafeed/ui/manga/chapter/ChaptersFragment.java +++ b/app/src/main/java/eu/kanade/mangafeed/ui/manga/chapter/ChaptersFragment.java @@ -6,7 +6,6 @@ import android.support.v4.content.ContextCompat; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.view.ActionMode; import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.PopupMenu; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.view.LayoutInflater; @@ -24,11 +23,11 @@ import butterknife.ButterKnife; import eu.kanade.mangafeed.R; import eu.kanade.mangafeed.data.database.models.Chapter; import eu.kanade.mangafeed.data.download.DownloadService; +import eu.kanade.mangafeed.ui.base.activity.BaseActivity; +import eu.kanade.mangafeed.ui.base.fragment.BaseRxFragment; import eu.kanade.mangafeed.ui.decoration.DividerItemDecoration; import eu.kanade.mangafeed.ui.manga.MangaActivity; import eu.kanade.mangafeed.ui.reader.ReaderActivity; -import eu.kanade.mangafeed.ui.base.activity.BaseActivity; -import eu.kanade.mangafeed.ui.base.fragment.BaseRxFragment; import nucleus.factory.RequiresPresenter; import rx.Observable; @@ -149,23 +148,15 @@ public class ChaptersFragment extends BaseRxFragment implemen public boolean onActionItemClicked(ActionMode mode, MenuItem item) { switch (item.getItemId()) { case R.id.action_select_all: - adapter.selectAll(); - return true; + return onSelectAll(); case R.id.action_mark_as_read: - getPresenter().markChaptersRead(getSelectedChapters(), true); - return true; + return onMarkAsRead(getSelectedChapters()); case R.id.action_mark_as_unread: - getPresenter().markChaptersRead(getSelectedChapters(), false); - return true; + return onMarkAsUnread(getSelectedChapters()); case R.id.action_download: - DownloadService.start(getActivity()); - getPresenter().downloadChapters(getSelectedChapters()); - closeActionMode(); - return true; + return onDownload(getSelectedChapters()); case R.id.action_delete: - getPresenter().deleteChapters(getSelectedChapters()); - closeActionMode(); - return true; + return onDelete(getSelectedChapters()); } return false; } @@ -187,6 +178,36 @@ public class ChaptersFragment extends BaseRxFragment implemen actionMode.finish(); } + protected boolean onSelectAll() { + adapter.selectAll(); + setContextTitle(adapter.getSelectedItemCount()); + actionMode.invalidate(); + return true; + } + + protected boolean onMarkAsRead(Observable chapters) { + getPresenter().markChaptersRead(chapters, true); + return true; + } + + protected boolean onMarkAsUnread(Observable chapters) { + getPresenter().markChaptersRead(chapters, false); + return true; + } + + protected boolean onDownload(Observable chapters) { + DownloadService.start(getActivity()); + getPresenter().downloadChapters(chapters); + closeActionMode(); + return true; + } + + protected boolean onDelete(Observable chapters) { + getPresenter().deleteChapters(chapters); + closeActionMode(); + return true; + } + @Override public boolean onListItemClick(int position) { if (actionMode != null && adapter.getMode() == ChaptersAdapter.MODE_MULTI) { diff --git a/app/src/main/java/eu/kanade/mangafeed/ui/manga/chapter/ChaptersHolder.java b/app/src/main/java/eu/kanade/mangafeed/ui/manga/chapter/ChaptersHolder.java index 1e5a983de1..3b2e1b7ff6 100644 --- a/app/src/main/java/eu/kanade/mangafeed/ui/manga/chapter/ChaptersHolder.java +++ b/app/src/main/java/eu/kanade/mangafeed/ui/manga/chapter/ChaptersHolder.java @@ -2,11 +2,9 @@ package eu.kanade.mangafeed.ui.manga.chapter; import android.content.Context; import android.support.v4.content.ContextCompat; -import android.support.v7.widget.PopupMenu; import android.support.v7.widget.RecyclerView; -import android.view.MenuItem; import android.view.View; -import android.widget.ImageView; +import android.widget.PopupMenu; import android.widget.RelativeLayout; import android.widget.TextView; @@ -17,7 +15,6 @@ import butterknife.Bind; import butterknife.ButterKnife; import eu.kanade.mangafeed.R; import eu.kanade.mangafeed.data.database.models.Chapter; -import eu.kanade.mangafeed.data.download.DownloadService; import rx.Observable; public class ChaptersHolder extends RecyclerView.ViewHolder implements @@ -58,14 +55,14 @@ public class ChaptersHolder extends RecyclerView.ViewHolder implements title.setTextColor(ContextCompat.getColor(context, R.color.primary_text)); } - if (chapter.last_page_read > 0 && !chapter.read) { + if (!chapter.read && chapter.last_page_read > 0) { pages.setText(context.getString(R.string.chapter_progress, chapter.last_page_read + 1)); } else { pages.setText(""); } if (chapter.downloaded == Chapter.UNKNOWN) { - adapter.getMangaChaptersFragment().getPresenter().checkIsChapterDownloaded(chapter); + adapter.getChaptersFragment().getPresenter().checkIsChapterDownloaded(chapter); } if (chapter.downloaded == Chapter.DOWNLOADED) { downloadText.setVisibility(View.VISIBLE); @@ -97,27 +94,24 @@ public class ChaptersHolder extends RecyclerView.ViewHolder implements private void showPopupMenu(View view) { // Create a PopupMenu, giving it the clicked view for an anchor - PopupMenu popup = new PopupMenu(adapter.getMangaChaptersFragment().getActivity(), view); + PopupMenu popup = new PopupMenu(adapter.getChaptersFragment().getActivity(), view); // Inflate our menu resource into the PopupMenu's Menu popup.getMenuInflater().inflate(R.menu.chapter_single, popup.getMenu()); // Set a listener so we are notified if a menu item is clicked popup.setOnMenuItemClickListener(menuItem -> { + Observable chapter = Observable.just(item); + switch (menuItem.getItemId()) { case R.id.action_mark_as_read: - adapter.getMangaChaptersFragment().getPresenter().markChaptersRead(Observable.just(item), true); - return true; + return adapter.getChaptersFragment().onMarkAsRead(chapter); case R.id.action_mark_as_unread: - adapter.getMangaChaptersFragment().getPresenter().markChaptersRead(Observable.just(item), false); - return true; + return adapter.getChaptersFragment().onMarkAsUnread(chapter); case R.id.action_download: - DownloadService.start(adapter.getMangaChaptersFragment().getActivity()); - adapter.getMangaChaptersFragment().getPresenter().downloadChapters(Observable.just(item)); - return true; + return adapter.getChaptersFragment().onDownload(chapter); case R.id.action_delete: - adapter.getMangaChaptersFragment().getPresenter().deleteChapters(Observable.just(item)); - return true; + return adapter.getChaptersFragment().onDelete(chapter); } return false; });