diff --git a/app/src/main/java/org/autojs/autojs/core/image/capture/ScreenCapturerForegroundService.kt b/app/src/main/java/org/autojs/autojs/core/image/capture/ScreenCapturerForegroundService.kt
index 9aaa173a..1543d173 100644
--- a/app/src/main/java/org/autojs/autojs/core/image/capture/ScreenCapturerForegroundService.kt
+++ b/app/src/main/java/org/autojs/autojs/core/image/capture/ScreenCapturerForegroundService.kt
@@ -28,6 +28,7 @@ class ScreenCapturerForegroundService : Service() {
override fun onBind(intent: Intent): IBinder = Binder()
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
+ instance = this
mForegroundServiceCreator = ForegroundServiceCreator.Builder(this)
.setClassName(ScreenCapturerForegroundService::class.java)
.setIntent(
@@ -51,11 +52,20 @@ class ScreenCapturerForegroundService : Service() {
override fun onDestroy() {
mForegroundServiceCreator?.stopForeground(STOP_FOREGROUND_REMOVE)
+ instance = null
super.onDestroy()
}
companion object {
+
const val NOTIFICATION_ID = 0xCF
+
+ var instance: ScreenCapturerForegroundService? = null
+
+ fun stopService() {
+ instance?.stopSelf()
+ }
+
}
}
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 11d83a18..c4711d3e 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
@@ -7,6 +7,7 @@ import android.widget.TextView
import androidx.annotation.ColorInt
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.view.isVisible
+import com.afollestad.materialdialogs.DialogAction
import com.afollestad.materialdialogs.MaterialDialog
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
@@ -22,7 +23,12 @@ import org.autojs.autojs6.databinding.ColorInfoDialogListItemBinding
object ColorInfoDialogManager {
@JvmStatic
- fun showColorInfoDialog(context: Context, @ColorInt color: Int?, title: String? = null) {
+ fun showColorInfoDialog(
+ context: Context,
+ @ColorInt color: Int?,
+ title: String? = null,
+ customNeutral: CustomColorInfoDialogNeutral? = null,
+ ) {
if (color == null) {
MaterialDialog.Builder(context)
.title(R.string.text_prompt)
@@ -36,12 +42,21 @@ object ColorInfoDialogManager {
val colorWithoutAlpha = color or -0x1000000
- val dialog = MaterialDialog.Builder(context)
- .title(title ?: context.getString(R.string.dialog_title_color_details))
- .customView(binding.root, false)
- .positiveText(R.string.dialog_button_dismiss)
- .positiveColorRes(R.color.dialog_button_default)
- .show()
+ val dialog = MaterialDialog.Builder(context).apply {
+ title(title ?: context.getString(R.string.dialog_title_color_details))
+ customView(binding.root, false)
+ customNeutral?.let { neutral ->
+ neutral.textRes?.let(::neutralText)
+ neutral.colorRes?.let(::neutralColorRes)
+ neutral.onNeutralCallback?.let {
+ onNeutral { dialog, which ->
+ it.onClick(dialog, which, colorWithoutAlpha)
+ }
+ }
+ }
+ positiveText(R.string.dialog_button_dismiss)
+ positiveColorRes(R.color.dialog_button_default)
+ }.show()
title?.run { dialog.makeTextCopyable { it.titleView } }
@@ -98,4 +113,14 @@ object ColorInfoDialogManager {
}
}
+ data class CustomColorInfoDialogNeutral(
+ val textRes: Int? = null,
+ val colorRes: Int? = null,
+ val onNeutralCallback: NeutralButtonCallback? = null,
+ ) {
+ interface NeutralButtonCallback {
+ fun onClick(dialog: MaterialDialog, which: DialogAction, @ColorInt color: Int)
+ }
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/org/autojs/autojs/theme/app/ColorItemAdapter.kt b/app/src/main/java/org/autojs/autojs/theme/app/ColorItemAdapter.kt
index 45f4d0db..43a817b4 100644
--- a/app/src/main/java/org/autojs/autojs/theme/app/ColorItemAdapter.kt
+++ b/app/src/main/java/org/autojs/autojs/theme/app/ColorItemAdapter.kt
@@ -52,24 +52,17 @@ class ColorItemAdapter(
}
private fun updateSelectedPosition(item: PresetColorItem, positionOfCurrentSelection: Int) {
- when (selectedItemId) {
- SELECT_NONE -> {
- selectedLibraryId = item.libraryId
- selectedItemId = item.itemId
- notifyItemChanged(positionOfCurrentSelection)
+ if (selectedItemId != SELECT_NONE) {
+ val positionBeforeSelection = items.indexOfFirst {
+ it.libraryId == selectedLibraryId && it.itemId == selectedItemId
}
- else -> {
- val positionBeforeSelection = items.indexOfFirst {
- it.libraryId == selectedLibraryId && it.itemId == selectedItemId
- }
- if (positionBeforeSelection != positionOfCurrentSelection && positionBeforeSelection >= 0) {
- notifyItemChanged(positionBeforeSelection)
- }
- selectedLibraryId = item.libraryId
- selectedItemId = item.itemId
- notifyItemChanged(positionOfCurrentSelection)
+ if (positionBeforeSelection != positionOfCurrentSelection && positionBeforeSelection >= 0) {
+ notifyItemChanged(positionBeforeSelection)
}
}
+ selectedLibraryId = item.libraryId
+ selectedItemId = item.itemId
+ notifyItemChanged(positionOfCurrentSelection)
}
private fun savePrefsAndDatabase(context: Context, item: PresetColorItem) {
diff --git a/app/src/main/java/org/autojs/autojs/theme/app/ColorItemViewHolder.kt b/app/src/main/java/org/autojs/autojs/theme/app/ColorItemViewHolder.kt
index 7d194f18..e9894c53 100644
--- a/app/src/main/java/org/autojs/autojs/theme/app/ColorItemViewHolder.kt
+++ b/app/src/main/java/org/autojs/autojs/theme/app/ColorItemViewHolder.kt
@@ -7,6 +7,7 @@ import androidx.annotation.ColorInt
import androidx.core.view.isVisible
import androidx.recyclerview.widget.RecyclerView
import org.autojs.autojs.theme.ThemeColorHelper
+import org.autojs.autojs.theme.ThemeColorManager
import org.autojs.autojs.theme.app.ColorLibrariesActivity.Companion.PresetColorItem
import org.autojs.autojs.theme.app.ColorLibrariesActivity.Companion.presetColorLibraries
import org.autojs.autojs.util.ViewUtils
@@ -37,13 +38,17 @@ class ColorItemViewHolder(itemViewBinding: MtColorLibraryRecyclerViewItemBinding
}
}
subtitleSplitLineView.isVisible = !colorLibraryIdentifierView.text.isNullOrBlank()
- setChecked(color, selectedLibraryId == item.libraryId && selectedItemId == item.itemId)
+ setChecked(selectedLibraryId == item.libraryId && selectedItemId == item.itemId, color)
}
- fun setChecked(@ColorInt color: Int, checked: Boolean) {
+ fun setChecked(checked: Boolean, @ColorInt refColor: Int? = null) {
if (checked) {
+ val niceRefColor = refColor ?: ThemeColorManager.colorPrimary
+ val tintRes = when (ViewUtils.isLuminanceLight(niceRefColor)) {
+ true -> R.color.day
+ else -> R.color.night
+ }
colorView.setImageResource(R.drawable.mt_ic_check_white_36dp)
- val tintRes = if (ViewUtils.isLuminanceLight(color)) R.color.day else R.color.night
colorView.imageTintList = ColorStateList.valueOf(context.getColor(tintRes))
} else {
colorView.setImageDrawable(null)
diff --git a/app/src/main/java/org/autojs/autojs/theme/app/ColorItemsActivity.kt b/app/src/main/java/org/autojs/autojs/theme/app/ColorItemsActivity.kt
index 57ed248b..ec2ca284 100644
--- a/app/src/main/java/org/autojs/autojs/theme/app/ColorItemsActivity.kt
+++ b/app/src/main/java/org/autojs/autojs/theme/app/ColorItemsActivity.kt
@@ -52,15 +52,24 @@ class ColorItemsActivity : ColorSelectBaseActivity() {
super.onCreate(savedInstanceState)
ThemeChangeNotifier.themeChanged.observe(this) {
+ mAdapter.apply {
+ val positionBeforeSelection = items.indexOfFirst {
+ it.libraryId == selectedLibraryId && it.itemId == selectedItemId
+ }
+ setUpSelectedPosition(this)
+ if (positionBeforeSelection in items.indices) {
+ notifyItemChanged(positionBeforeSelection)
+ }
+ }
updateClickListener(binding.toolbar)
}
- val libraryId = intent.getIntExtra(INTENT_IDENTIFIER_LIBRARY_ID, -1)
+ val libraryId = intent.getIntExtra(INTENT_IDENTIFIER_LIBRARY_ID, SELECT_NONE)
val library = presetColorLibraries.find { it.id == libraryId }?.also { lib ->
mLibrary = lib
} ?: throw RuntimeException("Unknown library id: $libraryId")
- mInitiallyItemIdScrollTo = intent.getIntExtra(INTENT_IDENTIFIER_COLOR_ITEM_ID_SCROLL_TO, -1)
+ mInitiallyItemIdScrollTo = intent.getIntExtra(INTENT_IDENTIFIER_COLOR_ITEM_ID_SCROLL_TO, SELECT_NONE)
MtActivityColorItemsBinding.inflate(layoutInflater).let {
binding = it
@@ -76,9 +85,7 @@ class ColorItemsActivity : ColorSelectBaseActivity() {
binding.colorItemsRecyclerView.let { it ->
it.layoutManager = LinearLayoutManager(this)
- it.adapter = ColorItemAdapter(library.colors) {
- updateAppBarColorContent(ThemeColorManager.colorPrimary)
- }.also { mAdapter = it }
+ it.adapter = ColorItemAdapter(library.colors).also { mAdapter = it }
it.addItemDecoration(DividerItemDecoration(this, VERTICAL))
ViewUtils.excludePaddingClippableViewFromNavigationBar(it)
@@ -110,7 +117,7 @@ class ColorItemsActivity : ColorSelectBaseActivity() {
}
private fun setUpSelectedPosition(adapter: ColorItemAdapter) {
- when (Pref.getInt(KEY_SELECTED_COLOR_LIBRARY_ID, SELECT_NONE)) {
+ when (val prefLibraryId = Pref.getInt(KEY_SELECTED_COLOR_LIBRARY_ID, SELECT_NONE)) {
SELECT_NONE -> when (val legacyIndex = Pref.getInt(KEY_LEGACY_SELECTED_COLOR_INDEX, SELECT_NONE)) {
customColorPosition -> Unit
SELECT_NONE, defaultColorPosition -> when (mLibrary.id) {
@@ -131,6 +138,10 @@ class ColorItemsActivity : ColorSelectBaseActivity() {
adapter.selectedLibraryId = mLibrary.id
adapter.selectedItemId = Pref.getInt(KEY_SELECTED_COLOR_ITEM_ID, SELECT_NONE)
}
+ else -> {
+ adapter.selectedLibraryId = prefLibraryId
+ adapter.selectedItemId = SELECT_NONE
+ }
}
}
diff --git a/app/src/main/java/org/autojs/autojs/theme/app/ColorLibrariesActivity.kt b/app/src/main/java/org/autojs/autojs/theme/app/ColorLibrariesActivity.kt
index 2e677428..d09b7011 100644
--- a/app/src/main/java/org/autojs/autojs/theme/app/ColorLibrariesActivity.kt
+++ b/app/src/main/java/org/autojs/autojs/theme/app/ColorLibrariesActivity.kt
@@ -42,7 +42,6 @@ class ColorLibrariesActivity : ColorSelectBaseActivity() {
super.onCreate(savedInstanceState)
ThemeChangeNotifier.themeChanged.observe(this) {
- updateAppBarColorContent(ThemeColorManager.colorPrimary)
libraryAdapter.notifyDataSetChanged()
colorItemAdapter.notifyDataSetChanged()
}
diff --git a/app/src/main/java/org/autojs/autojs/theme/app/ColorSelectActivity.kt b/app/src/main/java/org/autojs/autojs/theme/app/ColorSelectActivity.kt
index 11d77e8e..eac8dc58 100644
--- a/app/src/main/java/org/autojs/autojs/theme/app/ColorSelectActivity.kt
+++ b/app/src/main/java/org/autojs/autojs/theme/app/ColorSelectActivity.kt
@@ -21,9 +21,11 @@ class ColorSelectActivity : ColorSelectBaseActivity() {
private val mOnItemClickListener = object : OnItemClickListener {
override fun onItemClick(v: View?, position: Int) {
- mColorSettingRecyclerView.selectedThemeColor?.let {
+ mColorSettingRecyclerView.selectedColor?.let {
mSelectedPosition = position
- updateAppBarColorContent(it.colorPrimary)
+ if (position == customColorPosition) {
+ isForciblyEnableAppBarColorTransition = true
+ }
}
}
}
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 048120df..8137c1fd 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
@@ -16,6 +16,7 @@ import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView.VERTICAL
import androidx.recyclerview.widget.ThemeColorRecyclerView
+import com.afollestad.materialdialogs.DialogAction
import com.afollestad.materialdialogs.MaterialDialog
import com.google.android.material.appbar.AppBarLayout
import com.jaredrummler.android.colorpicker.ColorPickerDialog
@@ -34,6 +35,7 @@ import org.autojs.autojs.theme.app.ColorEntities.ColorHistory
import org.autojs.autojs.theme.app.ColorEntities.ColorInfo
import org.autojs.autojs.theme.app.ColorEntities.PaletteHistory
import org.autojs.autojs.theme.app.ColorHistoryItemViewHolder.Companion.ColorHistoryItem
+import org.autojs.autojs.theme.app.ColorInfoDialogManager.CustomColorInfoDialogNeutral.NeutralButtonCallback
import org.autojs.autojs.theme.app.ColorLibrariesActivity.Companion.COLOR_LIBRARY_ID_DEFAULT
import org.autojs.autojs.theme.app.ColorLibrariesActivity.Companion.COLOR_LIBRARY_ID_MATERIAL
import org.autojs.autojs.theme.app.ColorLibrariesActivity.Companion.COLOR_LIBRARY_ID_PALETTE
@@ -83,6 +85,10 @@ abstract class ColorSelectBaseActivity : BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
+ ThemeChangeNotifier.themeChanged.observe(this) {
+ updateAppBarColorContent(ThemeColorManager.colorPrimary)
+ }
+
mTitle = intent.getStringExtra("title") ?: getString(R.string.text_theme_color)
currentColor = intent.getIntExtra("currentColor", ThemeColorManager.colorPrimary)
@@ -238,7 +244,7 @@ abstract class ColorSelectBaseActivity : BaseActivity() {
return TargetInfoForLocate(targetLibraryId, targetItemIndex)
}
- protected fun showColorPicker() {
+ protected fun showColorPicker(initialColor: Int? = null) {
ColorPickerDialog.newBuilder()
.setUseLegacyMode(isLegacyLayout)
.setAllowCustom(true)
@@ -246,7 +252,7 @@ abstract class ColorSelectBaseActivity : BaseActivity() {
.setDialogType(ColorPickerDialog.TYPE_CUSTOM)
.setShowAlphaSlider(false)
.setDialogTitle(R.string.dialog_title_color_palette)
- .setColor(customColor)
+ .setColor(initialColor ?: customColor)
.setOldColorPanelOnClickListener { showColorDetails(it.tag as? Int) }
.setNewColorPanelOnClickListener { showColorDetails(it.tag as? Int) }
.setColorHistoriesHandler { showColorPickerHistories(it) }
@@ -489,7 +495,17 @@ abstract class ColorSelectBaseActivity : BaseActivity() {
}
protected fun showColorDetails(color: Int?, title: String? = null) {
- ColorInfoDialogManager.showColorInfoDialog(this, color, title)
+ val customNeutral = ColorInfoDialogManager.CustomColorInfoDialogNeutral(
+ textRes = R.string.dialog_button_use_palette,
+ colorRes = R.color.dialog_button_hint,
+ onNeutralCallback = object: NeutralButtonCallback{
+ override fun onClick(dialog: MaterialDialog, which: DialogAction, color: Int) {
+ dialog.dismiss()
+ showColorPicker(color)
+ }
+ }
+ )
+ ColorInfoDialogManager.showColorInfoDialog(this, color, title, customNeutral)
}
protected fun showThemeColorDetails() {
diff --git a/app/src/main/java/org/autojs/autojs/theme/app/ColorSettingRecyclerView.kt b/app/src/main/java/org/autojs/autojs/theme/app/ColorSettingRecyclerView.kt
index 8939f246..d4ca3198 100644
--- a/app/src/main/java/org/autojs/autojs/theme/app/ColorSettingRecyclerView.kt
+++ b/app/src/main/java/org/autojs/autojs/theme/app/ColorSettingRecyclerView.kt
@@ -18,7 +18,6 @@ import androidx.recyclerview.widget.ThemeColorRecyclerView
import com.jaredrummler.android.colorpicker.ColorPickerDialog
import org.autojs.autojs.core.pref.Pref
import org.autojs.autojs.theme.ThemeChangeNotifier
-import org.autojs.autojs.theme.ThemeColor
import org.autojs.autojs.theme.ThemeColorHelper
import org.autojs.autojs.theme.ThemeColorManager
import org.autojs.autojs.theme.app.ColorLibrariesActivity.Companion.COLOR_LIBRARY_ID_PALETTE
@@ -46,16 +45,16 @@ class ColorSettingRecyclerView : ThemeColorRecyclerView {
constructor(context: Context, attrs: AttributeSet?, defStyle: Int) : super(context, attrs, defStyle)
+ private val mAdapter: Adapter
private var mOnItemClickListener: ColorSelectBaseActivity.OnItemClickListener? = null
-
private var mSelectedPosition = SELECT_NONE
- val selectedThemeColor: ThemeColor?
+ val selectedColor: Int?
get() = when {
mSelectedPosition < 0 -> null
mSelectedPosition == customColorPosition -> customColor
else -> context.getColor(colorItemsLegacy[mSelectedPosition].first)
- }?.let { ThemeColor(it) }
+ }
private val customColor: Int
get() = Pref.getInt(ColorSelectBaseActivity.KEY_CUSTOM_COLOR, context.getColor(R.color.custom_color_default))
@@ -77,13 +76,12 @@ class ColorSettingRecyclerView : ThemeColorRecyclerView {
itemId = it.itemId,
)
}
-
}
else -> {
setSelectedPosition(pos)
mOnItemClickListener?.onItemClick(v, pos)
- selectedThemeColor?.colorPrimary?.let { c ->
+ selectedColor?.let { c ->
presetColorLibraries.find { it.isMaterial }!!.colors.find { colorItem ->
context.getColor(colorItem.colorRes) == c
}?.let {
@@ -100,25 +98,25 @@ class ColorSettingRecyclerView : ThemeColorRecyclerView {
}
init {
- adapter = Adapter()
+ adapter = Adapter().also { mAdapter = it }
layoutManager = LinearLayoutManager(context)
addItemDecoration(DividerItemDecoration(context, VERTICAL))
}
@SuppressLint("NotifyDataSetChanged")
fun setSelectedPosition(currentPosition: Int) {
- if (mSelectedPosition != SELECT_NONE) {
- adapter!!.notifyItemChanged(mSelectedPosition)
+ if (mSelectedPosition == SELECT_NONE) {
mSelectedPosition = currentPosition
- adapter!!.notifyItemChanged(currentPosition)
+ mAdapter.notifyDataSetChanged()
} else {
+ mAdapter.notifyItemChanged(mSelectedPosition)
mSelectedPosition = currentPosition
- adapter!!.notifyDataSetChanged()
+ mAdapter.notifyItemChanged(currentPosition)
}
savePrefsForLegacy()
savePrefsForLibraries()
- selectedThemeColor?.let {
- ThemeColorManager.setThemeColor(it.colorPrimary)
+ selectedColor?.let {
+ ThemeColorManager.setThemeColor(it)
ThemeChangeNotifier.notifyThemeChanged()
}
}
@@ -139,7 +137,7 @@ class ColorSettingRecyclerView : ThemeColorRecyclerView {
context.getColor(colorItem.colorRes) == context.getColor(R.color.theme_color_default)
}?.let { Pref.putInt(KEY_SELECTED_COLOR_ITEM_ID, it.itemId) }
}
- else -> selectedThemeColor?.colorPrimary?.let { c ->
+ else -> selectedColor?.let { c ->
presetColorLibraries.find { it.isMaterial }!!.colors.find { colorItem ->
context.getColor(colorItem.colorRes) == c
}?.let {
@@ -224,7 +222,7 @@ class ColorSettingRecyclerView : ThemeColorRecyclerView {
fun setChecked(checked: Boolean) {
if (checked) {
colorView.setImageResource(R.drawable.mt_ic_check_white_36dp)
- val selectedThemeColorRes = selectedThemeColor?.colorPrimary?.let {
+ val selectedThemeColorRes = selectedColor?.let {
if (ViewUtils.isLuminanceLight(it)) R.color.day else R.color.night
} ?: R.color.night_day
colorView.imageTintList = ColorStateList.valueOf(context.getColor(selectedThemeColorRes))
diff --git a/app/src/main/java/org/autojs/autojs/ui/enhancedfloaty/FloatyService.java b/app/src/main/java/org/autojs/autojs/ui/enhancedfloaty/FloatyService.java
index 73f3f9ec..46ab934b 100644
--- a/app/src/main/java/org/autojs/autojs/ui/enhancedfloaty/FloatyService.java
+++ b/app/src/main/java/org/autojs/autojs/ui/enhancedfloaty/FloatyService.java
@@ -69,4 +69,10 @@ public class FloatyService extends Service {
}
}
+ public static void stopService() {
+ if (instance != null) {
+ instance.stopSelf();
+ }
+ }
+
}
diff --git a/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.kt b/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.kt
index 4335b5ce..94c0b6b8 100644
--- a/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.kt
+++ b/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.kt
@@ -313,8 +313,8 @@ class MainActivity : BaseActivity(), DelegateHost, HostActivity {
fun exitCompletely() {
FloatyWindowManger.hideCircularMenuAndSaveState()
- stopService(Intent(this, FloatyService::class.java))
- stopService(Intent(this, ScreenCapturerForegroundService::class.java))
+ FloatyService.stopService()
+ ScreenCapturerForegroundService.stopService()
AutoJs.instance.scriptEngineService.stopAll()
diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml
index 54e76da7..74095ab0 100644
--- a/app/src/main/res/values-ar/strings.xml
+++ b/app/src/main/res/values-ar/strings.xml
@@ -963,5 +963,6 @@
السماح للتطبيق بالوصول إلى جميع الملفات، بما في ذلك التخزين الخارجي
السماح للتطبيق بعرض المحتوى فوق التطبيقات الأخرى
السماح للتطبيق بإنشاء وإرسال الإشعارات
+ ستخدام اللوحة
diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml
index 3c8c093c..64190564 100644
--- a/app/src/main/res/values-en/strings.xml
+++ b/app/src/main/res/values-en/strings.xml
@@ -959,5 +959,6 @@
Allow the application to access all files, including external storage
Allow the application to display content over other apps
Allow the application to create and send notifications
+ Use palette
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 16a61d0c..d7beb9a0 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -962,5 +962,6 @@
Permitir que la aplicación acceda a todos los archivos, incluido el almacenamiento externo
Permitir que la aplicación muestre contenido sobre otras aplicaciones
Permitir que la aplicación cree y envíe notificaciones
+ Usar paleta
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index e4399a7f..054a218c 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -962,5 +962,6 @@
Autoriser l\'application à accéder à tous les fichiers, y compris le stockage externe
Autoriser l\'application à afficher du contenu par-dessus d\'autres applications
Autoriser l\'application à créer et envoyer des notifications
+ Utiliser la palette
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index ee27f3d2..99fbbdfc 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -962,5 +962,6 @@
アプリが外部ストレージを含むすべてのファイルにアクセスすることを許可する
アプリが他のアプリの上にコンテンツを表示することを許可する
アプリが通知を作成して送信することを許可する
+ パレットを使う
diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml
index 859b3ae6..83d951de 100644
--- a/app/src/main/res/values-ko/strings.xml
+++ b/app/src/main/res/values-ko/strings.xml
@@ -963,5 +963,6 @@
앱이 외부 저장소를 포함한 모든 파일에 접근할 수 있도록 허용합니다
앱이 다른 애플리케이션 위에 콘텐츠를 표시할 수 있도록 허용합니다
앱이 알림을 생성하고 보낼 수 있도록 허용합니다
+ 팔레트 사용
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index 51abbc56..500ab2cf 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -962,5 +962,6 @@
Разрешить приложению доступ ко всем файлам, включая внешнее хранилище
Разрешить приложению отображать контент поверх других приложений
Разрешить приложению создавать и отправлять уведомления
+ Использовать палитру
diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml
index 1f39ffef..ae83db5c 100644
--- a/app/src/main/res/values-zh-rHK/strings.xml
+++ b/app/src/main/res/values-zh-rHK/strings.xml
@@ -960,5 +960,6 @@
允許應用訪問所有文件, 包括外部存儲
允許應用在其他應用之上顯示內容
允許應用創建併發送通知
+ 使用調色盤
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 67e5fa67..ce5865e5 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -960,5 +960,6 @@
允許應用訪問所有檔案, 包括外部儲存
允許應用在其他應用之上顯示內容
允許應用建立併發送通知
+ 使用調色盤
diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml
index 8e10faf5..df453cf5 100644
--- a/app/src/main/res/values-zh/strings.xml
+++ b/app/src/main/res/values-zh/strings.xml
@@ -957,5 +957,6 @@
允许应用访问所有文件, 包括外部存储
允许应用在其他应用之上显示内容
允许应用创建并发送通知
+ 使用调色盘
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 546f1d81..e8f0b51c 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1207,5 +1207,6 @@
Allow the application to access all files, including external storage
Allow the application to display content over other apps
Allow the application to create and send notifications
+ Use palette
diff --git a/version.properties b/version.properties
index a26650ca..e2882d13 100644
--- a/version.properties
+++ b/version.properties
@@ -1,5 +1,5 @@
-#Sun Apr 13 14:00:19 CST 2025
-BUILD_TIME=1744524019186
+#Sun Apr 13 20:26:15 CST 2025
+BUILD_TIME=1744547175175
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=3133
+VERSION_BUILD=3136
VERSION_NAME=6.6.2 Alpha6
VSCODE_EXT_REQUIRED_VERSION=1.0.8