From 8eb48817678fe83e964b39100135beeda86ed213 Mon Sep 17 00:00:00 2001
From: HapeLee <1321903405@qq.com>
Date: Mon, 1 Sep 2025 00:57:17 +0800
Subject: [PATCH] =?UTF-8?q?=E5=90=88=E5=B9=B6=E4=B8=8A=E6=B8=B8=E6=9B=B4?=
=?UTF-8?q?=E6=94=B9=20=E6=84=9F=E8=B0=A2=EF=BC=9A@821938089=E3=80=81@zhon?=
=?UTF-8?q?gerxll=E3=80=81@youke2580c=E3=80=81@Leroy-X=E3=80=81@Dark-Tide?=
=?UTF-8?q?=E3=80=81@lhjgege=E3=80=81@3harmony=E3=80=81@mgz0227?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/src/main/assets/web/help/md/jsHelp.md | 15 ++-
app/src/main/java/io/legato/kazusa/App.kt | 4 +
.../java/io/legato/kazusa/base/BaseService.kt | 6 +-
.../io/legato/kazusa/constant/AppPattern.kt | 3 +-
.../io/legato/kazusa/constant/EventBus.kt | 1 +
.../io/legato/kazusa/constant/PreferKey.kt | 5 +-
.../java/io/legato/kazusa/data/dao/BookDao.kt | 7 ++
.../legato/kazusa/data/entities/BaseSource.kt | 3 +-
.../io/legato/kazusa/help/DirectLinkUpload.kt | 2 +-
.../io/legato/kazusa/help/JsExtensions.kt | 1 +
.../io/legato/kazusa/help/book/BookHelp.kt | 10 +-
.../io/legato/kazusa/help/config/AppConfig.kt | 3 +
.../kazusa/help/config/ReadBookConfig.kt | 109 ++++++++----------
.../legato/kazusa/help/config/ThemeConfig.kt | 63 ++++++----
.../kazusa/help/glide/BlurTransformation.kt | 2 +-
.../kazusa/help/http/DecompressInterceptor.kt | 3 +-
.../io/legato/kazusa/help/http/HttpHelper.kt | 2 +-
.../kazusa/help/http/ObsoleteUrlFactory.kt | 14 ++-
.../help/source/SourceVerificationHelp.kt | 7 +-
.../io/legato/kazusa/help/storage/Restore.kt | 9 +-
.../legato/kazusa/lib/cronet/AbsCallBack.kt | 34 ++++--
.../io/legato/kazusa/lib/mobi/MobiBook.kt | 2 +-
.../lib/mobi/utils/BitwiseExtensions.kt | 7 ++
.../lib/mobi/utils/ByteBufferExtensions.kt | 1 -
.../io/legato/kazusa/lib/webdav/WebDav.kt | 21 +++-
.../java/io/legato/kazusa/model/AudioPlay.kt | 53 ++++++++-
.../java/io/legato/kazusa/model/BookCover.kt | 4 +-
.../java/io/legato/kazusa/model/CacheBook.kt | 15 +--
.../java/io/legato/kazusa/model/ReadBook.kt | 54 +++++----
.../java/io/legato/kazusa/model/ReadManga.kt | 30 ++---
.../kazusa/model/analyzeRule/AnalyzeUrl.kt | 45 ++++----
.../kazusa/model/localBook/LocalBook.kt | 13 ++-
.../legato/kazusa/model/localBook/MobiFile.kt | 2 +-
.../legato/kazusa/model/localBook/TextFile.kt | 4 +
.../kazusa/model/webBook/SearchModel.kt | 13 ++-
.../kazusa/service/BaseReadAloudService.kt | 86 +++++++++++---
.../legato/kazusa/service/CacheBookService.kt | 1 -
.../kazusa/service/HttpReadAloudService.kt | 19 +--
.../kazusa/service/TTSReadAloudService.kt | 8 +-
.../ui/association/OnLineImportViewModel.kt | 2 +-
.../kazusa/ui/book/audio/AudioPlayActivity.kt | 13 +++
.../ui/book/audio/AudioPlayViewModel.kt | 4 +-
.../kazusa/ui/book/info/BookInfoActivity.kt | 2 +-
.../kazusa/ui/book/info/BookInfoViewModel.kt | 2 +-
.../book/info/edit/BookInfoEditViewModel.kt | 8 ++
.../ui/book/manga/ReadMangaViewModel.kt | 2 +-
.../kazusa/ui/book/read/ReadBookActivity.kt | 7 +-
.../kazusa/ui/book/read/ReadBookViewModel.kt | 2 +-
.../ui/book/read/config/BgTextConfigDialog.kt | 15 +--
.../read/config/ClickActionConfigDialog.kt | 3 +-
.../ui/book/read/config/MoreConfigDialog.kt | 4 +
.../kazusa/ui/book/read/page/AutoPager.kt | 59 +++++++---
.../kazusa/ui/book/read/page/PageView.kt | 38 +++++-
.../kazusa/ui/book/read/page/ReadView.kt | 8 ++
.../ui/book/read/page/entities/TextLine.kt | 9 ++
.../read/page/provider/ChapterProvider.kt | 48 +++++---
.../read/page/provider/TextChapterLayout.kt | 21 ++--
.../kazusa/ui/book/search/SearchActivity.kt | 40 ++++---
.../kazusa/ui/book/search/SearchViewModel.kt | 8 ++
.../ui/book/searchContent/SearchResult.kt | 36 ++++--
.../io/legato/kazusa/ui/dict/DictDialog.kt | 11 ++
.../kazusa/ui/login/SourceLoginActivity.kt | 6 +-
.../kazusa/ui/login/SourceLoginViewModel.kt | 8 +-
.../io/legato/kazusa/ui/main/MainViewModel.kt | 2 +-
.../kazusa/ui/replace/ReplaceRuleActivity.kt | 7 +-
.../ui/rss/source/manage/RssSourceActivity.kt | 4 +-
.../legato/kazusa/utils/ContextExtensions.kt | 6 +-
.../legato/kazusa/utils/FragmentExtensions.kt | 3 +-
.../io/legato/kazusa/utils/HtmlFormatter.kt | 2 +-
.../io/legato/kazusa/utils/RomExtensions.kt | 7 --
.../drawable/ic_play_mode_list_end_stop.xml | 11 ++
.../res/drawable/ic_play_mode_list_loop.xml | 11 ++
.../main/res/drawable/ic_play_mode_random.xml | 11 ++
.../main/res/layout/activity_audio_play.xml | 14 +++
app/src/main/res/layout/dialog_auto_read.xml | 2 +-
app/src/main/res/layout/view_book_page.xml | 5 -
app/src/main/res/values-es-rES/strings.xml | 2 +-
app/src/main/res/values-ja-rJP/strings.xml | 2 +-
app/src/main/res/values-pt-rBR/strings.xml | 2 +-
app/src/main/res/values-vi/arrays.xml | 2 +-
app/src/main/res/values-zh-rHK/strings.xml | 1 +
app/src/main/res/values-zh-rTW/strings.xml | 1 +
app/src/main/res/values-zh/strings.xml | 7 +-
app/src/main/res/values/strings.xml | 6 +-
app/src/main/res/xml/pref_config_aloud.xml | 7 ++
app/src/main/res/xml/pref_config_read.xml | 11 +-
gradle/libs.versions.toml | 2 +-
87 files changed, 800 insertions(+), 365 deletions(-)
create mode 100644 app/src/main/java/io/legato/kazusa/lib/mobi/utils/BitwiseExtensions.kt
delete mode 100644 app/src/main/java/io/legato/kazusa/utils/RomExtensions.kt
create mode 100644 app/src/main/res/drawable/ic_play_mode_list_end_stop.xml
create mode 100644 app/src/main/res/drawable/ic_play_mode_list_loop.xml
create mode 100644 app/src/main/res/drawable/ic_play_mode_random.xml
diff --git a/app/src/main/assets/web/help/md/jsHelp.md b/app/src/main/assets/web/help/md/jsHelp.md
index e4d9219f2..6354b2a1a 100644
--- a/app/src/main/assets/web/help/md/jsHelp.md
+++ b/app/src/main/assets/web/help/md/jsHelp.md
@@ -45,7 +45,7 @@
* 调用阅读搜索
```js
-java.searchBook(bookName: string)
+java.searchBook(bookName: String)
```
* 添加书架
@@ -232,6 +232,13 @@ java.s2t(text: String): String
* 时间格式化
```js
java.timeFormatUTC(time: Long, format: String, sh: Int): String?
+java.timeFormat(time: Long): String
+```
+
+* html格式化
+
+```js
+java.htmlFormat(str: String): String
```
* 文件
> 所有对于文件的读写删操作都是相对路径,只能操作阅读缓存/android/data/{package}/cache/内的文件
@@ -441,9 +448,11 @@ cache.putFile(key: String, value: String, saveTime: Int)
读取文件内容
cache.getFile(key: String): String?
保存到内存
-cache.deleteMemory(key: String)
-cache.getFromMemory(key: String): Any?
cache.putMemory(key: String, value: Any)
+读取内存
+cache.getFromMemory(key: String): Any?
+删除内存
+cache.deleteMemory(key: String)
```
diff --git a/app/src/main/java/io/legato/kazusa/App.kt b/app/src/main/java/io/legato/kazusa/App.kt
index 19a342257..155e762e0 100644
--- a/app/src/main/java/io/legato/kazusa/App.kt
+++ b/app/src/main/java/io/legato/kazusa/App.kt
@@ -7,6 +7,7 @@ import android.app.NotificationManager
import android.content.Context
import android.content.pm.ApplicationInfo
import android.content.res.Configuration
+import android.os.Build
import com.github.liuyueyi.quick.transfer.constants.TransType
import com.google.android.material.color.DynamicColors
import com.jeremyliao.liveeventbus.LiveEventBus
@@ -141,6 +142,9 @@ class App : Application() {
* @return
*/
private fun installGmsTlsProvider(context: Context) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
+ return
+ }
try {
val gmsPackageName = "com.google.android.gms"
val appInfo = packageManager.getApplicationInfo(gmsPackageName, 0)
diff --git a/app/src/main/java/io/legato/kazusa/base/BaseService.kt b/app/src/main/java/io/legato/kazusa/base/BaseService.kt
index 411fd4eb3..8d3bc52d7 100644
--- a/app/src/main/java/io/legato/kazusa/base/BaseService.kt
+++ b/app/src/main/java/io/legato/kazusa/base/BaseService.kt
@@ -75,9 +75,9 @@ abstract class BaseService : LifecycleService() {
}
@CallSuper
- override fun onTimeout(startId: Int) {
- super.onTimeout(startId)
- LogUtils.d(simpleName, "onTimeout startId:$startId")
+ override fun onTimeout(startId: Int, fgsType: Int) {
+ super.onTimeout(startId, fgsType)
+ LogUtils.d(simpleName, "onTimeout startId:$startId fgsType:$fgsType")
stopSelf()
}
diff --git a/app/src/main/java/io/legato/kazusa/constant/AppPattern.kt b/app/src/main/java/io/legato/kazusa/constant/AppPattern.kt
index 074e545a7..bd73ed6f1 100644
--- a/app/src/main/java/io/legato/kazusa/constant/AppPattern.kt
+++ b/app/src/main/java/io/legato/kazusa/constant/AppPattern.kt
@@ -9,7 +9,8 @@ object AppPattern {
val EXP_PATTERN: Pattern = Pattern.compile("\\{\\{([\\w\\W]*?)\\}\\}")
//匹配格式化后的图片格式
- val imgPattern: Pattern = Pattern.compile("
]*src=\"([^\"]*(?:\"[^>]+\\})?)\"[^>]*>")
+ val imgPattern: Pattern =
+ Pattern.compile("
]*src=['\"]([^'\"]*(?:['\"][^>]+\\})?)['\"][^>]*>")
//dataURL图片类型
val dataUriRegex = Regex("^data:.*?;base64,(.*)")
diff --git a/app/src/main/java/io/legato/kazusa/constant/EventBus.kt b/app/src/main/java/io/legato/kazusa/constant/EventBus.kt
index 6b6c4cb89..f23fe405a 100644
--- a/app/src/main/java/io/legato/kazusa/constant/EventBus.kt
+++ b/app/src/main/java/io/legato/kazusa/constant/EventBus.kt
@@ -32,4 +32,5 @@ object EventBus {
const val READ_ALOUD_PLAY = "readAloudPlay"
const val EXPORT_BOOK = "exportBook"
const val UP_MANGA_CONFIG = "upMangaConfig"
+ const val PLAY_MODE_CHANGED = "playModeChanged"
}
\ No newline at end of file
diff --git a/app/src/main/java/io/legato/kazusa/constant/PreferKey.kt b/app/src/main/java/io/legato/kazusa/constant/PreferKey.kt
index df20ed725..b2e8d8bd4 100644
--- a/app/src/main/java/io/legato/kazusa/constant/PreferKey.kt
+++ b/app/src/main/java/io/legato/kazusa/constant/PreferKey.kt
@@ -170,14 +170,12 @@ object PreferKey {
const val showMangaUi = "showMangaUi"
const val disableMangaScale = "disableMangaScale"
const val firebaseEnabled = "firebaseEnabled"
-
const val cPrimary = "colorPrimary"
const val cAccent = "colorAccent"
const val cBackground = "colorBackground"
const val cBBackground = "colorBottomBackground"
const val bgImage = "backgroundImage"
const val bgImageBlurring = "backgroundImageBlurring"
-
const val cNPrimary = "colorPrimaryNight"
const val cNAccent = "colorAccentNight"
const val cNBackground = "colorBackgroundNight"
@@ -187,7 +185,6 @@ object PreferKey {
const val showReadTitleAddition = "showReadTitleAddition"
const val readBarStyleFollowPage = "readBarStyleFollowPage"
const val contentSelectSpeakMod = "contentReadAloudMod"
-
const val themePref = "themePref"
const val bookshelfSortOrder = "bookshelfSortOrder"
const val showBottomView = "showBottomView"
@@ -208,5 +205,5 @@ object PreferKey {
const val permissionChecked = "permissionChecked"
const val notificationsPost = "notificationsPost"
const val ignoreBatteryPermission = "ignoreBatteryPermission"
-
+ const val paddingDisplayCutouts = "paddingDisplayCutouts"
}
diff --git a/app/src/main/java/io/legato/kazusa/data/dao/BookDao.kt b/app/src/main/java/io/legato/kazusa/data/dao/BookDao.kt
index 98e86f182..36029ac27 100644
--- a/app/src/main/java/io/legato/kazusa/data/dao/BookDao.kt
+++ b/app/src/main/java/io/legato/kazusa/data/dao/BookDao.kt
@@ -5,6 +5,7 @@ import androidx.room.Delete
import androidx.room.Insert
import androidx.room.OnConflictStrategy
import androidx.room.Query
+import androidx.room.Transaction
import androidx.room.Update
import io.legato.kazusa.constant.BookType
import io.legato.kazusa.data.entities.Book
@@ -150,6 +151,12 @@ interface BookDao {
@Delete
fun delete(vararg book: Book)
+ @Transaction
+ fun replace(oldBook: Book, newBook: Book) {
+ delete(oldBook)
+ insert(newBook)
+ }
+
@Query("update books set durChapterPos = :pos where bookUrl = :bookUrl")
fun upProgress(bookUrl: String, pos: Int)
diff --git a/app/src/main/java/io/legato/kazusa/data/entities/BaseSource.kt b/app/src/main/java/io/legato/kazusa/data/entities/BaseSource.kt
index 5a3203bf7..baa245b98 100644
--- a/app/src/main/java/io/legato/kazusa/data/entities/BaseSource.kt
+++ b/app/src/main/java/io/legato/kazusa/data/entities/BaseSource.kt
@@ -13,7 +13,6 @@ import io.legato.kazusa.help.config.AppConfig
import io.legato.kazusa.help.crypto.SymmetricCryptoAndroid
import io.legato.kazusa.help.http.CookieStore
import io.legato.kazusa.help.source.getShareScope
-import io.legato.kazusa.model.Debug
import io.legato.kazusa.utils.GSON
import io.legato.kazusa.utils.GSONStrict
import io.legato.kazusa.utils.fromJsonArray
@@ -116,7 +115,7 @@ interface BaseSource : JsExtensions {
GSONStrict.fromJsonObject