浏览代码

multiple chapter download from manga view

Kevin Richter 9 年之前
父节点
当前提交
6c069ad87b

+ 34 - 11
app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChaptersFragment.java

@@ -8,21 +8,12 @@ import android.support.v4.widget.SwipeRefreshLayout;
 import android.support.v7.view.ActionMode;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
-import android.view.LayoutInflater;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.ViewGroup;
+import android.view.*;
 import android.widget.CheckBox;
 import android.widget.ImageView;
-
-import com.afollestad.materialdialogs.MaterialDialog;
-
-import java.util.List;
-
 import butterknife.Bind;
 import butterknife.ButterKnife;
+import com.afollestad.materialdialogs.MaterialDialog;
 import eu.kanade.tachiyomi.R;
 import eu.kanade.tachiyomi.data.database.models.Chapter;
 import eu.kanade.tachiyomi.data.database.models.Manga;
@@ -40,6 +31,9 @@ import rx.Subscription;
 import rx.android.schedulers.AndroidSchedulers;
 import rx.schedulers.Schedulers;
 
+import java.util.ArrayList;
+import java.util.List;
+
 @RequiresPresenter(ChaptersPresenter.class)
 public class ChaptersFragment extends BaseRxFragment<ChaptersPresenter> implements
         ActionMode.Callback, FlexibleViewHolder.OnListItemClickListener {
@@ -110,6 +104,9 @@ public class ChaptersFragment extends BaseRxFragment<ChaptersPresenter> implemen
             case R.id.action_display_mode:
                 showDisplayModeDialog();
                 return true;
+            case R.id.manga_download:
+                showDownloadDialog();
+                return true;
         }
         return false;
     }
@@ -202,6 +199,32 @@ public class ChaptersFragment extends BaseRxFragment<ChaptersPresenter> implemen
                 .show();
     }
 
+    private void showDownloadDialog() {
+
+        // Get available modes
+        String[] modes = {getString(R.string.download_all), getString(R.string.download_unread)};
+
+        new MaterialDialog.Builder(getActivity())
+                .title(R.string.manga_download)
+                .items(modes)
+                .itemsCallback((dialog, view, i, charSequence) -> {
+                    List<Chapter> chapters = new ArrayList<>();
+
+                    for(Chapter chapter : getPresenter().getChapters()) {
+                        if(!chapter.isDownloaded()) {
+                            if(i == 0 || (i == 1 && !chapter.read)) {
+                                chapters.add(chapter);
+                            }
+                        }
+                    }
+                    if(chapters.size() > 0) {
+                        onDownload(Observable.from(chapters));
+                    }
+                })
+                .negativeText(R.string.button_cancel)
+                .show();
+    }
+
     private void observeChapterDownloadProgress() {
         downloadProgressSubscription = getPresenter().getDownloadProgressObs()
                 .subscribe(this::onDownloadProgressChange,

+ 5 - 0
app/src/main/res/menu/chapters.xml

@@ -6,4 +6,9 @@
         android:title="@string/action_display_mode"
         android:id="@+id/action_display_mode"
         app:showAsAction="never" />
+
+    <item
+        android:title="@string/manga_download"
+        android:id="@+id/manga_download"
+        app:showAsAction="never" />
 </menu>

+ 3 - 0
app/src/main/res/values/strings.xml

@@ -179,6 +179,9 @@
     <string name="fetch_chapters_error">Error while fetching chapters</string>
     <string name="show_title">Show title</string>
     <string name="show_chapter_number">Show chapter number</string>
+    <string name="manga_download">Download</string>
+    <string name="download_all">Download all</string>
+    <string name="download_unread">Download unread</string>
 
     <!-- MyAnimeList fragment -->
     <string name="reading">Reading</string>