mirror of
https://github.com/tachiyomiorg/tachiyomi.git
synced 2024-11-09 19:55:11 +01:00
Removed Downloaded fonts + using private scope for manga details presenter
This commit is contained in:
parent
9a044e9037
commit
e05c374d2c
@ -148,10 +148,6 @@
|
||||
android:name=".data.backup.BackupRestoreService"
|
||||
android:exported="false"/>
|
||||
|
||||
<meta-data
|
||||
android:name="preloaded_fonts"
|
||||
android:resource="@array/preloaded_fonts" />
|
||||
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
|
@ -163,8 +163,7 @@ class MangaDetailsController : BaseController,
|
||||
*/
|
||||
private var actionMode: ActionMode? = null
|
||||
|
||||
// Hold a reference to the current animator,
|
||||
// so that it can be canceled mid-way.
|
||||
// Hold a reference to the current animator, so that it can be canceled mid-way.
|
||||
private var currentAnimator: Animator? = null
|
||||
|
||||
var headerHeight = 0
|
||||
@ -206,7 +205,7 @@ class MangaDetailsController : BaseController,
|
||||
(recycler.findViewHolderForAdapterPosition(0) as? MangaHeaderHolder)
|
||||
?.setTopHeight(headerHeight)
|
||||
fast_scroller?.updateLayoutParams<ViewGroup.MarginLayoutParams> {
|
||||
topMargin = appbarHeight + insets.systemWindowInsetTop
|
||||
topMargin = headerHeight
|
||||
bottomMargin = insets.systemWindowInsetBottom
|
||||
}
|
||||
v.updatePaddingRelative(bottom = insets.systemWindowInsetBottom)
|
||||
@ -254,16 +253,12 @@ class MangaDetailsController : BaseController,
|
||||
setPaletteColor()
|
||||
|
||||
if (manga?.initialized != true)
|
||||
swipe_refresh.post {
|
||||
swipe_refresh.isRefreshing = true
|
||||
swipe_refresh.post { swipe_refresh.isRefreshing = true }
|
||||
|
||||
swipe_refresh.setOnRefreshListener { presenter.refreshAll() }
|
||||
}
|
||||
|
||||
swipe_refresh.setOnRefreshListener {
|
||||
presenter.refreshAll()
|
||||
}
|
||||
}
|
||||
|
||||
private fun setPaletteColor() {
|
||||
fun setPaletteColor() {
|
||||
val view = view ?: return
|
||||
GlideApp.with(view.context).load(manga)
|
||||
.diskCacheStrategy(DiskCacheStrategy.AUTOMATIC)
|
||||
@ -454,7 +449,6 @@ class MangaDetailsController : BaseController,
|
||||
}
|
||||
|
||||
private fun bookmarkChapters(chapters: List<ChapterItem>, bookmarked: Boolean) {
|
||||
//destroyActionModeIfNeeded()
|
||||
presenter.bookmarkChapters(chapters, bookmarked)
|
||||
}
|
||||
|
||||
@ -469,12 +463,9 @@ class MangaDetailsController : BaseController,
|
||||
presenter.markChaptersRead(chapters, false)
|
||||
}
|
||||
|
||||
private fun openChapter(chapter: Chapter, hasAnimation: Boolean = false) {
|
||||
private fun openChapter(chapter: Chapter) {
|
||||
val activity = activity ?: return
|
||||
val intent = ReaderActivity.newIntent(activity, manga!!, chapter)
|
||||
if (hasAnimation) {
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION)
|
||||
}
|
||||
startActivity(intent)
|
||||
}
|
||||
|
||||
@ -1134,7 +1125,6 @@ class MangaDetailsController : BaseController,
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
const val UPDATE_EXTRA = "update"
|
||||
const val SMART_SEARCH_CONFIG_EXTRA = "smartSearchConfig"
|
||||
|
||||
|
@ -34,6 +34,7 @@ import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.cancel
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import uy.kohesive.injekt.Injekt
|
||||
@ -42,7 +43,6 @@ import java.io.File
|
||||
import java.io.FileOutputStream
|
||||
import java.io.OutputStream
|
||||
import java.util.Date
|
||||
import kotlin.coroutines.CoroutineContext
|
||||
|
||||
class MangaDetailsPresenter(private val controller: MangaDetailsController,
|
||||
val manga: Manga,
|
||||
@ -51,11 +51,10 @@ class MangaDetailsPresenter(private val controller: MangaDetailsController,
|
||||
private val coverCache: CoverCache = Injekt.get(),
|
||||
private val db: DatabaseHelper = Injekt.get(),
|
||||
private val downloadManager: DownloadManager = Injekt.get()):
|
||||
CoroutineScope,
|
||||
DownloadQueue.DownloadListener,
|
||||
LibraryServiceListener {
|
||||
|
||||
override var coroutineContext:CoroutineContext = Job() + Dispatchers.Default
|
||||
private var scope = CoroutineScope(Job() + Dispatchers.Default)
|
||||
|
||||
var isLockedFromSearch = false
|
||||
var hasRequested = false
|
||||
@ -93,10 +92,11 @@ class MangaDetailsPresenter(private val controller: MangaDetailsController,
|
||||
fun onDestroy() {
|
||||
downloadManager.removeListener(this)
|
||||
LibraryUpdateService.removeListener(this)
|
||||
scope.cancel()
|
||||
}
|
||||
|
||||
fun fetchChapters() {
|
||||
launch {
|
||||
scope.launch {
|
||||
getChapters()
|
||||
refreshTracking()
|
||||
withContext(Dispatchers.Main) { controller.updateChapters(chapters) }
|
||||
@ -142,7 +142,7 @@ class MangaDetailsPresenter(private val controller: MangaDetailsController,
|
||||
|
||||
override fun updateDownload(download: Download) {
|
||||
chapters.find { it.id == download.chapter.id }?.download = download
|
||||
launch(Dispatchers.Main) {
|
||||
scope.launch(Dispatchers.Main) {
|
||||
controller.updateChapterDownload(download)
|
||||
}
|
||||
}
|
||||
@ -318,7 +318,7 @@ class MangaDetailsPresenter(private val controller: MangaDetailsController,
|
||||
}
|
||||
|
||||
fun refreshAll() {
|
||||
launch {
|
||||
scope.launch {
|
||||
isLoading = true
|
||||
var mangaError: java.lang.Exception? = null
|
||||
var chapterError: java.lang.Exception? = null
|
||||
@ -346,8 +346,10 @@ class MangaDetailsPresenter(private val controller: MangaDetailsController,
|
||||
manga.copyFrom(networkManga)
|
||||
manga.initialized = true
|
||||
db.insertManga(manga).executeAsBlocking()
|
||||
if (thumbnailUrl != networkManga.thumbnail_url)
|
||||
if (thumbnailUrl != networkManga.thumbnail_url) {
|
||||
MangaImpl.setLastCoverFetch(manga.id!!, Date().time)
|
||||
withContext(Dispatchers.Main) { controller.setPaletteColor() }
|
||||
}
|
||||
}
|
||||
val finChapters = chapters.await()
|
||||
if (finChapters.isNotEmpty()) {
|
||||
@ -369,7 +371,7 @@ class MangaDetailsPresenter(private val controller: MangaDetailsController,
|
||||
hasRequested = true
|
||||
isLoading = true
|
||||
|
||||
launch(Dispatchers.IO) {
|
||||
scope.launch(Dispatchers.IO) {
|
||||
val chapters = try {
|
||||
source.fetchChapterList(manga).toBlocking().single()
|
||||
}
|
||||
@ -401,7 +403,7 @@ class MangaDetailsPresenter(private val controller: MangaDetailsController,
|
||||
* @param selectedChapters the list of chapters to bookmark.
|
||||
*/
|
||||
fun bookmarkChapters(selectedChapters: List<ChapterItem>, bookmarked: Boolean) {
|
||||
launch(Dispatchers.IO) {
|
||||
scope.launch(Dispatchers.IO) {
|
||||
selectedChapters.forEach {
|
||||
it.bookmark = bookmarked
|
||||
}
|
||||
@ -416,7 +418,7 @@ class MangaDetailsPresenter(private val controller: MangaDetailsController,
|
||||
* @param read whether to mark chapters as read or unread.
|
||||
*/
|
||||
fun markChaptersRead(selectedChapters: List<ChapterItem>, read: Boolean) {
|
||||
launch(Dispatchers.IO) {
|
||||
scope.launch(Dispatchers.IO) {
|
||||
selectedChapters.forEach {
|
||||
it.read = read
|
||||
if (!read) {
|
||||
@ -460,7 +462,7 @@ class MangaDetailsPresenter(private val controller: MangaDetailsController,
|
||||
}
|
||||
|
||||
private fun asyncUpdateMangaAndChapters(justChapters:Boolean = false) {
|
||||
launch {
|
||||
scope.launch {
|
||||
if (!justChapters)
|
||||
withContext(Dispatchers.IO) { db.updateFlags(manga).executeAsBlocking() }
|
||||
updateChapters()
|
||||
@ -550,7 +552,7 @@ class MangaDetailsPresenter(private val controller: MangaDetailsController,
|
||||
|
||||
val destDir = File(context.cacheDir, "shared_image")
|
||||
|
||||
launch(Dispatchers.IO) {
|
||||
scope.launch(Dispatchers.IO) {
|
||||
destDir.deleteRecursively()
|
||||
try {
|
||||
val image = saveImage(cover, destDir, manga)
|
||||
@ -669,9 +671,8 @@ class MangaDetailsPresenter(private val controller: MangaDetailsController,
|
||||
|
||||
|
||||
// Tracking
|
||||
|
||||
private fun fetchTrackings() {
|
||||
launch {
|
||||
scope.launch {
|
||||
trackList = loggedServices.map { service ->
|
||||
TrackItem(tracks.find { it.sync_id == service.id }, service)
|
||||
}
|
||||
@ -687,7 +688,7 @@ class MangaDetailsPresenter(private val controller: MangaDetailsController,
|
||||
}
|
||||
|
||||
fun refreshTrackers() {
|
||||
launch {
|
||||
scope.launch {
|
||||
val list = trackList.filter { it.track != null }.map { item ->
|
||||
withContext(Dispatchers.IO) {
|
||||
val trackItem = try {
|
||||
@ -709,7 +710,7 @@ class MangaDetailsPresenter(private val controller: MangaDetailsController,
|
||||
}
|
||||
|
||||
fun trackSearch(query: String, service: TrackService) {
|
||||
launch(Dispatchers.IO) {
|
||||
scope.launch(Dispatchers.IO) {
|
||||
val results = try {service.search(query) }
|
||||
catch (e: Exception) {
|
||||
withContext(Dispatchers.Main) { controller.trackSearchError(e) }
|
||||
@ -724,7 +725,7 @@ class MangaDetailsPresenter(private val controller: MangaDetailsController,
|
||||
if (item != null) {
|
||||
item.manga_id = manga.id!!
|
||||
|
||||
launch {
|
||||
scope.launch {
|
||||
val binding = try { service.bind(item) }
|
||||
catch (e: Exception) {
|
||||
trackError(e)
|
||||
@ -735,7 +736,7 @@ class MangaDetailsPresenter(private val controller: MangaDetailsController,
|
||||
refreshTracking()
|
||||
}
|
||||
} else {
|
||||
launch {
|
||||
scope.launch {
|
||||
withContext(Dispatchers.IO) { db.deleteTrackForManga(manga, service)
|
||||
.executeAsBlocking() }
|
||||
refreshTracking()
|
||||
@ -744,7 +745,7 @@ class MangaDetailsPresenter(private val controller: MangaDetailsController,
|
||||
}
|
||||
|
||||
private fun updateRemote(track: Track, service: TrackService) {
|
||||
launch {
|
||||
scope.launch {
|
||||
val binding = try { service.update(track) }
|
||||
catch (e: Exception) {
|
||||
trackError(e)
|
||||
@ -758,12 +759,12 @@ class MangaDetailsPresenter(private val controller: MangaDetailsController,
|
||||
}
|
||||
}
|
||||
|
||||
private suspend fun trackRefreshDone() {
|
||||
async(Dispatchers.Main) { controller.trackRefreshDone() }
|
||||
private fun trackRefreshDone() {
|
||||
scope.launch(Dispatchers.Main) { controller.trackRefreshDone() }
|
||||
}
|
||||
|
||||
private suspend fun trackError(error: Exception) {
|
||||
async(Dispatchers.Main) { controller.trackRefreshError(error) }
|
||||
private fun trackError(error: Exception) {
|
||||
scope.launch(Dispatchers.Main) { controller.trackRefreshError(error) }
|
||||
}
|
||||
|
||||
fun setStatus(item: TrackItem, index: Int) {
|
||||
|
@ -165,13 +165,13 @@ class MangaHeaderHolder(
|
||||
else {
|
||||
val name = nextChapter.name
|
||||
resources.getString(
|
||||
if (nextChapter.last_page_read > 0) R.string.continue_reading_x
|
||||
else R.string.start_reading_x, name
|
||||
if (nextChapter.last_page_read > 0) R.string.continue_reading
|
||||
else R.string.start_reading
|
||||
)
|
||||
}
|
||||
}
|
||||
else {
|
||||
text = resources.getString(R.string.all_caught_up)
|
||||
text = resources.getString(R.string.start_reading)
|
||||
}
|
||||
}
|
||||
|
||||
@ -237,7 +237,7 @@ class MangaHeaderHolder(
|
||||
}
|
||||
|
||||
fun updateTracking() {
|
||||
val presenter = adapter.coverListener?.mangaPresenter() ?: return
|
||||
val presenter = adapter.coverListener.mangaPresenter() ?: return
|
||||
val tracked = presenter.isTracked()
|
||||
with(track_button) {
|
||||
text = itemView.context.getString(if (tracked) R.string.action_filter_tracked
|
||||
|
@ -47,18 +47,18 @@ class SettingsMainController : SettingsController() {
|
||||
titleRes = R.string.pref_category_downloads
|
||||
onClick { navigateTo(SettingsDownloadController()) }
|
||||
}
|
||||
preference {
|
||||
iconRes = R.drawable.ic_sync_black_24dp
|
||||
iconTint = tintColor
|
||||
titleRes = R.string.pref_category_tracking
|
||||
onClick { navigateTo(SettingsTrackingController()) }
|
||||
}
|
||||
preference {
|
||||
iconRes = R.drawable.ic_swap_calls_white_24dp
|
||||
iconTint = tintColor
|
||||
titleRes = R.string.label_migration
|
||||
onClick { navigateTo(MigrationController()) }
|
||||
}
|
||||
preference {
|
||||
iconRes = R.drawable.ic_sync_black_24dp
|
||||
iconTint = tintColor
|
||||
titleRes = R.string.pref_category_tracking
|
||||
onClick { navigateTo(SettingsTrackingController()) }
|
||||
}
|
||||
preference {
|
||||
iconRes = R.drawable.ic_backup_black_24dp
|
||||
iconTint = tintColor
|
||||
|
@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<font-family xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
app:fontProviderAuthority="com.google.android.gms.fonts"
|
||||
app:fontProviderPackage="com.google.android.gms"
|
||||
app:fontProviderQuery="name=Roboto&weight=500"
|
||||
app:fontProviderCerts="@array/com_google_android_gms_fonts_certs">
|
||||
</font-family>
|
@ -1,17 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<array name="com_google_android_gms_fonts_certs">
|
||||
<item>@array/com_google_android_gms_fonts_certs_dev</item>
|
||||
<item>@array/com_google_android_gms_fonts_certs_prod</item>
|
||||
</array>
|
||||
<string-array name="com_google_android_gms_fonts_certs_dev">
|
||||
<item>
|
||||
MIIEqDCCA5CgAwIBAgIJANWFuGx90071MA0GCSqGSIb3DQEBBAUAMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTAeFw0wODA0MTUyMzM2NTZaFw0zNTA5MDEyMzM2NTZaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBANbOLggKv+IxTdGNs8/TGFy0PTP6DHThvbbR24kT9ixcOd9W+EaBPWW+wPPKQmsHxajtWjmQwWfna8mZuSeJS48LIgAZlKkpFeVyxW0qMBujb8X8ETrWy550NaFtI6t9+u7hZeTfHwqNvacKhp1RbE6dBRGWynwMVX8XW8N1+UjFaq6GCJukT4qmpN2afb8sCjUigq0GuMwYXrFVee74bQgLHWGJwPmvmLHC69EH6kWr22ijx4OKXlSIx2xT1AsSHee70w5iDBiK4aph27yH3TxkXy9V89TDdexAcKk/cVHYNnDBapcavl7y0RiQ4biu8ymM8Ga/nmzhRKya6G0cGw8CAQOjgfwwgfkwHQYDVR0OBBYEFI0cxb6VTEM8YYY6FbBMvAPyT+CyMIHJBgNVHSMEgcEwgb6AFI0cxb6VTEM8YYY6FbBMvAPyT+CyoYGapIGXMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbYIJANWFuGx90071MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQADggEBABnTDPEF+3iSP0wNfdIjIz1AlnrPzgAIHVvXxunW7SBrDhEglQZBbKJEk5kT0mtKoOD1JMrSu1xuTKEBahWRbqHsXclaXjoBADb0kkjVEJu/Lh5hgYZnOjvlba8Ld7HCKePCVePoTJBdI4fvugnL8TsgK05aIskyY0hKI9L8KfqfGTl1lzOv2KoWD0KWwtAWPoGChZxmQ+nBli+gwYMzM1vAkP+aayLe0a1EQimlOalO762r0GXO0ks+UeXde2Z4e+8S/pf7pITEI/tP+MxJTALw9QUWEv9lKTk+jkbqxbsh8nfBUapfKqYn0eidpwq2AzVp3juYl7//fKnaPhJD9gs=
|
||||
</item>
|
||||
</string-array>
|
||||
<string-array name="com_google_android_gms_fonts_certs_prod">
|
||||
<item>
|
||||
MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDAeFw0wODA4MjEyMzEzMzRaFw0zNjAxMDcyMzEzMzRaMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBAKtWLgDYO6IIrgqWbxJOKdoR8qtW0I9Y4sypEwPpt1TTcvZApxsdyxMJZ2JORland2qSGT2y5b+3JKkedxiLDmpHpDsz2WCbdxgxRczfey5YZnTJ4VZbH0xqWVW/8lGmPav5xVwnIiJS6HXk+BVKZF+JcWjAsb/GEuq/eFdpuzSqeYTcfi6idkyugwfYwXFU1+5fZKUaRKYCwkkFQVfcAs1fXA5V+++FGfvjJ/CxURaSxaBvGdGDhfXE28LWuT9ozCl5xw4Yq5OGazvV24mZVSoOO0yZ31j7kYvtwYK6NeADwbSxDdJEqO4k//0zOHKrUiGYXtqw/A0LFFtqoZKFjnkCAQOjgdkwgdYwHQYDVR0OBBYEFMd9jMIhF1Ylmn/Tgt9r45jk14alMIGmBgNVHSMEgZ4wgZuAFMd9jMIhF1Ylmn/Tgt9r45jk14aloXikdjB0MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLR29vZ2xlIEluYy4xEDAOBgNVBAsTB0FuZHJvaWQxEDAOBgNVBAMTB0FuZHJvaWSCCQDC4IdGZEowjTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUAA4IBAQBt0lLO74UwLDYKqs6Tm8/yzKkEu116FmH4rkaymUIE0P9KaMftGlMexFlaYjzmB2OxZyl6euNXEsQH8gjwyxCUKRJNexBiGcCEyj6z+a1fuHHvkiaai+KL8W1EyNmgjmyy8AW7P+LLlkR+ho5zEHatRbM/YAnqGcFh5iZBqpknHf1SKMXFh4dd239FJ1jWYfbMDMy3NS5CTMQ2XFI1MvcyUTdZPErjQfTbQe3aDQsQcafEQPD+nqActifKZ0Np0IS9L9kR/wbNvyz6ENwPiTrjV2KRkEjH78ZMcUQXg0L3BYHJ3lc69Vs5Ddf9uUGGMYldX3WfMBEmh/9iFBDAaTCK
|
||||
</item>
|
||||
</string-array>
|
||||
</resources>
|
@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<array name="preloaded_fonts" translatable="false">
|
||||
<item>@font/roboto_medium</item>
|
||||
</array>
|
||||
</resources>
|
@ -469,8 +469,7 @@
|
||||
<string name="hide_unread">Hide unread badges</string>
|
||||
<string name="show_unread">Show unread badges</string>
|
||||
<string name="show_unread_count">Show unread count</string>
|
||||
<string name="hide_filters_tip">You can show filters by again tapping the Library tab when
|
||||
hidden</string>
|
||||
<string name="hide_filters_tip">To show filters again, tap the Library icon</string>
|
||||
|
||||
<!-- Catalogue fragment -->
|
||||
<string name="source_search_options">Search filters</string>
|
||||
@ -523,14 +522,11 @@
|
||||
<string name="no_description">No description</string>
|
||||
<string name="mark_all_as_read_message">Mark all chapters as read?</string>
|
||||
<string name="remove_from_library">Remove from library</string>
|
||||
<string name="all_caught_up">All caught up</string>
|
||||
<string name="select_start_chapter">Select starting chapter</string>
|
||||
<string name="select_end_chapter">Select ending chapter</string>
|
||||
|
||||
<!-- Manga chapters fragment -->
|
||||
<string name="start_reading">Start reading</string>
|
||||
<string name="start_reading_x">Start reading %1$s</string>
|
||||
<string name="continue_reading_x">Continue reading %1$s</string>
|
||||
<string name="start_reading_chapter">Start reading Chapter %1$s</string>
|
||||
<string name="continue_reading_chapter">Continue reading Chapter %1$s</string>
|
||||
<string name="continue_reading">Continue reading</string>
|
||||
|
@ -45,7 +45,7 @@
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance.Regular">
|
||||
<item name="android:fontFamily">sans-serif-regular</item>
|
||||
<item name="android:fontFamily">sans-serif</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance.Regular.Body1">
|
||||
|
Loading…
Reference in New Issue
Block a user