diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/credits/translators/TranslatorsTable.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/credits/translators/TranslatorsTable.kt index f869908..b8d2d29 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/credits/translators/TranslatorsTable.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/credits/translators/TranslatorsTable.kt @@ -11,7 +11,7 @@ import ir.amirab.util.compose.asStringSource sealed interface TranslatorsCells : TableCell { data object LanguageName : TranslatorsCells, SortableCell { - override fun sortBy(item: LanguageTranslationInfo): Comparable<*> = item.locale + override fun comparator(): Comparator = compareBy { it.locale } override val id: String = "language" override val name: StringSource = Res.string.language.asStringSource() override val size: CellSize = CellSize.Resizeable(100.dp..1000.dp, 200.dp) diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/extenallibs/OpenSourceLibraryTable.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/extenallibs/OpenSourceLibraryTable.kt index cc489f8..de9aa13 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/extenallibs/OpenSourceLibraryTable.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/extenallibs/OpenSourceLibraryTable.kt @@ -12,22 +12,26 @@ import ir.amirab.util.compose.asStringSource sealed interface LibraryCells : TableCell { data object Name : LibraryCells, SortableCell { - override fun sortBy(item: Library): Comparable<*> = item.name + override fun comparator(): Comparator = compareBy { it.name } override val id: String = "Name" override val name: StringSource = Res.string.name.asStringSource() - override val size: CellSize = CellSize.Resizeable(100.dp..1000.dp,250.dp) + override val size: CellSize = CellSize.Resizeable(100.dp..1000.dp, 250.dp) } data object Author : LibraryCells, SortableCell { - override fun sortBy(item: Library): Comparable<*> = item.licenses.firstOrNull()?.name.orEmpty() + override fun comparator(): Comparator = compareBy { item -> + item.licenses.firstOrNull()?.name.orEmpty() + } + override val id: String = "Author" override val name: StringSource = Res.string.author.asStringSource() override val size: CellSize = CellSize.Resizeable(100.dp..200.dp, 150.dp) } + data object License : LibraryCells, SortableCell { - override fun sortBy(item: Library): Comparable<*> = item.licenses.firstOrNull()?.name.orEmpty() + override fun comparator(): Comparator = compareBy { it.licenses.firstOrNull()?.name.orEmpty() } override val id: String = "License" override val name: StringSource = Res.string.license.asStringSource() diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/sections/DownloadList.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/sections/DownloadList.kt index a8eda5b..ef74e10 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/sections/DownloadList.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/sections/DownloadList.kt @@ -26,7 +26,6 @@ import androidx.compose.ui.input.key.* import androidx.compose.ui.input.pointer.* import androidx.compose.ui.unit.dp import com.abdownloadmanager.resources.Res -import com.abdownloadmanager.resources.* import com.abdownloadmanager.utils.FileIconProvider import com.abdownloadmanager.utils.category.CategoryManager import com.abdownloadmanager.utils.category.rememberCategoryOf @@ -312,7 +311,7 @@ sealed interface DownloadListCells : TableCell { data object Name : DownloadListCells, SortableCell { - override fun sortBy(item: IDownloadItemState): Comparable<*> = item.name + override fun comparator(): Comparator = compareBy { it.name } override val id: String = "Name" override val name: StringSource = Res.string.name.asStringSource() @@ -321,7 +320,7 @@ sealed interface DownloadListCells : TableCell { data object Status : DownloadListCells, SortableCell { - override fun sortBy(item: IDownloadItemState): Comparable<*> = item.statusOrFinished().order + override fun comparator(): Comparator = compareBy { it.statusOrFinished().order } override val id: String = "Status" override val name: StringSource = Res.string.status.asStringSource() @@ -330,7 +329,7 @@ sealed interface DownloadListCells : TableCell { data object Size : DownloadListCells, SortableCell { - override fun sortBy(item: IDownloadItemState): Comparable<*> = item.contentLength + override fun comparator(): Comparator = compareBy { it.contentLength } override val id: String = "Size" override val name: StringSource = Res.string.size.asStringSource() @@ -339,7 +338,7 @@ sealed interface DownloadListCells : TableCell { data object Speed : DownloadListCells, SortableCell { - override fun sortBy(item: IDownloadItemState): Comparable<*> = item.speedOrNull() ?: 0L + override fun comparator(): Comparator = compareBy { it.speedOrNull() ?: 0L } override val id: String = "Speed" override val name: StringSource = Res.string.speed.asStringSource() @@ -348,7 +347,7 @@ sealed interface DownloadListCells : TableCell { data object TimeLeft : DownloadListCells, SortableCell { - override fun sortBy(item: IDownloadItemState): Comparable<*> = item.remainingOrNull() ?: Long.MAX_VALUE + override fun comparator(): Comparator = compareBy { it.remainingOrNull() ?: Long.MAX_VALUE } override val id: String = "Time Left" override val name: StringSource = Res.string.time_left.asStringSource() @@ -357,7 +356,7 @@ sealed interface DownloadListCells : TableCell { data object DateAdded : DownloadListCells, SortableCell { - override fun sortBy(item: IDownloadItemState): Comparable<*> = item.dateAdded + override fun comparator(): Comparator = compareBy { it.dateAdded } override val id: String = "Date Added" override val name: StringSource = Res.string.date_added.asStringSource() diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/customtable/TableUtils.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/customtable/TableUtils.kt index 647c072..2d7f32d 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/customtable/TableUtils.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/customtable/TableUtils.kt @@ -66,7 +66,7 @@ interface CustomCellRenderer { } interface SortableCell : TableCell { - fun sortBy(item: Item): Comparable<*> + fun comparator(): Comparator } @@ -368,7 +368,7 @@ class TableState>( list } else { list.sortedWith( - compareBy(sortedBy.cell::sortBy) + sortedBy.cell.comparator() .let { if (sortedBy.isUp()) { it.reversed()