|
@@ -1,10 +1,13 @@
|
|
|
package eu.kanade.tachiyomi.ui.extension
|
|
|
|
|
|
+import android.app.Application
|
|
|
import android.os.Bundle
|
|
|
+import eu.kanade.tachiyomi.R
|
|
|
import eu.kanade.tachiyomi.extension.ExtensionManager
|
|
|
import eu.kanade.tachiyomi.extension.model.Extension
|
|
|
import eu.kanade.tachiyomi.extension.model.InstallStep
|
|
|
import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter
|
|
|
+import eu.kanade.tachiyomi.util.LocaleHelper
|
|
|
import rx.Observable
|
|
|
import rx.Subscription
|
|
|
import rx.android.schedulers.AndroidSchedulers
|
|
@@ -49,6 +52,8 @@ open class ExtensionPresenter(
|
|
|
|
|
|
@Synchronized
|
|
|
private fun toItems(tuple: ExtensionTuple): List<ExtensionItem> {
|
|
|
+ val context = Injekt.get<Application>()
|
|
|
+
|
|
|
val (installed, untrusted, available) = tuple
|
|
|
|
|
|
val items = mutableListOf<ExtensionItem>()
|
|
@@ -62,7 +67,7 @@ open class ExtensionPresenter(
|
|
|
.sortedBy { it.pkgName }
|
|
|
|
|
|
if (installedSorted.isNotEmpty() || untrustedSorted.isNotEmpty()) {
|
|
|
- val header = ExtensionGroupItem(true, installedSorted.size + untrustedSorted.size)
|
|
|
+ val header = ExtensionGroupItem(context.getString(R.string.ext_installed), installedSorted.size + untrustedSorted.size)
|
|
|
items += installedSorted.map { extension ->
|
|
|
ExtensionItem(extension, header, currentDownloads[extension.pkgName])
|
|
|
}
|
|
@@ -71,10 +76,17 @@ open class ExtensionPresenter(
|
|
|
}
|
|
|
}
|
|
|
if (availableSorted.isNotEmpty()) {
|
|
|
- val header = ExtensionGroupItem(false, availableSorted.size)
|
|
|
- items += availableSorted.map { extension ->
|
|
|
- ExtensionItem(extension, header, currentDownloads[extension.pkgName])
|
|
|
- }
|
|
|
+ val availableGroupedByLang = availableSorted
|
|
|
+ .groupBy { LocaleHelper.getDisplayName(it.lang, context) }
|
|
|
+ .toSortedMap()
|
|
|
+
|
|
|
+ availableGroupedByLang
|
|
|
+ .forEach {
|
|
|
+ val header = ExtensionGroupItem(it.key, it.value.size)
|
|
|
+ items += it.value.map { extension ->
|
|
|
+ ExtensionItem(extension, header, currentDownloads[extension.pkgName])
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
this.extensions = items
|