- Declare RxJava as dependency
- Add a folder chooser for downloads
- Fix a force close when updating library
- Enable ACRA and add a setting to send crash reports
- Manga class now uses the default get resolver
- Other minor changes
This commit is contained in:
inorichi
2015-12-08 19:39:57 +01:00
parent 65a2345bf7
commit e1b68f66f2
18 changed files with 217 additions and 133 deletions

View File

@@ -27,6 +27,7 @@ import eu.kanade.mangafeed.data.database.models.ChapterSyncStorIOSQLiteGetResolv
import eu.kanade.mangafeed.data.database.models.ChapterSyncStorIOSQLitePutResolver;
import eu.kanade.mangafeed.data.database.models.Manga;
import eu.kanade.mangafeed.data.database.models.MangaStorIOSQLiteDeleteResolver;
import eu.kanade.mangafeed.data.database.models.MangaStorIOSQLiteGetResolver;
import eu.kanade.mangafeed.data.database.models.MangaStorIOSQLitePutResolver;
import eu.kanade.mangafeed.data.database.resolvers.MangaWithUnreadGetResolver;
import eu.kanade.mangafeed.data.database.tables.ChapterSyncTable;
@@ -46,7 +47,7 @@ public class DatabaseHelper {
.sqliteOpenHelper(new DbOpenHelper(context))
.addTypeMapping(Manga.class, SQLiteTypeMapping.<Manga>builder()
.putResolver(new MangaStorIOSQLitePutResolver())
.getResolver(new MangaWithUnreadGetResolver())
.getResolver(new MangaStorIOSQLiteGetResolver())
.deleteResolver(new MangaStorIOSQLiteDeleteResolver())
.build())
.addTypeMapping(Chapter.class, SQLiteTypeMapping.<Chapter>builder()
@@ -94,6 +95,7 @@ public class DatabaseHelper {
.query(favoriteMangasWithUnreadQuery)
.observesTables(MangaTable.TABLE, ChapterTable.TABLE)
.build())
.withGetResolver(MangaWithUnreadGetResolver.instance)
.prepare();
}

View File

@@ -9,12 +9,14 @@ import eu.kanade.mangafeed.data.database.tables.MangaTable;
public class MangaWithUnreadGetResolver extends MangaStorIOSQLiteGetResolver {
public static final MangaWithUnreadGetResolver instance = new MangaWithUnreadGetResolver();
@Override
@NonNull
public Manga mapFromCursor(@NonNull Cursor cursor) {
Manga manga = super.mapFromCursor(cursor);
int unreadColumn = cursor.getColumnIndex(MangaTable.COLUMN_UNREAD);
if (unreadColumn != -1)
manga.unread = cursor.getInt(unreadColumn);
manga.unread = cursor.getInt(unreadColumn);
return manga;
}

View File

@@ -2,15 +2,17 @@ package eu.kanade.mangafeed.data.preference;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Environment;
import android.preference.PreferenceManager;
import com.f2prateek.rx.preferences.Preference;
import com.f2prateek.rx.preferences.RxSharedPreferences;
import java.io.File;
import eu.kanade.mangafeed.R;
import eu.kanade.mangafeed.data.chaptersync.BaseChapterSync;
import eu.kanade.mangafeed.data.source.base.Source;
import eu.kanade.mangafeed.util.DiskUtils;
import rx.Observable;
public class PreferencesHelper {
@@ -24,12 +26,21 @@ public class PreferencesHelper {
private static final String CHAPTERSYNC_ACCOUNT_USERNAME = "pref_chaptersync_username_";
private static final String CHAPTERSYNC_ACCOUNT_PASSWORD = "pref_chaptersync_password_";
private File defaultDownloadsDir;
public PreferencesHelper(Context context) {
this.context = context;
PreferenceManager.setDefaultValues(context, R.xml.pref_reader, false);
prefs = PreferenceManager.getDefaultSharedPreferences(context);
rxPrefs = RxSharedPreferences.create(prefs);
defaultDownloadsDir = new File(Environment.getExternalStorageDirectory() +
File.separator + context.getString(R.string.app_name), "downloads");
// Create default directory
if (getDownloadsDirectory().equals(defaultDownloadsDir.getAbsolutePath()))
defaultDownloadsDir.mkdirs();
}
private String getKey(int keyResource) {
@@ -108,7 +119,11 @@ public class PreferencesHelper {
public String getDownloadsDirectory() {
return prefs.getString(getKey(R.string.pref_download_directory_key),
DiskUtils.getStorageDirectories(context)[0]);
defaultDownloadsDir.getAbsolutePath());
}
public void setDownloadsDirectory(String path) {
prefs.edit().putString(getKey(R.string.pref_download_directory_key), path).apply();
}
public int getDownloadThreads() {

View File

@@ -32,7 +32,6 @@ public class LibraryUpdateService extends Service {
@Inject SourceManager sourceManager;
private Subscription updateSubscription;
private Subscription favoriteMangasSubscription;
public static final int UPDATE_NOTIFICATION_ID = 1;
@@ -68,14 +67,9 @@ public class LibraryUpdateService extends Service {
return START_NOT_STICKY;
}
if (favoriteMangasSubscription != null && !favoriteMangasSubscription.isUnsubscribed())
favoriteMangasSubscription.unsubscribe();
favoriteMangasSubscription = db.getFavoriteMangas().createObservable()
Observable.fromCallable(() -> db.getFavoriteMangas().executeAsBlocking())
.subscribe(mangas -> {
// Don't receive further db updates
favoriteMangasSubscription.unsubscribe();
this.startUpdating(mangas, startId);
startUpdating(mangas, startId);
});
return START_STICKY;