diff --git a/app/src/main/java/org/autojs/autojs/theme/app/ColorInfoDialogManager.kt b/app/src/main/java/org/autojs/autojs/theme/app/ColorInfoDialogManager.kt
index 56933c76..11d83a18 100644
--- a/app/src/main/java/org/autojs/autojs/theme/app/ColorInfoDialogManager.kt
+++ b/app/src/main/java/org/autojs/autojs/theme/app/ColorInfoDialogManager.kt
@@ -43,7 +43,7 @@ object ColorInfoDialogManager {
.positiveColorRes(R.color.dialog_button_default)
.show()
- dialog.makeTextCopyable { it.titleView }
+ title?.run { dialog.makeTextCopyable { it.titleView } }
CoroutineScope(Dispatchers.Main).launch {
launch(Dispatchers.IO) {
diff --git a/app/src/main/java/org/autojs/autojs/theme/app/ColorSelectBaseActivity.kt b/app/src/main/java/org/autojs/autojs/theme/app/ColorSelectBaseActivity.kt
index 47e70df5..048120df 100644
--- a/app/src/main/java/org/autojs/autojs/theme/app/ColorSelectBaseActivity.kt
+++ b/app/src/main/java/org/autojs/autojs/theme/app/ColorSelectBaseActivity.kt
@@ -507,29 +507,42 @@ abstract class ColorSelectBaseActivity : BaseActivity() {
mSearchJob = lifecycleScope.launch {
withContext(Dispatchers.Default) {
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 ->
val colorHex = String.format("#%06X", 0xFFFFFF and getColor(colorItem.colorRes))
- if (query.startsWith("#")) {
- if (isRegexSearch(query.drop(1))) {
- val regex = compileRegexOrNull(extractPatternFromQuery(query.drop(1))) ?: return@filter false
- return@filter regex.containsMatchIn(colorHex)
+ val enName by lazy { getLocalizedString(this@ColorSelectBaseActivity, colorItem.nameRes, Locale("en")) }
+ val localizedName by lazy { getString(colorItem.nameRes) }
+ when {
+ 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) }
}
}
+ 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 {
// 去掉所有非字母或数字字符 (例如空格/括号/斜线等).
// \p{L} 表示任何语言的字母字符, \p{N} 表示数字.
diff --git a/app/src/main/res/raw-ar/color_search_help_document.md b/app/src/main/res/raw-ar/color_search_help_document.md
index 0bb60b14..bbb2d541 100644
--- a/app/src/main/res/raw-ar/color_search_help_document.md
+++ b/app/src/main/res/raw-ar/color_search_help_document.md
@@ -16,13 +16,13 @@
### 2. اسم اللون (بالإنجليزية)
-استخدم الاسم الإنجليزي للون ككلمة مفتاحية للبحث.
+ابدأ بـ "$" لتفعيل وضع البحث عن اسم اللون بالإنجليزية.
-#### المثال 2.1: red
+#### المثال 2.1: $red
يطابق جميع أسماء الألوان بالإنجليزية التي تحتوي على "red"، مثل "أحمر"، "أحمر قوي"، "أحمر برتقالي"، إلخ. حتى إذا لم تكن لغة العرض الحالية هي الإنجليزية، لا يزال بإمكانك البحث عن اللون المقابل باستخدام الكلمة المفتاحية الإنجليزية.
-#### المثال 2.2: blue50
+#### المثال 2.2: $blue50
يشبه المثال 1.2، إذ يمكن أن يطابق "أزرق (50)"، "أزرق (500)" و"الأزرق الفاتح (50)"، إلخ.
diff --git a/app/src/main/res/raw-es/color_search_help_document.md b/app/src/main/res/raw-es/color_search_help_document.md
index c958d226..72d6b9ee 100644
--- a/app/src/main/res/raw-es/color_search_help_document.md
+++ b/app/src/main/res/raw-es/color_search_help_document.md
@@ -16,13 +16,13 @@ Coincide con todos los nombres de color que incluyan "azul50". Durante la coinci
### 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.
-#### 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)".
diff --git a/app/src/main/res/raw-fr/color_search_help_document.md b/app/src/main/res/raw-fr/color_search_help_document.md
index 34326616..05a48a14 100644
--- a/app/src/main/res/raw-fr/color_search_help_document.md
+++ b/app/src/main/res/raw-fr/color_search_help_document.md
@@ -16,13 +16,13 @@ Correspond à tous les noms de couleur contenant « bleu50 ». Lors de la corres
### 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.
-#### 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) ».
diff --git a/app/src/main/res/raw-ja/color_search_help_document.md b/app/src/main/res/raw-ja/color_search_help_document.md
index ef15caaf..96fb564d 100644
--- a/app/src/main/res/raw-ja/color_search_help_document.md
+++ b/app/src/main/res/raw-ja/color_search_help_document.md
@@ -16,13 +16,13 @@
### 2. カラー名 (英語)
-英語のカラー名をキーワードとして検索します.
+"$" で始めると, 英語のカラーネーム検索モードが有効になります.
-#### 例 2.1: red
+#### 例 2.1: $red
"red" を含むすべての英語カラー名がマッチします. たとえば "レッド", "オレンジレッド", "インディアンレッド" など. 表示言語が英語でなくても, 英語のキーワードで該当するカラーを検索できます.
-#### 例 2.2: blue50
+#### 例 2.2: $blue50
例 1.2 と同様に, "ブルー (50)", "ブルー (500)", "水色 (50)" などにマッチします.
diff --git a/app/src/main/res/raw-ko/color_search_help_document.md b/app/src/main/res/raw-ko/color_search_help_document.md
index 089239b1..e213ef5c 100644
--- a/app/src/main/res/raw-ko/color_search_help_document.md
+++ b/app/src/main/res/raw-ko/color_search_help_document.md
@@ -12,72 +12,72 @@
#### 예시 1.2: 블루50
-"블루50"을 포함하는 모든 색상 이름과 일치합니다. 이때 공백, 괄호, 슬래시, 하이픈 등의 영숫자가 아닌 문자는 무시됩니다. 따라서 "블루50"은 "블루 (50)", "블루 (500)" 과 일치할 수 있지만, "블루 그레이 (50)" 은 "그레이" 이 무시될 수 없으므로 일치하지 않습니다.
+"블루50" 을 포함하는 모든 색상 이름과 일치합니다. 이때 공백, 괄호, 슬래시, 하이픈 등의 영숫자가 아닌 문자는 무시됩니다. 따라서 "블루50"은 "블루 (50)", "블루 (500)" 과 일치할 수 있지만, "블루 그레이 (50)" 은 "그레이" 이 무시될 수 없으므로 일치하지 않습니다.
### 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)" 등에 일치합니다.
### 3. HEX
-"#"로 시작하면 HEX 검색 모드가 활성화됩니다.
+"#" 로 시작하면 HEX 검색 모드가 활성화됩니다.
#### 예시 3.1: #FF007F
-HEX가 "#FF007F"인 색상과 일치합니다. 예: "로즈".
+HEX 가 "#FF007F" 인 색상과 일치합니다. 예: "로즈".
#### 예시 3.2: #FF
-HEX가 "#FF"로 시작하는 모든 색상과 일치합니다. 예: "#FF8099", "#FF00CB", "#FFFAFA" 등.
+HEX 가 "#FF" 로 시작하는 모든 색상과 일치합니다. 예: "#FF8099", "#FF00CB", "#FFFAFA" 등.
### 4. 정규 표현식
-"/"로 시작하고 "/"로 끝나면 JavaScript와 유사한 정규 표현식 검색 모드가 활성화됩니다.
+"/" 로 시작하고 "/" 로 끝나면 JavaScript 와 유사한 정규 표현식 검색 모드가 활성화됩니다.
#### 예시 4.1: /레드|오렌지|옐로우/
-"레드", "오렌지", "옐로우"을 포함하는 모든 색상 이름과 일치합니다.
+"레드", "오렌지", "옐로우" 을 포함하는 모든 색상 이름과 일치합니다.
#### 예시 4.2: /\b50\b/
-양옆에 단어 구분이 있는 "50"을 포함하는 모든 색상 이름과 일치합니다. 예: "레드 (50)", "핑크 (50)", "옐로우 (50)" 등. "레드 (500)"이나 "핑크 (500)" 등은 일치하지 않습니다.
+양옆에 단어 구분이 있는 "50" 을 포함하는 모든 색상 이름과 일치합니다. 예: "레드 (50)", "핑크 (50)", "옐로우 (50)" 등. "레드 (500)"이나 "핑크 (500)" 등은 일치하지 않습니다.
#### 예시 4.3: /red|orange/
-예시 2.2와 유사하게, 정규 표현식 또한 영어 색상 이름에 일치합니다. /red|orange/는 "스트롱 레드", "번트 오렌지", "페일 바이올렛 레드" 등을 일치시킬 수 있습니다.
+예시 2.2 와 유사하게, 정규 표현식 또한 영어 색상 이름에 일치합니다. /red|orange/ 는 "스트롱 레드", "번트 오렌지", "페일 바이올렛 레드" 등을 일치시킬 수 있습니다.
### 5. HEX 정규 표현식
-"#/"로 시작하고 "/"로 끝나면, HEX에 대한 정규 표현식 검색 모드가 활성화됩니다.
+"#/" 로 시작하고 "/"로 끝나면, HEX 에 대한 정규 표현식 검색 모드가 활성화됩니다.
#### 예시 5.1: #/FF\b/
-단어 경계로 끝나는 "FF"를 포함하는 모든 HEX에 일치합니다(형태: "#xxxxFF"). 예: "#2962FF", "#D94DFF", "#F0F8FF" 등.
+단어 경계로 끝나는 "FF" 를 포함하는 모든 HEX 에 일치합니다 (형태: "#xxxxFF"). 예: "#2962FF", "#D94DFF", "#F0F8FF" 등.
#### 예시 5.2: #/#FF/
-"#FF"를 포함하는 모든 HEX에 일치합니다. 예시 3.2와 동일한 효과로 "#FFxxxx" 형태입니다.
+"#FF" 를 포함하는 모든 HEX 에 일치합니다. 예시 3.2 와 동일한 효과로 "#FFxxxx" 형태입니다.
#### 예시 5.3: #/#..FF/
-중간에 "FF"가 있는 모든 HEX에 일치합니다(형태: "#xxFFxx"). 예: "#CCFF00", "#66FFE6", "#00FF7F" 등.
+중간에 "FF" 가 있는 모든 HEX 에 일치합니다 (형태: "#xxFFxx"). 예: "#CCFF00", "#66FFE6", "#00FF7F" 등.
#### 예시 5.4: #/#((?@string/text_copy
기본 접두사
세부
- Dismiss
+ 닫기
브라우저
파일 정보
역사
diff --git a/version.properties b/version.properties
index 33cbaa5b..1a24488f 100644
--- a/version.properties
+++ b/version.properties
@@ -1,5 +1,5 @@
-#Tue Apr 08 21:28:35 CST 2025
-BUILD_TIME=1744118915044
+#Wed Apr 09 21:04:42 CST 2025
+BUILD_TIME=1744203882827
COMPILE_SDK_VERSION=35
JAVA_VERSION=23
JAVA_VERSION_MIN_RADICAL=0
@@ -17,6 +17,6 @@ RAPID_OCR_OPENCV_MOBILE_LABEL_VERSION=13
RAPID_OCR_OPENCV_MOBILE_VERSION=4.5.3
TARGET_SDK_VERSION=35
TARGET_SDK_VERSION_INRT=29
-VERSION_BUILD=3113
+VERSION_BUILD=3118
VERSION_NAME=6.6.2 Alpha5
VSCODE_EXT_REQUIRED_VERSION=1.0.8