mirror of
https://github.com/mihonapp/mihon.git
synced 2025-11-12 12:08:56 +01:00
Replace AboutLibraries activity with custom controller
This commit is contained in:
@@ -7,11 +7,11 @@ import android.view.LayoutInflater
|
||||
import android.widget.FrameLayout
|
||||
import androidx.core.view.isVisible
|
||||
import com.google.android.material.progressindicator.BaseProgressIndicator
|
||||
import com.mikepenz.aboutlibraries.util.getThemeColor
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.download.model.Download
|
||||
import eu.kanade.tachiyomi.databinding.ChapterDownloadViewBinding
|
||||
import eu.kanade.tachiyomi.util.system.dpToPx
|
||||
import eu.kanade.tachiyomi.util.system.getThemeColor
|
||||
import eu.kanade.tachiyomi.util.view.setVectorCompat
|
||||
|
||||
class ChapterDownloadView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
|
||||
|
||||
@@ -5,7 +5,6 @@ import android.os.Bundle
|
||||
import androidx.core.os.bundleOf
|
||||
import androidx.preference.PreferenceScreen
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import com.mikepenz.aboutlibraries.LibsBuilder
|
||||
import eu.kanade.tachiyomi.BuildConfig
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.updater.GithubUpdateChecker
|
||||
@@ -14,6 +13,8 @@ import eu.kanade.tachiyomi.data.updater.UpdaterService
|
||||
import eu.kanade.tachiyomi.ui.base.controller.DialogController
|
||||
import eu.kanade.tachiyomi.ui.base.controller.NoToolbarElevationController
|
||||
import eu.kanade.tachiyomi.ui.base.controller.openInBrowser
|
||||
import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
|
||||
import eu.kanade.tachiyomi.ui.more.licenses.LicensesController
|
||||
import eu.kanade.tachiyomi.ui.setting.SettingsController
|
||||
import eu.kanade.tachiyomi.util.CrashLogUtil
|
||||
import eu.kanade.tachiyomi.util.lang.launchNow
|
||||
@@ -84,13 +85,7 @@ class AboutController : SettingsController(), NoToolbarElevationController {
|
||||
key = "pref_about_licenses"
|
||||
titleRes = R.string.licenses
|
||||
onClick {
|
||||
LibsBuilder()
|
||||
.withActivityTitle(activity!!.getString(R.string.licenses))
|
||||
.withAboutIconShown(false)
|
||||
.withAboutVersionShown(false)
|
||||
.withLicenseShown(true)
|
||||
.withEdgeToEdge(true)
|
||||
.start(activity!!)
|
||||
router.pushController(LicensesController().withFadeTransaction())
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
package eu.kanade.tachiyomi.ui.more.licenses
|
||||
|
||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||
|
||||
class LicensesAdapter(controller: LicensesController) :
|
||||
FlexibleAdapter<LicensesItem>(null, controller, true)
|
||||
@@ -0,0 +1,63 @@
|
||||
package eu.kanade.tachiyomi.ui.more.licenses
|
||||
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.mikepenz.aboutlibraries.Libs
|
||||
import dev.chrisbanes.insetter.applyInsetter
|
||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.databinding.LicensesControllerBinding
|
||||
import eu.kanade.tachiyomi.ui.base.controller.BaseController
|
||||
import eu.kanade.tachiyomi.util.system.openInBrowser
|
||||
|
||||
class LicensesController :
|
||||
BaseController<LicensesControllerBinding>(),
|
||||
FlexibleAdapter.OnItemClickListener {
|
||||
|
||||
private var adapter: LicensesAdapter? = null
|
||||
|
||||
override fun getTitle(): String? {
|
||||
return resources?.getString(R.string.licenses)
|
||||
}
|
||||
|
||||
override fun createBinding(inflater: LayoutInflater) = LicensesControllerBinding.inflate(inflater)
|
||||
|
||||
override fun onViewCreated(view: View) {
|
||||
super.onViewCreated(view)
|
||||
binding.recycler.applyInsetter {
|
||||
type(navigationBars = true) {
|
||||
padding()
|
||||
}
|
||||
}
|
||||
|
||||
binding.recycler.layoutManager = LinearLayoutManager(view.context)
|
||||
adapter = LicensesAdapter(this)
|
||||
binding.recycler.adapter = adapter
|
||||
|
||||
val licenseItems = Libs(view.context).libraries
|
||||
.sortedBy { it.libraryName.lowercase() }
|
||||
.map { LicensesItem(it) }
|
||||
adapter?.updateDataSet(licenseItems)
|
||||
}
|
||||
|
||||
override fun onDestroyView(view: View) {
|
||||
adapter = null
|
||||
super.onDestroyView(view)
|
||||
}
|
||||
|
||||
override fun onItemClick(view: View, position: Int): Boolean {
|
||||
val adapter = adapter ?: return false
|
||||
|
||||
val item = adapter.getItem(position) ?: return false
|
||||
openLicenseWebsite(item)
|
||||
return true
|
||||
}
|
||||
|
||||
private fun openLicenseWebsite(item: LicensesItem) {
|
||||
val website = item.library.libraryWebsite
|
||||
if (website.isNotEmpty()) {
|
||||
activity?.openInBrowser(website)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package eu.kanade.tachiyomi.ui.more.licenses
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.view.View
|
||||
import com.mikepenz.aboutlibraries.entity.Library
|
||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||
import eu.davidea.viewholders.FlexibleViewHolder
|
||||
import eu.kanade.tachiyomi.databinding.LicensesItemBinding
|
||||
|
||||
class LicensesHolder(view: View, adapter: FlexibleAdapter<*>) :
|
||||
FlexibleViewHolder(view, adapter) {
|
||||
|
||||
private val binding = LicensesItemBinding.bind(view)
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
fun bind(library: Library) {
|
||||
binding.name.text = "${library.libraryName} ${library.libraryVersion}"
|
||||
binding.artifactId.text = library.libraryArtifactId
|
||||
binding.license.text = library.licenses?.joinToString { it.licenseName }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
package eu.kanade.tachiyomi.ui.more.licenses
|
||||
|
||||
import android.view.View
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.mikepenz.aboutlibraries.entity.Library
|
||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem
|
||||
import eu.davidea.flexibleadapter.items.IFlexible
|
||||
import eu.kanade.tachiyomi.R
|
||||
|
||||
class LicensesItem(val library: Library) : AbstractFlexibleItem<LicensesHolder>() {
|
||||
|
||||
override fun getLayoutRes(): Int {
|
||||
return R.layout.licenses_item
|
||||
}
|
||||
|
||||
override fun createViewHolder(view: View, adapter: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>>): LicensesHolder {
|
||||
return LicensesHolder(view, adapter)
|
||||
}
|
||||
|
||||
override fun bindViewHolder(
|
||||
adapter: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>>,
|
||||
holder: LicensesHolder,
|
||||
position: Int,
|
||||
payloads: List<Any?>?
|
||||
) {
|
||||
holder.bind(library)
|
||||
}
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
if (this === other) return true
|
||||
if (other is LicensesItem) {
|
||||
return library.hashCode() == other.hashCode()
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
override fun hashCode(): Int {
|
||||
return library.hashCode()
|
||||
}
|
||||
}
|
||||
@@ -35,7 +35,6 @@ import androidx.core.view.isVisible
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
|
||||
import com.google.android.material.shape.MaterialShapeDrawable
|
||||
import com.mikepenz.aboutlibraries.util.getThemeColor
|
||||
import dev.chrisbanes.insetter.applyInsetter
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||
@@ -62,6 +61,7 @@ import eu.kanade.tachiyomi.ui.reader.viewer.BaseViewer
|
||||
import eu.kanade.tachiyomi.ui.reader.viewer.pager.R2LPagerViewer
|
||||
import eu.kanade.tachiyomi.util.storage.getUriCompat
|
||||
import eu.kanade.tachiyomi.util.system.GLUtil
|
||||
import eu.kanade.tachiyomi.util.system.getThemeColor
|
||||
import eu.kanade.tachiyomi.util.system.hasDisplayCutout
|
||||
import eu.kanade.tachiyomi.util.system.isNightMode
|
||||
import eu.kanade.tachiyomi.util.system.toast
|
||||
|
||||
@@ -6,8 +6,8 @@ import android.graphics.Canvas
|
||||
import android.util.AttributeSet
|
||||
import android.view.MotionEvent
|
||||
import androidx.appcompat.widget.AppCompatSeekBar
|
||||
import com.mikepenz.aboutlibraries.util.getThemeColor
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.util.system.getThemeColor
|
||||
|
||||
/**
|
||||
* Seekbar to show current chapter progress.
|
||||
|
||||
Reference in New Issue
Block a user