Rewrite and enable genre tag editing
This commit is contained in:
parent
201356afeb
commit
b8129ff4f6
@ -2,10 +2,16 @@ package eu.kanade.tachiyomi.ui.manga
|
||||
|
||||
import android.app.Dialog
|
||||
import android.os.Bundle
|
||||
import android.text.InputType
|
||||
import android.view.View
|
||||
import androidx.core.view.children
|
||||
import com.afollestad.materialdialogs.MaterialDialog
|
||||
import com.afollestad.materialdialogs.customview.customView
|
||||
import com.afollestad.materialdialogs.input.getInputField
|
||||
import com.afollestad.materialdialogs.input.input
|
||||
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
||||
import com.google.android.material.chip.Chip
|
||||
import com.google.android.material.chip.ChipGroup
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||
@ -14,7 +20,8 @@ import eu.kanade.tachiyomi.data.glide.toMangaThumbnail
|
||||
import eu.kanade.tachiyomi.source.LocalSource
|
||||
import eu.kanade.tachiyomi.ui.base.controller.DialogController
|
||||
import eu.kanade.tachiyomi.util.lang.chop
|
||||
import eu.kanade.tachiyomi.util.view.setChips
|
||||
import eu.kanade.tachiyomi.util.system.getResourceColor
|
||||
import exh.util.trimOrNull
|
||||
import kotlinx.android.synthetic.main.edit_manga_dialog.view.manga_artist
|
||||
import kotlinx.android.synthetic.main.edit_manga_dialog.view.manga_author
|
||||
import kotlinx.android.synthetic.main.edit_manga_dialog.view.manga_cover
|
||||
@ -33,7 +40,7 @@ class EditMangaDialog : DialogController {
|
||||
|
||||
// private var customCoverUri: Uri? = null
|
||||
|
||||
private var willResetCover = false
|
||||
// private var willResetCover = false
|
||||
|
||||
private val infoController
|
||||
get() = targetController as MangaAllInOneController
|
||||
@ -77,7 +84,7 @@ class EditMangaDialog : DialogController {
|
||||
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
|
||||
.centerCrop()
|
||||
.into(view.manga_cover)
|
||||
// view.manga_cover.loadAny(manga)
|
||||
|
||||
val isLocal = manga.source == LocalSource.ID
|
||||
|
||||
if (isLocal) {
|
||||
@ -88,7 +95,7 @@ class EditMangaDialog : DialogController {
|
||||
view.manga_author.append(manga.author ?: "")
|
||||
view.manga_artist.append(manga.artist ?: "")
|
||||
view.manga_description.append(manga.description ?: "")
|
||||
view.manga_genres_tags.setChips(manga.genre?.split(", ") ?: emptyList())
|
||||
view.manga_genres_tags.setChips(manga.genre?.split(",")?.map { it.trim() } ?: emptyList())
|
||||
} else {
|
||||
if (manga.title != manga.originalTitle) {
|
||||
view.title.append(manga.title)
|
||||
@ -102,7 +109,7 @@ class EditMangaDialog : DialogController {
|
||||
if (manga.description != manga.originalDescription) {
|
||||
view.manga_description.append(manga.description ?: "")
|
||||
}
|
||||
view.manga_genres_tags.setChips(manga.genre?.split(", ") ?: emptyList())
|
||||
view.manga_genres_tags.setChips(manga.genre?.split(",")?.map { it.trim() } ?: emptyList())
|
||||
|
||||
view.title.hint = "${resources?.getString(R.string.title)}: ${manga.originalTitle}"
|
||||
if (manga.originalAuthor != null) {
|
||||
@ -139,7 +146,7 @@ class EditMangaDialog : DialogController {
|
||||
else dialogView?.manga_genres_tags?.setChips(manga.originalGenre?.split(", "))
|
||||
}
|
||||
|
||||
/* fun updateCover(uri: Uri) {
|
||||
/*fun updateCover(uri: Uri) {
|
||||
willResetCover = false
|
||||
dialogView!!.manga_cover.loadAny(uri)
|
||||
customCoverUri = uri
|
||||
@ -154,25 +161,57 @@ class EditMangaDialog : DialogController {
|
||||
infoController.presenter.updateMangaInfo(
|
||||
dialogView?.title?.text.toString(),
|
||||
dialogView?.manga_author?.text.toString(), dialogView?.manga_artist?.text.toString(),
|
||||
dialogView?.manga_description?.text.toString()
|
||||
dialogView?.manga_description?.text.toString(), dialogView?.manga_genres_tags?.getTextStrings()
|
||||
)
|
||||
// ,
|
||||
// dialogView?.manga_genres_tags?.tags)
|
||||
}
|
||||
|
||||
private fun getAllChips() {
|
||||
dialogView?.manga_genres_tags?.childCount
|
||||
private fun ChipGroup.setChips(items: List<String>?) {
|
||||
removeAllViews()
|
||||
|
||||
/*for (i in 0 until dialogView?.manga_genres_tags?.childCount) {
|
||||
val child: View = getChildAt(i)
|
||||
if (child is Chip) {
|
||||
if (child.isChecked) {
|
||||
checkedIds.add(child.getId())
|
||||
items?.forEach { item ->
|
||||
val chip = Chip(context).apply {
|
||||
text = item
|
||||
|
||||
isCloseIconVisible = true
|
||||
closeIcon?.setTint(context.getResourceColor(R.attr.colorAccent))
|
||||
setOnCloseIconClickListener {
|
||||
removeView(this)
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
addView(chip)
|
||||
}
|
||||
|
||||
val addTagChip = Chip(context).apply {
|
||||
setText(R.string.add_tag)
|
||||
|
||||
chipIcon = context.getDrawable(R.drawable.ic_add_24dp)
|
||||
chipIcon?.setTint(context.getResourceColor(R.attr.colorAccent))
|
||||
textStartPadding = 0F
|
||||
|
||||
setOnClickListener {
|
||||
MaterialDialog(context)
|
||||
.title(R.string.add_tag)
|
||||
.input(inputType = InputType.TYPE_CLASS_TEXT)
|
||||
.positiveButton(android.R.string.ok) {
|
||||
val newTag = it.getInputField().text.toString().trimOrNull()
|
||||
|
||||
if (items != null && newTag != null) setChips(items + listOf(newTag))
|
||||
else if (newTag != null) setChips(listOf(newTag))
|
||||
}
|
||||
.negativeButton(android.R.string.cancel)
|
||||
.show()
|
||||
}
|
||||
}
|
||||
addView(addTagChip)
|
||||
}
|
||||
|
||||
private fun ChipGroup.getTextStrings(): List<String>? = children.mapNotNull {
|
||||
if (it is Chip && !it.text.toString().contains(context.getString(R.string.add_tag), ignoreCase = true)) {
|
||||
it.text.toString()
|
||||
} else null
|
||||
}.toList()
|
||||
|
||||
private companion object {
|
||||
const val KEY_MANGA = "manga_id"
|
||||
}
|
||||
|
@ -204,31 +204,31 @@ class MangaAllInOnePresenter(
|
||||
title: String?,
|
||||
author: String?,
|
||||
artist: String?,
|
||||
description: String?
|
||||
// tags: Array<String>?
|
||||
description: String?,
|
||||
tags: List<String>?
|
||||
) {
|
||||
if (manga.source == LocalSource.ID) {
|
||||
manga.title = if (title.isNullOrBlank()) manga.url else title.trim()
|
||||
manga.author = author?.trimOrNull()
|
||||
manga.artist = artist?.trimOrNull()
|
||||
manga.description = description?.trimOrNull()
|
||||
/*val tagsString = tags?.joinToString(", ") { it.capitalize() }*/
|
||||
/*manga.genre = if (tags.isNullOrEmpty()) null else tagsString?.trim()*/
|
||||
val tagsString = tags?.joinToString(", ")
|
||||
manga.genre = if (tags.isNullOrEmpty()) null else tagsString?.trim()
|
||||
LocalSource(downloadManager.context).updateMangaInfo(manga)
|
||||
db.updateMangaInfo(manga).executeAsBlocking()
|
||||
} else {
|
||||
/*val genre = if (!tags.isNullOrEmpty() && tags.joinToString(", ") != manga.genre) {
|
||||
tags.map { it.capitalize() }.toTypedArray()
|
||||
} else {
|
||||
null
|
||||
}*/
|
||||
val genre = if (!tags.isNullOrEmpty() && tags.joinToString(", ") != manga.genre) {
|
||||
tags.toTypedArray()
|
||||
} else {
|
||||
null
|
||||
}
|
||||
val manga = CustomMangaManager.MangaJson(
|
||||
manga.id!!,
|
||||
title?.trimOrNull(),
|
||||
author?.trimOrNull(),
|
||||
artist?.trimOrNull(),
|
||||
description?.trimOrNull()
|
||||
// genre
|
||||
description?.trimOrNull(),
|
||||
genre
|
||||
)
|
||||
customMangaManager.saveMangaInfo(manga)
|
||||
}
|
||||
|
@ -35,44 +35,72 @@
|
||||
android:layout_marginStart="16dp"
|
||||
android:text="@string/reset_cover" />-->
|
||||
|
||||
<EditText
|
||||
android:id="@+id/title"
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
style="@style/Theme.Widget.TextInputLayout.OutlinedBox.Dense"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/title"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:inputType="text"
|
||||
android:maxLines="1"/>
|
||||
<EditText
|
||||
android:id="@+id/manga_author"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="Artist"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:inputType="text"
|
||||
android:maxLines="1"/>
|
||||
android:layout_marginEnd="16dp">
|
||||
|
||||
<EditText
|
||||
android:id="@+id/manga_artist"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="Author"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:inputType="text"
|
||||
android:maxLines="1"/>
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="text"
|
||||
android:maxLines="1"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/manga_description"
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
style="@style/Theme.Widget.TextInputLayout.OutlinedBox.Dense"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:hint="@string/description"
|
||||
android:inputType="text|textMultiLine"
|
||||
android:scrollHorizontally="false" />
|
||||
android:layout_marginEnd="16dp">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/manga_author"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="text"
|
||||
android:maxLines="1"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
style="@style/Theme.Widget.TextInputLayout.OutlinedBox.Dense"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/manga_artist"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="text"
|
||||
android:maxLines="1"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
style="@style/Theme.Widget.TextInputLayout.OutlinedBox.Dense"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/manga_description"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="text|textMultiLine"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.chip.ChipGroup
|
||||
android:id="@+id/manga_genres_tags"
|
||||
@ -87,11 +115,11 @@
|
||||
android:id="@+id/reset_tags"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
|
||||
style="@style/Theme.Widget.Button.FilledAccent"
|
||||
android:textAllCaps="false"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:text="Clear Tags" />
|
||||
android:text="@string/reset_tags" />
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
|
@ -125,6 +125,7 @@
|
||||
<string name="pref_latest_tab_language_code">Display language code next to name</string>
|
||||
<string name="no_source_categories">No source categories available</string>
|
||||
<string name="invalid_category_name">Invalid category name</string>
|
||||
<string name="add_tag">Add Tag</string>
|
||||
|
||||
<!-- AZ -->
|
||||
<string name="az_recommends">See Recommendations</string>
|
||||
@ -135,5 +136,6 @@
|
||||
<string name="manhua">Manhua</string>
|
||||
<string name="comic">Comic</string>
|
||||
<string name="webtoon">Webtoon</string>
|
||||
<string name="reset_tags">Reset Tags</string>
|
||||
|
||||
</resources>
|
Loading…
x
Reference in New Issue
Block a user