diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ef699202..83b058fd 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -586,7 +586,7 @@
android:theme="@style/MtAppTheme.FullScreen" />
+
+ @Query("SELECT * FROM color_history WHERE library_id = :libraryId")
+ suspend fun getAllByLibraryId(libraryId: Long): List
+
+ @Query("SELECT EXISTS(SELECT 1 FROM color_history LIMIT 1)")
+ suspend fun hasData(): Boolean
+
+ @Query("SELECT EXISTS(SELECT 1 FROM color_history WHERE library_id = :libraryId LIMIT 1)")
+ suspend fun hasDataByLibraryId(libraryId: Long): Boolean
+
+ @Delete
+ suspend fun delete(vararg histories: ColorHistory)
+
+ @Query("DELETE FROM color_history")
+ suspend fun deleteAll()
+
+ @Query("DELETE FROM color_history WHERE library_id = :libraryId")
+ suspend fun deleteAllByLibraryId(libraryId: Long)
+
+}
diff --git a/app/src/main/java/org/autojs/autojs/theme/app/ColorHistoryDatabase.kt b/app/src/main/java/org/autojs/autojs/theme/app/ColorHistoryDatabase.kt
new file mode 100644
index 00000000..f9f3e725
--- /dev/null
+++ b/app/src/main/java/org/autojs/autojs/theme/app/ColorHistoryDatabase.kt
@@ -0,0 +1,37 @@
+package org.autojs.autojs.theme.app
+
+import android.content.Context
+import androidx.room.Database
+import androidx.room.Room
+import androidx.room.RoomDatabase
+
+@Database(
+ entities = [
+ ColorEntities.ColorHistory::class,
+ ColorEntities.PaletteHistory::class,
+ ],
+ version = 1,
+ exportSchema = false,
+)
+abstract class ColorHistoryDatabase : RoomDatabase() {
+
+ abstract fun colorHistoryDao(): ColorHistoryDao
+
+ abstract fun paletteHistoryDao(): PaletteHistoryDao
+
+ companion object {
+
+ @Volatile
+ private var instance: ColorHistoryDatabase? = null
+
+ fun getInstance(applicationContext: Context): ColorHistoryDatabase = instance ?: synchronized(this) {
+ instance ?: Room.databaseBuilder(
+ applicationContext,
+ ColorHistoryDatabase::class.java,
+ "color-history-database.db",
+ ).build().also { instance = it }
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/autojs/autojs/theme/app/ColorHistoryItemViewHolder.kt b/app/src/main/java/org/autojs/autojs/theme/app/ColorHistoryItemViewHolder.kt
new file mode 100644
index 00000000..5e3cd1b4
--- /dev/null
+++ b/app/src/main/java/org/autojs/autojs/theme/app/ColorHistoryItemViewHolder.kt
@@ -0,0 +1,51 @@
+package org.autojs.autojs.theme.app
+
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.core.view.isVisible
+import androidx.recyclerview.widget.RecyclerView
+import org.autojs.autojs.theme.ThemeColorHelper
+import org.autojs.autojs.util.TimeUtils
+import org.autojs.autojs6.databinding.MtColorHistoryRecyclerViewItemBinding
+
+class ColorHistoryItemViewHolder(itemViewBinding: MtColorHistoryRecyclerViewItemBinding) : RecyclerView.ViewHolder(itemViewBinding.root) {
+
+ private val colorView: ImageView = itemViewBinding.color
+
+ private val hexView: TextView = itemViewBinding.colorHex
+ private val titleSplitLineView: TextView = itemViewBinding.titleSplitLine
+ private val nameView: TextView = itemViewBinding.colorName
+
+ private val lastUsedTimeView: TextView = itemViewBinding.lastUsedTime
+ private val subtitleSplitLineView: TextView = itemViewBinding.subtitleSplitLine
+ private val colorLibraryIdentifierView: TextView = itemViewBinding.colorLibraryIdentifier
+
+ fun bind(historyItem: ColorHistoryItem) {
+ val (_, colorInt, colorName, colorLibraryIdentifier) = historyItem
+
+ ThemeColorHelper.setBackgroundColor(colorView, colorInt)
+
+ hexView.text = String.format("#%06X", 0xFFFFFF and colorInt)
+ nameView.text = colorName.also {
+ titleSplitLineView.isVisible = !it.isNullOrBlank()
+ }
+ lastUsedTimeView.text = historyItem.lastUsedTimeString
+ colorLibraryIdentifierView.text = colorLibraryIdentifier.also {
+ subtitleSplitLineView.isVisible = !it.isNullOrBlank()
+ }
+ }
+
+ companion object {
+
+ data class ColorHistoryItem(
+ val lastUsedTime: Long,
+ val colorInt: Int,
+ val colorName: String? = null,
+ val colorLibraryIdentifier: String? = null,
+ ) {
+ val lastUsedTimeString = TimeUtils.formatTimestamp(lastUsedTime)
+ }
+
+ }
+
+}
\ No newline at end of file
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 af6439a9..56933c76 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
@@ -12,6 +12,7 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
+import org.autojs.autojs.extension.MaterialDialogExtensions.makeTextCopyable
import org.autojs.autojs.extension.MaterialDialogExtensions.setCopyableText
import org.autojs.autojs.runtime.api.augment.colors.Colors
import org.autojs.autojs.util.ColorUtils
@@ -21,7 +22,16 @@ 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) {
+ if (color == null) {
+ MaterialDialog.Builder(context)
+ .title(R.string.text_prompt)
+ .content(R.string.error_invalid_color)
+ .positiveColorRes(R.color.dialog_button_default)
+ .positiveText(R.string.dialog_button_dismiss)
+ .show()
+ return
+ }
val binding = ColorInfoDialogListItemBinding.inflate(LayoutInflater.from(context))
val colorWithoutAlpha = color or -0x1000000
@@ -33,6 +43,8 @@ object ColorInfoDialogManager {
.positiveColorRes(R.color.dialog_button_default)
.show()
+ dialog.makeTextCopyable { it.titleView }
+
CoroutineScope(Dispatchers.Main).launch {
launch(Dispatchers.IO) {
ColorUtils.toHex(colorWithoutAlpha).let { binding.colorHexValue.bindWith(dialog, it) }
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 0e7f5bd3..45f4d0db 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
@@ -4,45 +4,31 @@ import android.animation.ValueAnimator
import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
-import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
-import org.autojs.autojs.core.image.ColorItems
-import org.autojs.autojs.core.pref.Pref
import org.autojs.autojs.theme.ThemeChangeNotifier
import org.autojs.autojs.theme.ThemeColorManager
-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.PresetColorItem
-import org.autojs.autojs.theme.app.ColorSelectBaseActivity.Companion.KEY_LEGACY_SELECTED_COLOR_INDEX
-import org.autojs.autojs.theme.app.ColorSelectBaseActivity.Companion.KEY_SELECTED_COLOR_LIBRARY_ID
-import org.autojs.autojs.theme.app.ColorSelectBaseActivity.Companion.KEY_SELECTED_COLOR_LIBRARY_ITEM_ID
import org.autojs.autojs.theme.app.ColorSelectBaseActivity.Companion.SELECT_NONE
-import org.autojs.autojs.theme.app.ColorSelectBaseActivity.Companion.customColorPosition
-import org.autojs.autojs.theme.app.ColorSelectBaseActivity.Companion.defaultColorPosition
+import org.autojs.autojs.theme.app.ColorSelectBaseActivity.Companion.saveDatabaseForColorHistories
+import org.autojs.autojs.theme.app.ColorSelectBaseActivity.Companion.savePrefsForLegacy
+import org.autojs.autojs.theme.app.ColorSelectBaseActivity.Companion.savePrefsForLibraries
import org.autojs.autojs6.R
+import org.autojs.autojs6.databinding.MtColorLibraryRecyclerViewItemBinding
@SuppressLint("NotifyDataSetChanged")
class ColorItemAdapter(
- var items: List,
- var isLibraryIdentifierAppendedToDesc: Boolean = false,
- private val onItemClick: ((PresetColorItem, View) -> Unit)? = null,
+ internal var items: List,
+ private var isShowLibraryIdentifier: Boolean = false,
+ private val onItemClick: ((positionOfCurrentSelection: Int) -> Unit)? = null,
) : RecyclerView.Adapter() {
var selectedItemId = SELECT_NONE
var selectedLibraryId = SELECT_NONE
- fun updateData(newItems: List) {
- items = newItems
- notifyDataSetChanged()
- }
-
- fun items() = items
-
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ColorItemViewHolder {
- val view = LayoutInflater.from(parent.context)
- .inflate(R.layout.mt_color_library_recycler_view_item, parent, false)
- return ColorItemViewHolder(view)
+ val binding = MtColorLibraryRecyclerViewItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)
+ return ColorItemViewHolder(binding)
}
override fun onBindViewHolder(holder: ColorItemViewHolder, position: Int) {
@@ -58,71 +44,64 @@ class ColorItemAdapter(
}
}
- holder.bind(item, selectedLibraryId, selectedItemId, isLibraryIdentifierAppendedToDesc)
+ holder.bind(item, selectedLibraryId, selectedItemId, isShowLibraryIdentifier)
itemView.setOnClickListener {
- savePrefsForLibraries(item)
- savePrefsForLegacy(context, item)
-
- when (selectedItemId) {
- SELECT_NONE -> {
- selectedLibraryId = item.libraryId
- selectedItemId = item.itemId
- notifyItemChanged(holder.bindingAdapterPosition)
- }
- else -> {
- val positionBeforeSelection = items().indexOfFirst {
- it.libraryId == selectedLibraryId && it.itemId == selectedItemId
- }
- val positionOfCurrentSelection = holder.bindingAdapterPosition
- if (positionBeforeSelection != positionOfCurrentSelection && positionBeforeSelection >= 0) {
- notifyItemChanged(positionBeforeSelection)
- }
- selectedLibraryId = item.libraryId
- selectedItemId = item.itemId
- notifyItemChanged(positionOfCurrentSelection)
- }
- }
-
- ThemeColorManager.setThemeColor(context.getColor(item.colorRes))
- ThemeChangeNotifier.notifyThemeChanged()
-
- onItemClick?.let { it(item, itemView) }
+ onItemConfirmed(context, holder.bindingAdapterPosition)
}
}
+ private fun updateSelectedPosition(item: PresetColorItem, positionOfCurrentSelection: Int) {
+ when (selectedItemId) {
+ SELECT_NONE -> {
+ selectedLibraryId = item.libraryId
+ selectedItemId = item.itemId
+ notifyItemChanged(positionOfCurrentSelection)
+ }
+ 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)
+ }
+ }
+ }
+
+ private fun savePrefsAndDatabase(context: Context, item: PresetColorItem) {
+ savePrefsForLibraries(item)
+ savePrefsForLegacy(context, item)
+ saveDatabaseForColorHistories(
+ applicationContext = context.applicationContext,
+ libraryId = item.libraryId,
+ itemId = item.itemId,
+ )
+ }
+
+ private fun applyThemeColor(context: Context, item: PresetColorItem) {
+ ThemeColorManager.setThemeColor(context.getColor(item.colorRes))
+ ThemeChangeNotifier.notifyThemeChanged()
+ }
+
+ fun onItemConfirmed(context: Context, position: Int) {
+ val item: PresetColorItem = items[position]
+ savePrefsAndDatabase(context, item)
+ updateSelectedPosition(item, position)
+ applyThemeColor(context, item)
+ onItemClick?.invoke(position)
+ }
+
override fun getItemCount() = items.size
- private fun savePrefsForLibraries(colorItem: PresetColorItem) {
- Pref.putInt(KEY_SELECTED_COLOR_LIBRARY_ID, colorItem.libraryId)
- Pref.putInt(KEY_SELECTED_COLOR_LIBRARY_ITEM_ID, colorItem.itemId)
- }
+ fun items() = items
- private fun savePrefsForLegacy(context: Context, colorItem: PresetColorItem) {
- when (colorItem.libraryId) {
- COLOR_LIBRARY_ID_DEFAULT -> {
- if (context.getColor(colorItem.colorRes) == context.getColor(R.color.theme_color_default)) {
- Pref.putInt(KEY_LEGACY_SELECTED_COLOR_INDEX, defaultColorPosition)
- } else {
- Pref.putInt(KEY_LEGACY_SELECTED_COLOR_INDEX, SELECT_NONE)
- }
- }
- COLOR_LIBRARY_ID_MATERIAL -> {
- val index = colorItem.itemId
- if (index !in ColorItems.MATERIAL_COLORS.indices) {
- Pref.putInt(KEY_LEGACY_SELECTED_COLOR_INDEX, SELECT_NONE)
- } else {
- val fixedIndex = maxOf(
- defaultColorPosition,
- customColorPosition,
- ) + 1 + index
- Pref.putInt(KEY_LEGACY_SELECTED_COLOR_INDEX, fixedIndex)
- }
- }
- else -> {
- Pref.putInt(KEY_LEGACY_SELECTED_COLOR_INDEX, SELECT_NONE)
- }
- }
+ fun updateData(newItems: List) {
+ items = newItems
+ notifyDataSetChanged()
}
}
\ No newline at end of file
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 9d61ceea..7d194f18 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
@@ -1,40 +1,42 @@
package org.autojs.autojs.theme.app
import android.content.res.ColorStateList
-import android.view.View
import android.widget.ImageView
import android.widget.TextView
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.app.ColorLibrariesActivity.Companion.PresetColorItem
import org.autojs.autojs.theme.app.ColorLibrariesActivity.Companion.presetColorLibraries
import org.autojs.autojs.util.ViewUtils
import org.autojs.autojs6.R
+import org.autojs.autojs6.databinding.MtColorLibraryRecyclerViewItemBinding
-class ColorItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+class ColorItemViewHolder(itemViewBinding: MtColorLibraryRecyclerViewItemBinding) : RecyclerView.ViewHolder(itemViewBinding.root) {
- private val context = itemView.context
+ private val context = itemViewBinding.root.context
- private val colorView: ImageView = itemView.findViewById(R.id.color)
- private val nameView: TextView = itemView.findViewById(R.id.name)
- private val descView: TextView = itemView.findViewById(R.id.description)
+ private val colorView: ImageView = itemViewBinding.color
+ private val nameView: TextView = itemViewBinding.name
+ private val descView: TextView = itemViewBinding.description
+ private val subtitleSplitLineView: TextView = itemViewBinding.subtitleSplitLine
+ private val colorLibraryIdentifierView: TextView = itemViewBinding.colorLibraryIdentifier
- fun bind(item: PresetColorItem, selectedLibraryId: Int, selectedItemId: Int, isLibraryIdentifierAppendedToDesc: Boolean) {
+ fun bind(item: PresetColorItem, selectedLibraryId: Int, selectedItemId: Int, isShowLibraryIdentifier: Boolean) {
val color = context.getColor(item.colorRes)
val colorName = context.getString(item.nameRes)
val colorDesc = String.format("#%06X", 0xFFFFFF and color)
ThemeColorHelper.setBackgroundColor(colorView, color)
nameView.text = colorName
- descView.text = when {
- isLibraryIdentifierAppendedToDesc -> {
- presetColorLibraries.find { it.id == item.libraryId }?.let {
- "${context.getString(it.identifierRes)} | $colorDesc"
- } ?: colorDesc
+ descView.text = colorDesc
+ if (isShowLibraryIdentifier) {
+ presetColorLibraries.find { it.id == item.libraryId }?.let {
+ colorLibraryIdentifierView.text = context.getString(it.identifierRes)
}
- else -> colorDesc
}
+ subtitleSplitLineView.isVisible = !colorLibraryIdentifierView.text.isNullOrBlank()
setChecked(color, selectedLibraryId == item.libraryId && selectedItemId == item.itemId)
}
diff --git a/app/src/main/java/org/autojs/autojs/theme/app/ColorLibraryActivity.kt b/app/src/main/java/org/autojs/autojs/theme/app/ColorItemsActivity.kt
similarity index 89%
rename from app/src/main/java/org/autojs/autojs/theme/app/ColorLibraryActivity.kt
rename to app/src/main/java/org/autojs/autojs/theme/app/ColorItemsActivity.kt
index 712f58df..57ed248b 100644
--- a/app/src/main/java/org/autojs/autojs/theme/app/ColorLibraryActivity.kt
+++ b/app/src/main/java/org/autojs/autojs/theme/app/ColorItemsActivity.kt
@@ -34,14 +34,14 @@ import org.autojs.autojs.util.ViewUtils
import org.autojs.autojs.util.ViewUtils.onceGlobalLayout
import org.autojs.autojs.util.ViewUtils.setMenuIconsColorByColorLuminance
import org.autojs.autojs6.R
-import org.autojs.autojs6.databinding.MtActivityColorLibraryBinding
+import org.autojs.autojs6.databinding.MtActivityColorItemsBinding
import kotlin.properties.Delegates
import androidx.core.graphics.ColorUtils as AndroidColorUtils
@SuppressLint("NotifyDataSetChanged")
-class ColorLibraryActivity : ColorSelectBaseActivity() {
+class ColorItemsActivity : ColorSelectBaseActivity() {
- private lateinit var binding: MtActivityColorLibraryBinding
+ private lateinit var binding: MtActivityColorItemsBinding
private lateinit var mAdapter: ColorItemAdapter
private lateinit var mLibrary: PresetColorLibrary
@@ -62,7 +62,7 @@ class ColorLibraryActivity : ColorSelectBaseActivity() {
mInitiallyItemIdScrollTo = intent.getIntExtra(INTENT_IDENTIFIER_COLOR_ITEM_ID_SCROLL_TO, -1)
- MtActivityColorLibraryBinding.inflate(layoutInflater).let {
+ MtActivityColorItemsBinding.inflate(layoutInflater).let {
binding = it
setContentView(it.root)
setUpAppBar(it.appBar, it.appBarContainer)
@@ -74,10 +74,10 @@ class ColorLibraryActivity : ColorSelectBaseActivity() {
}
}
- binding.colorLibraryRecyclerView.let { it ->
+ binding.colorItemsRecyclerView.let { it ->
it.layoutManager = LinearLayoutManager(this)
- it.adapter = ColorItemAdapter(library.colors) { colorItem, itemView ->
- updateAppBarColorContent(getColor(colorItem.colorRes))
+ it.adapter = ColorItemAdapter(library.colors) {
+ updateAppBarColorContent(ThemeColorManager.colorPrimary)
}.also { mAdapter = it }
it.addItemDecoration(DividerItemDecoration(this, VERTICAL))
@@ -129,7 +129,7 @@ class ColorLibraryActivity : ColorSelectBaseActivity() {
}
mLibrary.id -> {
adapter.selectedLibraryId = mLibrary.id
- adapter.selectedItemId = Pref.getInt(KEY_SELECTED_COLOR_LIBRARY_ITEM_ID, SELECT_NONE)
+ adapter.selectedItemId = Pref.getInt(KEY_SELECTED_COLOR_ITEM_ID, SELECT_NONE)
}
}
}
@@ -220,7 +220,7 @@ class ColorLibraryActivity : ColorSelectBaseActivity() {
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
- menuInflater.inflate(R.menu.menu_color_library, menu)
+ menuInflater.inflate(R.menu.menu_color_items, menu)
binding.toolbar.setMenuIconsColorByColorLuminance(this, currentColor)
@@ -239,6 +239,18 @@ class ColorLibraryActivity : ColorSelectBaseActivity() {
locateCurrentThemeColor()
true
}
+ R.id.action_show_histories -> {
+ showColorHistories(mLibrary.id) { selectedHistoryItem ->
+ when (val targetIndex = mAdapter.items.indexOfFirst { getColor(it.colorRes) == selectedHistoryItem.colorInt }) {
+ -1 -> ViewUtils.showToast(this, R.string.error_failed_to_apply_current_color_history, true)
+ else -> {
+ isForciblyEnableAppBarColorTransition = true
+ mAdapter.onItemConfirmed(this, targetIndex)
+ }
+ }
+ }
+ true
+ }
R.id.action_color_search_help -> {
showColorSearchHelp()
true
@@ -252,7 +264,7 @@ class ColorLibraryActivity : ColorSelectBaseActivity() {
val targetIndex = target.libraryItemId
when (targetLibraryId) {
mLibrary.id -> {
- val recyclerView = binding.colorLibraryRecyclerView
+ val recyclerView = binding.colorItemsRecyclerView
val viewHolder = recyclerView.findViewHolderForAdapterPosition(targetIndex)
viewHolder?.itemView?.let { itemView ->
@@ -264,7 +276,7 @@ class ColorLibraryActivity : ColorSelectBaseActivity() {
scrollToPositionOnceIfNeeded(recyclerView)
}
else -> {
- val intent = Intent(this, ColorLibraryActivity::class.java).apply {
+ val intent = Intent(this, ColorItemsActivity::class.java).apply {
putExtra(INTENT_IDENTIFIER_LIBRARY_ID, targetLibraryId)
putExtra(INTENT_IDENTIFIER_COLOR_ITEM_ID_SCROLL_TO, targetIndex)
}
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 563c85c5..2e677428 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
@@ -28,14 +28,14 @@ class ColorLibrariesActivity : ColorSelectBaseActivity() {
private val libraryAdapter: ColorLibraryAdapter by lazy {
ColorLibraryAdapter(presetColorLibraries) { library ->
- val intent = Intent(this, ColorLibraryActivity::class.java)
+ val intent = Intent(this, ColorItemsActivity::class.java)
intent.putExtra(INTENT_IDENTIFIER_LIBRARY_ID, library.id)
startActivity(intent)
}
}
private val colorItemAdapter: ColorItemAdapter by lazy {
- ColorItemAdapter(presetColorItems, isLibraryIdentifierAppendedToDesc = true)
+ ColorItemAdapter(presetColorItems, isShowLibraryIdentifier = true)
}
override fun onCreate(savedInstanceState: Bundle?) {
@@ -97,7 +97,7 @@ class ColorLibrariesActivity : ColorSelectBaseActivity() {
customColorPosition -> Unit
SELECT_NONE, defaultColorPosition -> {
adapter.selectedLibraryId = COLOR_LIBRARY_ID_DEFAULT
- adapter.selectedItemId = adapter.items.firstOrNull {
+ adapter.selectedItemId = adapter.items().firstOrNull {
it.libraryId == COLOR_LIBRARY_ID_DEFAULT && getColor(it.colorRes) == getColor(R.color.theme_color_default)
}?.itemId ?: SELECT_NONE
}
@@ -105,7 +105,7 @@ class ColorLibrariesActivity : ColorSelectBaseActivity() {
in ColorItems.MATERIAL_COLORS.indices -> {
val (colorRes, _) = ColorItems.MATERIAL_COLORS[calculatedIndex]
adapter.selectedLibraryId = COLOR_LIBRARY_ID_MATERIAL
- adapter.selectedItemId = adapter.items.firstOrNull {
+ adapter.selectedItemId = adapter.items().firstOrNull {
it.libraryId == COLOR_LIBRARY_ID_MATERIAL && it.colorRes == colorRes
}?.itemId ?: SELECT_NONE
}
@@ -113,7 +113,7 @@ class ColorLibrariesActivity : ColorSelectBaseActivity() {
}
else -> {
adapter.selectedLibraryId = Pref.getInt(KEY_SELECTED_COLOR_LIBRARY_ID, SELECT_NONE)
- adapter.selectedItemId = Pref.getInt(KEY_SELECTED_COLOR_LIBRARY_ITEM_ID, SELECT_NONE)
+ adapter.selectedItemId = Pref.getInt(KEY_SELECTED_COLOR_ITEM_ID, SELECT_NONE)
}
}
}
@@ -123,6 +123,36 @@ class ColorLibrariesActivity : ColorSelectBaseActivity() {
showColorPicker()
true
}
+ R.id.action_show_all_histories -> {
+ showColorHistories { selectedHistoryItem ->
+ val identifier = selectedHistoryItem.colorLibraryIdentifier ?: run {
+ ViewUtils.showToast(this@ColorLibrariesActivity, R.string.error_failed_to_apply_current_color_history, true)
+ return@showColorHistories
+ }
+ if (identifier == getString(R.string.color_library_identifier_palette)) {
+ onColorPickerConfirmed(selectedHistoryItem.colorInt)
+ return@showColorHistories
+ }
+ presetColorLibraries.find { getString(it.identifierRes) == identifier }?.let { library ->
+ library.colors.firstOrNull { getColor(it.colorRes) == selectedHistoryItem.colorInt }?.let { item ->
+ savePrefsForLibraries(item)
+ savePrefsForLegacy(this, item)
+
+ saveDatabaseForColorHistories(
+ applicationContext = applicationContext,
+ libraryId = item.libraryId,
+ itemId = item.itemId,
+ )
+
+ isForciblyEnableAppBarColorTransition = true
+
+ ThemeColorManager.setThemeColor(getColor(item.colorRes))
+ ThemeChangeNotifier.notifyThemeChanged()
+ }
+ } ?: ViewUtils.showToast(this@ColorLibrariesActivity, R.string.error_failed_to_apply_current_color_history, true)
+ }
+ true
+ }
R.id.action_new_color_library -> {
ViewUtils.showToast(this, R.string.text_under_development)
true
@@ -153,7 +183,7 @@ class ColorLibrariesActivity : ColorSelectBaseActivity() {
private fun locateCurrentThemeColor() {
checkAndGetTargetInfoForThemeColorLocate()?.let { target ->
- Intent(this, ColorLibraryActivity::class.java).apply {
+ Intent(this, ColorItemsActivity::class.java).apply {
putExtra(INTENT_IDENTIFIER_LIBRARY_ID, target.libraryId)
putExtra(INTENT_IDENTIFIER_COLOR_ITEM_ID_SCROLL_TO, target.libraryItemId)
}.let { startActivity(it) }
@@ -164,17 +194,18 @@ class ColorLibrariesActivity : ColorSelectBaseActivity() {
companion object {
- const val COLOR_LIBRARY_ID_PALETTE = 0x10001
- const val COLOR_LIBRARY_ID_INTELLIGENT = 0x10002
- const val COLOR_LIBRARY_ID_CREATED = 0x10003
- const val COLOR_LIBRARY_ID_IMPORTED = 0x10004
- const val COLOR_LIBRARY_ID_CLONED = 0x10005
+ const val COLOR_LIBRARY_ID_DEFAULT = 0x01
+ const val COLOR_LIBRARY_ID_MATERIAL = 0x02
+ const val COLOR_LIBRARY_ID_ANDROID = 0x03
+ const val COLOR_LIBRARY_ID_CSS = 0x04
+ const val COLOR_LIBRARY_ID_WEB = 0x05
- const val COLOR_LIBRARY_ID_DEFAULT = 0x20001
- const val COLOR_LIBRARY_ID_MATERIAL = 0x20002
- const val COLOR_LIBRARY_ID_ANDROID = 0x20003
- const val COLOR_LIBRARY_ID_CSS = 0x20004
- const val COLOR_LIBRARY_ID_WEB = 0x20005
+ const val COLOR_LIBRARY_ID_PALETTE = 0x21
+ const val COLOR_LIBRARY_ID_INTELLIGENT = 0x22
+
+ const val COLOR_LIBRARY_FROM_IMPORTED = 0x01
+ const val COLOR_LIBRARY_FROM_CLONED = 0x02
+ const val COLOR_LIBRARY_FROM_CREATED = 0x03
val presetColorLibraries by lazy {
listOf(
@@ -186,8 +217,8 @@ class ColorLibrariesActivity : ColorSelectBaseActivity() {
colors = listOf(
R.color.md_teal_800 to R.string.md_teal_800,
R.color.md_blue_gray_800 to R.string.md_blue_gray_800,
- R.color.window_background_light to R.string.window_background_light,
- R.color.window_background_night to R.string.window_background_night,
+ R.color.window_background_light to R.string.color_name_window_background_light,
+ R.color.window_background_night to R.string.color_name_window_background_night,
).mapIndexed { index, (colorRes, nameRes) ->
PresetColorItem(index, COLOR_LIBRARY_ID_DEFAULT, colorRes, nameRes)
},
@@ -257,9 +288,6 @@ class ColorLibrariesActivity : ColorSelectBaseActivity() {
val colors: List = emptyList(),
) {
val isIntelligent get() = id == COLOR_LIBRARY_ID_INTELLIGENT
- val isCreated get() = id == COLOR_LIBRARY_ID_CREATED
- val isImported get() = id == COLOR_LIBRARY_ID_IMPORTED
- val isCloned get() = id == COLOR_LIBRARY_ID_CLONED
val isDefault get() = id == COLOR_LIBRARY_ID_DEFAULT
val isMaterial get() = id == COLOR_LIBRARY_ID_MATERIAL
}
diff --git a/app/src/main/java/org/autojs/autojs/theme/app/ColorLibraryAdapter.kt b/app/src/main/java/org/autojs/autojs/theme/app/ColorLibraryAdapter.kt
index 88aabbc2..f9e72d95 100644
--- a/app/src/main/java/org/autojs/autojs/theme/app/ColorLibraryAdapter.kt
+++ b/app/src/main/java/org/autojs/autojs/theme/app/ColorLibraryAdapter.kt
@@ -7,6 +7,7 @@ import androidx.recyclerview.widget.RecyclerView
import com.afollestad.materialdialogs.MaterialDialog
import org.autojs.autojs.theme.app.ColorLibrariesActivity.Companion.PresetColorLibrary
import org.autojs.autojs6.R
+import org.autojs.autojs6.databinding.MtColorLibrariesRecyclerViewItemBinding
@SuppressLint("NotifyDataSetChanged")
class ColorLibraryAdapter(
@@ -14,15 +15,9 @@ class ColorLibraryAdapter(
private val onItemClick: (PresetColorLibrary) -> Unit,
) : RecyclerView.Adapter() {
- fun updateData(newLibraries: List) {
- libraries = newLibraries
- notifyDataSetChanged()
- }
-
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ColorLibraryViewHolder {
- val view = LayoutInflater.from(parent.context)
- .inflate(R.layout.mt_color_libraries_recycler_view_item, parent, false)
- return ColorLibraryViewHolder(view)
+ val binding = MtColorLibrariesRecyclerViewItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)
+ return ColorLibraryViewHolder(binding)
}
override fun onBindViewHolder(holder: ColorLibraryViewHolder, position: Int) {
@@ -43,4 +38,9 @@ class ColorLibraryAdapter(
override fun getItemCount() = libraries.size
+ fun updateData(newLibraries: List) {
+ libraries = newLibraries
+ notifyDataSetChanged()
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/org/autojs/autojs/theme/app/ColorLibraryViewHolder.kt b/app/src/main/java/org/autojs/autojs/theme/app/ColorLibraryViewHolder.kt
index c3ecbe43..9849f07b 100644
--- a/app/src/main/java/org/autojs/autojs/theme/app/ColorLibraryViewHolder.kt
+++ b/app/src/main/java/org/autojs/autojs/theme/app/ColorLibraryViewHolder.kt
@@ -2,7 +2,6 @@ package org.autojs.autojs.theme.app
import android.annotation.SuppressLint
import android.content.res.ColorStateList
-import android.view.View
import android.widget.ImageView
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
@@ -10,15 +9,17 @@ import org.autojs.autojs.theme.ThemeColorManager
import org.autojs.autojs.theme.app.ColorLibrariesActivity.Companion.PresetColorLibrary
import org.autojs.autojs.util.ColorUtils
import org.autojs.autojs6.R
+import org.autojs.autojs6.databinding.MtColorLibrariesRecyclerViewItemBinding
-class ColorLibraryViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+class ColorLibraryViewHolder(itemViewBinding: MtColorLibrariesRecyclerViewItemBinding) : RecyclerView.ViewHolder(itemViewBinding.root) {
- private val context = itemView.context
- private val resources = itemView.resources
+ private val root = itemViewBinding.root
+ private val context = root.context
+ private val resources = root.resources
- private val colorItemView: ImageView = itemView.findViewById(R.id.library_item)
- private val libraryName: TextView = itemView.findViewById(R.id.name)
- private val description: TextView = itemView.findViewById(R.id.description)
+ private val colorItemView: ImageView = itemViewBinding.libraryItem
+ private val libraryName: TextView = itemViewBinding.name
+ private val description: TextView = itemViewBinding.description
fun bind(library: PresetColorLibrary) {
libraryName.text = context.getString(library.nameRes)
@@ -38,9 +39,9 @@ class ColorLibraryViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
when {
library.isDefault -> colorItemView.setImageResource(R.drawable.ic_color_library_default)
library.isIntelligent -> colorItemView.setImageResource(R.drawable.ic_color_library_intelligent)
- library.isCreated -> colorItemView.setImageResource(R.drawable.ic_color_library_created)
- library.isImported -> colorItemView.setImageResource(R.drawable.ic_color_library_imported)
- library.isCloned -> colorItemView.setImageResource(R.drawable.ic_color_library_cloned)
+ // library.isCreated -> colorItemView.setImageResource(R.drawable.ic_color_library_created)
+ // library.isImported -> colorItemView.setImageResource(R.drawable.ic_color_library_imported)
+ // library.isCloned -> colorItemView.setImageResource(R.drawable.ic_color_library_cloned)
else -> colorItemView.setImageResource(R.drawable.ic_color_library_preset)
}
colorItemView.imageTintList = ColorStateList.valueOf(adjustedContrastColor)
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 7d829102..47e70df5 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
@@ -12,10 +12,15 @@ import androidx.annotation.StringRes
import androidx.appcompat.widget.SearchView
import androidx.appcompat.widget.Toolbar
import androidx.lifecycle.lifecycleScope
+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.MaterialDialog
import com.google.android.material.appbar.AppBarLayout
import com.jaredrummler.android.colorpicker.ColorPickerDialog
import io.codetail.widget.RevealFrameLayout
+import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
@@ -25,6 +30,12 @@ import org.autojs.autojs.core.image.ColorItems
import org.autojs.autojs.core.pref.Pref
import org.autojs.autojs.theme.ThemeChangeNotifier
import org.autojs.autojs.theme.ThemeColorManager
+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.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
import org.autojs.autojs.theme.app.ColorLibrariesActivity.Companion.PresetColorItem
import org.autojs.autojs.theme.app.ColorLibrariesActivity.Companion.PresetColorLibrary
@@ -67,6 +78,7 @@ abstract class ColorSelectBaseActivity : BaseActivity() {
get() = Pref.getInt(KEY_CUSTOM_COLOR, getColor(R.color.custom_color_default))
protected var currentColor by Delegates.notNull()
+ protected var isForciblyEnableAppBarColorTransition = false
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -148,15 +160,18 @@ abstract class ColorSelectBaseActivity : BaseActivity() {
protected fun updateAppBarColorContent(colorTo: Int) {
setColors(colorTo)
updateSubtitle(mToolbar)
- if (hasWindowFocus()) ViewAnimationUtils.createCircularReveal(
- /* view = */ mAppBarLayout,
- /* centerX = */ mAppBarLayout.left,
- /* centerY = */ mAppBarLayout.bottom,
- /* startRadius = */ 0f,
- /* endRadius = */ hypot(mAppBarLayout.width.toDouble(), mAppBarLayout.height.toDouble()).toFloat(),
- ).apply {
- duration = 500L
- start()
+ if (isForciblyEnableAppBarColorTransition || hasWindowFocus()) {
+ isForciblyEnableAppBarColorTransition = false
+ ViewAnimationUtils.createCircularReveal(
+ /* view = */ mAppBarLayout,
+ /* centerX = */ mAppBarLayout.left,
+ /* centerY = */ mAppBarLayout.bottom,
+ /* startRadius = */ 0f,
+ /* endRadius = */ hypot(mAppBarLayout.width.toDouble(), mAppBarLayout.height.toDouble()).toFloat(),
+ ).apply {
+ duration = 500L
+ start()
+ }
}
}
@@ -205,7 +220,7 @@ abstract class ColorSelectBaseActivity : BaseActivity() {
.show()
return null
}
- val targetItemIndex = Pref.getInt(KEY_SELECTED_COLOR_LIBRARY_ITEM_ID, -1)
+ val targetItemIndex = Pref.getInt(KEY_SELECTED_COLOR_ITEM_ID, -1)
if (targetItemIndex !in targetLibrary.colors.indices) {
MaterialDialog.Builder(this)
.title(R.string.text_failed_to_locate)
@@ -225,26 +240,255 @@ abstract class ColorSelectBaseActivity : BaseActivity() {
protected fun showColorPicker() {
ColorPickerDialog.newBuilder()
+ .setUseLegacyMode(isLegacyLayout)
.setAllowCustom(true)
- .setAllowPresets(true)
+ .setAllowPresets(!isLegacyLayout)
.setDialogType(ColorPickerDialog.TYPE_CUSTOM)
.setShowAlphaSlider(false)
.setDialogTitle(R.string.dialog_title_color_palette)
.setColor(customColor)
+ .setOldColorPanelOnClickListener { showColorDetails(it.tag as? Int) }
+ .setNewColorPanelOnClickListener { showColorDetails(it.tag as? Int) }
+ .setColorHistoriesHandler { showColorPickerHistories(it) }
.create()
- .setColorPickerDialogListener { dialogId: Int, color: Int ->
- savePrefsForLibraries()
- savePrefsForLegacy(color)
-
- updateAppBarColorContent(color)
-
- ThemeColorManager.setThemeColor(color)
- ThemeChangeNotifier.notifyThemeChanged()
+ .setColorPickerDialogListener { _, color: Int ->
+ onColorPickerConfirmed(color)
}
.show(supportFragmentManager, "ColorPickerTagForColorLibraries")
}
- protected fun showColorDetails(color: Int, title: String? = null) {
+ protected fun onColorPickerConfirmed(color: Int) {
+ savePrefsForLegacyPalette(color)
+ savePrefsForLibraries(COLOR_LIBRARY_ID_PALETTE, 0)
+
+ saveDatabaseForPaletteHistories(lifecycleScope, applicationContext, color)
+
+ isForciblyEnableAppBarColorTransition = true
+
+ ThemeColorManager.setThemeColor(color)
+ ThemeChangeNotifier.notifyThemeChanged()
+ }
+
+ private fun showColorPickerHistories(colorPickerDialog: ColorPickerDialog) {
+ lifecycleScope.launch {
+ var historiesDialog: MaterialDialog? = null
+ val dao = withContext(Dispatchers.IO) {
+ ColorHistoryDatabase.getInstance(applicationContext).paletteHistoryDao()
+ }
+ when {
+ withContext(Dispatchers.IO) { dao.hasData() } -> {
+ val adapter = PaletteHistoryItemAdapter(emptyList()) { selectedColor ->
+ historiesDialog?.dismiss()
+ colorPickerDialog.onHistorySelected(selectedColor)
+ }
+ launch(Dispatchers.Main) {
+ val context = this@ColorSelectBaseActivity
+ val recyclerView = ThemeColorRecyclerView(context).also {
+ it.adapter = adapter
+ it.layoutManager = LinearLayoutManager(context)
+ it.addItemDecoration(DividerItemDecoration(context, VERTICAL))
+ }
+ historiesDialog = MaterialDialog.Builder(context)
+ .title(R.string.text_histories)
+ .customView(recyclerView, false)
+ .neutralText(R.string.dialog_button_clear_items)
+ .neutralColorRes(R.color.dialog_button_warn)
+ .onNeutral { parentDialog, _ ->
+ MaterialDialog.Builder(context)
+ .title(R.string.text_prompt)
+ .content(getString(R.string.text_confirm_to_clear_histories_of, getString(R.string.text_color_palette)))
+ .negativeText(R.string.dialog_button_cancel)
+ .negativeColorRes(R.color.dialog_button_default)
+ .positiveText(R.string.dialog_button_confirm)
+ .positiveColorRes(R.color.dialog_button_caution)
+ .onPositive { _, _ ->
+ lifecycleScope.launch(Dispatchers.IO) {
+ dao.deleteAll()
+ withContext(Dispatchers.Main) {
+ adapter.updateData(emptyList())
+ parentDialog.dismiss()
+ ViewUtils.showToast(context, R.string.text_all_histories_cleared, true)
+ }
+ }
+ }
+ .show()
+ }
+ .positiveText(R.string.dialog_button_dismiss)
+ .positiveColorRes(R.color.dialog_button_default)
+ .onPositive { dialog, _ -> dialog.dismiss() }
+ .autoDismiss(false)
+ .show()
+ }
+ val histories = withContext(Dispatchers.IO) {
+ dao.getAll().sortedByDescending { it.lastUsedTime }
+ }
+ launch(Dispatchers.Main) {
+ adapter.updateData(histories)
+ }
+ }
+ else -> withContext(Dispatchers.Main) {
+ MaterialDialog.Builder(this@ColorSelectBaseActivity)
+ .title(R.string.text_histories)
+ .content(R.string.text_no_histories)
+ .positiveText(R.string.dialog_button_dismiss)
+ .positiveColorRes(R.color.dialog_button_default)
+ .show()
+ }
+ }
+ }
+ }
+
+ protected fun showColorHistories(libraryId: Int? = null, onHistorySelected: (selectedHistoryItem: ColorHistoryItem) -> Unit) {
+
+ val isShowAllHistories = libraryId == null
+
+ lifecycleScope.launch {
+ var historiesDialog: MaterialDialog? = null
+ var paletteHistoryDao: PaletteHistoryDao? = null
+ val colorHistoryDao = withContext(Dispatchers.IO) {
+ ColorHistoryDatabase.getInstance(applicationContext).colorHistoryDao()
+ }
+ val hasData = withContext(Dispatchers.IO) {
+ when {
+ libraryId != null -> colorHistoryDao.hasDataByLibraryId(libraryId.toLong())
+ else -> colorHistoryDao.hasData()
+ }
+ }
+ if (!hasData) {
+ withContext(Dispatchers.Main) {
+ MaterialDialog.Builder(this@ColorSelectBaseActivity)
+ .title(R.string.text_histories)
+ .content(R.string.text_no_histories)
+ .positiveText(R.string.dialog_button_dismiss)
+ .positiveColorRes(R.color.dialog_button_default)
+ .show()
+ }
+ return@launch
+ }
+ val adapter = ColorHistoryItemAdapter(emptyList()) { selectedHistoryItem ->
+ historiesDialog?.dismiss()
+ onHistorySelected(selectedHistoryItem)
+ }
+ launch(Dispatchers.Main) {
+ val context = this@ColorSelectBaseActivity
+ val recyclerView = ThemeColorRecyclerView(context).also {
+ it.adapter = adapter
+ it.layoutManager = LinearLayoutManager(context)
+ it.addItemDecoration(DividerItemDecoration(context, VERTICAL))
+ }
+ historiesDialog = MaterialDialog.Builder(context)
+ .title(R.string.text_histories)
+ .customView(recyclerView, false)
+ .neutralText(R.string.dialog_button_clear_items)
+ .neutralColorRes(R.color.dialog_button_warn)
+ .onNeutral { parentDialog, _ ->
+ MaterialDialog.Builder(context)
+ .title(R.string.text_prompt)
+ .apply {
+ when {
+ isShowAllHistories -> {
+ content(getString(R.string.text_confirm_to_clear_histories_of_all_color_libraries))
+ }
+ else -> presetColorLibraries.find { it.id == libraryId }?.let {
+ content(getString(R.string.text_confirm_to_clear_histories_of, getString(it.nameRes)))
+ } ?: content(getString(R.string.text_confirm_to_clear_all_histories))
+ }
+ }
+ .negativeText(R.string.dialog_button_cancel)
+ .negativeColorRes(R.color.dialog_button_default)
+ .positiveText(R.string.dialog_button_confirm)
+ .positiveColorRes(R.color.dialog_button_caution)
+ .onPositive { _, _ ->
+ lifecycleScope.launch(Dispatchers.IO) {
+ if (isShowAllHistories) {
+ if (paletteHistoryDao == null) {
+ paletteHistoryDao = withContext(Dispatchers.IO) {
+ ColorHistoryDatabase.getInstance(applicationContext).paletteHistoryDao()
+ }
+ }
+ paletteHistoryDao!!.deleteAll()
+ colorHistoryDao.deleteAll()
+ } else {
+ colorHistoryDao.deleteAllByLibraryId(libraryId.toLong())
+ }
+ withContext(Dispatchers.Main) {
+ adapter.updateData(emptyList())
+ parentDialog.dismiss()
+ ViewUtils.showToast(context, R.string.text_all_histories_cleared, true)
+ }
+ }
+ }
+ .show()
+ }
+ .positiveText(R.string.dialog_button_dismiss)
+ .positiveColorRes(R.color.dialog_button_default)
+ .onPositive { dialog, _ -> dialog.dismiss() }
+ .autoDismiss(false)
+ .show()
+ }
+
+ val colorHistories = withContext(Dispatchers.IO) {
+ when {
+ isShowAllHistories -> colorHistoryDao.getAll()
+ else -> colorHistoryDao.getAllByLibraryId(libraryId.toLong())
+ }
+ }
+
+ val historyItems = colorHistories.mapNotNull { history ->
+ var colorInt: Int? = null
+ var colorName: String? = null
+ var colorLibraryIdentifier: String? = null
+
+ val presetColorLibrary = presetColorLibraries.find { it.id == history.libraryId }
+
+ if (presetColorLibrary != null) {
+ presetColorLibrary.colors.find { it.itemId == history.itemId }?.let { item ->
+ colorInt = getColor(item.colorRes)
+ colorName = getString(item.nameRes)
+ if (isShowAllHistories) {
+ colorLibraryIdentifier = getString(presetColorLibrary.identifierRes)
+ }
+ }
+ } else {
+ // TODO by SuperMonster003 on Apr 8, 2025.
+ // ! Check out new color lib data (imported/created/cloned).
+ // ! zh-CN: 检查新建颜色库数据 (导入/创建/克隆).
+ }
+
+ if (colorInt != null) {
+ return@mapNotNull ColorHistoryItem(history.lastUsedTime, colorInt!!, colorName, colorLibraryIdentifier)
+ }
+ // TODO by SuperMonster003 on Apr 8 ,2025.
+ // ! Obsolete data should be removed from database.
+ // ! Data will not be removed so far as color lib creation has not been completed yet.
+ // ! zh-CN: 孤立数据应从数据库中移除, 但目前暂未完成颜色库建立相关功能, 此处暂时不做数据移除处理.
+ return@mapNotNull null
+ }.toMutableList()
+
+ if (isShowAllHistories) {
+ val paletteIdentifier = getString(R.string.color_library_identifier_palette)
+ if (paletteHistoryDao == null) {
+ paletteHistoryDao = withContext(Dispatchers.IO) {
+ ColorHistoryDatabase.getInstance(applicationContext).paletteHistoryDao()
+ }
+ }
+ historyItems += paletteHistoryDao.getAll().map { history ->
+ ColorHistoryItem(
+ lastUsedTime = history.lastUsedTime,
+ colorInt = history.colorInfo.colorInt,
+ colorName = null,
+ colorLibraryIdentifier = paletteIdentifier
+ )
+ }
+ }
+
+ launch(Dispatchers.Main) {
+ adapter.updateData(historyItems.sortedByDescending { it.lastUsedTime })
+ }
+ }
+ }
+
+ protected fun showColorDetails(color: Int?, title: String? = null) {
ColorInfoDialogManager.showColorInfoDialog(this, color, title)
}
@@ -258,16 +502,6 @@ abstract class ColorSelectBaseActivity : BaseActivity() {
.let { startActivity(it) }
}
- private fun savePrefsForLibraries() {
- Pref.putInt(KEY_SELECTED_COLOR_LIBRARY_ID, COLOR_LIBRARY_ID_PALETTE)
- Pref.putInt(KEY_SELECTED_COLOR_LIBRARY_ITEM_ID, 0)
- }
-
- private fun savePrefsForLegacy(color: Int) {
- Pref.putInt(KEY_CUSTOM_COLOR, color or -0x1000000)
- Pref.putInt(KEY_LEGACY_SELECTED_COLOR_INDEX, customColorPosition)
- }
-
protected fun filterColorsFromColorItems(query: String?, colorItems: List, colorItemAdapter: ColorItemAdapter) {
mSearchJob?.cancel()
mSearchJob = lifecycleScope.launch {
@@ -340,7 +574,7 @@ abstract class ColorSelectBaseActivity : BaseActivity() {
const val KEY_LEGACY_SELECTED_COLOR_INDEX = "org.autojs.autojs.theme.app.ColorSettingRecyclerView.SELECTED_COLOR_INDEX"
const val KEY_SELECTED_COLOR_LIBRARY_ID = "SELECTED_COLOR_LIBRARY_ID"
- const val KEY_SELECTED_COLOR_LIBRARY_ITEM_ID = "SELECTED_COLOR_LIBRARY_ITEM_ID"
+ const val KEY_SELECTED_COLOR_ITEM_ID = "SELECTED_COLOR_LIBRARY_ITEM_ID"
const val INTENT_IDENTIFIER_LIBRARY_ID = "LIBRARY_ID"
const val INTENT_IDENTIFIER_COLOR_ITEM_ID_SCROLL_TO = "INTENT_IDENTIFIER_COLOR_ITEM_ID_SCROLL_TO"
@@ -357,8 +591,8 @@ abstract class ColorSelectBaseActivity : BaseActivity() {
val colorItemsLegacy by lazy {
mutableListOf>().apply {
- add(customColorPosition, R.color.custom_color_default to R.string.mt_custom)
- add(defaultColorPosition, R.color.theme_color_default to R.string.theme_color_default)
+ add(customColorPosition, R.color.custom_color_default to R.string.color_library_identifier_custom)
+ add(defaultColorPosition, R.color.theme_color_default to R.string.color_library_identifier_default_colors)
addAll(ColorItems.MATERIAL_COLORS)
}
}
@@ -412,7 +646,7 @@ abstract class ColorSelectBaseActivity : BaseActivity() {
var colorName: String? = null
val colorInt = ThemeColorManager.colorPrimary
val libraryId = Pref.getInt(KEY_SELECTED_COLOR_LIBRARY_ID, SELECT_NONE)
- val libraryItemId = Pref.getInt(KEY_SELECTED_COLOR_LIBRARY_ITEM_ID, SELECT_NONE)
+ val libraryItemId = Pref.getInt(KEY_SELECTED_COLOR_ITEM_ID, SELECT_NONE)
when (libraryId) {
COLOR_LIBRARY_ID_PALETTE -> {
identifier = context.getString(R.string.color_library_identifier_palette)
@@ -433,35 +667,36 @@ abstract class ColorSelectBaseActivity : BaseActivity() {
}
}
else -> presetColorLibraries.find { it.id == libraryId }?.let { lib: PresetColorLibrary ->
- identifier = when {
- lib.isCreated -> {
- // lib.identifierString?.let { idStr ->
- // when {
- // idStr.estimateVisualWidth <= 10 -> idStr
- // else -> {
- // var newStr = idStr
- // while (newStr.estimateVisualWidth > 8) {
- // newStr = newStr.dropLast(1)
- // }
- // "$newStr..."
- // }
- // }
- // } ?: lib.titleString?.let { titleStr ->
- // when {
- // titleStr.estimateVisualWidth <= 10 -> titleStr
- // else -> {
- // var newStr = titleStr
- // while (newStr.estimateVisualWidth > 8) {
- // newStr = newStr.dropLast(1)
- // }
- // "$newStr..."
- // }
- // }
- // } ?: context.getString(R.string.color_library_identifier_created)
- context.getString(R.string.color_library_identifier_created)
- }
- else -> context.getString(lib.identifierRes)
- }
+ // identifier = when {
+ // lib.isCreated -> {
+ // lib.identifierString?.let { idStr ->
+ // when {
+ // idStr.estimateVisualWidth <= 10 -> idStr
+ // else -> {
+ // var newStr = idStr
+ // while (newStr.estimateVisualWidth > 8) {
+ // newStr = newStr.dropLast(1)
+ // }
+ // "$newStr..."
+ // }
+ // }
+ // } ?: lib.titleString?.let { titleStr ->
+ // when {
+ // titleStr.estimateVisualWidth <= 10 -> titleStr
+ // else -> {
+ // var newStr = titleStr
+ // while (newStr.estimateVisualWidth > 8) {
+ // newStr = newStr.dropLast(1)
+ // }
+ // "$newStr..."
+ // }
+ // }
+ // } ?: context.getString(R.string.color_library_identifier_created)
+ // context.getString(R.string.color_library_identifier_created)
+ // }
+ // else -> context.getString(lib.identifierRes)
+ // }
+ identifier = context.getString(lib.identifierRes)
if (libraryItemId != -1) {
lib.colors.find { it.itemId == libraryItemId }?.let { item ->
// colorName = item.nameString
@@ -498,6 +733,84 @@ abstract class ColorSelectBaseActivity : BaseActivity() {
}
}
+ @JvmStatic
+ fun saveDatabaseForPaletteHistories(dispatcherScope: CoroutineScope? = null, applicationContext: Context, color: Int) {
+ saveHistories(dispatcherScope) {
+ var itemId by Delegates.notNull()
+ savePaletteHistories(applicationContext, color).also { itemId = it }
+ saveColorHistories(applicationContext, COLOR_LIBRARY_ID_PALETTE, itemId)
+ }
+ }
+
+ @JvmStatic
+ fun saveDatabaseForColorHistories(dispatcherScope: CoroutineScope? = null, applicationContext: Context, libraryId: Int, itemId: Int) {
+ saveHistories(dispatcherScope) {
+ saveColorHistories(applicationContext, libraryId, itemId)
+ }
+ }
+
+ private fun saveHistories(
+ dispatcherScope: CoroutineScope? = null,
+ saveJob: suspend CoroutineScope.() -> Unit,
+ ) {
+ when (dispatcherScope) {
+ null -> CoroutineScope(Dispatchers.IO).launch(block = saveJob)
+ else -> dispatcherScope.launch(context = Dispatchers.IO, block = saveJob)
+ }
+ }
+
+ private suspend fun savePaletteHistories(applicationContext: Context, color: Int): Int {
+ val dao = ColorHistoryDatabase.getInstance(applicationContext).paletteHistoryDao()
+ val colorInfo = ColorInfo(ColorUtils.toHex(color, 6))
+ return dao.upsert(PaletteHistory(colorInfo = colorInfo).apply { setLastUsedTimeCurrent() }).toInt()
+ }
+
+ private suspend fun saveColorHistories(applicationContext: Context, libraryId: Int, itemId: Int) {
+ val dao = ColorHistoryDatabase.getInstance(applicationContext).colorHistoryDao()
+ dao.upsert(ColorHistory(libraryId = libraryId, itemId = itemId).apply { setLastUsedTimeCurrent() })
+ }
+
+ protected fun savePrefsForLegacyPalette(color: Int) {
+ Pref.putInt(KEY_CUSTOM_COLOR, color or -0x1000000)
+ Pref.putInt(KEY_LEGACY_SELECTED_COLOR_INDEX, customColorPosition)
+ }
+
+ fun savePrefsForLegacy(context: Context, colorItem: PresetColorItem) {
+ when (colorItem.libraryId) {
+ COLOR_LIBRARY_ID_DEFAULT -> {
+ if (context.getColor(colorItem.colorRes) == context.getColor(R.color.theme_color_default)) {
+ Pref.putInt(KEY_LEGACY_SELECTED_COLOR_INDEX, defaultColorPosition)
+ } else {
+ Pref.putInt(KEY_LEGACY_SELECTED_COLOR_INDEX, SELECT_NONE)
+ }
+ }
+ COLOR_LIBRARY_ID_MATERIAL -> {
+ val index = colorItem.itemId
+ if (index !in ColorItems.MATERIAL_COLORS.indices) {
+ Pref.putInt(KEY_LEGACY_SELECTED_COLOR_INDEX, SELECT_NONE)
+ } else {
+ val fixedIndex = maxOf(
+ defaultColorPosition,
+ customColorPosition,
+ ) + 1 + index
+ Pref.putInt(KEY_LEGACY_SELECTED_COLOR_INDEX, fixedIndex)
+ }
+ }
+ else -> {
+ Pref.putInt(KEY_LEGACY_SELECTED_COLOR_INDEX, SELECT_NONE)
+ }
+ }
+ }
+
+ fun savePrefsForLibraries(colorItem: PresetColorItem) {
+ savePrefsForLibraries(colorItem.libraryId, colorItem.itemId)
+ }
+
+ fun savePrefsForLibraries(libraryId: Int, itemId: Int) {
+ Pref.putInt(KEY_SELECTED_COLOR_LIBRARY_ID, libraryId)
+ Pref.putInt(KEY_SELECTED_COLOR_ITEM_ID, itemId)
+ }
+
}
}
\ No newline at end of file
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 12be131d..8939f246 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
@@ -27,13 +27,16 @@ import org.autojs.autojs.theme.app.ColorLibrariesActivity.Companion.COLOR_LIBRAR
import org.autojs.autojs.theme.app.ColorLibrariesActivity.Companion.presetColorLibraries
import org.autojs.autojs.theme.app.ColorSelectBaseActivity.Companion.KEY_LEGACY_SELECTED_COLOR_INDEX
import org.autojs.autojs.theme.app.ColorSelectBaseActivity.Companion.KEY_SELECTED_COLOR_LIBRARY_ID
-import org.autojs.autojs.theme.app.ColorSelectBaseActivity.Companion.KEY_SELECTED_COLOR_LIBRARY_ITEM_ID
+import org.autojs.autojs.theme.app.ColorSelectBaseActivity.Companion.KEY_SELECTED_COLOR_ITEM_ID
import org.autojs.autojs.theme.app.ColorSelectBaseActivity.Companion.SELECT_NONE
import org.autojs.autojs.theme.app.ColorSelectBaseActivity.Companion.colorItemsLegacy
import org.autojs.autojs.theme.app.ColorSelectBaseActivity.Companion.customColorPosition
import org.autojs.autojs.theme.app.ColorSelectBaseActivity.Companion.defaultColorPosition
+import org.autojs.autojs.theme.app.ColorSelectBaseActivity.Companion.saveDatabaseForColorHistories
+import org.autojs.autojs.theme.app.ColorSelectBaseActivity.Companion.saveDatabaseForPaletteHistories
import org.autojs.autojs.util.ViewUtils
import org.autojs.autojs6.R
+import org.autojs.autojs6.databinding.MtColorSettingRecyclerViewItemBinding
class ColorSettingRecyclerView : ThemeColorRecyclerView {
@@ -61,9 +64,36 @@ class ColorSettingRecyclerView : ThemeColorRecyclerView {
getChildViewHolder(v)?.let { holder ->
when (val pos = holder.bindingAdapterPosition) {
customColorPosition -> showColorPicker(v)
+ defaultColorPosition -> {
+ setSelectedPosition(pos)
+ mOnItemClickListener?.onItemClick(v, pos)
+
+ presetColorLibraries.find { it.isDefault }!!.colors.find { colorItem ->
+ context.getColor(colorItem.colorRes) == context.getColor(R.color.theme_color_default)
+ }?.let {
+ saveDatabaseForColorHistories(
+ applicationContext = context.applicationContext,
+ libraryId = COLOR_LIBRARY_ID_DEFAULT,
+ itemId = it.itemId,
+ )
+ }
+
+ }
else -> {
setSelectedPosition(pos)
mOnItemClickListener?.onItemClick(v, pos)
+
+ selectedThemeColor?.colorPrimary?.let { c ->
+ presetColorLibraries.find { it.isMaterial }!!.colors.find { colorItem ->
+ context.getColor(colorItem.colorRes) == c
+ }?.let {
+ saveDatabaseForColorHistories(
+ applicationContext = context.applicationContext,
+ libraryId = COLOR_LIBRARY_ID_MATERIAL,
+ itemId = it.itemId,
+ )
+ }
+ }
}
}
}
@@ -99,24 +129,22 @@ class ColorSettingRecyclerView : ThemeColorRecyclerView {
private fun savePrefsForLibraries() {
when (mSelectedPosition) {
- 0 -> {
+ customColorPosition -> {
Pref.putInt(KEY_SELECTED_COLOR_LIBRARY_ID, COLOR_LIBRARY_ID_PALETTE)
- Pref.putInt(KEY_SELECTED_COLOR_LIBRARY_ITEM_ID, 0)
+ Pref.putInt(KEY_SELECTED_COLOR_ITEM_ID, 0)
}
- 1 -> {
+ defaultColorPosition -> {
Pref.putInt(KEY_SELECTED_COLOR_LIBRARY_ID, COLOR_LIBRARY_ID_DEFAULT)
presetColorLibraries.find { it.isDefault }!!.colors.find { colorItem ->
context.getColor(colorItem.colorRes) == context.getColor(R.color.theme_color_default)
- }?.let { Pref.putInt(KEY_SELECTED_COLOR_LIBRARY_ITEM_ID, it.itemId) }
+ }?.let { Pref.putInt(KEY_SELECTED_COLOR_ITEM_ID, it.itemId) }
}
- else -> {
- selectedThemeColor?.colorPrimary?.let { c ->
- presetColorLibraries.find { it.isMaterial }!!.colors.find { colorItem ->
- context.getColor(colorItem.colorRes) == c
- }?.let {
- Pref.putInt(KEY_SELECTED_COLOR_LIBRARY_ID, COLOR_LIBRARY_ID_MATERIAL)
- Pref.putInt(KEY_SELECTED_COLOR_LIBRARY_ITEM_ID, it.itemId)
- }
+ else -> selectedThemeColor?.colorPrimary?.let { c ->
+ presetColorLibraries.find { it.isMaterial }!!.colors.find { colorItem ->
+ context.getColor(colorItem.colorRes) == c
+ }?.let {
+ Pref.putInt(KEY_SELECTED_COLOR_LIBRARY_ID, COLOR_LIBRARY_ID_MATERIAL)
+ Pref.putInt(KEY_SELECTED_COLOR_ITEM_ID, it.itemId)
}
}
}
@@ -136,6 +164,7 @@ class ColorSettingRecyclerView : ThemeColorRecyclerView {
private fun showColorPicker(v: View) {
ColorPickerDialog.newBuilder()
+ .setUseLegacyMode(true)
.setAllowCustom(true)
.setAllowPresets(false)
.setDialogType(ColorPickerDialog.TYPE_CUSTOM)
@@ -147,6 +176,7 @@ class ColorSettingRecyclerView : ThemeColorRecyclerView {
val colorWithFullAlpha = color or Color.BLACK
Pref.putInt(ColorSelectBaseActivity.KEY_CUSTOM_COLOR, colorWithFullAlpha)
setSelectedPosition(customColorPosition)
+ saveDatabaseForPaletteHistories(applicationContext = context.applicationContext, color = colorWithFullAlpha)
mOnItemClickListener?.onItemClick(v, customColorPosition)
}
.show((context as FragmentActivity).supportFragmentManager, "ColorPickerTagForColorSelect")
@@ -159,7 +189,8 @@ class ColorSettingRecyclerView : ThemeColorRecyclerView {
private inner class Adapter : RecyclerView.Adapter() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
- return ViewHolder(LayoutInflater.from(context).inflate(R.layout.mt_color_setting_recycler_view_item, parent, false))
+ val binding = MtColorSettingRecyclerViewItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)
+ return ViewHolder(binding)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
@@ -181,15 +212,13 @@ class ColorSettingRecyclerView : ThemeColorRecyclerView {
}
- private inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ private inner class ViewHolder(itemViewBinding: MtColorSettingRecyclerViewItemBinding) : RecyclerView.ViewHolder(itemViewBinding.root) {
- var colorView: ImageView
- var nameView: TextView
+ val colorView: ImageView = itemViewBinding.color
+ val nameView: TextView = itemViewBinding.name
init {
- itemView.setOnClickListener(mActualOnItemClickListener)
- colorView = itemView.findViewById(R.id.color)
- nameView = itemView.findViewById(R.id.name)
+ itemViewBinding.root.apply { setOnClickListener(mActualOnItemClickListener) }
}
fun setChecked(checked: Boolean) {
diff --git a/app/src/main/java/org/autojs/autojs/theme/app/PaletteHistoryDao.kt b/app/src/main/java/org/autojs/autojs/theme/app/PaletteHistoryDao.kt
new file mode 100644
index 00000000..20e5965f
--- /dev/null
+++ b/app/src/main/java/org/autojs/autojs/theme/app/PaletteHistoryDao.kt
@@ -0,0 +1,46 @@
+package org.autojs.autojs.theme.app
+
+import androidx.room.Dao
+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 org.autojs.autojs.theme.app.ColorEntities.PaletteHistory
+
+@Dao
+interface PaletteHistoryDao {
+
+ @Insert(onConflict = OnConflictStrategy.IGNORE)
+ suspend fun insert(history: PaletteHistory): Long
+
+ @Update
+ suspend fun update(history: PaletteHistory)
+
+ @Query("SELECT * FROM palette_history WHERE hex = :hex LIMIT 1")
+ suspend fun getByHex(hex: String): PaletteHistory?
+
+ @Transaction
+ suspend fun upsert(history: PaletteHistory): Long {
+ val existing = getByHex(history.colorInfo.hex) ?: return insert(history)
+ val updated = existing.copy().also {
+ it.setLastUsedTimeCurrent()
+ update(it)
+ }
+ return updated.id.toLong()
+ }
+
+ @Query("SELECT * FROM palette_history")
+ suspend fun getAll(): List
+
+ @Query("SELECT EXISTS(SELECT 1 FROM palette_history LIMIT 1)")
+ suspend fun hasData(): Boolean
+
+ @Delete
+ suspend fun delete(vararg histories: PaletteHistory): Int
+
+ @Query("DELETE FROM palette_history")
+ suspend fun deleteAll()
+
+}
diff --git a/app/src/main/java/org/autojs/autojs/theme/app/PaletteHistoryItemAdapter.kt b/app/src/main/java/org/autojs/autojs/theme/app/PaletteHistoryItemAdapter.kt
new file mode 100644
index 00000000..af3c7944
--- /dev/null
+++ b/app/src/main/java/org/autojs/autojs/theme/app/PaletteHistoryItemAdapter.kt
@@ -0,0 +1,36 @@
+package org.autojs.autojs.theme.app
+
+import android.annotation.SuppressLint
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView
+import org.autojs.autojs.theme.app.ColorEntities.PaletteHistory
+import org.autojs.autojs6.databinding.MtColorLibraryRecyclerViewItemBinding
+
+@SuppressLint("NotifyDataSetChanged")
+class PaletteHistoryItemAdapter(
+ var items: List,
+ private val onItemClick: ((selectedColor: Int) -> Unit),
+) : RecyclerView.Adapter() {
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PaletteHistoryItemViewHolder {
+ val binding = MtColorLibraryRecyclerViewItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)
+ return PaletteHistoryItemViewHolder(binding)
+ }
+
+ override fun onBindViewHolder(holder: PaletteHistoryItemViewHolder, position: Int) {
+ val item = items[position]
+ holder.bind(item)
+ holder.itemView.setOnClickListener {
+ onItemClick(item.colorInfo.colorInt)
+ }
+ }
+
+ override fun getItemCount() = items.size
+
+ fun updateData(newData: List) {
+ items = newData
+ notifyDataSetChanged()
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/autojs/autojs/theme/app/PaletteHistoryItemViewHolder.kt b/app/src/main/java/org/autojs/autojs/theme/app/PaletteHistoryItemViewHolder.kt
new file mode 100644
index 00000000..019d0d14
--- /dev/null
+++ b/app/src/main/java/org/autojs/autojs/theme/app/PaletteHistoryItemViewHolder.kt
@@ -0,0 +1,22 @@
+package org.autojs.autojs.theme.app
+
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import org.autojs.autojs.theme.ThemeColorHelper
+import org.autojs.autojs.util.TimeUtils
+import org.autojs.autojs6.databinding.MtColorLibraryRecyclerViewItemBinding
+
+class PaletteHistoryItemViewHolder(itemViewBinding: MtColorLibraryRecyclerViewItemBinding) : RecyclerView.ViewHolder(itemViewBinding.root) {
+
+ private val colorView: ImageView = itemViewBinding.color
+ private val hexView: TextView = itemViewBinding.name
+ private val lastUsedView: TextView = itemViewBinding.description
+
+ fun bind(item: ColorEntities.PaletteHistory) {
+ ThemeColorHelper.setBackgroundColor(colorView, item.colorInfo.colorInt)
+ hexView.text = item.colorInfo.hex
+ lastUsedView.text = TimeUtils.formatTimestamp(item.lastUsedTime)
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/autojs/autojs/theme/app/ThemeColorHistoriesItemAdapter.kt b/app/src/main/java/org/autojs/autojs/theme/app/ThemeColorHistoriesItemAdapter.kt
new file mode 100644
index 00000000..4506377b
--- /dev/null
+++ b/app/src/main/java/org/autojs/autojs/theme/app/ThemeColorHistoriesItemAdapter.kt
@@ -0,0 +1,34 @@
+package org.autojs.autojs.theme.app
+
+import android.annotation.SuppressLint
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView
+import org.autojs.autojs.theme.app.ColorHistoryItemViewHolder.Companion.ColorHistoryItem
+import org.autojs.autojs6.databinding.MtColorHistoryRecyclerViewItemBinding
+
+@SuppressLint("NotifyDataSetChanged")
+class ColorHistoryItemAdapter(
+ private var items: List,
+ private val onItemClickListener: (selectedHistoryItem: ColorHistoryItem) -> Unit,
+) : RecyclerView.Adapter() {
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ColorHistoryItemViewHolder {
+ val binding = MtColorHistoryRecyclerViewItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)
+ return ColorHistoryItemViewHolder(binding)
+ }
+
+ override fun onBindViewHolder(holder: ColorHistoryItemViewHolder, position: Int) {
+ val item = items[position]
+ holder.bind(item)
+ holder.itemView.setOnClickListener { onItemClickListener(item) }
+ }
+
+ override fun getItemCount() = items.size
+
+ fun updateData(newItems: List) {
+ items = newItems
+ notifyDataSetChanged()
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/autojs/autojs/ui/floating/layoutinspector/NodeInfoView.kt b/app/src/main/java/org/autojs/autojs/ui/floating/layoutinspector/NodeInfoView.kt
index 41348622..95a0a682 100644
--- a/app/src/main/java/org/autojs/autojs/ui/floating/layoutinspector/NodeInfoView.kt
+++ b/app/src/main/java/org/autojs/autojs/ui/floating/layoutinspector/NodeInfoView.kt
@@ -5,17 +5,19 @@ import android.content.Context
import android.graphics.Rect
import android.util.AttributeSet
import android.view.LayoutInflater
-import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
+import androidx.viewbinding.ViewBinding
import com.yqritc.recyclerviewflexibledivider.HorizontalDividerItemDecoration
import org.autojs.autojs.core.accessibility.NodeInfo
import org.autojs.autojs.extension.NumberExtensions.jsString
import org.autojs.autojs.util.ClipboardUtils
import org.autojs.autojs.util.ViewUtils
import org.autojs.autojs6.R
+import org.autojs.autojs6.databinding.NodeInfoViewHeaderBinding
+import org.autojs.autojs6.databinding.NodeInfoViewItemBinding
import org.opencv.core.Point
import java.lang.reflect.Field
import kotlin.math.ceil
@@ -106,9 +108,9 @@ class NodeInfoView : RecyclerView {
val mViewTypeItem = 1
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder = when (viewType) {
- mViewTypeHeader -> R.layout.node_info_view_header
- else -> R.layout.node_info_view_item
- }.let { ViewHolder(LayoutInflater.from(parent.context).inflate(it, parent, false)) }
+ mViewTypeHeader -> NodeInfoViewHeaderBinding.inflate(LayoutInflater.from(parent.context), parent, false)
+ else -> NodeInfoViewItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)
+ }.let { ViewHolder(it) }
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.apply {
@@ -126,18 +128,29 @@ class NodeInfoView : RecyclerView {
}
- internal inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- // val attrChecked: CheckBox = itemView.findViewById(R.id.generate)
- val attrName: TextView = itemView.findViewById(R.id.name)
- val attrValue: TextView = itemView.findViewById(R.id.value)
+ private inner class ViewHolder(itemViewBinding: ViewBinding) : RecyclerView.ViewHolder(itemViewBinding.root) {
+
+ val attrName: TextView
+ val attrValue: TextView
init {
- itemView.setOnClickListener {
+ itemViewBinding.root.setOnClickListener {
bindingAdapterPosition.takeIf { it in 1.until(data.size) }?.let { i ->
ClipboardUtils.setClip(context, dataToFx(this@NodeInfoView.data[i]))
ViewUtils.showSnack(this@NodeInfoView, R.string.text_already_copied_to_clip)
}
}
+ when (itemViewBinding) {
+ is NodeInfoViewHeaderBinding -> {
+ attrName = itemViewBinding.name
+ attrValue = itemViewBinding.value
+ }
+ is NodeInfoViewItemBinding -> {
+ attrName = itemViewBinding.name
+ attrValue = itemViewBinding.value
+ }
+ else -> throw IllegalArgumentException("Unknown binding: $itemViewBinding")
+ }
}
}
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 9d596fd6..282a2f02 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
@@ -329,9 +329,9 @@ class MainActivity : BaseActivity(), DelegateHost, HostActivity {
AutoJs.instance.scriptEngineService.stopAll()
- WordDictionaryDatabase.getInstance(this).close()
- CharsDictionaryDatabase.getInstance(this).close()
- PhrasesDictionaryDatabase.getInstance(this).close()
+ WordDictionaryDatabase.getInstance(applicationContext).close()
+ CharsDictionaryDatabase.getInstance(applicationContext).close()
+ PhrasesDictionaryDatabase.getInstance(applicationContext).close()
mA11yTool.stopService(false)
mForeGroundService.stopIfNeeded()
diff --git a/app/src/main/java/org/autojs/autojs/util/DeveloperUtils.java b/app/src/main/java/org/autojs/autojs/util/DeveloperUtils.java
index 3990ffc8..b31d4ee6 100644
--- a/app/src/main/java/org/autojs/autojs/util/DeveloperUtils.java
+++ b/app/src/main/java/org/autojs/autojs/util/DeveloperUtils.java
@@ -33,6 +33,25 @@ public class DeveloperUtils {
private static final Regex SIGNATURE_REX = new Regex("CbKua77m59vis|N7YkpKxKjsPWe");
private static final ExecutorService sExecutor = UnderUseExecutors.getExecutor();
+
+ // @Hint by JetBrains AI Assistant on Apr 4, 2025.
+ // ! SALT is used in cryptography to enhance the randomness and complexity of the hash algorithm.
+ // ! During the hashing or encryption process, simply processing the data might result in
+ // ! identical hash outputs for identical inputs, leaving it vulnerable to attacks, such as rainbow table attacks.
+ // ! By incorporating a predetermined SALT, even identical inputs will produce different hash outputs, thereby enhancing security.
+ // ! In simple terms, SALT is like adding a special seasoning to the data to create an extra layer of protection during hash computation.
+ // ! zh-CN:
+ // ! SALT 在密码学中用于增加散列 (Hash) 算法的随机性和复杂度.
+ // ! 在散列或加密过程中, 仅仅对数据进行处理可能会使得相同的数据产生相同的散列结果, 这样就容易受到如彩虹表攻击等威胁.
+ // ! 通过加入一个预先设定的 SALT, 能使得即使输入的数据相同, 最终的散列结果也会不同, 从而提升安全性.
+ // ! 简单来说, SALT 就像是在数据中 "加入了一点特殊调料", 使得在计算散列值时增加了一道额外的防护层.
+ // !
+ // @Hint by SuperMonster003 on Apr 4, 2025.
+ // ! let life be beautiful like summer flowers and death like autumn leaves.
+ // ! Derived from Rabindranath Tagore's "Stray Birds", section 82.
+ // ! zh-CN:
+ // ! 使生如夏花之绚烂, 死如秋叶之静美. -- 郑振铎译
+ // ! 出自拉宾德拉纳特·泰戈尔的 <<飞鸟集>> 第 82 首.
private static final String SALT = "let\nlife\nbe\nbeautiful\nlike\nsummer\nflowers\nand\ndeath\nlike\nautumn\nleaves\n.";
public static boolean isSelfPackage(@Nullable String runningPackage) {
diff --git a/app/src/main/java/org/autojs/autojs/util/RhinoUtils.kt b/app/src/main/java/org/autojs/autojs/util/RhinoUtils.kt
index 7299a5e9..ceac8def 100644
--- a/app/src/main/java/org/autojs/autojs/util/RhinoUtils.kt
+++ b/app/src/main/java/org/autojs/autojs/util/RhinoUtils.kt
@@ -753,6 +753,11 @@ object RhinoUtils {
}
fun T.withTimeConsuming(name: String, function: (thisArg: T) -> R?): R? {
+
+ // @Hint by SuperMonster003 on Apr 5, 2025.
+ // ! Kotlin's measureTimeMillis also could be used to calculate the execution time of a function.
+ // ! zh-CN: 也可以使用 kotlin 的 measureTimeMillis 计算函数执行耗时.
+
val start = System.currentTimeMillis()
val result = function.invoke(this)
if (BuildConfig.DEBUG) {
diff --git a/app/src/main/java/org/autojs/autojs/util/TimeUtils.kt b/app/src/main/java/org/autojs/autojs/util/TimeUtils.kt
index 53db3c83..fe975ad9 100644
--- a/app/src/main/java/org/autojs/autojs/util/TimeUtils.kt
+++ b/app/src/main/java/org/autojs/autojs/util/TimeUtils.kt
@@ -1,5 +1,7 @@
package org.autojs.autojs.util
+import org.joda.time.DateTime
+import org.joda.time.format.DateTimeFormat
import java.util.concurrent.TimeUnit
/**
@@ -28,4 +30,12 @@ object TimeUtils {
@JvmStatic
fun toDays(timeUtil: TimeUnit, duration: Long) = timeUtil.toNanos(duration).toDouble() / TimeUnit.DAYS.toNanos(1)
+ @JvmStatic
+ @JvmOverloads
+ fun formatTimestamp(ts: Long, pattern: String = "yyyy/MM/dd HH:mm"): String {
+ val dt = DateTime(ts)
+ val fmt = DateTimeFormat.forPattern(pattern)
+ return fmt.print(dt)
+ }
+
}
diff --git a/app/src/main/java/org/autojs/autojs/util/UpdateUtils.kt b/app/src/main/java/org/autojs/autojs/util/UpdateUtils.kt
index 76ee7562..8155b541 100644
--- a/app/src/main/java/org/autojs/autojs/util/UpdateUtils.kt
+++ b/app/src/main/java/org/autojs/autojs/util/UpdateUtils.kt
@@ -132,7 +132,7 @@ object UpdateUtils {
.autoDismiss(false)
.show()
}
- .positiveText(R.string.dialog_button_cancel)
+ .positiveText(R.string.dialog_button_dismiss)
.onPositive { dialog, _ -> dialog.dismiss() }
.autoDismiss(false)
.build()
diff --git a/app/src/main/res/layout/mt_activity_color_library.xml b/app/src/main/res/layout/mt_activity_color_items.xml
similarity index 96%
rename from app/src/main/res/layout/mt_activity_color_library.xml
rename to app/src/main/res/layout/mt_activity_color_items.xml
index b3beb635..7e87da27 100644
--- a/app/src/main/res/layout/mt_activity_color_library.xml
+++ b/app/src/main/res/layout/mt_activity_color_items.xml
@@ -33,7 +33,7 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/mt_color_library_recycler_view_item.xml b/app/src/main/res/layout/mt_color_library_recycler_view_item.xml
index 9784fbe7..5d111057 100644
--- a/app/src/main/res/layout/mt_color_library_recycler_view_item.xml
+++ b/app/src/main/res/layout/mt_color_library_recycler_view_item.xml
@@ -41,16 +41,47 @@
android:textSize="15sp"
tools:text="@string/md_amber_800" />
-
+ android:orientation="horizontal">
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/menu/menu_color_library.xml b/app/src/main/res/menu/menu_color_items.xml
similarity index 86%
rename from app/src/main/res/menu/menu_color_library.xml
rename to app/src/main/res/menu/menu_color_items.xml
index 7418bbd5..bf9e1d63 100644
--- a/app/src/main/res/menu/menu_color_library.xml
+++ b/app/src/main/res/menu/menu_color_items.xml
@@ -18,6 +18,11 @@
android:icon="@drawable/ic_locate"
app:showAsAction="never" />
+
+
+
+
-
diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml
index e8ec9f0d..a70a12ad 100644
--- a/app/src/main/res/values-ar/strings.xml
+++ b/app/src/main/res/values-ar/strings.xml
@@ -13,20 +13,45 @@
نسخة غير متوافقة من \"APK Builder\".\nتحميله الآن؟
خطة...
SDK الجهاز
+ حجم الملف
مثبت
SDK الأقصى
SDK الأدنى
الحزمة
+ طريقة التوقيع
SDK المستهدف
لا يمكن تنفيذ العمليات المحظورة في واجهة المستخدم. جرِّب الانتظار لتنفيذ `waitForActivity` في مؤثِّر فرعي أو نص برمجي فرعي، أو استخدم `setInterval` للتكرار والتحقق من النشاط
لا يمكن تنفيذ العمليات المحظورة في واجهة المستخدم. جرِّب الانتظار لتنفيذ `waitForPackage` في مؤثِّر فرعي أو نص برمجي فرعي، أو استخدم `setInterval` للتكرار والتحقق من الحزمة
+ مكتبة ألوان Android
+ مكتبة ألوان CSS
+ مكتبة الألوان الافتراضية
+ تم الإنشاء
+ @string/mt_custom
+ @string/text_default
+ ذكي
+ المواد
+ لوحة
+ مكتبة الألوان الذكية
+ مكتبة ألوان تصميم المواد
+ ألوان Android
+ ألوان CSS
+ الألوان الافتراضية
+ الألوان الذكية
+ ألوان المواد
+ ألوان الويب
+ مكتبة ألوان الويب
+ خلفية فاتحة
+ خلفية داكنة
تحتوي الإعدادات \"abi\" على خيارات غير صالحة
تحتوي الإعدادات \"abi\" على خيارات غير متاحة
تحتوي الإعدادات \"lib\" على خيارات غير صالحة
تحتوي الإعدادات \"lib\" على خيارات غير متاحة
ملف موجود بالفعل.\nالكتابة فوق؟
1. اضغط مع الاستمرار على اسم التطبيق (AutoJs6) في الصفحة الرئيسية للانتقال إلى صفحة الإعدادات\n2. اضغط مع الاستمرار على خيار إعدادات معين في صفحة الإعدادات لعرض معلومات مفصلة
+ اللون الحالي للثيم %1$s مُعد بواسطة لوحة الألوان
زر عائم لعرض المحتوي الفعلي
+ فشل في تحديد مؤشر عنصر لون الثيم
+ فشل في تحديد موقع مكتبة الألوان للثيم
سيتم إطلاق صفحة ويب للإبلاغ عن مشكلة.\nقد تكون هناك حاجة إلى حساب GitHub.
اختر طريقة إخراج للنصوص المعاد تصميمها
نسخ سجل الأخطاء أو الخروج مباشرة
@@ -44,6 +69,7 @@
المستندات المحلية: باستخدام ملفات AutoJs6 المضمنة كمصادر توثيق ، لا يلزم الاتصال بالشبكة. يتغير المحتوى مع تحديث AutoJs6.\nالمستندات عبر الإنترنت: استخدام صفحات GitHub كمصادر توثيق تتطلب اتصالاً بالشبكة. المحتوى دائما محدث.\n\nملاحظة: لزيادة تجربة قراءة المستندات عبر الإنترنت إلى الحد الأقصى ، يوصى باستخدام جهاز عرض بشاشة عريضة مثل شاشة سطح المكتب.\nملاحظة: اعتبارًا من الإصدار 6.2.0 ، لا تزال الوثائق في المراحل الأولية من التطوير ، ومعظم المحتوى لم تتم كتابته أو تحديثه بعد.
يجب استيفاء الشروط التالية لدعم النسق الداكن على صفحات المستند:\n1. تم تمكين الوضع الليلي AutoJs6\n2.عرض ويب نظام Android (أو متصفحات مثل Google Chrome):\n- Android API المستوى 29 (Android 10) [Q] وما فوق: الإصدار> = 76\n- مستوى واجهة برمجة تطبيقات Android 28 (Android 9) [P] وما دون: الإصدار> = 105
يمكن أن يؤدي توسيع كائنات JavaScript المضمنة إلى زيادة مرونة التعليمات البرمجية وتمكين وظائف أكثر ثراءً ، ولكن يمكن أن يتسبب في حدوث تعارضات وحتى حدوث تعطل.\nتحتوي جميع البرامج النصية على امتدادات مضمنة يتم تمكينها افتراضيًا عند تشغيل الخيار.\nغالبًا ما تكون الامتدادات المضمنة غير آمنة ، ولا يوصى بها ما لم يتم فهم مبادئ ومخاطر الإضافات المضمنة بوضوح.\nعند إيقاف تشغيل الخيار ، لا يزال من الممكن تمكين الامتدادات المضمنة من خلال الكائن العام للمكونات الإضافية ، كما هو موضح في وثائق المشروع.
+ يُستخدم لتحديد ما إذا كان يجب عرض امتدادات الملف في مستكشف ملفات AutoJs6.
تُستخدم لتعيين إظهار الملفات والمجلدات المخفية (تبدأ عادةً بـ \".\") في مستكشف الملفات AutoJs6 أم لا.
تفضيل إبقاء شاشة الجهاز قيد التشغيل وساطعة عندما يكون AutoJs6 في المقدمة.\nلتحقيق ذلك فقط على الصفحة الرئيسية بين جميع صفحات تطبيق AutoJs6 ، اختر خيار \"الصفحة الرئيسية فقط\".
يمكن للاختصارات تنفيذ إجراءات محددة في AutoJs6. يمكن للمستخدمين عرض هذه الاختصارات في مشغل مدعوم وبدء بعض المهام أو تشغيل نشاط بسرعة، مثل قراءة وثائق تطبيق AutoJs6، وتشغيل صفحة إعدادات AutoJs6، وما إلى ذلك.
@@ -57,6 +83,7 @@
@string/text_back
يلغي
يلغي
+ مسح
نعم
@string/text_continue
@string/text_copy
@@ -64,10 +91,12 @@
تفاصيل
رفض
متصفح
+ معلومات الملف
تاريخ
يتجاهل
إنضم للمجموعة
أكثر
+ فتح لوحة الألوان
يترك
إزالة
إعادة المحاولة
@@ -77,6 +106,9 @@
تحديث
استخدم الافتراضي
استعراض الملف
+ تفاصيل اللون
+ لوحة الألوان
+ تفاصيل لون الثيم
لا يمكن معالجة الملف
لم يتم حفظ المحتوى ، هل أنت متأكد من الخروج؟
اتبع النظام
@@ -85,6 +117,9 @@
تغيير حجم النص
تعطيل
عرض مقياس
+ إخفاء جميع امتدادات الملف
+ عرض جميع امتدادات الملف
+ عرض امتدادات الملف (باستثناء *.js / *.auto)
لا تعرض الملفات أو المجلدات المخفية
إظهار الملفات و المجلدات المخفية
كل الصفحات
@@ -103,8 +138,8 @@
يتعذر إكمال العملية \"%1$s\" لأن المعلمة تحتوي على قيم إحداثيات سالبة (%2$d, %3$d)
تتطلب عملية تنفيذ واجهة المستخدم نشاطًا يمكن توفيره من خلال وضع التنفيذ \"ui\"
لم يتم تنفيذ العملية
- التطبيق غير مثبت: \"%s\"
التطبيق غير مثبت
+ التطبيق غير مثبت: \"%s\"
لا يمكن أن تكون الوسائط %1$s بالنسبة لـ %2$s#%3$s فارغة
لا يمكن أن تكون الوسائط فارغة
يجب أن تكون الوسائط فارغة
@@ -135,6 +170,7 @@
لا يمكن تمكين خادم AutoJs6: %s
الارتفاع الزائد: القالب [%1$d] > المنطقة [%2$d]
العرض الزائد: القالب [%1$d] > المنطقة [%2$d]
+ فشل في تطبيق سجل اللون الحالي
فشل استدعاء الأسلوب \"%s\"
فشل تحويل القيمة %s إلى قابل للرسم
@@ -142,6 +178,7 @@
فشل إنشاء المثيل \"%s\"
فشل في استدعاء الطريقة %1$s
+ فشل في عرض المحتوى
فشل في إلغاء وصول Shizuku
فشل في تشغيل البرنامج النصي
الملف في المسار \"%1$s\" غير موجود
@@ -158,6 +195,7 @@
يجب أن يكون للصور نفس الحجم
يجب أن تكون الصور بنفس الحجم والنوع
فشل فحص حقول الإدخال
+ لون غير صالح
بوصلة غير صالحة: %s
مستودع جيثب غير صالح: %s
عنوان إب غير صالح
@@ -227,6 +265,7 @@
انقر الطويل على زر \"تشغيل\" لتصحيح الأخطاء
تأخير قبل الحلقة
0 للحلقة اللانهائية
+ آخر استخدام: %1$s
الألبوم
نسبة العرض إلى الارتفاع
الصوت
@@ -282,9 +321,14 @@
عمل
لا مثبت APK
هناك حاجة إلى أداة ADB
+ إضافة مكتبة ألوان
اسم مستعار
+ الاسم المستعار لا يمكن أن يكون فارغًا
+ كلمة مرور الاسم المستعار
جميع الملفات وصول
هناك حاجة إلى \"All Files Access\" للوصول إلى ملفات البرنامج النصي على الهاتف
+ جميع السجلات
+ تم مسح جميع السجلات
نسخ إلى الحافظة
تم النسخ بالفعل إلى الحافظة (فقط أحدث %d عنصر)
مخلوق
@@ -328,6 +372,7 @@
كود إصدار التطبيق
اسم إصدار التطبيق
مظهر
+ يجب ملء حقل واحد على الأقل من "الاسم، اسم المنظمة، وحدة التنظيم، رمز الدولة، الولاية أو المقاطعة، المدينة أو المنطقة، الشارع"
ينسب
تحقق من التحديثات التلقائية
تحقق من وجود التحديثات تلقائيًا وعرض تناول وجبة خفيفة على الصفحة الرئيسية
@@ -359,6 +404,7 @@
تغيير دليل العمل
تحقق من وجود تحديثات
البحث عن تحديثات...
+ المدينة أو المنطقة
اسم الفئة / الحزمة
صافي
مسح اختيار الملف
@@ -368,14 +414,20 @@
انقر فوق \"نعم\" للانتقال إلى الإعدادات
التشغيل المتكرر
وضع العميل
+ استنساخ مكتبة ألوان
قريب
إغلاق الزر العائم
شفرة
رمز تجميل
+ مكتبة الألوان
+ لوحة الألوان
تم نسخ الأمر إلى الحافظة
تعليق
التوافق
تكوين
+ هل أنت متأكد من مسح جميع السجلات؟
+ سيتم مسح السجلات التالية\n\n[ %1$s ]\n\nهل أنت متأكد من المسح؟
+ سيتم مسح السجلات التالية\n\n[ جميع مكتبات الألوان ]\n\nهل أنت متأكد من المسح؟
هل انت متأكد من الحذف؟
هل أنت متأكد من إزالته؟
الاتصال بالكمبيوتر
@@ -390,6 +442,8 @@
خط النسخ
نسخ إلى الحافظة
نسخ القيمة
+ رمز الدولة (XX)
+ رمز الدولة يجب أن يكون حرفين كبيرين
النسخة الحالية
مهام يومية
تاريخ
@@ -405,8 +459,11 @@
خطوة الى
يخرج
خطوة أكثر
+ تقصير
+ مخزن المفاتيح الافتراضي
بادئة افتراضية
حذف
+ حذف الكل
حذف الخط
تفاصيل
تفاصيل المطور قيد التطوير
@@ -468,6 +525,7 @@
فشل في البناء
فشل النسخ
فشل في انشاء
+ فشل في إنشاء مفتاح التوقيع
فشل في حذف
فشل في تعطيل خدمة الوصول
فشل في التحميل
@@ -479,6 +537,7 @@
فشل في منح الوصول
فشل في منح الشاشة على إذن التطبيقات الأخرى
فشل في الاستيراد
+ فشل في تحديد الموقع
فشل في تسجيل الدخول
فشل في تسجيل
فشل في تقديم
@@ -488,15 +547,21 @@
ملف
ملف موجود بالفعل
مستكشف الملفات
+ امتدادات الملف
اسم الملف
ملف غير موجود
+ مسار الملف
الملف \"%1$s\" ليس برنامجًا نصيًا قابلًا للتنفيذ
+ اسم الملف لا يمكن أن يكون فارغًا
+ اسم الملف لا يمكن أن يحتوي على أي من الأحرف التالية: \\ / : * ? " < > |
+ اسم الملف طويل جدًا
نقل الملفات
تجد
العثور على فصول جافا
التالي
البحث / استبدال
سابق
+ الاسم
زر عائم
توقف إجباري
خدمة المقدمة
@@ -523,6 +588,7 @@
تجاهل تحسينات البطارية
تحديثات تجاهل
يستورد
+ استيراد مكتبة ألوان
استيراد السيناريو
نجح الاستيراد
استيراد إلى \"نصوص بلدي\"
@@ -546,6 +612,11 @@
قفز إلى خط البداية
القفز للبدء
حافظ على الشاشة قيد التشغيل عندما تكون في المقدمة
+ الاسم المستعار
+ مخزن المفاتيح
+ تم التحقق من المخزن
+ لم يتم التحقق من المخزن
+ كلمة مرور مخزن المفاتيح
ملصق
آخر فحص: %s
النشاط الاخير
@@ -556,6 +627,7 @@
فحص التصميم ...
تراخيص المصادر المفتوحة
جار التحميل...
+ تحديد لون الثيم الحالي
سجل
تسجيل الدخول
تسجيل الدخول
@@ -570,6 +642,7 @@
يدير
إدارة خدمة إمكانية الوصول
إدارة التحديثات التي تم تجاهلها
+ إدارة مخزن المفاتيح
الإصدار الأدنى
أدنى إصدار من امتداد VSCode
لم يتم تثبيت \"Mobile QQ\"
@@ -579,7 +652,10 @@
خيارات متعددة
اسم
تحتاج إلى تمكين خدمة الوصول
+ مكتبة ألوان جديدة
ملف جديد
+ مكتبة ألوان ذكية جديدة
+ إنشاء مفتاح التوقيع
طريق جديد
المسار الجديد هو نفس المسار القديم
مشروع جديد
@@ -614,26 +690,72 @@
مفتوحة مع
تم الانتهاء من العملية
خيارات
+ اسم المنظمة
+ وحدة التنظيم
المطور الأصلي
آحرون
مسار الإخراج APK
اسم الحزمة
+ اسم الحزمة (جارٍ الحساب...)
كلمة المرور
كلمة المرور لا يمكن أن تكون فارغة
+ يجب أن يحتوي كلمة المرور على %d على الأقل من الأحرف
معجون
المسار فارغ
عنوان خادم الكمبيوتر
+ السماح للتطبيق بالوصول إلى الموقع التقريبي عبر الشبكة
+ السماح للتطبيق بالحصول على الموقع الدقيق عبر GPS
+ السماح للتطبيق بمعرفة حالة الاتصال بالشبكة
+ السماح للتطبيق بالوصول إلى حالة الواي فاي
+ السماح للتطبيق بإرسال نية لإغلاق حوارات النظام
+ السماح للتطبيق بالتقاط إخراج الفيديو
+ السماح للتطبيق بتفريغ معلومات النظام
+ السماح للتطبيق بتشغيل خدمة في المقدمة
+ السماح للتطبيق باستخدام تسجيل الشاشة وإسقاط الوسائط في خدمة أمامية
+ السماح للتطبيق بإجراء عمليات خاصة في خدمة أمامية
تم تأمين التصريح
فشل في منح إذن (مع الجذر)
فشل منح الإذن (مع Shizuku)
منح إذن (مع الجذر)
تم منح الإذن (مع Shizuku)
+ السماح للتطبيق بتثبيت اختصار
+ السماح للتطبيق بالتفاعل عبر المستخدمين
+ السماح للتطبيق بالوصول إلى الإنترنت
+ السماح للتطبيق بإدارة جميع الملفات في التخزين الخارجي
+ السماح للتطبيق بإدارة المستخدمين
+ السماح للتطبيق بالوصول إلى بيانات استخدام التطبيقات الأخرى
+ السماح للتطبيق بعرض الإشعارات
+ السماح للتطبيق بالاستعلام عن جميع الحزم
+ السماح للتطبيق بقراءة البيانات من التخزين الخارجي
+ السماح للتطبيق بقراءة ملفات الصوت من التخزين المشترك
+ السماح للتطبيق بقراءة ملفات الصور من التخزين المشترك
+ السماح للتطبيق بقراءة ملفات الفيديو من التخزين المشترك
+ السماح للتطبيق بقراءة حالة الهاتف والهوية
+ السماح للتطبيق بالوصول إلى جميع معلومات حالة الهاتف
+ السماح للتطبيق بقراءة الرسائل النصية
+ السماح للتطبيق بتلقي إشعارات عند اكتمال إقلاع الجهاز
+ السماح للتطبيق بتسجيل الصوت
+ السماح للتطبيق بإعادة ترتيب التطبيقات التي تعمل حالياً
+ السماح للتطبيق بطلب تجاهل تحسينات البطارية
+ السماح للتطبيق بطلب تثبيت تطبيقات أخرى
إلغاء الإذن
فشل إلغاء الإذن (مع الجذر)
فشل إبطال الإذن (مع Shizuku)
إلغاء الإذن (مع الجذر)
تم إبطال الإذن (مع Shizuku)
+ مخصص لتطبيق Termux، السماح بتنفيذ الأوامر
+ السماح للتطبيق بجدولة عمليات دقيقة بالوقت
+ السماح للتطبيق بالتفاعل مع النظام من خلال خدمة Shizuku للحصول على صلاحيات أعلى
+ السماح للتطبيق بالظهور فوق التطبيقات الأخرى
اختبار بيرم
+ السماح للتطبيق بإلغاء تثبيت الاختصار
+ السماح للتطبيق بعرض عدد غير محدود من إشعارات التوست
+ السماح للتطبيق بجدولة المنبهات الدقيقة أو التنبيهات
+ السماح للتطبيق بالتحكم في اهتزاز الهاتف
+ السماح للتطبيق بمنع الهاتف من الدخول في وضع السكون
+ السماح للتطبيق بكتابة البيانات إلى التخزين الخارجي
+ السماح للتطبيق بقراءة وكتابة إعدادات النظام الحساسة
+ السماح للتطبيق بتعديل إعدادات النظام
أذونات
الأذونات
تثبيت الاختصارات على المشغل غير مدعوم
@@ -723,6 +845,9 @@
تسجيل السيناريو
البرنامج النصي
يبحث
+ البحث في كل الألوان
+ البحث عن لون
+ مساعدة البحث
يختار
في حالة وجود مقطع (موجود)
حتى تجد واحدة (Findone)
@@ -732,7 +857,6 @@
حدد ملف للتحميل
حدد أيقونة
حدد صورة
- استخدام الرمز الافتراضي
إرسال
انشاء اختصار
وضع الخادم
@@ -747,6 +871,9 @@
عرض في حدود التصميم
عرض في التسلسل الهرمي للتخطيط
إظهار معلومات القطعة
+ خوارزمية التوقيع
+ تكوين التوقيع
+ خطة التوقيع
مقاس
تم تصدير %d من العناصر
مسار رمز المصدر
@@ -754,93 +881,17 @@
نجمة
ابدأ التسجيل
ادارة
+ الولاية أو المقاطعة
قف
+ الشارع
+ تم إنشاء مفتاح التوقيع بنجاح
قيم ABIs
ABIs (32 بت)
ABIs (64 بت)
المكتبات
- تكوين التوقيع
- مخزن المفاتيح
- مخزن المفاتيح الافتراضي
- إدارة مخزن المفاتيح
- خطة التوقيع
- إنشاء مفتاح التوقيع
- كلمة مرور مخزن المفاتيح
- الاسم المستعار
- كلمة مرور الاسم المستعار
- خوارزمية التوقيع
- المدة (سنوات)
- الاسم
- اسم المنظمة
- وحدة التنظيم
- رمز الدولة (XX)
- الولاية أو المقاطعة
- المدينة أو المنطقة
- الشارع
- اسم الملف لا يمكن أن يكون فارغًا
- اسم الملف لا يمكن أن يحتوي على أي من الأحرف التالية: \\ / : * ? " < > |
- اسم الملف طويل جدًا
- يجب أن يحتوي كلمة المرور على %d على الأقل من الأحرف
- الاسم المستعار لا يمكن أن يكون فارغًا
- مدة الصلاحية لا يمكن أن تكون فارغة
- مدة الصلاحية لا يمكن أن تكون صفرًا
- رمز الدولة يجب أن يكون حرفين كبيرين
- يجب ملء حقل واحد على الأقل من "الاسم، اسم المنظمة، وحدة التنظيم، رمز الدولة، الولاية أو المقاطعة، المدينة أو المنطقة، الشارع"
- تم إنشاء مفتاح التوقيع بنجاح
- فشل في إنشاء مفتاح التوقيع
- لم يتم التحقق من المخزن
- تم التحقق من المخزن
- التحقق
- حذف الكل
- لم يتم التحقق
- تم التحقق
- التحقق من مخزن المفاتيح
- تم التحقق بنجاح
- فشل التحقق
- مسار الملف
الأذونات المطلوبة
- السماح للتطبيق بالوصول إلى حالة الواي فاي
- السماح للتطبيق بكتابة البيانات إلى التخزين الخارجي
- السماح للتطبيق بقراءة البيانات من التخزين الخارجي
- السماح للتطبيق بقراءة ملفات الصور من التخزين المشترك
- السماح للتطبيق بقراءة ملفات الفيديو من التخزين المشترك
- السماح للتطبيق بقراءة ملفات الصوت من التخزين المشترك
- السماح للتطبيق بإدارة جميع الملفات في التخزين الخارجي
- السماح للتطبيق بإرسال نية لإغلاق حوارات النظام
- السماح للتطبيق بالوصول إلى جميع معلومات حالة الهاتف
- السماح للتطبيق بتثبيت اختصار
- السماح للتطبيق بإلغاء تثبيت الاختصار
- السماح للتطبيق بطلب تثبيت تطبيقات أخرى
- السماح للتطبيق بمنع الهاتف من الدخول في وضع السكون
- السماح للتطبيق بجدولة المنبهات الدقيقة أو التنبيهات
- السماح للتطبيق بجدولة عمليات دقيقة بالوقت
- السماح للتطبيق بالتحكم في اهتزاز الهاتف
- السماح للتطبيق بالوصول إلى الإنترنت
- السماح للتطبيق بمعرفة حالة الاتصال بالشبكة
- السماح للتطبيق بالظهور فوق التطبيقات الأخرى
- السماح للتطبيق بإعادة ترتيب التطبيقات التي تعمل حالياً
- السماح للتطبيق بطلب تجاهل تحسينات البطارية
- السماح للتطبيق بتلقي إشعارات عند اكتمال إقلاع الجهاز
- السماح للتطبيق بعرض الإشعارات
- السماح للتطبيق بتشغيل خدمة في المقدمة
- السماح للتطبيق باستخدام تسجيل الشاشة وإسقاط الوسائط في خدمة أمامية
- السماح للتطبيق بإجراء عمليات خاصة في خدمة أمامية
- السماح للتطبيق بعرض عدد غير محدود من إشعارات التوست
- السماح للتطبيق بالتقاط إخراج الفيديو
- السماح للتطبيق بتفريغ معلومات النظام
- السماح للتطبيق بالاستعلام عن جميع الحزم
- السماح للتطبيق بالوصول إلى بيانات استخدام التطبيقات الأخرى
- السماح للتطبيق بتعديل إعدادات النظام
- السماح للتطبيق بقراءة وكتابة إعدادات النظام الحساسة
- السماح للتطبيق بإدارة المستخدمين
- السماح للتطبيق بالتفاعل عبر المستخدمين
- السماح للتطبيق بالوصول إلى الموقع التقريبي عبر الشبكة
- السماح للتطبيق بالحصول على الموقع الدقيق عبر GPS
- السماح للتطبيق بتسجيل الصوت
- مخصص لتطبيق Termux، السماح بتنفيذ الأوامر
- السماح للتطبيق بقراءة حالة الهاتف والهوية
- السماح للتطبيق بقراءة الرسائل النصية
- السماح للتطبيق بالتفاعل مع النظام من خلال خدمة Shizuku للحصول على صلاحيات أعلى
+ التبديل إلى التخطيط التقليدي
+ التبديل إلى التخطيط الجديد
تبديل النافذة
إعدادات الرموز
مطور مصممة خصيصا
@@ -858,12 +909,13 @@
لا يمكن استخدام ABI المحدد \"%s\" لإنشاء تطبيق مجمع، لأن الإصدار الحالي من AutoJs6 لا يتضمن ABI أعلاه.
غير متوفره
واجهة برمجة التطبيقات \"%s\" غير متوفرة
+ تحت التطوير
ستكون الميزة جاهزة للاستخدام في التحديثات القليلة التالية
@string/text_under_development
- تحت التطوير
الغاء التحميل
ينسحب
غير معروف
+ لم يتم التحقق
التحديثات
تم مسح الحالات التي تم فحصها
في وقت لاحق
@@ -871,6 +923,7 @@
الاستخدام الإحصائيات الوصول
يوفر إمكانية الوصول إلى سجل وإحصائيات استخدام الجهاز مما يؤدي إلى CurrentPackage () نتيجة أكثر دقة
استخدم اختصار Android 7.0
+ استخدام الرمز الافتراضي
استخدم مفتاح خفض مستوى الصوت للتحكم في التسجيل
استخدم مفتاح \"رفع الصوت\" للتحكم في تشغيل البرنامج النصي
اسم المستخدم
@@ -878,12 +931,22 @@
استخدم محدد DESC
استخدم محدد المعرف
استخدم محدد النص
+ المدة (سنوات)
+ مدة الصلاحية لا يمكن أن تكون فارغة
+ مدة الصلاحية لا يمكن أن تكون صفرًا
قيمة
متغير أو تعبير
+ تم التحقق
+ التحقق
+ فشل التحقق
+ التحقق من مخزن المفاتيح
+ تم التحقق بنجاح
إصدار
رمز الإصدار
+ رمز الإصدار (جارٍ الحساب...)
معلومات الإصدار
اسم الإصدار
+ اسم الإصدار (جارٍ الحساب...)
عرض
عرض المستندات
إصدار امتداد VSCode لا يفي بالمتطلبات
@@ -893,59 +956,5 @@
اكتب إعدادات الأمان
إعدادات النظام الآمنة ، التي تحتوي على تفضيلات النظام التي يمكن أن تقرأها التطبيقات ولكن لا يُسمح لها بالكتابة.\nهذه هي لتفضيلات يجب على المستخدم تعديلها بشكل صريح من خلال واجهة المستخدم لتطبيق النظام.\nمع إذن إعدادات النظام الآمن ، يمكن للتطبيقات العادية تعديل الإعدادات الآمنة مباشرة (مثل خدمة إمكانية الوصول).
كتابة إعدادات النظام
- تقصير
- اسم الحزمة (جارٍ الحساب...)
- اسم الإصدار (جارٍ الحساب...)
- رمز الإصدار (جارٍ الحساب...)
- File size
- Signature
- File info
- File extensions
- Hide all file extensions
- Show all file extensions
- Show file extensions (exclude *.js / *.auto)
- Used to set whether to show file extensions in AutoJs6 file explorer.
- Switch to new layout
- Switch to legacy layout
- Search color
- Locate current theme color
- New color library
- Color palette
- WEB color library
- CSS color library
- Android color library
- Material design color library
- Default color library
- Background light
- Background night
- Color library
- Default colors
- Material colors
- Android colors
- CSS colors
- WEB colors
- Material
- Default
- Custom
- Color palette
- Add a color library
- Import a color library
- New intelligent color library
- Clone a color library
- Intelligent color library
- Intelligent colors
- Intell.
- Palette
- Created
- Search all colors
- Palette
- Current theme color %1$s is configured by the color palette
- Failed to locate
- Failed to locate the color library for the theme color
- Failed to determine the index of the theme color item
- Color details
- Theme color details
- Search help
- Failed to render content
diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml
index dd4fd2cd..eae8fed7 100644
--- a/app/src/main/res/values-en/strings.xml
+++ b/app/src/main/res/values-en/strings.xml
@@ -889,7 +889,7 @@
Write security settings
Secure system settings, containing system preferences that applications can read but are not allowed to write.\nThese are for preferences that the user must explicitly modify through the UI of a system app.\nWith secure system settings permission, normal applications can directly modify the secure settings (such as accessibility service).
Write system settings
- Default
+ Default
Package name (computing...)
Version name (computing...)
Version code (computing...)
@@ -912,8 +912,8 @@
Android color library
Material design color library
Default color library
- Background light
- Background night
+ Background light
+ Background night
Color library
Default colors
Material colors
@@ -921,8 +921,8 @@
CSS colors
WEB colors
Material
- Default
- Custom
+ @string/text_default
+ @string/mt_custom
Color palette
Add a color library
Import a color library
@@ -943,5 +943,14 @@
Theme color details
Search help
Failed to render content
+ Latest used: %1$s
+ Clear
+ Are you sure to clear all histories?
+ All histories have been cleared
+ Invalied color
+ Failed to apply current color history
+ All histories below will be cleared\n\n[ %1$s ]\n\nAre you sure to clear them all?
+ All histories below will be cleared\n\n[ All color libraries ]\n\nAre you sure to clear them all?
+ All histories
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 45ff66b2..042c447f 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -12,20 +12,45 @@
Versión incompatible de \"apk builder\".\n¿Descargarlo ahora?
Preparando...
SDK del dispositivo
+ Tamaño de archivo
Instalado
SDK máximo
SDK mínimo
Paquete
+ Esquema de firma
SDK objetivo
No se pueden realizar operaciones bloqueantes en el hilo de UI. Intente ejecutar `waitForActivity` en un subproceso o subscript, o use `setInterval` para repetir y comprobar la actividad
No se pueden realizar operaciones bloqueantes en el hilo de UI. Intente ejecutar `waitForPackage` en un subproceso o subscript, o use `setInterval` para repetir y comprobar el paquete
+ Biblioteca de colores de Android
+ Biblioteca de colores CSS
+ Biblioteca de colores predeterminada
+ Creado
+ @string/mt_custom
+ @string/text_default
+ Intell.
+ Material
+ Paleta
+ Biblioteca de colores inteligente
+ Biblioteca de colores de Material Design
+ Colores Android
+ Colores CSS
+ Colores predeterminados
+ Colores inteligentes
+ Colores Material
+ Colores WEB
+ Biblioteca de colores WEB
+ Fondo claro
+ Fondo oscuro
La configuración \"abi\" contiene opciones inválidas
La configuración \"abi\" contiene opciones no disponibles
La configuración \"lib\" contiene opciones inválidas
La configuración \"lib\" contiene opciones no disponibles
El archivo ya existe.\n¿Sobreescribir?
1. Mantén pulsado el nombre de la aplicación (AutoJs6) en la página de inicio para saltar a la página de configuración\n2. 2. Mantén pulsada una opción de configuración determinada en la página de configuración para ver información detallada
+ El color del tema actual %1$s está configurado por la paleta de colores
Un botón de acción flotante para mostrar el manifiesto
+ No se pudo determinar el índice del elemento de color del tema
+ No se pudo localizar la biblioteca de colores para el color del tema
Se lanzará una página web para informar de un problema.\nPuede ser necesaria una cuenta de GitHub.
Seleccione una forma de salida para el script recortado
Copiar el registro de depuración o salir directamente
@@ -43,6 +68,7 @@
Documentos locales: Utiliza los archivos incorporados de AutoJs6 como fuentes de documentación, sin necesidad de conexión a la red. El contenido cambia a medida que se actualiza AutoJs6.\nDocumentación en línea: Utilizando las páginas de GitHub como fuentes de documentación, se requiere conexión a la red. El contenido está siempre actualizado.\n\nNota: Para maximizar la experiencia de lectura de los documentos en línea, se recomienda utilizar un dispositivo de pantalla ancha, como un monitor de escritorio.\nNota: A partir de la versión 6.2.0, la documentación se encuentra todavía en las fases preliminares de desarrollo, y la mayor parte del contenido aún no ha sido escrito o actualizado.
Para que el tema oscuro sea compatible con las páginas de los documentos, deben cumplirse las siguientes condiciones\n1. AutoJs6 tiene activado el modo nocturno\n2. Sistema Android WebView (o navegadores como Google Chrome):\n- Android API Level 29 (Android 10) [Q] y superior: versión >= 76\n- Android API Level 28 (Android 9) [P] e inferiores: versión >= 105
La ampliación de los objetos incorporados de JavaScript puede aumentar la flexibilidad del código y permitir una funcionalidad más rica, pero puede causar conflictos e incluso roturas.\nTodos los scripts tienen las extensiones incorporadas habilitadas por defecto cuando la opción está activada.\nLas extensiones incorporadas suelen ser inseguras y no se recomiendan a menos que se comprendan claramente los principios y riesgos de las extensiones incorporadas.\nCuando la opción está desactivada, las extensiones incorporadas aún pueden ser habilitadas a través del objeto global plugins, como se describe en la documentación del proyecto.
+ Se utiliza para definir si se deben mostrar las extensiones de archivo en el explorador de archivos de AutoJs6.
2. Se utiliza para establecer si se muestran o no los archivos y carpetas ocultos (que suelen empezar por \".\") en el explorador de archivos de AutoJs6.
Preferencia para mantener la pantalla del dispositivo encendida y brillante cuando AutoJs6 está en primer plano.\nPara que sólo ocurra en la página de inicio entre todas las páginas de la aplicación AutoJs6, elija la opción \"sólo página de inicio\".
Los accesos directos pueden realizar acciones específicas en AutoJs6. Los usuarios pueden mostrar estos accesos directos en un lanzador compatible e iniciar rápidamente algunas tareas o iniciar una actividad, como leer la documentación de la aplicación AutoJs6, iniciar la página de configuración de AutoJs6, etc.
@@ -56,6 +82,7 @@
@string/text_back
Cancelar
Cancelar
+ Borrar
OK
@string/text_continue
@string/text_copy
@@ -63,10 +90,12 @@
Detalles
Descartar
Navegador
+ Información del archivo
Historial
Ignorar
Unirse grupo
Más
+ Abrir paleta
Salir
Eliminar
Reintentar
@@ -76,6 +105,9 @@
Actualizar
Usar por defecto
Ver archivo
+ Detalles del color
+ Paleta de colores
+ Detalles del color del tema
No se puede procesar el archivo
El contenido no se ha guardado, ¿está seguro de salir?
Siga el sistema
@@ -84,6 +116,9 @@
Tamaño del texto
Desactivar
Escalar la vista
+ Ocultar todas las extensiones de archivo
+ Mostrar todas las extensiones de archivo
+ Mostrar las extensiones de archivo (excluyendo *.js / *.auto)
No mostrar archivos o carpetas ocultas
Mostrar archivos y carpetas ocultos
Todas las páginas
@@ -102,8 +137,8 @@
La operación \"%1$s\" no puede completarse porque el parámetro contiene valores de coordenadas negativos (%2$d, %3$d)
Se requiere una actividad, que podría proporcionarse ejecutando en modo de ejecución \"ui\"
Una operación no está implementada
- La aplicación no está instalada: \"%s\"
La aplicación no está instalada
+ La aplicación no está instalada: \"%s\"
El argumento %1$s para %2$s#%3$s no puede ser nulo
Los argumentos no pueden estar vacíos
Los argumentos deben estar vacíos
@@ -134,6 +169,7 @@
No se puede habilitar el servidor AutoJs6: %s
Altura excesiva: plantilla [%1$d] > región [%2$d]
Anchura excesiva: plantilla [%1$d] > región [%2$d]
+ Error al aplicar el historial de color actual
Fallo al llamar al método \"%s\"
Fallo al convertir el valor %s en un Dibujable
@@ -141,6 +177,7 @@
Error al instanciar \"%s\"
Error al invocar el método %1$s
+ Error al renderizar el contenido
Fallo en la revocación de permisos Shizuku
Error al ejecutar el script
El archivo en la ruta \"%1$s\" no existe
@@ -157,6 +194,7 @@
Las imágenes deben tener el mismo tamaño
Las imágenes deben tener el mismo tamaño y tipo
Error en la comprobación del campo de entrada
+ Color inválido
Brújula inválida: %s
Repositorio GitHub inválido: %s
Dirección IP no válida
@@ -226,6 +264,7 @@
Haga un clic largo en el botón \"Ejecutar\" para depurar
Retraso antes del bucle
0 para bucle infinito
+ Último uso: %1$s
Álbum
Relación de aspecto
Audio
@@ -281,9 +320,14 @@
Acción
No hay instalador de APK
Se necesita la herramienta ADB
+ Agregar biblioteca de colores
alias
+ El alias no puede estar vacío
+ Contraseña del alias
Acceso a todos los archivos
Se necesita \"All files access\" para acceder a los archivos de script en el teléfono
+ Todos los historiales
+ Todos los historiales han sido borrados
Copiado en el portapapeles
Ya se ha copiado en el portapapeles (sólo los últimos %d elementos)
Creado
@@ -327,6 +371,7 @@
Código de la versión de la aplicación
Nombre de la versión de la aplicación
Aspecto
+ Al menos uno de los campos “Nombre completo, Nombre de la organización, Unidad organizacional, Código de país, Estado o provincia, Ciudad o localidad, Calle” debe estar lleno
Atributo
Comprobación automática de actualizaciones
Comprueba las actualizaciones automáticamente y muestra una barra de snacks en la página de inicio
@@ -358,6 +403,7 @@
Cambiar el directorio de trabajo
Comprobar si hay actualizaciones
Comprobando las actualizaciones...
+ Ciudad o localidad
Nombre de la clase/paquete
Borrar
Borrar selección de archivos
@@ -367,14 +413,20 @@
Haga clic en \"Aceptar\" para ir a la configuración
Funcionamiento frecuente
Modo cliente
+ Clonar biblioteca de colores
Cerrar
Cerrar botón flotante
Código
Embellecer el código
+ Biblioteca de colores
+ Paleta de colores
Comando copiado en el portapapeles
Comente
Compatibilidad
Configuración
+ ¿Está seguro de borrar todos los historiales?
+ Se borrarán los siguientes historiales\n\n[ %1$s ]\n\n¿Está seguro de borrarlos?
+ Se borrarán los historiales siguientes\n\n[ Todas las bibliotecas de colores ]\n\n¿Está seguro de borrarlos?
¿Seguro que quieres borrar?
¿Está seguro de eliminar?
Conectar al PC
@@ -389,6 +441,8 @@
Copiar línea
Copiar al portapapeles
Copiar valor
+ Código de país (XX)
+ El código del país debe ser de dos letras mayúsculas
Versión actual
Tarea diaria
Fecha
@@ -404,8 +458,11 @@
Entrar
Salir
Pasar por encima
+ Por defecto
+ Almacenamiento de claves predeterminado
Prefijo predeterminado
Borrar
+ Eliminar todo
Borrar línea
Detalles
Los detalles del desarrollador están en desarrollo
@@ -467,6 +524,7 @@
Fallo en la construcción
Error al copiar
Fallo al crear
+ Error al crear la clave de firma
Fallo en la eliminación
Fallo al desactivar el servicio de accesibilidad
Fallo en la descarga
@@ -478,6 +536,7 @@
Fallo al conceder el acceso
Fallo al conceder el permiso de visualización sobre otras aplicaciones
Fallo en la importación
+ No se pudo localizar
Fallo en el inicio de sesión
Fallo en el registro
Fallo al enviar
@@ -487,15 +546,21 @@
Archivo
El archivo ya existe
Explorador de archivos
+ Extensiones de archivo
Nombre del archivo
El archivo no existe
+ Ruta del archivo
El archivo \"%1$s\" no es un script ejecutable
+ El nombre de archivo no puede estar vacío
+ El nombre del archivo no puede contener ninguno de los siguientes caracteres: \\ / : * ? " < > |
+ El nombre del archivo es demasiado largo
Transferencia de archivos
Buscar
Buscar clases Java
Sigui
Buscar / Reemplazar
Anter
+ Nombre completo
Botón flotante
Forzar parada
Servicio de primer plano
@@ -522,6 +587,7 @@
Ignorar las optimizaciones de la batería
Ignorar actualizaciones
Importar
+ Importar biblioteca de colores
Importar script(s)
Importar con éxito
Importar a \"mis scripts\"
@@ -545,6 +611,11 @@
Saltar a inicio de línea
Saltar al inicio
Mantener la pantalla encendida en primer plano
+ Alias
+ Almacenamiento de claves
+ El almacén de claves ha sido verificado
+ El almacén de claves no ha sido verificado
+ Contraseña del almacén de claves
Etiqueta
Última comprobación: %s
Última actividad
@@ -555,6 +626,7 @@
Inspeccionando el diseño...
Licencias de fuentes abiertas
Cargando...
+ Localizar color del tema actual
Registrar
Iniciar sesión
Inicio de sesión
@@ -569,6 +641,7 @@
Gestionar
Gestionar el servicio de accesibilidad
Gestionar las actualizaciones ignoradas
+ Gestionar almacenamiento de claves
Versión mínima
Versión mínima de la extensión VSCode
\"QQ móvil\" no instalado
@@ -578,7 +651,10 @@
Opciones múltiples
Nombre
Necesidad de habilitar el servicio de accesibilidad
+ Nueva biblioteca de colores
Nuevo archivo
+ Nueva biblioteca de colores inteligente
+ Generar clave de firma
Nueva ruta
La nueva ruta es la misma que la antigua
Nuevo proyecto
@@ -613,26 +689,72 @@
Abrir con
La operación se ha completado
Opciones
+ Nombre de la organización
+ Unidad organizacional
Desarrollador original
Otros
Ruta de salida del APK
Nombre del paquete
+ Nombre del paquete (Calculando...)
Contraseña
La contraseña no puede estar vacía
+ La contraseña debe tener al menos %d caracteres
Pegar
La ruta está vacía
Dirección del servidor del PC
+ Permitir que la aplicación acceda a la ubicación aproximada a través de la red
+ Permitir que la aplicación acceda a la ubicación precisa a través de GPS
+ Permitir que la aplicación vea el estado de la conexión de red
+ Permitir que la aplicación acceda al estado de Wi-Fi
+ Permitir que la aplicación envíe una intención para cerrar los cuadros de diálogo del sistema
+ Permitir que la aplicación capture salida de video
+ Permitir que la aplicación volcar información del sistema
+ Permitir que la aplicación ejecute servicios en primer plano
+ Permitir que la aplicación use grabación de pantalla y proyección de medios en servicios en primer plano
+ Permitir que la aplicación realice operaciones especiales en servicios en primer plano
Permiso concedido
Fallo en la concesión del permiso (con root)
Permiso no concedido (con Shizuku)
Permiso concedido (con root)
Permiso concedido (con Shizuku)
+ Permitir que la aplicación instale accesos directos
+ Permitir que la aplicación interactúe entre usuarios
+ Permitir que la aplicación acceda a Internet
+ Permitir que la aplicación gestione todos los archivos en el almacenamiento externo
+ Permitir que la aplicación administre usuarios
+ Permitir que la aplicación acceda a las estadísticas de uso de otras aplicaciones
+ Permitir que la aplicación envíe notificaciones
+ Permitir que la aplicación consulte todos los paquetes
+ Permitir que la aplicación lea desde el almacenamiento externo
+ Permitir que la aplicación lea archivos de audio del almacenamiento compartido
+ Permitir que la aplicación lea archivos de imágenes del almacenamiento compartido
+ Permitir que la aplicación lea archivos de video del almacenamiento compartido
+ Permitir que la aplicación lea el estado y la identidad del teléfono
+ Permitir que la aplicación acceda a toda la información del estado del teléfono
+ Permitir que la aplicación lea mensajes SMS
+ Permitir que la aplicación reciba la notificación cuando el dispositivo termine de arrancar
+ Permitir que la aplicación grabe audio
+ Permitir que la aplicación reordene tareas en ejecución
+ Permitir que la aplicación solicite ignorar optimizaciones de batería
+ Permitir que la aplicación solicite la instalación de otras aplicaciones
Permiso revocado
Fallo al revocar el permiso (con root)
Error al revocar el permiso (con Shizuku)
Permiso revocado (con root)
Permiso revocado (con Shizuku)
+ Específico para la aplicación Termux, permitir ejecutar comandos
+ Permitir que la aplicación programe operaciones precisas por tiempo
+ Permitir que la aplicación interactúe con el sistema mediante el servicio Shizuku para obtener permisos elevados
+ Permitir que la aplicación se muestre encima de otras aplicaciones
Prueba de permisos
+ Permitir que la aplicación desinstale accesos directos
+ Permitir que la aplicación muestre notificaciones de Toast ilimitadas
+ Permitir que la aplicación programe alarmas exactas o recordatorios de eventos
+ Permitir que la aplicación controle la vibración del teléfono
+ Evitar que el teléfono entre en modo de suspensión
+ Permitir que la aplicación escriba en el almacenamiento externo
+ Permitir que la aplicación lea/escriba configuraciones del sistema seguras
+ Permitir que la aplicación modifique los ajustes del sistema
Permisos
Permisos
No es posible anclar accesos directos al lanzador
@@ -722,6 +844,9 @@
Grabación del script
Script en ejecución
Buscar en
+ Buscar todos los colores
+ Buscar color
+ Ayuda de búsqueda
Seleccione
Si el clip existe (exists)
Hasta encontrar uno (findOne)
@@ -731,7 +856,6 @@
Seleccionar el archivo a cargar
Seleccionar un icono
Seleccionar una imagen
- Usar icono predeterminado
Enviar
Crear acceso directo
Modo servidor
@@ -746,6 +870,9 @@
Vista en los límites del diseño
Vista en la jerarquía del diseño
Mostrar información del widget
+ Algoritmo de firma
+ Configuración de firma
+ Esquema de firma
Tamaño
%d elementos exportados
Ruta del código fuente
@@ -753,93 +880,17 @@
Estrella
Comenzar a grabar
Ejecutando
+ Estado o provincia
Detener
+ Calle
+ Clave de firma creada con éxito
ABIs
ABIs (32 bits)
ABIs (64 bits)
Bibliotecas
- Configuración de firma
- Almacenamiento de claves
- Almacenamiento de claves predeterminado
- Gestionar almacenamiento de claves
- Esquema de firma
- Generar clave de firma
- Contraseña del almacén de claves
- Alias
- Contraseña del alias
- Algoritmo de firma
- Validez (años)
- Nombre completo
- Nombre de la organización
- Unidad organizacional
- Código de país (XX)
- Estado o provincia
- Ciudad o localidad
- Calle
- El nombre de archivo no puede estar vacío
- El nombre del archivo no puede contener ninguno de los siguientes caracteres: \\ / : * ? " < > |
- El nombre del archivo es demasiado largo
- La contraseña debe tener al menos %d caracteres
- El alias no puede estar vacío
- El número de años de validez no puede estar vacío
- El número de años de validez no puede ser cero
- El código del país debe ser de dos letras mayúsculas
- Al menos uno de los campos “Nombre completo, Nombre de la organización, Unidad organizacional, Código de país, Estado o provincia, Ciudad o localidad, Calle” debe estar lleno
- Clave de firma creada con éxito
- Error al crear la clave de firma
- El almacén de claves no ha sido verificado
- El almacén de claves ha sido verificado
- Verificar
- Eliminar todo
- No verificado
- Verificado
- Verificar almacén de claves
- Verificación exitosa
- Error en la verificación
- Ruta del archivo
Permisos requeridos
- Permitir que la aplicación acceda al estado de Wi-Fi
- Permitir que la aplicación escriba en el almacenamiento externo
- Permitir que la aplicación lea desde el almacenamiento externo
- Permitir que la aplicación lea archivos de imágenes del almacenamiento compartido
- Permitir que la aplicación lea archivos de video del almacenamiento compartido
- Permitir que la aplicación lea archivos de audio del almacenamiento compartido
- Permitir que la aplicación gestione todos los archivos en el almacenamiento externo
- Permitir que la aplicación envíe una intención para cerrar los cuadros de diálogo del sistema
- Permitir que la aplicación acceda a toda la información del estado del teléfono
- Permitir que la aplicación instale accesos directos
- Permitir que la aplicación desinstale accesos directos
- Permitir que la aplicación solicite la instalación de otras aplicaciones
- Evitar que el teléfono entre en modo de suspensión
- Permitir que la aplicación programe alarmas exactas o recordatorios de eventos
- Permitir que la aplicación programe operaciones precisas por tiempo
- Permitir que la aplicación controle la vibración del teléfono
- Permitir que la aplicación acceda a Internet
- Permitir que la aplicación vea el estado de la conexión de red
- Permitir que la aplicación se muestre encima de otras aplicaciones
- Permitir que la aplicación reordene tareas en ejecución
- Permitir que la aplicación solicite ignorar optimizaciones de batería
- Permitir que la aplicación reciba la notificación cuando el dispositivo termine de arrancar
- Permitir que la aplicación envíe notificaciones
- Permitir que la aplicación ejecute servicios en primer plano
- Permitir que la aplicación use grabación de pantalla y proyección de medios en servicios en primer plano
- Permitir que la aplicación realice operaciones especiales en servicios en primer plano
- Permitir que la aplicación muestre notificaciones de Toast ilimitadas
- Permitir que la aplicación capture salida de video
- Permitir que la aplicación volcar información del sistema
- Permitir que la aplicación consulte todos los paquetes
- Permitir que la aplicación acceda a las estadísticas de uso de otras aplicaciones
- Permitir que la aplicación modifique los ajustes del sistema
- Permitir que la aplicación lea/escriba configuraciones del sistema seguras
- Permitir que la aplicación administre usuarios
- Permitir que la aplicación interactúe entre usuarios
- Permitir que la aplicación acceda a la ubicación aproximada a través de la red
- Permitir que la aplicación acceda a la ubicación precisa a través de GPS
- Permitir que la aplicación grabe audio
- Específico para la aplicación Termux, permitir ejecutar comandos
- Permitir que la aplicación lea el estado y la identidad del teléfono
- Permitir que la aplicación lea mensajes SMS
- Permitir que la aplicación interactúe con el sistema mediante el servicio Shizuku para obtener permisos elevados
+ Cambiar a diseño antiguo
+ Cambiar a nuevo diseño
Cambiar ventana
Config de símbolos
Desarrollador a medida
@@ -857,12 +908,13 @@
La ABI seleccionada \"%s\" no se puede utilizar para crear una aplicación empaquetada, porque la versión actual de AutoJs6 no incluye la ABI mencionada.
No disponible
ABI \"%s\" no está disponible
+ En desarrollo
La función estará lista para su uso en las próximas actualizaciones
@string/text_under_development
- En desarrollo
Revocar
Revoc
Desconocido
+ No verificado
Actualizaciones
Actualizaciones comprobadas estados borrados
Más adelante
@@ -870,6 +922,7 @@
Acceso a las estadísticas de uso
Proporciona acceso al historial de uso del dispositivo y a las estadísticas, lo que da a currentPackage() un resultado más preciso
Utiliza el acceso directo de Android 7.0
+ Usar icono predeterminado
Utilice la tecla de bajar el volumen para controlar la grabación
Utilice la tecla \"Subir volumen\" para controlar la ejecución del script
Nombre de usuario
@@ -877,12 +930,22 @@
Usar selector de desc
Usar el selector id
Usar selector de texto
+ Validez (años)
+ El número de años de validez no puede estar vacío
+ El número de años de validez no puede ser cero
Valor
Variable o expresión
+ Verificado
+ Verificar
+ Error en la verificación
+ Verificar almacén de claves
+ Verificación exitosa
Versión
Código de la versión
+ Código de la versión (Calculando...)
Información de la versión
Nombre de la versión
+ Nombre de la versión (Calculando...)
Ver
Ver documentos
La versión de la extensión VSCode no cumple los requisitos
@@ -892,59 +955,5 @@
Escribir la configuración de seguridad
Ajustes de seguridad del sistema, que contienen preferencias del sistema que las aplicaciones pueden leer pero no pueden escribir.\nSe trata de preferencias que el usuario debe modificar explícitamente a través de la interfaz de usuario de una aplicación del sistema.\nCon el permiso de configuración segura del sistema, las aplicaciones normales pueden modificar directamente la configuración segura (como el servicio de accesibilidad).
Escribir la configuración del sistema
- Por defecto
- Nombre del paquete (Calculando...)
- Nombre de la versión (Calculando...)
- Código de la versión (Calculando...)
- File size
- Signature
- File info
- File extensions
- Hide all file extensions
- Show all file extensions
- Show file extensions (exclude *.js / *.auto)
- Used to set whether to show file extensions in AutoJs6 file explorer.
- Switch to new layout
- Switch to legacy layout
- Search color
- Locate current theme color
- New color library
- Color palette
- WEB color library
- CSS color library
- Android color library
- Material design color library
- Default color library
- Background light
- Background night
- Color library
- Default colors
- Material colors
- Android colors
- CSS colors
- WEB colors
- Material
- Default
- Custom
- Color palette
- Add a color library
- Import a color library
- New intelligent color library
- Clone a color library
- Intelligent color library
- Intelligent colors
- Intell.
- Palette
- Created
- Search all colors
- Palette
- Current theme color %1$s is configured by the color palette
- Failed to locate
- Failed to locate the color library for the theme color
- Failed to determine the index of the theme color item
- Color details
- Theme color details
- Search help
- Failed to render content
diff --git a/app/src/main/res/values-fr/css_colors_string.xml b/app/src/main/res/values-fr/css_colors_string.xml
index 8193f18b..12a08996 100644
--- a/app/src/main/res/values-fr/css_colors_string.xml
+++ b/app/src/main/res/values-fr/css_colors_string.xml
@@ -87,7 +87,7 @@
Pourpre moyen
Vert mer moyen
Bleu ardoise moyen
- Vert vert de printemps moyen
+ Vert de printemps moyen
Turquoise moyen
Rouge violette moyen
Bleu minuit
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index eda8c2c5..233fdc75 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -12,20 +12,45 @@
Version incompatible de \"apk builder\".\nTéléchargez-la maintenant?
Préparation...
SDK de l\'appareil
+ Taille du fichier
Installé
SDK maximum
SDK minimum
Package
+ Schéma de signature
SDK cible
Les opérations bloquantes ne peuvent pas être effectuées sur le thread UI. Essayez d\'exécuter `waitForActivity` dans un sous-processus ou un sous-script, ou utilisez `setInterval` pour répéter et vérifier l\'activité
Les opérations bloquantes ne peuvent pas être effectuées sur le thread UI. Essayez d\'exécuter `waitForPackage` dans un sous-processus ou un sous-script, ou utilisez `setInterval` pour répéter et vérifier le paquet
+ Bibliothèque de couleurs Android
+ Bibliothèque de couleurs CSS
+ Bibliothèque de couleurs par défaut
+ Créé
+ @string/mt_custom
+ @string/text_default
+ Intell.
+ Material
+ Palette
+ Bibliothèque de couleurs intelligente
+ Bibliothèque de couleurs Material Design
+ Couleurs Android
+ Couleurs CSS
+ Couleurs par défaut
+ Couleurs intelligentes
+ Couleurs Material
+ Couleurs WEB
+ Bibliothèque de couleurs WEB
+ Fond clair
+ Fond sombre
La configuration \"abi\" contient des options invalides
La configuration \"abi\" contient des options non disponibles
La configuration \"lib\" contient des options invalides
La configuration \"lib\" contient des options non disponibles
Fichier déjà existant.>Surécrire?
1. Appuyez et maintenez le nom de l\'application (AutoJs6) sur la page d\'accueil pour accéder à la page des paramètres.\n2. Appuyez et maintenez une certaine option de paramètres sur la page de paramètres pour afficher des informations détaillées.
+ La couleur du thème actuel %1$s est configurée par la palette de couleurs
Un bouton d\'action flottant pour afficher le manifeste
+ Impossible de déterminer l\'index de l\'élément de couleur du thème
+ Impossible de localiser la bibliothèque de couleurs pour la couleur du thème
Une page web sera lancée pour signaler un problème.\nUn compte pour GitHub peut être nécessaire.
Sélectionnez un mode de sortie pour le script enregistré
Copier le journal de débogage ou quitter directement.
@@ -43,6 +68,7 @@
Documentation locale: Utilisation des fichiers intégrés d\'AutoJs6 comme sources de documentation, aucune connexion réseau n\'est nécessaire. Le contenu change au fur et à mesure que AutoJs6 est mis à jour.\nDocumentation en ligne: Utilisation des pages GitHub comme sources de documentation, nécessitant une connexion réseau. Le contenu est toujours à jour.\n\nRemarque: pour optimiser l\'expérience de lecture des documents en ligne, il est recommandé d\'utiliser un dispositif d\'affichage grand écran tel qu\'un moniteur de bureau.\nRemarque: à partir de la version 6.2.0, la documentation est encore dans les phases préliminaires de développement, et la plupart du contenu n\'a pas encore été écrit ou mis à jour.
Les conditions suivantes doivent être remplies pour la prise en charge du thème sombre sur les pages de la documentation :\n1. Le mode nuit d\'AutoJs6 est activé\n2. WebView du système Android (ou des navigateurs comme Google Chrome) :\n- Android API Level 29 (Android 10) [Q] et supérieur: version >= 76\n- Android API Niveau 28 (Android 9) [P] et inférieur: version >= 105
L\'extension des objets JavaScript intégrés peut augmenter la flexibilité du code et permettre des fonctionnalités plus riches, mais elle peut provoquer des conflits et même des pannes.\nTous les scripts ont des extensions intégrées activées par défaut lorsque l\'option est activée.\nLes extensions intégrées sont souvent peu sûres et ne sont pas recommandées, sauf si les principes et les risques des extensions intégrées sont clairement compris.\nLorsque l\'option est désactivée, les extensions intégrées peuvent toujours être activées via l\'objet global plugins, comme décrit dans la documentation du projet.
+ Permet de définir l\'affichage des extensions de fichier dans l\'explorateur AutoJs6.
Permet d\'afficher ou non les fichiers et dossiers cachés (commençant généralement par \".\") dans l\'explorateur de fichiers d\'AutoJs6.
Préférence pour que l\'écran de l\'appareil reste allumé et lumineux lorsque AutoJs6 est au premier plan.\nPour que cela se produise uniquement sur la page d\'accueil parmi toutes les pages de l\'application AutoJs6, choisissez l\'option \"page d\'accueil uniquement\".
Les raccourcis permettent d\'effectuer des actions spécifiques dans AutoJs6. Les utilisateurs peuvent afficher ces raccourcis dans un lanceur pris en charge et démarrer rapidement certaines tâches ou lancer une activité, comme la lecture de la documentation de l\'application AutoJs6, le lancement de la page de configuration d\'AutoJs6, etc.
@@ -56,6 +82,7 @@
@string/text_back
Cancel
Annulation
+ Effacer
OK
@string/text_continue
@string/text_copy
@@ -63,10 +90,12 @@
Details
Quitter
Navigateur
+ Infos fichier
Histoire
Ignorer
Joindre groupe
Plus
+ Palette
Quit
Supprimer
Retourner
@@ -76,6 +105,9 @@
Mise à jour
Par défaut
Voir le fichier
+ Détails de la couleur
+ Palette de couleurs
+ Détails de la couleur du thème
Cannot process file
Le contenu n\'a pas été enregistré, êtes-vous sûr de vouloir quitter?
Suivre le système
@@ -84,6 +116,9 @@
Taille du texte
Désactiver
Vue à l\'échelle
+ Cacher toutes les extensions de fichier
+ Afficher toutes les extensions de fichier
+ Afficher les extensions de fichier (exclure *.js / *.auto)
N\'affiche pas les fichiers ou dossiers cachés
Afficher les fichiers et dossiers cachés
Toutes les pages
@@ -102,8 +137,8 @@
L\'opération \"%1$s\" ne peut pas être terminée car le paramètre contient des valeurs de coordonnées négatives (%2$d, %3$d)
Une activité est requise, qui pourrait être fournie en exécutant en mode d\'exécution \"ui\"
Une opération n\'est pas mise en œuvre
- L\'application n\'est pas installée: \"%s\"
L\'application n\'est pas installée
+ L\'application n\'est pas installée: \"%s\"
L\'argument %1$s pour %2$s#%3$s ne peut pas être nul
Les arguments ne peuvent pas être vides
Les arguments doivent être vides
@@ -134,6 +169,7 @@
Cannot enable AutoJs6 server: %s
Hauteur excessive : modèle [%1$d] > région [%2$d]
Largeur excessive : modèle [%1$d] > région [%2$d]
+ Échec de l\'application de l\'historique de la couleur actuelle
Échec de l\'appel à la méthode \"%s\"
Échec de la conversion de la valeur %s en un objet à dessiner
@@ -141,6 +177,7 @@
Échec de l\'instanciation de \"%s\"
Échec de l\'appel de la méthode %1$s
+ Impossible d\'afficher le contenu
La révocation des droits de Shizuku a échoué
Échec de l\'exécution du script
Le fichier dans le chemin \"%1$s\" n\'existe pas
@@ -157,6 +194,7 @@
Les images doivent avoir la même taille
Les images doivent avoir la même taille et le même type
Échec de la vérification du champ de saisie
+ Couleur invalide
Compas non valide: %s
Invalide le dépôt GitHub: %s
Adresse IP invalide
@@ -226,6 +264,7 @@
Cliquez longuement sur le bouton \"Run\" pour déboguer
Délai avant boucle
0 pour une boucle infinie
+ Dernière utilisation : %1$s
Album
Ratio d\'aspect
Audio
@@ -281,9 +320,14 @@
Action
Pas d\'installateur d\'APK
L\'outil ADB est nécessaire
+ Ajouter une bibliothèque de couleurs
alias
+ L\'alias ne peut pas être vide
+ Mot de passe de l\'alias
Accès à tous les fichiers
L\'option \"Accès à tous les fichiers\" est nécessaire pour accéder aux fichiers de script sur le téléphone.
+ Tous les historiques
+ Tous les historiques ont été effacés
Copié dans le presse-papiers
Déjà copié dans le presse-papiers (seulement les derniers %d éléments)
Créé
@@ -327,6 +371,7 @@
Code de la version de l\'application
Nom de la version de l\'application
Appearance
+ Au moins un champ parmi « Nom complet, Nom de l\'organisation, Unité organisationnelle, Code du pays, État ou province, Ville ou localité, Rue » doit être renseigné
Attribut
Vérification automatique des mises à jour
Vérification automatique des mises à jour et affichage d\'un snackbar sur la page d\'accueil
@@ -358,6 +403,7 @@
Changer de répertoire de travail
Vérifier les mises à jour
Checking for updates...
+ Ville ou localité
Nom de la classe ou du paquet
Clear
Effacer la sélection de fichiers
@@ -367,14 +413,20 @@
Cliquez sur \"OK\" pour accéder aux paramètres.
Une opération fréquente
Mode client
+ Cloner une bibliothèque de couleurs
Fermeture
Fermer le bouton flottant
Code
Beautifier le code
+ Bibliothèque de couleurs
+ Palette de couleurs
Commande copiée dans le presse-papiers
Commentaire
Compatibilité
Configuration
+ Êtes-vous sûr de vouloir effacer tous les historiques ?
+ Tous les historiques ci-dessous seront effacés\n\n[ %1$s ]\n\nÊtes-vous sûr de vouloir les effacer ?
+ Tous les historiques ci-dessous seront effacés\n\n[ Toutes les bibliothèques de couleurs ]\n\nÊtes-vous sûr de vouloir les effacer ?
Vous êtes sûr de vouloir supprimer?
Etes-vous sûr de supprimer?
Connexion au PC
@@ -389,6 +441,8 @@
Copie de la ligne
Copie vers le presse-papiers
Copie de la valeur
+ Code du pays (XX)
+ Le code du pays doit être composé de deux lettres majuscules
Version actuelle
Tâche quotidienne
Date
@@ -404,8 +458,11 @@
Step into
Step out
Step over
+ Default
+ Magasin de clés par défaut
Préfixe par défaut
Suppression
+ Tout supprimer
Supprimer la ligne
Détails
Les détails du développeur sont en cours de développement
@@ -467,6 +524,7 @@
Failed to build
Échec de la copie
Fail to create
+ Échec de la création de la clé de signature
Échec de la suppression
Failed to disable accessibility service
Fail to download
@@ -478,6 +536,7 @@
Failed to grant access
Fail to grant display over other apps permission
Fail to import
+ Échec de la localisation
Fail to login
Failed to register
Failed to submit
@@ -487,15 +546,21 @@
Fichier
Fichier déjà existant
Explorateur de fichiers
+ Extensions de fichier
Nom du fichier
Le fichier n\'existe pas
+ Chemin du fichier
Le fichier \"%1$s\" n\'est pas un script exécutable
+ Le nom de fichier ne peut pas être vide
+ Le nom du fichier ne peut pas contenir les caractères suivants : \\ / : * ? " < > |
+ Le nom du fichier est trop long
Transfert de fichiers
Recherche
Recherche de classes Java
Suiv
Recherche / Remplacement
Précé
+ Nom complet
Bouton flottant
Force stop
Service d\'avant-plan
@@ -522,6 +587,7 @@
Ignorer les optimisations de la batterie.
Ignorer les mises à jour
Importer
+ Importer une bibliothèque de couleurs
Importer un ou des scripts
Importation réussie
Importation vers \"mes scripts\"
@@ -545,6 +611,11 @@
Sauter au début de la ligne
Sauter pour commencer
Garder l\'écran allumé lorsqu\'il est au premier plan
+ Alias
+ Magasin de clés
+ Le magasin de clés a été vérifié
+ Le magasin de clés n\'a pas été vérifié
+ Mot de passe du magasin de clés
Étiquette
Dernière vérification: %s
Dernière activité
@@ -555,6 +626,7 @@
Inspecter la mise en page...
Licences Open Sources
Chargement...
+ Localiser la couleur du thème actuel
Journal
Logging in
Login
@@ -569,6 +641,7 @@
Gestion
Gestion du service d\'accessibilité
Gérer les mises à jour ignorées
+ Gérer le magasin de clés
Version minimale
Version minimale de l\'extension VSCode
\"Mobile QQ\" non installé
@@ -578,7 +651,10 @@
Options multiples
Nom
Nécessité d\'activer le service d\'accessibilité
+ Nouvelle bibliothèque de couleurs
Nouveau fichier
+ Nouvelle bibliothèque de couleurs intelligente
+ Générer une clé de signature
Nouveau chemin
Le nouveau chemin est identique à l\'ancien
Nouveau projet
@@ -613,26 +689,72 @@
Ouvrir avec
L\'opération est terminée
Options
+ Nom de l\'organisation
+ Unité organisationnelle
Développeur d\'origine
Autres
Chemin de sortie de l\'APK
Nom du paquet
+ Nom du paquet (en cours de calcul...)
Mot de passe
Le mot de passe ne peut pas être vide
+ Le mot de passe doit contenir au moins %d caractères
Coller
Le chemin est vide
Adresse du serveur du PC
+ Autoriser l\'application à accéder à une localisation approximative via le réseau
+ Autoriser l\'application à accéder à une localisation précise via le GPS
+ Autoriser l\'application à consulter l\'état de la connexion réseau
+ Autoriser l\'application à accéder à l\'état du Wi-Fi
+ Autoriser l\'application à envoyer une intention pour fermer les boîtes de dialogue système
+ Autoriser l\'application à capturer la sortie vidéo
+ Autoriser l\'application à vider les informations système
+ Autoriser l\'application à exécuter des services en premier plan
+ Autoriser l\'application à utiliser l\'enregistrement d\'écran et la projection multimédia dans des services en premier plan
+ Autoriser l\'application à effectuer des opérations spéciales dans des services en premier plan
Permission accordée
Fail to grant permission (with root)
L\'autorisation n\'a pas été accordée (avec Shizuku)
Permission accordée (avec root)
Permission accordée (avec Shizuku)
+ Autoriser l\'application à installer des raccourcis
+ Autoriser l\'application à interagir entre utilisateurs
+ Autoriser l\'application à accéder à Internet
+ Autoriser l\'application à gérer tous les fichiers dans le stockage externe
+ Autoriser l\'application à gérer les utilisateurs
+ Autoriser l\'application à accéder aux statistiques d\'utilisation d\'autres applications
+ Autoriser l\'application à afficher des notifications
+ Autoriser l\'application à interroger tous les packages
+ Autoriser l\'application à lire à partir du stockage externe
+ Autoriser l\'application à lire les fichiers audio depuis le stockage partagé
+ Autoriser l\'application à lire les fichiers image depuis le stockage partagé
+ Autoriser l\'application à lire les fichiers vidéo depuis le stockage partagé
+ Autoriser l\'application à lire l\'état du téléphone et l\'identité
+ Autoriser l\'application à accéder à toutes les informations de l\'état du téléphone
+ Autoriser l\'application à lire les SMS
+ Autoriser l\'application à recevoir une notification lorsque le démarrage du périphérique est terminé
+ Autoriser l\'application à enregistrer de l\'audio
+ Autoriser l\'application à réorganiser les tâches en cours d\'exécution
+ Autoriser l\'application à demander l\'ignorance des optimisations de la batterie
+ Autoriser l\'application à demander l\'installation d\'autres applications
Permission révoquée
Fail to revoked permission (with root).
Échec de la révocation de la permission (avec Shizuku)
Permission révoquée (avec root)
Permission révoquée (avec Shizuku)
+ Spécifique à l\'application Termux, autoriser l\'exécution de commandes
+ Autoriser l\'application à programmer des opérations précises dans le temps
+ Autoriser l\'application à interagir avec le système via le service Shizuku pour obtenir des autorisations élevées
+ Autoriser l\'application à s\'afficher au-dessus d\'autres applications
Test de permission
+ Autoriser l\'application à désinstaller des raccourcis
+ Autoriser l\'application à afficher un nombre illimité de notifications Toast
+ Autoriser l\'application à programmer des alarmes exactes ou des rappels d\'événements
+ Autoriser l\'application à contrôler la vibration du téléphone
+ Empêcher le téléphone de passer en mode veille
+ Autoriser l\'application à écrire dans le stockage externe
+ Autoriser l\'application à lire/écrire les paramètres sécurisés du système
+ Autoriser l\'application à modifier les paramètres système
Permissions
Permissions
L\'épinglage de raccourcis dans le lanceur n\'est pas pris en charge
@@ -722,6 +844,9 @@
Enregistrement de scripts
Script running
Recherche
+ Rechercher toutes les couleurs
+ Rechercher une couleur
+ Aide à la recherche
Select
Si le clip existe (exists)
Until find one (findOne)
@@ -731,7 +856,6 @@
Sélectionnez le fichier à télécharger
Sélectionner l\'icône
Sélectionner une image
- Utiliser l\'icône par défaut
Envoyer
Créer un raccourci
Mode serveur
@@ -746,6 +870,9 @@
Afficher les bords de la disposition
Afficher la hiérarchie de la disposition
Afficher les informations du widget
+ Algorithme de signature
+ Configuration de la signature
+ Schéma de signature
Taille
%d items exported
Chemin du code source
@@ -753,93 +880,17 @@
Star
Démarrer l\'enregistrement
Running
+ État ou province
Stop
+ Rue
+ Clé de signature créée avec succès
ABIs
ABIs (32-bit)
ABIs (64-bit)
Bibliothèques
- Configuration de la signature
- Magasin de clés
- Magasin de clés par défaut
- Gérer le magasin de clés
- Schéma de signature
- Générer une clé de signature
- Mot de passe du magasin de clés
- Alias
- Mot de passe de l\'alias
- Algorithme de signature
- Validité (années)
- Nom complet
- Nom de l\'organisation
- Unité organisationnelle
- Code du pays (XX)
- État ou province
- Ville ou localité
- Rue
- Le nom de fichier ne peut pas être vide
- Le nom du fichier ne peut pas contenir les caractères suivants : \\ / : * ? " < > |
- Le nom du fichier est trop long
- Le mot de passe doit contenir au moins %d caractères
- L\'alias ne peut pas être vide
- Les années de validité ne peuvent pas être vides
- Les années de validité ne peuvent pas être égales à zéro
- Le code du pays doit être composé de deux lettres majuscules
- Au moins un champ parmi « Nom complet, Nom de l\'organisation, Unité organisationnelle, Code du pays, État ou province, Ville ou localité, Rue » doit être renseigné
- Clé de signature créée avec succès
- Échec de la création de la clé de signature
- Le magasin de clés n\'a pas été vérifié
- Le magasin de clés a été vérifié
- Vérifier
- Tout supprimer
- Non vérifié
- Vérifié
- Vérifier le magasin de clés
- Vérification réussie
- Échec de la vérification
- Chemin du fichier
Autorisations nécessaires
- Autoriser l\'application à accéder à l\'état du Wi-Fi
- Autoriser l\'application à écrire dans le stockage externe
- Autoriser l\'application à lire à partir du stockage externe
- Autoriser l\'application à lire les fichiers image depuis le stockage partagé
- Autoriser l\'application à lire les fichiers vidéo depuis le stockage partagé
- Autoriser l\'application à lire les fichiers audio depuis le stockage partagé
- Autoriser l\'application à gérer tous les fichiers dans le stockage externe
- Autoriser l\'application à envoyer une intention pour fermer les boîtes de dialogue système
- Autoriser l\'application à accéder à toutes les informations de l\'état du téléphone
- Autoriser l\'application à installer des raccourcis
- Autoriser l\'application à désinstaller des raccourcis
- Autoriser l\'application à demander l\'installation d\'autres applications
- Empêcher le téléphone de passer en mode veille
- Autoriser l\'application à programmer des alarmes exactes ou des rappels d\'événements
- Autoriser l\'application à programmer des opérations précises dans le temps
- Autoriser l\'application à contrôler la vibration du téléphone
- Autoriser l\'application à accéder à Internet
- Autoriser l\'application à consulter l\'état de la connexion réseau
- Autoriser l\'application à s\'afficher au-dessus d\'autres applications
- Autoriser l\'application à réorganiser les tâches en cours d\'exécution
- Autoriser l\'application à demander l\'ignorance des optimisations de la batterie
- Autoriser l\'application à recevoir une notification lorsque le démarrage du périphérique est terminé
- Autoriser l\'application à afficher des notifications
- Autoriser l\'application à exécuter des services en premier plan
- Autoriser l\'application à utiliser l\'enregistrement d\'écran et la projection multimédia dans des services en premier plan
- Autoriser l\'application à effectuer des opérations spéciales dans des services en premier plan
- Autoriser l\'application à afficher un nombre illimité de notifications Toast
- Autoriser l\'application à capturer la sortie vidéo
- Autoriser l\'application à vider les informations système
- Autoriser l\'application à interroger tous les packages
- Autoriser l\'application à accéder aux statistiques d\'utilisation d\'autres applications
- Autoriser l\'application à modifier les paramètres système
- Autoriser l\'application à lire/écrire les paramètres sécurisés du système
- Autoriser l\'application à gérer les utilisateurs
- Autoriser l\'application à interagir entre utilisateurs
- Autoriser l\'application à accéder à une localisation approximative via le réseau
- Autoriser l\'application à accéder à une localisation précise via le GPS
- Autoriser l\'application à enregistrer de l\'audio
- Spécifique à l\'application Termux, autoriser l\'exécution de commandes
- Autoriser l\'application à lire l\'état du téléphone et l\'identité
- Autoriser l\'application à lire les SMS
- Autoriser l\'application à interagir avec le système via le service Shizuku pour obtenir des autorisations élevées
+ Passer à l\'ancienne disposition
+ Passer à la nouvelle disposition
Changer de fenêtre
Param des symboles
Développeur sur mesure
@@ -857,12 +908,13 @@
L\'ABI sélectionné \"%s\" ne peut pas être utilisé pour créer une application packagée, car la version actuelle d\'AutoJs6 n\'inclut pas l\'ABI ci-dessus.
Indisponible
L\'ABI \"%s\" n\'est pas disponible
+ En cours de développement
La fonctionnalité sera prête à être utilisée dans les prochaines mises à jour.
@string/text_under_development
- En cours de développement
Révoquer
Révoq
Inconnu
+ Non vérifié
Mises à jour
Mise à jour des états vérifiés et effacés
Plus tard
@@ -870,6 +922,7 @@
Utilisation de l\'accès aux statistiques
Donne accès à l\'historique et aux statistiques d\'utilisation du périphérique, ce qui donne à currentPackage() un résultat plus précis.
Utiliser le raccourci Android 7.0
+ Utiliser l\'icône par défaut
Utiliser la touche de réduction du volume pour contrôler l\'enregistrement.
Utilisez la touche \"Volume fort\" pour contrôler l\'exécution du script.
Nom d\'utilisateur
@@ -877,12 +930,22 @@
Utiliser le sélecteur desc
Utiliser le sélecteur d\'id
Utiliser le sélecteur de texte
+ Validité (années)
+ Les années de validité ne peuvent pas être vides
+ Les années de validité ne peuvent pas être égales à zéro
Valeur
Variable ou expression
+ Vérifié
+ Vérifier
+ Échec de la vérification
+ Vérifier le magasin de clés
+ Vérification réussie
Version
Code de version
+ Code de version (en cours de calcul...)
Informations de la version
Nom de la version
+ Nom de la version (en cours de calcul...)
Voir
Voir les documents
La version de l\'extension VSCode ne répond pas aux exigences
@@ -892,59 +955,5 @@
Écrire les paramètres de sécurité.
Paramètres de sécurité du système, contenant les préférences du système que les applications peuvent lire mais ne sont pas autorisées à écrire.\nIl s\'agit des préférences que l\'utilisateur doit explicitement modifier par le biais de l\'interface utilisateur d\'une application système.\nAvec l\'autorisation de paramètres de sécurité du système, les applications normales peuvent directement modifier les paramètres de sécurité (comme le service d\'accessibilité).
Écrire les paramètres système
- Default
- Nom du paquet (en cours de calcul...)
- Nom de la version (en cours de calcul...)
- Code de version (en cours de calcul...)
- File size
- Signature
- File info
- File extensions
- Hide all file extensions
- Show all file extensions
- Show file extensions (exclude *.js / *.auto)
- Used to set whether to show file extensions in AutoJs6 file explorer.
- Switch to new layout
- Switch to legacy layout
- Search color
- Locate current theme color
- New color library
- Color palette
- WEB color library
- CSS color library
- Android color library
- Material design color library
- Default color library
- Background light
- Background night
- Color library
- Default colors
- Material colors
- Android colors
- CSS colors
- WEB colors
- Material
- Default
- Custom
- Color palette
- Add a color library
- Import a color library
- New intelligent color library
- Clone a color library
- Intelligent color library
- Intelligent colors
- Intell.
- Palette
- Created
- Search all colors
- Palette
- Current theme color %1$s is configured by the color palette
- Failed to locate
- Failed to locate the color library for the theme color
- Failed to determine the index of the theme color item
- Color details
- Theme color details
- Search help
- Failed to render content
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index 16bc4ec0..34196f75 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -9,23 +9,48 @@
建築...
洗浄...
パッケージング...
- apk builder の非互換バージョン.\n今すぐダウンロードしますか?
+ apk builder の非互換バージョン.\n今すぐダウンロードしますか?
準備中...
デバイス SDK
+ ファイルサイズ
インストール済み
最大 SDK
最小 SDK
パッケージ
+ 署名方式
ターゲット SDK
UI スレッドでブロック操作は実行できません. `waitForActivity` をサブスレッドやサブスクリプトで実行するか, または `setInterval` を使用してチェックを繰り返してください
UI スレッドでブロック操作は実行できません. `waitForPackage` をサブスレッドやサブスクリプトで実行するか, または `setInterval` を使用してチェックを繰り返してください
+ Androidカラーパレット
+ CSSカラーパレット
+ デフォルトカラーパレット
+ 作成済み
+ @string/mt_custom
+ @string/text_default
+ Intell.
+ マテリアル
+ パレット
+ インテリジェントカラーパレット
+ マテリアルデザインカラーパレット
+ Androidカラー
+ CSSカラー
+ デフォルトカラー
+ インテリジェントカラー
+ マテリアルカラー
+ WEBカラー
+ WEBカラーパレット
+ ライト背景
+ ダーク背景
設定 \"abi\" に無効なオプションが含まれています
設定 \"abi\" に利用できないオプションが含まれています
設定 \"lib\" に無効なオプションが含まれています
設定 \"lib\" に利用できないオプションが含まれています
- ファイルはすでに存在します.\n上書きしますか?
+ ファイルはすでに存在します.\n上書きしますか?
1. ホーム画面でアプリケーション名 (AutoJs6) を長押しして, 設定画面にジャンプする\n2. 設定ページで特定の設定オプションを長押しすると, 詳細情報が表示されます
+ 現在のテーマカラー %1$s はカラーパレットで設定されています
マニフェストを表示するためのフローティング操作ボタン部品
+ テーマカラーアイテムのインデックスを特定できません
+ テーマカラーのカラーパレットが見つかりません
問題を報告するためのウェブページが起動します.\nGitHub のアカウントが必要な場合があります
回収したスクリプトの出力方法を選択する
デバッグログをコピーするか, 直接終了する
@@ -43,6 +68,7 @@
ローカルドキュメント AutoJs6 に組み込まれたファイルをドキュメントソースとして使用するため, ネットワーク接続は必要ありません. AutoJs6 が更新されると内容も変わります.\nオンライン・ドキュメント. GitHub のページをドキュメントソースとして使用し, ネットワーク接続が必要です. コンテンツは常に最新の状態に保たれます.\n\n注: オンラインドキュメントを最大限に活用するために, デスクトップモニターなどのワイドスクリーンディスプレイを使用することをお勧めします.\n注意: バージョン 6.2.0 時点では, ドキュメントはまだ開発の初期段階にあり, ほとんどのコンテンツはまだ執筆・更新されていません
ドキュメントページでダークテーマをサポートするには, 以下の条件を満たす必要があります.\n1. AutoJs6 でナイトモードが有効になっている\n2. Android System WebView (または Google Chrome などのブラウザ) .\n- Android API Level 29 (Android 10) [Q] 以上: バージョン >= 76\n- Android API Level 28 (Android 9) [P] 以下: バージョン >= 105
JavaScript の組み込みオブジェクトを拡張すると, コードの柔軟性が増し, より豊かな機能を実現できますが, 衝突や破損を引き起こす可能性もあります.\nこのオプションをオンにすると, すべてのスクリプトはデフォルトで組み込みの拡張機能を有効にします.\n組み込みの拡張機能は安全でないことが多いので, 組み込みの拡張機能の原理とリスクが明確に理解されていない限り, 推奨されません.\nこのオプションをオフにした場合でも, プロジェクトのドキュメントで説明されているように, plugins グローバルオブジェクトを使用して組み込み拡張機能を有効にすることができます
+ AutoJs6のファイルエクスプローラーでファイル拡張子を表示するかどうかの設定に使用されます。
AutoJs6 ファイルエクスプローラーで隠しファイルや隠しフォルダ (通常は「.」で始まる) を表示するかどうかを設定するために使用します
AutoJs6 がフォアグラウンドにあるとき, デバイスの画面をオンにして明るく保つための設定です.\nAutoJs6 アプリケーションの全ページのうち, ホームページでのみ使用する場合は, \"ホームページのみ\" オプションを選択します
ショートカットは, AutoJs6 で特定のアクションを実行することができます. ユーザーは, サポートされているランチャーにこれらのショートカットを表示し, AutoJs6 アプリケーションのドキュメントを読んだり, AutoJs6 の設定ページを起動したりするなど, いくつかのタスクを素早く開始したり, アクティビティを起動したりすることができます
@@ -56,6 +82,7 @@
@string/text_back
取消
取消
+ クリア
OK
@string/text_continue
@string/text_copy
@@ -63,10 +90,12 @@
詳細
削除
ブラウザ
+ ファイル情報
履歴
無視する
グループ参加
詳細
+ パレットを開く
終了する
削除
再試行
@@ -76,14 +105,20 @@
更新
デフォルトを使用
ファイルの表示
+ カラー詳細
+ カラーパレット
+ テーマカラー詳細
ファイルを処理できません
- 内容が保存されていませんので, 本当に終了しますか?
+ 内容が保存されていませんので, 本当に終了しますか?
システムに従ってください
ローカルドキュメント
オンラインドキュメント
文字サイズ
無効化
ズームビュー
+ すべてのファイル拡張子を隠す
+ すべてのファイル拡張子を表示する
+ 実行可能ファイル (*.js / *.auto を除く) の拡張子を表示する
「隠しファイルや隠しフォルダーを表示しない
隠しファイルや隠しフォルダーを表示する
全ページ
@@ -102,8 +137,8 @@
\"%1$s\" 操作はパラメータに負の座標値 (%2$d, %3$d) が含まれているため, 完了できません
UI 実行モードに必要なアクティビティが不足しています
操作が実装されていません
- \"%s\" アプリがインストールされていません
アプリがインストールされていません
+ \"%s\" アプリがインストールされていません
%2$s#%3$s の引数 %1$s を null 値にはできません
引数を空にできません
引数は空でなければなりません
@@ -134,6 +169,7 @@
AutoJs6 サーバーを有効にできません. %s
高さ超過: テンプレート [%1$d] > 領域 [%2$d]
幅が超過しています: テンプレート [%1$d] > 領域 [%2$d]
+ 現在のカラー履歴の適用に失敗しました
メソッド \"%s\" の呼び出しに失敗しました
値 %s を Drawable に変換するのに失敗しました
@@ -141,6 +177,7 @@
\"%s\" のインスタンス化に失敗しました
メソッド %1$s の呼び出しに失敗しました
+ コンテンツの表示に失敗しました
Shizuku 権限の取り消しに失敗しました
スクリプトの実行に失敗しました
パス \"%1$s\" にファイルが存在しません
@@ -157,6 +194,7 @@
画像は同じサイズでなければなりません
画像は同じサイズとタイプでなければなりません
入力フィールドのチェックに失敗
+ 無効な色
コンパスが無効です: %s
無効な GitHub リポジトリ: %s
無効な IP アドレス
@@ -226,6 +264,7 @@
実行」ボタン長押しでデバッグ
ループ前の遅延時間
無限ループの場合は 0
+ 最終使用時: %1$s
アルバム
アスペクト比
オーディオ
@@ -242,7 +281,7 @@
カスタム
APK Builder がインストールされていない
AutoJs6 にスクリプトを記録するためのルートアクセス権がない
- 現在のアップデートバージョンを無視して大丈夫ですか?\n無視したバージョンは, アプリの設定で管理することができます
+ 現在のアップデートバージョンを無視して大丈夫ですか?\n無視したバージョンは, アプリの設定で管理することができます
新しい設定を適用するには, アプリの再起動が必要です
言語を正しく適用するために, アプリの再起動が必要な場合があります
スクリーンキャプチャーのフォアグラウンドサービス
@@ -281,9 +320,14 @@
動作
APK インストーラーなし
ADB ツールが必要
+ カラーライブラリを追加
別名
+ エイリアスは空にできません
+ エイリアスのパスワード
全ファイルアクセス
携帯電話上のスクリプトファイルにアクセスするために, \"すべてのファイルへのアクセス\" が必要です
+ すべての履歴
+ すべての履歴がクリアされました
クリップボードにコピーされる
既にクリップボードにコピーされました (最新の %d アイテムのみ)
作成
@@ -327,6 +371,7 @@
アプリバージョンコード
アプリのバージョン名
外観
+ 「氏名、組織名、組織単位、国コード、州または省、市区町村、街」のいずれかの項目を入力する必要があります
属性
更新の自動チェック
自動的に更新をチェックし, ホームページにスナックバーを表示します
@@ -358,6 +403,7 @@
作業ディレクトリの変更
アップデートの確認
アップデートを確認中...
+ 市区町村
クラス名/パッケージ名
クリア
ファイル選択の解除
@@ -367,16 +413,22 @@
\"OK\" をクリックすると設定に進みます
頻繁に行う操作
クライアントモード
+ カラーライブラリを複製
閉じる
フローティングボタンを閉じる
コード
コードの美化
+ カラーライブラリ
+ カラーパレット
クリップボードにコピーされたコマンド
コメント
互換性
設定
- 本当に削除しますか?
- 本当に削除しますか?
+ すべての履歴をクリアしてもよろしいですか?
+ 以下の履歴がクリアされます\n\n[ %1$s ]\n\n本当にクリアしてもよろしいですか?
+ 以下の履歴がクリアされます\n\n[ すべてのカラーライブラリ ]\n\n本当にクリアしてもよろしいですか?
+ 本当に削除しますか?
+ 本当に削除しますか?
PC に接続する
接続が確立できない
コンソール
@@ -389,6 +441,8 @@
行をコピー
クリップボードにコピーする
値をコピーする
+ 国コード (XX)
+ 国コードは 2 文字の大文字でなければなりません
現在のバージョン
デイリータスク
日付
@@ -404,8 +458,11 @@
ステップイン
ステップアウト
ステップオーバー
+ デフォルト
+ デフォルトのキーストア
デフォルトのプレフィックス
削除
+ すべて削除
行削除
詳細
デベロッパーの詳細については, 現在開発中です
@@ -467,6 +524,7 @@
ビルドに失敗しました
コピーに失敗しました
作成に失敗しました
+ 署名キーの作成に失敗しました
削除の失敗
アクセシビリティ・サービスの無効化の失敗
ダウンロードの失敗
@@ -478,6 +536,7 @@
アクセス権の付与に失敗しました
他のアプリの上に表示する権限の付与に失敗しました
インポートに失敗しました
+ 見つかりませんでした
ログインに失敗しました
登録の失敗
投稿の失敗
@@ -487,15 +546,21 @@
ファイル
ファイルは既に存在しています
ファイルエクスプローラー
+ ファイル拡張子
ファイル名
ファイルが存在しません
+ ファイルパス
ファイル \"%1$s\" は実行可能なスクリプトではありません
+ ファイル名は空にできません
+ ファイル名に以下の文字を含めることはできません: \\ / : * ? " < > |
+ ファイル名が長すぎます
ファイルの転送
検索
Java クラスの検索
次へ
検索・置換
前へ
+ 氏名
フローティングボタン
強制停止
フォアグラウンドサービス
@@ -522,6 +587,7 @@
バッテリーの最適化を無視する
アップデートを無視する
インポート
+ カラーライブラリをインポート
インポートスクリプト
インポートに成功しました
インポート先: 作業ディレクトリ
@@ -545,6 +611,11 @@
行頭へジャンプ
開始位置へジャンプ
フォアグラウンドの時に画面を表示し続ける
+ エイリアス
+ キーストア
+ キーストアは確認されました
+ キーストアは確認されていません
+ キーストアのパスワード
ラベル
最終チェック: %s
最新の活動
@@ -555,6 +626,7 @@
レイアウトの検査中...
オープンソースライセンス
読み込み中...
+ 現在のテーマカラーを特定
ログ
ログイン
ログイン
@@ -569,6 +641,7 @@
管理画面
アクセシビリティサービスを管理する
無視されたアップデートの管理
+ キーストアを管理
最小バージョン
VSCode 拡張機能の最小バージョン
「モバイル QQ がインストールされていない
@@ -578,7 +651,10 @@
複数のオプション
名称
アクセシビリティサービスを有効にする必要があります
+ 新しいカラーパレット
新規ファイル
+ 新しいインテリジェントカラーパレット
+ 署名キーを生成
新しいパス
新しいパスが古いパスと同じ
新しいプロジェクト
@@ -613,26 +689,72 @@
で開く
操作が完了しました
オプション
+ 組織名
+ 組織単位
オリジナル開発者
その他
APK 出力パス
パッケージ名
+ パッケージ名 (計算中...)
パスワード
パスワードは空であってはならない
+ パスワードは少なくとも %d 文字以上である必要があります
貼り付け
パスが空です
PC サーバーのアドレス
+ アプリにネットワークを使用して粗い位置情報にアクセスする権限を与える
+ アプリに GPS を使用して正確な位置情報にアクセスする権限を与える
+ アプリにネットワーク接続状態を確認する権限を与える
+ アプリに Wi-Fi の状態へのアクセスを許可する
+ アプリにシステムダイアログを閉じるためのインテントを送信する権限を与える
+ アプリにビデオ出力をキャプチャする権限を与える
+ アプリにシステム情報をダンプする権限を与える
+ アプリにフォアグラウンドサービスを実行する権限を与える
+ アプリにフォアグラウンドサービス内で画面録画とメディアプロジェクションを使用する権限を与える
+ アプリにフォアグラウンドサービス内で特別な操作を行う権限を与える
権限付与
許可に失敗しました (root 権限)
許可に失敗しました (Shizuku を使用)
許可された (root で)
権限が付与されました (Shizuku を使用)
+ アプリにショートカットのインストールを許可する
+ アプリにユーザー間でのインタラクションを許可する
+ アプリにインターネットにアクセスする権限を与える
+ アプリに外部ストレージ内のすべてのファイルを管理する権限を与える
+ アプリにユーザー管理を行う権限を与える
+ アプリに他のアプリの使用統計情報にアクセスする権限を与える
+ アプリに通知を表示する権限を与える
+ アプリにすべてのパッケージをクエリする権限を与える
+ アプリに外部ストレージからの読み取りを許可する
+ アプリに共有ストレージから音声ファイルの読み取りを許可する
+ アプリに共有ストレージから画像ファイルの読み取りを許可する
+ アプリに共有ストレージから動画ファイルの読み取りを許可する
+ アプリに電話の状態と ID を読み取る権限を与える
+ アプリにすべての電話状態情報にアクセスする権限を与える
+ アプリに SMS を読み取る権限を与える
+ アプリにデバイス起動完了の通知を受け取る権限を与える
+ アプリに音声を録音する権限を与える
+ アプリに実行中のタスクを再配置する権限を与える
+ アプリにバッテリー最適化を無視するように要求する権限を与える
+ アプリに他のアプリのインストールを要求する権限を与える
許可取り消し
権限の取り消しに失敗しました (ルート)
許可取り消しに失敗しました (Shizuku を使用)
(root で) 権限が取り消された
許可が取り消されました (Shizuku を使用)
+ Termux アプリに特化したコマンド実行権限を与える
+ アプリに時間精度のある操作をスケジュールする権限を与える
+ アプリに Shizuku サービスを通じてシステムと高い権限でインタラクションする権限を与える
+ アプリに他のアプリの上に表示する権限を与える
許可テスト
+ アプリにショートカットのアンインストールを許可する
+ アプリに無制限の Toast 通知を表示する権限を与える
+ アプリに正確なアラームやイベントリマインダーを設定する権限を与える
+ アプリに電話の振動を制御する権限を与える
+ アプリに電話をスリープ状態にしないようにする権限を与える
+ アプリに外部ストレージへの書き込みを許可する
+ アプリにシステムのセキュア設定を読み書きする権限を与える
+ アプリにシステム設定を変更する権限を与える
許可
許可リスト
ショートカットをランチャーにピン留めすることはサポートされていません
@@ -722,6 +844,9 @@
スクリプトの記録
スクリプトの実行
検索
+ すべての色を検索
+ 色を検索
+ 検索ヘルプ
選択
クリップが存在する場合 (exists)
1 つ見つけるまで (findOne)
@@ -731,7 +856,6 @@
アップロードするファイルを選択します
アイコンを選択する
画像を選択する
- デフォルトのアイコンを使用する
送信する
ショートカットの作成
サーバーモード
@@ -746,6 +870,9 @@
レイアウト境界内のビュー
レイアウト階層内の表示
ウィジェット情報を表示する
+ 署名アルゴリズム
+ 署名設定
+ 署名スキーム
サイズ
エクスポートされた項目 %d
ソースコードのパス
@@ -753,93 +880,17 @@
スター
記録開始
実行中
+ 州または省
停止
+ 街
+ 署名キーが正常に作成されました
ABI
ABI (32 ビット)
ABI (64 ビット)
ライブラリー
- 署名設定
- キーストア
- デフォルトのキーストア
- キーストアを管理
- 署名スキーム
- 署名キーを生成
- キーストアのパスワード
- エイリアス
- エイリアスのパスワード
- 署名アルゴリズム
- 有効期限(年)
- 氏名
- 組織名
- 組織単位
- 国コード (XX)
- 州または省
- 市区町村
- 街
- ファイル名は空にできません
- ファイル名に以下の文字を含めることはできません: \\ / : * ? " < > |
- ファイル名が長すぎます
- パスワードは少なくとも %d 文字以上である必要があります
- エイリアスは空にできません
- 有効期限の年数は空にできません
- 有効期限の年数は 0 にできません
- 国コードは 2 文字の大文字でなければなりません
- 「氏名、組織名、組織単位、国コード、州または省、市区町村、街」のいずれかの項目を入力する必要があります
- 署名キーが正常に作成されました
- 署名キーの作成に失敗しました
- キーストアは確認されていません
- キーストアは確認されました
- 確認
- すべて削除
- 未確認
- 確認済み
- キーストアを確認
- 確認成功
- 確認失敗
- ファイルパス
必要な権限
- アプリに Wi-Fi の状態へのアクセスを許可する
- アプリに外部ストレージへの書き込みを許可する
- アプリに外部ストレージからの読み取りを許可する
- アプリに共有ストレージから画像ファイルの読み取りを許可する
- アプリに共有ストレージから動画ファイルの読み取りを許可する
- アプリに共有ストレージから音声ファイルの読み取りを許可する
- アプリに外部ストレージ内のすべてのファイルを管理する権限を与える
- アプリにシステムダイアログを閉じるためのインテントを送信する権限を与える
- アプリにすべての電話状態情報にアクセスする権限を与える
- アプリにショートカットのインストールを許可する
- アプリにショートカットのアンインストールを許可する
- アプリに他のアプリのインストールを要求する権限を与える
- アプリに電話をスリープ状態にしないようにする権限を与える
- アプリに正確なアラームやイベントリマインダーを設定する権限を与える
- アプリに時間精度のある操作をスケジュールする権限を与える
- アプリに電話の振動を制御する権限を与える
- アプリにインターネットにアクセスする権限を与える
- アプリにネットワーク接続状態を確認する権限を与える
- アプリに他のアプリの上に表示する権限を与える
- アプリに実行中のタスクを再配置する権限を与える
- アプリにバッテリー最適化を無視するように要求する権限を与える
- アプリにデバイス起動完了の通知を受け取る権限を与える
- アプリに通知を表示する権限を与える
- アプリにフォアグラウンドサービスを実行する権限を与える
- アプリにフォアグラウンドサービス内で画面録画とメディアプロジェクションを使用する権限を与える
- アプリにフォアグラウンドサービス内で特別な操作を行う権限を与える
- アプリに無制限の Toast 通知を表示する権限を与える
- アプリにビデオ出力をキャプチャする権限を与える
- アプリにシステム情報をダンプする権限を与える
- アプリにすべてのパッケージをクエリする権限を与える
- アプリに他のアプリの使用統計情報にアクセスする権限を与える
- アプリにシステム設定を変更する権限を与える
- アプリにシステムのセキュア設定を読み書きする権限を与える
- アプリにユーザー管理を行う権限を与える
- アプリにユーザー間でのインタラクションを許可する
- アプリにネットワークを使用して粗い位置情報にアクセスする権限を与える
- アプリに GPS を使用して正確な位置情報にアクセスする権限を与える
- アプリに音声を録音する権限を与える
- Termux アプリに特化したコマンド実行権限を与える
- アプリに電話の状態と ID を読み取る権限を与える
- アプリに SMS を読み取る権限を与える
- アプリに Shizuku サービスを通じてシステムと高い権限でインタラクションする権限を与える
+ 従来のレイアウトに切り替え
+ 新しいレイアウトに切り替え
ウィンドウの切り替え
シンボル設定
テーラーメイド開発者
@@ -857,12 +908,13 @@
現在のバージョンの AutoJs6 には上記の ABI が含まれていないため, 選択した ABI \"%s\" を使用してパッケージ・アプリケーションを作成できません
使用できません
ABI \"%s\" は使用できません
+ 開発中
この機能は, 次の数回のアップデートで使用できるようになる予定です
@string/text_under_development
- 開発中
元に戻す
戻る
不明
+ 未確認
アップデート
更新のチェック状態を解除
後日
@@ -870,6 +922,7 @@
使用統計へのアクセス
デバイスの使用履歴や統計情報にアクセスできるようになり, currentPackage()の結果がより正確になります
Android 7.0 のショートカットを使用
+ デフォルトのアイコンを使用する
\"Volume Down\" キーで録音を制御
\"Volume Up\" キーでスクリプトの実行を制御します
ユーザー名
@@ -877,12 +930,22 @@
降順セレクタを使用する
ID セレクタを使用する
テキストセレクタを使用する
+ 有効期限(年)
+ 有効期限の年数は空にできません
+ 有効期限の年数は 0 にできません
値
変数または式
+ 確認済み
+ 確認
+ 確認失敗
+ キーストアを確認
+ 確認成功
バージョン
バージョンコード
+ バージョンコード (計算中...)
バージョン情報
バージョン名
+ バージョン名 (計算中...)
表示
ドキュメントを見る
VSCode 拡張機能のバージョンが要件を満たしていない
@@ -892,59 +955,5 @@
セキュリティ設定の書き込み
アプリケーションが読み取ることはできるが, 書き込むことはできないシステム環境設定を含む, 安全なシステム設定です.\nこれは, ユーザーがシステムアプリの UI を通じて明示的に変更する必要がある環境設定のためのものです.\nセキュアなシステム設定を許可すると, 通常のアプリケーションはセキュアな設定 (アクセシビリティサービスなど) を直接変更できるようになります
システム設定の書き込み
- デフォルト
- パッケージ名 (計算中...)
- バージョン名 (計算中...)
- バージョンコード (計算中...)
- File size
- Signature
- File info
- File extensions
- Hide all file extensions
- Show all file extensions
- Show file extensions (exclude *.js / *.auto)
- Used to set whether to show file extensions in AutoJs6 file explorer.
- Switch to new layout
- Switch to legacy layout
- Search color
- Locate current theme color
- New color library
- Color palette
- WEB color library
- CSS color library
- Android color library
- Material design color library
- Default color library
- Background light
- Background night
- Color library
- Default colors
- Material colors
- Android colors
- CSS colors
- WEB colors
- Material
- Default
- Custom
- Color palette
- Add a color library
- Import a color library
- New intelligent color library
- Clone a color library
- Intelligent color library
- Intelligent colors
- Intell.
- Palette
- Created
- Search all colors
- Palette
- Current theme color %1$s is configured by the color palette
- Failed to locate
- Failed to locate the color library for the theme color
- Failed to determine the index of the theme color item
- Color details
- Theme color details
- Search help
- Failed to render content
diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml
index cc39ff92..fa97d19a 100644
--- a/app/src/main/res/values-ko/strings.xml
+++ b/app/src/main/res/values-ko/strings.xml
@@ -13,20 +13,45 @@
\"APK Builder\" 의 호환되지 않는 버전.\n지금 다운로드 하시겠습니까?
준비...
디바이스 SDK
+ 파일 크기
설치됨
최대 SDK
최소 SDK
패키지
+ 서명 방식
대상 SDK
UI 스레드에서 블로킹 작업을 수행할 수 없습니다. `waitForActivity` 를 하위 스레드나 하위 스크립트에서 실행하거나, `setInterval` 를 사용하여 활동을 확인하기 위해 루프를 사용해 보세요
UI 스레드에서 블로킹 작업을 수행할 수 없습니다. `waitForPackage` 를 하위 스레드나 하위 스크립트에서 실행하거나, `setInterval` 를 사용하여 패키지를 확인하기 위해 루프를 사용해 보세요
+ Android 색상 라이브러리
+ CSS 색상 라이브러리
+ 기본 색상 라이브러리
+ 생성됨
+ @string/mt_custom
+ @string/text_default
+ Intell.
+ 머티리얼
+ 팔레트
+ 인텔리전트 색상 라이브러리
+ 머티리얼 디자인 색상 라이브러리
+ Android 색상
+ CSS 색상
+ 기본 색상
+ 인텔리전트 색상
+ 머티리얼 색상
+ WEB 색상
+ WEB 색상 라이브러리
+ 라이트 배경
+ 다크 배경
설정 \"abi\" 에 잘못된 옵션이 포함되어 있습니다
설정 \"abi\" 에 사용할 수 없는 옵션이 포함되어 있습니다
설정 \"lib\" 에 잘못된 옵션이 포함되어 있습니다
설정 \"lib\" 에 사용할 수 없는 옵션이 포함되어 있습니다
존재하는 파일입니다.\n덮어 쓰기?
1. 홈 페이지에서 애플리케이션 이름 (AutoJs6) 을 길게 눌러 설정 페이지로 이동합니다.\n2. 설정 페이지에서 특정 설정 옵션을 길게 누르면 자세한 정보를 볼 수 있습니다.
+ 현재 테마 색상 %1$s 는 색상 팔레트로 설정되어 있습니다
매니페스트를 표시하기 위한 플로팅 액션 버튼 위젯
+ 테마 색상 아이템의 인덱스를 확인할 수 없습니다
+ 테마 색상에 대한 색상 라이브러리를 찾을 수 없습니다
문제를보고하기 위해 웹 페이지가 시작됩니다.\nGitHub 에 대한 계정이 필요할 수 있습니다.
재설계된 스크립트의 출력 방법 선택
디버깅 로그를 복사하거나 직접 종료하십시오
@@ -44,6 +69,7 @@
로컬 문서: AutoJs6 내장 파일을 문서 소스로 사용, 네트워크 연결이 필요하지 않습니다. 내용은 AutoJs6 이 업데이트됨에 따라 변경됩니다.\n온라인 문서: GitHub 페이지를 문서 소스로 사용, 네트워크 연결 필요. 콘텐츠는 항상 최신 상태입니다.\n\n참고: 온라인 문서의 읽기 환경을 최대화하려면 데스크탑 모니터와 같은 와이드 스크린 디스플레이 장치를 사용하는 것이 좋습니다.\n참고: 버전 6.2.0 현재 문서는 아직 개발 초기 단계이며 대부분의 콘텐츠가 아직 작성되거나 업데이트되지 않았습니다.
문서 페이지에서 어두운 테마를 지원하려면 다음 조건이 충족되어야 합니다.\n1. AutoJs6 에는 야간 모드가 활성화되어 있습니다.\n2. Android 시스템 WebView (또는 Google Chrome 과 같은 브라우저):\n- Android API 레벨 29 (Android 10) [Q] 이상: 버전 >= 76\n- Android API 레벨 28 (Android 9) [P] 이하: 버전 >= 105
JavaScript 내장 개체를 확장하면 코드 유연성이 향상되고 더 풍부한 기능을 사용할 수 있지만 충돌이 발생하고 파손될 수도 있습니다.\n옵션이 켜져 있을 때 모든 스크립트에는 기본적으로 활성화된 내장 확장이 있습니다.\n기본 제공 확장은 종종 안전하지 않으며 기본 제공 확장의 원칙과 위험을 명확하게 이해하지 않는 한 권장되지 않습니다.\n옵션이 꺼져 있어도 프로젝트 문서에 설명된 대로 플러그인 전역 개체를 통해 내장 확장을 계속 활성화할 수 있습니다.
+ AutoJs6 파일 탐색기에서 파일 확장자 표시 여부를 설정하는 데 사용됩니다.
AutoJs6 파일 탐색기에서 숨겨진 파일 및 폴더(보통 \".\" 로 시작)를 표시할지 여부를 설정하는 데 사용됩니다.
AutoJs6 이 포그라운드에 있을 때 장치의 화면을 켜고 밝게 유지하기 위한 기본 설정입니다.\nAutoJs6 애플리케이션의 모든 페이지 중 홈페이지에서만 발생하도록 하려면 \"홈페이지만\" 옵션을 선택합니다.
바로가기는 AutoJs6 에서 특정 작업을 수행할 수 있습니다. 사용자는 지원되는 런처에 이러한 바로가기를 표시하고 AutoJs6 애플리케이션 문서 읽기, AutoJs6 설정 페이지 실행 등과 같은 일부 작업을 빠르게 시작하거나 활동을 실행할 수 있습니다.
@@ -57,6 +83,7 @@
@string/text_back
취소
취소
+ 지우기
확인
@string/text_continue
@string/text_copy
@@ -64,10 +91,12 @@
세부
Dismiss
브라우저
+ 파일 정보
역사
무시하다
그룹 가입
더
+ 팔레트 열기
그만두다
제거하다
다시 해 보다
@@ -77,6 +106,9 @@
업데이트
기본값을 사용하십시오
파일 보기
+ 색상 세부정보
+ 색상 팔레트
+ 테마 색상 세부정보
파일을 처리 할 수 없습니다
콘텐츠가 저장되지 않았습니다. 나가시겠습니까?
시스템을 따르십시오
@@ -85,6 +117,9 @@
텍스트 크기 변경
장애를 입히다
스케일 보기
+ 모든 파일 확장자 숨기기
+ 모든 파일 확장자 표시
+ 실행 파일 (*.js / *.auto 제외) 파일 확장자 표시
숨겨진 파일이나 폴더를 표시하지 마십시오
숨겨진 파일과 폴더를 표시하십시오
모든 페이지
@@ -103,8 +138,8 @@
매개 변수에 음수 좌표 값 (%2$d, %3$d)이 포함되어 있으므로 \"%1$s\" 작업을 완료할 수 없습니다
UI 실행 모드를 위한 활동이 필요합니다
작업이 구현되지 않았습니다
- 앱이 설치되지 않았습니다: \"%s\"
앱이 설치되지 않았습니다
+ 앱이 설치되지 않았습니다: \"%s\"
%2$s#%3$s 에 대한 인수 %1$s 는 null 값을 가질 수 없습니다
인수를 비울 수 없습니다
인수는 비어 있어야 합니다
@@ -135,6 +170,7 @@
AutoJs6 서버를 활성화 할 수 없습니다: %s
높이 초과: 템플릿 [%1$d] > 영역 [%2$d]
너비 초과: 템플릿 [%1$d] > 영역 [%2$d]
+ 현재 색상 기록 적용에 실패했습니다
메서드 \"%s\"를 호출하지 못했습니다
%s 값을 Drawable 로 변환하지 못했습니다
@@ -142,6 +178,7 @@
\"%s\" 인스턴스 생성에 실패했습니다
메소드 %1$s 호출에 실패했습니다
+ 콘텐츠 렌더링에 실패했습니다
Shizuku 권한 해지에 실패했습니다
스크립트 실행 실패
경로 \"%1$s\" 에 파일이 존재하지 않습니다
@@ -158,6 +195,7 @@
이미지의 크기가 같아야 합니다
이미지는 같은 크기와 유형이어야 합니다
입력 필드 확인 실패
+ 잘못된 색상
잘못된 나침반: %s
유효하지 않은 GitHub 저장소: %s
잘못된 IP 주소
@@ -227,6 +265,7 @@
\"실행\" 버튼을 긴 클릭하여 디버그를 클릭하십시오
루프 전 지연
무한 루프의 경우 0
+ 최종 사용: %1$s
앨범
종횡비
오디오
@@ -282,9 +321,14 @@
동작
APK 설치 프로그램이 없습니다
ADB 도구가 필요합니다
+ 색상 라이브러리 추가
별칭
+ 별칭은 비워둘 수 없습니다
+ 별칭 비밀번호
모든 파일에 액세스합니다
\"모든 파일 액세스\"는 전화기의 스크립트 파일에 액세스하려면 필요합니다.
+ 모든 기록
+ 모든 기록이 삭제되었습니다
클립 보드에 복사
클립보드에 이미 복사되었습니다(최신 %d 항목만)
만들어진
@@ -328,6 +372,7 @@
앱 버전 코드
앱 버전 이름
모습
+ "성명, 조직명, 조직 단위, 국가 코드, 주 또는 도, 시 또는 지역, 거리" 중 하나 이상을 입력해야 합니다
기인하다
자동 확인 업데이트
자동으로 업데이트를 확인하고 홈페이지에 스낵바를 표시합니다.
@@ -359,6 +404,7 @@
작업 디렉토리를 변경하십시오
업데이트 확인
업데이트 확인 ...
+ 시 또는 지역
클래스 / 패키지 이름
분명한
파일 선택을 지우십시오
@@ -368,14 +414,20 @@
\"확인\"을 클릭하여 설정으로 이동하십시오
빈번한 작동
클라이언트 모드
+ 색상 라이브러리 복제
닫다
플로팅 버튼 닫기
암호
코드를 아름답게하십시오
+ 색상 라이브러리
+ 색상 팔레트
클립 보드에 복사 된 명령
논평
호환성
구성
+ 모든 기록을 삭제하시겠습니까?
+ 다음 기록들이 삭제됩니다\n\n[ %1$s ]\n\n정말 삭제하시겠습니까?
+ 다음 기록들이 삭제됩니다\n\n[ 모든 색상 라이브러리 ]\n\n정말 삭제하시겠습니까?
삭제 하시겠습니까?
제거 하시겠습니까?
PC 에 연결하십시오
@@ -390,6 +442,8 @@
사본 라인
클립 보드에 복사
값을 복사하십시오
+ 국가 코드 (XX)
+ 국가 코드는 두 개의 대문자로 입력해야 합니다
현재 버전
일상적인 작업
날짜
@@ -405,8 +459,11 @@
들어가십시오
나가
한 걸음 더
+ 기본
+ 기본 키 저장소
기본 접두사
삭제
+ 모두 삭제
라인 삭제
세부
개발자 세부 사항이 개발 중입니다
@@ -468,6 +525,7 @@
건축에 실패했습니다
복사하지 못했습니다
만들지 못했습니다
+ 서명 키 생성에 실패했습니다
삭제하지 못했습니다
접근성 서비스를 비활성화하지 못했습니다
다운로드하지 못했습니다
@@ -479,6 +537,7 @@
액세스 권한을 부여하지 못했습니다
다른 앱 권한을 통해 디스플레이를 부여하지 못했습니다
가져 오지 못했습니다
+ 찾을 수 없음
로그인 실패
등록하지 못했습니다
제출하지 못했습니다
@@ -488,15 +547,21 @@
파일
존재하는 파일입니다
파일 탐색기
+ 파일 확장자
파일 이름
파일이 존재하지 않는다
+ 파일 경로
\"%1$s\" 파일은 실행 가능한 스크립트가 아닙니다
+ 파일 이름은 비워둘 수 없습니다
+ 파일 이름에 다음 문자를 포함할 수 없습니다: \\ / : * ? " < > |
+ 파일 이름이 너무 깁니다
파일 전송
찾다
Java 클래스를 찾으십시오
다음을
찾기 / 교체
이전을
+ 성명
플로팅 버튼
강제 정지
전경 서비스
@@ -523,6 +588,7 @@
배터리 최적화를 무시합니다
업데이트를 무시했습니다
수입
+ 색상 라이브러리 가져오기
스크립트 가져 오기
수입이 성공했습니다
\"내 스크립트\"로 가져 오기
@@ -546,6 +612,11 @@
라인 시작으로 이동하십시오
시작으로 점프하십시오
포그라운드에 있을 때 화면을 켜두세요
+ 별칭
+ 키 저장소
+ 키 저장소가 확인되었습니다
+ 키 저장소가 확인되지 않았습니다
+ 키 저장소 비밀번호
이름
마지막으로 확인 된: %s
최신 활동
@@ -556,6 +627,7 @@
레이아웃 검사 ...
오픈 소스 라이센스
로딩 중...
+ 현재 테마 색상 찾기
통나무
로그인
로그인
@@ -570,6 +642,7 @@
관리하다
접근성 서비스를 관리합니다
무시 된 업데이트를 관리합니다
+ 키 저장소 관리
최소 버전
VSCode 확장의 최소 버전
\"모바일 QQ\" 가 설치되지 않았습니다
@@ -579,7 +652,10 @@
여러 옵션
이름
접근성 서비스를 활성화해야합니다
+ 새 색상 라이브러리
새로운 파일
+ 새 인텔리전트 색상 라이브러리
+ 서명 키 생성
새로운 길
새로운 경로는 오래된 경로와 동일합니다
새로운 과제
@@ -614,26 +690,72 @@
함께 열립니다
작동이 완료되었습니다
옵션
+ 조직명
+ 조직 단위
원래 개발자
기타
APK 출력 경로
패키지 이름
+ 패키지 이름 (계산 중...)
비밀번호
비밀번호가 비어질 수 없다
+ 비밀번호는 최소 %d 자 이상이어야 합니다
반죽
경로는 비어 있습니다
PC 서버 주소
+ 앱이 네트워크를 통해 대략적인 위치에 접근할 수 있도록 허용
+ 앱이 GPS 를 통해 정확한 위치에 접근할 수 있도록 허용
+ 앱이 네트워크 상태를 확인할 수 있도록 허용
+ 앱이 Wi-Fi 상태에 접근할 수 있도록 허용
+ 앱이 시스템 대화상자를 닫기 위한 인텐트를 보낼 수 있도록 허용
+ 앱이 비디오 출력을 캡처할 수 있도록 허용
+ 앱이 시스템 정보를 덤프할 수 있도록 허용
+ 앱이 포그라운드 서비스를 실행할 수 있도록 허용
+ 앱이 포그라운드 서비스에서 화면 캡처와 미디어 투영 기능을 사용할 수 있도록 허용
+ 앱이 포그라운드 서비스에서 특별한 작업을 수행할 수 있도록 허용
허가가 부여되었습니다
허가를 부여하지 못했습니다 (루트 포함)
권한을 부여하지 못함 (Shizuku 사용)
부여 된 권한 (루트 포함)
권한 부여됨 (Shizuku 사용)
+ 앱이 바로가기를 설치할 수 있도록 허용
+ 앱이 사용자 간 상호작용을 할 수 있도록 허용
+ 앱이 인터넷에 접근할 수 있도록 허용
+ 앱이 외부 저장소의 모든 파일을 관리할 수 있도록 허용
+ 앱이 사용자 관리를 할 수 있도록 허용
+ 앱이 다른 앱의 사용 통계를 볼 수 있도록 허용
+ 앱이 알림을 게시할 수 있도록 허용
+ 앱이 모든 패키지를 쿼리할 수 있도록 허용
+ 앱이 외부 저장소를 읽을 수 있도록 허용
+ 앱이 공유 저장소의 오디오 파일을 읽을 수 있도록 허용
+ 앱이 공유 저장소의 이미지 파일을 읽을 수 있도록 허용
+ 앱이 공유 저장소의 비디오 파일을 읽을 수 있도록 허용
+ 앱이 전화 상태 및 신원을 읽을 수 있도록 허용
+ 앱이 모든 전화 상태 정보를 읽을 수 있도록 허용
+ 앱이 SMS 를 읽을 수 있도록 허용
+ 앱이 장치 부팅 완료 시 브로드캐스트를 받을 수 있도록 허용
+ 앱이 오디오를 녹음할 수 있도록 허용
+ 앱이 실행 중인 작업을 재배치할 수 있도록 허용
+ 앱이 배터리 최적화를 무시하도록 요청할 수 있도록 허용
+ 앱이 다른 앱 설치를 요청할 수 있도록 허용
허가가 취소되었습니다
허가를 철회하지 못했습니다 (루트 포함)
권한을 취소하지 못했습니다 (Shizuku 사용)
허가가 취소되었습니다 (루트 포함)
권한 취소됨 (Shizuku 사용)
+ Termux 앱에 대해 명령을 실행할 수 있도록 허용
+ 앱이 시간 정확한 작업을 예약할 수 있도록 허용
+ 앱이 Shizuku 서비스를 통해 시스템과 상호작용할 수 있도록 허용
+ 앱이 다른 앱 위에 표시될 수 있도록 허용
파마 테스트
+ 앱이 바로가기를 삭제할 수 있도록 허용
+ 앱이 무제한으로 Toast 알림을 표시할 수 있도록 허용
+ 앱이 정확한 알람이나 이벤트 알림을 설정할 수 있도록 허용
+ 앱이 전화기 진동을 제어할 수 있도록 허용
+ 앱이 전화기를 절전 모드로 진입하지 않도록 방지
+ 앱이 외부 저장소에 쓸 수 있도록 허용
+ 앱이 시스템 보안 설정을 읽고 쓸 수 있도록 허용
+ 앱이 시스템 설정을 수정할 수 있도록 허용
권한
권한 목록
런처에 바로가기를 고정하는 것은 지원되지 않습니다
@@ -723,6 +845,9 @@
스크립트 녹음
스크립트 실행
검색
+ 모든 색상 검색
+ 색상 검색
+ 검색 도움말
고르다
클립이 존재하는 경우 (exists)
하나를 찾을 때까지 (findOne)
@@ -732,7 +857,6 @@
업로드 할 파일을 선택하십시오
아이콘을 선택하십시오
이미지를 선택하십시오
- 기본 아이콘 사용
보내다
바로 가기를 만듭니다
서버 모드
@@ -747,6 +871,9 @@
레이아웃 경계보기
레이아웃 계층 구조보기
위젯 정보를 보여줍니다
+ 서명 알고리즘
+ 서명 설정
+ 서명 스킴
크기
내보낸 %d 항목
소스 코드 경로
@@ -754,93 +881,17 @@
별
녹음을 시작하십시오
달리기
+ 주 또는 도
중지
+ 거리
+ 서명 키가 성공적으로 생성되었습니다
ABI
ABI (32 비트)
ABI (64 비트)
라이브러리
- 서명 설정
- 키 저장소
- 기본 키 저장소
- 키 저장소 관리
- 서명 스킴
- 서명 키 생성
- 키 저장소 비밀번호
- 별칭
- 별칭 비밀번호
- 서명 알고리즘
- 유효 기간 (년)
- 성명
- 조직명
- 조직 단위
- 국가 코드 (XX)
- 주 또는 도
- 시 또는 지역
- 거리
- 파일 이름은 비워둘 수 없습니다
- 파일 이름에 다음 문자를 포함할 수 없습니다: \\ / : * ? " < > |
- 파일 이름이 너무 깁니다
- 비밀번호는 최소 %d 자 이상이어야 합니다
- 별칭은 비워둘 수 없습니다
- 유효 기간을 입력해야 합니다
- 유효 기간은 0 일 수 없습니다
- 국가 코드는 두 개의 대문자로 입력해야 합니다
- "성명, 조직명, 조직 단위, 국가 코드, 주 또는 도, 시 또는 지역, 거리" 중 하나 이상을 입력해야 합니다
- 서명 키가 성공적으로 생성되었습니다
- 서명 키 생성에 실패했습니다
- 키 저장소가 확인되지 않았습니다
- 키 저장소가 확인되었습니다
- 확인
- 모두 삭제
- 미확인
- 확인됨
- 키 저장소 확인
- 확인 성공
- 확인 실패
- 파일 경로
필요한 권한
- 앱이 Wi-Fi 상태에 접근할 수 있도록 허용
- 앱이 외부 저장소에 쓸 수 있도록 허용
- 앱이 외부 저장소를 읽을 수 있도록 허용
- 앱이 공유 저장소의 이미지 파일을 읽을 수 있도록 허용
- 앱이 공유 저장소의 비디오 파일을 읽을 수 있도록 허용
- 앱이 공유 저장소의 오디오 파일을 읽을 수 있도록 허용
- 앱이 외부 저장소의 모든 파일을 관리할 수 있도록 허용
- 앱이 시스템 대화상자를 닫기 위한 인텐트를 보낼 수 있도록 허용
- 앱이 모든 전화 상태 정보를 읽을 수 있도록 허용
- 앱이 바로가기를 설치할 수 있도록 허용
- 앱이 바로가기를 삭제할 수 있도록 허용
- 앱이 다른 앱 설치를 요청할 수 있도록 허용
- 앱이 전화기를 절전 모드로 진입하지 않도록 방지
- 앱이 정확한 알람이나 이벤트 알림을 설정할 수 있도록 허용
- 앱이 시간 정확한 작업을 예약할 수 있도록 허용
- 앱이 전화기 진동을 제어할 수 있도록 허용
- 앱이 인터넷에 접근할 수 있도록 허용
- 앱이 네트워크 상태를 확인할 수 있도록 허용
- 앱이 다른 앱 위에 표시될 수 있도록 허용
- 앱이 실행 중인 작업을 재배치할 수 있도록 허용
- 앱이 배터리 최적화를 무시하도록 요청할 수 있도록 허용
- 앱이 장치 부팅 완료 시 브로드캐스트를 받을 수 있도록 허용
- 앱이 알림을 게시할 수 있도록 허용
- 앱이 포그라운드 서비스를 실행할 수 있도록 허용
- 앱이 포그라운드 서비스에서 화면 캡처와 미디어 투영 기능을 사용할 수 있도록 허용
- 앱이 포그라운드 서비스에서 특별한 작업을 수행할 수 있도록 허용
- 앱이 무제한으로 Toast 알림을 표시할 수 있도록 허용
- 앱이 비디오 출력을 캡처할 수 있도록 허용
- 앱이 시스템 정보를 덤프할 수 있도록 허용
- 앱이 모든 패키지를 쿼리할 수 있도록 허용
- 앱이 다른 앱의 사용 통계를 볼 수 있도록 허용
- 앱이 시스템 설정을 수정할 수 있도록 허용
- 앱이 시스템 보안 설정을 읽고 쓸 수 있도록 허용
- 앱이 사용자 관리를 할 수 있도록 허용
- 앱이 사용자 간 상호작용을 할 수 있도록 허용
- 앱이 네트워크를 통해 대략적인 위치에 접근할 수 있도록 허용
- 앱이 GPS 를 통해 정확한 위치에 접근할 수 있도록 허용
- 앱이 오디오를 녹음할 수 있도록 허용
- Termux 앱에 대해 명령을 실행할 수 있도록 허용
- 앱이 전화 상태 및 신원을 읽을 수 있도록 허용
- 앱이 SMS 를 읽을 수 있도록 허용
- 앱이 Shizuku 서비스를 통해 시스템과 상호작용할 수 있도록 허용
+ 기존 레이아웃으로 전환
+ 새 레이아웃으로 전환
창 전환
기호 설정
맞춤형 개발자
@@ -858,12 +909,13 @@
현재 버전의 AutoJs6 에 위의 ABI 가 포함되어 있지 않으므로 선택한 ABI \"%s\" 를 사용하여 패키지 응용 프로그램을 만들 수 없습니다.
사용할 수 없음
ABI \"%s\" 를 사용할 수 없습니다
+ 개발중인
기능은 다음 몇 가지 업데이트에서 사용할 준비가됩니다.
@string/text_under_development
- 개발중인
실행 취소
뒤
알 수 없음
+ 미확인
업데이트
확인 된 상태가 지워졌습니다
나중
@@ -871,6 +923,7 @@
사용 통계 액세스
장치 사용 기록 및 통계에 대한 액세스를 제공하여 CurrentPackage ()보다 정확한 결과를 초래합니다.
Android 7.0 바로 가기를 사용하십시오
+ 기본 아이콘 사용
레코드를 제어하려면 볼륨 다운 키를 사용하십시오
실행 중인 스크립트를 제어하려면 \"볼륨 크게\" 키를 사용하십시오.
사용자 이름
@@ -878,12 +931,22 @@
desc 선택기를 사용하십시오
id 선택기를 사용하십시오
text 선택기를 사용하십시오
+ 유효 기간 (년)
+ 유효 기간을 입력해야 합니다
+ 유효 기간은 0 일 수 없습니다
값
변수 또는 표현
+ 확인됨
+ 확인
+ 확인 실패
+ 키 저장소 확인
+ 확인 성공
버전
버전 코드
+ 버전 코드 (계산 중...)
버전 정보
버전 이름
+ 버전 이름 (계산 중...)
보기
문서를 봅니다
VSCode 확장 버전이 요구 사항을 충족하지 않습니다
@@ -893,59 +956,5 @@
보안 설정을 작성하십시오
애플리케이션이 읽을 수 있지만 쓸 수없는 시스템 환경 설정을 포함하는 보안 시스템 설정.\n이들은 사용자가 시스템 앱의 UI 를 통해 명시 적으로 수정 해야하는 선호도입니다.\n보안 시스템 설정 권한을 사용하면 일반 애플리케이션이 보안 설정 (예: 접근성 서비스)을 직접 수정할 수 있습니다.
시스템 설정을 작성하십시오
- 기본
- 패키지 이름 (계산 중...)
- 버전 이름 (계산 중...)
- 버전 코드 (계산 중...)
- File size
- Signature
- File info
- File extensions
- Hide all file extensions
- Show all file extensions
- Show file extensions (exclude *.js / *.auto)
- Used to set whether to show file extensions in AutoJs6 file explorer.
- Switch to new layout
- Switch to legacy layout
- Search color
- Locate current theme color
- New color library
- Color palette
- WEB color library
- CSS color library
- Android color library
- Material design color library
- Default color library
- Background light
- Background night
- Color library
- Default colors
- Material colors
- Android colors
- CSS colors
- WEB colors
- Material
- Default
- Custom
- Color palette
- Add a color library
- Import a color library
- New intelligent color library
- Clone a color library
- Intelligent color library
- Intelligent colors
- Intell.
- Palette
- Created
- Search all colors
- Palette
- Current theme color %1$s is configured by the color palette
- Failed to locate
- Failed to locate the color library for the theme color
- Failed to determine the index of the theme color item
- Color details
- Theme color details
- Search help
- Failed to render content
diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml
index 56bbc775..ca93ccba 100644
--- a/app/src/main/res/values-night/colors.xml
+++ b/app/src/main/res/values-night/colors.xml
@@ -5,6 +5,7 @@
@color/dusk_full
#B3BFBFBF
#9ABFBFBF
+ #80BFBFBF
#4DBFBFBF
#33BFBFBF
@color/dawn
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index b66b3fbe..41f3f402 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -12,20 +12,45 @@
Несовместимая версия \"apk builder\".\nЗагрузить ее сейчас?
Подготовка...
SDK устройства
+ Размер файла
Установлено
Макс. SDK
Мин. SDK
Пакет
+ Схема подписи
Целевой SDK
Блокирующие операции не могут выполняться в потоке UI. Попробуйте выполнить `waitForActivity` в подпотоке или подскрипте, или используйте `setInterval` для повторения и проверки активности
Блокирующие операции не могут выполняться в потоке UI. Попробуйте выполнить `waitForPackage` в подпотоке или подскрипте, или используйте `setInterval` для повторения и проверки пакета
+ Цветовая библиотека Android
+ Цветовая библиотека CSS
+ Стандартная цветовая библиотека
+ Создано
+ @string/mt_custom
+ @string/text_default
+ Intell.
+ Material
+ Палитра
+ Интеллектуальная цветовая библиотека
+ Цветовая библиотека Material Design
+ Цвета Android
+ Цвета CSS
+ Стандартные цвета
+ Интеллектуальные цвета
+ Цвета Material
+ Цвета WEB
+ Цветовая библиотека WEB
+ Светлый фон
+ Тёмный фон
Конфигурация \"abi\" содержит недопустимые параметры
Конфигурация \"abi\" содержит недоступные параметры
Конфигурация \"lib\" содержит недопустимые параметры
Конфигурация \"lib\" содержит недоступные параметры
Файл уже существует.\nПерезаписать?
1. Нажмите и удерживайте название приложения (AutoJs6) на главной странице, чтобы перейти на страницу настроек.\n2. Нажмите и удерживайте определенную опцию настроек на странице настроек, чтобы просмотреть подробную информацию.
+ Текущий цвет темы %1$s настроен через цветовую палитру
Плавающая кнопка действий для отображения манифеста
+ Не удалось определить индекс элемента цвета темы
+ Не удалось найти цветовую библиотеку для темы
Для сообщения о проблеме будет открыта веб-страница.\nМожет потребоваться учетная запись на GitHub.
Выберите способ вывода для переработанных сценариев
Скопируйте журнал отладки или выйдите напрямую
@@ -43,6 +68,7 @@
Локальная документация: Использование встроенных файлов AutoJs6 в качестве источников документации, подключение к сети не требуется. Содержание меняется по мере обновления AutoJs6.\nОнлайн-документы: Использование страниц GitHub в качестве источников документации, требуется подключение к сети. Содержимое всегда обновляется.\n\nПримечание: Чтобы максимально улучшить качество чтения онлайн-документов, рекомендуется использовать широкоформатное устройство отображения, например настольный монитор.\nПримечание: Начиная с версии 6.2.0, документация находится на предварительной стадии разработки, и большая часть содержимого еще не была написана или обновлена.
Для поддержки темной темы на страницах документов должны быть выполнены следующие условия:\n1. В AutoJs6 включен ночной режим\n2. Android System WebView (или браузеры типа Google Chrome):\n- Android API Level 29 (Android 10) [Q] и выше: версия >= 76\n- Android API Level 28 (Android 9) [P] и ниже: версия >= 105
Расширение встроенных объектов JavaScript может повысить гибкость кода и обеспечить более богатую функциональность, но может привести к конфликтам и даже поломкам.\nВсе сценарии имеют встроенные расширения, включенные по умолчанию, когда опция включена.\nВстроенные расширения часто небезопасны, и их не рекомендуется использовать, пока принципы и риски встроенных расширений не будут четко поняты.\nКогда опция выключена, встроенные расширения все еще можно включить через глобальный объект plugins, как описано в документации проекта.
+ Используется для настройки отображения расширений файлов в файловом менеджере AutoJs6.
Используется для установки того, показывать или нет скрытые файлы и папки (обычно начинающиеся с \".\") в файловом проводнике AutoJs6.
Предпочтение для сохранения экрана устройства включенным и ярким, когда AutoJs6 находится на переднем плане.\nЧтобы это происходило только на главной странице среди всех страниц приложения AutoJs6, выберите опцию \"Только главная страница\".
Ярлыки позволяют выполнять определенные действия в AutoJs6. Пользователи могут отображать эти ярлыки в поддерживаемой программе запуска и быстро запускать некоторые задачи или действия, например, читать документацию по приложению AutoJs6, запускать страницу настроек AutoJs6 и т.д.
@@ -56,6 +82,7 @@
@string/text_back
Отменить
Отменить
+ Очистить
OK
@string/text_continue
@string/text_copy
@@ -63,10 +90,12 @@
Подробности
Удалить
Браузер
+ Информация о файле
История
Игнорировать
Вступить группу
Еще
+ Открыть палитру
Выйти
Удалить
Повторная попытка
@@ -76,6 +105,9 @@
Обновить
Использовать по умолчанию
Просмотр файла
+ Детали цвета
+ Цветовая палитра
+ Детали цвета темы
Невозможно обработать файл
Содержимое не было сохранено, вы уверены в выходе?
Следовать за системой
@@ -84,6 +116,9 @@
размер текста
Отключить
Масштабировать вид
+ Скрыть все расширения файлов
+ Показать все расширения файлов
+ Показать расширения файлов (исключая *.js / *.auto)
Не показывать скрытые файлы и папки
Показывать скрытые файлы и папки
Все страницы
@@ -102,8 +137,8 @@
Операция \"%1$s\" не может быть завершена, так как параметр содержит отрицательные значения координат (%2$d, %3$d)
Требуется активность, которую можно предоставить, выполняя в режиме выполнения \"ui\"
Операция не выполняется
- Приложение не установлено: \"%s\"
Приложение не установлено
+ Приложение не установлено: \"%s\"
Аргумент %1$s для %2$s#%3$s не может быть пустым
Аргументы не могут быть пустыми
Аргументы должны быть пустыми
@@ -134,6 +169,7 @@
Не удается включить сервер AutoJs6: %s
Чрезмерная высота: шаблон [%1$d] > регион [%2$d]
Чрезмерная ширина: шаблон [%1$d] > регион [%2$d]
+ Не удалось применить текущую историю цветов
Не удалось вызвать метод \"%s\"
Не удалось преобразовать значение %s в Drawable
@@ -141,6 +177,7 @@
Ошибка создания экземпляра \"%s\"
Ошибка вызова метода %1$s
+ Не удалось отобразить содержимое
Не удалось отозвать права на Shizuku
Ошибка выполнения скрипта
Файл в пути \"%1$s\" не существует
@@ -157,6 +194,7 @@
Изображения должны иметь одинаковый размер
Изображения должны иметь одинаковый размер и тип
Не удалось выполнить проверку поля ввода
+ Неверный цвет
Неверный компас: %s
Неверный репозиторий GitHub: %s
Неверный IP-адрес
@@ -226,6 +264,7 @@
Длительное нажатие кнопки \"Выполнить\" для отладки
Задержка перед циклом
0 для бесконечного цикла
+ Последнее использование: %1$s
Альбом
Соотношение сторон
Аудио
@@ -281,9 +320,14 @@
Действие
Нет установщика APK
Необходим инструмент ADB
+ Добавить цветовую библиотеку
псевдоним
+ Псевдоним не может быть пустым
+ Пароль псевдонима
Доступ ко всем файлам
\"Доступ ко всем файлам\" необходим для доступа к файлам сценариев на телефоне
+ Вся история
+ Вся история очищена
Скопировано в буфер обмена
Уже скопировано в буфер обмена (только последние %d элементов)
Создано
@@ -327,6 +371,7 @@
Код версии приложения
Название версии приложения
Внешний вид
+ Необходимо заполнить хотя бы одно поле из: «Полное имя, Название организации, Организационная единица, Код страны, Штат или провинция, Город или населенный пункт, Улица»
Атрибут
Автоматическая проверка обновлений
Автоматическая проверка обновлений и отображение закуски на домашней странице
@@ -358,6 +403,7 @@
Изменить рабочий каталог
Проверка наличия обновлений
Проверка обновлений...
+ Город или населенный пункт
Имя класса / пакета
Очистить
Очистить выбор файла
@@ -367,14 +413,20 @@
Нажмите \"OK\" для перехода к настройкам
Частые операции
Режим клиента
+ Клонировать цветовую библиотеку
Закрыть
Закрыть плавающую кнопку
Код
Улучшить код
+ Цветовая библиотека
+ Цветовая палитра
Команда скопирована в буфер обмена
Комментарий
Совместимость
Конфигурация
+ Вы уверены, что хотите очистить всю историю?
+ Будут очищены следующие элементы истории\n\n[ %1$s ]\n\nВы уверены, что хотите очистить их?
+ Будут очищены следующие элементы истории\n\n[ Все цветовые библиотеки ]\n\nВы уверены, что хотите их очистить?
Вы уверены, что хотите удалить?
Вы уверены, что хотите удалить?
Подключитесь к ПК
@@ -389,6 +441,8 @@
Копировать строку
Копировать в буфер обмена
Копировать значение
+ Код страны (XX)
+ Код страны должен состоять из двух заглавных букв
Текущая версия
Ежедневная задача
Дата
@@ -404,8 +458,11 @@
Шаг в
Шаг наружу
Шаг за
+ По умолчанию
+ По умолчанию хранилище ключей
Префикс по умолчанию
Удалить
+ Удалить все
Удалить строку
Детали
Детали разработчика находятся в стадии разработки
@@ -467,6 +524,7 @@
Не удалось создать
Не удалось скопировать
Не удалось создать
+ Не удалось создать ключ подписи
Не удалось удалить
Не удалось отключить службу доступности
Не удалось загрузить
@@ -478,6 +536,7 @@
Не удалось предоставить доступ
Не удалось предоставить разрешение на отображение поверх других приложений
Не удалось импортировать
+ Не удалось найти
Не удалось войти в систему
Не удалось зарегистрироваться
Не удалось отправить
@@ -487,15 +546,21 @@
Файл
Файл уже существует
Проводник файлов
+ Расширения файлов
Имя файла
Файл не существует
+ Путь к файлу
Файл \"%1$s\" не является исполняемым скриптом
+ Имя файла не может быть пустым
+ Имя файла не может содержать следующие символы: \\ / : * ? " < > |
+ Имя файла слишком длинное
Передача файлов
Найти
Найти классы Java
Следу
Найти / Заменить
Преды
+ Полное имя
Плавающая кнопка
Принудительная остановка
Служба переднего плана
@@ -522,6 +587,7 @@
Игнорировать оптимизацию батареи
Игнорировать обновления
Импорт
+ Импортировать цветовую библиотеку
Импорт скрипта(ов)
Импорт удался
Импорт в \"мои скрипты\"
@@ -545,6 +611,11 @@
Перейти к началу строки
Перейти к началу
Не выключать экран, когда он находится на переднем плане
+ Псевдоним
+ Хранилище ключей
+ Хранилище ключей подтверждено
+ Хранилище ключей не подтверждено
+ Пароль хранилища ключей
Метка
Последняя проверка: %s
Последняя активность
@@ -555,6 +626,7 @@
Проверка макета...
Лицензии на открытые источники
Загрузка...
+ Найти текущий цвет темы
Журнал
Вход в систему
Вход
@@ -569,6 +641,7 @@
Управление
Управление службой доступности
Управление игнорируемыми обновлениями
+ Управление хранилищем ключей
Минимальная версия
Минимальная версия расширения VSCode
\"Мобильный QQ\" не установлен
@@ -578,7 +651,10 @@
Несколько вариантов
Имя
Необходимо включить службу доступности
+ Новая цветовая библиотека
Новый файл
+ Новая интеллектуальная цветовая библиотека
+ Создать ключ подписи
Новый путь
Новый путь совпадает со старым путем
Новый проект
@@ -613,26 +689,72 @@
Открыть с
Операция завершена
Опции
+ Название организации
+ Организационная единица
Оригинальный разработчик
Другие
Путь вывода APK
Имя пакета
+ Имя пакета (Вычисление...)
Пароль
Пароль не может быть пустым
+ Пароль должен содержать не менее %d символов
Вставить
Путь пуст
Адрес сервера ПК
+ Разрешить приложению доступ к неточной геопозиции через сеть
+ Разрешить приложению доступ к точной геопозиции через GPS
+ Разрешить приложению проверять состояние сетевого подключения
+ Разрешить приложению доступ к состоянию Wi-Fi
+ Разрешить приложению отправить намерение для закрытия системных диалогов
+ Разрешить приложению захватывать видеовыход
+ Разрешить приложению выгружать системные данные
+ Разрешить приложению запускать сервисы в фоновом режиме
+ Разрешить приложению использовать запись экрана и медиапроекцию в фоновом сервисе
+ Разрешить приложению выполнять специальные операции в фоновом сервисе
Разрешение предоставлено
Не удалось предоставить разрешение (с правами root)
Не удалось предоставить разрешение (с Shizuku)
Разрешение предоставлено (с root)
Разрешение получено (с Shizuku)
+ Разрешить приложению устанавливать ярлыки
+ Разрешить приложению взаимодействовать между пользователями
+ Разрешить приложению доступ в Интернет
+ Разрешить приложению управлять всеми файлами на внешнем хранилище
+ Разрешить приложению управлять пользователями
+ Разрешить приложению доступ к статистике использования других приложений
+ Разрешить приложению отображать уведомления
+ Разрешить приложению запрашивать все пакеты
+ Разрешить приложению читать с внешнего хранилища
+ Разрешить приложению читать аудиофайлы из общего хранилища
+ Разрешить приложению читать изображения из общего хранилища
+ Разрешить приложению читать видеофайлы из общего хранилища
+ Разрешить приложению читать состояние телефона и его идентификатор
+ Разрешить приложению доступ ко всем данным состояния телефона
+ Разрешить приложению читать SMS-сообщения
+ Разрешить приложению получать уведомления при завершении загрузки устройства
+ Разрешить приложению записывать звук
+ Разрешить приложению изменять порядок работающих задач
+ Разрешить приложению запросить игнорирование оптимизаций батареи
+ Разрешить приложению запрашивать установку других приложений
Разрешение отозвано
Не удалось отозвать разрешение (с root)
Не удалось отозвать разрешение (с помощью Shizuku)
Разрешение отозвано (с root)
Разрешение отозвано (с помощью Shizuku)
+ Для приложения Termux разрешить выполнение команд
+ Разрешить приложению планировать точные операции по времени
+ Разрешить приложению взаимодействовать с системой через сервис Shizuku для получения повышенных прав
+ Разрешить приложению отображаться поверх других приложений
Проверка разрешения
+ Разрешить приложению удалять ярлыки
+ Разрешить приложению показывать неограниченное количество уведомлений Toast
+ Разрешить приложению устанавливать точные будильники или напоминания
+ Разрешить приложению управлять вибрацией устройства
+ Предотвратить переход устройства в спящий режим
+ Разрешить приложению записывать на внешнее хранилище
+ Разрешить приложению читать/записывать защищенные настройки системы
+ Разрешить приложению изменять настройки системы
Разрешения
Разрешения
Закрепление ярлыков в пусковой установке не поддерживается
@@ -722,6 +844,9 @@
Запись сценария
Выполнение сценария
Поиск
+ Искать все цвета
+ Поиск цвета
+ Помощь по поиску
Выберите
Если клип существует (существует)
Пока не найдется один (findOne)
@@ -731,7 +856,6 @@
Выберите файл для загрузки
Выбрать значок
Выбрать изображение
- Использовать значок по умолчанию
Отправить
Создать ярлык
Режим сервера
@@ -746,6 +870,9 @@
Вид в границах макета
Вид в иерархии макета
Показать информацию о виджете
+ Алгоритм подписи
+ Конфигурация подписи
+ Схема подписи
Размер
Экспортировано %d элементов
Путь к исходному коду
@@ -753,93 +880,17 @@
Звезда
Начало записи
Выполнение
+ Штат или провинция
Остановить
+ Улица
+ Ключ подписи успешно создан
ABIs
ABIs (32-bit)
ABIs (64-bit)
Библиотеки
- Конфигурация подписи
- Хранилище ключей
- По умолчанию хранилище ключей
- Управление хранилищем ключей
- Схема подписи
- Создать ключ подписи
- Пароль хранилища ключей
- Псевдоним
- Пароль псевдонима
- Алгоритм подписи
- Срок действия (годы)
- Полное имя
- Название организации
- Организационная единица
- Код страны (XX)
- Штат или провинция
- Город или населенный пункт
- Улица
- Имя файла не может быть пустым
- Имя файла не может содержать следующие символы: \\ / : * ? " < > |
- Имя файла слишком длинное
- Пароль должен содержать не менее %d символов
- Псевдоним не может быть пустым
- Срок действия не может быть пустым
- Срок действия не может быть равен нулю
- Код страны должен состоять из двух заглавных букв
- Необходимо заполнить хотя бы одно поле из: «Полное имя, Название организации, Организационная единица, Код страны, Штат или провинция, Город или населенный пункт, Улица»
- Ключ подписи успешно создан
- Не удалось создать ключ подписи
- Хранилище ключей не подтверждено
- Хранилище ключей подтверждено
- Проверить
- Удалить все
- Не подтверждено
- Подтверждено
- Проверить хранилище ключей
- Проверка успешна
- Ошибка проверки
- Путь к файлу
Требуемые разрешения
- Разрешить приложению доступ к состоянию Wi-Fi
- Разрешить приложению записывать на внешнее хранилище
- Разрешить приложению читать с внешнего хранилища
- Разрешить приложению читать изображения из общего хранилища
- Разрешить приложению читать видеофайлы из общего хранилища
- Разрешить приложению читать аудиофайлы из общего хранилища
- Разрешить приложению управлять всеми файлами на внешнем хранилище
- Разрешить приложению отправить намерение для закрытия системных диалогов
- Разрешить приложению доступ ко всем данным состояния телефона
- Разрешить приложению устанавливать ярлыки
- Разрешить приложению удалять ярлыки
- Разрешить приложению запрашивать установку других приложений
- Предотвратить переход устройства в спящий режим
- Разрешить приложению устанавливать точные будильники или напоминания
- Разрешить приложению планировать точные операции по времени
- Разрешить приложению управлять вибрацией устройства
- Разрешить приложению доступ в Интернет
- Разрешить приложению проверять состояние сетевого подключения
- Разрешить приложению отображаться поверх других приложений
- Разрешить приложению изменять порядок работающих задач
- Разрешить приложению запросить игнорирование оптимизаций батареи
- Разрешить приложению получать уведомления при завершении загрузки устройства
- Разрешить приложению отображать уведомления
- Разрешить приложению запускать сервисы в фоновом режиме
- Разрешить приложению использовать запись экрана и медиапроекцию в фоновом сервисе
- Разрешить приложению выполнять специальные операции в фоновом сервисе
- Разрешить приложению показывать неограниченное количество уведомлений Toast
- Разрешить приложению захватывать видеовыход
- Разрешить приложению выгружать системные данные
- Разрешить приложению запрашивать все пакеты
- Разрешить приложению доступ к статистике использования других приложений
- Разрешить приложению изменять настройки системы
- Разрешить приложению читать/записывать защищенные настройки системы
- Разрешить приложению управлять пользователями
- Разрешить приложению взаимодействовать между пользователями
- Разрешить приложению доступ к неточной геопозиции через сеть
- Разрешить приложению доступ к точной геопозиции через GPS
- Разрешить приложению записывать звук
- Для приложения Termux разрешить выполнение команд
- Разрешить приложению читать состояние телефона и его идентификатор
- Разрешить приложению читать SMS-сообщения
- Разрешить приложению взаимодействовать с системой через сервис Shizuku для получения повышенных прав
+ Переключиться на старый макет
+ Переключиться на новый макет
Переключить окно
Настройки символов
Индивидуальный разработчик
@@ -857,12 +908,13 @@
Выбранный ABI \"%s\" не может быть использован для создания упакованного приложения, поскольку текущая версия AutoJs6 не включает указанный ABI.
Недоступно
ABI \"%s\" недоступен
+ В стадии разработки
Функция будет готова к использованию в ближайших обновлениях
@string/text_under_development
- В стадии разработки
Отозвать
Верни
Неизвестно
+ Не подтверждено
Обновления
Обновления проверенные состояния очищены
Позже
@@ -870,6 +922,7 @@
Доступ к статистике использования
Предоставляет доступ к истории использования устройства и статистике, что позволяет получить более точный результат в функции currentPackage()
Использовать ярлык Android 7.0
+ Использовать значок по умолчанию
Используйте клавишу уменьшения громкости для управления записью
Используйте клавишу \"Громкость вверх\" для управления запуском скрипта
Имя пользователя
@@ -877,12 +930,22 @@
Использовать селектор по описанию
Использовать селектор id
Использовать текстовый селектор
+ Срок действия (годы)
+ Срок действия не может быть пустым
+ Срок действия не может быть равен нулю
Значение
Переменная или выражение
+ Подтверждено
+ Проверить
+ Ошибка проверки
+ Проверить хранилище ключей
+ Проверка успешна
Версия
Код версии
+ Код версии (Вычисление...)
Информация о версии
Название версии
+ Название версии (Вычисление...)
Просмотр
Просмотр документов
Версия расширения VSCode не соответствует требованиям
@@ -892,59 +955,5 @@
Параметры безопасности записи
Настройки безопасности системы, содержащие системные предпочтения, которые приложения могут читать, но не имеют права записывать.\nОни предназначены для параметров, которые пользователь должен явно изменить через пользовательский интерфейс системного приложения.\nПри наличии разрешения на безопасные системные настройки обычные приложения могут напрямую изменять безопасные настройки (например, служба доступности).
Запись системных настроек
- По умолчанию
- Имя пакета (Вычисление...)
- Название версии (Вычисление...)
- Код версии (Вычисление...)
- File size
- Signature
- File info
- File extensions
- Hide all file extensions
- Show all file extensions
- Show file extensions (exclude *.js / *.auto)
- Used to set whether to show file extensions in AutoJs6 file explorer.
- Switch to new layout
- Switch to legacy layout
- Search color
- Locate current theme color
- New color library
- Color palette
- WEB color library
- CSS color library
- Android color library
- Material design color library
- Default color library
- Background light
- Background night
- Color library
- Default colors
- Material colors
- Android colors
- CSS colors
- WEB colors
- Material
- Default
- Custom
- Color palette
- Add a color library
- Import a color library
- New intelligent color library
- Clone a color library
- Intelligent color library
- Intelligent colors
- Intell.
- Palette
- Created
- Search all colors
- Palette
- Current theme color %1$s is configured by the color palette
- Failed to locate
- Failed to locate the color library for the theme color
- Failed to determine the index of the theme color item
- Color details
- Theme color details
- Search help
- Failed to render content
diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml
index a8f23597..385b1511 100644
--- a/app/src/main/res/values-zh-rHK/strings.xml
+++ b/app/src/main/res/values-zh-rHK/strings.xml
@@ -11,20 +11,45 @@
打包插件需更新\n是否下載
準備文件...
設備 SDK
+ 文件大小
已安裝
最高 SDK
最低 SDK
包名
+ 簽名方案
目標 SDK
UI 線程內無法執行阻塞操作. 可嘗試在子線程或子腳本中執行 waitForActivity 或使用 setInterval 循環檢測 activity
UI 線程內無法執行阻塞操作. 可嘗試在子線程或子腳本中執行 waitForPackage 或使用 setInterval 循環檢測 package
+ Android 顏色庫
+ CSS 顏色庫
+ 默認顏色庫
+ 自建
+ @string/mt_custom
+ @string/text_default
+ 智能
+ 材料設計
+ 調色盤
+ 智能顏色庫
+ 材料設計 (Material Design) 顏色庫
+ Android 顏色
+ CSS 顏色
+ 默認顏色
+ 智能顏色
+ 材料設計顏色
+ WEB 顏色
+ WEB 顏色庫
+ 背景亮色
+ 背景暗色
配置 \"abi\" 含無效選項
配置 \"abi\" 含不可用選項
配置 \"lib\" 含無效選項
配置 \"lib\" 含不可用選項
文件已存在, 是否覆蓋
1. 長按主頁應用名稱 (AutoJs6) 可跳轉至設置頁面\n2. 設置頁面長按設置選項可查看詳細信息
+ 當前主題色 %1$s 由調色盤配置
用於顯示清單內容的浮動操作按鈕控件
+ 無法確定主題色條目的索引值
+ 無法定位主題色所在顏色庫
即將跳轉到項目議題反饋 WEB 頁面.\n可能需要 GitHub 賬户以完成問題反饋.
選擇一個已錄製腳本的輸出方式
可複製調試信息到剪貼板或直接退出應用
@@ -55,6 +80,7 @@
@string/text_back
取消
取消下載
+ 清空記錄
確定
@string/text_continue
@string/text_copy
@@ -62,10 +88,12 @@
瞭解更多
關閉
瀏覽器下載
+ 文件信息
歷史記錄
忽略此版本
加入羣組
瞭解更多
+ 打開調色盤
放棄
移除
重試
@@ -75,6 +103,9 @@
立即更新
使用默認值
查看文件
+ 顏色詳情
+ 調色盤
+ 主題色詳情
無法處理文件
內容尚未保存, 確定要退出嗎
跟隨系統
@@ -83,6 +114,9 @@
更改字體大小
禁用
縮放視圖
+ 隱藏所有文件擴展名
+ 顯示所有文件擴展名
+ 顯示文件擴展名 (*.js / *.auto 除外)
不顯示隱藏文件或文件夾
顯示隱藏文件和文件夾
所有頁面
@@ -101,8 +135,8 @@
無法完成 \"%1$s\" 操作, 因為參數中包含負數座標值 (%2$d,%3$d)
缺少必要的 activity 對象, 可通過 \"ui\" 執行模式來提供
操作尚未實現
- 應用未安裝: \"%s\"
應用未安裝
+ 應用未安裝: \"%s\"
參數 %1$s 對於 %2$s#%3$s 不可為 nullish
參數列表不可為空
參數列表需為空
@@ -133,6 +167,7 @@
AutoJs6 服務啓用失敗: %s
高度超限: 模板圖像 [%1$d] > 限定區域 [%2$d]
寬度超限: 模板圖像 [%1$d] > 限定區域 [%2$d]
+ 應用當前歷史顏色失敗
調用方法 \"%s\" 失敗
無法將值 %s 轉換為 Drawable 實例
@@ -140,6 +175,7 @@
創建實例 \"%s\" 失敗
方法 %1$s 調用失敗
+ 內容渲染失敗
Shizuku 權限撤銷失敗
腳本運行失敗
路徑 \"%1$s\" 對應文件不存在
@@ -156,6 +192,7 @@
圖像大小需保持一致
圖像大小及類型均需保持一致
輸入字段檢查未通過
+ 無效的顏色
無效的羅盤參數: %s
無效的 GitHub 倉庫: %s
無效的 IP 地址
@@ -225,6 +262,7 @@
長按 \"運行\" 圖標可啓動調試
開始循環前的延遲
0 表示無限循環
+ 最近使用: %1$s
專輯
縱橫比
音頻
@@ -280,9 +318,14 @@
動作
找不到 APK 安裝器
需要 ADB 命令行工具
+ 添加顏色庫
別名
+ 別名不能為空
+ 別名密碼
所有文件管理權限
需要授予 \"所有文件管理權限\" 才能正常讀寫腳本文件
+ 全部歷史記錄
+ 歷史記錄已清空
已複製到剪貼板
已複製到剪貼板 (僅最新的 %d 個條目)
已創建
@@ -326,6 +369,7 @@
應用版本號
應用版本名
外觀
+ “姓名、組織名稱、組織單位、國家代碼、州或省份、城市或區域、街道”至少填寫一個
屬性
自動檢查更新
自動檢查更新並在首頁下方顯示通知條
@@ -357,6 +401,7 @@
更改工作路徑
檢查更新
正在檢查更新...
+ 城市或區域
類/包名
清空
清空文件選擇
@@ -366,16 +411,22 @@
點擊 \"確定\" 跳轉到設置頁面
操作頻率過快
客户端模式
+ 克隆顏色庫
關閉
關閉浮動按鈕
代碼
格式化代碼
+ 顏色庫
+ 調色盤
指令已複製到剪貼板
註釋
兼容性
配置
+ 是否確定清空歷史記錄
+ 以下歷史記錄將被清空\n\n[ %1$s ]\n\n是否確定清空
+ 以下歷史記錄將被清空\n\n[ 全部顏色庫 ]\n\n是否確定清空
是否確定刪除
- 確定移除嗎?
+ 是否確定移除
連接到計算機
無法建立連接
控制枱
@@ -388,6 +439,8 @@
複製行
複製到剪貼板
複製值
+ 國家代碼 (XX)
+ 國家代碼必須為兩個大寫字母
當前版本
每日任務
日期
@@ -403,8 +456,11 @@
進入
跳出
單步
+ 默認
+ 預設密鑰庫
默認前綴
刪除
+ 刪除全部
刪除行
詳情
\"開發者詳情\" 正在開發中...
@@ -466,6 +522,7 @@
打包失敗
複製失敗
創建失敗
+ 生成簽名密鑰失敗
刪除失敗
禁用無障礙服務失敗
下載失敗
@@ -477,6 +534,7 @@
授權失敗
顯示在其他應用上層權限授予失敗
導入失敗
+ 定位失敗
登錄失敗
註冊失敗
提交失敗
@@ -486,15 +544,21 @@
文件
文件已存在
文件管理器
+ 文件擴展名
文件名
文件不存在
+ 文件路徑
文件 \"%1$s\" 非可執行腳本
+ 文件名不能為空
+ 文件名不能包含以下字符: \\ / : * ? " < > |
+ 文件名太長
文件遷移
查找
搜索 Java 類
下一個
查找 / 替換
上一個
+ 姓名
浮動按鈕
強制停止
前台服務
@@ -521,6 +585,7 @@
忽略電池優化
已忽略更新
導入
+ 導入顏色庫
導入腳本文件
導入成功
導入到 \"我的腳本\"
@@ -544,6 +609,11 @@
跳轉到行首
跳轉到文件開始
前台時保持屏幕常亮
+ 別名
+ 密鑰庫
+ 密鑰已驗證
+ 密鑰尚未驗證
+ 密鑰庫密碼
名稱
上次檢查: %s
最近活動
@@ -554,6 +624,7 @@
佈局分析中...
開源許可信息
加載中...
+ 定位當前主題色
日誌
登錄中
登錄
@@ -568,6 +639,7 @@
管理
管理無障礙服務
管理已忽略更新
+ 管理密鑰庫
最低版本
VSCode 插件最低版本
未安裝 \"手機QQ\"
@@ -577,7 +649,10 @@
多個可選項
名稱
需要啓用無障礙服務
+ 新建顏色庫
新建文件
+ 新建智能顏色庫
+ 生成簽名密鑰
新路徑
新舊路徑相同
新建項目
@@ -612,26 +687,72 @@
打開方式
操作已完成
選項
+ 組織名稱
+ 組織單位
原始開發者
其他
打包應用保存路徑
包名
+ 包名 (計算中...)
密碼
密碼不能為空
+ 密碼至少需要 %d 位字符
粘貼
路徑為空
PC 服務端地址
+ 允許應用程式通過網路訪問粗略的位置信息
+ 允許應用程式通過 GPS 獲取精確的位置信息
+ 允許應用程式查看網路連接狀態
+ 允許應用程式訪問 Wi-Fi 狀態
+ 允許應用程式發送意圖來關閉系統對話框
+ 允許應用程式捕獲視頻輸出
+ 允許應用程式轉儲系統資訊
+ 允許應用程式運行前景服務
+ 允許應用程式在前景服務中使用螢幕錄製和媒體投影功能
+ 允許應用程式在前景服務中執行一些特殊操作
已授予權限
權限授予失敗 (使用 root)
權限授予失敗 (使用 Shizuku)
已授予權限 (使用 root)
已授予權限 (使用 Shizuku)
+ 允許應用程式安裝快捷方式
+ 允許應用程式跨使用者互動
+ 允許應用程式訪問網路
+ 允許應用程式管理外部儲存中的所有檔案
+ 允許應用程式管理使用者
+ 允許應用程式訪問其他應用程式的使用統計數據
+ 允許應用程式顯示通知
+ 允許應用程式查詢所有軟件包
+ 允許應用程式讀取外部儲存
+ 允許應用程式讀取共享儲存中的音頻檔案
+ 允許應用程式讀取共享儲存中的圖片檔案
+ 允許應用程式讀取共享儲存中的視頻檔案
+ 允許應用程式讀取手機狀態和身份
+ 允許應用程式訪問所有電話狀態資訊
+ 允許應用程式讀取簡訊
+ 允許應用程式在設備啟動時接收廣播
+ 允許應用程式錄音
+ 允許應用程式對正在運行的應用程式重新排序
+ 允許應用程式請求忽略電池優化
+ 允許應用程式請求安裝其他應用程式
已撤消授權
權限撤消失敗 (使用 root)
權限撤銷失敗 (使用 Shizuku)
已撤消授權 (使用 root)
已撤消授權 (使用 Shizuku)
+ 允許執行命令 (特定於 Termux 應用程式)
+ 允許應用程式安排時間精確的操作
+ 允許應用程式通過 Shizuku 服務與系統進行更高權限的交互
+ 允許應用程式在其他應用程式上面顯示
權限測試
+ 允許應用程式卸載快捷方式
+ 允許應用程式顯示無限數量的 Toast 通知
+ 允許應用程式安排精確的鬧鐘或事件提醒
+ 控制手機震動
+ 防止手機進入休眠狀態
+ 允許應用程式寫入外部儲存
+ 允許應用程式讀寫系統敏感設定
+ 允許應用程式修改系統設定
權限
權限列表
將快捷方式固定到啓動器不被支持
@@ -721,6 +842,9 @@
錄製腳本
腳本運行
搜索
+ 搜索全部顏色
+ 搜索顏色
+ 搜索幫助
選擇
判斷控件存在 (exists)
直到找到一個 (findOne)
@@ -730,7 +854,6 @@
選擇要上傳的文件
選擇圖標
選擇圖片
- 使用默認圖標
發送
創建快捷方式
服務端模式
@@ -745,6 +868,9 @@
在佈局範圍中查看
在佈局層次中查看
顯示控件信息
+ 簽名算法
+ 簽名配置
+ 簽名方案
大小
已導出 %d 個條目
源代碼路徑
@@ -752,93 +878,17 @@
收藏
開始錄製
開始運行
+ 州或省份
停止
+ 街道
+ 成功生成簽名密鑰
支持 ABI
支持 ABI (32 位)
支持 ABI (64 位)
支援庫
- 簽名配置
- 密鑰庫
- 預設密鑰庫
- 管理密鑰庫
- 簽名方案
- 生成簽名密鑰
- 密鑰庫密碼
- 別名
- 別名密碼
- 簽名算法
- 有效期 (年)
- 姓名
- 組織名稱
- 組織單位
- 國家代碼 (XX)
- 州或省份
- 城市或區域
- 街道
- 文件名不能為空
- 文件名不能包含以下字符: \\ / : * ? " < > |
- 文件名太長
- 密碼至少需要 %d 位字符
- 別名不能為空
- 有效年份不能為空
- 有效年份不能為0
- 國家代碼必須為兩個大寫字母
- “姓名、組織名稱、組織單位、國家代碼、州或省份、城市或區域、街道”至少填寫一個
- 成功生成簽名密鑰
- 生成簽名密鑰失敗
- 密鑰尚未驗證
- 密鑰已驗證
- 驗證
- 刪除全部
- 未驗證
- 已驗證
- 驗證簽名密鑰
- 驗證成功
- 驗證失敗
- 文件路徑
所需的權限
- 允許應用程式訪問 Wi-Fi 狀態
- 允許應用程式寫入外部儲存
- 允許應用程式讀取外部儲存
- 允許應用程式讀取共享儲存中的圖片檔案
- 允許應用程式讀取共享儲存中的視頻檔案
- 允許應用程式讀取共享儲存中的音頻檔案
- 允許應用程式管理外部儲存中的所有檔案
- 允許應用程式發送意圖來關閉系統對話框
- 允許應用程式訪問所有電話狀態資訊
- 允許應用程式安裝快捷方式
- 允許應用程式卸載快捷方式
- 允許應用程式請求安裝其他應用程式
- 防止手機進入休眠狀態
- 允許應用程式安排精確的鬧鐘或事件提醒
- 允許應用程式安排時間精確的操作
- 控制手機震動
- 允許應用程式訪問網路
- 允許應用程式查看網路連接狀態
- 允許應用程式在其他應用程式上面顯示
- 允許應用程式對正在運行的應用程式重新排序
- 允許應用程式請求忽略電池優化
- 允許應用程式在設備啟動時接收廣播
- 允許應用程式顯示通知
- 允許應用程式運行前景服務
- 允許應用程式在前景服務中使用螢幕錄製和媒體投影功能
- 允許應用程式在前景服務中執行一些特殊操作
- 允許應用程式顯示無限數量的 Toast 通知
- 允許應用程式捕獲視頻輸出
- 允許應用程式轉儲系統資訊
- 允許應用程式查詢所有軟件包
- 允許應用程式訪問其他應用程式的使用統計數據
- 允許應用程式修改系統設定
- 允許應用程式讀寫系統敏感設定
- 允許應用程式管理使用者
- 允許應用程式跨使用者互動
- 允許應用程式通過網路訪問粗略的位置信息
- 允許應用程式通過 GPS 獲取精確的位置信息
- 允許應用程式錄音
- 允許執行命令 (特定於 Termux 應用程式)
- 允許應用程式讀取手機狀態和身份
- 允許應用程式讀取簡訊
- 允許應用程式通過 Shizuku 服務與系統進行更高權限的交互
+ 切換至傳統佈局
+ 切換至新佈局
切換窗口
符號設置
二次開發者
@@ -856,12 +906,13 @@
選擇的 ABI 架構 \"%s\" 無法用於創建打包應用, 因當前 AutoJs6 版本未包含上述 ABI 架構.
不可用
ABI \"%s\" 不可用
+ 開發中
將在後續版本實現當前功能
@string/text_under_development
- 開發中
撤銷
撤銷
未知
+ 未驗證
更新
更新檢查狀態已清除
稍後提示
@@ -869,6 +920,7 @@
查看使用情況權限
\"查看使用情況\" 權限可獲取本設備過去使用應用的情況,從而使 \"獲取當前應用\" (currentPackage) 結果更準確
使用安卓 7.0 快捷方式
+ 使用默認圖標
使用 \"音量減\" 鍵控制錄製
使用 \"音量加\" 鍵控制腳本運行
用户名
@@ -876,12 +928,22 @@
使用描述選擇器 (desc)
使用 id 選擇器 (id)
使用文本選擇器 (text)
+ 有效期 (年)
+ 有效年份不能為空
+ 有效年份不能為0
值
變量或表達式
+ 已驗證
+ 驗證
+ 驗證失敗
+ 驗證簽名密鑰
+ 驗證成功
版本
版本號
+ 版本號 (計算中...)
版本信息
版本名稱
+ 版本名稱 (計算中...)
查看
查看文檔
VSCode 插件版本不符合要求
@@ -891,59 +953,5 @@
修改安全設置
安全設置包含應用程序可讀但不可寫入的設置選項, 這些選項只能由 UI 或系統級別應用修改.\n被授予 \"修改安全設置權限\" 後, 普通應用可直接修改上述安全設置 (例如無障礙服務).
修改系統設置
- 默認
- 包名 (計算中...)
- 版本名稱 (計算中...)
- 版本號 (計算中...)
- File size
- Signature
- File info
- File extensions
- Hide all file extensions
- Show all file extensions
- Show file extensions (exclude *.js / *.auto)
- Used to set whether to show file extensions in AutoJs6 file explorer.
- Switch to new layout
- Switch to legacy layout
- Search color
- Locate current theme color
- New color library
- Color palette
- WEB color library
- CSS color library
- Android color library
- Material design color library
- Default color library
- Background light
- Background night
- Color library
- Default colors
- Material colors
- Android colors
- CSS colors
- WEB colors
- Material
- Default
- Custom
- Color palette
- Add a color library
- Import a color library
- New intelligent color library
- Clone a color library
- Intelligent color library
- Intelligent colors
- Intell.
- Palette
- Created
- Search all colors
- Palette
- Current theme color %1$s is configured by the color palette
- Failed to locate
- Failed to locate the color library for the theme color
- Failed to determine the index of the theme color item
- Color details
- Theme color details
- Search help
- Failed to render content
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 04ef9255..adffaa40 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -11,20 +11,45 @@
打包外掛需更新\n是否下載
準備檔案...
裝置 SDK
+ 檔案大小
已安裝
最高 SDK
最低 SDK
包名
+ 簽名方案
目標 SDK
UI 執行緒內無法執行阻塞操作. 可嘗試在子執行緒或子指令碼中執行 waitForActivity 或使用 setInterval 迴圈檢測 activity
UI 執行緒內無法執行阻塞操作. 可嘗試在子執行緒或子指令碼中執行 waitForPackage 或使用 setInterval 迴圈檢測 package
+ Android 顏色庫
+ CSS 顏色庫
+ 預設顏色庫
+ 自建
+ @string/mt_custom
+ @string/text_default
+ 智慧
+ 材料設計
+ 調色盤
+ 智慧顏色庫
+ 材料設計 (Material Design) 顏色庫
+ Android 顏色
+ CSS 顏色
+ 預設顏色
+ 智慧顏色
+ 材料設計顏色
+ WEB 顏色
+ WEB 顏色庫
+ 背景亮色
+ 背景暗色
配置 \"abi\" 含無效選項
配置 \"abi\" 含不可用選項
配置 \"lib\" 含無效選項
配置 \"lib\" 含不可用選項
檔案已存在, 是否覆蓋
1. 長按主頁應用名稱 (AutoJs6) 可跳轉至設定頁面\n2. 設定頁面長按設定選項可檢視詳細資訊
+ 當前主題色 %1$s 由調色盤配置
用於顯示清單內容的浮動操作按鈕控制元件
+ 無法確定主題色條目的索引值
+ 無法定位主題色所在顏色庫
即將跳轉到專案議題反饋 WEB 頁面.\n可能需要 GitHub 賬戶以完成問題反饋.
選擇一個已錄製指令碼的輸出方式
可複製除錯資訊到剪貼簿或直接退出應用
@@ -55,6 +80,7 @@
@string/text_back
取消
取消下載
+ 清空記錄
確定
@string/text_continue
@string/text_copy
@@ -62,10 +88,12 @@
瞭解更多
關閉
瀏覽器下載
+ 檔案資訊
歷史記錄
忽略此版本
加入群組
瞭解更多
+ 開啟調色盤
放棄
移除
重試
@@ -75,6 +103,9 @@
立即更新
使用預設值
檢視檔案
+ 顏色詳情
+ 調色盤
+ 主題色詳情
無法處理檔案
內容尚未儲存, 確定要退出嗎
跟隨系統
@@ -83,6 +114,9 @@
更改字型大小
禁用
縮放檢視
+ 隱藏所有副檔名
+ 顯示所有副檔名
+ 顯示副檔名 (*.js / *.auto 除外)
不顯示隱藏檔案或資料夾
顯示隱藏檔案和資料夾
所有頁面
@@ -101,8 +135,8 @@
無法完成 \"%1$s\" 操作, 因為引數中包含負數座標值 (%2$d,%3$d)
缺少必要的 activity 物件, 可透過 \"ui\" 執行模式來提供
操作尚未實現
- 應用未安裝: \"%s\"
應用未安裝
+ 應用未安裝: \"%s\"
引數 %1$s 對於 %2$s#%3$s 不可為 nullish
引數列表不可為空
引數列表需為空
@@ -133,6 +167,7 @@
AutoJs6 服務啟用失敗: %s
高度超限: 模板影象 [%1$d] > 限定區域 [%2$d]
寬度超限: 模板影象 [%1$d] > 限定區域 [%2$d]
+ 應用當前歷史顏色失敗
呼叫方法 \"%s\" 失敗
無法將值 %s 轉換為 Drawable 例項
@@ -140,6 +175,7 @@
建立例項 \"%s\" 失敗
方法 %1$s 呼叫失敗
+ 內容渲染失敗
Shizuku 許可權撤銷失敗
指令碼執行失敗
路徑 \"%1$s\" 對應檔案不存在
@@ -156,6 +192,7 @@
影象大小需保持一致
影象大小及型別均需保持一致
輸入欄位檢查未透過
+ 無效的顏色
無效的羅盤引數: %s
無效的 GitHub 倉庫: %s
無效的 IP 地址
@@ -225,6 +262,7 @@
長按 \"執行\" 圖示可啟動除錯
開始迴圈前的延遲
0 表示無限迴圈
+ 最近使用: %1$s
專輯
縱橫比
音訊
@@ -280,9 +318,14 @@
動作
找不到 APK 安裝器
需要 ADB 命令列工具
+ 新增顏色庫
別名
+ 別名不能為空
+ 別名密碼
所有檔案管理許可權
需要授予 \"所有檔案管理許可權\" 才能正常讀寫指令碼檔案
+ 全部歷史記錄
+ 歷史記錄已清空
已複製到剪貼簿
已複製到剪貼簿 (僅最新的 %d 個條目)
已建立
@@ -326,6 +369,7 @@
應用版本號
應用版本名
外觀
+ “姓名、組織名稱、組織單位、國家代碼、州或省份、城市或區域、街道”至少填寫一個
屬性
自動檢查更新
自動檢查更新並在首頁下方顯示通知條
@@ -357,6 +401,7 @@
更改工作路徑
檢查更新
正在檢查更新...
+ 城市或區域
類/包名
清空
清空檔案選擇
@@ -366,16 +411,22 @@
點選 \"確定\" 跳轉到設定頁面
操作頻率過快
客戶端模式
+ 克隆顏色庫
關閉
關閉浮動按鈕
程式碼
格式化程式碼
+ 顏色庫
+ 調色盤
指令已複製到剪貼簿
註釋
相容性
配置
+ 是否確定清空歷史記錄
+ 以下歷史記錄將被清空\n\n[ %1$s ]\n\n是否確定清空
+ 以下歷史記錄將被清空\n\n[ 全部顏色庫 ]\n\n是否確定清空
是否確定刪除
- 確定移除嗎?
+ 是否確定移除
連線到計算機
無法建立連線
控制檯
@@ -388,6 +439,8 @@
複製行
複製到剪貼簿
複製值
+ 國家代碼 (XX)
+ 國家代碼必須是兩個大寫字母
當前版本
每日任務
日期
@@ -403,8 +456,11 @@
進入
跳出
單步
+ 預設
+ 預設密鑰庫
預設字首
刪除
+ 刪除全部
刪除行
詳情
\"開發者詳情\" 正在開發中...
@@ -466,6 +522,7 @@
打包失敗
複製失敗
建立失敗
+ 生成簽名密鑰失敗
刪除失敗
禁用無障礙服務失敗
下載失敗
@@ -477,6 +534,7 @@
授權失敗
顯示在其他應用上層許可權授予失敗
匯入失敗
+ 定位失敗
登入失敗
註冊失敗
提交失敗
@@ -486,15 +544,21 @@
檔案
檔案已存在
檔案管理器
+ 副檔名
檔名
檔案不存在
+ 檔案路徑
檔案 \"%1$s\" 非可執行指令碼
+ 檔案名稱不能為空
+ 檔案名稱不能包含以下字符: \\ / : * ? " < > |
+ 檔案名稱太長
檔案遷移
查詢
搜尋 Java 類
下一個
查詢 / 替換
上一個
+ 姓名
浮動按鈕
強制停止
前臺服務
@@ -521,6 +585,7 @@
忽略電池最佳化
已忽略更新
匯入
+ 匯入顏色庫
匯入指令碼檔案
匯入成功
匯入到 \"我的指令碼\"
@@ -544,6 +609,11 @@
跳轉到行首
跳轉到檔案開始
前臺時保持螢幕常亮
+ 別名
+ 密鑰庫
+ 密鑰已驗證
+ 密鑰尚未驗證
+ 密鑰庫密碼
名稱
上次檢查: %s
最近活動
@@ -554,6 +624,7 @@
佈局分析中...
開源許可資訊
載入中...
+ 定位當前主題色
日誌
登入中
登入
@@ -568,6 +639,7 @@
管理
管理無障礙服務
管理已忽略更新
+ 管理密鑰庫
最低版本
VSCode 外掛最低版本
未安裝 \"手機QQ\"
@@ -577,7 +649,10 @@
多個可選項
名稱
需要啟用無障礙服務
+ 新建顏色庫
新建檔案
+ 新建智慧顏色庫
+ 生成簽名密鑰
新路徑
新舊路徑相同
新建專案
@@ -612,26 +687,72 @@
開啟方式
操作已完成
選項
+ 組織名稱
+ 組織單位
原始開發者
其他
打包應用儲存路徑
包名
+ 包名 (計算中...)
密碼
密碼不能為空
+ 密碼至少需要 %d 個字元
貼上
路徑為空
PC 服務端地址
+ 允許應用程式通過網路訪問粗略的位置信息
+ 允許應用程式通過 GPS 獲取精確的位置信息
+ 允許應用程式查看網路連接狀態
+ 允許應用程式訪問 Wi-Fi 狀態
+ 允許應用程式發送意圖來關閉系統對話框
+ 允許應用程式捕獲視頻輸出
+ 允許應用程式轉儲系統資訊
+ 允許應用程式運行前景服務
+ 允許應用程式在前景服務中使用螢幕錄製和媒體投影功能
+ 允許應用程式在前景服務中執行一些特殊操作
已授予許可權
許可權授予失敗 (使用 root)
許可權授予失敗 (使用 Shizuku)
已授予許可權 (使用 root)
已授予許可權 (使用 Shizuku)
+ 允許應用程式安裝快捷方式
+ 允許應用程式跨使用者互動
+ 允許應用程式訪問網路
+ 允許應用程式管理外部儲存中的所有檔案
+ 允許應用程式管理使用者
+ 允許應用程式訪問其他應用程式的使用統計數據
+ 允許應用程式顯示通知
+ 允許應用程式查詢所有軟件包
+ 允許應用程式讀取外部儲存
+ 允許應用程式讀取共享儲存中的音頻檔案
+ 允許應用程式讀取共享儲存中的圖片檔案
+ 允許應用程式讀取共享儲存中的影片檔案
+ 允許應用程式讀取手機狀態和身份
+ 允許應用程式訪問所有電話狀態資訊
+ 允許應用程式讀取簡訊
+ 允許應用程式在設備啟動時接收廣播
+ 允許應用程式錄音
+ 允許應用程式對正在運行的應用程式重新排序
+ 允許應用程式請求忽略電池優化
+ 允許應用程式請求安裝其他應用程式
已撤消授權
許可權撤消失敗 (使用 root)
許可權撤銷失敗 (使用 Shizuku)
已撤消授權 (使用 root)
已撤消授權 (使用 Shizuku)
+ 允許執行命令 (特定於 Termux 應用程式)
+ 允許應用程式安排時間精確的操作
+ 允許應用程式通過 Shizuku 服務與系統進行更高權限的交互
+ 允許應用程式顯示在其他應用程式上層
許可權測試
+ 允許應用程式卸載快捷方式
+ 允許應用程式顯示無限數量的 Toast 通知
+ 允許應用程式安排精確的鬧鐘或事件提醒
+ 控制手機震動
+ 防止手機進入休眠狀態
+ 允許應用程式寫入外部儲存
+ 允許應用程式讀寫系統敏感設定
+ 允許應用程式修改系統設定
許可權
許可權列表
將快捷方式固定到啟動器不被支援
@@ -721,6 +842,9 @@
錄製指令碼
指令碼執行
搜尋
+ 搜尋全部顏色
+ 搜尋顏色
+ 搜尋幫助
選擇
判斷控制元件存在 (exists)
直到找到一個 (findOne)
@@ -730,7 +854,6 @@
選擇要上傳的檔案
選擇圖示
選擇圖片
- 使用預設圖示
傳送
建立快捷方式
服務端模式
@@ -745,6 +868,9 @@
在佈局範圍中檢視
在佈局層次中檢視
顯示控制元件資訊
+ 簽名演算法
+ 簽名設定
+ 簽名方案
大小
已匯出 %d 個條目
原始碼路徑
@@ -752,93 +878,17 @@
收藏
開始錄製
開始執行
+ 州或省份
停止
+ 街道
+ 成功生成簽名密鑰
支援 ABI
支援 ABI (32 位)
支援 ABI (64 位)
支援庫
- 簽名設定
- 密鑰庫
- 預設密鑰庫
- 管理密鑰庫
- 簽名方案
- 生成簽名密鑰
- 密鑰庫密碼
- 別名
- 別名密碼
- 簽名演算法
- 有效期 (年)
- 姓名
- 組織名稱
- 組織單位
- 國家代碼 (XX)
- 州或省份
- 城市或區域
- 街道
- 檔案名稱不能為空
- 檔案名稱不能包含以下字符: \\ / : * ? " < > |
- 檔案名稱太長
- 密碼至少需要 %d 個字元
- 別名不能為空
- 有效年份不能為空
- 有效年份不能為0
- 國家代碼必須是兩個大寫字母
- “姓名、組織名稱、組織單位、國家代碼、州或省份、城市或區域、街道”至少填寫一個
- 成功生成簽名密鑰
- 生成簽名密鑰失敗
- 密鑰尚未驗證
- 密鑰已驗證
- 驗證
- 刪除全部
- 未驗證
- 已驗證
- 驗證簽名密鑰
- 驗證成功
- 驗證失敗
- 檔案路徑
所需的權限
- 允許應用程式訪問 Wi-Fi 狀態
- 允許應用程式寫入外部儲存
- 允許應用程式讀取外部儲存
- 允許應用程式讀取共享儲存中的圖片檔案
- 允許應用程式讀取共享儲存中的影片檔案
- 允許應用程式讀取共享儲存中的音頻檔案
- 允許應用程式管理外部儲存中的所有檔案
- 允許應用程式發送意圖來關閉系統對話框
- 允許應用程式訪問所有電話狀態資訊
- 允許應用程式安裝快捷方式
- 允許應用程式卸載快捷方式
- 允許應用程式請求安裝其他應用程式
- 防止手機進入休眠狀態
- 允許應用程式安排精確的鬧鐘或事件提醒
- 允許應用程式安排時間精確的操作
- 控制手機震動
- 允許應用程式訪問網路
- 允許應用程式查看網路連接狀態
- 允許應用程式顯示在其他應用程式上層
- 允許應用程式對正在運行的應用程式重新排序
- 允許應用程式請求忽略電池優化
- 允許應用程式在設備啟動時接收廣播
- 允許應用程式顯示通知
- 允許應用程式運行前景服務
- 允許應用程式在前景服務中使用螢幕錄製和媒體投影功能
- 允許應用程式在前景服務中執行一些特殊操作
- 允許應用程式顯示無限數量的 Toast 通知
- 允許應用程式捕獲視頻輸出
- 允許應用程式轉儲系統資訊
- 允許應用程式查詢所有軟件包
- 允許應用程式訪問其他應用程式的使用統計數據
- 允許應用程式修改系統設定
- 允許應用程式讀寫系統敏感設定
- 允許應用程式管理使用者
- 允許應用程式跨使用者互動
- 允許應用程式通過網路訪問粗略的位置信息
- 允許應用程式通過 GPS 獲取精確的位置信息
- 允許應用程式錄音
- 允許執行命令 (特定於 Termux 應用程式)
- 允許應用程式讀取手機狀態和身份
- 允許應用程式讀取簡訊
- 允許應用程式通過 Shizuku 服務與系統進行更高權限的交互
+ 切換至傳統佈局
+ 切換至新佈局
切換視窗
符號設定
二次開發者
@@ -856,12 +906,13 @@
選擇的 ABI 架構 \"%s\" 無法用於建立打包應用, 因當前 AutoJs6 版本未包含上述 ABI 架構.
不可用
ABI \"%s\" 不可用
+ 開發中
將在後續版本實現當前功能
@string/text_under_development
- 開發中
撤銷
撤銷
未知
+ 未驗證
更新
更新檢查狀態已清除
稍後提示
@@ -869,6 +920,7 @@
檢視使用情況許可權
\"檢視使用情況\" 許可權可獲取本裝置過去使用應用的情況,從而使 \"獲取當前應用\" (currentPackage) 結果更準確
使用安卓 7.0 快捷方式
+ 使用預設圖示
使用 \"音量減\" 鍵控制錄製
使用 \"音量加\" 鍵控制指令碼執行
使用者名稱
@@ -876,12 +928,22 @@
使用描述選擇器 (desc)
使用 id 選擇器 (id)
使用文字選擇器 (text)
+ 有效期 (年)
+ 有效年份不能為空
+ 有效年份不能為0
值
變數或表示式
+ 已驗證
+ 驗證
+ 驗證失敗
+ 驗證簽名密鑰
+ 驗證成功
版本
版本號
+ 版本號 (計算中...)
版本資訊
版本名稱
+ 版本名稱 (計算中...)
檢視
檢視文件
VSCode 外掛版本不符合要求
@@ -891,59 +953,5 @@
修改安全設定
安全設定包含應用程式可讀但不可寫入的設定選項, 這些選項只能由 UI 或系統級別應用修改.\n被授予 \"修改安全設定許可權\" 後, 普通應用可直接修改上述安全設定 (例如無障礙服務).
修改系統設定
- 預設
- 包名 (計算中...)
- 版本名稱 (計算中...)
- 版本號 (計算中...)
- File size
- Signature
- File info
- File extensions
- Hide all file extensions
- Show all file extensions
- Show file extensions (exclude *.js / *.auto)
- Used to set whether to show file extensions in AutoJs6 file explorer.
- Switch to new layout
- Switch to legacy layout
- Search color
- Locate current theme color
- New color library
- Color palette
- WEB color library
- CSS color library
- Android color library
- Material design color library
- Default color library
- Background light
- Background night
- Color library
- Default colors
- Material colors
- Android colors
- CSS colors
- WEB colors
- Material
- Default
- Custom
- Color palette
- Add a color library
- Import a color library
- New intelligent color library
- Clone a color library
- Intelligent color library
- Intelligent colors
- Intell.
- Palette
- Created
- Search all colors
- Palette
- Current theme color %1$s is configured by the color palette
- Failed to locate
- Failed to locate the color library for the theme color
- Failed to determine the index of the theme color item
- Color details
- Theme color details
- Search help
- Failed to render content
diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml
index 1d88ce0e..cd8c1efb 100644
--- a/app/src/main/res/values-zh/strings.xml
+++ b/app/src/main/res/values-zh/strings.xml
@@ -7,20 +7,45 @@
打包插件需更新\n是否下载
准备文件...
设备 SDK
+ 文件大小
已安装
最高 SDK
最低 SDK
包名
+ 签名方案
目标 SDK
UI 线程内无法执行阻塞操作. 可尝试在子线程或子脚本中执行 waitForActivity 或使用 setInterval 循环检测 activity
UI 线程内无法执行阻塞操作. 可尝试在子线程或子脚本中执行 waitForPackage 或使用 setInterval 循环检测 package
+ Android 颜色库
+ CSS 颜色库
+ 默认颜色库
+ 自建
+ @string/mt_custom
+ @string/text_default
+ 智能
+ 材料设计
+ 调色盘
+ 智能颜色库
+ 材料设计 (Material Design) 颜色库
+ Android 颜色
+ CSS 颜色
+ 默认颜色
+ 智能颜色
+ 材料设计颜色
+ WEB 颜色
+ WEB 颜色库
+ 背景亮色
+ 背景暗色
配置 \"abi\" 含无效选项
配置 \"abi\" 含不可用选项
配置 \"lib\" 含无效选项
配置 \"lib\" 含不可用选项
文件已存在, 是否覆盖
1. 长按主页应用名称 (AutoJs6) 可跳转至设置页面\n2. 设置页面长按设置选项可查看详细信息
+ 当前主题色 %1$s 由调色盘配置
用于显示清单内容的浮动操作按钮控件
+ 无法确定主题色条目的索引值
+ 无法定位主题色所在颜色库
即将跳转到项目议题反馈 WEB 页面.\n可能需要 GitHub 账户以完成问题反馈.
选择一个已录制脚本的输出方式
可复制调试信息到剪贴板或直接退出应用
@@ -52,6 +77,7 @@
@string/text_back
取消
取消下载
+ 清空记录
确定
@string/text_continue
@string/text_copy
@@ -59,10 +85,12 @@
了解更多
关闭
浏览器下载
+ 文件信息
历史记录
忽略此版本
加入群组
了解更多
+ 打开调色盘
放弃
移除
重试
@@ -72,6 +100,9 @@
立即更新
使用默认值
查看文件
+ 颜色详情
+ 调色盘
+ 主题色详情
无法处理文件
内容尚未保存, 确定要退出吗
跟随系统
@@ -80,6 +111,9 @@
更改字体大小
禁用
缩放视图
+ 隐藏所有文件扩展名
+ 显示所有文件扩展名
+ 显示文件扩展名 (*.js / *.auto 除外)
不显示隐藏文件或文件夹
显示隐藏文件和文件夹
所有页面
@@ -98,8 +132,8 @@
无法完成 \"%1$s\" 操作, 因为参数中包含负数坐标值 (%2$d,%3$d)
缺少必要的 activity 对象, 可通过 \"ui\" 执行模式来提供
操作尚未实现
- 应用未安装: \"%s\"
应用未安装
+ 应用未安装: \"%s\"
参数 %1$s 对于 %2$s#%3$s 不可为 nullish
参数列表不可为空
参数列表需为空
@@ -130,6 +164,7 @@
AutoJs6 服务启用失败: %s
高度超限: 模板图像 [%1$d] > 限定区域 [%2$d]
宽度超限: 模板图像 [%1$d] > 限定区域 [%2$d]
+ 应用当前历史颜色失败
调用方法 \"%s\" 失败
无法将值 %s 转换为 Drawable 实例
@@ -137,6 +172,7 @@
创建实例 \"%s\" 失败
方法 %1$s 调用失败
+ 内容渲染失败
Shizuku 权限撤销失败
脚本运行失败
路径 \"%1$s\" 对应文件不存在
@@ -153,6 +189,7 @@
图像大小需保持一致
图像大小及类型均需保持一致
输入字段检查未通过
+ 无效的颜色
无效的罗盘参数: %s
无效的 GitHub 仓库: %s
无效的 IP 地址
@@ -222,6 +259,7 @@
长按 \"运行\" 图标可启动调试
开始循环前的延迟
0 表示无限循环
+ 最近使用: %1$s
专辑
纵横比
音频
@@ -277,9 +315,14 @@
动作
找不到 APK 安装器
需要 ADB 命令行工具
+ 添加颜色库
别名
+ 别名不能为空
+ 别名密码
所有文件管理权限
需要授予 \"所有文件管理权限\" 才能正常读写脚本文件
+ 全部历史记录
+ 历史记录已清空
已复制到剪贴板
已复制到剪贴板 (仅最新的 %d 个条目)
已创建
@@ -323,6 +366,7 @@
应用版本号
应用版本名
外观
+ “姓名、组织名称、组织单位、国家代码、州或省份、城市或区域、街道”至少填写一个
属性
自动检查更新
自动检查更新并在首页下方显示通知条
@@ -354,6 +398,7 @@
更改工作路径
检查更新
正在检查更新...
+ 城市或区域
类/包名
清空
清空文件选择
@@ -363,16 +408,22 @@
点击 \"确定\" 跳转到设置页面
操作频率过快
客户端模式
+ 克隆颜色库
关闭
关闭浮动按钮
代码
格式化代码
+ 颜色库
+ 调色盘
指令已复制到剪贴板
注释
兼容性
配置
+ 是否确定清空历史记录
+ 以下历史记录将被清空\n\n[ %1$s ]\n\n是否确定清空
+ 以下历史记录将被清空\n\n[ 全部颜色库 ]\n\n是否确定清空
是否确定删除
- 确定移除吗?
+ 是否确定移除
连接到计算机
无法建立连接
控制台
@@ -385,6 +436,8 @@
复制行
复制到剪贴板
复制值
+ 国家代码 (XX)
+ 国家代码必须为两个大写字母
当前版本
每日任务
日期
@@ -400,8 +453,11 @@
进入
跳出
单步
+ 默认
+ 默认密钥库
默认前缀
删除
+ 删除全部
删除行
详情
\"开发者详情\" 正在开发中...
@@ -463,6 +519,7 @@
打包失败
复制失败
创建失败
+ 生成签名密钥失败
删除失败
禁用无障碍服务失败
下载失败
@@ -474,6 +531,7 @@
授权失败
显示在其他应用上层权限授予失败
导入失败
+ 定位失败
登录失败
注册失败
提交失败
@@ -483,15 +541,21 @@
文件
文件已存在
文件管理器
+ 文件扩展名
文件名
文件不存在
+ 文件路径
文件 \"%1$s\" 非可执行脚本
+ 文件名不能为空
+ 文件名不能包含下列任何字符: \\ / : * ? " < > |
+ 文件名太长
文件迁移
查找
搜索 Java 类
下一个
查找 / 替换
上一个
+ 姓名
浮动按钮
强制停止
前台服务
@@ -518,6 +582,7 @@
忽略电池优化
已忽略更新
导入
+ 导入颜色库
导入脚本文件
导入成功
导入到 \"我的脚本\"
@@ -541,6 +606,11 @@
跳转到行首
跳转到文件开始
前台时保持屏幕常亮
+ 别名
+ 密钥库
+ 密钥已验证
+ 密钥尚未验证
+ 密钥库密码
名称
上次检查: %s
最近活动
@@ -551,6 +621,7 @@
布局分析中...
开源许可信息
加载中...
+ 定位当前主题色
日志
登录中
登录
@@ -565,6 +636,7 @@
管理
管理无障碍服务
管理已忽略更新
+ 管理密钥库
最低版本
VSCode 插件最低版本
未安装 \"手机QQ\"
@@ -574,7 +646,10 @@
多个可选项
名称
需要启用无障碍服务
+ 新建颜色库
新建文件
+ 新建智能颜色库
+ 生成签名密钥
新路径
新旧路径相同
新建项目
@@ -609,26 +684,72 @@
打开方式
操作已完成
选项
+ 组织名称
+ 组织单位
原始开发者
其他
打包应用保存路径
包名
+ 包名 (计算中...)
密码
密码不能为空
+ 密码至少需要 %d 位字符
粘贴
路径为空
PC 服务端地址
+ 允许应用通过网络访问粗略的位置信息
+ 允许应用通过 GPS 获取精确的位置信息
+ 允许应用查看网络连接状态
+ 允许应用访问 Wi-Fi 状态
+ 允许应用发送一个意图来关闭系统对话框
+ 允许应用捕获视频输出
+ 允许应用转储系统信息
+ 允许应用运行前台服务
+ 允许应用在前台服务中使用屏幕录制和媒体投影功能
+ 允许应用在前台服务中执行一些特殊操作
已授予权限
权限授予失败 (使用 root)
权限授予失败 (使用 Shizuku)
已授予权限 (使用 root)
已授予权限 (使用 Shizuku)
+ 允许应用安装快捷方式
+ 允许应用跨用户交互
+ 允许应用访问网络
+ 允许应用管理外部存储中的所有文件
+ 允许应用管理用户
+ 允许应用访问其他应用的使用统计数据
+ 允许应用显示通知
+ 允许应用查询所有软件包
+ 允许应用读取外部存储
+ 允许应用读取共享存储中的音频文件
+ 允许应用读取共享存储中的图片文件
+ 允许应用读取共享存储中的视频文件
+ 允许应用读取手机状态和身份
+ 允许应用访问所有电话状态信息
+ 允许应用读取短信
+ 允许应用在设备启动时接收广播
+ 允许应用录音
+ 允许应用对正在运行的应用重新排序
+ 允许应用请求忽略电池优化
+ 允许应用请求安装其他应用
已撤消授权
权限撤消失败 (使用 root)
权限撤销失败 (使用 Shizuku)
已撤消授权 (使用 root)
已撤消授权 (使用 Shizuku)
+ 允许运行命令 (特定于 Termux 应用)
+ 允许应用安排时间精确的操作
+ 允许应用通过 Shizuku 服务与系统进行更高权限的交互
+ 允许应用显示在其他应用的上层
权限测试
+ 允许应用卸载快捷方式
+ 允许应用显示无限数量的 Toast 通知
+ 允许应用安排精确的闹钟或事件提醒
+ 控制手机振动
+ 防止手机进入休眠状态
+ 允许应用写入外部存储
+ 允许应用读写系统敏感设置
+ 允许应用修改系统设置
权限
权限列表
将快捷方式固定到启动器不被支持
@@ -718,6 +839,9 @@
录制脚本
脚本运行
搜索
+ 搜索全部颜色
+ 搜索颜色
+ 搜索帮助
选择
判断控件存在 (exists)
直到找到一个 (findOne)
@@ -727,7 +851,6 @@
选择要上传的文件
选择图标
选择图片
- 使用默认图标
发送
创建快捷方式
服务端模式
@@ -742,6 +865,9 @@
在布局范围中查看
在布局层次中查看
显示控件信息
+ 签名算法
+ 签名配置
+ 签名方案
大小
已导出 %d 个条目
源代码路径
@@ -749,93 +875,17 @@
收藏
开始录制
开始运行
+ 州或省份
停止
+ 街道
+ 成功生成签名密钥
支持 ABI
支持 ABI (32 位)
支持 ABI (64 位)
支持库
- 签名配置
- 密钥库
- 默认密钥库
- 管理密钥库
- 签名方案
- 生成签名密钥
- 密钥库密码
- 别名
- 别名密码
- 签名算法
- 有效期 (年)
- 姓名
- 组织名称
- 组织单位
- 国家代码 (XX)
- 州或省份
- 城市或区域
- 街道
- 文件名不能为空
- 文件名不能包含下列任何字符: \\ / : * ? " < > |
- 文件名太长
- 密码至少需要 %d 位字符
- 别名不能为空
- 有效年份不能为空
- 有效年份不能为0
- 国家代码必须为两个大写字母
- “姓名、组织名称、组织单位、国家代码、州或省份、城市或区域、街道”至少填写一个
- 成功生成签名密钥
- 生成签名密钥失败
- 密钥尚未验证
- 密钥已验证
- 验证
- 删除全部
- 未验证
- 已验证
- 验证签名密钥
- 验证成功
- 验证失败
- 文件路径
需要的权限
- 允许应用访问 Wi-Fi 状态
- 允许应用写入外部存储
- 允许应用读取外部存储
- 允许应用读取共享存储中的图片文件
- 允许应用读取共享存储中的视频文件
- 允许应用读取共享存储中的音频文件
- 允许应用管理外部存储中的所有文件
- 允许应用发送一个意图来关闭系统对话框
- 允许应用访问所有电话状态信息
- 允许应用安装快捷方式
- 允许应用卸载快捷方式
- 允许应用请求安装其他应用
- 防止手机进入休眠状态
- 允许应用安排精确的闹钟或事件提醒
- 允许应用安排时间精确的操作
- 控制手机振动
- 允许应用访问网络
- 允许应用查看网络连接状态
- 允许应用显示在其他应用的上层
- 允许应用对正在运行的应用重新排序
- 允许应用请求忽略电池优化
- 允许应用在设备启动时接收广播
- 允许应用显示通知
- 允许应用运行前台服务
- 允许应用在前台服务中使用屏幕录制和媒体投影功能
- 允许应用在前台服务中执行一些特殊操作
- 允许应用显示无限数量的 Toast 通知
- 允许应用捕获视频输出
- 允许应用转储系统信息
- 允许应用查询所有软件包
- 允许应用访问其他应用的使用统计数据
- 允许应用修改系统设置
- 允许应用读写系统敏感设置
- 允许应用管理用户
- 允许应用跨用户交互
- 允许应用通过网络访问粗略的位置信息
- 允许应用通过 GPS 获取精确的位置信息
- 允许应用录音
- 允许运行命令 (特定于 Termux 应用)
- 允许应用读取手机状态和身份
- 允许应用读取短信
- 允许应用通过 Shizuku 服务与系统进行更高权限的交互
+ 切换至传统布局
+ 切换至新布局
切换窗口
符号设置
二次开发者
@@ -853,12 +903,13 @@
选择的 ABI 架构 \"%s\" 无法用于创建打包应用, 因当前 AutoJs6 版本未包含上述 ABI 架构.
不可用
ABI \"%s\" 不可用
+ 开发中
将在后续版本实现当前功能
@string/text_under_development
- 开发中
撤销
撤销
未知
+ 未验证
更新
更新检查状态已清除
稍后提示
@@ -866,6 +917,7 @@
查看使用情况权限
\"查看使用情况\" 权限可获取本设备过去使用应用的情况,从而使 \"获取当前应用\" (currentPackage) 结果更准确
使用安卓 7.0 快捷方式
+ 使用默认图标
使用 \"音量减\" 键控制录制
使用 \"音量加\" 键控制脚本运行
用户名
@@ -873,12 +925,22 @@
使用描述选择器 (desc)
使用 id 选择器 (id)
使用文本选择器 (text)
+ 有效期 (年)
+ 有效年份不能为空
+ 有效年份不能为0
值
变量或表达式
+ 已验证
+ 验证
+ 验证失败
+ 验证签名密钥
+ 验证成功
版本
版本号
+ 版本号 (计算中...)
版本信息
版本名称
+ 版本名称 (计算中...)
查看
查看文档
VSCode 插件版本不符合要求
@@ -888,58 +950,5 @@
修改安全设置
安全设置包含应用程序可读但不可写入的设置选项, 这些选项只能由 UI 或系统级别应用修改.\n被授予 \"修改安全设置权限\" 后, 普通应用可直接修改上述安全设置 (例如无障碍服务).
修改系统设置
- 默认
- 包名 (计算中...)
- 版本名称 (计算中...)
- 版本号 (计算中...)
- 文件大小
- 签名方案
- 文件信息
- 文件扩展名
- 隐藏所有文件扩展名
- 显示所有文件扩展名
- 显示文件扩展名 (*.js / *.auto 除外)
- 切换至新布局
- 切换至传统布局
- 搜索颜色
- 定位当前主题色
- 新建颜色库
- 调色盘
- WEB 颜色库
- CSS 颜色库
- Android 颜色库
- 材料设计 (Material Design) 颜色库
- 默认颜色库
- 背景亮色
- 背景暗色
- 颜色库
- 默认颜色
- 材料设计颜色
- Android 颜色
- CSS 颜色
- WEB 颜色
- 材料设计
- 默认
- 自定义
- 调色盘
- 添加颜色库
- 导入颜色库
- 新建智能颜色库
- 克隆颜色库
- 智能颜色库
- 智能颜色
- 智能
- 调色盘
- 自建
- 搜索全部颜色
- 打开调色盘
- 当前主题色 %1$s 由调色盘配置
- 定位失败
- 无法定位主题色所在颜色库
- 无法确定主题色条目的索引值
- 颜色详情
- 主题色详情
- 搜索帮助
- 内容渲染失败
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 84ec43ed..bf9f39cf 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -4,12 +4,14 @@
#DE212121
#B3212121
#9A212121
+ #80212121
#4D212121
#33212121
@color/md_gray_900
#DEFBFBFB
#B3FBFBFB
#9AFBFBFB
+ #80FBFBFB
#4DFBFBFB
#33FBFBFB
#FBFBFB
@@ -21,6 +23,7 @@
@color/day_full
#B3212121
#9A212121
+ #80212121
#4D212121
#33212121
@color/night
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 97f0943d..a0328424 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1114,7 +1114,7 @@
Write security settings
Secure system settings, containing system preferences that applications can read but are not allowed to write.\nThese are for preferences that the user must explicitly modify through the UI of a system app.\nWith secure system settings permission, normal applications can directly modify the secure settings (such as accessibility service).
Write system settings
- Default
+ Default
http://download.autojs6.com
&url_github_autojs6;
&url_github_autojs6;/issues
@@ -1149,20 +1149,20 @@
Android color library
Material design color library
Default color library
- Background light
- Background night
+ Background light
+ Background night
Color library
Default colors
Material colors
Android colors
CSS colors
WEB colors
- Default
+ @string/text_default
Material
Android
CSS
WEB
- Custom
+ @string/mt_custom
Color palette
Add a color library
Import a color library
@@ -1188,5 +1188,14 @@
HEX
Search help
Failed to render content
+ Latest used: %1$s
+ Clear
+ Are you sure to clear all histories?
+ All histories have been cleared
+ Invalied color
+ Failed to apply current color history
+ All histories below will be cleared\n\n[ %1$s ]\n\nAre you sure to clear them all?
+ All histories below will be cleared\n\n[ All color libraries ]\n\nAre you sure to clear them all?
+ All histories
diff --git a/app/src/main/res/xml/fragment_preferences.xml b/app/src/main/res/xml/fragment_preferences.xml
index 5f32bcc0..ee60fcd4 100644
--- a/app/src/main/res/xml/fragment_preferences.xml
+++ b/app/src/main/res/xml/fragment_preferences.xml
@@ -233,7 +233,7 @@
app:title="@string/text_about_app_tips"
app:summary="@string/summary_about_app_tips"
app:dialogContent="@string/content_about_app_tips"
- app:positiveText="@string/dialog_button_cancel"
+ app:positiveText="@string/dialog_button_dismiss"
app:longClickPrompt="@string/description_about_app_tips_preference" />
A dialog to pick a color.
@@ -120,7 +123,12 @@ public class ColorPickerDialog extends DialogFragment implements ColorPickerView
private static final String ARG_USE_LEGACY_MODE = "useLegacyMode";
ColorPickerDialogListener colorPickerDialogListener;
+ View.OnClickListener oldColorPanelOnClickListener;
+ View.OnClickListener newColorPanelOnClickListener;
+ Consumer colorHistoriesHandler;
+
FrameLayout rootView;
+ ImageView customTitleOptions;
int[] presets;
@ColorInt
int color;
@@ -128,6 +136,7 @@ public class ColorPickerDialog extends DialogFragment implements ColorPickerView
int dialogId;
boolean showColorShades;
int colorShape;
+ boolean useLegacyMode;
// -- PRESETS --------------------------
ColorPaletteAdapter adapter;
@@ -137,11 +146,13 @@ public class ColorPickerDialog extends DialogFragment implements ColorPickerView
// -- CUSTOM ---------------------------
ColorPickerView colorPicker;
+ ColorPanelView oldColorPanel;
ColorPanelView newColorPanel;
EditText hexEditText;
boolean showAlphaSlider;
private int presetsButtonStringRes;
private boolean fromEditText;
+ private boolean fromOldColorPanel;
private int customButtonStringRes;
private final OnTouchListener onPickerTouchListener = new OnTouchListener() {
@@ -175,6 +186,7 @@ public class ColorPickerDialog extends DialogFragment implements ColorPickerView
showAlphaSlider = requireArguments().getBoolean(ARG_ALPHA);
showColorShades = requireArguments().getBoolean(ARG_SHOW_COLOR_SHADES);
colorShape = requireArguments().getInt(ARG_COLOR_SHAPE);
+ useLegacyMode = requireArguments().getBoolean(ARG_USE_LEGACY_MODE, false);
if (savedInstanceState == null) {
color = requireArguments().getInt(ARG_COLOR);
dialogType = requireArguments().getInt(ARG_TYPE);
@@ -198,9 +210,37 @@ public class ColorPickerDialog extends DialogFragment implements ColorPickerView
AlertDialog.Builder builder = new AlertDialog.Builder(requireActivity()).setView(rootView)
.setPositiveButton(selectedButtonStringRes, (dialog, which) -> onColorSelected(color));
+ View customTitleRoot = View.inflate(requireContext(), R.layout.cpv_dialog_custom_title, null);
+ builder.setCustomTitle(customTitleRoot);
+
+ customTitleOptions = customTitleRoot.findViewById(R.id.more_options);
+
int dialogTitleStringRes = requireArguments().getInt(ARG_DIALOG_TITLE);
if (dialogTitleStringRes != 0) {
- builder.setTitle(dialogTitleStringRes);
+ // builder.setTitle(dialogTitleStringRes);
+ TextView customTitleTitle = customTitleRoot.findViewById(R.id.title);
+ customTitleTitle.setText(dialogTitleStringRes);
+ }
+
+ if (useLegacyMode) {
+ customTitleOptions.setVisibility(View.GONE);
+ } else {
+ customTitleOptions.setOnClickListener(v -> {
+ var popupMenu = new PopupMenu(requireContext(), v, Gravity.END);
+ popupMenu.getMenuInflater().inflate(R.menu.cpv_dialog_more_options, popupMenu.getMenu());
+ popupMenu.setOnMenuItemClickListener(menuItem -> {
+ if (menuItem.getItemId() == R.id.action_reset_color_palette) {
+ resetColorPanel();
+ return true;
+ }
+ if (menuItem.getItemId() == R.id.action_show_histories) {
+ showHistories(this);
+ return true;
+ }
+ return false;
+ });
+ popupMenu.show();
+ });
}
presetsButtonStringRes = requireArguments().getInt(ARG_PRESETS_BUTTON_TEXT);
@@ -241,11 +281,17 @@ public class ColorPickerDialog extends DialogFragment implements ColorPickerView
switch (dialogType) {
case TYPE_CUSTOM:
dialogType = TYPE_PRESETS;
+ if (!useLegacyMode && customTitleOptions != null) {
+ customTitleOptions.setVisibility(View.GONE);
+ }
((Button) v).setText(customButtonStringRes != 0 ? customButtonStringRes : R.string.cpv_custom);
rootView.addView(createPresetsView());
break;
case TYPE_PRESETS:
dialogType = TYPE_CUSTOM;
+ if (!useLegacyMode && customTitleOptions != null) {
+ customTitleOptions.setVisibility(View.VISIBLE);
+ }
((Button) v).setText(presetsButtonStringRes != 0 ? presetsButtonStringRes : R.string.cpv_presets);
rootView.addView(createPickerView());
}
@@ -284,13 +330,11 @@ public class ColorPickerDialog extends DialogFragment implements ColorPickerView
View createPickerView() {
View contentView = View.inflate(getActivity(), R.layout.cpv_dialog_color_picker, null);
colorPicker = contentView.findViewById(R.id.cpv_color_picker_view);
- ColorPanelView oldColorPanel = contentView.findViewById(R.id.cpv_color_panel_old);
+ oldColorPanel = contentView.findViewById(R.id.cpv_color_panel_old);
newColorPanel = contentView.findViewById(R.id.cpv_color_panel_new);
ImageView arrowRight = contentView.findViewById(R.id.cpv_arrow_right);
hexEditText = contentView.findViewById(R.id.cpv_hex);
- boolean useLegacyMode = requireArguments().getBoolean(ARG_USE_LEGACY_MODE, false);
-
try {
final TypedValue value = new TypedValue();
TypedArray typedArray = requireActivity().obtainStyledAttributes(value.data, new int[]{android.R.attr.textColorPrimary});
@@ -304,6 +348,7 @@ public class ColorPickerDialog extends DialogFragment implements ColorPickerView
colorPicker.setAlphaSliderVisible(showAlphaSlider);
oldColorPanel.setColor(requireArguments().getInt(ARG_COLOR));
colorPicker.setColor(color, true);
+ colorPicker.lastColor = color;
newColorPanel.setColor(color);
setHex(color);
@@ -313,10 +358,22 @@ public class ColorPickerDialog extends DialogFragment implements ColorPickerView
if (!useLegacyMode) {
oldColorPanel.setOnClickListener(v -> {
-
+ v.setTag(oldColorPanel.getColor());
+ oldColorPanelOnClickListener.onClick(v);
+ });
+ oldColorPanel.setOnLongClickListener(v -> {
+ resetColorPanel();
+ return true;
});
newColorPanel.setOnClickListener(v -> {
-
+ v.setTag(newColorPanel.getColor());
+ newColorPanelOnClickListener.onClick(v);
+ });
+ newColorPanel.setOnLongClickListener(v -> {
+ int aimColor = colorPicker.lastColor;
+ newColorPanel.setColor(aimColor);
+ colorPicker.setColor(aimColor, true);
+ return true;
});
} else {
newColorPanel.setOnClickListener(v -> {
@@ -341,9 +398,30 @@ public class ColorPickerDialog extends DialogFragment implements ColorPickerView
return contentView;
}
+ private void resetColorPanel() {
+ if (oldColorPanel == null) return;
+ int aimColor = oldColorPanel.getColor();
+ fromOldColorPanel = true;
+ newColorPanel.setColor(aimColor);
+ colorPicker.setColor(aimColor, true);
+ }
+
+ private void showHistories(ColorPickerDialog colorPickerDialog) {
+ if (colorHistoriesHandler == null) return;
+ colorHistoriesHandler.accept(colorPickerDialog);
+ }
+
+ public void onHistorySelected(@ColorInt int color) {
+ colorPicker.setColor(color, true);
+ colorPicker.lastColor = color;
+ }
+
@Override
public void onColorChanged(int newColor) {
color = newColor;
+ if (!fromOldColorPanel) {
+ colorPicker.lastColor = newColor;
+ }
if (newColorPanel != null) {
newColorPanel.setColor(newColor);
}
@@ -356,6 +434,7 @@ public class ColorPickerDialog extends DialogFragment implements ColorPickerView
}
}
fromEditText = false;
+ fromOldColorPanel = false;
}
@Override
@@ -375,6 +454,7 @@ public class ColorPickerDialog extends DialogFragment implements ColorPickerView
if (color != colorPicker.getColor()) {
fromEditText = true;
colorPicker.setColor(color, true);
+ colorPicker.lastColor = color;
}
}
}
@@ -778,6 +858,10 @@ public class ColorPickerDialog extends DialogFragment implements ColorPickerView
int colorShape = ColorShape.CIRCLE;
boolean useLegacyMode = false;
+ View.OnClickListener oldColorPanelOnClickListener;
+ View.OnClickListener newColorPanelOnClickListener;
+ Consumer colorHistoriesHandler;
+
/*package*/ Builder() {
}
@@ -931,6 +1015,21 @@ public class ColorPickerDialog extends DialogFragment implements ColorPickerView
return this;
}
+ public Builder setOldColorPanelOnClickListener(View.OnClickListener onClickListener) {
+ this.oldColorPanelOnClickListener = onClickListener;
+ return this;
+ }
+
+ public Builder setNewColorPanelOnClickListener(View.OnClickListener onClickListener) {
+ this.newColorPanelOnClickListener = onClickListener;
+ return this;
+ }
+
+ public Builder setColorHistoriesHandler(Consumer colorHistoriesHandler) {
+ this.colorHistoriesHandler = colorHistoriesHandler;
+ return this;
+ }
+
/**
* Create the {@link ColorPickerDialog} instance.
*
@@ -954,6 +1053,9 @@ public class ColorPickerDialog extends DialogFragment implements ColorPickerView
args.putInt(ARG_CUSTOM_BUTTON_TEXT, customButtonText);
args.putInt(ARG_SELECTED_BUTTON_TEXT, selectedButtonText);
args.putBoolean(ARG_USE_LEGACY_MODE, useLegacyMode);
+ dialog.oldColorPanelOnClickListener = oldColorPanelOnClickListener;
+ dialog.newColorPanelOnClickListener = newColorPanelOnClickListener;
+ dialog.colorHistoriesHandler = colorHistoriesHandler;
dialog.setArguments(args);
return dialog;
}
diff --git a/modules/color-picker/src/main/java/com/jaredrummler/android/colorpicker/ColorPickerView.java b/modules/color-picker/src/main/java/com/jaredrummler/android/colorpicker/ColorPickerView.java
index 2190e007..9b4606f1 100644
--- a/modules/color-picker/src/main/java/com/jaredrummler/android/colorpicker/ColorPickerView.java
+++ b/modules/color-picker/src/main/java/com/jaredrummler/android/colorpicker/ColorPickerView.java
@@ -63,7 +63,9 @@ public class ColorPickerView extends View {
*/
private final static int BORDER_WIDTH_PX = 1;
- /**
+ public int lastColor;
+
+ /**
* The width in px of the hue panel.
*/
private int huePanelWidthPx;
diff --git a/modules/color-picker/src/main/res/drawable/cpv_ic_more.png b/modules/color-picker/src/main/res/drawable/cpv_ic_more.png
new file mode 100644
index 00000000..de851fc5
Binary files /dev/null and b/modules/color-picker/src/main/res/drawable/cpv_ic_more.png differ
diff --git a/modules/color-picker/src/main/res/layout/cpv_dialog_color_picker.xml b/modules/color-picker/src/main/res/layout/cpv_dialog_color_picker.xml
index 1d38f0ce..39643696 100644
--- a/modules/color-picker/src/main/res/layout/cpv_dialog_color_picker.xml
+++ b/modules/color-picker/src/main/res/layout/cpv_dialog_color_picker.xml
@@ -4,96 +4,87 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- >
-
-
-
-
+ android:layout_height="wrap_content">
+ android:orientation="vertical">
-
+
-
-
-
-
-
-
-
-
-
+ android:orientation="horizontal"
+ android:paddingHorizontal="16dp"
+ android:paddingBottom="16dp"
+ android:paddingTop="12dp">
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
\ No newline at end of file
diff --git a/modules/color-picker/src/main/res/layout/cpv_dialog_custom_title.xml b/modules/color-picker/src/main/res/layout/cpv_dialog_custom_title.xml
new file mode 100644
index 00000000..f2dd8634
--- /dev/null
+++ b/modules/color-picker/src/main/res/layout/cpv_dialog_custom_title.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/color-picker/src/main/res/menu/cpv_dialog_more_options.xml b/modules/color-picker/src/main/res/menu/cpv_dialog_more_options.xml
new file mode 100644
index 00000000..7054ffb0
--- /dev/null
+++ b/modules/color-picker/src/main/res/menu/cpv_dialog_more_options.xml
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/modules/color-picker/src/main/res/values-ar/strings.xml b/modules/color-picker/src/main/res/values-ar/strings.xml
index bfafba8d..d2627ae0 100644
--- a/modules/color-picker/src/main/res/values-ar/strings.xml
+++ b/modules/color-picker/src/main/res/values-ar/strings.xml
@@ -1,5 +1,4 @@
-
-
-
- اختر لونًا
- ألوان جاهزة
- ألوان معدلة
- اختر
- الشفافية
+
+ اختر لونًا
+ ألوان جاهزة
+ ألوان معدلة
+ اختر
+ الشفافية
+ التاريخ
+ إعادة تعيين لوحة
+
diff --git a/modules/color-picker/src/main/res/values-en/strings.xml b/modules/color-picker/src/main/res/values-en/strings.xml
index 416b5d67..736ba9ea 100644
--- a/modules/color-picker/src/main/res/values-en/strings.xml
+++ b/modules/color-picker/src/main/res/values-en/strings.xml
@@ -1,5 +1,4 @@
-
-
-
- Select a Color
- Presets
- Custom
- Select
- Transparency
+
+ Select a Color
+ Presets
+ Custom
+ Select
+ Transparency
+ Histories
+ Reset palette
\ No newline at end of file
diff --git a/modules/color-picker/src/main/res/values-es/strings.xml b/modules/color-picker/src/main/res/values-es/strings.xml
index feedc7e1..47b80fca 100644
--- a/modules/color-picker/src/main/res/values-es/strings.xml
+++ b/modules/color-picker/src/main/res/values-es/strings.xml
@@ -1,9 +1,11 @@
-
- Selecciona un color
- Predeterminados
- Personalizar
- Seleccionar
- Transparencia
+
+ Selecciona un color
+ Predeterminados
+ Personalizar
+ Seleccionar
+ Transparencia
+ Historiales
+ Restablecer paleta
\ No newline at end of file
diff --git a/modules/color-picker/src/main/res/values-fr/strings.xml b/modules/color-picker/src/main/res/values-fr/strings.xml
index 9bd07fc0..762a4319 100644
--- a/modules/color-picker/src/main/res/values-fr/strings.xml
+++ b/modules/color-picker/src/main/res/values-fr/strings.xml
@@ -1,5 +1,4 @@
-
-
-
- Sélectionner une couleur
- Présélections
- Personnalisée
- Valider
- Transparence
+
+ Sélectionner une couleur
+ Présélections
+ Personnalisée
+ Valider
+ Transparence
+ Histoires
+ Réinitialiser palette
diff --git a/modules/color-picker/src/main/res/values-ja/strings.xml b/modules/color-picker/src/main/res/values-ja/strings.xml
index e4aa741d..a5e9e793 100644
--- a/modules/color-picker/src/main/res/values-ja/strings.xml
+++ b/modules/color-picker/src/main/res/values-ja/strings.xml
@@ -1,5 +1,4 @@
-
-
-
- 色を選択
- プリセット
- カスタム
- 選択
- 透明度
+
+ 色を選択
+ プリセット
+ カスタム
+ 選択
+ 透明度
+ ヒストリー
+ パレットリセット
diff --git a/modules/color-picker/src/main/res/values-ko/strings.xml b/modules/color-picker/src/main/res/values-ko/strings.xml
index fbcf6e53..e279812f 100644
--- a/modules/color-picker/src/main/res/values-ko/strings.xml
+++ b/modules/color-picker/src/main/res/values-ko/strings.xml
@@ -1,5 +1,4 @@
-
-
-
- 색상 선택
- 프리셋
- 커스텀
- 선택
- 투명도
+
+ 색상 선택
+ 프리셋
+ 커스텀
+ 선택
+ 투명도
+ 역사
+ 팔레트 초기화
\ No newline at end of file
diff --git a/modules/color-picker/src/main/res/values-ru/strings.xml b/modules/color-picker/src/main/res/values-ru/strings.xml
index 1c085898..b133782a 100644
--- a/modules/color-picker/src/main/res/values-ru/strings.xml
+++ b/modules/color-picker/src/main/res/values-ru/strings.xml
@@ -1,5 +1,4 @@
-
-
-
- Выберите цвет
- Предустановки
- Особый
- Выбрать
- Прозрачность
+
+ Выберите цвет
+ Предустановки
+ Особый
+ Выбрать
+ Прозрачность
+ Истории
+ Сбросить палитру
diff --git a/modules/color-picker/src/main/res/values-zh-rHK/strings.xml b/modules/color-picker/src/main/res/values-zh-rHK/strings.xml
index eda2dbd5..e7e29d93 100644
--- a/modules/color-picker/src/main/res/values-zh-rHK/strings.xml
+++ b/modules/color-picker/src/main/res/values-zh-rHK/strings.xml
@@ -1,5 +1,4 @@
-
-
-
- 選擇顏色
- 預置顏色
- 自定義顏色
- 確認
- 透明度
+
+ 選擇顏色
+ 預置顏色
+ 自定義顏色
+ 確認
+ 透明度
+ 歷史記錄
+ 重置調色盤
\ No newline at end of file
diff --git a/modules/color-picker/src/main/res/values-zh-rTW/strings.xml b/modules/color-picker/src/main/res/values-zh-rTW/strings.xml
index eda2dbd5..e7e29d93 100644
--- a/modules/color-picker/src/main/res/values-zh-rTW/strings.xml
+++ b/modules/color-picker/src/main/res/values-zh-rTW/strings.xml
@@ -1,5 +1,4 @@
-
-
-
- 選擇顏色
- 預置顏色
- 自定義顏色
- 確認
- 透明度
+
+ 選擇顏色
+ 預置顏色
+ 自定義顏色
+ 確認
+ 透明度
+ 歷史記錄
+ 重置調色盤
\ No newline at end of file
diff --git a/modules/color-picker/src/main/res/values-zh/strings.xml b/modules/color-picker/src/main/res/values-zh/strings.xml
index 0799b695..23d9b76b 100644
--- a/modules/color-picker/src/main/res/values-zh/strings.xml
+++ b/modules/color-picker/src/main/res/values-zh/strings.xml
@@ -1,5 +1,4 @@
-
-
-
- 选择颜色
- 预置颜色
- 自定义颜色
- 确认
- 透明度
+
+ 选择颜色
+ 预置颜色
+ 自定义颜色
+ 确认
+ 透明度
+ 历史记录
+ 重置调色盘
\ No newline at end of file
diff --git a/modules/color-picker/src/main/res/values/strings.xml b/modules/color-picker/src/main/res/values/strings.xml
index 416b5d67..736ba9ea 100644
--- a/modules/color-picker/src/main/res/values/strings.xml
+++ b/modules/color-picker/src/main/res/values/strings.xml
@@ -1,5 +1,4 @@
-
-
-
- Select a Color
- Presets
- Custom
- Select
- Transparency
+
+ Select a Color
+ Presets
+ Custom
+ Select
+ Transparency
+ Histories
+ Reset palette
\ No newline at end of file
diff --git a/modules/jieba-analysis/src/main/java/com/huaban/analysis/jieba/CharsDictionaryDatabase.kt b/modules/jieba-analysis/src/main/java/com/huaban/analysis/jieba/CharsDictionaryDatabase.kt
index 529c7393..489d1143 100644
--- a/modules/jieba-analysis/src/main/java/com/huaban/analysis/jieba/CharsDictionaryDatabase.kt
+++ b/modules/jieba-analysis/src/main/java/com/huaban/analysis/jieba/CharsDictionaryDatabase.kt
@@ -11,8 +11,8 @@ open class CharsDictionaryDatabase private constructor(context: Context) : Dicti
@Volatile
private var instance: CharsDictionaryDatabase? = null
- fun getInstance(context: Context): CharsDictionaryDatabase = instance ?: synchronized(this) {
- instance ?: CharsDictionaryDatabase(context.applicationContext).also { instance = it }
+ fun getInstance(applicationContext: Context): CharsDictionaryDatabase = instance ?: synchronized(this) {
+ instance ?: CharsDictionaryDatabase(applicationContext).also { instance = it }
}
}
diff --git a/modules/jieba-analysis/src/main/java/com/huaban/analysis/jieba/PhrasesDictionaryDatabase.kt b/modules/jieba-analysis/src/main/java/com/huaban/analysis/jieba/PhrasesDictionaryDatabase.kt
index 24a2032f..a6a47424 100644
--- a/modules/jieba-analysis/src/main/java/com/huaban/analysis/jieba/PhrasesDictionaryDatabase.kt
+++ b/modules/jieba-analysis/src/main/java/com/huaban/analysis/jieba/PhrasesDictionaryDatabase.kt
@@ -11,8 +11,8 @@ open class PhrasesDictionaryDatabase private constructor(context: Context): Dict
@Volatile
private var instance: PhrasesDictionaryDatabase? = null
- fun getInstance(context: Context): PhrasesDictionaryDatabase = instance ?: synchronized(this) {
- instance ?: PhrasesDictionaryDatabase(context.applicationContext).also { instance = it }
+ fun getInstance(applicationContext: Context): PhrasesDictionaryDatabase = instance ?: synchronized(this) {
+ instance ?: PhrasesDictionaryDatabase(applicationContext).also { instance = it }
}
}
diff --git a/modules/jieba-analysis/src/main/java/com/huaban/analysis/jieba/WordDictionary.kt b/modules/jieba-analysis/src/main/java/com/huaban/analysis/jieba/WordDictionary.kt
index 53d65b96..32100cb1 100644
--- a/modules/jieba-analysis/src/main/java/com/huaban/analysis/jieba/WordDictionary.kt
+++ b/modules/jieba-analysis/src/main/java/com/huaban/analysis/jieba/WordDictionary.kt
@@ -11,7 +11,7 @@ import kotlin.properties.Delegates
class WordDictionary(context: Context) {
- private val db: SQLiteDatabase by lazy { WordDictionaryDatabase.getInstance(context).database }
+ private val db: SQLiteDatabase by lazy { WordDictionaryDatabase.getInstance(context.applicationContext).database }
private var minFreq by Delegates.notNull()
internal var trie = DictSegment(0.toChar())
diff --git a/modules/jieba-analysis/src/main/java/com/huaban/analysis/jieba/WordDictionaryDatabase.kt b/modules/jieba-analysis/src/main/java/com/huaban/analysis/jieba/WordDictionaryDatabase.kt
index 78a0d456..d2920771 100644
--- a/modules/jieba-analysis/src/main/java/com/huaban/analysis/jieba/WordDictionaryDatabase.kt
+++ b/modules/jieba-analysis/src/main/java/com/huaban/analysis/jieba/WordDictionaryDatabase.kt
@@ -11,8 +11,8 @@ open class WordDictionaryDatabase private constructor(context: Context): Diction
@Volatile
private var instance: WordDictionaryDatabase? = null
- fun getInstance(context: Context): WordDictionaryDatabase = instance ?: synchronized(this) {
- instance ?: WordDictionaryDatabase(context.applicationContext).also { instance = it }
+ fun getInstance(applicationContext: Context): WordDictionaryDatabase = instance ?: synchronized(this) {
+ instance ?: WordDictionaryDatabase(applicationContext).also { instance = it }
}
}
diff --git a/version.properties b/version.properties
index 57616826..33cbaa5b 100644
--- a/version.properties
+++ b/version.properties
@@ -1,5 +1,5 @@
-#Fri Apr 04 11:53:21 CST 2025
-BUILD_TIME=1743738801004
+#Tue Apr 08 21:28:35 CST 2025
+BUILD_TIME=1744118915044
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=3103
+VERSION_BUILD=3113
VERSION_NAME=6.6.2 Alpha5
VSCODE_EXT_REQUIRED_VERSION=1.0.8