diff --git a/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt b/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt index ccd2b13d8..35b384120 100644 --- a/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt +++ b/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt @@ -54,9 +54,6 @@ interface BookSourceDao { @Query("select * from book_sources where enabledExplore = 1 and trim(exploreUrl) <> '' order by customOrder asc") fun flowExplore(): Flow> -// @Query("select * from book_sources where enabledReview = 1 order by customOrder asc") -// fun flowReview(): Flow> - @Query("select * from book_sources where loginUrl is not null and loginUrl != ''") fun flowLogin(): Flow> @@ -161,6 +158,9 @@ interface BookSourceDao { @get:Query("select max(customOrder) from book_sources") val maxOrder: Int + @Query("select count(*) from (select customOrder, count(customOrder) from book_sources group by customOrder having count(customOrder) > 1)") + fun sameSortNumberSize(): Int + private fun dealGroups(list: List): List { val groups = linkedSetOf() list.forEach { diff --git a/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceActivity.kt b/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceActivity.kt index b461d1fd3..1f56d664f 100644 --- a/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceActivity.kt @@ -58,6 +58,7 @@ class BookSourceActivity : VMBaseActivity() private val importRecordKey = "bookSourceRecordKey" private val adapter by lazy { BookSourceAdapter(this, this) } + private val itemTouchCallback by lazy { ItemTouchCallback(adapter) } private val searchView: SearchView by lazy { binding.titleBar.findViewById(R.id.search_view) } @@ -197,8 +198,6 @@ class BookSourceActivity : VMBaseActivity adapter.setItems(data, adapter.diffItemCallback) + itemTouchCallback.isCanDrag = sort == Sort.Default delay(500) } } diff --git a/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceViewModel.kt b/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceViewModel.kt index ad3e2e426..a4b1870df 100644 --- a/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceViewModel.kt @@ -16,6 +16,19 @@ import java.io.FileOutputStream */ class BookSourceViewModel(application: Application) : BaseViewModel(application) { + init { + execute { + val sameSortNumberSize = appDb.bookSourceDao.sameSortNumberSize() + if (sameSortNumberSize > 0) { + val sources = appDb.bookSourceDao.all + sources.forEachIndexed { index, bookSource -> + bookSource.customOrder = index + appDb.bookSourceDao.update(bookSource) + } + } + } + } + fun topSource(vararg sources: BookSource) { execute { sources.sortBy { it.customOrder }