Option to configure tracked manga

pull/26/head
Koitharu 6 years ago
parent 693f568b8e
commit 55fc1aeadd

@ -87,6 +87,11 @@ class AppSettings private constructor(resources: Resources, private val prefs: S
false false
) )
val trackSources by StringSetPreferenceDelegate(
resources.getString(R.string.key_track_sources),
setOf(TRACK_FAVOURITES, TRACK_HISTORY)
)
private var sourcesOrderStr by NullableStringPreferenceDelegate(resources.getString(R.string.key_sources_order)) private var sourcesOrderStr by NullableStringPreferenceDelegate(resources.getString(R.string.key_sources_order))
var sourcesOrder: List<Int> var sourcesOrder: List<Int>
@ -127,5 +132,8 @@ class AppSettings private constructor(resources: Resources, private val prefs: S
const val PAGE_SWITCH_TAPS = "taps" const val PAGE_SWITCH_TAPS = "taps"
const val PAGE_SWITCH_VOLUME_KEYS = "volume" const val PAGE_SWITCH_VOLUME_KEYS = "volume"
const val TRACK_HISTORY = "history"
const val TRACK_FAVOURITES = "favourites"
} }
} }

@ -19,17 +19,23 @@ class TrackingRepository : KoinComponent {
return entity.newChapters return entity.newChapters
} }
suspend fun getAllTracks(): List<MangaTracking> { suspend fun getAllTracks(useFavourites: Boolean, useHistory: Boolean): List<MangaTracking> {
val favourites = db.favouritesDao.findAllManga() val mangaList = ArrayList<Manga>()
val history = db.historyDao.findAllManga() if (useFavourites) {
val mangas = (favourites + history).distinctBy { it.id } db.favouritesDao.findAllManga().mapTo(mangaList) { it.toManga() }
val tracks = db.tracksDao.findAll().groupBy { it.mangaId } }
return mangas.mapNotNull { me -> if (useHistory) {
var manga = me.toManga() db.historyDao.findAllManga().mapTo(mangaList) { it.toManga() }
if (manga.source == MangaSource.LOCAL) {
manga = MangaProviderFactory.createLocal().getRemoteManga(manga)
?: return@mapNotNull null
} }
val tracks = db.tracksDao.findAll().groupBy { it.mangaId }
return mangaList
.distinctBy { it.id }
.mapNotNull { me ->
val manga = if (me.source == MangaSource.LOCAL) {
MangaProviderFactory.createLocal().getRemoteManga(me)
} else {
me
} ?: return@mapNotNull null
val track = tracks[manga.id]?.singleOrNull() val track = tracks[manga.id]?.singleOrNull()
MangaTracking( MangaTracking(
manga = manga, manga = manga,

@ -41,6 +41,8 @@ class MainSettingsFragment : BasePreferenceFragment(R.string.settings),
} }
findPreference<MultiSelectListPreference>(R.string.key_reader_switchers)?.summaryProvider = findPreference<MultiSelectListPreference>(R.string.key_reader_switchers)?.summaryProvider =
MultiSummaryProvider(R.string.gestures_only) MultiSummaryProvider(R.string.gestures_only)
findPreference<MultiSelectListPreference>(R.string.key_track_sources)?.summaryProvider =
MultiSummaryProvider(R.string.dont_check)
findPreference<Preference>(R.string.key_app_update_auto)?.run { findPreference<Preference>(R.string.key_app_update_auto)?.run {
isVisible = AppUpdateChecker.isUpdateSupported(context) isVisible = AppUpdateChecker.isUpdateSupported(context)
} }
@ -105,7 +107,7 @@ class MainSettingsFragment : BasePreferenceFragment(R.string.settings),
} }
getString(R.string.key_local_storage) -> { getString(R.string.key_local_storage) -> {
val ctx = context ?: return false val ctx = context ?: return false
StorageSelectDialog.Builder(ctx, settings.getStorageDir(ctx),this) StorageSelectDialog.Builder(ctx, settings.getStorageDir(ctx), this)
.setTitle(preference.title) .setTitle(preference.title)
.setNegativeButton(android.R.string.cancel) .setNegativeButton(android.R.string.cancel)
.create() .create()

@ -36,9 +36,16 @@ class TrackWorker(context: Context, workerParams: WorkerParameters) :
private val settings by inject<AppSettings>() private val settings by inject<AppSettings>()
override suspend fun doWork(): Result = withContext(Dispatchers.IO) { override suspend fun doWork(): Result = withContext(Dispatchers.Default) {
val trackSources = settings.trackSources
if (trackSources.isEmpty()) {
return@withContext Result.success()
}
val repo = TrackingRepository() val repo = TrackingRepository()
val tracks = repo.getAllTracks() val tracks = repo.getAllTracks(
useFavourites = AppSettings.TRACK_FAVOURITES in trackSources,
useHistory = AppSettings.TRACK_HISTORY in trackSources
)
if (tracks.isEmpty()) { if (tracks.isEmpty()) {
return@withContext Result.success() return@withContext Result.success()
} }

@ -145,4 +145,6 @@
<string name="rotate_screen">Повернуть экран</string> <string name="rotate_screen">Повернуть экран</string>
<string name="update">Обновить</string> <string name="update">Обновить</string>
<string name="feed_will_update_soon">Обновление скоро начнётся</string> <string name="feed_will_update_soon">Обновление скоро начнётся</string>
<string name="track_sources">Проверять обновления манги</string>
<string name="dont_check">Не проверять</string>
</resources> </resources>

@ -9,4 +9,8 @@
<item>@string/taps_on_edges</item> <item>@string/taps_on_edges</item>
<item>@string/volume_buttons</item> <item>@string/volume_buttons</item>
</string-array> </string-array>
<string-array name="track_sources">
<item>@string/favourites</item>
<item>@string/history</item>
</string-array>
</resources> </resources>

@ -14,6 +14,7 @@
<string name="key_remote_sources">remote_sources</string> <string name="key_remote_sources">remote_sources</string>
<string name="key_local_storage">local_storage</string> <string name="key_local_storage">local_storage</string>
<string name="key_reader_switchers">reader_switchers</string> <string name="key_reader_switchers">reader_switchers</string>
<string name="key_track_sources">track_sources</string>
<string name="key_app_update">app_update</string> <string name="key_app_update">app_update</string>
<string name="key_app_update_auto">app_update_auto</string> <string name="key_app_update_auto">app_update_auto</string>
<string name="key_tracker_notifications">tracker_notifications</string> <string name="key_tracker_notifications">tracker_notifications</string>
@ -37,4 +38,11 @@
<string-array name="values_reader_switchers_default"> <string-array name="values_reader_switchers_default">
<item>taps</item> <item>taps</item>
</string-array> </string-array>
<string-array name="values_track_sources">
<item>favourites</item>
<item>history</item>
</string-array>
<string-array name="values_track_sources_default">
<item>favourites</item>
</string-array>
</resources> </resources>

@ -146,4 +146,6 @@
<string name="rotate_screen">Rotate screen</string> <string name="rotate_screen">Rotate screen</string>
<string name="update">Update</string> <string name="update">Update</string>
<string name="feed_will_update_soon">Feed update will start soon</string> <string name="feed_will_update_soon">Feed update will start soon</string>
<string name="track_sources">Check updates for manga</string>
<string name="dont_check">Don`t check</string>
</resources> </resources>

@ -68,14 +68,13 @@
app:allowDividerAbove="true" app:allowDividerAbove="true"
app:iconSpaceReserved="false"> app:iconSpaceReserved="false">
<SwitchPreference <MultiSelectListPreference
android:defaultValue="true" android:defaultValue="@array/values_track_sources_default"
android:key="@string/key_app_update_auto" android:entries="@array/track_sources"
android:summary="@string/show_notification_app_update" android:entryValues="@array/values_track_sources"
android:title="@string/application_update" android:key="@string/key_track_sources"
app:iconSpaceReserved="false" android:title="@string/track_sources"
app:isPreferenceVisible="false" app:iconSpaceReserved="false" />
tools:isPreferenceVisible="true" />
<SwitchPreference <SwitchPreference
android:defaultValue="true" android:defaultValue="true"
@ -90,6 +89,15 @@
android:title="@string/notifications_settings" android:title="@string/notifications_settings"
app:iconSpaceReserved="false" /> app:iconSpaceReserved="false" />
<SwitchPreference
android:defaultValue="true"
android:key="@string/key_app_update_auto"
android:summary="@string/show_notification_app_update"
android:title="@string/application_update"
app:iconSpaceReserved="false"
app:isPreferenceVisible="false"
tools:isPreferenceVisible="true" />
</PreferenceCategory> </PreferenceCategory>
</PreferenceScreen> </PreferenceScreen>
Loading…
Cancel
Save