parent
459759bfe5
commit
90b312a56e
5 changed files with 40 additions and 6 deletions
|
@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.ui.browse.extension
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import androidx.core.view.isVisible
|
||||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||||
import eu.davidea.viewholders.FlexibleViewHolder
|
import eu.davidea.viewholders.FlexibleViewHolder
|
||||||
import eu.kanade.tachiyomi.databinding.SectionHeaderItemBinding
|
import eu.kanade.tachiyomi.databinding.SectionHeaderItemBinding
|
||||||
|
@ -17,7 +18,10 @@ class ExtensionGroupHolder(view: View, adapter: FlexibleAdapter<*>) :
|
||||||
if (item.showSize) {
|
if (item.showSize) {
|
||||||
text += " (${item.size})"
|
text += " (${item.size})"
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.title.text = text
|
binding.title.text = text
|
||||||
|
|
||||||
|
binding.actionButton.isVisible = item.actionLabel != null && item.actionOnClick != null
|
||||||
|
binding.actionButton.text = item.actionLabel
|
||||||
|
binding.actionButton.setOnClickListener(if (item.actionLabel != null) item.actionOnClick else null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,14 @@ import eu.kanade.tachiyomi.R
|
||||||
* @param name The header name.
|
* @param name The header name.
|
||||||
* @param size The number of items in the group.
|
* @param size The number of items in the group.
|
||||||
*/
|
*/
|
||||||
data class ExtensionGroupItem(val name: String, val size: Int, val showSize: Boolean = false) : AbstractHeaderItem<ExtensionGroupHolder>() {
|
data class ExtensionGroupItem(
|
||||||
|
val name: String,
|
||||||
|
val size: Int,
|
||||||
|
val showSize: Boolean = false
|
||||||
|
) : AbstractHeaderItem<ExtensionGroupHolder>() {
|
||||||
|
|
||||||
|
var actionLabel: String? = null
|
||||||
|
var actionOnClick: (View.OnClickListener)? = null
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the layout resource of this item.
|
* Returns the layout resource of this item.
|
||||||
|
|
|
@ -2,7 +2,9 @@ package eu.kanade.tachiyomi.ui.browse.extension
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.view.View
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
|
import eu.kanade.tachiyomi.data.preference.PreferenceValues
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import eu.kanade.tachiyomi.extension.ExtensionManager
|
import eu.kanade.tachiyomi.extension.ExtensionManager
|
||||||
import eu.kanade.tachiyomi.extension.model.Extension
|
import eu.kanade.tachiyomi.extension.model.Extension
|
||||||
|
@ -76,6 +78,14 @@ open class ExtensionPresenter(
|
||||||
|
|
||||||
if (updatesSorted.isNotEmpty()) {
|
if (updatesSorted.isNotEmpty()) {
|
||||||
val header = ExtensionGroupItem(context.getString(R.string.ext_updates_pending), updatesSorted.size, true)
|
val header = ExtensionGroupItem(context.getString(R.string.ext_updates_pending), updatesSorted.size, true)
|
||||||
|
if (preferences.extensionInstaller().get() != PreferenceValues.ExtensionInstaller.LEGACY) {
|
||||||
|
header.actionLabel = context.getString(R.string.ext_update_all)
|
||||||
|
header.actionOnClick = View.OnClickListener { _ ->
|
||||||
|
extensions
|
||||||
|
.filter { it.extension is Extension.Installed && it.extension.hasUpdate }
|
||||||
|
.forEach { updateExtension(it.extension as Extension.Installed) }
|
||||||
|
}
|
||||||
|
}
|
||||||
items += updatesSorted.map { extension ->
|
items += updatesSorted.map { extension ->
|
||||||
ExtensionItem(extension, header, currentDownloads[extension.pkgName] ?: InstallStep.Idle)
|
ExtensionItem(extension, header, currentDownloads[extension.pkgName] ?: InstallStep.Idle)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +1,28 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
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:gravity="center_vertical"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/title"
|
android:id="@+id/title"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
android:paddingHorizontal="16dp"
|
android:paddingHorizontal="16dp"
|
||||||
android:paddingVertical="8dp"
|
android:paddingVertical="8dp"
|
||||||
android:textAppearance="@style/TextAppearance.Tachiyomi.SectionHeader"
|
android:textAppearance="@style/TextAppearance.Tachiyomi.SectionHeader"
|
||||||
tools:text="Title" />
|
tools:text="Title" />
|
||||||
|
|
||||||
</FrameLayout>
|
<Button
|
||||||
|
android:id="@+id/action_button"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginEnd="16dp"
|
||||||
|
android:visibility="gone"
|
||||||
|
tools:text="Button"
|
||||||
|
tools:visibility="visible" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
|
@ -246,6 +246,7 @@
|
||||||
<string name="all_lang">All</string>
|
<string name="all_lang">All</string>
|
||||||
<string name="ext_updates_pending">Updates pending</string>
|
<string name="ext_updates_pending">Updates pending</string>
|
||||||
<string name="ext_update">Update</string>
|
<string name="ext_update">Update</string>
|
||||||
|
<string name="ext_update_all">Update all</string>
|
||||||
<string name="ext_obsolete">Obsolete</string>
|
<string name="ext_obsolete">Obsolete</string>
|
||||||
<string name="ext_install">Install</string>
|
<string name="ext_install">Install</string>
|
||||||
<string name="ext_pending">Pending</string>
|
<string name="ext_pending">Pending</string>
|
||||||
|
|
Reference in a new issue