Pārlūkot izejas kodu

Separate group for extensions with updates

arkon 5 gadi atpakaļ
vecāks
revīzija
f03c49850b

+ 6 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionGroupHolder.kt

@@ -11,6 +11,11 @@ class ExtensionGroupHolder(view: View, adapter: FlexibleAdapter<*>) :
 
     @SuppressLint("SetTextI18n")
     fun bind(item: ExtensionGroupItem) {
-        title.text = item.name
+        var text = item.name
+        if (item.showSize) {
+            text += " (${item.size})"
+        }
+
+        title.text = text
     }
 }

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionGroupItem.kt

@@ -13,7 +13,7 @@ import eu.kanade.tachiyomi.R
  * @param name The header name.
  * @param size The number of items in the group.
  */
-data class ExtensionGroupItem(val name: String, val size: Int) : AbstractHeaderItem<ExtensionGroupHolder>() {
+data class ExtensionGroupItem(val name: String, val size: Int, val showSize: Boolean = false) : AbstractHeaderItem<ExtensionGroupHolder>() {
 
     /**
      * Returns the layout resource of this item.

+ 8 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionPresenter.kt

@@ -62,7 +62,8 @@ open class ExtensionPresenter(
 
         val items = mutableListOf<ExtensionItem>()
 
-        val installedSorted = installed.sortedWith(compareBy({ !it.hasUpdate }, { !it.isObsolete }, { it.pkgName }))
+        val updatesSorted = installed.filter { it.hasUpdate }.sortedBy { it.pkgName }
+        val installedSorted = installed.filter { !it.hasUpdate }.sortedWith(compareBy({ !it.isObsolete }, { it.pkgName }))
         val untrustedSorted = untrusted.sortedBy { it.pkgName }
         val availableSorted = available
                 // Filter out already installed extensions and disabled languages
@@ -71,6 +72,12 @@ open class ExtensionPresenter(
                         && (avail.lang in activeLangs || avail.lang == "all")}
                 .sortedBy { it.pkgName }
 
+        if (updatesSorted.isNotEmpty()) {
+            val header = ExtensionGroupItem(context.getString(R.string.ext_updates_pending), updatesSorted.size, true)
+            items += updatesSorted.map { extension ->
+                ExtensionItem(extension, header, currentDownloads[extension.pkgName])
+            }
+        }
         if (installedSorted.isNotEmpty() || untrustedSorted.isNotEmpty()) {
             val header = ExtensionGroupItem(context.getString(R.string.ext_installed), installedSorted.size + untrustedSorted.size)
             items += installedSorted.map { extension ->

+ 1 - 0
app/src/main/res/values/strings.xml

@@ -163,6 +163,7 @@
       <!-- Extension section -->
     <string name="all_lang">All</string>
     <string name="ext_details">Details</string>
+    <string name="ext_updates_pending">Updates pending</string>
     <string name="ext_update">Update</string>
     <string name="ext_obsolete">Obsolete</string>
     <string name="ext_install">Install</string>