Compare commits
56 Commits
d0ed1fb85f
...
34f6e5232b
| Author | SHA1 | Date |
|---|---|---|
|
|
34f6e5232b | 6 months ago |
|
|
f205c1b3dc | 6 months ago |
|
|
4b2a487c37 | 6 months ago |
|
|
726ac21974 | 6 months ago |
|
|
6b35216949 | 6 months ago |
|
|
22cae62f17 | 6 months ago |
|
|
4733caf2e6 | 6 months ago |
|
|
d49103de1f | 6 months ago |
|
|
414bab7ce3 | 6 months ago |
|
|
64c1873eb5 | 6 months ago |
|
|
06a0b5829b | 6 months ago |
|
|
0ce2870c8b | 6 months ago |
|
|
f59027666b | 6 months ago |
|
|
8513bc6daf | 6 months ago |
|
|
cceaefc896 | 6 months ago |
|
|
1d32f53bdd | 6 months ago |
|
|
0e98dd8695 | 6 months ago |
|
|
119b7c2ac7 | 6 months ago |
|
|
5701862661 | 6 months ago |
|
|
5590ab7c8a | 6 months ago |
|
|
9fde0106be | 6 months ago |
|
|
e73f077dc5 | 6 months ago |
|
|
c37458d43a | 6 months ago |
|
|
e2fcfcc7a8 | 6 months ago |
|
|
7a3b2a9bb4 | 6 months ago |
|
|
881f154b5e | 6 months ago |
|
|
34be5d16f2 | 6 months ago |
|
|
e7e554648d | 6 months ago |
|
|
89a4180b46 | 6 months ago |
|
|
4e2e190547 | 6 months ago |
|
|
3c557aae6c | 6 months ago |
|
|
0b00a3675d | 6 months ago |
|
|
8f20be6953 | 6 months ago |
|
|
26875c01c6 | 6 months ago |
|
|
4beb34c1a5 | 6 months ago |
|
|
1d50ab00c4 | 6 months ago |
|
|
299cd229ec | 6 months ago |
|
|
b02f394cd4 | 6 months ago |
|
|
7352f06564 | 6 months ago |
|
|
1e4861367e | 6 months ago |
|
|
bc3208946b | 6 months ago |
|
|
d5fbb00676 | 6 months ago |
|
|
7514362ca4 | 6 months ago |
|
|
e76a04bea0 | 6 months ago |
|
|
732a6e7c26 | 6 months ago |
|
|
f3111dc636 | 6 months ago |
|
|
e0e0cf4ecd | 6 months ago |
|
|
50f302a7f8 | 6 months ago |
|
|
500995a9d8 | 6 months ago |
|
|
beaf5cc0d5 | 6 months ago |
|
|
6377de470d | 6 months ago |
|
|
dec45f7851 | 6 months ago |
|
|
dbada34a43 | 6 months ago |
|
|
b62467964e | 6 months ago |
|
|
3249e10931 | 6 months ago |
|
|
0d5229b112 | 6 months ago |
@ -0,0 +1,10 @@
|
|||||||
|
package org.koitharu.kotatsu.core.exceptions
|
||||||
|
|
||||||
|
import org.koitharu.kotatsu.details.ui.pager.EmptyMangaReason
|
||||||
|
import org.koitharu.kotatsu.parsers.model.Manga
|
||||||
|
|
||||||
|
class EmptyMangaException(
|
||||||
|
val reason: EmptyMangaReason?,
|
||||||
|
val manga: Manga,
|
||||||
|
cause: Throwable?
|
||||||
|
) : IllegalStateException(cause)
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,38 +1,66 @@
|
|||||||
package org.koitharu.kotatsu.settings.storage.directories
|
package org.koitharu.kotatsu.settings.storage.directories
|
||||||
|
|
||||||
|
import android.view.View
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.text.bold
|
||||||
|
import androidx.core.text.buildSpannedString
|
||||||
|
import androidx.core.text.color
|
||||||
|
import androidx.core.view.isGone
|
||||||
import com.hannesdorfmann.adapterdelegates4.dsl.adapterDelegateViewBinding
|
import com.hannesdorfmann.adapterdelegates4.dsl.adapterDelegateViewBinding
|
||||||
import org.koitharu.kotatsu.R
|
import org.koitharu.kotatsu.R
|
||||||
import org.koitharu.kotatsu.core.ui.list.OnListItemClickListener
|
import org.koitharu.kotatsu.core.ui.list.OnListItemClickListener
|
||||||
import org.koitharu.kotatsu.core.util.ext.drawableStart
|
import org.koitharu.kotatsu.core.util.FileSize
|
||||||
|
import org.koitharu.kotatsu.core.util.ext.getThemeColor
|
||||||
import org.koitharu.kotatsu.core.util.ext.setTooltipCompat
|
import org.koitharu.kotatsu.core.util.ext.setTooltipCompat
|
||||||
import org.koitharu.kotatsu.core.util.ext.textAndVisible
|
import org.koitharu.kotatsu.core.util.ext.textAndVisible
|
||||||
import org.koitharu.kotatsu.databinding.ItemStorageConfigBinding
|
import org.koitharu.kotatsu.databinding.ItemStorageConfig2Binding
|
||||||
import org.koitharu.kotatsu.settings.storage.DirectoryModel
|
|
||||||
|
|
||||||
fun directoryConfigAD(
|
fun directoryConfigAD(
|
||||||
clickListener: OnListItemClickListener<DirectoryModel>,
|
clickListener: OnListItemClickListener<DirectoryConfigModel>,
|
||||||
) = adapterDelegateViewBinding<DirectoryModel, DirectoryModel, ItemStorageConfigBinding>(
|
) = adapterDelegateViewBinding<DirectoryConfigModel, DirectoryConfigModel, ItemStorageConfig2Binding>(
|
||||||
{ layoutInflater, parent -> ItemStorageConfigBinding.inflate(layoutInflater, parent, false) },
|
{ layoutInflater, parent -> ItemStorageConfig2Binding.inflate(layoutInflater, parent, false) },
|
||||||
) {
|
) {
|
||||||
|
|
||||||
binding.buttonRemove.setOnClickListener { v -> clickListener.onItemClick(item, v) }
|
binding.buttonRemove.setOnClickListener { v -> clickListener.onItemClick(item, v) }
|
||||||
binding.buttonRemove.setTooltipCompat(binding.buttonRemove.contentDescription)
|
binding.buttonRemove.setTooltipCompat(binding.buttonRemove.contentDescription)
|
||||||
|
|
||||||
bind {
|
bind {
|
||||||
binding.textViewTitle.text = item.title ?: getString(item.titleRes)
|
binding.textViewTitle.text = item.title
|
||||||
binding.textViewSubtitle.textAndVisible = item.file?.absolutePath
|
binding.textViewSubtitle.text = item.path.absolutePath
|
||||||
binding.buttonRemove.isVisible = item.isRemovable
|
binding.buttonRemove.isGone = item.isAppPrivate
|
||||||
binding.buttonRemove.isEnabled = !item.isChecked
|
binding.buttonRemove.isEnabled = !item.isDefault
|
||||||
binding.textViewTitle.drawableStart = if (!item.isAvailable) {
|
binding.spacer.visibility = if (item.isAppPrivate) {
|
||||||
ContextCompat.getDrawable(context, R.drawable.ic_alert_outline)?.apply {
|
View.INVISIBLE
|
||||||
setTint(ContextCompat.getColor(context, R.color.warning))
|
} else {
|
||||||
}
|
View.GONE
|
||||||
} else if (item.isChecked) {
|
}
|
||||||
ContextCompat.getDrawable(context, R.drawable.ic_download)
|
binding.textViewInfo.textAndVisible = buildSpannedString {
|
||||||
} else {
|
if (item.isDefault) {
|
||||||
null
|
bold {
|
||||||
}
|
append(getString(R.string.download_default_directory))
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if (!item.isAccessible) {
|
||||||
|
if (isNotEmpty()) appendLine()
|
||||||
|
color(
|
||||||
|
context.getThemeColor(
|
||||||
|
androidx.appcompat.R.attr.colorError,
|
||||||
|
ContextCompat.getColor(context, R.color.common_red),
|
||||||
|
),
|
||||||
|
) {
|
||||||
|
append(getString(R.string.no_write_permission_to_file))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (item.isAppPrivate) {
|
||||||
|
if (isNotEmpty()) appendLine()
|
||||||
|
append(getString(R.string.private_app_directory_warning))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
binding.indicatorSize.max = FileSize.BYTES.convert(item.available, FileSize.KILOBYTES).toInt()
|
||||||
|
binding.indicatorSize.progress = FileSize.BYTES.convert(item.size, FileSize.KILOBYTES).toInt()
|
||||||
|
binding.textViewSize.text = context.getString(
|
||||||
|
R.string.available_pattern,
|
||||||
|
FileSize.BYTES.format(context, item.available),
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,22 @@
|
|||||||
|
package org.koitharu.kotatsu.settings.storage.directories
|
||||||
|
|
||||||
|
import androidx.recyclerview.widget.DiffUtil.ItemCallback
|
||||||
|
|
||||||
|
class DirectoryConfigDiffCallback : ItemCallback<DirectoryConfigModel>() {
|
||||||
|
|
||||||
|
override fun areItemsTheSame(oldItem: DirectoryConfigModel, newItem: DirectoryConfigModel): Boolean {
|
||||||
|
return oldItem.path == newItem.path
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun areContentsTheSame(oldItem: DirectoryConfigModel, newItem: DirectoryConfigModel): Boolean {
|
||||||
|
return oldItem == newItem
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getChangePayload(oldItem: DirectoryConfigModel, newItem: DirectoryConfigModel): Any? {
|
||||||
|
return if (oldItem.isDefault != newItem.isDefault) {
|
||||||
|
Unit
|
||||||
|
} else {
|
||||||
|
super.getChangePayload(oldItem, newItem)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
package org.koitharu.kotatsu.settings.storage.directories
|
||||||
|
|
||||||
|
import org.koitharu.kotatsu.list.ui.model.ListModel
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
data class DirectoryConfigModel(
|
||||||
|
val title: String,
|
||||||
|
val path: File,
|
||||||
|
val isDefault: Boolean,
|
||||||
|
val isAppPrivate: Boolean,
|
||||||
|
val isAccessible: Boolean,
|
||||||
|
val size: Long,
|
||||||
|
val available: Long,
|
||||||
|
) : ListModel {
|
||||||
|
|
||||||
|
override fun areItemsTheSame(other: ListModel): Boolean {
|
||||||
|
return other is DirectoryConfigModel && path == other.path
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,57 +1,60 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:layout_width="match_parent"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_height="match_parent">
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
<com.google.android.material.appbar.AppBarLayout
|
|
||||||
android:id="@+id/appbar"
|
<com.google.android.material.appbar.AppBarLayout
|
||||||
android:layout_width="match_parent"
|
android:id="@+id/appbar"
|
||||||
android:layout_height="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:fitsSystemWindows="true">
|
android:layout_height="wrap_content"
|
||||||
|
android:fitsSystemWindows="true">
|
||||||
<com.google.android.material.appbar.MaterialToolbar
|
|
||||||
android:id="@id/toolbar"
|
<com.google.android.material.appbar.MaterialToolbar
|
||||||
android:layout_width="match_parent"
|
android:id="@id/toolbar"
|
||||||
android:layout_height="?attr/actionBarSize"
|
android:layout_width="match_parent"
|
||||||
app:layout_scrollFlags="noScroll">
|
android:layout_height="?attr/actionBarSize"
|
||||||
|
app:layout_scrollFlags="noScroll">
|
||||||
</com.google.android.material.appbar.MaterialToolbar>
|
|
||||||
|
</com.google.android.material.appbar.MaterialToolbar>
|
||||||
</com.google.android.material.appbar.AppBarLayout>
|
|
||||||
|
</com.google.android.material.appbar.AppBarLayout>
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
|
||||||
android:id="@+id/recyclerView"
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:layout_width="match_parent"
|
android:id="@+id/recyclerView"
|
||||||
android:layout_height="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:clipToPadding="false"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical"
|
android:clipToPadding="false"
|
||||||
android:scrollbars="vertical"
|
android:orientation="vertical"
|
||||||
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
android:paddingBottom="@dimen/list_spacing_large"
|
||||||
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" />
|
android:scrollbars="vertical"
|
||||||
|
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
||||||
<com.google.android.material.progressindicator.LinearProgressIndicator
|
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior"
|
||||||
android:id="@+id/progressBar"
|
tools:listitem="@layout/item_storage_config2" />
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
<com.google.android.material.progressindicator.LinearProgressIndicator
|
||||||
android:indeterminate="true"
|
android:id="@+id/progressBar"
|
||||||
android:visibility="gone"
|
android:layout_width="match_parent"
|
||||||
app:layout_anchor="@id/appbar"
|
android:layout_height="wrap_content"
|
||||||
app:layout_anchorGravity="bottom" />
|
android:indeterminate="true"
|
||||||
|
android:visibility="gone"
|
||||||
<com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
|
app:layout_anchor="@id/appbar"
|
||||||
android:id="@+id/fab_add"
|
app:layout_anchorGravity="bottom" />
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
<com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
|
||||||
android:layout_margin="16dp"
|
android:id="@+id/fab_add"
|
||||||
android:contentDescription="@string/pick_custom_directory"
|
android:layout_width="wrap_content"
|
||||||
android:text="@string/add"
|
android:layout_height="wrap_content"
|
||||||
app:fabSize="normal"
|
android:layout_margin="16dp"
|
||||||
app:icon="@drawable/ic_add"
|
android:contentDescription="@string/pick_custom_directory"
|
||||||
app:layout_anchor="@id/recyclerView"
|
android:text="@string/add"
|
||||||
app:layout_anchorGravity="bottom|end"
|
app:fabSize="normal"
|
||||||
app:layout_behavior="org.koitharu.kotatsu.core.ui.util.ShrinkOnScrollBehavior"
|
app:icon="@drawable/ic_add"
|
||||||
app:layout_dodgeInsetEdges="bottom" />
|
app:layout_anchor="@id/recyclerView"
|
||||||
|
app:layout_anchorGravity="bottom|end"
|
||||||
|
app:layout_behavior="org.koitharu.kotatsu.core.ui.util.ShrinkOnScrollBehavior"
|
||||||
|
app:layout_dodgeInsetEdges="bottom" />
|
||||||
|
|
||||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||||
|
|||||||
@ -0,0 +1,93 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<com.google.android.material.card.MaterialCardView
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
tools:layout_margin="@dimen/screen_padding">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingBottom="@dimen/margin_small">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textView_title"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginHorizontal="@dimen/screen_padding"
|
||||||
|
android:layout_marginTop="@dimen/screen_padding"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:textAppearance="?attr/textAppearanceTitleMedium"
|
||||||
|
tools:text="@tools:sample/lorem[3]" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textView_subtitle"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginHorizontal="@dimen/screen_padding"
|
||||||
|
android:layout_marginTop="@dimen/margin_small"
|
||||||
|
android:textAppearance="?attr/textAppearanceBodyMedium"
|
||||||
|
tools:text="@tools:sample/lorem[5]" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginHorizontal="@dimen/screen_padding"
|
||||||
|
android:layout_marginTop="@dimen/screen_padding"
|
||||||
|
android:baselineAligned="false"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textView_size"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginEnd="@dimen/margin_small"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:textAppearance="?attr/textAppearanceBodyMedium"
|
||||||
|
android:textColor="?android:textColorSecondary"
|
||||||
|
tools:text="250MB / 10GB" />
|
||||||
|
|
||||||
|
<com.google.android.material.progressindicator.LinearProgressIndicator
|
||||||
|
android:id="@+id/indicator_size"
|
||||||
|
android:layout_width="160dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:trackCornerRadius="5dp"
|
||||||
|
app:trackThickness="10dp"
|
||||||
|
tools:progress="40" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textView_info"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginHorizontal="@dimen/screen_padding"
|
||||||
|
android:layout_marginTop="@dimen/margin_small"
|
||||||
|
android:textAppearance="?attr/textAppearanceBodySmall"
|
||||||
|
android:textColor="?android:textColorSecondary"
|
||||||
|
tools:text="Content will be removed within application" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/button_remove"
|
||||||
|
style="?buttonBarButtonStyle"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="end"
|
||||||
|
android:layout_marginEnd="@dimen/margin_small"
|
||||||
|
android:text="@string/remove" />
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:id="@+id/spacer"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="@dimen/margin_small"
|
||||||
|
tools:visibility="gone" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</com.google.android.material.card.MaterialCardView>
|
||||||
@ -1,216 +1,218 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<org.koitharu.kotatsu.core.ui.sheet.AdaptiveSheetHeaderBar
|
<org.koitharu.kotatsu.core.ui.sheet.AdaptiveSheetHeaderBar
|
||||||
android:id="@+id/headerBar"
|
android:id="@+id/headerBar"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:title="@string/options" />
|
app:title="@string/options" />
|
||||||
|
|
||||||
<androidx.core.widget.NestedScrollView
|
<androidx.core.widget.NestedScrollView
|
||||||
android:id="@+id/scrollView"
|
android:id="@+id/scrollView"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:clipToPadding="false"
|
android:clipToPadding="false"
|
||||||
android:scrollIndicators="top">
|
android:scrollIndicators="top">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:id="@+id/layout_main"
|
||||||
android:layout_height="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:orientation="vertical"
|
android:layout_height="wrap_content"
|
||||||
android:paddingBottom="@dimen/margin_normal">
|
android:orientation="vertical"
|
||||||
|
android:paddingBottom="@dimen/margin_normal">
|
||||||
<org.koitharu.kotatsu.core.ui.widgets.ListItemTextView
|
|
||||||
android:id="@+id/button_save_page"
|
<org.koitharu.kotatsu.core.ui.widgets.ListItemTextView
|
||||||
android:layout_width="match_parent"
|
android:id="@+id/button_save_page"
|
||||||
android:layout_height="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:text="@string/save_page"
|
android:layout_height="wrap_content"
|
||||||
app:drawableStartCompat="@drawable/ic_save" />
|
android:text="@string/save_page"
|
||||||
|
app:drawableStartCompat="@drawable/ic_save" />
|
||||||
<org.koitharu.kotatsu.core.ui.widgets.ListItemTextView
|
|
||||||
android:id="@+id/button_bookmark"
|
<org.koitharu.kotatsu.core.ui.widgets.ListItemTextView
|
||||||
android:layout_width="match_parent"
|
android:id="@+id/button_bookmark"
|
||||||
android:layout_height="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:text="@string/bookmark_add"
|
android:layout_height="wrap_content"
|
||||||
app:drawableStartCompat="@drawable/ic_bookmark" />
|
android:text="@string/bookmark_add"
|
||||||
|
app:drawableStartCompat="@drawable/ic_bookmark" />
|
||||||
<org.koitharu.kotatsu.core.ui.widgets.ListItemTextView
|
|
||||||
android:id="@+id/button_image_server"
|
<org.koitharu.kotatsu.core.ui.widgets.ListItemTextView
|
||||||
android:layout_width="match_parent"
|
android:id="@+id/button_image_server"
|
||||||
android:layout_height="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:drawableEnd="@drawable/ic_expand_more_22px"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/image_server"
|
android:drawableEnd="@drawable/ic_expand_more_22px"
|
||||||
android:visibility="gone"
|
android:text="@string/image_server"
|
||||||
app:drawableStartCompat="@drawable/ic_images"
|
android:visibility="gone"
|
||||||
tools:visibility="visible" />
|
app:drawableStartCompat="@drawable/ic_images"
|
||||||
|
tools:visibility="visible" />
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
<TextView
|
||||||
android:layout_height="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:layout_marginHorizontal="@dimen/margin_normal"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/margin_normal"
|
android:layout_marginHorizontal="@dimen/margin_normal"
|
||||||
android:text="@string/read_mode"
|
android:layout_marginTop="@dimen/margin_normal"
|
||||||
android:textAppearance="?textAppearanceTitleSmall" />
|
android:text="@string/read_mode"
|
||||||
|
android:textAppearance="?textAppearanceTitleSmall" />
|
||||||
<com.google.android.material.button.MaterialButtonToggleGroup
|
|
||||||
android:id="@+id/checkableGroup"
|
<com.google.android.material.button.MaterialButtonToggleGroup
|
||||||
android:layout_width="match_parent"
|
android:id="@+id/checkableGroup"
|
||||||
android:layout_height="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:layout_marginHorizontal="@dimen/margin_normal"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/margin_small"
|
android:layout_marginHorizontal="@dimen/margin_normal"
|
||||||
android:baselineAligned="false"
|
android:layout_marginTop="@dimen/margin_small"
|
||||||
android:orientation="horizontal"
|
android:baselineAligned="false"
|
||||||
app:selectionRequired="true"
|
android:orientation="horizontal"
|
||||||
app:singleSelection="true">
|
app:selectionRequired="true"
|
||||||
|
app:singleSelection="true">
|
||||||
<com.google.android.material.button.MaterialButton
|
|
||||||
android:id="@+id/button_standard"
|
<com.google.android.material.button.MaterialButton
|
||||||
style="@style/Widget.Kotatsu.ToggleButton.Vertical"
|
android:id="@+id/button_standard"
|
||||||
android:layout_width="0dp"
|
style="@style/Widget.Kotatsu.ToggleButton.Vertical"
|
||||||
android:layout_height="wrap_content"
|
android:layout_width="0dp"
|
||||||
android:layout_weight="1"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/standard"
|
android:layout_weight="1"
|
||||||
app:icon="@drawable/ic_reader_ltr" />
|
android:text="@string/standard"
|
||||||
|
app:icon="@drawable/ic_reader_ltr" />
|
||||||
<com.google.android.material.button.MaterialButton
|
|
||||||
android:id="@+id/button_reversed"
|
<com.google.android.material.button.MaterialButton
|
||||||
style="@style/Widget.Kotatsu.ToggleButton.Vertical"
|
android:id="@+id/button_reversed"
|
||||||
android:layout_width="0dp"
|
style="@style/Widget.Kotatsu.ToggleButton.Vertical"
|
||||||
android:layout_height="wrap_content"
|
android:layout_width="0dp"
|
||||||
android:layout_weight="1"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/right_to_left"
|
android:layout_weight="1"
|
||||||
app:icon="@drawable/ic_reader_rtl" />
|
android:text="@string/right_to_left"
|
||||||
|
app:icon="@drawable/ic_reader_rtl" />
|
||||||
<com.google.android.material.button.MaterialButton
|
|
||||||
android:id="@+id/button_vertical"
|
<com.google.android.material.button.MaterialButton
|
||||||
style="@style/Widget.Kotatsu.ToggleButton.Vertical"
|
android:id="@+id/button_vertical"
|
||||||
android:layout_width="0dp"
|
style="@style/Widget.Kotatsu.ToggleButton.Vertical"
|
||||||
android:layout_height="wrap_content"
|
android:layout_width="0dp"
|
||||||
android:layout_weight="1"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/vertical"
|
android:layout_weight="1"
|
||||||
app:icon="@drawable/ic_reader_vertical" />
|
android:text="@string/vertical"
|
||||||
|
app:icon="@drawable/ic_reader_vertical" />
|
||||||
<com.google.android.material.button.MaterialButton
|
|
||||||
android:id="@+id/button_webtoon"
|
<com.google.android.material.button.MaterialButton
|
||||||
style="@style/Widget.Kotatsu.ToggleButton.Vertical"
|
android:id="@+id/button_webtoon"
|
||||||
android:layout_width="0dp"
|
style="@style/Widget.Kotatsu.ToggleButton.Vertical"
|
||||||
android:layout_height="wrap_content"
|
android:layout_width="0dp"
|
||||||
android:layout_weight="1"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/webtoon"
|
android:layout_weight="1"
|
||||||
app:icon="@drawable/ic_script" />
|
android:text="@string/webtoon"
|
||||||
|
app:icon="@drawable/ic_script" />
|
||||||
</com.google.android.material.button.MaterialButtonToggleGroup>
|
|
||||||
|
</com.google.android.material.button.MaterialButtonToggleGroup>
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
<TextView
|
||||||
android:layout_height="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:layout_marginHorizontal="@dimen/margin_normal"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/margin_small"
|
android:layout_marginHorizontal="@dimen/margin_normal"
|
||||||
android:text="@string/reader_mode_hint"
|
android:layout_marginTop="@dimen/margin_small"
|
||||||
android:textAppearance="?attr/textAppearanceBodySmall" />
|
android:text="@string/reader_mode_hint"
|
||||||
|
android:textAppearance="?attr/textAppearanceBodySmall" />
|
||||||
<com.google.android.material.materialswitch.MaterialSwitch
|
|
||||||
android:id="@+id/switch_double_reader"
|
<com.google.android.material.materialswitch.MaterialSwitch
|
||||||
android:layout_width="match_parent"
|
android:id="@+id/switch_double_reader"
|
||||||
android:layout_height="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:layout_marginTop="@dimen/margin_normal"
|
android:layout_height="wrap_content"
|
||||||
android:drawablePadding="?android:listPreferredItemPaddingStart"
|
android:layout_marginTop="@dimen/margin_normal"
|
||||||
android:minHeight="?android:listPreferredItemHeightSmall"
|
android:drawablePadding="?android:listPreferredItemPaddingStart"
|
||||||
android:paddingStart="?android:listPreferredItemPaddingStart"
|
android:minHeight="?android:listPreferredItemHeightSmall"
|
||||||
android:paddingEnd="?android:listPreferredItemPaddingEnd"
|
android:paddingStart="?android:listPreferredItemPaddingStart"
|
||||||
android:text="@string/use_two_pages_landscape"
|
android:paddingEnd="?android:listPreferredItemPaddingEnd"
|
||||||
android:textAppearance="?textAppearanceListItem"
|
android:text="@string/use_two_pages_landscape"
|
||||||
android:textColor="?colorOnSurfaceVariant"
|
android:textAppearance="?textAppearanceListItem"
|
||||||
app:drawableStartCompat="@drawable/ic_split_horizontal" />
|
android:textColor="?colorOnSurfaceVariant"
|
||||||
|
app:drawableStartCompat="@drawable/ic_split_horizontal" />
|
||||||
<TextView
|
|
||||||
android:id="@+id/text_sensitivity"
|
<com.google.android.material.materialswitch.MaterialSwitch
|
||||||
android:layout_width="match_parent"
|
android:id="@+id/switch_double_foldable"
|
||||||
android:layout_height="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:layout_marginHorizontal="@dimen/margin_normal"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/margin_small"
|
android:layout_marginTop="@dimen/margin_small"
|
||||||
android:text="@string/two_page_scroll_sensitivity"
|
android:drawablePadding="?android:listPreferredItemPaddingStart"
|
||||||
android:textAppearance="@style/TextAppearance.Kotatsu.GridTitle" />
|
android:minHeight="?android:listPreferredItemHeightSmall"
|
||||||
|
android:paddingStart="?android:listPreferredItemPaddingStart"
|
||||||
<com.google.android.material.slider.Slider
|
android:paddingEnd="?android:listPreferredItemPaddingEnd"
|
||||||
android:id="@+id/seekbar_sensitivity"
|
android:text="@string/auto_double_foldable"
|
||||||
android:layout_width="match_parent"
|
android:textAppearance="@style/TextAppearance.Kotatsu.GridTitle"
|
||||||
android:layout_height="wrap_content"
|
android:textColor="?colorOnSurfaceVariant"
|
||||||
android:layout_marginHorizontal="@dimen/margin_small"
|
android:visibility="gone"
|
||||||
android:layout_marginTop="@dimen/margin_small"
|
tools:visibility="visible" />
|
||||||
android:valueFrom="0"
|
|
||||||
android:valueTo="100"
|
<TextView
|
||||||
app:labelBehavior="floating"
|
android:id="@+id/text_double_sensitivity"
|
||||||
tools:value="50" />
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
<com.google.android.material.materialswitch.MaterialSwitch
|
android:layout_marginHorizontal="@dimen/margin_normal"
|
||||||
android:id="@+id/switch_pull_gesture"
|
android:layout_marginTop="@dimen/margin_small"
|
||||||
android:layout_width="match_parent"
|
android:text="@string/two_page_scroll_sensitivity"
|
||||||
android:layout_height="wrap_content"
|
android:textAppearance="@style/TextAppearance.Kotatsu.GridTitle" />
|
||||||
android:layout_marginTop="@dimen/margin_small"
|
|
||||||
android:drawablePadding="?android:listPreferredItemPaddingStart"
|
<com.google.android.material.slider.Slider
|
||||||
android:minHeight="?android:listPreferredItemHeightSmall"
|
android:id="@+id/slider_double_sensitivity"
|
||||||
android:paddingStart="?android:listPreferredItemPaddingStart"
|
android:layout_width="match_parent"
|
||||||
android:paddingEnd="?android:listPreferredItemPaddingEnd"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/enable_pull_gesture_title"
|
android:layout_marginHorizontal="@dimen/margin_small"
|
||||||
android:textAppearance="?textAppearanceListItem"
|
android:layout_marginTop="@dimen/margin_small"
|
||||||
android:textColor="?colorOnSurfaceVariant"
|
android:valueFrom="0"
|
||||||
app:drawableStartCompat="@drawable/ic_gesture_vertical" />
|
android:valueTo="100"
|
||||||
|
app:labelBehavior="floating"
|
||||||
<org.koitharu.kotatsu.core.ui.widgets.ListItemTextView
|
tools:value="50" />
|
||||||
android:id="@+id/button_screen_rotate"
|
|
||||||
android:layout_width="match_parent"
|
<org.koitharu.kotatsu.core.ui.widgets.ListItemTextView
|
||||||
android:layout_height="wrap_content"
|
android:id="@+id/button_screen_rotate"
|
||||||
android:text="@string/rotate_screen"
|
android:layout_width="match_parent"
|
||||||
android:visibility="gone"
|
android:layout_height="wrap_content"
|
||||||
app:drawableStartCompat="@drawable/ic_screen_rotation"
|
android:text="@string/rotate_screen"
|
||||||
tools:visibility="visible" />
|
android:visibility="gone"
|
||||||
|
app:drawableStartCompat="@drawable/ic_screen_rotation"
|
||||||
<com.google.android.material.materialswitch.MaterialSwitch
|
tools:visibility="visible" />
|
||||||
android:id="@+id/switch_screen_lock_rotation"
|
|
||||||
android:layout_width="match_parent"
|
<com.google.android.material.materialswitch.MaterialSwitch
|
||||||
android:layout_height="wrap_content"
|
android:id="@+id/switch_screen_lock_rotation"
|
||||||
android:drawablePadding="?android:listPreferredItemPaddingStart"
|
android:layout_width="match_parent"
|
||||||
android:ellipsize="end"
|
android:layout_height="wrap_content"
|
||||||
android:minHeight="?android:listPreferredItemHeightSmall"
|
android:drawablePadding="?android:listPreferredItemPaddingStart"
|
||||||
android:paddingStart="?android:listPreferredItemPaddingStart"
|
android:ellipsize="end"
|
||||||
android:paddingEnd="?android:listPreferredItemPaddingEnd"
|
android:minHeight="?android:listPreferredItemHeightSmall"
|
||||||
android:singleLine="true"
|
android:paddingStart="?android:listPreferredItemPaddingStart"
|
||||||
android:text="@string/lock_screen_rotation"
|
android:paddingEnd="?android:listPreferredItemPaddingEnd"
|
||||||
android:textAppearance="?textAppearanceListItem"
|
android:singleLine="true"
|
||||||
android:textColor="?colorOnSurfaceVariant"
|
android:text="@string/lock_screen_rotation"
|
||||||
android:visibility="gone"
|
android:textAppearance="?textAppearanceListItem"
|
||||||
app:drawableStartCompat="@drawable/ic_screen_rotation_lock"
|
android:textColor="?colorOnSurfaceVariant"
|
||||||
tools:visibility="visible" />
|
android:visibility="gone"
|
||||||
|
app:drawableStartCompat="@drawable/ic_screen_rotation_lock"
|
||||||
<org.koitharu.kotatsu.core.ui.widgets.ListItemTextView
|
tools:visibility="visible" />
|
||||||
android:id="@+id/button_scroll_timer"
|
|
||||||
android:layout_width="match_parent"
|
<org.koitharu.kotatsu.core.ui.widgets.ListItemTextView
|
||||||
android:layout_height="wrap_content"
|
android:id="@+id/button_scroll_timer"
|
||||||
android:text="@string/automatic_scroll"
|
android:layout_width="match_parent"
|
||||||
app:drawableStartCompat="@drawable/ic_timer" />
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/automatic_scroll"
|
||||||
<org.koitharu.kotatsu.core.ui.widgets.ListItemTextView
|
app:drawableStartCompat="@drawable/ic_timer" />
|
||||||
android:id="@+id/button_color_filter"
|
|
||||||
android:layout_width="match_parent"
|
<org.koitharu.kotatsu.core.ui.widgets.ListItemTextView
|
||||||
android:layout_height="wrap_content"
|
android:id="@+id/button_color_filter"
|
||||||
android:text="@string/color_correction"
|
android:layout_width="match_parent"
|
||||||
app:drawableStartCompat="@drawable/ic_appearance" />
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/color_correction"
|
||||||
<org.koitharu.kotatsu.core.ui.widgets.ListItemTextView
|
app:drawableStartCompat="@drawable/ic_appearance" />
|
||||||
android:id="@+id/button_settings"
|
|
||||||
android:layout_width="match_parent"
|
<org.koitharu.kotatsu.core.ui.widgets.ListItemTextView
|
||||||
android:layout_height="wrap_content"
|
android:id="@+id/button_settings"
|
||||||
android:text="@string/settings"
|
android:layout_width="match_parent"
|
||||||
app:drawableStartCompat="@drawable/ic_settings" />
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/settings"
|
||||||
</LinearLayout>
|
app:drawableStartCompat="@drawable/ic_settings" />
|
||||||
|
|
||||||
</androidx.core.widget.NestedScrollView>
|
</LinearLayout>
|
||||||
|
|
||||||
|
</androidx.core.widget.NestedScrollView>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|||||||
@ -0,0 +1,35 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<plurals name="new_chapters">
|
||||||
|
<item quantity="one">%1$d nieuwe hoofdstuk</item>
|
||||||
|
<item quantity="other">%1$d nieuwe hoofdstukken</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="chapters">
|
||||||
|
<item quantity="one">%1$d hoofdstuk</item>
|
||||||
|
<item quantity="other">%1$d hoofdstukken</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="minutes_ago">
|
||||||
|
<item quantity="one">%1$d minuut geleden</item>
|
||||||
|
<item quantity="other">%1$d minuten geleden</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="hours_ago">
|
||||||
|
<item quantity="one">%1$d uur geleden</item>
|
||||||
|
<item quantity="other">%1$d uren geleden</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="days_ago">
|
||||||
|
<item quantity="one">%1$d dag geleden</item>
|
||||||
|
<item quantity="other">%1$d dagen geleden</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="months_ago">
|
||||||
|
<item quantity="one">%1$d maand geleden</item>
|
||||||
|
<item quantity="other">%1$d maanden geleden</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="hours">
|
||||||
|
<item quantity="one">%1$d uur</item>
|
||||||
|
<item quantity="other">%1$d uren</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="minutes">
|
||||||
|
<item quantity="one">%1$d minuut</item>
|
||||||
|
<item quantity="other">%1$d minuten</item>
|
||||||
|
</plurals>
|
||||||
|
</resources>
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<string name="chapters">Hoofdstukken</string>
|
||||||
|
<string name="new_chapters">Nieuwe hoofdstukken</string>
|
||||||
|
<string name="favourites">Favorieten</string>
|
||||||
|
<string name="history">Geschiedenis</string>
|
||||||
|
<string name="error_occurred">Er is een fout opgetreden</string>
|
||||||
|
<string name="network_error">Netwerk fout</string>
|
||||||
|
<string name="details">Details</string>
|
||||||
|
<string name="detailed_list">Gedetailleerde lijst</string>
|
||||||
|
<string name="grid">Rooster</string>
|
||||||
|
<string name="list_mode">Lijstmodus</string>
|
||||||
|
<string name="settings">Instellingen</string>
|
||||||
|
<string name="remote_sources">Mangabronnen</string>
|
||||||
|
<string name="loading_">Bezig met laden…</string>
|
||||||
|
<string name="computing_">Computeren…</string>
|
||||||
|
<string name="chapter_d_of_d">Hoofdstuk %1$d van %2$d</string>
|
||||||
|
<string name="close">Sluiten</string>
|
||||||
|
<string name="try_again">Probeer het opnieuw</string>
|
||||||
|
<string name="retry">Opnieuw proberen</string>
|
||||||
|
<string name="clear_history">Geschiedenis wissen</string>
|
||||||
|
</resources>
|
||||||
Loading…
Reference in New Issue