From ad904f660be9f84a52ab4e03c5481fd36ba7885d Mon Sep 17 00:00:00 2001 From: kunfei Date: Fri, 16 Jun 2023 16:52:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/legado/app/data/AppDatabase.kt | 20 ++++++++----------- .../book/source/manage/BookSourceActivity.kt | 3 ++- .../book/source/manage/BookSourceAdapter.kt | 8 ++++++-- .../book/source/manage/BookSourceViewModel.kt | 8 ++------ .../com/script/rhino/RhinoClassShutter.kt | 1 + .../java/com/script/rhino/RhinoWrapFactory.kt | 8 +++++++- 6 files changed, 26 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/io/legado/app/data/AppDatabase.kt b/app/src/main/java/io/legado/app/data/AppDatabase.kt index 84b76a52a..8d8b0b0e0 100644 --- a/app/src/main/java/io/legado/app/data/AppDatabase.kt +++ b/app/src/main/java/io/legado/app/data/AppDatabase.kt @@ -1,7 +1,6 @@ package io.legado.app.data import android.content.ContentValues -import android.content.Context import android.database.sqlite.SQLiteDatabase import androidx.room.AutoMigration import androidx.room.Database @@ -17,7 +16,12 @@ import splitties.init.appCtx import java.util.* val appDb by lazy { - AppDatabase.createDatabase(appCtx) + Room.databaseBuilder(appCtx, AppDatabase::class.java, AppDatabase.DATABASE_NAME) + .fallbackToDestructiveMigrationFrom(1, 2, 3, 4, 5, 6, 7, 8, 9) + .addMigrations(*DatabaseMigrations.migrations) + .allowMainThreadQueries() + .addCallback(AppDatabase.dbCallback) + .build() } @Database( @@ -82,17 +86,9 @@ abstract class AppDatabase : RoomDatabase() { companion object { - private const val DATABASE_NAME = "legado.db" + const val DATABASE_NAME = "legado.db" - fun createDatabase(context: Context) = Room - .databaseBuilder(context, AppDatabase::class.java, DATABASE_NAME) - .fallbackToDestructiveMigrationFrom(1, 2, 3, 4, 5, 6, 7, 8, 9) - .addMigrations(*DatabaseMigrations.migrations) - .allowMainThreadQueries() - .addCallback(dbCallback) - .build() - - private val dbCallback = object : Callback() { + val dbCallback = object : Callback() { override fun onCreate(db: SupportSQLiteDatabase) { db.setLocale(Locale.CHINESE) 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 951c13a5e..4d8209805 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 @@ -67,7 +67,8 @@ class BookSourceActivity : VMBaseActivity() private var groupMenu: SubMenu? = null private var sort = Sort.Default - private var sortAscending = true + override var sortAscending = true + private set private var snackBar: Snackbar? = null private var isPaused = false private var searchKey: String? = null diff --git a/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceAdapter.kt b/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceAdapter.kt index ab2ba1021..60bcaf209 100644 --- a/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceAdapter.kt @@ -24,7 +24,7 @@ import io.legado.app.utils.ColorUtils import io.legado.app.utils.invisible import io.legado.app.utils.startActivity import io.legado.app.utils.visible -import java.util.* +import java.util.Collections class BookSourceAdapter(context: Context, val callBack: CallBack) : @@ -290,7 +290,10 @@ class BookSourceAdapter(context: Context, val callBack: CallBack) : sortNumberSet.add(it.customOrder) } if (movedItems.size > sortNumberSet.size) { - callBack.upOrder(getItems()) + callBack.upOrder(getItems().mapIndexed { index, bookSourcePart -> + bookSourcePart.customOrder = if (callBack.sortAscending) index else -index + bookSourcePart + }) } else { callBack.upOrder(movedItems.toList()) } @@ -324,6 +327,7 @@ class BookSourceAdapter(context: Context, val callBack: CallBack) : } interface CallBack { + val sortAscending: Boolean fun del(bookSource: BookSourcePart) fun edit(bookSource: BookSourcePart) fun toTop(bookSource: BookSourcePart) 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 2934e5ef6..f1aadf634 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 @@ -9,12 +9,12 @@ import io.legado.app.data.entities.BookSource import io.legado.app.data.entities.BookSourcePart import io.legado.app.data.entities.toBookSource import io.legado.app.help.config.SourceConfig +import io.legado.app.ui.book.source.manage.BookSourceActivity.Sort import io.legado.app.utils.* import splitties.init.appCtx import java.io.BufferedOutputStream import java.io.File import java.io.FileOutputStream -import io.legado.app.ui.book.source.manage.BookSourceActivity.Sort /** * 书源管理数据修改 @@ -60,11 +60,7 @@ class BookSourceViewModel(application: Application) : BaseViewModel(application) fun upOrder(items: List) { if (items.isEmpty()) return execute { - val firstSortNumber = items[0].customOrder - val array = items.mapIndexed { index, bookSource -> - bookSource.copy(customOrder = firstSortNumber + index) - } - appDb.bookSourceDao.upOrder(array) + appDb.bookSourceDao.upOrder(items) } } diff --git a/modules/rhino1.7.3/src/main/java/com/script/rhino/RhinoClassShutter.kt b/modules/rhino1.7.3/src/main/java/com/script/rhino/RhinoClassShutter.kt index cf5dcaf8d..30763f6c6 100644 --- a/modules/rhino1.7.3/src/main/java/com/script/rhino/RhinoClassShutter.kt +++ b/modules/rhino1.7.3/src/main/java/com/script/rhino/RhinoClassShutter.kt @@ -49,6 +49,7 @@ object RhinoClassShutter : ClassShutter { "java.security.AccessController", "java.nio.file.Paths", "java.nio.file.Files", + "io.legado.app.data.AppDatabase", "io.legado.app.data.AppDatabaseKt", "io.legado.app.utils.ContextExtensionsKt", "android.content.Intent", diff --git a/modules/rhino1.7.3/src/main/java/com/script/rhino/RhinoWrapFactory.kt b/modules/rhino1.7.3/src/main/java/com/script/rhino/RhinoWrapFactory.kt index 7d81bc443..ad0562d21 100644 --- a/modules/rhino1.7.3/src/main/java/com/script/rhino/RhinoWrapFactory.kt +++ b/modules/rhino1.7.3/src/main/java/com/script/rhino/RhinoWrapFactory.kt @@ -52,7 +52,13 @@ object RhinoWrapFactory : WrapFactory() { ): Scriptable? { val classShutter = RhinoClassShutter return when (javaObject) { - is ClassLoader, is Class<*>, is Member, is android.content.Context -> null + is ClassLoader, + is Class<*>, + is Member, + is android.content.Context -> { + null + } + else -> { val name = javaObject.javaClass.name if (classShutter.visibleToScripts(name)) {