优化
This commit is contained in:
@@ -328,7 +328,7 @@ object ReadBookConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun getExportConfig(): Config {
|
fun getExportConfig(): Config {
|
||||||
val exportConfig = durConfig.deepCopy()
|
val exportConfig = durConfig.copy()
|
||||||
if (shareLayout) {
|
if (shareLayout) {
|
||||||
exportConfig.textFont = shareConfig.textFont
|
exportConfig.textFont = shareConfig.textFont
|
||||||
exportConfig.textBold = shareConfig.textBold
|
exportConfig.textBold = shareConfig.textBold
|
||||||
@@ -430,7 +430,7 @@ object ReadBookConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Keep
|
@Keep
|
||||||
class Config(
|
data class Config(
|
||||||
var name: String = "",
|
var name: String = "",
|
||||||
var bgStr: String = "#EEEEEE",//白天背景
|
var bgStr: String = "#EEEEEE",//白天背景
|
||||||
var bgStrNight: String = "#000000",//夜间背景
|
var bgStrNight: String = "#000000",//夜间背景
|
||||||
|
|||||||
@@ -249,7 +249,7 @@ object ThemeConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Keep
|
@Keep
|
||||||
class Config(
|
data class Config(
|
||||||
var themeName: String,
|
var themeName: String,
|
||||||
var isNightTheme: Boolean,
|
var isNightTheme: Boolean,
|
||||||
var primaryColor: String,
|
var primaryColor: String,
|
||||||
|
|||||||
@@ -9,6 +9,10 @@ import io.legado.app.utils.*
|
|||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.FileOutputStream
|
import java.io.FileOutputStream
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 书源管理数据修改
|
||||||
|
* 修改数据要copy,直接修改会导致界面不刷新
|
||||||
|
*/
|
||||||
class BookSourceViewModel(application: Application) : BaseViewModel(application) {
|
class BookSourceViewModel(application: Application) : BaseViewModel(application) {
|
||||||
|
|
||||||
fun topSource(vararg sources: BookSource) {
|
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.data.entities.ReplaceRule
|
||||||
import io.legado.app.utils.splitNotBlank
|
import io.legado.app.utils.splitNotBlank
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 替换规则数据修改
|
||||||
|
* 修改数据要copy,直接修改会导致界面不刷新
|
||||||
|
*/
|
||||||
class ReplaceRuleViewModel(application: Application) : BaseViewModel(application) {
|
class ReplaceRuleViewModel(application: Application) : BaseViewModel(application) {
|
||||||
|
|
||||||
fun update(vararg rule: ReplaceRule) {
|
fun update(vararg rule: ReplaceRule) {
|
||||||
|
|||||||
@@ -9,6 +9,10 @@ import io.legado.app.help.DefaultData
|
|||||||
import io.legado.app.utils.*
|
import io.legado.app.utils.*
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订阅源管理数据修改
|
||||||
|
* 修改数据要copy,直接修改会导致界面不刷新
|
||||||
|
*/
|
||||||
class RssSourceViewModel(application: Application) : BaseViewModel(application) {
|
class RssSourceViewModel(application: Application) : BaseViewModel(application) {
|
||||||
|
|
||||||
fun topSource(vararg sources: RssSource) {
|
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)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user