Merge branch 'devel' into feature/downloads_worker

pull/359/head
Koitharu 3 years ago
commit f4628f7ab5
No known key found for this signature in database
GPG Key ID: 8E861F8CE6E7CE27

@ -15,8 +15,8 @@ android {
applicationId 'org.koitharu.kotatsu' applicationId 'org.koitharu.kotatsu'
minSdkVersion 21 minSdkVersion 21
targetSdkVersion 33 targetSdkVersion 33
versionCode 539 versionCode 540
versionName '5.0.1' versionName '5.0.2'
generatedDensities = [] generatedDensities = []
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@ -78,7 +78,7 @@ afterEvaluate {
} }
dependencies { dependencies {
//noinspection GradleDependency //noinspection GradleDependency
implementation('com.github.KotatsuApp:kotatsu-parsers:3e349d3db3') { implementation('com.github.KotatsuApp:kotatsu-parsers:96b9ac36f3') {
exclude group: 'org.json', module: 'json' exclude group: 'org.json', module: 'json'
} }
@ -99,7 +99,7 @@ dependencies {
implementation 'androidx.viewpager2:viewpager2:1.1.0-beta01' implementation 'androidx.viewpager2:viewpager2:1.1.0-beta01'
implementation 'androidx.preference:preference-ktx:1.2.0' implementation 'androidx.preference:preference-ktx:1.2.0'
implementation 'androidx.biometric:biometric-ktx:1.2.0-alpha05' implementation 'androidx.biometric:biometric-ktx:1.2.0-alpha05'
implementation 'com.google.android.material:material:1.8.0' implementation 'com.google.android.material:material:1.9.0'
//noinspection LifecycleAnnotationProcessorWithJava8 //noinspection LifecycleAnnotationProcessorWithJava8
kapt 'androidx.lifecycle:lifecycle-compiler:2.6.1' kapt 'androidx.lifecycle:lifecycle-compiler:2.6.1'
implementation 'androidx.work:work-runtime-ktx:2.8.1' implementation 'androidx.work:work-runtime-ktx:2.8.1'

Binary file not shown.

Before

Width:  |  Height:  |  Size: 213 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 439 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 495 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 791 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 844 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 386 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 375 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 398 KiB

@ -1,10 +0,0 @@
Slice of Life, Mystery
Slice of Life, Mystery
Psychological, Romance, Comedy, Slice of Life, Supernatural
Sci-Fi, Comedy
Reincarnation, Sci-Fi, Historical, Psychological, Drama, Slice of Life, Supernatural, Mystery
Reincarnation, Sci-Fi, Historical, Psychological, Drama, Slice of Life, Supernatural, Mystery
Reincarnation, Sci-Fi, Historical, Psychological, Drama, Slice of Life, Supernatural, Mystery
Reincarnation, Sci-Fi, Historical, Psychological, Drama, Slice of Life, Supernatural, Mystery
Adventure, Slice of Life, Mystery
Adventure, Slice of Life, Mystery

@ -1,10 +0,0 @@
Forget-me-not Vol. 1
Forget-me-not Vol. 2
La Pomme Prisoinniere
Momo Kanchou no Himitsu Kichi
Omoide Emanon
Sasurai Emanon Vol. 1
Sasurai Emanon Vol. 2
Sasurai Emanon Vol. 3
Wandering Island Vol. 1
Wandering Island Vol. 2

@ -4,6 +4,7 @@ package org.koitharu.kotatsu.list.ui.adapter
import android.view.View import android.view.View
import androidx.annotation.CheckResult import androidx.annotation.CheckResult
import androidx.cardview.widget.CardView
import androidx.core.view.doOnNextLayout import androidx.core.view.doOnNextLayout
import com.google.android.material.badge.BadgeDrawable import com.google.android.material.badge.BadgeDrawable
import com.google.android.material.badge.BadgeUtils import com.google.android.material.badge.BadgeUtils
@ -16,7 +17,7 @@ fun View.bindBadge(badge: BadgeDrawable?, counter: Int): BadgeDrawable? {
val badgeDrawable = badge ?: initBadge(this) val badgeDrawable = badge ?: initBadge(this)
badgeDrawable.number = counter badgeDrawable.number = counter
badgeDrawable.isVisible = true badgeDrawable.isVisible = true
badgeDrawable.align() badgeDrawable.align(this)
badgeDrawable badgeDrawable
} else { } else {
badge?.isVisible = false badge?.isVisible = false
@ -34,12 +35,17 @@ private fun initBadge(anchor: View): BadgeDrawable {
badge.maxCharacterCount = resources.getInteger(R.integer.manga_badge_max_character_count) badge.maxCharacterCount = resources.getInteger(R.integer.manga_badge_max_character_count)
anchor.doOnNextLayout { anchor.doOnNextLayout {
BadgeUtils.attachBadgeDrawable(badge, it) BadgeUtils.attachBadgeDrawable(badge, it)
badge.align() badge.align(it)
} }
return badge return badge
} }
private fun BadgeDrawable.align() { private fun BadgeDrawable.align(anchor: View) {
horizontalOffset = intrinsicWidth val extraOffset = if (anchor is CardView) {
verticalOffset = intrinsicHeight (anchor.radius / 2f).toInt()
} else {
0
}
horizontalOffset = intrinsicWidth + extraOffset
verticalOffset = intrinsicHeight + extraOffset
} }

@ -6,12 +6,14 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.async import kotlinx.coroutines.async
import kotlinx.coroutines.awaitAll import kotlinx.coroutines.awaitAll
import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.channelFlow import kotlinx.coroutines.flow.channelFlow
import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.flow.firstOrNull
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.runInterruptible import kotlinx.coroutines.runInterruptible
import org.koitharu.kotatsu.core.parser.MangaRepository import org.koitharu.kotatsu.core.parser.MangaRepository
import org.koitharu.kotatsu.local.data.LocalManga import org.koitharu.kotatsu.local.data.LocalManga
import org.koitharu.kotatsu.local.data.LocalStorageChanges
import org.koitharu.kotatsu.local.data.LocalStorageManager import org.koitharu.kotatsu.local.data.LocalStorageManager
import org.koitharu.kotatsu.local.data.TempFileFilter import org.koitharu.kotatsu.local.data.TempFileFilter
import org.koitharu.kotatsu.local.data.input.LocalMangaInput import org.koitharu.kotatsu.local.data.input.LocalMangaInput
@ -35,7 +37,10 @@ import javax.inject.Singleton
private const val MAX_PARALLELISM = 4 private const val MAX_PARALLELISM = 4
@Singleton @Singleton
class LocalMangaRepository @Inject constructor(private val storageManager: LocalStorageManager) : MangaRepository { class LocalMangaRepository @Inject constructor(
private val storageManager: LocalStorageManager,
@LocalStorageChanges private val localStorageChanges: MutableSharedFlow<LocalManga?>,
) : MangaRepository {
override val source = MangaSource.LOCAL override val source = MangaSource.LOCAL
private val locks = CompositeMutex<Long>() private val locks = CompositeMutex<Long>()
@ -85,13 +90,18 @@ class LocalMangaRepository @Inject constructor(private val storageManager: Local
suspend fun delete(manga: Manga): Boolean { suspend fun delete(manga: Manga): Boolean {
val file = Uri.parse(manga.url).toFile() val file = Uri.parse(manga.url).toFile()
return file.deleteAwait() val result = file.deleteAwait()
if (result) {
localStorageChanges.emit(null)
}
return result
} }
suspend fun deleteChapters(manga: Manga, ids: Set<Long>) { suspend fun deleteChapters(manga: Manga, ids: Set<Long>) {
lockManga(manga.id) lockManga(manga.id)
try { try {
LocalMangaUtil(manga).deleteChapters(ids) LocalMangaUtil(manga).deleteChapters(ids)
localStorageChanges.emit(LocalManga(manga))
} finally { } finally {
unlockManga(manga.id) unlockManga(manga.id)
} }

@ -51,7 +51,7 @@
app:shapeAppearance="?shapeAppearanceCornerLarge" app:shapeAppearance="?shapeAppearanceCornerLarge"
app:strokeColor="?colorOutline" app:strokeColor="?colorOutline"
app:strokeWidth="1dp" app:strokeWidth="1dp"
tools:src="@sample/covers" /> tools:src="@tools:sample/backgrounds/scenic" />
<com.google.android.material.progressindicator.CircularProgressIndicator <com.google.android.material.progressindicator.CircularProgressIndicator
android:id="@+id/progress_before" android:id="@+id/progress_before"
@ -88,7 +88,7 @@
app:shapeAppearance="?shapeAppearanceCornerLarge" app:shapeAppearance="?shapeAppearanceCornerLarge"
app:strokeColor="?colorOutline" app:strokeColor="?colorOutline"
app:strokeWidth="1dp" app:strokeWidth="1dp"
tools:src="@sample/covers" /> tools:src="@tools:sample/backgrounds/scenic" />
<com.google.android.material.progressindicator.CircularProgressIndicator <com.google.android.material.progressindicator.CircularProgressIndicator
android:id="@+id/progress_after" android:id="@+id/progress_after"

@ -29,7 +29,7 @@
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_percent="0.3" app:layout_constraintWidth_percent="0.3"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Kotatsu.Cover" app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Kotatsu.Cover"
tools:background="@sample/covers[5]" tools:background="@tools:sample/backgrounds/scenic[5]"
tools:ignore="ContentDescription,UnusedAttribute" /> tools:ignore="ContentDescription,UnusedAttribute" />
<org.koitharu.kotatsu.history.ui.util.ReadingProgressView <org.koitharu.kotatsu.history.ui.util.ReadingProgressView
@ -53,7 +53,7 @@
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/imageView_cover" app:layout_constraintStart_toEndOf="@id/imageView_cover"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:text="@sample/titles[5]" /> tools:text="@tools:sample/lorem" />
<TextView <TextView
android:id="@+id/textView_subtitle" android:id="@+id/textView_subtitle"

@ -20,7 +20,7 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Kotatsu.Cover.Small" app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Kotatsu.Cover.Small"
tools:src="@sample/covers" /> tools:src="@tools:sample/backgrounds/scenic" />
<TextView <TextView
android:id="@+id/textView_title" android:id="@+id/textView_title"
@ -33,7 +33,7 @@
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/imageView_cover" app:layout_constraintStart_toEndOf="@+id/imageView_cover"
app:layout_constraintTop_toTopOf="@+id/imageView_cover" app:layout_constraintTop_toTopOf="@+id/imageView_cover"
tools:text="@sample/titles" /> tools:text="@tools:sample/lorem" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView" android:id="@+id/recyclerView"

@ -26,7 +26,7 @@
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Kotatsu.Cover.Small" app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Kotatsu.Cover.Small"
app:tintMode="src_atop" app:tintMode="src_atop"
tools:backgroundTint="#99FFFFFF" tools:backgroundTint="#99FFFFFF"
tools:src="@sample/covers" tools:src="@tools:sample/backgrounds/scenic"
tools:tint="#99FFFFFF" /> tools:tint="#99FFFFFF" />
<com.google.android.material.imageview.ShapeableImageView <com.google.android.material.imageview.ShapeableImageView
@ -44,7 +44,7 @@
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Kotatsu.Cover.Small" app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Kotatsu.Cover.Small"
app:tintMode="src_atop" app:tintMode="src_atop"
tools:backgroundTint="#4DFFFFFF" tools:backgroundTint="#4DFFFFFF"
tools:src="@sample/covers" tools:src="@tools:sample/backgrounds/scenic"
tools:tint="#4DFFFFFF" /> tools:tint="#4DFFFFFF" />
<com.google.android.material.imageview.ShapeableImageView <com.google.android.material.imageview.ShapeableImageView
@ -60,7 +60,7 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Kotatsu.Cover.Small" app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Kotatsu.Cover.Small"
tools:src="@sample/covers" /> tools:src="@tools:sample/backgrounds/scenic" />
<TextView <TextView
android:id="@+id/textView_title" android:id="@+id/textView_title"

@ -22,7 +22,7 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Kotatsu.Cover.Medium" app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Kotatsu.Cover.Medium"
tools:src="@sample/covers" /> tools:src="@tools:sample/backgrounds/scenic" />
<TextView <TextView
android:id="@+id/textView_title" android:id="@+id/textView_title"
@ -37,7 +37,7 @@
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/imageView_cover" app:layout_constraintStart_toEndOf="@id/imageView_cover"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:text="@sample/titles" /> tools:text="@tools:sample/lorem" />
<androidx.constraintlayout.widget.Barrier <androidx.constraintlayout.widget.Barrier
android:id="@+id/barrier_top" android:id="@+id/barrier_top"

@ -18,7 +18,7 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Kotatsu.Cover.Small" app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Kotatsu.Cover.Small"
tools:src="@sample/covers" /> tools:src="@tools:sample/backgrounds/scenic" />
<TextView <TextView
android:id="@+id/textView_title" android:id="@+id/textView_title"
@ -32,7 +32,7 @@
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/imageView_cover" app:layout_constraintStart_toEndOf="@+id/imageView_cover"
app:layout_constraintTop_toTopOf="@+id/imageView_cover" app:layout_constraintTop_toTopOf="@+id/imageView_cover"
tools:text="@sample/titles" /> tools:text="@tools:sample/lorem" />
<TextView <TextView
android:id="@+id/textView_summary" android:id="@+id/textView_summary"

@ -27,7 +27,7 @@
android:scaleType="centerCrop" android:scaleType="centerCrop"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Kotatsu.Cover" app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Kotatsu.Cover"
tools:ignore="ContentDescription" tools:ignore="ContentDescription"
tools:src="@sample/covers[5]" /> tools:src="@tools:sample/backgrounds/scenic[5]" />
<org.koitharu.kotatsu.history.ui.util.ReadingProgressView <org.koitharu.kotatsu.history.ui.util.ReadingProgressView
android:id="@+id/progressView" android:id="@+id/progressView"
@ -50,7 +50,7 @@
android:textColor="?android:attr/textColorPrimary" android:textColor="?android:attr/textColorPrimary"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/thumbnail" app:layout_constraintTop_toBottomOf="@+id/thumbnail"
tools:text="@sample/titles[5]" /> tools:text="@tools:sample/lorem" />
</LinearLayout> </LinearLayout>

@ -18,7 +18,7 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Kotatsu.Cover.Small" app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Kotatsu.Cover.Small"
tools:src="@sample/covers" /> tools:src="@tools:sample/backgrounds/scenic" />
<TextView <TextView
android:id="@+id/textView_title" android:id="@+id/textView_title"
@ -32,7 +32,7 @@
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/imageView_cover" app:layout_constraintStart_toEndOf="@+id/imageView_cover"
app:layout_constraintTop_toTopOf="@+id/imageView_cover" app:layout_constraintTop_toTopOf="@+id/imageView_cover"
tools:text="@sample/titles" /> tools:text="@tools:sample/lorem" />
<TextView <TextView
android:id="@+id/textView_subtitle" android:id="@+id/textView_subtitle"
@ -46,6 +46,6 @@
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/imageView_cover" app:layout_constraintStart_toEndOf="@+id/imageView_cover"
app:layout_constraintTop_toBottomOf="@+id/textView_title" app:layout_constraintTop_toBottomOf="@+id/textView_title"
tools:text="@sample/genres" /> tools:text="@tools:sample/lorem/random" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

@ -20,7 +20,7 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Kotatsu.Cover" app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Kotatsu.Cover"
tools:src="@sample/covers" /> tools:src="@tools:sample/backgrounds/scenic" />
<org.koitharu.kotatsu.history.ui.util.ReadingProgressView <org.koitharu.kotatsu.history.ui.util.ReadingProgressView
android:id="@+id/progressView" android:id="@+id/progressView"
@ -44,7 +44,7 @@
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/imageView_cover" app:layout_constraintStart_toEndOf="@+id/imageView_cover"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:text="@sample/titles" /> tools:text="@tools:sample/lorem" />
<TextView <TextView
android:id="@+id/textView_subtitle" android:id="@+id/textView_subtitle"

@ -21,7 +21,7 @@
android:layout_alignParentTop="true" android:layout_alignParentTop="true"
android:contentDescription="@null" android:contentDescription="@null"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Kotatsu.Cover.Small" app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Kotatsu.Cover.Small"
tools:src="@sample/covers[7]" /> tools:src="@tools:sample/backgrounds/scenic[7]" />
<TextView <TextView
android:id="@+id/textView_title" android:id="@+id/textView_title"
@ -36,7 +36,7 @@
android:textAppearance="@style/TextAppearance.Material3.TitleSmall" android:textAppearance="@style/TextAppearance.Material3.TitleSmall"
app:drawableTint="?colorControlNormal" app:drawableTint="?colorControlNormal"
tools:drawableEndCompat="@drawable/ic_shikimori" tools:drawableEndCompat="@drawable/ic_shikimori"
tools:text="@sample/titles[5]" /> tools:text="@tools:sample/lorem" />
<RatingBar <RatingBar
android:id="@+id/ratingBar" android:id="@+id/ratingBar"

@ -18,7 +18,7 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Kotatsu.Cover.Small" app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Kotatsu.Cover.Small"
tools:src="@sample/covers" /> tools:src="@tools:sample/backgrounds/scenic" />
<TextView <TextView
android:id="@+id/textView_title" android:id="@+id/textView_title"
@ -32,7 +32,7 @@
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/imageView_cover" app:layout_constraintStart_toEndOf="@+id/imageView_cover"
app:layout_constraintTop_toTopOf="@+id/imageView_cover" app:layout_constraintTop_toTopOf="@+id/imageView_cover"
tools:text="@sample/titles" /> tools:text="@tools:sample/lorem" />
<RatingBar <RatingBar
android:id="@+id/ratingBar" android:id="@+id/ratingBar"

@ -23,7 +23,7 @@
android:orientation="vertical" android:orientation="vertical"
android:scaleType="centerCrop" android:scaleType="centerCrop"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Kotatsu.Cover.Small" app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Kotatsu.Cover.Small"
tools:src="@sample/covers" /> tools:src="@tools:sample/backgrounds/scenic" />
<TextView <TextView
android:id="@+id/textView_title" android:id="@+id/textView_title"
@ -33,7 +33,7 @@
android:ellipsize="end" android:ellipsize="end"
android:lines="1" android:lines="1"
android:textAppearance="?attr/textAppearanceLabelSmall" android:textAppearance="?attr/textAppearanceLabelSmall"
tools:text="@sample/titles" /> tools:text="@tools:sample/lorem" />
</LinearLayout> </LinearLayout>

@ -24,7 +24,7 @@
android:layout_height="@dimen/widget_cover_height" android:layout_height="@dimen/widget_cover_height"
android:scaleType="centerCrop" android:scaleType="centerCrop"
tools:ignore="ContentDescription" tools:ignore="ContentDescription"
tools:src="@sample/covers" /> tools:src="@tools:sample/backgrounds/scenic" />
<TextView <TextView
android:id="@+id/textView_title" android:id="@+id/textView_title"
@ -35,7 +35,7 @@
android:lines="2" android:lines="2"
android:padding="2dp" android:padding="2dp"
android:textColor="?android:attr/textColorPrimary" android:textColor="?android:attr/textColorPrimary"
tools:text="@sample/titles" /> tools:text="@tools:sample/lorem" />
</LinearLayout> </LinearLayout>

@ -33,7 +33,7 @@
app:layout_constraintTop_toBottomOf="@id/dragHandle" app:layout_constraintTop_toBottomOf="@id/dragHandle"
app:layout_constraintWidth_percent="0.3" app:layout_constraintWidth_percent="0.3"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Kotatsu.Cover" app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Kotatsu.Cover"
tools:background="@sample/covers[9]" tools:background="@tools:sample/backgrounds/scenic"
tools:ignore="ContentDescription,UnusedAttribute" /> tools:ignore="ContentDescription,UnusedAttribute" />
<ImageView <ImageView
@ -61,7 +61,7 @@
app:layout_constraintEnd_toStartOf="@id/button_menu" app:layout_constraintEnd_toStartOf="@id/button_menu"
app:layout_constraintStart_toEndOf="@id/imageView_cover" app:layout_constraintStart_toEndOf="@id/imageView_cover"
app:layout_constraintTop_toBottomOf="@id/dragHandle" app:layout_constraintTop_toBottomOf="@id/dragHandle"
tools:text="@sample/titles[9]" /> tools:text="@tools:sample/lorem[9]" />
<ImageButton <ImageButton
android:id="@+id/button_menu" android:id="@+id/button_menu"

@ -428,4 +428,6 @@
<string name="speed">Хуткасць</string> <string name="speed">Хуткасць</string>
<string name="restore_backup_description">Імпарт раней створанай рэзервовай копіі дадзеных карыстальніка</string> <string name="restore_backup_description">Імпарт раней створанай рэзервовай копіі дадзеных карыстальніка</string>
<string name="show_on_shelf">Паказаць на паліцы</string> <string name="show_on_shelf">Паказаць на паліцы</string>
<string name="find_similar">Знайсці падобныя</string>
<string name="sync_auth_hint">Вы можаце ўвайсці ў існуючы ўліковы запіс або стварыць новы</string>
</resources> </resources>

@ -421,4 +421,13 @@
<string name="domain">Domain</string> <string name="domain">Domain</string>
<string name="light_indicator">LED indicator</string> <string name="light_indicator">LED indicator</string>
<string name="settings_apply_restart_required">Mangyaring i-restart ang application upang ilapat ang mga pagbabagong ito</string> <string name="settings_apply_restart_required">Mangyaring i-restart ang application upang ilapat ang mga pagbabagong ito</string>
<string name="got_it">Nakuha ko</string>
<string name="sources_reorder_tip">I-tap at hawakan ang isang aytem upang muling ayusin ang mga ito</string>
<string name="restore_backup_description">Mag-import ng dating ginawa na backup ng data ng user</string>
<string name="show_on_shelf">Ipakita sa Istante</string>
<string name="speed">Bilis</string>
<string name="comics_archive_import_description">Maaari kang pumili ng isa o higit pang .cbz o .zip file, ang bawat file ay makikilala bilang isang hiwalay na manga.</string>
<string name="folder_with_images_import_description">Maaari kang pumili ng isang directory na may mga archive o mga larawan. Ang bawat archive (o subdirectory) ay makikilala bilang isang kabanata.</string>
<string name="find_similar">Maghanap ng katulad</string>
<string name="sync_auth_hint">Maaari kang mag-sign in sa isang umiiral na account o lumikha ng bago</string>
</resources> </resources>

@ -11,7 +11,7 @@
<string name="favourites">お気に入り</string> <string name="favourites">お気に入り</string>
<string name="error_occurred">エラーが発生しました</string> <string name="error_occurred">エラーが発生しました</string>
<string name="details">詳細</string> <string name="details">詳細</string>
<string name="chapters">チャプター</string> <string name="chapters"></string>
<string name="list">リスト</string> <string name="list">リスト</string>
<string name="detailed_list">詳細リスト</string> <string name="detailed_list">詳細リスト</string>
<string name="grid">グリッド</string> <string name="grid">グリッド</string>
@ -55,8 +55,8 @@
<string name="history_and_cache">履歴とキャッシュ</string> <string name="history_and_cache">履歴とキャッシュ</string>
<string name="clear_pages_cache">ページのキャッシュをクリアする</string> <string name="clear_pages_cache">ページのキャッシュをクリアする</string>
<string name="text_file_sizes">B|kB|MB|GB|TB</string> <string name="text_file_sizes">B|kB|MB|GB|TB</string>
<string name="close_menu">閉じる</string> <string name="close_menu">メニューを閉じる</string>
<string name="open_menu">開く</string> <string name="open_menu">メニューを開く</string>
<string name="settings">設定</string> <string name="settings">設定</string>
<string name="light">ライトテーマ</string> <string name="light">ライトテーマ</string>
<string name="filter">フィルター</string> <string name="filter">フィルター</string>

@ -428,4 +428,6 @@
<string name="restore_backup_description">Імпортуйте раніше створену резервну копію даних користувача</string> <string name="restore_backup_description">Імпортуйте раніше створену резервну копію даних користувача</string>
<string name="show_on_shelf">Показати на полиці</string> <string name="show_on_shelf">Показати на полиці</string>
<string name="sources_reorder_tip">Натисніть і утримуйте елемент, щоб змінити його порядок</string> <string name="sources_reorder_tip">Натисніть і утримуйте елемент, щоб змінити його порядок</string>
<string name="sync_auth_hint">Ви можете увійти в існуючий обліковий запис або створити новий</string>
<string name="find_similar">Знайти схожі</string>
</resources> </resources>
Loading…
Cancel
Save