Bump dependencies. Minor changes to download manager

This commit is contained in:
inorichi 2016-01-16 18:10:05 +01:00
parent 936d5e46eb
commit 67c9420606
5 changed files with 18 additions and 24 deletions

View file

@ -112,7 +112,7 @@ dependencies {
provided "frankiesardo:icepick-processor:$ICEPICK_VERSION" provided "frankiesardo:icepick-processor:$ICEPICK_VERSION"
compile 'com.github.dmytrodanylyk.android-process-button:library:1.0.4' compile 'com.github.dmytrodanylyk.android-process-button:library:1.0.4'
compile 'eu.davidea:flexible-adapter:4.2.0@aar' compile 'eu.davidea:flexible-adapter:4.2.0@aar'
compile 'com.nononsenseapps:filepicker:2.5.0' compile 'com.nononsenseapps:filepicker:2.5.1'
compile 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1' compile 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1'
compile 'com.github.pwittchen:reactivenetwork:0.1.5' compile 'com.github.pwittchen:reactivenetwork:0.1.5'
@ -121,7 +121,7 @@ dependencies {
apt "com.pushtorefresh.storio:sqlite-annotations-processor:$STORIO_VERSION" apt "com.pushtorefresh.storio:sqlite-annotations-processor:$STORIO_VERSION"
provided 'org.glassfish:javax.annotation:10.0-b28' provided 'org.glassfish:javax.annotation:10.0-b28'
compile('com.mikepenz:materialdrawer:4.6.1@aar') { compile('com.mikepenz:materialdrawer:4.6.4@aar') {
transitive = true transitive = true
} }
compile('com.github.afollestad.material-dialogs:core:0.8.5.3@aar') { compile('com.github.afollestad.material-dialogs:core:0.8.5.3@aar') {

View file

@ -13,6 +13,7 @@ import java.io.FileOutputStream;
import java.io.FileReader; import java.io.FileReader;
import java.io.IOException; import java.io.IOException;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import eu.kanade.tachiyomi.data.database.models.Chapter; import eu.kanade.tachiyomi.data.database.models.Chapter;
@ -42,10 +43,8 @@ public class DownloadManager {
private Gson gson; private Gson gson;
private PublishSubject<Download> downloadsQueueSubject; private PublishSubject<Download> downloadsQueueSubject;
private BehaviorSubject<Integer> threadsNumber;
private BehaviorSubject<Boolean> runningSubject; private BehaviorSubject<Boolean> runningSubject;
private Subscription downloadsSubscription; private Subscription downloadsSubscription;
private Subscription threadsNumberSubscription;
private DownloadQueue queue; private DownloadQueue queue;
private volatile boolean isRunning; private volatile boolean isRunning;
@ -61,7 +60,6 @@ public class DownloadManager {
queue = new DownloadQueue(); queue = new DownloadQueue();
downloadsQueueSubject = PublishSubject.create(); downloadsQueueSubject = PublishSubject.create();
threadsNumber = BehaviorSubject.create();
runningSubject = BehaviorSubject.create(); runningSubject = BehaviorSubject.create();
} }
@ -69,14 +67,8 @@ public class DownloadManager {
if (downloadsSubscription != null && !downloadsSubscription.isUnsubscribed()) if (downloadsSubscription != null && !downloadsSubscription.isUnsubscribed())
downloadsSubscription.unsubscribe(); downloadsSubscription.unsubscribe();
if (threadsNumberSubscription != null && !threadsNumberSubscription.isUnsubscribed())
threadsNumberSubscription.unsubscribe();
threadsNumberSubscription = preferences.downloadThreads().asObservable()
.subscribe(threadsNumber::onNext);
downloadsSubscription = downloadsQueueSubject downloadsSubscription = downloadsQueueSubject
.lift(new DynamicConcurrentMergeOperator<>(this::downloadChapter, threadsNumber)) .flatMap(this::downloadChapter, preferences.downloadThreads())
.onBackpressureBuffer() .onBackpressureBuffer()
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.map(download -> areAllDownloadsFinished()) .map(download -> areAllDownloadsFinished())
@ -102,11 +94,6 @@ public class DownloadManager {
downloadsSubscription.unsubscribe(); downloadsSubscription.unsubscribe();
downloadsSubscription = null; downloadsSubscription = null;
} }
if (threadsNumberSubscription != null && !threadsNumberSubscription.isUnsubscribed()) {
threadsNumberSubscription.unsubscribe();
threadsNumberSubscription = null;
}
} }
// Create a download object for every chapter in the event and add them to the downloads queue // Create a download object for every chapter in the event and add them to the downloads queue
@ -114,7 +101,14 @@ public class DownloadManager {
final Manga manga = event.getManga(); final Manga manga = event.getManga();
final Source source = sourceManager.get(manga.source); final Source source = sourceManager.get(manga.source);
// Used to avoid downloading chapters with the same name
final List<String> addedChapters = new ArrayList<>();
for (Chapter chapter : event.getChapters()) { for (Chapter chapter : event.getChapters()) {
if (addedChapters.contains(chapter.name))
continue;
addedChapters.add(chapter.name);
Download download = new Download(source, manga, chapter); Download download = new Download(source, manga, chapter);
if (!prepareDownload(download)) { if (!prepareDownload(download)) {
@ -362,7 +356,7 @@ public class DownloadManager {
File.separator + File.separator +
manga.title.replaceAll("[^\\sa-zA-Z0-9.-]", "_") + manga.title.replaceAll("[^\\sa-zA-Z0-9.-]", "_") +
File.separator + File.separator +
chapter.name.replaceAll("[^\\sa-zA-Z0-9.-]", "_") + " (" + chapter.id + ")"; chapter.name.replaceAll("[^\\sa-zA-Z0-9.-]", "_");
return new File(preferences.getDownloadsDirectory(), chapterRelativePath); return new File(preferences.getDownloadsDirectory(), chapterRelativePath);
} }

View file

@ -85,8 +85,7 @@ public class PreferencesHelper {
} }
public int getDefaultViewer() { public int getDefaultViewer() {
// TODO use IntListPreference return prefs.getInt(getKey(R.string.pref_default_viewer_key), 1);
return Integer.parseInt(prefs.getString(getKey(R.string.pref_default_viewer_key), "1"));
} }
public Preference<Integer> portraitColumns() { public Preference<Integer> portraitColumns() {
@ -156,8 +155,8 @@ public class PreferencesHelper {
prefs.edit().putString(getKey(R.string.pref_download_directory_key), path).apply(); prefs.edit().putString(getKey(R.string.pref_download_directory_key), path).apply();
} }
public Preference<Integer> downloadThreads() { public int downloadThreads() {
return rxPrefs.getInteger(getKey(R.string.pref_download_slots_key), 1); return prefs.getInt(getKey(R.string.pref_download_slots_key), 1);
} }
public boolean downloadOnlyOverWifi() { public boolean downloadOnlyOverWifi() {

View file

@ -21,7 +21,8 @@
android:key="@string/pref_custom_brightness_key" android:key="@string/pref_custom_brightness_key"
android:defaultValue="false" /> android:defaultValue="false" />
<ListPreference android:title="@string/pref_viewer_type" <eu.kanade.tachiyomi.widget.preference.IntListPreference
android:title="@string/pref_viewer_type"
android:key="@string/pref_default_viewer_key" android:key="@string/pref_default_viewer_key"
android:entries="@array/viewers" android:entries="@array/viewers"
android:entryValues="@array/viewers_values" android:entryValues="@array/viewers_values"

View file

@ -10,7 +10,7 @@ buildscript {
classpath 'com.jakewharton.sdkmanager:gradle-plugin:0.12.+' classpath 'com.jakewharton.sdkmanager:gradle-plugin:0.12.+'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
classpath 'me.tatarka:gradle-retrolambda:3.2.4' classpath 'me.tatarka:gradle-retrolambda:3.2.4'
classpath 'com.github.ben-manes:gradle-versions-plugin:0.11.3' classpath 'com.github.ben-manes:gradle-versions-plugin:0.12.0'
// NOTE: Do not place your application dependencies here; they belong // NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files // in the individual module build.gradle files
} }