Remove Hentai Cafe Delegation
This commit is contained in:
parent
04200bb590
commit
84abe044a3
@ -15,7 +15,6 @@ import eu.kanade.tachiyomi.source.online.all.NHentai
|
|||||||
import eu.kanade.tachiyomi.source.online.all.PervEden
|
import eu.kanade.tachiyomi.source.online.all.PervEden
|
||||||
import eu.kanade.tachiyomi.source.online.english.EightMuses
|
import eu.kanade.tachiyomi.source.online.english.EightMuses
|
||||||
import eu.kanade.tachiyomi.source.online.english.HBrowse
|
import eu.kanade.tachiyomi.source.online.english.HBrowse
|
||||||
import eu.kanade.tachiyomi.source.online.english.HentaiCafe
|
|
||||||
import eu.kanade.tachiyomi.source.online.english.Pururin
|
import eu.kanade.tachiyomi.source.online.english.Pururin
|
||||||
import eu.kanade.tachiyomi.source.online.english.Tsumino
|
import eu.kanade.tachiyomi.source.online.english.Tsumino
|
||||||
import exh.log.xLogD
|
import exh.log.xLogD
|
||||||
@ -26,7 +25,6 @@ import exh.source.EIGHTMUSES_SOURCE_ID
|
|||||||
import exh.source.EXH_SOURCE_ID
|
import exh.source.EXH_SOURCE_ID
|
||||||
import exh.source.EnhancedHttpSource
|
import exh.source.EnhancedHttpSource
|
||||||
import exh.source.HBROWSE_SOURCE_ID
|
import exh.source.HBROWSE_SOURCE_ID
|
||||||
import exh.source.HENTAI_CAFE_SOURCE_ID
|
|
||||||
import exh.source.PERV_EDEN_EN_SOURCE_ID
|
import exh.source.PERV_EDEN_EN_SOURCE_ID
|
||||||
import exh.source.PERV_EDEN_IT_SOURCE_ID
|
import exh.source.PERV_EDEN_IT_SOURCE_ID
|
||||||
import exh.source.PURURIN_SOURCE_ID
|
import exh.source.PURURIN_SOURCE_ID
|
||||||
@ -194,12 +192,6 @@ open class SourceManager(private val context: Context) {
|
|||||||
companion object {
|
companion object {
|
||||||
private const val fillInSourceId = Long.MAX_VALUE
|
private const val fillInSourceId = Long.MAX_VALUE
|
||||||
val DELEGATED_SOURCES = listOf(
|
val DELEGATED_SOURCES = listOf(
|
||||||
DelegatedSource(
|
|
||||||
"Hentai Cafe",
|
|
||||||
HENTAI_CAFE_SOURCE_ID,
|
|
||||||
"eu.kanade.tachiyomi.extension.en.hentaicafe.HentaiCafe",
|
|
||||||
HentaiCafe::class
|
|
||||||
),
|
|
||||||
DelegatedSource(
|
DelegatedSource(
|
||||||
"Pururin",
|
"Pururin",
|
||||||
PURURIN_SOURCE_ID,
|
PURURIN_SOURCE_ID,
|
||||||
|
@ -1,143 +0,0 @@
|
|||||||
package eu.kanade.tachiyomi.source.online.english
|
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.net.Uri
|
|
||||||
import eu.kanade.tachiyomi.network.asObservableSuccess
|
|
||||||
import eu.kanade.tachiyomi.network.await
|
|
||||||
import eu.kanade.tachiyomi.source.model.FilterList
|
|
||||||
import eu.kanade.tachiyomi.source.model.SChapter
|
|
||||||
import eu.kanade.tachiyomi.source.model.SManga
|
|
||||||
import eu.kanade.tachiyomi.source.model.toSManga
|
|
||||||
import eu.kanade.tachiyomi.source.online.HttpSource
|
|
||||||
import eu.kanade.tachiyomi.source.online.MetadataSource
|
|
||||||
import eu.kanade.tachiyomi.source.online.UrlImportableSource
|
|
||||||
import eu.kanade.tachiyomi.ui.manga.MangaController
|
|
||||||
import eu.kanade.tachiyomi.util.asJsoup
|
|
||||||
import eu.kanade.tachiyomi.util.lang.runAsObservable
|
|
||||||
import exh.metadata.metadata.HentaiCafeSearchMetadata
|
|
||||||
import exh.metadata.metadata.HentaiCafeSearchMetadata.Companion.TAG_TYPE_DEFAULT
|
|
||||||
import exh.metadata.metadata.base.RaisedSearchMetadata.Companion.TAG_TYPE_VIRTUAL
|
|
||||||
import exh.metadata.metadata.base.RaisedTag
|
|
||||||
import exh.source.DelegatedHttpSource
|
|
||||||
import exh.ui.metadata.adapters.HentaiCafeDescriptionAdapter
|
|
||||||
import exh.util.urlImportFetchSearchManga
|
|
||||||
import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
|
|
||||||
import org.jsoup.nodes.Document
|
|
||||||
import rx.Observable
|
|
||||||
import tachiyomi.source.model.ChapterInfo
|
|
||||||
import tachiyomi.source.model.MangaInfo
|
|
||||||
|
|
||||||
class HentaiCafe(delegate: HttpSource, val context: Context) :
|
|
||||||
DelegatedHttpSource(delegate),
|
|
||||||
MetadataSource<HentaiCafeSearchMetadata, Document>,
|
|
||||||
UrlImportableSource {
|
|
||||||
/**
|
|
||||||
* An ISO 639-1 compliant language code (two letters in lower case).
|
|
||||||
*/
|
|
||||||
override val lang = "en"
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The class of the metadata used by this source
|
|
||||||
*/
|
|
||||||
override val metaClass = HentaiCafeSearchMetadata::class
|
|
||||||
|
|
||||||
// Support direct URL importing
|
|
||||||
override fun fetchSearchManga(page: Int, query: String, filters: FilterList) =
|
|
||||||
urlImportFetchSearchManga(context, query) {
|
|
||||||
super.fetchSearchManga(page, query, filters)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun fetchMangaDetails(manga: SManga): Observable<SManga> {
|
|
||||||
return client.newCall(mangaDetailsRequest(manga))
|
|
||||||
.asObservableSuccess()
|
|
||||||
.flatMap {
|
|
||||||
parseToManga(manga, it.asJsoup()).andThen(
|
|
||||||
Observable.just(
|
|
||||||
manga.apply {
|
|
||||||
initialized = true
|
|
||||||
}
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override suspend fun getMangaDetails(manga: MangaInfo): MangaInfo {
|
|
||||||
val response = client.newCall(mangaDetailsRequest(manga.toSManga())).await()
|
|
||||||
return parseToManga(manga, response.asJsoup())
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Parse the supplied input into the supplied metadata object
|
|
||||||
*/
|
|
||||||
override fun parseIntoMetadata(metadata: HentaiCafeSearchMetadata, input: Document) {
|
|
||||||
with(metadata) {
|
|
||||||
url = input.location()
|
|
||||||
title = input.select("h3").text()
|
|
||||||
val contentElement = input.select(".entry-content").first()
|
|
||||||
thumbnailUrl = contentElement.child(0).child(0).attr("src")
|
|
||||||
|
|
||||||
fun filterableTagsOfType(type: String) = contentElement.select("a")
|
|
||||||
.filter { "$baseUrl/hc.fyi/$type/" in it.attr("href") }
|
|
||||||
.map { it.text() }
|
|
||||||
|
|
||||||
tags.clear()
|
|
||||||
tags += filterableTagsOfType("tag").map {
|
|
||||||
RaisedTag(null, it, TAG_TYPE_DEFAULT)
|
|
||||||
}
|
|
||||||
|
|
||||||
val artists = filterableTagsOfType("artist")
|
|
||||||
|
|
||||||
artist = artists.joinToString()
|
|
||||||
tags += artists.map {
|
|
||||||
RaisedTag("artist", it, TAG_TYPE_VIRTUAL)
|
|
||||||
}
|
|
||||||
|
|
||||||
readerId = input.select("[title=Read]").attr("href").toHttpUrlOrNull()!!.pathSegments[2]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun fetchChapterList(manga: SManga) = runAsObservable({
|
|
||||||
fetchOrLoadMetadata(manga.id) {
|
|
||||||
val response = client.newCall(mangaDetailsRequest(manga)).await()
|
|
||||||
response.asJsoup()
|
|
||||||
}
|
|
||||||
}).map {
|
|
||||||
listOf(
|
|
||||||
SChapter.create().apply {
|
|
||||||
url = "/manga/read/${it.readerId}/en/0/1/"
|
|
||||||
name = "Chapter"
|
|
||||||
chapter_number = 0.0f
|
|
||||||
}
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
override suspend fun getChapterList(manga: MangaInfo): List<ChapterInfo> {
|
|
||||||
val metadata = fetchOrLoadMetadata(manga.id()) {
|
|
||||||
val response = client.newCall(mangaDetailsRequest(manga.toSManga())).await()
|
|
||||||
response.asJsoup()
|
|
||||||
}
|
|
||||||
return listOf(
|
|
||||||
ChapterInfo(
|
|
||||||
key = "/manga/read/${metadata.readerId}/en/0/1/",
|
|
||||||
name = "Chapter",
|
|
||||||
number = 0F
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
override val matchingHosts = listOf(
|
|
||||||
"hentai.cafe"
|
|
||||||
)
|
|
||||||
|
|
||||||
override suspend fun mapUrlToMangaUrl(uri: Uri): String? {
|
|
||||||
val lcFirstPathSegment = uri.pathSegments.firstOrNull()?.takeUnless { it.equals("manga", true) } ?: return null
|
|
||||||
|
|
||||||
return if (lcFirstPathSegment.equals("hc.fyi", true)) {
|
|
||||||
"/$lcFirstPathSegment/${uri.pathSegments[1]}"
|
|
||||||
} else null
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getDescriptionAdapter(controller: MangaController): HentaiCafeDescriptionAdapter {
|
|
||||||
return HentaiCafeDescriptionAdapter(controller)
|
|
||||||
}
|
|
||||||
}
|
|
@ -26,7 +26,6 @@ import exh.merged.sql.models.MergedMangaReference
|
|||||||
import exh.source.BlacklistedSources
|
import exh.source.BlacklistedSources
|
||||||
import exh.source.EH_SOURCE_ID
|
import exh.source.EH_SOURCE_ID
|
||||||
import exh.source.HBROWSE_SOURCE_ID
|
import exh.source.HBROWSE_SOURCE_ID
|
||||||
import exh.source.HENTAI_CAFE_SOURCE_ID
|
|
||||||
import exh.source.MERGED_SOURCE_ID
|
import exh.source.MERGED_SOURCE_ID
|
||||||
import exh.source.PERV_EDEN_EN_SOURCE_ID
|
import exh.source.PERV_EDEN_EN_SOURCE_ID
|
||||||
import exh.source.PERV_EDEN_IT_SOURCE_ID
|
import exh.source.PERV_EDEN_IT_SOURCE_ID
|
||||||
@ -241,11 +240,6 @@ object EXHMigrations {
|
|||||||
manga.url = getUrlWithoutDomain(manga.url)
|
manga.url = getUrlWithoutDomain(manga.url)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Migrate HentaiCafe source IDs
|
|
||||||
if (manga.source == 6908L) {
|
|
||||||
manga.source = HENTAI_CAFE_SOURCE_ID
|
|
||||||
}
|
|
||||||
|
|
||||||
// Migrate Tsumino source IDs
|
// Migrate Tsumino source IDs
|
||||||
if (manga.source == 6909L) {
|
if (manga.source == 6909L) {
|
||||||
manga.source = TSUMINO_SOURCE_ID
|
manga.source = TSUMINO_SOURCE_ID
|
||||||
|
@ -1,72 +0,0 @@
|
|||||||
package exh.metadata.metadata
|
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import eu.kanade.tachiyomi.R
|
|
||||||
import exh.metadata.metadata.base.RaisedSearchMetadata
|
|
||||||
import kotlinx.serialization.Serializable
|
|
||||||
import tachiyomi.source.model.MangaInfo
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class HentaiCafeSearchMetadata : RaisedSearchMetadata() {
|
|
||||||
var hcId: String? = null
|
|
||||||
var readerId: String? = null
|
|
||||||
|
|
||||||
var url get() = hcId?.let { "$BASE_URL/$it" }
|
|
||||||
set(a) {
|
|
||||||
a?.let {
|
|
||||||
hcId = hcIdFromUrl(a)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var thumbnailUrl: String? = null
|
|
||||||
|
|
||||||
var title by titleDelegate(TITLE_TYPE_MAIN)
|
|
||||||
|
|
||||||
var artist: String? = null
|
|
||||||
|
|
||||||
override fun createMangaInfo(manga: MangaInfo): MangaInfo {
|
|
||||||
val cover = thumbnailUrl
|
|
||||||
|
|
||||||
val title = title
|
|
||||||
val artist = artist
|
|
||||||
val author = artist
|
|
||||||
|
|
||||||
// Not available
|
|
||||||
val status = MangaInfo.UNKNOWN
|
|
||||||
|
|
||||||
val genres = tagsToGenreList()
|
|
||||||
|
|
||||||
val description = "meta"
|
|
||||||
|
|
||||||
return manga.copy(
|
|
||||||
cover = cover ?: manga.cover,
|
|
||||||
title = title ?: manga.title,
|
|
||||||
artist = artist ?: manga.artist,
|
|
||||||
author = author ?: manga.author,
|
|
||||||
status = status,
|
|
||||||
genres = genres,
|
|
||||||
description = description
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getExtraInfoPairs(context: Context): List<Pair<String, String>> {
|
|
||||||
val pairs = mutableListOf<Pair<String, String>>()
|
|
||||||
hcId?.let { pairs += context.getString(R.string.id) to it }
|
|
||||||
readerId?.let { pairs += context.getString(R.string.reader_id) to it }
|
|
||||||
thumbnailUrl?.let { pairs += context.getString(R.string.thumbnail_url) to it }
|
|
||||||
title?.let { pairs += context.getString(R.string.title) to it }
|
|
||||||
artist?.let { pairs += context.getString(R.string.artist) to it }
|
|
||||||
return pairs
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
private const val TITLE_TYPE_MAIN = 0
|
|
||||||
|
|
||||||
const val TAG_TYPE_DEFAULT = 0
|
|
||||||
|
|
||||||
const val BASE_URL = "https://hentai.cafe"
|
|
||||||
|
|
||||||
fun hcIdFromUrl(url: String) =
|
|
||||||
url.split("/").last { it.isNotBlank() }
|
|
||||||
}
|
|
||||||
}
|
|
@ -8,7 +8,6 @@ import exh.metadata.forEach
|
|||||||
import exh.metadata.metadata.EHentaiSearchMetadata
|
import exh.metadata.metadata.EHentaiSearchMetadata
|
||||||
import exh.metadata.metadata.EightMusesSearchMetadata
|
import exh.metadata.metadata.EightMusesSearchMetadata
|
||||||
import exh.metadata.metadata.HBrowseSearchMetadata
|
import exh.metadata.metadata.HBrowseSearchMetadata
|
||||||
import exh.metadata.metadata.HentaiCafeSearchMetadata
|
|
||||||
import exh.metadata.metadata.HitomiSearchMetadata
|
import exh.metadata.metadata.HitomiSearchMetadata
|
||||||
import exh.metadata.metadata.MangaDexSearchMetadata
|
import exh.metadata.metadata.MangaDexSearchMetadata
|
||||||
import exh.metadata.metadata.NHentaiSearchMetadata
|
import exh.metadata.metadata.NHentaiSearchMetadata
|
||||||
@ -161,7 +160,6 @@ abstract class RaisedSearchMetadata {
|
|||||||
subclass(EHentaiSearchMetadata::class)
|
subclass(EHentaiSearchMetadata::class)
|
||||||
subclass(EightMusesSearchMetadata::class)
|
subclass(EightMusesSearchMetadata::class)
|
||||||
subclass(HBrowseSearchMetadata::class)
|
subclass(HBrowseSearchMetadata::class)
|
||||||
subclass(HentaiCafeSearchMetadata::class)
|
|
||||||
subclass(HitomiSearchMetadata::class)
|
subclass(HitomiSearchMetadata::class)
|
||||||
subclass(MangaDexSearchMetadata::class)
|
subclass(MangaDexSearchMetadata::class)
|
||||||
subclass(NHentaiSearchMetadata::class)
|
subclass(NHentaiSearchMetadata::class)
|
||||||
|
@ -9,7 +9,6 @@ import eu.kanade.tachiyomi.source.online.all.NHentai
|
|||||||
import eu.kanade.tachiyomi.source.online.all.PervEden
|
import eu.kanade.tachiyomi.source.online.all.PervEden
|
||||||
import eu.kanade.tachiyomi.source.online.english.EightMuses
|
import eu.kanade.tachiyomi.source.online.english.EightMuses
|
||||||
import eu.kanade.tachiyomi.source.online.english.HBrowse
|
import eu.kanade.tachiyomi.source.online.english.HBrowse
|
||||||
import eu.kanade.tachiyomi.source.online.english.HentaiCafe
|
|
||||||
import eu.kanade.tachiyomi.source.online.english.Pururin
|
import eu.kanade.tachiyomi.source.online.english.Pururin
|
||||||
import eu.kanade.tachiyomi.source.online.english.Tsumino
|
import eu.kanade.tachiyomi.source.online.english.Tsumino
|
||||||
|
|
||||||
@ -23,7 +22,6 @@ const val EH_SOURCE_ID = LEWD_SOURCE_SERIES + 1
|
|||||||
const val EXH_SOURCE_ID = LEWD_SOURCE_SERIES + 2
|
const val EXH_SOURCE_ID = LEWD_SOURCE_SERIES + 2
|
||||||
const val PERV_EDEN_EN_SOURCE_ID = 4673633799850248749
|
const val PERV_EDEN_EN_SOURCE_ID = 4673633799850248749
|
||||||
const val PERV_EDEN_IT_SOURCE_ID = 1433898225963724122
|
const val PERV_EDEN_IT_SOURCE_ID = 1433898225963724122
|
||||||
const val HENTAI_CAFE_SOURCE_ID = 260868874183818481
|
|
||||||
const val PURURIN_SOURCE_ID = 2221515250486218861
|
const val PURURIN_SOURCE_ID = 2221515250486218861
|
||||||
const val TSUMINO_SOURCE_ID = 6707338697138388238
|
const val TSUMINO_SOURCE_ID = 6707338697138388238
|
||||||
const val EIGHTMUSES_SOURCE_ID = 1802675169972965535
|
const val EIGHTMUSES_SOURCE_ID = 1802675169972965535
|
||||||
@ -32,7 +30,6 @@ const val MERGED_SOURCE_ID = LEWD_SOURCE_SERIES + 69
|
|||||||
|
|
||||||
private val DELEGATED_METADATA_SOURCES by lazy {
|
private val DELEGATED_METADATA_SOURCES by lazy {
|
||||||
listOf(
|
listOf(
|
||||||
HentaiCafe::class,
|
|
||||||
Pururin::class,
|
Pururin::class,
|
||||||
Tsumino::class,
|
Tsumino::class,
|
||||||
HBrowse::class,
|
HBrowse::class,
|
||||||
@ -55,7 +52,6 @@ var mangaDexSourceIds: List<Long> = emptyList()
|
|||||||
var LIBRARY_UPDATE_EXCLUDED_SOURCES = listOf(
|
var LIBRARY_UPDATE_EXCLUDED_SOURCES = listOf(
|
||||||
EH_SOURCE_ID,
|
EH_SOURCE_ID,
|
||||||
EXH_SOURCE_ID,
|
EXH_SOURCE_ID,
|
||||||
HENTAI_CAFE_SOURCE_ID,
|
|
||||||
TSUMINO_SOURCE_ID,
|
TSUMINO_SOURCE_ID,
|
||||||
PURURIN_SOURCE_ID
|
PURURIN_SOURCE_ID
|
||||||
)
|
)
|
||||||
@ -92,7 +88,6 @@ fun handleSourceLibrary() {
|
|||||||
LIBRARY_UPDATE_EXCLUDED_SOURCES = listOf(
|
LIBRARY_UPDATE_EXCLUDED_SOURCES = listOf(
|
||||||
EH_SOURCE_ID,
|
EH_SOURCE_ID,
|
||||||
EXH_SOURCE_ID,
|
EXH_SOURCE_ID,
|
||||||
HENTAI_CAFE_SOURCE_ID,
|
|
||||||
TSUMINO_SOURCE_ID,
|
TSUMINO_SOURCE_ID,
|
||||||
PURURIN_SOURCE_ID
|
PURURIN_SOURCE_ID
|
||||||
) + hitomiSourceIds + nHentaiSourceIds
|
) + hitomiSourceIds + nHentaiSourceIds
|
||||||
|
@ -1,60 +0,0 @@
|
|||||||
package exh.ui.metadata.adapters
|
|
||||||
|
|
||||||
import android.view.LayoutInflater
|
|
||||||
import android.view.View
|
|
||||||
import android.view.ViewGroup
|
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
|
||||||
import eu.kanade.tachiyomi.R
|
|
||||||
import eu.kanade.tachiyomi.databinding.DescriptionAdapterHcBinding
|
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
|
|
||||||
import eu.kanade.tachiyomi.ui.manga.MangaController
|
|
||||||
import eu.kanade.tachiyomi.util.system.copyToClipboard
|
|
||||||
import exh.metadata.bindDrawable
|
|
||||||
import exh.metadata.metadata.HentaiCafeSearchMetadata
|
|
||||||
import exh.ui.metadata.MetadataViewController
|
|
||||||
|
|
||||||
class HentaiCafeDescriptionAdapter(
|
|
||||||
private val controller: MangaController
|
|
||||||
) :
|
|
||||||
RecyclerView.Adapter<HentaiCafeDescriptionAdapter.HentaiCafeDescriptionViewHolder>() {
|
|
||||||
|
|
||||||
private lateinit var binding: DescriptionAdapterHcBinding
|
|
||||||
|
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): HentaiCafeDescriptionViewHolder {
|
|
||||||
binding = DescriptionAdapterHcBinding.inflate(LayoutInflater.from(parent.context), parent, false)
|
|
||||||
return HentaiCafeDescriptionViewHolder(binding.root)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getItemCount(): Int = 1
|
|
||||||
|
|
||||||
override fun onBindViewHolder(holder: HentaiCafeDescriptionViewHolder, position: Int) {
|
|
||||||
holder.bind()
|
|
||||||
}
|
|
||||||
|
|
||||||
inner class HentaiCafeDescriptionViewHolder(view: View) : RecyclerView.ViewHolder(view) {
|
|
||||||
fun bind() {
|
|
||||||
val meta = controller.presenter.meta
|
|
||||||
if (meta == null || meta !is HentaiCafeSearchMetadata) return
|
|
||||||
|
|
||||||
binding.artist.text = meta.artist ?: itemView.context.getString(R.string.unknown)
|
|
||||||
|
|
||||||
binding.moreInfo.bindDrawable(itemView.context, R.drawable.ic_info_24dp)
|
|
||||||
|
|
||||||
binding.artist.setOnLongClickListener {
|
|
||||||
itemView.context.copyToClipboard(
|
|
||||||
binding.artist.text.toString(),
|
|
||||||
binding.artist.text.toString()
|
|
||||||
)
|
|
||||||
true
|
|
||||||
}
|
|
||||||
|
|
||||||
binding.moreInfo.setOnClickListener {
|
|
||||||
controller.router?.pushController(
|
|
||||||
MetadataViewController(
|
|
||||||
controller.manga
|
|
||||||
).withFadeTransaction()
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,27 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<com.google.android.material.textview.MaterialTextView
|
|
||||||
android:id="@+id/artist"
|
|
||||||
style="@style/TextAppearance.Regular.Body1.Secondary"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="16dp"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
|
||||||
|
|
||||||
<Button
|
|
||||||
android:id="@+id/more_info"
|
|
||||||
style="@style/Theme.Widget.Button"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="36dp"
|
|
||||||
android:layout_marginEnd="16dp"
|
|
||||||
android:text="@string/more_info"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
Loading…
x
Reference in New Issue
Block a user