pull/1814/head 3.22.042218
kunfei 3 years ago
parent 992ee9b22d
commit 36617b413f
  1. 4
      app/src/main/java/io/legado/app/help/config/ReadBookConfig.kt
  2. 2
      app/src/main/java/io/legado/app/help/config/ThemeConfig.kt
  3. 4
      app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceViewModel.kt
  4. 4
      app/src/main/java/io/legado/app/ui/replace/ReplaceRuleViewModel.kt
  5. 4
      app/src/main/java/io/legado/app/ui/rss/source/manage/RssSourceViewModel.kt
  6. 41
      app/src/main/java/io/legado/app/utils/DataExtensions.kt

@ -328,7 +328,7 @@ object ReadBookConfig {
}
fun getExportConfig(): Config {
val exportConfig = durConfig.deepCopy()
val exportConfig = durConfig.copy()
if (shareLayout) {
exportConfig.textFont = shareConfig.textFont
exportConfig.textBold = shareConfig.textBold
@ -430,7 +430,7 @@ object ReadBookConfig {
}
@Keep
class Config(
data class Config(
var name: String = "",
var bgStr: String = "#EEEEEE",//白天背景
var bgStrNight: String = "#000000",//夜间背景

@ -249,7 +249,7 @@ object ThemeConfig {
}
@Keep
class Config(
data class Config(
var themeName: String,
var isNightTheme: Boolean,
var primaryColor: String,

@ -9,6 +9,10 @@ import io.legado.app.utils.*
import java.io.File
import java.io.FileOutputStream
/**
* 书源管理数据修改
* 修改数据要copy,直接修改会导致界面不刷新
*/
class BookSourceViewModel(application: Application) : BaseViewModel(application) {
fun topSource(vararg sources: BookSource) {

@ -7,6 +7,10 @@ import io.legado.app.data.appDb
import io.legado.app.data.entities.ReplaceRule
import io.legado.app.utils.splitNotBlank
/**
* 替换规则数据修改
* 修改数据要copy,直接修改会导致界面不刷新
*/
class ReplaceRuleViewModel(application: Application) : BaseViewModel(application) {
fun update(vararg rule: ReplaceRule) {

@ -9,6 +9,10 @@ import io.legado.app.help.DefaultData
import io.legado.app.utils.*
import java.io.File
/**
* 订阅源管理数据修改
* 修改数据要copy,直接修改会导致界面不刷新
*/
class RssSourceViewModel(application: Application) : BaseViewModel(application) {
fun topSource(vararg sources: RssSource) {

@ -1,41 +0,0 @@
package io.legado.app.utils
import kotlin.reflect.KClass
import kotlin.reflect.full.memberProperties
import kotlin.reflect.full.primaryConstructor
@Suppress("UNCHECKED_CAST")
fun <T : Any> T.deepCopy(): T {
//如果不是数据类,直接返回
if (!this::class.isData) {
return this
}
//拿到构造函数
return this::class.primaryConstructor!!.let { primaryConstructor ->
//转换类型
//memberProperties 返回非扩展属性中的第一个并将构造函数赋值给其
//最终value=第一个参数类型的对象
//如果当前类(这里的当前类指的是参数对应的类型,比如说这里如果非基本类型时)是数据类
//最终返回一个新的映射map,即返回一个属性值重新组合的map,并调用callBy返回指定的对象
primaryConstructor.parameters.associate { parameter ->
//转换类型
//memberProperties 返回非扩展属性中的第一个并将构造函数赋值给其
//最终value=第一个参数类型的对象
val value = (this::class as KClass<T>).memberProperties.first {
it.name == parameter.name
}.get(this)
//如果当前类(这里的当前类指的是参数对应的类型,比如说这里如果非基本类型时)是数据类
if ((parameter.type.classifier as? KClass<*>)?.isData == true) {
parameter to value?.deepCopy()
} else {
parameter to value
}
//最终返回一个新的映射map,即返回一个属性值重新组合的map,并调用callBy返回指定的对象
}.let(primaryConstructor::callBy)
}
}
Loading…
Cancel
Save