6.6.2 - Alpha5 - 优化主题色设置页面英文颜色名称搜索模式

This commit is contained in:
SuperMonster003
2025-04-10 00:30:44 +08:00
parent d9a0bf713d
commit 5c06573d06
13 changed files with 76 additions and 63 deletions

View File

@@ -43,7 +43,7 @@ object ColorInfoDialogManager {
.positiveColorRes(R.color.dialog_button_default) .positiveColorRes(R.color.dialog_button_default)
.show() .show()
dialog.makeTextCopyable { it.titleView } title?.run { dialog.makeTextCopyable { it.titleView } }
CoroutineScope(Dispatchers.Main).launch { CoroutineScope(Dispatchers.Main).launch {
launch(Dispatchers.IO) { launch(Dispatchers.IO) {

View File

@@ -507,29 +507,42 @@ abstract class ColorSelectBaseActivity : BaseActivity() {
mSearchJob = lifecycleScope.launch { mSearchJob = lifecycleScope.launch {
withContext(Dispatchers.Default) { withContext(Dispatchers.Default) {
if (query.isNullOrBlank()) return@withContext colorItems if (query.isNullOrBlank()) return@withContext colorItems
val normalizedQuery = normalizeForMatching(query) val searchTerm = query.trimStart()
val cleanedSearchTerm = searchTerm.drop(1)
val normalizedQuery = normalizeForMatching(searchTerm)
colorItems.filter { colorItem -> colorItems.filter { colorItem ->
val colorHex = String.format("#%06X", 0xFFFFFF and getColor(colorItem.colorRes)) val colorHex = String.format("#%06X", 0xFFFFFF and getColor(colorItem.colorRes))
if (query.startsWith("#")) { val enName by lazy { getLocalizedString(this@ColorSelectBaseActivity, colorItem.nameRes, Locale("en")) }
if (isRegexSearch(query.drop(1))) { val localizedName by lazy { getString(colorItem.nameRes) }
val regex = compileRegexOrNull(extractPatternFromQuery(query.drop(1))) ?: return@filter false when {
return@filter regex.containsMatchIn(colorHex) searchTerm.startsWith("#") -> {
searchMatch(cleanedSearchTerm, colorHex) {
colorHex.contains(searchTerm, ignoreCase = true)
}
}
searchTerm.startsWith("$") -> {
searchMatch(cleanedSearchTerm, enName) {
normalizeForMatching(enName).contains(normalizedQuery, ignoreCase = true)
}
}
else -> {
searchMatch(searchTerm, localizedName) {
normalizeForMatching(localizedName).contains(normalizedQuery, ignoreCase = true)
} }
return@filter colorHex.contains(query, ignoreCase = true)
} }
val localName = getString(colorItem.nameRes)
val enName = getLocalizedString(this@ColorSelectBaseActivity, colorItem.nameRes, Locale("en"))
if (isRegexSearch(query)) {
val regex = compileRegexOrNull(extractPatternFromQuery(query)) ?: return@filter false
return@filter regex.containsMatchIn(localName) || regex.containsMatchIn(enName)
} }
return@filter normalizeForMatching(localName).contains(normalizedQuery, ignoreCase = true)
|| normalizeForMatching(enName).contains(normalizedQuery, ignoreCase = true)
} }
}.let { filteredResult -> colorItemAdapter.updateData(filteredResult) } }.let { filteredResult -> colorItemAdapter.updateData(filteredResult) }
} }
} }
fun searchMatch(search: String, text: String, nonRegexMatch: () -> Boolean) = when {
isRegexSearch(search) -> {
compileRegexOrNull(extractPatternFromQuery(search))?.containsMatchIn(text) == true
}
else -> nonRegexMatch()
}
private fun normalizeForMatching(input: String): String { private fun normalizeForMatching(input: String): String {
// 去掉所有非字母或数字字符 (例如空格/括号/斜线等). // 去掉所有非字母或数字字符 (例如空格/括号/斜线等).
// \p{L} 表示任何语言的字母字符, \p{N} 表示数字. // \p{L} 表示任何语言的字母字符, \p{N} 表示数字.

View File

@@ -16,13 +16,13 @@
### 2. اسم اللون (بالإنجليزية) ### 2. اسم اللون (بالإنجليزية)
استخدم الاسم الإنجليزي للون ككلمة مفتاحية للبحث. ابدأ بـ "$" لتفعيل وضع البحث عن اسم اللون بالإنجليزية.
#### المثال 2.1: red #### المثال 2.1: $red
يطابق جميع أسماء الألوان بالإنجليزية التي تحتوي على "red"، مثل "أحمر"، "أحمر قوي"، "أحمر برتقالي"، إلخ. حتى إذا لم تكن لغة العرض الحالية هي الإنجليزية، لا يزال بإمكانك البحث عن اللون المقابل باستخدام الكلمة المفتاحية الإنجليزية. يطابق جميع أسماء الألوان بالإنجليزية التي تحتوي على "red"، مثل "أحمر"، "أحمر قوي"، "أحمر برتقالي"، إلخ. حتى إذا لم تكن لغة العرض الحالية هي الإنجليزية، لا يزال بإمكانك البحث عن اللون المقابل باستخدام الكلمة المفتاحية الإنجليزية.
#### المثال 2.2: blue50 #### المثال 2.2: $blue50
يشبه المثال 1.2، إذ يمكن أن يطابق "أزرق (50)"، "أزرق (500)" و"الأزرق الفاتح (50)"، إلخ. يشبه المثال 1.2، إذ يمكن أن يطابق "أزرق (50)"، "أزرق (500)" و"الأزرق الفاتح (50)"، إلخ.

View File

@@ -16,13 +16,13 @@ Coincide con todos los nombres de color que incluyan "azul50". Durante la coinci
### 2. Nombre de color (inglés) ### 2. Nombre de color (inglés)
Usa el nombre de color en inglés como palabra clave de búsqueda. Comience con "$" para activar el modo de búsqueda por nombre de color en inglés.
#### Ejemplo 2.1: red #### Ejemplo 2.1: $red
Coincide con todos los nombres de color en inglés que contengan "red", como "Rojo", "Rojo anaranjado", "Rojo oscuro", etc. Incluso si el idioma de la interfaz no es inglés, puedes buscar el color correspondiente usando una palabra clave en inglés. Coincide con todos los nombres de color en inglés que contengan "red", como "Rojo", "Rojo anaranjado", "Rojo oscuro", etc. Incluso si el idioma de la interfaz no es inglés, puedes buscar el color correspondiente usando una palabra clave en inglés.
#### Ejemplo 2.2: blue50 #### Ejemplo 2.2: $blue50
Igual que en el Ejemplo 1.2, puede coincidir con "Azul (50)", "Azul (500)" y "Azul claro (50)". Igual que en el Ejemplo 1.2, puede coincidir con "Azul (50)", "Azul (500)" y "Azul claro (50)".

View File

@@ -16,13 +16,13 @@ Correspond à tous les noms de couleur contenant « bleu50 ». Lors de la corres
### 2. Nom de couleur (anglais) ### 2. Nom de couleur (anglais)
Utilisez le nom de couleur en anglais comme mot-clé de recherche. Commencez par "$" pour activer le mode de recherche par nom de couleur en anglais.
#### Exemple 2.1 : red #### Exemple 2.1 : $red
Correspond à tous les noms de couleur en anglais contenant « red », tels que « Rouge », « Rouge orangé », « Rouge foncé », etc. Même si la langue d'affichage n'est pas l'anglais, vous pouvez toujours rechercher la couleur correspondante à l'aide d'un mot-clé en anglais. Correspond à tous les noms de couleur en anglais contenant « red », tels que « Rouge », « Rouge orangé », « Rouge foncé », etc. Même si la langue d'affichage n'est pas l'anglais, vous pouvez toujours rechercher la couleur correspondante à l'aide d'un mot-clé en anglais.
#### Exemple 2.2 : blue50 #### Exemple 2.2 : $blue50
Comme dans l'exemple 1.2, il peut correspondre à « Bleu (50) », « Bleu (500) » et « Bleu clair (50) ». Comme dans l'exemple 1.2, il peut correspondre à « Bleu (50) », « Bleu (500) » et « Bleu clair (50) ».

View File

@@ -16,13 +16,13 @@
### 2. カラー名 (英語) ### 2. カラー名 (英語)
英語のカラー名をキーワードとして検索します. "$" で始めると, 英語のカラーネーム検索モードが有効になります.
#### 例 2.1: red #### 例 2.1: $red
"red" を含むすべての英語カラー名がマッチします. たとえば "レッド", "オレンジレッド", "インディアンレッド" など. 表示言語が英語でなくても, 英語のキーワードで該当するカラーを検索できます. "red" を含むすべての英語カラー名がマッチします. たとえば "レッド", "オレンジレッド", "インディアンレッド" など. 表示言語が英語でなくても, 英語のキーワードで該当するカラーを検索できます.
#### 例 2.2: blue50 #### 例 2.2: $blue50
例 1.2 と同様に, "ブルー (50)", "ブルー (500)", "水色 (50)" などにマッチします. 例 1.2 と同様に, "ブルー (50)", "ブルー (500)", "水色 (50)" などにマッチします.

View File

@@ -16,13 +16,13 @@
### 2. 색상 이름 (영어) ### 2. 색상 이름 (영어)
영어로 된 색상 이름 검색 키워드로 사용합니다. "$" 로 시작하여 영어 색상 이름 검색 모드를 활성화합니다.
#### 예시 2.1: red #### 예시 2.1: $red
"red" 를 포함하는 모든 영어 색상 이름과 일치합니다. 예: "레드", "다크 레드", "스피넬 레드" 등. 현재 언어가 영어가 아니더라도, 영어 키워드를 통해 해당 색상을 검색할 수 있습니다. "red" 를 포함하는 모든 영어 색상 이름과 일치합니다. 예: "레드", "다크 레드", "스피넬 레드" 등. 현재 언어가 영어가 아니더라도, 영어 키워드를 통해 해당 색상을 검색할 수 있습니다.
#### 예시 2.2: blue50 #### 예시 2.2: $blue50
예시 1.2 와 동일하게 "블루 (50)", "블루 (500)", "밝은 파란색 (50)" 등에 일치합니다. 예시 1.2 와 동일하게 "블루 (50)", "블루 (500)", "밝은 파란색 (50)" 등에 일치합니다.

View File

@@ -16,13 +16,13 @@
### 2. Название цвета (английское) ### 2. Название цвета (английское)
Использовать английское название цвета в качестве ключевого слова. Начните со знака "$", чтобы включить режим поиска по английскому названию цвета.
#### Пример 2.1: red #### Пример 2.1: $red
Находит все английские названия цветов, содержащие «red», например «Красный», «Кирпичный красный», «Оранжево-красный» и т. д. Даже если язык интерфейса не английский, можно искать соответствующий цвет с помощью английского ключевого слова. Находит все английские названия цветов, содержащие «red», например «Красный», «Кирпичный красный», «Оранжево-красный» и т. д. Даже если язык интерфейса не английский, можно искать соответствующий цвет с помощью английского ключевого слова.
#### Пример 2.2: blue50 #### Пример 2.2: $blue50
Аналогично примеру 1.2, совпадает с «Синий (50)», «Синий (500)», «Светло-голубой (50)» и т. д. Аналогично примеру 1.2, совпадает с «Синий (50)», «Синий (500)», «Светло-голубой (50)» и т. д.

View File

@@ -16,13 +16,13 @@
### 2. 顏色名稱 (英文) ### 2. 顏色名稱 (英文)
以英文顏色名稱作為關鍵字的搜索方式. "$" 開頭, 啓用英文顏色名稱搜索方式.
#### 示例 2.1: red #### 示例 2.1: $red
可匹配全部英文顏色名稱中包含 "red" 的顏色, 如 "紅", "鮮紅", "橙紅" 等. 即使當前顯示語言並非英語, 也可通過英文關鍵字搜索到對應的顏色. 可匹配全部英文顏色名稱中包含 "red" 的顏色, 如 "紅", "鮮紅", "橙紅" 等. 即使當前顯示語言並非英語, 也可通過英文關鍵字搜索到對應的顏色.
#### 示例 2.2: blue50 #### 示例 2.2: $blue50
同示例 1.2, 可匹配 "藍 (50)", "藍 (500)" 以及 "淺藍 (50)" 等. 同示例 1.2, 可匹配 "藍 (50)", "藍 (500)" 以及 "淺藍 (50)" 等.

View File

@@ -16,13 +16,13 @@
### 2. 顏色名稱 (英文) ### 2. 顏色名稱 (英文)
以英文顏色名稱作為關鍵字的搜尋方式. "$" 開頭, 啟用英文顏色名稱搜尋方式.
#### 示例 2.1: red #### 示例 2.1: $red
可匹配全部英文顏色名稱中包含 "red" 的顏色, 如 "紅", "鮮紅", "橙紅" 等. 即使當前顯示語言並非英語, 也可透過英文關鍵字搜尋到對應的顏色. 可匹配全部英文顏色名稱中包含 "red" 的顏色, 如 "紅", "鮮紅", "橙紅" 等. 即使當前顯示語言並非英語, 也可透過英文關鍵字搜尋到對應的顏色.
#### 示例 2.2: blue50 #### 示例 2.2: $blue50
同示例 1.2, 可匹配 "藍 (50)", "藍 (500)" 以及 "淺藍 (50)" 等. 同示例 1.2, 可匹配 "藍 (50)", "藍 (500)" 以及 "淺藍 (50)" 等.

View File

@@ -16,13 +16,13 @@
### 2. 颜色名称 (英文) ### 2. 颜色名称 (英文)
以英文颜色名称作为关键字的搜索方式. "$" 开头, 启用英文颜色名称搜索方式.
#### 示例 2.1: red #### 示例 2.1: $red
可匹配全部英文颜色名称中包含 "red" 的颜色, 如 "红", "鲜红", "橙红" 等. 即使当前显示语言并非英语, 也可通过英文关键字搜索到对应的颜色. 可匹配全部英文颜色名称中包含 "red" 的颜色, 如 "红", "鲜红", "橙红" 等. 即使当前显示语言并非英语, 也可通过英文关键字搜索到对应的颜色.
#### 示例 2.2: blue50 #### 示例 2.2: $blue50
同示例 1.2, 可匹配 "蓝 (50)", "蓝 (500)" 以及 "浅蓝 (50)" 等. 同示例 1.2, 可匹配 "蓝 (50)", "蓝 (500)" 以及 "浅蓝 (50)" 等.

View File

@@ -89,7 +89,7 @@
<string name="dialog_button_copy">@string/text_copy</string> <string name="dialog_button_copy">@string/text_copy</string>
<string name="dialog_button_default_prefix">기본 접두사</string> <string name="dialog_button_default_prefix">기본 접두사</string>
<string name="dialog_button_details">세부</string> <string name="dialog_button_details">세부</string>
<string name="dialog_button_dismiss">Dismiss</string> <string name="dialog_button_dismiss">닫기</string>
<string name="dialog_button_download_with_browser">브라우저</string> <string name="dialog_button_download_with_browser">브라우저</string>
<string name="dialog_button_file_information">파일 정보</string> <string name="dialog_button_file_information">파일 정보</string>
<string name="dialog_button_history">역사</string> <string name="dialog_button_history">역사</string>

View File

@@ -1,5 +1,5 @@
#Tue Apr 08 21:28:35 CST 2025 #Wed Apr 09 21:04:42 CST 2025
BUILD_TIME=1744118915044 BUILD_TIME=1744203882827
COMPILE_SDK_VERSION=35 COMPILE_SDK_VERSION=35
JAVA_VERSION=23 JAVA_VERSION=23
JAVA_VERSION_MIN_RADICAL=0 JAVA_VERSION_MIN_RADICAL=0
@@ -17,6 +17,6 @@ RAPID_OCR_OPENCV_MOBILE_LABEL_VERSION=13
RAPID_OCR_OPENCV_MOBILE_VERSION=4.5.3 RAPID_OCR_OPENCV_MOBILE_VERSION=4.5.3
TARGET_SDK_VERSION=35 TARGET_SDK_VERSION=35
TARGET_SDK_VERSION_INRT=29 TARGET_SDK_VERSION_INRT=29
VERSION_BUILD=3113 VERSION_BUILD=3118
VERSION_NAME=6.6.2 Alpha5 VERSION_NAME=6.6.2 Alpha5
VSCODE_EXT_REQUIRED_VERSION=1.0.8 VSCODE_EXT_REQUIRED_VERSION=1.0.8