diff --git a/app/src/main/kotlin/ShiggyXposed/xposed/xposed/modules/appearance/FontsModule.kt b/app/src/main/kotlin/ShiggyXposed/xposed/xposed/modules/appearance/FontsModule.kt index 5a5d021..385cb3e 100644 --- a/app/src/main/kotlin/ShiggyXposed/xposed/xposed/modules/appearance/FontsModule.kt +++ b/app/src/main/kotlin/ShiggyXposed/xposed/xposed/modules/appearance/FontsModule.kt @@ -6,6 +6,7 @@ import android.graphics.Typeface.CustomFallbackBuilder import android.graphics.fonts.Font import android.graphics.fonts.FontFamily import android.os.Build +import de.robv.android.xposed.XC_MethodHook.MethodHookParam import de.robv.android.xposed.XC_MethodReplacement import de.robv.android.xposed.XposedHelpers import de.robv.android.xposed.callbacks.XC_LoadPackage @@ -13,6 +14,8 @@ import GoonXposed.xposed.Constants import GoonXposed.xposed.Module import GoonXposed.xposed.Utils.Companion.JSON import GoonXposed.xposed.Utils.Log +import GoonXposed.xposed.asDir +import GoonXposed.xposed.asFile import io.ktor.client.* import io.ktor.client.call.* import io.ktor.client.engine.cio.* @@ -118,6 +121,15 @@ object FontsModule : Module() { } } + private fun splitFontName(fontFamilyName: String): Pair { + val parts = fontFamilyName.split(":") + return if (parts.size >= 2) parts[0] to parts[1] else "" to fontFamilyName + } + + private fun fontFileFor(customName: String, refName: String, fileExtension: String): File = + if (customName.isEmpty()) File(fontsDownloadsDir, "$refName.$fileExtension") + else File(fontsDownloadsDir, "$customName/$refName.$fileExtension") + private fun createAssetTypefaceWithFallbacks( fontFamilyNames: Array, style: Int, assetManager: AssetManager ): Typeface? { @@ -128,8 +140,8 @@ object FontsModule : Module() { for (fontFamilyName in fontFamilyNames) { try { for (fileExtension in FILE_EXTENSIONS) { - val (customName, refName) = fontFamilyName.split(":") - val file = File(fontsDownloadsDir, "$customName/$refName.$fileExtension").apply { asFile() } + val (customName, refName) = splitFontName(fontFamilyName) + val file = fontFileFor(customName, refName, fileExtension).apply { asFile() } val font = Font.Builder(file).build() val family = FontFamily.Builder(font).build() fontFamilies.add(family) @@ -197,8 +209,8 @@ object FontsModule : Module() { try { for (fileExtension in FILE_EXTENSIONS) { - val (customName, refName) = fontFamilyName.split(":") - val file = File(fontsDownloadsDir, "$customName/$refName.$fileExtension").apply { asFile() } + val (customName, refName) = splitFontName(fontFamilyName) + val file = fontFileFor(customName, refName, fileExtension).apply { asFile() } if (!file.exists()) throw Exception() return Typeface.createFromFile(file.absolutePath) } diff --git a/app/src/main/kotlin/ShiggyXposed/xposed/xposed/modules/appearance/SysColorsModule.kt b/app/src/main/kotlin/ShiggyXposed/xposed/xposed/modules/appearance/SysColorsModule.kt index ed45441..97f0eed 100644 --- a/app/src/main/kotlin/ShiggyXposed/xposed/xposed/modules/appearance/SysColorsModule.kt +++ b/app/src/main/kotlin/ShiggyXposed/xposed/xposed/modules/appearance/SysColorsModule.kt @@ -1,10 +1,10 @@ package GoonXposed.xposed.modules.appearance import android.R.color -import android.app.AndroidAppHelper import android.content.Context import android.os.Build import androidx.core.content.ContextCompat +import de.robv.android.xposed.AndroidAppHelper import GoonXposed.xposed.Module import kotlinx.serialization.json.* import java.lang.ref.WeakReference diff --git a/app/src/main/kotlin/ShiggyXposed/xposed/xposed/modules/appearance/ThemesModule.kt b/app/src/main/kotlin/ShiggyXposed/xposed/xposed/modules/appearance/ThemesModule.kt index 52619a6..e12084e 100644 --- a/app/src/main/kotlin/ShiggyXposed/xposed/xposed/modules/appearance/ThemesModule.kt +++ b/app/src/main/kotlin/ShiggyXposed/xposed/xposed/modules/appearance/ThemesModule.kt @@ -5,8 +5,12 @@ import android.content.res.Resources import androidx.core.graphics.toColorInt import de.robv.android.xposed.callbacks.XC_LoadPackage import GoonXposed.xposed.Constants +import GoonXposed.xposed.MethodHookBuilder import GoonXposed.xposed.Module import GoonXposed.xposed.Utils.Companion.JSON +import GoonXposed.xposed.asFile +import GoonXposed.xposed.hook +import GoonXposed.xposed.method import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.Serializable import kotlinx.serialization.json.JsonObjectBuilder